diff options
author | 2023-06-01 21:16:47 -0400 | |
---|---|---|
committer | 2023-06-01 18:16:47 -0700 | |
commit | 4df1d37ddc54242c339765f22fb90ba2e9e3a99a (patch) | |
tree | d63ede76463e7ecba78a4d4b31e5e8158193552f /src/bun.js | |
parent | 03ffd1c732aaaa30b5481f197221ce96da559e63 (diff) | |
download | bun-4df1d37ddc54242c339765f22fb90ba2e9e3a99a.tar.gz bun-4df1d37ddc54242c339765f22fb90ba2e9e3a99a.tar.zst bun-4df1d37ddc54242c339765f22fb90ba2e9e3a99a.zip |
Bundle and minify `.exports.js` files. (#3036)
* move all exports.js into src/js
* finalize the sort of this
* and it works
* add test.ts to gitignore
* okay
* convert some to ts just to show
* finish up
* fixup makefile
* minify syntax in dev
* finish rebase
* dont minify all modules
* merge
* finish rebase merge
* flaky test that hangs
Diffstat (limited to 'src/bun.js')
86 files changed, 73 insertions, 70539 deletions
diff --git a/src/bun.js/assert.exports.js b/src/bun.js/assert.exports.js deleted file mode 100644 index 8fb283c9f..000000000 --- a/src/bun.js/assert.exports.js +++ /dev/null @@ -1,1313 +0,0 @@ -var { Bun } = import.meta.primordials; -var isDeepEqual = Bun.deepEquals; -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf, - __hasOwnProp = Object.prototype.hasOwnProperty; -var __markAsModule = target => __defProp(target, "__esModule", { value: !0 }); -var __commonJS = (cb, mod) => - function () { - return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; -var __reExport = (target, module2, desc) => { - if ((module2 && typeof module2 == "object") || typeof module2 == "function") - for (let key of __getOwnPropNames(module2)) - !__hasOwnProp.call(target, key) && - key !== "default" && - __defProp(target, key, { - get: () => module2[key], - enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable, - }); - return target; - }, - __toModule = module2 => - __reExport( - __markAsModule( - __defProp( - module2 != null ? __create(__getProtoOf(module2)) : {}, - "default", - module2 && module2.__esModule && "default" in module2 - ? { get: () => module2.default, enumerable: !0 } - : { value: module2, enumerable: !0 }, - ), - ), - module2, - ); - -var require = path => import.meta.require(path); - -// assert/build/internal/errors.js -var require_errors = __commonJS({ - "assert/build/internal/errors.js"(exports, module2) { - "use strict"; - function _typeof(obj) { - return ( - typeof Symbol == "function" && typeof Symbol.iterator == "symbol" - ? (_typeof = function (obj2) { - return typeof obj2; - }) - : (_typeof = function (obj2) { - return obj2 && typeof Symbol == "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype - ? "symbol" - : typeof obj2; - }), - _typeof(obj) - ); - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); - } - function _possibleConstructorReturn(self, call) { - return call && (_typeof(call) === "object" || typeof call == "function") ? call : _assertThisInitialized(self); - } - function _assertThisInitialized(self) { - if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - return self; - } - function _getPrototypeOf(o) { - return ( - (_getPrototypeOf = Object.setPrototypeOf - ? Object.getPrototypeOf - : function (o2) { - return o2.__proto__ || Object.getPrototypeOf(o2); - }), - _getPrototypeOf(o) - ); - } - function _inherits(subClass, superClass) { - if (typeof superClass != "function" && superClass !== null) - throw new TypeError("Super expression must either be null or a function"); - (subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { value: subClass, writable: !0, configurable: !0 }, - })), - superClass && _setPrototypeOf(subClass, superClass); - } - function _setPrototypeOf(o, p) { - return ( - (_setPrototypeOf = - Object.setPrototypeOf || - function (o2, p2) { - return (o2.__proto__ = p2), o2; - }), - _setPrototypeOf(o, p) - ); - } - var codes = {}, - assert, - util; - function createErrorType(code, message, Base) { - Base || (Base = Error); - function getMessage(arg1, arg2, arg3) { - return typeof message == "string" ? message : message(arg1, arg2, arg3); - } - var NodeError = /* @__PURE__ */ (function (_Base) { - _inherits(NodeError2, _Base); - function NodeError2(arg1, arg2, arg3) { - var _this; - return ( - _classCallCheck(this, NodeError2), - (_this = _possibleConstructorReturn( - this, - _getPrototypeOf(NodeError2).call(this, getMessage(arg1, arg2, arg3)), - )), - (_this.code = code), - _this - ); - } - return NodeError2; - })(Base); - codes[code] = NodeError; - } - function oneOf(expected, thing) { - if (Array.isArray(expected)) { - var len = expected.length; - return ( - (expected = expected.map(function (i) { - return String(i); - })), - len > 2 - ? "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(", "), ", or ") + expected[len - 1] - : len === 2 - ? "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]) - : "of ".concat(thing, " ").concat(expected[0]) - ); - } else return "of ".concat(thing, " ").concat(String(expected)); - } - function startsWith(str, search, pos) { - return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; - } - function endsWith(str, search, this_len) { - return ( - (this_len === void 0 || this_len > str.length) && (this_len = str.length), - str.substring(this_len - search.length, this_len) === search - ); - } - function includes(str, search, start) { - return ( - typeof start != "number" && (start = 0), - start + search.length > str.length ? !1 : str.indexOf(search, start) !== -1 - ); - } - createErrorType("ERR_AMBIGUOUS_ARGUMENT", 'The "%s" argument is ambiguous. %s', TypeError); - createErrorType( - "ERR_INVALID_ARG_TYPE", - function (name, expected, actual) { - assert === void 0 && (assert = require_assert()), assert(typeof name == "string", "'name' must be a string"); - var determiner; - typeof expected == "string" && startsWith(expected, "not ") - ? ((determiner = "must not be"), (expected = expected.replace(/^not /, ""))) - : (determiner = "must be"); - var msg; - if (endsWith(name, " argument")) - msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, "type")); - else { - var type = includes(name, ".") ? "property" : "argument"; - msg = 'The "'.concat(name, '" ').concat(type, " ").concat(determiner, " ").concat(oneOf(expected, "type")); - } - return (msg += ". Received type ".concat(_typeof(actual))), msg; - }, - TypeError, - ); - createErrorType( - "ERR_INVALID_ARG_VALUE", - function (name, value) { - var reason = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "is invalid"; - util === void 0 && (util = require("util")); - var inspected = util.inspect(value); - return ( - inspected.length > 128 && (inspected = "".concat(inspected.slice(0, 128), "...")), - "The argument '".concat(name, "' ").concat(reason, ". Received ").concat(inspected) - ); - }, - TypeError, - RangeError, - ); - createErrorType( - "ERR_INVALID_RETURN_VALUE", - function (input, name, value) { - var type; - return ( - value && value.constructor && value.constructor.name - ? (type = "instance of ".concat(value.constructor.name)) - : (type = "type ".concat(_typeof(value))), - "Expected ".concat(input, ' to be returned from the "').concat(name, '"') + - " function but got ".concat(type, ".") - ); - }, - TypeError, - ); - createErrorType( - "ERR_MISSING_ARGS", - function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) - args[_key] = arguments[_key]; - assert === void 0 && (assert = require_assert()), - assert(args.length > 0, "At least one arg needs to be specified"); - var msg = "The ", - len = args.length; - switch ( - ((args = args.map(function (a) { - return '"'.concat(a, '"'); - })), - len) - ) { - case 1: - msg += "".concat(args[0], " argument"); - break; - case 2: - msg += "".concat(args[0], " and ").concat(args[1], " arguments"); - break; - default: - (msg += args.slice(0, len - 1).join(", ")), (msg += ", and ".concat(args[len - 1], " arguments")); - break; - } - return "".concat(msg, " must be specified"); - }, - TypeError, - ); - module2.exports.codes = codes; - }, -}); - -// assert/build/internal/assert/assertion_error.js -var require_assertion_error = __commonJS({ - "assert/build/internal/assert/assertion_error.js"(exports, module2) { - "use strict"; - function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}, - ownKeys = Object.keys(source); - typeof Object.getOwnPropertySymbols == "function" && - (ownKeys = ownKeys.concat( - Object.getOwnPropertySymbols(source).filter(function (sym) { - return Object.getOwnPropertyDescriptor(source, sym).enumerable; - }), - )), - ownKeys.forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } - return target; - } - function _defineProperty(obj, key, value) { - return ( - key in obj - ? Object.defineProperty(obj, key, { - value, - enumerable: !0, - configurable: !0, - writable: !0, - }) - : (obj[key] = value), - obj - ); - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - (descriptor.enumerable = descriptor.enumerable || !1), - (descriptor.configurable = !0), - "value" in descriptor && (descriptor.writable = !0), - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - return ( - protoProps && _defineProperties(Constructor.prototype, protoProps), - staticProps && _defineProperties(Constructor, staticProps), - Constructor - ); - } - function _possibleConstructorReturn(self, call) { - return call && (_typeof(call) === "object" || typeof call == "function") ? call : _assertThisInitialized(self); - } - function _assertThisInitialized(self) { - if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - return self; - } - function _inherits(subClass, superClass) { - if (typeof superClass != "function" && superClass !== null) - throw new TypeError("Super expression must either be null or a function"); - (subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { value: subClass, writable: !0, configurable: !0 }, - })), - superClass && _setPrototypeOf(subClass, superClass); - } - function _wrapNativeSuper(Class) { - var _cache = typeof Map == "function" ? new Map() : void 0; - return ( - (_wrapNativeSuper = function (Class2) { - if (Class2 === null || !_isNativeFunction(Class2)) return Class2; - if (typeof Class2 != "function") throw new TypeError("Super expression must either be null or a function"); - if (typeof _cache != "undefined") { - if (_cache.has(Class2)) return _cache.get(Class2); - _cache.set(Class2, Wrapper); - } - function Wrapper() { - return _construct(Class2, arguments, _getPrototypeOf(this).constructor); - } - return ( - (Wrapper.prototype = Object.create(Class2.prototype, { - constructor: { - value: Wrapper, - enumerable: !1, - writable: !0, - configurable: !0, - }, - })), - _setPrototypeOf(Wrapper, Class2) - ); - }), - _wrapNativeSuper(Class) - ); - } - function isNativeReflectConstruct() { - if (typeof Reflect == "undefined" || !Reflect.construct || Reflect.construct.sham) return !1; - if (typeof Proxy == "function") return !0; - try { - return Date.prototype.toString.call(Reflect.construct(Date, [], function () {})), !0; - } catch { - return !1; - } - } - function _construct(Parent, args, Class) { - return ( - isNativeReflectConstruct() - ? (_construct = Reflect.construct) - : (_construct = function (Parent2, args2, Class2) { - var a = [null]; - a.push.apply(a, args2); - var Constructor = Function.bind.apply(Parent2, a), - instance = new Constructor(); - return Class2 && _setPrototypeOf(instance, Class2.prototype), instance; - }), - _construct.apply(null, arguments) - ); - } - function _isNativeFunction(fn) { - return Function.toString.call(fn).indexOf("[native code]") !== -1; - } - function _setPrototypeOf(o, p) { - return ( - (_setPrototypeOf = - Object.setPrototypeOf || - function (o2, p2) { - return (o2.__proto__ = p2), o2; - }), - _setPrototypeOf(o, p) - ); - } - function _getPrototypeOf(o) { - return ( - (_getPrototypeOf = Object.setPrototypeOf - ? Object.getPrototypeOf - : function (o2) { - return o2.__proto__ || Object.getPrototypeOf(o2); - }), - _getPrototypeOf(o) - ); - } - function _typeof(obj) { - return ( - typeof Symbol == "function" && typeof Symbol.iterator == "symbol" - ? (_typeof = function (obj2) { - return typeof obj2; - }) - : (_typeof = function (obj2) { - return obj2 && typeof Symbol == "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype - ? "symbol" - : typeof obj2; - }), - _typeof(obj) - ); - } - var _require = require("util"), - inspect = _require.inspect, - _require2 = require_errors(), - ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; - function endsWith(str, search, this_len) { - return ( - (this_len === void 0 || this_len > str.length) && (this_len = str.length), - str.substring(this_len - search.length, this_len) === search - ); - } - function repeat(str, count) { - if (((count = Math.floor(count)), str.length == 0 || count == 0)) return ""; - var maxCount = str.length * count; - for (count = Math.floor(Math.log(count) / Math.log(2)); count; ) (str += str), count--; - return (str += str.substring(0, maxCount - str.length)), str; - } - var blue = "", - green = "", - red = "", - white = "", - kReadableOperator = { - deepStrictEqual: "Expected values to be strictly deep-equal:", - strictEqual: "Expected values to be strictly equal:", - strictEqualObject: 'Expected "actual" to be reference-equal to "expected":', - deepEqual: "Expected values to be loosely deep-equal:", - equal: "Expected values to be loosely equal:", - notDeepStrictEqual: 'Expected "actual" not to be strictly deep-equal to:', - notStrictEqual: 'Expected "actual" to be strictly unequal to:', - notStrictEqualObject: 'Expected "actual" not to be reference-equal to "expected":', - notDeepEqual: 'Expected "actual" not to be loosely deep-equal to:', - notEqual: 'Expected "actual" to be loosely unequal to:', - notIdentical: "Values identical but not reference-equal:", - }, - kMaxShortLength = 10; - function copyError(source) { - var keys = Object.keys(source), - target = Object.create(Object.getPrototypeOf(source)); - return ( - keys.forEach(function (key) { - target[key] = source[key]; - }), - Object.defineProperty(target, "message", { - value: source.message, - }), - target - ); - } - function inspectValue(val) { - return inspect(val, { - compact: !1, - customInspect: !1, - depth: 1e3, - maxArrayLength: 1 / 0, - showHidden: !1, - breakLength: 1 / 0, - showProxy: !1, - sorted: !0, - getters: !0, - }); - } - function createErrDiff(actual, expected, operator) { - var other = "", - res = "", - lastPos = 0, - end = "", - skipped = !1, - actualInspected = inspectValue(actual), - actualLines = actualInspected.split(` -`), - expectedLines = inspectValue(expected).split(` -`), - i = 0, - indicator = ""; - if ( - (operator === "strictEqual" && - _typeof(actual) === "object" && - _typeof(expected) === "object" && - actual !== null && - expected !== null && - (operator = "strictEqualObject"), - actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) - ) { - var inputLength = actualLines[0].length + expectedLines[0].length; - if (inputLength <= kMaxShortLength) { - if ( - (_typeof(actual) !== "object" || actual === null) && - (_typeof(expected) !== "object" || expected === null) && - (actual !== 0 || expected !== 0) - ) - return ( - "".concat( - kReadableOperator[operator], - ` - -`, - ) + - "".concat(actualLines[0], " !== ").concat( - expectedLines[0], - ` -`, - ) - ); - } else if (operator !== "strictEqualObject") { - var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80; - if (inputLength < maxLength) { - for (; actualLines[0][i] === expectedLines[0][i]; ) i++; - i > 2 && - ((indicator = ` - `.concat(repeat(" ", i), "^")), - (i = 0)); - } - } - } - for ( - var a = actualLines[actualLines.length - 1], b = expectedLines[expectedLines.length - 1]; - a === b && - (i++ < 2 - ? (end = ` - ` - .concat(a) - .concat(end)) - : (other = a), - actualLines.pop(), - expectedLines.pop(), - !(actualLines.length === 0 || expectedLines.length === 0)); - - ) - (a = actualLines[actualLines.length - 1]), (b = expectedLines[expectedLines.length - 1]); - var maxLines = Math.max(actualLines.length, expectedLines.length); - if (maxLines === 0) { - var _actualLines = actualInspected.split(` -`); - if (_actualLines.length > 30) - for (_actualLines[26] = "".concat(blue, "...").concat(white); _actualLines.length > 27; ) _actualLines.pop(); - return "" - .concat( - kReadableOperator.notIdentical, - ` - -`, - ) - .concat( - _actualLines.join(` -`), - ` -`, - ); - } - i > 3 && - ((end = ` -` - .concat(blue, "...") - .concat(white) - .concat(end)), - (skipped = !0)), - other !== "" && - ((end = ` - ` - .concat(other) - .concat(end)), - (other = "")); - var printedLines = 0, - msg = - kReadableOperator[operator] + - ` -` - .concat(green, "+ actual") - .concat(white, " ") - .concat(red, "- expected") - .concat(white), - skippedMsg = " ".concat(blue, "...").concat(white, " Lines skipped"); - for (i = 0; i < maxLines; i++) { - var cur = i - lastPos; - if (actualLines.length < i + 1) - cur > 1 && - i > 2 && - (cur > 4 - ? ((res += ` -` - .concat(blue, "...") - .concat(white)), - (skipped = !0)) - : cur > 3 && - ((res += ` - `.concat(expectedLines[i - 2])), - printedLines++), - (res += ` - `.concat(expectedLines[i - 1])), - printedLines++), - (lastPos = i), - (other += ` -` - .concat(red, "-") - .concat(white, " ") - .concat(expectedLines[i])), - printedLines++; - else if (expectedLines.length < i + 1) - cur > 1 && - i > 2 && - (cur > 4 - ? ((res += ` -` - .concat(blue, "...") - .concat(white)), - (skipped = !0)) - : cur > 3 && - ((res += ` - `.concat(actualLines[i - 2])), - printedLines++), - (res += ` - `.concat(actualLines[i - 1])), - printedLines++), - (lastPos = i), - (res += ` -` - .concat(green, "+") - .concat(white, " ") - .concat(actualLines[i])), - printedLines++; - else { - var expectedLine = expectedLines[i], - actualLine = actualLines[i], - divergingLines = - actualLine !== expectedLine && (!endsWith(actualLine, ",") || actualLine.slice(0, -1) !== expectedLine); - divergingLines && - endsWith(expectedLine, ",") && - expectedLine.slice(0, -1) === actualLine && - ((divergingLines = !1), (actualLine += ",")), - divergingLines - ? (cur > 1 && - i > 2 && - (cur > 4 - ? ((res += ` -` - .concat(blue, "...") - .concat(white)), - (skipped = !0)) - : cur > 3 && - ((res += ` - `.concat(actualLines[i - 2])), - printedLines++), - (res += ` - `.concat(actualLines[i - 1])), - printedLines++), - (lastPos = i), - (res += ` -` - .concat(green, "+") - .concat(white, " ") - .concat(actualLine)), - (other += ` -` - .concat(red, "-") - .concat(white, " ") - .concat(expectedLine)), - (printedLines += 2)) - : ((res += other), - (other = ""), - (cur === 1 || i === 0) && - ((res += ` - `.concat(actualLine)), - printedLines++)); - } - if (printedLines > 20 && i < maxLines - 2) - return ( - "" - .concat(msg) - .concat( - skippedMsg, - ` -`, - ) - .concat( - res, - ` -`, - ) - .concat(blue, "...") - .concat(white) - .concat( - other, - ` -`, - ) + "".concat(blue, "...").concat(white) - ); - } - return "" - .concat(msg) - .concat( - skipped ? skippedMsg : "", - ` -`, - ) - .concat(res) - .concat(other) - .concat(end) - .concat(indicator); - } - var AssertionError = /* @__PURE__ */ (function (_Error) { - _inherits(AssertionError2, _Error); - function AssertionError2(options) { - var _this; - if ((_classCallCheck(this, AssertionError2), _typeof(options) !== "object" || options === null)) - throw new ERR_INVALID_ARG_TYPE("options", "Object", options); - var message = options.message, - operator = options.operator, - stackStartFn = options.stackStartFn, - actual = options.actual, - expected = options.expected, - limit = Error.stackTraceLimit; - if (((Error.stackTraceLimit = 0), message != null)) - _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError2).call(this, String(message))); - else if ( - (process.stderr && - process.stderr.isTTY && - (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1 - ? ((blue = "[34m"), (green = "[32m"), (white = "[39m"), (red = "[31m")) - : ((blue = ""), (green = ""), (white = ""), (red = ""))), - _typeof(actual) === "object" && - actual !== null && - _typeof(expected) === "object" && - expected !== null && - "stack" in actual && - actual instanceof Error && - "stack" in expected && - expected instanceof Error && - ((actual = copyError(actual)), (expected = copyError(expected))), - operator === "deepStrictEqual" || operator === "strictEqual") - ) - _this = _possibleConstructorReturn( - this, - _getPrototypeOf(AssertionError2).call(this, createErrDiff(actual, expected, operator)), - ); - else if (operator === "notDeepStrictEqual" || operator === "notStrictEqual") { - var base = kReadableOperator[operator], - res = inspectValue(actual).split(` -`); - if ( - (operator === "notStrictEqual" && - _typeof(actual) === "object" && - actual !== null && - (base = kReadableOperator.notStrictEqualObject), - res.length > 30) - ) - for (res[26] = "".concat(blue, "...").concat(white); res.length > 27; ) res.pop(); - res.length === 1 - ? (_this = _possibleConstructorReturn( - this, - _getPrototypeOf(AssertionError2).call(this, "".concat(base, " ").concat(res[0])), - )) - : (_this = _possibleConstructorReturn( - this, - _getPrototypeOf(AssertionError2).call( - this, - "" - .concat( - base, - ` - -`, - ) - .concat( - res.join(` -`), - ` -`, - ), - ), - )); - } else { - var _res = inspectValue(actual), - other = "", - knownOperators = kReadableOperator[operator]; - operator === "notDeepEqual" || operator === "notEqual" - ? ((_res = "" - .concat( - kReadableOperator[operator], - ` - -`, - ) - .concat(_res)), - _res.length > 1024 && (_res = "".concat(_res.slice(0, 1021), "..."))) - : ((other = "".concat(inspectValue(expected))), - _res.length > 512 && (_res = "".concat(_res.slice(0, 509), "...")), - other.length > 512 && (other = "".concat(other.slice(0, 509), "...")), - operator === "deepEqual" || operator === "equal" - ? (_res = "" - .concat( - knownOperators, - ` - -`, - ) - .concat( - _res, - ` - -should equal - -`, - )) - : (other = " ".concat(operator, " ").concat(other))), - (_this = _possibleConstructorReturn( - this, - _getPrototypeOf(AssertionError2).call(this, "".concat(_res).concat(other)), - )); - } - return ( - (Error.stackTraceLimit = limit), - (_this.generatedMessage = !message), - Object.defineProperty(_assertThisInitialized(_this), "name", { - value: "AssertionError [ERR_ASSERTION]", - enumerable: !1, - writable: !0, - configurable: !0, - }), - (_this.code = "ERR_ASSERTION"), - (_this.actual = actual), - (_this.expected = expected), - (_this.operator = operator), - Error.captureStackTrace && Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn), - _this.stack, - (_this.name = "AssertionError"), - _possibleConstructorReturn(_this) - ); - } - return ( - _createClass(AssertionError2, [ - { - key: "toString", - value: function () { - return "".concat(this.name, " [").concat(this.code, "]: ").concat(this.message); - }, - }, - { - key: inspect.custom, - value: function (recurseTimes, ctx) { - return inspect( - this, - _objectSpread({}, ctx, { - customInspect: !1, - depth: 0, - }), - ); - }, - }, - ]), - AssertionError2 - ); - })(_wrapNativeSuper(Error)); - module2.exports = AssertionError; - }, -}); - -// assert/build/assert.js -var require_assert = __commonJS({ - "assert/build/assert.js"(exports, module2) { - "use strict"; - function _typeof(obj) { - return ( - typeof Symbol == "function" && typeof Symbol.iterator == "symbol" - ? (_typeof = function (obj2) { - return typeof obj2; - }) - : (_typeof = function (obj2) { - return obj2 && typeof Symbol == "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype - ? "symbol" - : typeof obj2; - }), - _typeof(obj) - ); - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function"); - } - var _require = require_errors(), - _require$codes = _require.codes, - ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT, - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE, - ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE, - ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, - AssertionError = require_assertion_error(), - _require2 = require("util"), - inspect = _require2.inspect, - _require$types = require("util").types, - isPromise = _require$types.isPromise, - isRegExp = _require$types.isRegExp, - objectAssign = Object.assign, - objectIs = Object.is, - errorCache = new Map(); - - var warned = !1, - assert = (module2.exports = ok), - NO_EXCEPTION_SENTINEL = {}; - function innerFail(obj) { - throw obj.message instanceof Error ? obj.message : new AssertionError(obj); - } - function fail(actual, expected, message, operator, stackStartFn) { - var argsLen = arguments.length, - internalMessage; - if (argsLen === 0) internalMessage = "Failed"; - else if (argsLen === 1) (message = actual), (actual = void 0); - else { - if (warned === !1) { - warned = !0; - var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console); - warn( - "assert.fail() with more than one argument is deprecated. Please use assert.strictEqual() instead or only pass a message.", - "DeprecationWarning", - "DEP0094", - ); - } - argsLen === 2 && (operator = "!="); - } - if (message instanceof Error) throw message; - var errArgs = { - actual, - expected, - operator: operator === void 0 ? "fail" : operator, - stackStartFn: stackStartFn || fail, - }; - message !== void 0 && (errArgs.message = message); - var err = new AssertionError(errArgs); - throw (internalMessage && ((err.message = internalMessage), (err.generatedMessage = !0)), err); - } - assert.fail = fail; - assert.AssertionError = AssertionError; - function innerOk(fn, argLen, value, message) { - if (!value) { - var generatedMessage = !1; - if (argLen === 0) (generatedMessage = !0), (message = "No value argument passed to `assert.ok()`"); - else if (message instanceof Error) throw message; - var err = new AssertionError({ - actual: value, - expected: !0, - message, - operator: "==", - stackStartFn: fn, - }); - throw ((err.generatedMessage = generatedMessage), err); - } - } - function ok() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) - args[_key] = arguments[_key]; - innerOk.apply(void 0, [ok, args.length].concat(args)); - } - assert.ok = ok; - assert.equal = function equal(actual, expected, message) { - if (arguments.length < 2) throw new ERR_MISSING_ARGS("actual", "expected"); - actual != expected && - innerFail({ - actual, - expected, - message, - operator: "==", - stackStartFn: equal, - }); - }; - assert.notEqual = function notEqual(actual, expected, message) { - if (arguments.length < 2) throw new ERR_MISSING_ARGS("actual", "expected"); - actual == expected && - innerFail({ - actual, - expected, - message, - operator: "!=", - stackStartFn: notEqual, - }); - }; - assert.deepEqual = function deepEqual(actual, expected, message) { - if (arguments.length < 2) throw new ERR_MISSING_ARGS("actual", "expected"); - isDeepEqual(actual, expected, false) || - innerFail({ - actual, - expected, - message, - operator: "deepEqual", - stackStartFn: deepEqual, - }); - }; - assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (arguments.length < 2) throw new ERR_MISSING_ARGS("actual", "expected"); - isDeepEqual(actual, expected, false) && - innerFail({ - actual, - expected, - message, - operator: "notDeepEqual", - stackStartFn: notDeepEqual, - }); - }; - assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { - if (arguments.length < 2) throw new ERR_MISSING_ARGS("actual", "expected"); - - isDeepEqual(actual, expected, true) || - innerFail({ - actual, - expected, - message, - operator: "deepStrictEqual", - stackStartFn: deepStrictEqual, - }); - }; - assert.notDeepStrictEqual = notDeepStrictEqual; - function notDeepStrictEqual(actual, expected, message) { - if (arguments.length < 2) throw new ERR_MISSING_ARGS("actual", "expected"); - - isDeepEqual(actual, expected, true) && - innerFail({ - actual, - expected, - message, - operator: "notDeepStrictEqual", - stackStartFn: notDeepStrictEqual, - }); - } - assert.strictEqual = function strictEqual(actual, expected, message) { - if (arguments.length < 2) throw new ERR_MISSING_ARGS("actual", "expected"); - objectIs(actual, expected) || - innerFail({ - actual, - expected, - message, - operator: "strictEqual", - stackStartFn: strictEqual, - }); - }; - assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (arguments.length < 2) throw new ERR_MISSING_ARGS("actual", "expected"); - objectIs(actual, expected) && - innerFail({ - actual, - expected, - message, - operator: "notStrictEqual", - stackStartFn: notStrictEqual, - }); - }; - assert.match = function match(actual, expected, message) { - if (arguments.length < 2) throw new ERR_MISSING_ARGS("actual", "expected"); - if (!isRegExp(expected)) throw new ERR_INVALID_ARG_TYPE("expected", "RegExp", expected); - expected.test(actual) || - innerFail({ - actual, - expected, - message, - operator: "match", - stackStartFn: match, - }); - }; - var Comparison = function Comparison2(obj, keys, actual) { - var _this = this; - _classCallCheck(this, Comparison2), - keys.forEach(function (key) { - key in obj && - (actual !== void 0 && typeof actual[key] == "string" && isRegExp(obj[key]) && obj[key].test(actual[key]) - ? (_this[key] = actual[key]) - : (_this[key] = obj[key])); - }); - }; - function compareExceptionKey(actual, expected, key, message, keys, fn) { - if (!(key in actual) || !isDeepEqual(actual[key], expected[key], true)) { - if (!message) { - var a = new Comparison(actual, keys), - b = new Comparison(expected, keys, actual), - err = new AssertionError({ - actual: a, - expected: b, - operator: "deepStrictEqual", - stackStartFn: fn, - }); - throw ((err.actual = actual), (err.expected = expected), (err.operator = fn.name), err); - } - innerFail({ - actual, - expected, - message, - operator: fn.name, - stackStartFn: fn, - }); - } - } - function expectedException(actual, expected, msg, fn) { - if (typeof expected != "function") { - if (isRegExp(expected)) return expected.test(actual); - if (arguments.length === 2) throw new ERR_INVALID_ARG_TYPE("expected", ["Function", "RegExp"], expected); - if (_typeof(actual) !== "object" || actual === null) { - var err = new AssertionError({ - actual, - expected, - message: msg, - operator: "deepStrictEqual", - stackStartFn: fn, - }); - throw ((err.operator = fn.name), err); - } - var keys = Object.keys(expected); - if (expected instanceof Error) keys.push("name", "message"); - else if (keys.length === 0) throw new ERR_INVALID_ARG_VALUE("error", expected, "may not be an empty object"); - return ( - keys.forEach(function (key) { - return ( - (typeof actual[key] == "string" && isRegExp(expected[key]) && expected[key].test(actual[key])) || - compareExceptionKey(actual, expected, key, msg, keys, fn) - ); - }), - !0 - ); - } - return expected.prototype !== void 0 && actual instanceof expected - ? !0 - : Error.isPrototypeOf(expected) - ? !1 - : expected.call({}, actual) === !0; - } - function getActual(fn) { - if (typeof fn != "function") throw new ERR_INVALID_ARG_TYPE("fn", "Function", fn); - try { - fn(); - } catch (e) { - return e; - } - return NO_EXCEPTION_SENTINEL; - } - function checkIsPromise(obj) { - return ( - isPromise(obj) || - (obj !== null && _typeof(obj) === "object" && typeof obj.then == "function" && typeof obj.catch == "function") - ); - } - function waitForActual(promiseFn) { - return Promise.resolve().then(function () { - var resultPromise; - if (typeof promiseFn == "function") { - if (((resultPromise = promiseFn()), !checkIsPromise(resultPromise))) - throw new ERR_INVALID_RETURN_VALUE("instance of Promise", "promiseFn", resultPromise); - } else if (checkIsPromise(promiseFn)) resultPromise = promiseFn; - else throw new ERR_INVALID_ARG_TYPE("promiseFn", ["Function", "Promise"], promiseFn); - return Promise.resolve() - .then(function () { - return resultPromise; - }) - .then(function () { - return NO_EXCEPTION_SENTINEL; - }) - .catch(function (e) { - return e; - }); - }); - } - function expectsError(stackStartFn, actual, error, message) { - if (typeof error == "string") { - if (arguments.length === 4) - throw new ERR_INVALID_ARG_TYPE("error", ["Object", "Error", "Function", "RegExp"], error); - if (_typeof(actual) === "object" && actual !== null) { - if (actual.message === error) - throw new ERR_AMBIGUOUS_ARGUMENT( - "error/message", - 'The error message "'.concat(actual.message, '" is identical to the message.'), - ); - } else if (actual === error) - throw new ERR_AMBIGUOUS_ARGUMENT( - "error/message", - 'The error "'.concat(actual, '" is identical to the message.'), - ); - (message = error), (error = void 0); - } else if (error != null && _typeof(error) !== "object" && typeof error != "function") - throw new ERR_INVALID_ARG_TYPE("error", ["Object", "Error", "Function", "RegExp"], error); - if (actual === NO_EXCEPTION_SENTINEL) { - var details = ""; - error && error.name && (details += " (".concat(error.name, ")")), - (details += message ? ": ".concat(message) : "."); - var fnType = stackStartFn.name === "rejects" ? "rejection" : "exception"; - innerFail({ - actual: void 0, - expected: error, - operator: stackStartFn.name, - message: "Missing expected ".concat(fnType).concat(details), - stackStartFn, - }); - } - if (error && !expectedException(actual, error, message, stackStartFn)) throw actual; - } - function expectsNoError(stackStartFn, actual, error, message) { - if (actual !== NO_EXCEPTION_SENTINEL) { - if ( - (typeof error == "string" && ((message = error), (error = void 0)), - !error || expectedException(actual, error)) - ) { - var details = message ? ": ".concat(message) : ".", - fnType = stackStartFn.name === "doesNotReject" ? "rejection" : "exception"; - innerFail({ - actual, - expected: error, - operator: stackStartFn.name, - message: - "Got unwanted ".concat(fnType).concat( - details, - ` -`, - ) + 'Actual message: "'.concat(actual && actual.message, '"'), - stackStartFn, - }); - } - throw actual; - } - } - assert.throws = function throws(promiseFn) { - for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) - args[_key2 - 1] = arguments[_key2]; - expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args)); - }; - assert.rejects = function rejects(promiseFn) { - for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) - args[_key3 - 1] = arguments[_key3]; - return waitForActual(promiseFn).then(function (result) { - return expectsError.apply(void 0, [rejects, result].concat(args)); - }); - }; - assert.doesNotThrow = function doesNotThrow(fn) { - for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) - args[_key4 - 1] = arguments[_key4]; - expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args)); - }; - assert.doesNotReject = function doesNotReject(fn) { - for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) - args[_key5 - 1] = arguments[_key5]; - return waitForActual(fn).then(function (result) { - return expectsNoError.apply(void 0, [doesNotReject, result].concat(args)); - }); - }; - assert.ifError = function ifError(err) { - if (err != null) { - var message = "ifError got unwanted exception: "; - _typeof(err) === "object" && typeof err.message == "string" - ? err.message.length === 0 && err.constructor - ? (message += err.constructor.name) - : (message += err.message) - : (message += inspect(err)); - var newErr = new AssertionError({ - actual: err, - expected: null, - operator: "ifError", - message, - stackStartFn: ifError, - }), - origStack = err.stack; - if (typeof origStack == "string") { - var tmp2 = origStack.split(` -`); - tmp2.shift(); - for ( - var tmp1 = newErr.stack.split(` -`), - i = 0; - i < tmp2.length; - i++ - ) { - var pos = tmp1.indexOf(tmp2[i]); - if (pos !== -1) { - tmp1 = tmp1.slice(0, pos); - break; - } - } - newErr.stack = "" - .concat( - tmp1.join(` -`), - ` -`, - ) - .concat( - tmp2.join(` -`), - ); - } - throw newErr; - } - }; - function strict() { - for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) - args[_key6] = arguments[_key6]; - innerOk.apply(void 0, [strict, args.length].concat(args)); - } - assert.strict = objectAssign(strict, assert, { - equal: assert.strictEqual, - deepEqual: assert.deepStrictEqual, - notEqual: assert.notStrictEqual, - notDeepEqual: assert.notDeepStrictEqual, - }); - assert.strict.strict = assert.strict; - }, -}); -var assert_module = require_assert(); - -function CallTracker() { - throw new Error("CallTracker is not supported yet"); -} - -assert_module[Symbol.for("CommonJS")] = 0; -assert_module["CallTracker"] = CallTracker; -export var { - AssertionError, - assert, - deepEqual, - deepStrictEqual, - doesNotReject, - doesNotThrow, - equal, - fail, - ifError, - notDeepEqual, - notDeepStrictEqual, - notEqual, - notStrictEqual, - ok, - rejects, - strict, - strictEqual, - throws, -} = assert_module; -export default assert_module; diff --git a/src/bun.js/assert_strict.exports.js b/src/bun.js/assert_strict.exports.js deleted file mode 100644 index 619986113..000000000 --- a/src/bun.js/assert_strict.exports.js +++ /dev/null @@ -1,48 +0,0 @@ -var { strict: strictBase } = import.meta.require("node:assert"); - -export var { - fail, - AssertionError, - ok, - equal, - notEqual, - deepEqual, - notDeepEqual, - deepStrictEqual, - notDeepStrictEqual, - strictEqual, - notStrictEqual, - throws, - rejects, - doesNotThrow, - doesNotReject, - ifError, - match, - doesNotMatch, - CallTracker, -} = strictBase; - -const defaultObject = { - fail, - AssertionError, - ok, - equal, - notEqual, - deepEqual, - notDeepEqual, - deepStrictEqual, - notDeepStrictEqual, - strictEqual, - notStrictEqual, - throws, - rejects, - doesNotThrow, - doesNotReject, - ifError, - match, - doesNotMatch, - CallTracker, - [Symbol.for("CommonJS")]: 0, -}; - -export { defaultObject as default, strictBase as strict }; diff --git a/src/bun.js/async_hooks.exports.js b/src/bun.js/async_hooks.exports.js deleted file mode 100644 index 055159934..000000000 --- a/src/bun.js/async_hooks.exports.js +++ /dev/null @@ -1,213 +0,0 @@ -var drainMicrotasks = () => { - ({ drainMicrotasks } = import.meta.require("bun:jsc")); - drainMicrotasks(); -}; - -var notImplemented = () => { - console.warn("[bun]: async_hooks has not been implemented yet :("); - notImplemented = () => {}; -}; - -class AsyncLocalStorage { - #store; - _enabled; - - constructor() { - this._enabled = false; - this.#store = null; - } - - enterWith(store) { - this.#store = store; - notImplemented(); - - return this; - } - - exit(cb, ...args) { - this.#store = null; - notImplemented(); - typeof cb === "function" && cb(...args); - } - - run(store, callback, ...args) { - if (typeof callback !== "function") throw new TypeError("ERR_INVALID_CALLBACK"); - var result, err; - - process.nextTick(store => { - const prev = this.#store; - this.enterWith(store); - try { - result = callback(...args); - } catch (e) { - err = e; - } finally { - this.#store = prev; - } - }, store); - drainMicrotasks(); - if (typeof err !== "undefined") { - throw err; - } - return result; - } - - getStore() { - return this.#store; - } -} - -function createHook() { - return { - enable() { - notImplemented(); - }, - disable() { - notImplemented(); - }, - }; -} - -function executionAsyncId() { - return 0; -} - -function triggerAsyncId() { - return 0; -} - -function executionAsyncResource() { - return null; -} - -const asyncWrapProviders = { - NONE: 0, - DIRHANDLE: 1, - DNSCHANNEL: 2, - ELDHISTOGRAM: 3, - FILEHANDLE: 4, - FILEHANDLECLOSEREQ: 5, - FIXEDSIZEBLOBCOPY: 6, - FSEVENTWRAP: 7, - FSREQCALLBACK: 8, - FSREQPROMISE: 9, - GETADDRINFOREQWRAP: 10, - GETNAMEINFOREQWRAP: 11, - HEAPSNAPSHOT: 12, - HTTP2SESSION: 13, - HTTP2STREAM: 14, - HTTP2PING: 15, - HTTP2SETTINGS: 16, - HTTPINCOMINGMESSAGE: 17, - HTTPCLIENTREQUEST: 18, - JSSTREAM: 19, - JSUDPWRAP: 20, - MESSAGEPORT: 21, - PIPECONNECTWRAP: 22, - PIPESERVERWRAP: 23, - PIPEWRAP: 24, - PROCESSWRAP: 25, - PROMISE: 26, - QUERYWRAP: 27, - SHUTDOWNWRAP: 28, - SIGNALWRAP: 29, - STATWATCHER: 30, - STREAMPIPE: 31, - TCPCONNECTWRAP: 32, - TCPSERVERWRAP: 33, - TCPWRAP: 34, - TTYWRAP: 35, - UDPSENDWRAP: 36, - UDPWRAP: 37, - SIGINTWATCHDOG: 38, - WORKER: 39, - WORKERHEAPSNAPSHOT: 40, - WRITEWRAP: 41, - ZLIB: 42, - CHECKPRIMEREQUEST: 43, - PBKDF2REQUEST: 44, - KEYPAIRGENREQUEST: 45, - KEYGENREQUEST: 46, - KEYEXPORTREQUEST: 47, - CIPHERREQUEST: 48, - DERIVEBITSREQUEST: 49, - HASHREQUEST: 50, - RANDOMBYTESREQUEST: 51, - RANDOMPRIMEREQUEST: 52, - SCRYPTREQUEST: 53, - SIGNREQUEST: 54, - TLSWRAP: 55, - VERIFYREQUEST: 56, - INSPECTORJSBINDING: 57, -}; - -class AsyncResource { - constructor(type, triggerAsyncId) { - this.type = type; - this.triggerAsyncId = triggerAsyncId; - - if (AsyncResource.allowedRunInAsyncScope.has(type)) { - this.runInAsyncScope = this.#runInAsyncScope; - } - } - - type; - triggerAsyncId; - - // We probably will not fully support AsyncResource - // But some packages in the wild do depend on it - static allowedRunInAsyncScope = new Set(["prisma-client-request"]); - - emitBefore() { - return true; - } - - emitAfter() { - return true; - } - - emitDestroy() {} - - runInAsyncScope; - - #runInAsyncScope(fn, ...args) { - notImplemented(); - var result, err; - process.nextTick(fn => { - try { - result = fn(...args); - } catch (err2) { - err = err2; - } - }, fn); - drainMicrotasks(); - if (err) throw err; - return result; - } - - asyncId() { - return 0; - } -} - -export { - AsyncLocalStorage, - createHook, - executionAsyncId, - triggerAsyncId, - executionAsyncResource, - asyncWrapProviders, - AsyncResource, -}; - -export default { - AsyncLocalStorage, - createHook, - executionAsyncId, - triggerAsyncId, - executionAsyncResource, - asyncWrapProviders, - AsyncResource, - [Symbol.toStringTag]: "Module (not implemented yet)", - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/bindings/exports.zig b/src/bun.js/bindings/exports.zig index 3b1f7e014..94a517bea 100644 --- a/src/bun.js/bindings/exports.zig +++ b/src/bun.js/bindings/exports.zig @@ -222,7 +222,7 @@ pub const ResolvedSource = extern struct { @"node:buffer" = 1024, @"node:process" = 1025, - @"bun:events_native" = 1026, + @"bun:events_native" = 1026, // native version of EventEmitter used for streams @"node:string_decoder" = 1027, @"node:module" = 1028, @"node:tty" = 1029, diff --git a/src/bun.js/bindings/sqlite/sqlite.exports.js b/src/bun.js/bindings/sqlite/sqlite.exports.js deleted file mode 100644 index b64ec1508..000000000 --- a/src/bun.js/bindings/sqlite/sqlite.exports.js +++ /dev/null @@ -1,432 +0,0 @@ -var symbolFor = Symbol.for; - -const lazy = globalThis[symbolFor("Bun.lazy")]; -if (!lazy || typeof lazy !== "function") { - throw new Error("Something went wrong while loading Bun. Expected 'Bun.lazy' to be defined."); -} - -var defineProperties = Object.defineProperties; - -var toStringTag = Symbol.toStringTag; -var apply = Function.prototype.apply; -var isArray = Array.isArray; -var isTypedArray = ArrayBuffer.isView; -export const constants = { - SQLITE_OPEN_READONLY: 0x00000001 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_READWRITE: 0x00000002 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_CREATE: 0x00000004 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_DELETEONCLOSE: 0x00000008 /* VFS only */, - SQLITE_OPEN_EXCLUSIVE: 0x00000010 /* VFS only */, - SQLITE_OPEN_AUTOPROXY: 0x00000020 /* VFS only */, - SQLITE_OPEN_URI: 0x00000040 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_MEMORY: 0x00000080 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_MAIN_DB: 0x00000100 /* VFS only */, - SQLITE_OPEN_TEMP_DB: 0x00000200 /* VFS only */, - SQLITE_OPEN_TRANSIENT_DB: 0x00000400 /* VFS only */, - SQLITE_OPEN_MAIN_JOURNAL: 0x00000800 /* VFS only */, - SQLITE_OPEN_TEMP_JOURNAL: 0x00001000 /* VFS only */, - SQLITE_OPEN_SUBJOURNAL: 0x00002000 /* VFS only */, - SQLITE_OPEN_SUPER_JOURNAL: 0x00004000 /* VFS only */, - SQLITE_OPEN_NOMUTEX: 0x00008000 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_FULLMUTEX: 0x00010000 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_SHAREDCACHE: 0x00020000 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_PRIVATECACHE: 0x00040000 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_WAL: 0x00080000 /* VFS only */, - SQLITE_OPEN_NOFOLLOW: 0x01000000 /* Ok for sqlite3_open_v2() */, - SQLITE_OPEN_EXRESCODE: 0x02000000 /* Extended result codes */, - SQLITE_PREPARE_PERSISTENT: 0x01, - SQLITE_PREPARE_NORMALIZE: 0x02, - SQLITE_PREPARE_NO_VTAB: 0x04, -}; - -var SQL; -var _SQL; - -var controllers; - -export class Statement { - constructor(raw) { - this.#raw = raw; - - switch (raw.paramsCount) { - case 0: { - this.get = this.#getNoArgs; - this.all = this.#allNoArgs; - this.values = this.#valuesNoArgs; - this.run = this.#runNoArgs; - break; - } - default: { - this.get = this.#get; - this.all = this.#all; - this.values = this.#values; - this.run = this.#run; - break; - } - } - } - - #raw; - - get; - all; - values; - run; - isFinalized = false; - - toJSON() { - return { - sql: this.native.toString(), - isFinalized: this.isFinalized, - paramsCount: this.paramsCount, - columnNames: this.columnNames, - }; - } - - get [toStringTag]() { - return `"${this.native.toString()}"`; - } - - toString() { - return this.native.toString(); - } - - get native() { - return this.#raw; - } - - #getNoArgs() { - return this.#raw.get(); - } - - #allNoArgs() { - return this.#raw.all(); - } - - #valuesNoArgs() { - return this.#raw.values(); - } - - #runNoArgs() { - this.#raw.run(); - } - - #get(...args) { - if (args.length === 0) return this.#getNoArgs(); - var arg0 = args[0]; - // ["foo"] => ["foo"] - // ("foo") => ["foo"] - // (Uint8Array(1024)) => [Uint8Array] - // (123) => [123] - return !isArray(arg0) && (!arg0 || typeof arg0 !== "object" || isTypedArray(arg0)) - ? this.#raw.get(args) - : this.#raw.get(...args); - } - - #all(...args) { - if (args.length === 0) return this.#allNoArgs(); - var arg0 = args[0]; - // ["foo"] => ["foo"] - // ("foo") => ["foo"] - // (Uint8Array(1024)) => [Uint8Array] - // (123) => [123] - return !isArray(arg0) && (!arg0 || typeof arg0 !== "object" || isTypedArray(arg0)) - ? this.#raw.all(args) - : this.#raw.all(...args); - } - - #values(...args) { - if (args.length === 0) return this.#valuesNoArgs(); - var arg0 = args[0]; - // ["foo"] => ["foo"] - // ("foo") => ["foo"] - // (Uint8Array(1024)) => [Uint8Array] - // (123) => [123] - return !isArray(arg0) && (!arg0 || typeof arg0 !== "object" || isTypedArray(arg0)) - ? this.#raw.values(args) - : this.#raw.values(...args); - } - - #run(...args) { - if (args.length === 0) return this.#runNoArgs(); - var arg0 = args[0]; - - !isArray(arg0) && (!arg0 || typeof arg0 !== "object" || isTypedArray(arg0)) - ? this.#raw.run(args) - : this.#raw.run(...args); - } - - get columnNames() { - return this.#raw.columns; - } - - get paramsCount() { - return this.#raw.paramsCount; - } - - finalize(...args) { - this.isFinalized = true; - return this.#raw.finalize(...args); - } -} - -var cachedCount = symbolFor("Bun.Database.cache.count"); -export class Database { - constructor(filenameGiven, options) { - if (typeof filenameGiven === "undefined") { - } else if (typeof filenameGiven !== "string") { - if (isTypedArray(filenameGiven)) { - this.#handle = Database.deserialize( - filenameGiven, - typeof options === "object" && options - ? !!options.readonly - : ((options | 0) & constants.SQLITE_OPEN_READONLY) != 0, - ); - this.filename = ":memory:"; - return; - } - - throw new TypeError(`Expected 'filename' to be a string, got '${typeof filenameGiven}'`); - } - - var filename = typeof filenameGiven === "string" ? filenameGiven.trim() : ":memory:"; - var flags = constants.SQLITE_OPEN_READWRITE | constants.SQLITE_OPEN_CREATE; - if (typeof options === "object" && options) { - flags = 0; - - if (options.readonly) { - flags = constants.SQLITE_OPEN_READONLY; - } - - if ("readOnly" in options) throw new TypeError('Misspelled option "readOnly" should be "readonly"'); - - if (options.create) { - flags = constants.SQLITE_OPEN_READWRITE | constants.SQLITE_OPEN_CREATE; - } - - if (options.readwrite) { - flags |= constants.SQLITE_OPEN_READWRITE; - } - } else if (typeof options === "number") { - flags = options; - } - - const anonymous = filename === "" || filename === ":memory:"; - if (anonymous && (flags & constants.SQLITE_OPEN_READONLY) !== 0) { - throw new Error("Cannot open an anonymous database in read-only mode."); - } - - if (!SQL) { - _SQL = SQL = lazy("sqlite"); - } - - this.#handle = SQL.open(anonymous ? ":memory:" : filename, flags); - this.filename = filename; - } - - #handle; - #cachedQueriesKeys = []; - #cachedQueriesLengths = []; - #cachedQueriesValues = []; - filename; - - get handle() { - return this.#handle; - } - - get inTransaction() { - return SQL.isInTransaction(this.#handle); - } - - static open(filename, options) { - return new Database(filename, options); - } - - loadExtension(name, entryPoint) { - return SQL.loadExtension(this.#handle, name, entryPoint); - } - - serialize(optionalName) { - return SQL.serialize(this.#handle, optionalName || "main"); - } - - static deserialize(serialized, isReadOnly = false) { - if (!SQL) { - _SQL = SQL = lazy("sqlite"); - } - - return SQL.deserialize(serialized, isReadOnly); - } - - static setCustomSQLite(path) { - if (!SQL) { - _SQL = SQL = lazy("sqlite"); - } - - return SQL.setCustomSQLite(path); - } - - close() { - this.clearQueryCache(); - return SQL.close(this.#handle); - } - clearQueryCache() { - for (let item of this.#cachedQueriesValues) { - item.finalize(); - } - this.#cachedQueriesKeys.length = 0; - this.#cachedQueriesValues.length = 0; - this.#cachedQueriesLengths.length = 0; - } - - run(query, ...params) { - if (params.length === 0) { - SQL.run(this.#handle, query); - return; - } - - var arg0 = params[0]; - return !isArray(arg0) && (!arg0 || typeof arg0 !== "object" || isTypedArray(arg0)) - ? SQL.run(this.#handle, query, params) - : SQL.run(this.#handle, query, ...params); - } - - prepare(query, params, flags) { - return new Statement(SQL.prepare(this.#handle, query, params, flags || 0)); - } - - static MAX_QUERY_CACHE_SIZE = 20; - - get [cachedCount]() { - return this.#cachedQueriesKeys.length; - } - - query(query) { - if (typeof query !== "string") { - throw new TypeError(`Expected 'query' to be a string, got '${typeof query}'`); - } - - if (query.length === 0) { - throw new Error("SQL query cannot be empty."); - } - - // this list should be pretty small - var index = this.#cachedQueriesLengths.indexOf(query.length); - while (index !== -1) { - if (this.#cachedQueriesKeys[index] !== query) { - index = this.#cachedQueriesLengths.indexOf(query.length, index + 1); - continue; - } - - var stmt = this.#cachedQueriesValues[index]; - if (stmt.isFinalized) { - return (this.#cachedQueriesValues[index] = this.prepare( - query, - undefined, - willCache ? constants.SQLITE_PREPARE_PERSISTENT : 0, - )); - } - return stmt; - } - - const willCache = this.#cachedQueriesKeys.length < Database.MAX_QUERY_CACHE_SIZE; - - var stmt = this.prepare(query, undefined, willCache ? constants.SQLITE_PREPARE_PERSISTENT : 0); - - if (willCache) { - this.#cachedQueriesKeys.push(query); - this.#cachedQueriesLengths.push(query.length); - this.#cachedQueriesValues.push(stmt); - } - - return stmt; - } - - // Code for transactions is largely copied from better-sqlite3 - // https://github.com/JoshuaWise/better-sqlite3/blob/master/lib/methods/transaction.js - // thank you @JoshuaWise! - transaction(fn, self) { - if (typeof fn !== "function") throw new TypeError("Expected first argument to be a function"); - - const db = this; - const controller = getController(db, self); - - // Each version of the transaction function has these same properties - const properties = { - default: { value: wrapTransaction(fn, db, controller.default) }, - deferred: { value: wrapTransaction(fn, db, controller.deferred) }, - immediate: { - value: wrapTransaction(fn, db, controller.immediate), - }, - exclusive: { - value: wrapTransaction(fn, db, controller.exclusive), - }, - database: { value: this, enumerable: true }, - }; - - defineProperties(properties.default.value, properties); - defineProperties(properties.deferred.value, properties); - defineProperties(properties.immediate.value, properties); - defineProperties(properties.exclusive.value, properties); - - // Return the default version of the transaction function - return properties.default.value; - } -} - -Database.prototype.exec = Database.prototype.run; - -// Return the database's cached transaction controller, or create a new one -const getController = (db, self) => { - let controller = (controllers ||= new WeakMap()).get(db); - if (!controller) { - const shared = { - commit: db.prepare("COMMIT", undefined, 0), - rollback: db.prepare("ROLLBACK", undefined, 0), - savepoint: db.prepare("SAVEPOINT `\t_bs3.\t`", undefined, 0), - release: db.prepare("RELEASE `\t_bs3.\t`", undefined, 0), - rollbackTo: db.prepare("ROLLBACK TO `\t_bs3.\t`", undefined, 0), - }; - - controllers.set( - db, - (controller = { - default: Object.assign({ begin: db.prepare("BEGIN", undefined, 0) }, shared), - deferred: Object.assign({ begin: db.prepare("BEGIN DEFERRED", undefined, 0) }, shared), - immediate: Object.assign({ begin: db.prepare("BEGIN IMMEDIATE", undefined, 0) }, shared), - exclusive: Object.assign({ begin: db.prepare("BEGIN EXCLUSIVE", undefined, 0) }, shared), - }), - ); - } - return controller; -}; - -// Return a new transaction function by wrapping the given function -const wrapTransaction = (fn, db, { begin, commit, rollback, savepoint, release, rollbackTo }) => - function transaction(...args) { - let before, after, undo; - if (db.inTransaction) { - before = savepoint; - after = release; - undo = rollbackTo; - } else { - before = begin; - after = commit; - undo = rollback; - } - try { - before.run(); - const result = fn.apply(this, args); - after.run(); - return result; - } catch (ex) { - if (db.inTransaction) { - undo.run(); - if (undo !== rollback) after.run(); - } - throw ex; - } - }; - -export { _SQL as native }; -export { Database as default }; diff --git a/src/bun.js/builtins/BunBuiltinNames.h b/src/bun.js/builtins/BunBuiltinNames.h deleted file mode 100644 index 640d122ca..000000000 --- a/src/bun.js/builtins/BunBuiltinNames.h +++ /dev/null @@ -1,267 +0,0 @@ -#pragma once - -#include "JavaScriptCore/BuiltinUtils.h" -#include "root.h" - -namespace WebCore { - -using namespace JSC; - -#if !defined(BUN_ADDITIONAL_PRIVATE_IDENTIFIERS) -#define BUN_ADDITIONAL_PRIVATE_IDENTIFIERS(macro) -#endif - -#define BUN_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(macro) \ - macro(AbortSignal) \ - macro(Buffer) \ - macro(Bun) \ - macro(Loader) \ - macro(ReadableByteStreamController) \ - macro(ReadableStream) \ - macro(ReadableStreamBYOBReader) \ - macro(ReadableStreamBYOBRequest) \ - macro(ReadableStreamDefaultController) \ - macro(ReadableStreamDefaultReader) \ - macro(TransformStream) \ - macro(TransformStreamDefaultController) \ - macro(WritableStream) \ - macro(WritableStreamDefaultController) \ - macro(WritableStreamDefaultWriter) \ - macro(_events) \ - macro(abortAlgorithm) \ - macro(abortSteps) \ - macro(addEventListener) \ - macro(appendFromJS) \ - macro(argv) \ - macro(assignToStream) \ - macro(associatedReadableByteStreamController) \ - macro(autoAllocateChunkSize) \ - macro(backpressure) \ - macro(backpressureChangePromise) \ - macro(basename) \ - macro(body) \ - macro(bunNativePtr) \ - macro(bunNativeType) \ - macro(byobRequest) \ - macro(cancel) \ - macro(cancelAlgorithm) \ - macro(chdir) \ - macro(cloneArrayBuffer) \ - macro(close) \ - macro(closeAlgorithm) \ - macro(closeRequest) \ - macro(closeRequested) \ - macro(closed) \ - macro(closedPromise) \ - macro(closedPromiseCapability) \ - macro(code) \ - macro(commonJSSymbol) \ - macro(connect) \ - macro(consumeReadableStream) \ - macro(controlledReadableStream) \ - macro(controller) \ - macro(cork) \ - macro(createEmptyReadableStream) \ - macro(createFIFO) \ - macro(createNativeReadableStream) \ - macro(createReadableStream) \ - macro(createUninitializedArrayBuffer) \ - macro(createWritableStreamFromInternal) \ - macro(cwd) \ - macro(data) \ - macro(dataView) \ - macro(decode) \ - macro(delimiter) \ - macro(destroy) \ - macro(dir) \ - macro(direct) \ - macro(dirname) \ - macro(disturbed) \ - macro(document) \ - macro(encode) \ - macro(encoding) \ - macro(end) \ - macro(errno) \ - macro(errorSteps) \ - macro(execArgv) \ - macro(exports) \ - macro(extname) \ - macro(failureKind) \ - macro(fatal) \ - macro(fetch) \ - macro(fetchRequest) \ - macro(file) \ - macro(filePath) \ - macro(fillFromJS) \ - macro(filter) \ - macro(finishConsumingStream) \ - macro(flush) \ - macro(flushAlgorithm) \ - macro(format) \ - macro(fulfillModuleSync) \ - macro(get) \ - macro(getInternalWritableStream) \ - macro(handleEvent) \ - macro(hash) \ - macro(header) \ - macro(headers) \ - macro(highWaterMark) \ - macro(host) \ - macro(hostname) \ - macro(href) \ - macro(ignoreBOM) \ - macro(importer) \ - macro(inFlightCloseRequest) \ - macro(inFlightWriteRequest) \ - macro(initializeWith) \ - macro(internalRequire) \ - macro(internalStream) \ - macro(internalWritable) \ - macro(isAbortSignal) \ - macro(isAbsolute) \ - macro(isDisturbed) \ - macro(isPaused) \ - macro(isWindows) \ - macro(join) \ - macro(kind) \ - macro(lazy) \ - macro(lazyLoad) \ - macro(lazyStreamPrototypeMap) \ - macro(loadCJS2ESM) \ - macro(loadModule) \ - macro(localStreams) \ - macro(main) \ - macro(makeDOMException) \ - macro(makeGetterTypeError) \ - macro(makeThisTypeError) \ - macro(map) \ - macro(method) \ - macro(nextTick) \ - macro(normalize) \ - macro(on) \ - macro(once) \ - macro(options) \ - macro(origin) \ - macro(ownerReadableStream) \ - macro(parse) \ - macro(password) \ - macro(patch) \ - macro(path) \ - macro(pathname) \ - macro(pause) \ - macro(pendingAbortRequest) \ - macro(pendingPullIntos) \ - macro(pid) \ - macro(pipe) \ - macro(port) \ - macro(post) \ - macro(ppid) \ - macro(prependEventListener) \ - macro(process) \ - macro(protocol) \ - macro(pull) \ - macro(pullAgain) \ - macro(pullAlgorithm) \ - macro(pulling) \ - macro(put) \ - macro(queue) \ - macro(read) \ - macro(readIntoRequests) \ - macro(readRequests) \ - macro(readable) \ - macro(readableStreamController) \ - macro(readableStreamToArray) \ - macro(reader) \ - macro(readyPromise) \ - macro(readyPromiseCapability) \ - macro(redirect) \ - macro(relative) \ - macro(releaseLock) \ - macro(removeEventListener) \ - macro(require) \ - macro(requireESM) \ - macro(requireMap) \ - macro(resolve) \ - macro(resolveSync) \ - macro(resume) \ - macro(search) \ - macro(searchParams) \ - macro(self) \ - macro(sep) \ - macro(setBody) \ - macro(setStatus) \ - macro(setup) \ - macro(sink) \ - macro(size) \ - macro(start) \ - macro(startAlgorithm) \ - macro(startConsumingStream) \ - macro(startDirectStream) \ - macro(started) \ - macro(startedPromise) \ - macro(state) \ - macro(status) \ - macro(storedError) \ - macro(strategy) \ - macro(strategyHWM) \ - macro(strategySizeAlgorithm) \ - macro(stream) \ - macro(streamClosed) \ - macro(streamClosing) \ - macro(streamErrored) \ - macro(streamReadable) \ - macro(streamWaiting) \ - macro(streamWritable) \ - macro(structuredCloneForStream) \ - macro(syscall) \ - macro(textDecoderStreamDecoder) \ - macro(textDecoderStreamTransform) \ - macro(textEncoderStreamEncoder) \ - macro(textEncoderStreamTransform) \ - macro(toNamespacedPath) \ - macro(trace) \ - macro(transformAlgorithm) \ - macro(uncork) \ - macro(underlyingByteSource) \ - macro(underlyingSink) \ - macro(underlyingSource) \ - macro(unpipe) \ - macro(unshift) \ - macro(url) \ - macro(username) \ - macro(version) \ - macro(versions) \ - macro(view) \ - macro(whenSignalAborted) \ - macro(writable) \ - macro(write) \ - macro(writeAlgorithm) \ - macro(writeRequests) \ - macro(writer) \ - macro(writing) \ - macro(written) \ - BUN_ADDITIONAL_PRIVATE_IDENTIFIERS(macro) \ - -class BunBuiltinNames { -public: - // FIXME: Remove the __attribute__((nodebug)) when <rdar://68246686> is fixed. -#if COMPILER(CLANG) - __attribute__((nodebug)) -#endif - explicit BunBuiltinNames(JSC::VM& vm) - : m_vm(vm) - BUN_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_BUILTIN_NAMES) - { -#define EXPORT_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - BUN_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(EXPORT_NAME) -#undef EXPORT_NAME - } - - BUN_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - -private: - JSC::VM& m_vm; - BUN_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(DECLARE_BUILTIN_NAMES) -}; - -} // namespace WebCore diff --git a/src/bun.js/builtins/README.md b/src/bun.js/builtins/README.md deleted file mode 100644 index 67b8882ee..000000000 --- a/src/bun.js/builtins/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# JavaScript Builtins - -**TLDR** — When files in this directory change, run: - -```bash -# Delete the built files -$ make regenerate-bindings -# Re-link the binary without compiling zig (so it's faster) -$ make bun-link-lld-debug -``` - -TypeScript files in [./ts](./ts) are bundled into C++ Headers that can access JavaScriptCore intrinsics. These files use special globals that are prefixed with `$`. - -```js -$getter -export function foo() { - return $getByIdDirectPrivate(this, "superSecret"); -} -``` - -It looks kind of like decorators but they're not. They let you directly call engine intrinsics and help with avoiding prototype pollution issues. - -V8 has a [similar feature](https://v8.dev/blog/embedded-builtins) (they use `%` instead of `@`) - -They usually are accompanied by a C++ file. - -We use a custom code generator located in `./codegen` which contains a regex-based parser that separates each function into it's own bundling context, so syntax like top level variables / functions will not work. - -You can also use `process.platform` and `process.arch` in these files. The values are inlined and DCE'd. - -## Generating builtins - -To regenerate the builtins, run this from Bun's project root (where the `Makefile` is) - -```bash -$ make builtins -``` - -You'll want to also rebuild all the C++ bindings or you will get strange crashes on start - -```bash -$ make clean-bindings -``` - -The `make regenerate-bindings` command will clean and rebuild the bindings. - -Also, you can run the code generator manually. - -```bash -$ bun ./codegen/index.ts -# pass --minify to minify (make passes this by default) -# pass --keep-tmp to keep the temporary ./tmp folder, which contains processed pre-bundled .ts files -``` diff --git a/src/bun.js/builtins/WebCoreJSBuiltins.cpp b/src/bun.js/builtins/WebCoreJSBuiltins.cpp deleted file mode 100644 index 614c34a1a..000000000 --- a/src/bun.js/builtins/WebCoreJSBuiltins.cpp +++ /dev/null @@ -1,2985 +0,0 @@ -// Generated by `bun src/bun.js/builtins/codegen/index.js` -// Do not edit by hand. -namespace Zig { class GlobalObject; } -#include "root.h" -#include "config.h" -#include "JSDOMGlobalObject.h" -#include "WebCoreJSClientData.h" -#include <JavaScriptCore/JSObjectInlines.h> - -namespace WebCore { - -/* BundlerPlugin.ts */ -// runSetupFunction -const JSC::ConstructAbility s_bundlerPluginRunSetupFunctionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_bundlerPluginRunSetupFunctionCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_bundlerPluginRunSetupFunctionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_bundlerPluginRunSetupFunctionCodeLength = 2165; -static const JSC::Intrinsic s_bundlerPluginRunSetupFunctionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_bundlerPluginRunSetupFunctionCode = "(function (_,h){\"use strict\";var w=new Map,I=new Map;function M(C,D,E){if(!C||!@isObject(C))@throwTypeError('Expected an object with \"filter\" RegExp');if(!D||!@isCallable(D))@throwTypeError(\"callback must be a function\");var{filter:F,namespace:G=\"file\"}=C;if(!F)@throwTypeError('Expected an object with \"filter\" RegExp');if(!@isRegExpObject(F))@throwTypeError(\"filter must be a RegExp\");if(G&&typeof G!==\"string\")@throwTypeError(\"namespace must be a string\");if((G\?.length\?\?0)===0)G=\"file\";if(!/^([/@a-zA-Z0-9_\\\\-]+)$/.test(G))@throwTypeError(\"namespace can only contain $a-zA-Z0-9_\\\\-\");var H=E.@get(G);if(!H)E.@set(G,[[F,D]]);else @arrayPush(H,[F,D])}function q(C,D){M(C,D,w)}function z(C,D){M(C,D,I)}const A=()=>{var C=!1,D=!1;for(var[E,F]of w.entries())for(var[G]of F)this.addFilter(G,E,1),C=!0;for(var[E,F]of I.entries())for(var[G]of F)this.addFilter(G,E,0),D=!0;if(D){var H=this.onResolve;if(!H)this.onResolve=I;else for(var[E,F]of I.entries()){var J=H.@get(E);if(!J)H.@set(E,F);else H.@set(E,J.concat(F))}}if(C){var K=this.onLoad;if(!K)this.onLoad=w;else for(var[E,F]of w.entries()){var J=K.@get(E);if(!J)K.@set(E,F);else K.@set(E,J.concat(F))}}return C||D};var B=_({config:h,onDispose:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),onEnd:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),onLoad:q,onResolve:z,onStart:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),resolve:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),initialOptions:{...h,bundle:!0,entryPoints:h.entrypoints\?\?h.entryPoints\?\?[],minify:typeof h.minify===\"boolean\"\?h.minify:!1,minifyIdentifiers:h.minify===!0||h.minify\?.identifiers,minifyWhitespace:h.minify===!0||h.minify\?.whitespace,minifySyntax:h.minify===!0||h.minify\?.syntax,outbase:h.root,platform:h.target===\"bun\"\?\"node\":h.target},esbuild:{}});if(B&&@isPromise(B))if(@getPromiseInternalField(B,@promiseFieldFlags)&@promiseStateFulfilled)B=@getPromiseInternalField(B,@promiseFieldReactionsOrResult);else return B.@then(A);return A()})\n"; - -// runOnResolvePlugins -const JSC::ConstructAbility s_bundlerPluginRunOnResolvePluginsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_bundlerPluginRunOnResolvePluginsCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_bundlerPluginRunOnResolvePluginsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_bundlerPluginRunOnResolvePluginsCodeLength = 1711; -static const JSC::Intrinsic s_bundlerPluginRunOnResolvePluginsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_bundlerPluginRunOnResolvePluginsCode = "(function (_,E,W,g,j){\"use strict\";const q=[\"entry-point\",\"import-statement\",\"require-call\",\"dynamic-import\",\"require-resolve\",\"import-rule\",\"url-token\",\"internal\"][j];var w=(async(y,z,A,B)=>{var{onResolve:C,onLoad:F}=this,G=C.@get(z);if(!G)return this.onResolveAsync(g,null,null,null),null;for(let[O,Q]of G)if(O.test(y)){var H=Q({path:y,importer:A,namespace:z,kind:B});while(H&&@isPromise(H)&&(@getPromiseInternalField(H,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)H=@getPromiseInternalField(H,@promiseFieldReactionsOrResult);if(H&&@isPromise(H))H=await H;if(!H||!@isObject(H))continue;var{path:J,namespace:K=z,external:M}=H;if(typeof J!==\"string\"||typeof K!==\"string\")@throwTypeError(\"onResolve plugins must return an object with a string 'path' and string 'loader' field\");if(!J)continue;if(!K)K=z;if(typeof M!==\"boolean\"&&!@isUndefinedOrNull(M))@throwTypeError('onResolve plugins \"external\" field must be boolean or unspecified');if(!M){if(K===\"file\"){if(darwin!==\"win32\"){if(J[0]!==\"/\"||J.includes(\"..\"))@throwTypeError('onResolve plugin \"path\" must be absolute when the namespace is \"file\"')}}if(K===\"dataurl\"){if(!J.startsWith(\"data:\"))@throwTypeError('onResolve plugin \"path\" must start with \"data:\" when the namespace is \"dataurl\"')}if(K&&K!==\"file\"&&(!F||!F.@has(K)))@throwTypeError(`Expected onLoad plugin for namespace ${K} to exist`)}return this.onResolveAsync(g,J,K,M),null}return this.onResolveAsync(g,null,null,null),null})(_,E,W,q);while(w&&@isPromise(w)&&(@getPromiseInternalField(w,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)w=@getPromiseInternalField(w,@promiseFieldReactionsOrResult);if(w&&@isPromise(w))w.then(()=>{},(y)=>{this.addError(g,y,0)})})\n"; - -// runOnLoadPlugins -const JSC::ConstructAbility s_bundlerPluginRunOnLoadPluginsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_bundlerPluginRunOnLoadPluginsCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_bundlerPluginRunOnLoadPluginsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_bundlerPluginRunOnLoadPluginsCodeLength = 1325; -static const JSC::Intrinsic s_bundlerPluginRunOnLoadPluginsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_bundlerPluginRunOnLoadPluginsCode = "(function (_,b,g,j){\"use strict\";const q={jsx:0,js:1,ts:2,tsx:3,css:4,file:5,json:6,toml:7,wasm:8,napi:9,base64:10,dataurl:11,text:12},v=[\"jsx\",\"js\",\"ts\",\"tsx\",\"css\",\"file\",\"json\",\"toml\",\"wasm\",\"napi\",\"base64\",\"dataurl\",\"text\"][j];var w=(async(x,y,z,B)=>{var C=this.onLoad.@get(z);if(!C)return this.onLoadAsync(x,null,null),null;for(let[H,J]of C)if(H.test(y)){var E=J({path:y,namespace:z,loader:B});while(E&&@isPromise(E)&&(@getPromiseInternalField(E,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)E=@getPromiseInternalField(E,@promiseFieldReactionsOrResult);if(E&&@isPromise(E))E=await E;if(!E||!@isObject(E))continue;var{contents:F,loader:G=B}=E;if(typeof F!==\"string\"&&!@isTypedArrayView(F))@throwTypeError('onLoad plugins must return an object with \"contents\" as a string or Uint8Array');if(typeof G!==\"string\")@throwTypeError('onLoad plugins must return an object with \"loader\" as a string');const K=q[G];if(K===@undefined)@throwTypeError(`Loader ${G} is not supported.`);return this.onLoadAsync(x,F,K),null}return this.onLoadAsync(x,null,null),null})(_,b,g,v);while(w&&@isPromise(w)&&(@getPromiseInternalField(w,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)w=@getPromiseInternalField(w,@promiseFieldReactionsOrResult);if(w&&@isPromise(w))w.then(()=>{},(x)=>{this.addError(_,x,1)})})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().bundlerPluginBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().bundlerPluginBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ByteLengthQueuingStrategy.ts */ -// highWaterMark -const JSC::ConstructAbility s_byteLengthQueuingStrategyHighWaterMarkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_byteLengthQueuingStrategyHighWaterMarkCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_byteLengthQueuingStrategyHighWaterMarkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_byteLengthQueuingStrategyHighWaterMarkCodeLength = 210; -static const JSC::Intrinsic s_byteLengthQueuingStrategyHighWaterMarkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_byteLengthQueuingStrategyHighWaterMarkCode = "(function (){\"use strict\";const e=@getByIdDirectPrivate(this,\"highWaterMark\");if(e===@undefined)@throwTypeError(\"ByteLengthQueuingStrategy.highWaterMark getter called on incompatible |this| value.\");return e})\n"; - -// size -const JSC::ConstructAbility s_byteLengthQueuingStrategySizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_byteLengthQueuingStrategySizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_byteLengthQueuingStrategySizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_byteLengthQueuingStrategySizeCodeLength = 49; -static const JSC::Intrinsic s_byteLengthQueuingStrategySizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_byteLengthQueuingStrategySizeCode = "(function (e){\"use strict\";return e.byteLength})\n"; - -// initializeByteLengthQueuingStrategy -const JSC::ConstructAbility s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeLength = 121; -static const JSC::Intrinsic s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCode = "(function (d){\"use strict\";@putByIdDirectPrivate(this,\"highWaterMark\",@extractHighWaterMarkFromQueuingStrategyInit(d))})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().byteLengthQueuingStrategyBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().byteLengthQueuingStrategyBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* WritableStreamInternals.ts */ -// isWritableStream -const JSC::ConstructAbility s_writableStreamInternalsIsWritableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsIsWritableStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsIsWritableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsIsWritableStreamCodeLength = 94; -static const JSC::Intrinsic s_writableStreamInternalsIsWritableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsIsWritableStreamCode = "(function (b){\"use strict\";return @isObject(b)&&!!@getByIdDirectPrivate(b,\"underlyingSink\")})\n"; - -// isWritableStreamDefaultWriter -const JSC::ConstructAbility s_writableStreamInternalsIsWritableStreamDefaultWriterCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsIsWritableStreamDefaultWriterCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsIsWritableStreamDefaultWriterCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsIsWritableStreamDefaultWriterCodeLength = 93; -static const JSC::Intrinsic s_writableStreamInternalsIsWritableStreamDefaultWriterCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsIsWritableStreamDefaultWriterCode = "(function (s){\"use strict\";return @isObject(s)&&!!@getByIdDirectPrivate(s,\"closedPromise\")})\n"; - -// acquireWritableStreamDefaultWriter -const JSC::ConstructAbility s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeLength = 72; -static const JSC::Intrinsic s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsAcquireWritableStreamDefaultWriterCode = "(function (d){\"use strict\";return new @WritableStreamDefaultWriter(d)})\n"; - -// createWritableStream -const JSC::ConstructAbility s_writableStreamInternalsCreateWritableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsCreateWritableStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsCreateWritableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsCreateWritableStreamCodeLength = 278; -static const JSC::Intrinsic s_writableStreamInternalsCreateWritableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsCreateWritableStreamCode = "(function (_,d,p,u,I,f){\"use strict\";@assert(typeof I===\"number\"&&!@isNaN(I)&&I>=0);const j={};@initializeWritableStreamSlots(j,{});const q=new @WritableStreamDefaultController;return @setUpWritableStreamDefaultController(j,q,_,d,p,u,I,f),@createWritableStreamFromInternal(j)})\n"; - -// createInternalWritableStreamFromUnderlyingSink -const JSC::ConstructAbility s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeLength = 956; -static const JSC::Intrinsic s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCode = "(function (_,f){\"use strict\";const p={};if(_===@undefined)_={};if(f===@undefined)f={};if(!@isObject(_))@throwTypeError(\"WritableStream constructor takes an object as first argument\");if(\"type\"in _)@throwRangeError(\"Invalid type is specified\");const v=@extractSizeAlgorithm(f),U=@extractHighWaterMark(f,1),b={};if(\"start\"in _){if(b[\"start\"]=_[\"start\"],typeof b[\"start\"]!==\"function\")@throwTypeError(\"underlyingSink.start should be a function\")}if(\"write\"in _){if(b[\"write\"]=_[\"write\"],typeof b[\"write\"]!==\"function\")@throwTypeError(\"underlyingSink.write should be a function\")}if(\"close\"in _){if(b[\"close\"]=_[\"close\"],typeof b[\"close\"]!==\"function\")@throwTypeError(\"underlyingSink.close should be a function\")}if(\"abort\"in _){if(b[\"abort\"]=_[\"abort\"],typeof b[\"abort\"]!==\"function\")@throwTypeError(\"underlyingSink.abort should be a function\")}return @initializeWritableStreamSlots(p,_),@setUpWritableStreamDefaultControllerFromUnderlyingSink(p,_,b,U,v),p})\n"; - -// initializeWritableStreamSlots -const JSC::ConstructAbility s_writableStreamInternalsInitializeWritableStreamSlotsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsInitializeWritableStreamSlotsCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsInitializeWritableStreamSlotsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsInitializeWritableStreamSlotsCodeLength = 588; -static const JSC::Intrinsic s_writableStreamInternalsInitializeWritableStreamSlotsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsInitializeWritableStreamSlotsCode = "(function (_,c){\"use strict\";@putByIdDirectPrivate(_,\"state\",\"writable\"),@putByIdDirectPrivate(_,\"storedError\",@undefined),@putByIdDirectPrivate(_,\"writer\",@undefined),@putByIdDirectPrivate(_,\"controller\",@undefined),@putByIdDirectPrivate(_,\"inFlightWriteRequest\",@undefined),@putByIdDirectPrivate(_,\"closeRequest\",@undefined),@putByIdDirectPrivate(_,\"inFlightCloseRequest\",@undefined),@putByIdDirectPrivate(_,\"pendingAbortRequest\",@undefined),@putByIdDirectPrivate(_,\"writeRequests\",@createFIFO()),@putByIdDirectPrivate(_,\"backpressure\",!1),@putByIdDirectPrivate(_,\"underlyingSink\",c)})\n"; - -// writableStreamCloseForBindings -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamCloseForBindingsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamCloseForBindingsCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamCloseForBindingsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamCloseForBindingsCodeLength = 370; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamCloseForBindingsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamCloseForBindingsCode = "(function (_){\"use strict\";if(@isWritableStreamLocked(_))return @Promise.@reject(@makeTypeError(\"WritableStream.close method can only be used on non locked WritableStream\"));if(@writableStreamCloseQueuedOrInFlight(_))return @Promise.@reject(@makeTypeError(\"WritableStream.close method can only be used on a being close WritableStream\"));return @writableStreamClose(_)})\n"; - -// writableStreamAbortForBindings -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamAbortForBindingsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamAbortForBindingsCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamAbortForBindingsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamAbortForBindingsCodeLength = 211; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamAbortForBindingsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamAbortForBindingsCode = "(function (i,b){\"use strict\";if(@isWritableStreamLocked(i))return @Promise.@reject(@makeTypeError(\"WritableStream.abort method can only be used on non locked WritableStream\"));return @writableStreamAbort(i,b)})\n"; - -// isWritableStreamLocked -const JSC::ConstructAbility s_writableStreamInternalsIsWritableStreamLockedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsIsWritableStreamLockedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsIsWritableStreamLockedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsIsWritableStreamLockedCodeLength = 83; -static const JSC::Intrinsic s_writableStreamInternalsIsWritableStreamLockedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsIsWritableStreamLockedCode = "(function (d){\"use strict\";return @getByIdDirectPrivate(d,\"writer\")!==@undefined})\n"; - -// setUpWritableStreamDefaultWriter -const JSC::ConstructAbility s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeLength = 887; -static const JSC::Intrinsic s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsSetUpWritableStreamDefaultWriterCode = "(function (_,n){\"use strict\";if(@isWritableStreamLocked(n))@throwTypeError(\"WritableStream is locked\");@putByIdDirectPrivate(_,\"stream\",n),@putByIdDirectPrivate(n,\"writer\",_);const u=@newPromiseCapability(@Promise),B=@newPromiseCapability(@Promise);@putByIdDirectPrivate(_,\"readyPromise\",u),@putByIdDirectPrivate(_,\"closedPromise\",B);const f=@getByIdDirectPrivate(n,\"state\");if(f===\"writable\"){if(@writableStreamCloseQueuedOrInFlight(n)||!@getByIdDirectPrivate(n,\"backpressure\"))u.@resolve.@call()}else if(f===\"erroring\")u.@reject.@call(@undefined,@getByIdDirectPrivate(n,\"storedError\")),@markPromiseAsHandled(u.@promise);else if(f===\"closed\")u.@resolve.@call(),B.@resolve.@call();else{@assert(f===\"errored\");const g=@getByIdDirectPrivate(n,\"storedError\");u.@reject.@call(@undefined,g),@markPromiseAsHandled(u.@promise),B.@reject.@call(@undefined,g),@markPromiseAsHandled(B.@promise)}})\n"; - -// writableStreamAbort -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamAbortCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamAbortCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamAbortCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamAbortCodeLength = 501; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamAbortCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamAbortCode = "(function (_,c){\"use strict\";const f=@getByIdDirectPrivate(_,\"state\");if(f===\"closed\"||f===\"errored\")return @Promise.@resolve();const h=@getByIdDirectPrivate(_,\"pendingAbortRequest\");if(h!==@undefined)return h.promise.@promise;@assert(f===\"writable\"||f===\"erroring\");let j=!1;if(f===\"erroring\")j=!0,c=@undefined;const k=@newPromiseCapability(@Promise);if(@putByIdDirectPrivate(_,\"pendingAbortRequest\",{promise:k,reason:c,wasAlreadyErroring:j}),!j)@writableStreamStartErroring(_,c);return k.@promise})\n"; - -// writableStreamClose -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamCloseCodeLength = 642; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamCloseCode = "(function (n){\"use strict\";const _=@getByIdDirectPrivate(n,\"state\");if(_===\"closed\"||_===\"errored\")return @Promise.@reject(@makeTypeError(\"Cannot close a writable stream that is closed or errored\"));@assert(_===\"writable\"||_===\"erroring\"),@assert(!@writableStreamCloseQueuedOrInFlight(n));const d=@newPromiseCapability(@Promise);@putByIdDirectPrivate(n,\"closeRequest\",d);const u=@getByIdDirectPrivate(n,\"writer\");if(u!==@undefined&&@getByIdDirectPrivate(n,\"backpressure\")&&_===\"writable\")@getByIdDirectPrivate(u,\"readyPromise\").@resolve.@call();return @writableStreamDefaultControllerClose(@getByIdDirectPrivate(n,\"controller\")),d.@promise})\n"; - -// writableStreamAddWriteRequest -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamAddWriteRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamAddWriteRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamAddWriteRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamAddWriteRequestCodeLength = 227; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamAddWriteRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamAddWriteRequestCode = "(function (_){\"use strict\";@assert(@isWritableStreamLocked(_)),@assert(@getByIdDirectPrivate(_,\"state\")===\"writable\");const c=@newPromiseCapability(@Promise);return @getByIdDirectPrivate(_,\"writeRequests\").push(c),c.@promise})\n"; - -// writableStreamCloseQueuedOrInFlight -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeLength = 151; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCode = "(function (_){\"use strict\";return @getByIdDirectPrivate(_,\"closeRequest\")!==@undefined||@getByIdDirectPrivate(_,\"inFlightCloseRequest\")!==@undefined})\n"; - -// writableStreamDealWithRejection -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDealWithRejectionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDealWithRejectionCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDealWithRejectionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDealWithRejectionCodeLength = 189; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDealWithRejectionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDealWithRejectionCode = "(function (n,c){\"use strict\";const d=@getByIdDirectPrivate(n,\"state\");if(d===\"writable\"){@writableStreamStartErroring(n,c);return}@assert(d===\"erroring\"),@writableStreamFinishErroring(n)})\n"; - -// writableStreamFinishErroring -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishErroringCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishErroringCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishErroringCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamFinishErroringCodeLength = 1058; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamFinishErroringCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamFinishErroringCode = "(function (i){\"use strict\";@assert(@getByIdDirectPrivate(i,\"state\")===\"erroring\"),@assert(!@writableStreamHasOperationMarkedInFlight(i)),@putByIdDirectPrivate(i,\"state\",\"errored\");const c=@getByIdDirectPrivate(i,\"controller\");@getByIdDirectPrivate(c,\"errorSteps\").@call();const p=@getByIdDirectPrivate(i,\"storedError\"),_=@getByIdDirectPrivate(i,\"writeRequests\");for(var d=_.shift();d;d=_.shift())d.@reject.@call(@undefined,p);@putByIdDirectPrivate(i,\"writeRequests\",@createFIFO());const f=@getByIdDirectPrivate(i,\"pendingAbortRequest\");if(f===@undefined){@writableStreamRejectCloseAndClosedPromiseIfNeeded(i);return}if(@putByIdDirectPrivate(i,\"pendingAbortRequest\",@undefined),f.wasAlreadyErroring){f.promise.@reject.@call(@undefined,p),@writableStreamRejectCloseAndClosedPromiseIfNeeded(i);return}@getByIdDirectPrivate(c,\"abortSteps\").@call(@undefined,f.reason).@then(()=>{f.promise.@resolve.@call(),@writableStreamRejectCloseAndClosedPromiseIfNeeded(i)},(j)=>{f.promise.@reject.@call(@undefined,j),@writableStreamRejectCloseAndClosedPromiseIfNeeded(i)})})\n"; - -// writableStreamFinishInFlightClose -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeLength = 751; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamFinishInFlightCloseCode = "(function (i){\"use strict\";@getByIdDirectPrivate(i,\"inFlightCloseRequest\").@resolve.@call(),@putByIdDirectPrivate(i,\"inFlightCloseRequest\",@undefined);const _=@getByIdDirectPrivate(i,\"state\");if(@assert(_===\"writable\"||_===\"erroring\"),_===\"erroring\"){@putByIdDirectPrivate(i,\"storedError\",@undefined);const d=@getByIdDirectPrivate(i,\"pendingAbortRequest\");if(d!==@undefined)d.promise.@resolve.@call(),@putByIdDirectPrivate(i,\"pendingAbortRequest\",@undefined)}@putByIdDirectPrivate(i,\"state\",\"closed\");const c=@getByIdDirectPrivate(i,\"writer\");if(c!==@undefined)@getByIdDirectPrivate(c,\"closedPromise\").@resolve.@call();@assert(@getByIdDirectPrivate(i,\"pendingAbortRequest\")===@undefined),@assert(@getByIdDirectPrivate(i,\"storedError\")===@undefined)})\n"; - -// writableStreamFinishInFlightCloseWithError -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeLength = 488; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCode = "(function (_,c){\"use strict\";const d=@getByIdDirectPrivate(_,\"inFlightCloseRequest\");@assert(d!==@undefined),d.@reject.@call(@undefined,c),@putByIdDirectPrivate(_,\"inFlightCloseRequest\",@undefined);const f=@getByIdDirectPrivate(_,\"state\");@assert(f===\"writable\"||f===\"erroring\");const j=@getByIdDirectPrivate(_,\"pendingAbortRequest\");if(j!==@undefined)j.promise.@reject.@call(@undefined,c),@putByIdDirectPrivate(_,\"pendingAbortRequest\",@undefined);@writableStreamDealWithRejection(_,c)})\n"; - -// writableStreamFinishInFlightWrite -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeLength = 187; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamFinishInFlightWriteCode = "(function (d){\"use strict\";const P=@getByIdDirectPrivate(d,\"inFlightWriteRequest\");@assert(P!==@undefined),P.@resolve.@call(),@putByIdDirectPrivate(d,\"inFlightWriteRequest\",@undefined)})\n"; - -// writableStreamFinishInFlightWriteWithError -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeLength = 319; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCode = "(function (c,d){\"use strict\";const f=@getByIdDirectPrivate(c,\"inFlightWriteRequest\");@assert(f!==@undefined),f.@reject.@call(@undefined,d),@putByIdDirectPrivate(c,\"inFlightWriteRequest\",@undefined);const _=@getByIdDirectPrivate(c,\"state\");@assert(_===\"writable\"||_===\"erroring\"),@writableStreamDealWithRejection(c,d)})\n"; - -// writableStreamHasOperationMarkedInFlight -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeLength = 159; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCode = "(function (n){\"use strict\";return @getByIdDirectPrivate(n,\"inFlightWriteRequest\")!==@undefined||@getByIdDirectPrivate(n,\"inFlightCloseRequest\")!==@undefined})\n"; - -// writableStreamMarkCloseRequestInFlight -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeLength = 272; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCode = "(function (d){\"use strict\";const i=@getByIdDirectPrivate(d,\"closeRequest\");@assert(@getByIdDirectPrivate(d,\"inFlightCloseRequest\")===@undefined),@assert(i!==@undefined),@putByIdDirectPrivate(d,\"inFlightCloseRequest\",i),@putByIdDirectPrivate(d,\"closeRequest\",@undefined)})\n"; - -// writableStreamMarkFirstWriteRequestInFlight -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeLength = 240; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCode = "(function (n){\"use strict\";const d=@getByIdDirectPrivate(n,\"writeRequests\");@assert(@getByIdDirectPrivate(n,\"inFlightWriteRequest\")===@undefined),@assert(d.isNotEmpty());const h=d.shift();@putByIdDirectPrivate(n,\"inFlightWriteRequest\",h)})\n"; - -// writableStreamRejectCloseAndClosedPromiseIfNeeded -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeLength = 516; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCode = "(function (_){\"use strict\";@assert(@getByIdDirectPrivate(_,\"state\")===\"errored\");const n=@getByIdDirectPrivate(_,\"storedError\"),p=@getByIdDirectPrivate(_,\"closeRequest\");if(p!==@undefined)@assert(@getByIdDirectPrivate(_,\"inFlightCloseRequest\")===@undefined),p.@reject.@call(@undefined,n),@putByIdDirectPrivate(_,\"closeRequest\",@undefined);const b=@getByIdDirectPrivate(_,\"writer\");if(b!==@undefined){const f=@getByIdDirectPrivate(b,\"closedPromise\");f.@reject.@call(@undefined,n),@markPromiseAsHandled(f.@promise)}})\n"; - -// writableStreamStartErroring -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamStartErroringCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamStartErroringCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamStartErroringCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamStartErroringCodeLength = 544; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamStartErroringCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamStartErroringCode = "(function (d,c){\"use strict\";@assert(@getByIdDirectPrivate(d,\"storedError\")===@undefined),@assert(@getByIdDirectPrivate(d,\"state\")===\"writable\");const p=@getByIdDirectPrivate(d,\"controller\");@assert(p!==@undefined),@putByIdDirectPrivate(d,\"state\",\"erroring\"),@putByIdDirectPrivate(d,\"storedError\",c);const u=@getByIdDirectPrivate(d,\"writer\");if(u!==@undefined)@writableStreamDefaultWriterEnsureReadyPromiseRejected(u,c);if(!@writableStreamHasOperationMarkedInFlight(d)&&@getByIdDirectPrivate(p,\"started\")===1)@writableStreamFinishErroring(d)})\n"; - -// writableStreamUpdateBackpressure -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamUpdateBackpressureCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamUpdateBackpressureCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamUpdateBackpressureCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamUpdateBackpressureCodeLength = 422; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamUpdateBackpressureCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamUpdateBackpressureCode = "(function (_,d){\"use strict\";@assert(@getByIdDirectPrivate(_,\"state\")===\"writable\"),@assert(!@writableStreamCloseQueuedOrInFlight(_));const n=@getByIdDirectPrivate(_,\"writer\");if(n!==@undefined&&d!==@getByIdDirectPrivate(_,\"backpressure\"))if(d)@putByIdDirectPrivate(n,\"readyPromise\",@newPromiseCapability(@Promise));else @getByIdDirectPrivate(n,\"readyPromise\").@resolve.@call();@putByIdDirectPrivate(_,\"backpressure\",d)})\n"; - -// writableStreamDefaultWriterAbort -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeLength = 130; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterAbortCode = "(function (_,d){\"use strict\";const p=@getByIdDirectPrivate(_,\"stream\");return @assert(p!==@undefined),@writableStreamAbort(p,d)})\n"; - -// writableStreamDefaultWriterClose -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeLength = 126; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterCloseCode = "(function (c){\"use strict\";const d=@getByIdDirectPrivate(c,\"stream\");return @assert(d!==@undefined),@writableStreamClose(d)})\n"; - -// writableStreamDefaultWriterCloseWithErrorPropagation -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeLength = 385; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCode = "(function (c){\"use strict\";const u=@getByIdDirectPrivate(c,\"stream\");@assert(u!==@undefined);const d=@getByIdDirectPrivate(u,\"state\");if(@writableStreamCloseQueuedOrInFlight(u)||d===\"closed\")return @Promise.@resolve();if(d===\"errored\")return @Promise.@reject(@getByIdDirectPrivate(u,\"storedError\"));return @assert(d===\"writable\"||d===\"erroring\"),@writableStreamDefaultWriterClose(c)})\n"; - -// writableStreamDefaultWriterEnsureClosedPromiseRejected -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeLength = 329; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCode = "(function (_,n){\"use strict\";let g=@getByIdDirectPrivate(_,\"closedPromise\"),u=g.@promise;if((@getPromiseInternalField(u,@promiseFieldFlags)&@promiseStateMask)!==@promiseStatePending)g=@newPromiseCapability(@Promise),u=g.@promise,@putByIdDirectPrivate(_,\"closedPromise\",g);g.@reject.@call(@undefined,n),@markPromiseAsHandled(u)})\n"; - -// writableStreamDefaultWriterEnsureReadyPromiseRejected -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeLength = 327; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCode = "(function (n,k){\"use strict\";let _=@getByIdDirectPrivate(n,\"readyPromise\"),c=_.@promise;if((@getPromiseInternalField(c,@promiseFieldFlags)&@promiseStateMask)!==@promiseStatePending)_=@newPromiseCapability(@Promise),c=_.@promise,@putByIdDirectPrivate(n,\"readyPromise\",_);_.@reject.@call(@undefined,k),@markPromiseAsHandled(c)})\n"; - -// writableStreamDefaultWriterGetDesiredSize -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeLength = 299; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCode = "(function (c){\"use strict\";const d=@getByIdDirectPrivate(c,\"stream\");@assert(d!==@undefined);const l=@getByIdDirectPrivate(d,\"state\");if(l===\"errored\"||l===\"erroring\")return null;if(l===\"closed\")return 0;return @writableStreamDefaultControllerGetDesiredSize(@getByIdDirectPrivate(d,\"controller\"))})\n"; - -// writableStreamDefaultWriterRelease -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeLength = 414; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterReleaseCode = "(function (n){\"use strict\";const c=@getByIdDirectPrivate(n,\"stream\");@assert(c!==@undefined),@assert(@getByIdDirectPrivate(c,\"writer\")===n);const d=@makeTypeError(\"writableStreamDefaultWriterRelease\");@writableStreamDefaultWriterEnsureReadyPromiseRejected(n,d),@writableStreamDefaultWriterEnsureClosedPromiseRejected(n,d),@putByIdDirectPrivate(c,\"writer\",@undefined),@putByIdDirectPrivate(n,\"stream\",@undefined)})\n"; - -// writableStreamDefaultWriterWrite -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeLength = 919; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterWriteCode = "(function (d,I){\"use strict\";const _=@getByIdDirectPrivate(d,\"stream\");@assert(_!==@undefined);const b=@getByIdDirectPrivate(_,\"controller\");@assert(b!==@undefined);const f=@writableStreamDefaultControllerGetChunkSize(b,I);if(_!==@getByIdDirectPrivate(d,\"stream\"))return @Promise.@reject(@makeTypeError(\"writer is not stream's writer\"));const g=@getByIdDirectPrivate(_,\"state\");if(g===\"errored\")return @Promise.@reject(@getByIdDirectPrivate(_,\"storedError\"));if(@writableStreamCloseQueuedOrInFlight(_)||g===\"closed\")return @Promise.@reject(@makeTypeError(\"stream is closing or closed\"));if(@writableStreamCloseQueuedOrInFlight(_)||g===\"closed\")return @Promise.@reject(@makeTypeError(\"stream is closing or closed\"));if(g===\"erroring\")return @Promise.@reject(@getByIdDirectPrivate(_,\"storedError\"));@assert(g===\"writable\");const j=@writableStreamAddWriteRequest(_);return @writableStreamDefaultControllerWrite(b,I,f),j})\n"; - -// setUpWritableStreamDefaultController -const JSC::ConstructAbility s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeLength = 700; -static const JSC::Intrinsic s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsSetUpWritableStreamDefaultControllerCode = "(function (_,d,p,B,f,j,q,u){\"use strict\";@assert(@isWritableStream(_)),@assert(@getByIdDirectPrivate(_,\"controller\")===@undefined),@putByIdDirectPrivate(d,\"stream\",_),@putByIdDirectPrivate(_,\"controller\",d),@resetQueue(@getByIdDirectPrivate(d,\"queue\")),@putByIdDirectPrivate(d,\"started\",-1),@putByIdDirectPrivate(d,\"startAlgorithm\",p),@putByIdDirectPrivate(d,\"strategySizeAlgorithm\",u),@putByIdDirectPrivate(d,\"strategyHWM\",q),@putByIdDirectPrivate(d,\"writeAlgorithm\",B),@putByIdDirectPrivate(d,\"closeAlgorithm\",f),@putByIdDirectPrivate(d,\"abortAlgorithm\",j);const v=@writableStreamDefaultControllerGetBackpressure(d);@writableStreamUpdateBackpressure(_,v),@writableStreamDefaultControllerStart(d)})\n"; - -// writableStreamDefaultControllerStart -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerStartCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerStartCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerStartCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerStartCodeLength = 647; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerStartCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerStartCode = "(function (_){\"use strict\";if(@getByIdDirectPrivate(_,\"started\")!==-1)return;@putByIdDirectPrivate(_,\"started\",0);const d=@getByIdDirectPrivate(_,\"startAlgorithm\");@putByIdDirectPrivate(_,\"startAlgorithm\",@undefined);const b=@getByIdDirectPrivate(_,\"stream\");return @Promise.@resolve(d.@call()).@then(()=>{const y=@getByIdDirectPrivate(b,\"state\");@assert(y===\"writable\"||y===\"erroring\"),@putByIdDirectPrivate(_,\"started\",1),@writableStreamDefaultControllerAdvanceQueueIfNeeded(_)},(y)=>{const P=@getByIdDirectPrivate(b,\"state\");@assert(P===\"writable\"||P===\"erroring\"),@putByIdDirectPrivate(_,\"started\",1),@writableStreamDealWithRejection(b,y)})})\n"; - -// setUpWritableStreamDefaultControllerFromUnderlyingSink -const JSC::ConstructAbility s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeLength = 573; -static const JSC::Intrinsic s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCode = "(function (_,p,f,I,j){\"use strict\";const q=new @WritableStreamDefaultController;let v=()=>{},x=()=>{return @Promise.@resolve()},B=()=>{return @Promise.@resolve()},C=()=>{return @Promise.@resolve()};if(\"start\"in f){const E=f[\"start\"];v=()=>@promiseInvokeOrNoopMethodNoCatch(p,E,[q])}if(\"write\"in f){const E=f[\"write\"];x=(F)=>@promiseInvokeOrNoopMethod(p,E,[F,q])}if(\"close\"in f){const E=f[\"close\"];B=()=>@promiseInvokeOrNoopMethod(p,E,[])}if(\"abort\"in f){const E=f[\"abort\"];C=(F)=>@promiseInvokeOrNoopMethod(p,E,[F])}@setUpWritableStreamDefaultController(_,q,v,x,B,C,I,j)})\n"; - -// writableStreamDefaultControllerAdvanceQueueIfNeeded -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeLength = 582; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCode = "(function (i){\"use strict\";const d=@getByIdDirectPrivate(i,\"stream\");if(@getByIdDirectPrivate(i,\"started\")!==1)return;if(@assert(d!==@undefined),@getByIdDirectPrivate(d,\"inFlightWriteRequest\")!==@undefined)return;const f=@getByIdDirectPrivate(d,\"state\");if(@assert(f!==\"closed\"||f!==\"errored\"),f===\"erroring\"){@writableStreamFinishErroring(d);return}const g=@getByIdDirectPrivate(i,\"queue\");if(g.content\?.isEmpty()\?\?!1)return;const y=@peekQueueValue(g);if(y===@isCloseSentinel)@writableStreamDefaultControllerProcessClose(i);else @writableStreamDefaultControllerProcessWrite(i,y)})\n"; - -// isCloseSentinel -const JSC::ConstructAbility s_writableStreamInternalsIsCloseSentinelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsIsCloseSentinelCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsIsCloseSentinelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsIsCloseSentinelCodeLength = 29; -static const JSC::Intrinsic s_writableStreamInternalsIsCloseSentinelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsIsCloseSentinelCode = "(function (){\"use strict\";})\n"; - -// writableStreamDefaultControllerClearAlgorithms -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeLength = 248; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCode = "(function (i){\"use strict\";@putByIdDirectPrivate(i,\"writeAlgorithm\",@undefined),@putByIdDirectPrivate(i,\"closeAlgorithm\",@undefined),@putByIdDirectPrivate(i,\"abortAlgorithm\",@undefined),@putByIdDirectPrivate(i,\"strategySizeAlgorithm\",@undefined)})\n"; - -// writableStreamDefaultControllerClose -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeLength = 160; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerCloseCode = "(function (d){\"use strict\";@enqueueValueWithSize(@getByIdDirectPrivate(d,\"queue\"),@isCloseSentinel,0),@writableStreamDefaultControllerAdvanceQueueIfNeeded(d)})\n"; - -// writableStreamDefaultControllerError -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeLength = 237; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerErrorCode = "(function (_,b){\"use strict\";const d=@getByIdDirectPrivate(_,\"stream\");@assert(d!==@undefined),@assert(@getByIdDirectPrivate(d,\"state\")===\"writable\"),@writableStreamDefaultControllerClearAlgorithms(_),@writableStreamStartErroring(d,b)})\n"; - -// writableStreamDefaultControllerErrorIfNeeded -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeLength = 165; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCode = "(function (_,a){\"use strict\";const d=@getByIdDirectPrivate(_,\"stream\");if(@getByIdDirectPrivate(d,\"state\")===\"writable\")@writableStreamDefaultControllerError(_,a)})\n"; - -// writableStreamDefaultControllerGetBackpressure -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeLength = 89; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCode = "(function (_){\"use strict\";return @writableStreamDefaultControllerGetDesiredSize(_)<=0})\n"; - -// writableStreamDefaultControllerGetChunkSize -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeLength = 181; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCode = "(function (a,d){\"use strict\";try{return @getByIdDirectPrivate(a,\"strategySizeAlgorithm\").@call(@undefined,d)}catch(i){return @writableStreamDefaultControllerErrorIfNeeded(a,i),1}})\n"; - -// writableStreamDefaultControllerGetDesiredSize -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeLength = 113; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCode = "(function (q){\"use strict\";return @getByIdDirectPrivate(q,\"strategyHWM\")-@getByIdDirectPrivate(q,\"queue\").size})\n"; - -// writableStreamDefaultControllerProcessClose -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeLength = 441; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCode = "(function (_){\"use strict\";const d=@getByIdDirectPrivate(_,\"stream\");@writableStreamMarkCloseRequestInFlight(d),@dequeueValue(@getByIdDirectPrivate(_,\"queue\")),@assert(@getByIdDirectPrivate(_,\"queue\").content\?.isEmpty());const h=@getByIdDirectPrivate(_,\"closeAlgorithm\").@call();@writableStreamDefaultControllerClearAlgorithms(_),h.@then(()=>{@writableStreamFinishInFlightClose(d)},(i)=>{@writableStreamFinishInFlightCloseWithError(d,i)})})\n"; - -// writableStreamDefaultControllerProcessWrite -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeLength = 734; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCode = "(function (i,_){\"use strict\";const W=@getByIdDirectPrivate(i,\"stream\");@writableStreamMarkFirstWriteRequestInFlight(W),@getByIdDirectPrivate(i,\"writeAlgorithm\").@call(@undefined,_).@then(()=>{@writableStreamFinishInFlightWrite(W);const f=@getByIdDirectPrivate(W,\"state\");if(@assert(f===\"writable\"||f===\"erroring\"),@dequeueValue(@getByIdDirectPrivate(i,\"queue\")),!@writableStreamCloseQueuedOrInFlight(W)&&f===\"writable\"){const g=@writableStreamDefaultControllerGetBackpressure(i);@writableStreamUpdateBackpressure(W,g)}@writableStreamDefaultControllerAdvanceQueueIfNeeded(i)},(f)=>{if(@getByIdDirectPrivate(W,\"state\")===\"writable\")@writableStreamDefaultControllerClearAlgorithms(i);@writableStreamFinishInFlightWriteWithError(W,f)})})\n"; - -// writableStreamDefaultControllerWrite -const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeLength = 450; -static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerWriteCode = "(function (C,P,d){\"use strict\";try{@enqueueValueWithSize(@getByIdDirectPrivate(C,\"queue\"),P,d);const f=@getByIdDirectPrivate(C,\"stream\"),g=@getByIdDirectPrivate(f,\"state\");if(!@writableStreamCloseQueuedOrInFlight(f)&&g===\"writable\"){const i=@writableStreamDefaultControllerGetBackpressure(C);@writableStreamUpdateBackpressure(f,i)}@writableStreamDefaultControllerAdvanceQueueIfNeeded(C)}catch(f){@writableStreamDefaultControllerErrorIfNeeded(C,f)}})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().writableStreamInternalsBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().writableStreamInternalsBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* TransformStreamInternals.ts */ -// isTransformStream -const JSC::ConstructAbility s_transformStreamInternalsIsTransformStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsIsTransformStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsIsTransformStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsIsTransformStreamCodeLength = 88; -static const JSC::Intrinsic s_transformStreamInternalsIsTransformStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsIsTransformStreamCode = "(function (d){\"use strict\";return @isObject(d)&&!!@getByIdDirectPrivate(d,\"readable\")})\n"; - -// isTransformStreamDefaultController -const JSC::ConstructAbility s_transformStreamInternalsIsTransformStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsIsTransformStreamDefaultControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsIsTransformStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsIsTransformStreamDefaultControllerCodeLength = 98; -static const JSC::Intrinsic s_transformStreamInternalsIsTransformStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsIsTransformStreamDefaultControllerCode = "(function (i){\"use strict\";return @isObject(i)&&!!@getByIdDirectPrivate(i,\"transformAlgorithm\")})\n"; - -// createTransformStream -const JSC::ConstructAbility s_transformStreamInternalsCreateTransformStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsCreateTransformStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsCreateTransformStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsCreateTransformStreamCodeLength = 513; -static const JSC::Intrinsic s_transformStreamInternalsCreateTransformStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsCreateTransformStreamCode = "(function (c,I,_,j,q,u,v){\"use strict\";if(j===@undefined)j=1;if(q===@undefined)q=()=>1;if(u===@undefined)u=0;if(v===@undefined)v=()=>1;@assert(j>=0),@assert(u>=0);const x={};@putByIdDirectPrivate(x,\"TransformStream\",!0);const B=new @TransformStream(x),D=@newPromiseCapability(@Promise);@initializeTransformStream(B,D.@promise,j,q,u,v);const E=new @TransformStreamDefaultController;return @setUpTransformStreamDefaultController(B,E,I,_),c().@then(()=>{D.@resolve.@call()},(F)=>{D.@reject.@call(@undefined,F)}),B})\n"; - -// initializeTransformStream -const JSC::ConstructAbility s_transformStreamInternalsInitializeTransformStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsInitializeTransformStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsInitializeTransformStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsInitializeTransformStreamCodeLength = 1015; -static const JSC::Intrinsic s_transformStreamInternalsInitializeTransformStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsInitializeTransformStreamCode = "(function (_,B,I,f,j,q){\"use strict\";const v=()=>{return B},x=(N)=>{return @transformStreamDefaultSinkWriteAlgorithm(_,N)},C=(N)=>{return @transformStreamDefaultSinkAbortAlgorithm(_,N)},D=()=>{return @transformStreamDefaultSinkCloseAlgorithm(_)},E=@createWritableStream(v,x,D,C,I,f),F=()=>{return @transformStreamDefaultSourcePullAlgorithm(_)},G=(N)=>{return @transformStreamErrorWritableAndUnblockWrite(_,N),@Promise.@resolve()},J={};@putByIdDirectPrivate(J,\"start\",v),@putByIdDirectPrivate(J,\"pull\",F),@putByIdDirectPrivate(J,\"cancel\",G);const K={};@putByIdDirectPrivate(K,\"size\",q),@putByIdDirectPrivate(K,\"highWaterMark\",j);const L=new @ReadableStream(J,K);@putByIdDirectPrivate(_,\"writable\",E),@putByIdDirectPrivate(_,\"internalWritable\",@getInternalWritableStream(E)),@putByIdDirectPrivate(_,\"readable\",L),@putByIdDirectPrivate(_,\"backpressure\",@undefined),@putByIdDirectPrivate(_,\"backpressureChangePromise\",@undefined),@transformStreamSetBackpressure(_,!0),@putByIdDirectPrivate(_,\"controller\",@undefined)})\n"; - -// transformStreamError -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamErrorCodeLength = 222; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamErrorCode = "(function (i,y){\"use strict\";const c=@getByIdDirectPrivate(i,\"readable\"),f=@getByIdDirectPrivate(c,\"readableStreamController\");@readableStreamDefaultControllerError(f,y),@transformStreamErrorWritableAndUnblockWrite(i,y)})\n"; - -// transformStreamErrorWritableAndUnblockWrite -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeLength = 339; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCode = "(function (c,B){\"use strict\";@transformStreamDefaultControllerClearAlgorithms(@getByIdDirectPrivate(c,\"controller\"));const S=@getByIdDirectPrivate(c,\"internalWritable\");if(@writableStreamDefaultControllerErrorIfNeeded(@getByIdDirectPrivate(S,\"controller\"),B),@getByIdDirectPrivate(c,\"backpressure\"))@transformStreamSetBackpressure(c,!1)})\n"; - -// transformStreamSetBackpressure -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamSetBackpressureCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamSetBackpressureCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamSetBackpressureCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamSetBackpressureCodeLength = 309; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamSetBackpressureCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamSetBackpressureCode = "(function (_,y){\"use strict\";@assert(@getByIdDirectPrivate(_,\"backpressure\")!==y);const d=@getByIdDirectPrivate(_,\"backpressureChangePromise\");if(d!==@undefined)d.@resolve.@call();@putByIdDirectPrivate(_,\"backpressureChangePromise\",@newPromiseCapability(@Promise)),@putByIdDirectPrivate(_,\"backpressure\",y)})\n"; - -// setUpTransformStreamDefaultController -const JSC::ConstructAbility s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeLength = 294; -static const JSC::Intrinsic s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsSetUpTransformStreamDefaultControllerCode = "(function (_,p,d,b){\"use strict\";@assert(@isTransformStream(_)),@assert(@getByIdDirectPrivate(_,\"controller\")===@undefined),@putByIdDirectPrivate(p,\"stream\",_),@putByIdDirectPrivate(_,\"controller\",p),@putByIdDirectPrivate(p,\"transformAlgorithm\",d),@putByIdDirectPrivate(p,\"flushAlgorithm\",b)})\n"; - -// setUpTransformStreamDefaultControllerFromTransformer -const JSC::ConstructAbility s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeLength = 449; -static const JSC::Intrinsic s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCode = "(function (_,b,d){\"use strict\";const j=new @TransformStreamDefaultController;let p=(v)=>{try{@transformStreamDefaultControllerEnqueue(j,v)}catch(w){return @Promise.@reject(w)}return @Promise.@resolve()},q=()=>{return @Promise.@resolve()};if(\"transform\"in d)p=(v)=>{return @promiseInvokeOrNoopMethod(b,d[\"transform\"],[v,j])};if(\"flush\"in d)q=()=>{return @promiseInvokeOrNoopMethod(b,d[\"flush\"],[j])};@setUpTransformStreamDefaultController(_,j,p,q)})\n"; - -// transformStreamDefaultControllerClearAlgorithms -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeLength = 131; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCode = "(function (v){\"use strict\";@putByIdDirectPrivate(v,\"transformAlgorithm\",!0),@putByIdDirectPrivate(v,\"flushAlgorithm\",@undefined)})\n"; - -// transformStreamDefaultControllerEnqueue -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeLength = 622; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCode = "(function (_,g){\"use strict\";const E=@getByIdDirectPrivate(_,\"stream\"),S=@getByIdDirectPrivate(E,\"readable\"),f=@getByIdDirectPrivate(S,\"readableStreamController\");if(@assert(f!==@undefined),!@readableStreamDefaultControllerCanCloseOrEnqueue(f))@throwTypeError(\"TransformStream.readable cannot close or enqueue\");try{@readableStreamDefaultControllerEnqueue(f,g)}catch(j){throw @transformStreamErrorWritableAndUnblockWrite(E,j),@getByIdDirectPrivate(S,\"storedError\")}const i=!@readableStreamDefaultControllerShouldCallPull(f);if(i!==@getByIdDirectPrivate(E,\"backpressure\"))@assert(i),@transformStreamSetBackpressure(E,!0)})\n"; - -// transformStreamDefaultControllerError -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeLength = 90; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultControllerErrorCode = "(function (f,B){\"use strict\";@transformStreamError(@getByIdDirectPrivate(f,\"stream\"),B)})\n"; - -// transformStreamDefaultControllerPerformTransform -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeLength = 277; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCode = "(function (_,d){\"use strict\";const f=@newPromiseCapability(@Promise);return @getByIdDirectPrivate(_,\"transformAlgorithm\").@call(@undefined,d).@then(()=>{f.@resolve()},(j)=>{@transformStreamError(@getByIdDirectPrivate(_,\"stream\"),j),f.@reject.@call(@undefined,j)}),f.@promise})\n"; - -// transformStreamDefaultControllerTerminate -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeLength = 367; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultControllerTerminateCode = "(function (i){\"use strict\";const S=@getByIdDirectPrivate(i,\"stream\"),f=@getByIdDirectPrivate(S,\"readable\"),g=@getByIdDirectPrivate(f,\"readableStreamController\");if(@readableStreamDefaultControllerCanCloseOrEnqueue(g))@readableStreamDefaultControllerClose(g);const h=@makeTypeError(\"the stream has been terminated\");@transformStreamErrorWritableAndUnblockWrite(S,h)})\n"; - -// transformStreamDefaultSinkWriteAlgorithm -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeLength = 764; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCode = "(function (_,d){\"use strict\";const f=@getByIdDirectPrivate(_,\"internalWritable\");@assert(@getByIdDirectPrivate(f,\"state\")===\"writable\");const j=@getByIdDirectPrivate(_,\"controller\");if(@getByIdDirectPrivate(_,\"backpressure\")){const q=@newPromiseCapability(@Promise),v=@getByIdDirectPrivate(_,\"backpressureChangePromise\");return @assert(v!==@undefined),v.@promise.@then(()=>{const x=@getByIdDirectPrivate(f,\"state\");if(x===\"erroring\"){q.@reject.@call(@undefined,@getByIdDirectPrivate(f,\"storedError\"));return}@assert(x===\"writable\"),@transformStreamDefaultControllerPerformTransform(j,d).@then(()=>{q.@resolve()},(z)=>{q.@reject.@call(@undefined,z)})},(x)=>{q.@reject.@call(@undefined,x)}),q.@promise}return @transformStreamDefaultControllerPerformTransform(j,d)})\n"; - -// transformStreamDefaultSinkAbortAlgorithm -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeLength = 85; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCode = "(function (l,c){\"use strict\";return @transformStreamError(l,c),@Promise.@resolve()})\n"; - -// transformStreamDefaultSinkCloseAlgorithm -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeLength = 789; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCode = "(function (_){\"use strict\";const j=@getByIdDirectPrivate(_,\"readable\"),k=@getByIdDirectPrivate(_,\"controller\"),q=@getByIdDirectPrivate(j,\"readableStreamController\"),v=@getByIdDirectPrivate(k,\"flushAlgorithm\");@assert(v!==@undefined);const w=@getByIdDirectPrivate(k,\"flushAlgorithm\").@call();@transformStreamDefaultControllerClearAlgorithms(k);const x=@newPromiseCapability(@Promise);return w.@then(()=>{if(@getByIdDirectPrivate(j,\"state\")===@streamErrored){x.@reject.@call(@undefined,@getByIdDirectPrivate(j,\"storedError\"));return}if(@readableStreamDefaultControllerCanCloseOrEnqueue(q))@readableStreamDefaultControllerClose(q);x.@resolve()},(z)=>{@transformStreamError(@getByIdDirectPrivate(k,\"stream\"),z),x.@reject.@call(@undefined,@getByIdDirectPrivate(j,\"storedError\"))}),x.@promise})\n"; - -// transformStreamDefaultSourcePullAlgorithm -const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeLength = 260; -static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCode = "(function (_){\"use strict\";return @assert(@getByIdDirectPrivate(_,\"backpressure\")),@assert(@getByIdDirectPrivate(_,\"backpressureChangePromise\")!==@undefined),@transformStreamSetBackpressure(_,!1),@getByIdDirectPrivate(_,\"backpressureChangePromise\").@promise})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().transformStreamInternalsBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().transformStreamInternalsBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ProcessObjectInternals.ts */ -// binding -const JSC::ConstructAbility s_processObjectInternalsBindingCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_processObjectInternalsBindingCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_processObjectInternalsBindingCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_processObjectInternalsBindingCodeLength = 473; -static const JSC::Intrinsic s_processObjectInternalsBindingCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_processObjectInternalsBindingCode = "(function (f){\"use strict\";if(f!==\"constants\")@throwTypeError(\"process.binding() is not supported in Bun. If that breaks something, please file an issue and include a reproducible code sample.\");var r=globalThis.Symbol.for(\"process.bindings.constants\"),p=globalThis[r];if(!p){const{constants:u}=globalThis[globalThis.Symbol.for(\"Bun.lazy\")](\"createImportMeta\",\"node:process\").require(\"node:fs\");p={fs:u,zlib:{},crypto:{},os:@Bun._Os().constants},globalThis[r]=p}return p})\n"; - -// getStdioWriteStream -const JSC::ConstructAbility s_processObjectInternalsGetStdioWriteStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_processObjectInternalsGetStdioWriteStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_processObjectInternalsGetStdioWriteStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_processObjectInternalsGetStdioWriteStreamCodeLength = 4250; -static const JSC::Intrinsic s_processObjectInternalsGetStdioWriteStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_processObjectInternalsGetStdioWriteStreamCode = "(function (j,z){\"use strict\";var B={path:\"node:process\",require:z},G=(N)=>B.require(N);function H(N){var{Duplex:O,eos:Q,destroy:U}=G(\"node:stream\"),V=class X extends O{#$;#j;#z=!0;#B=!0;#G;#H;#J;#K;#L;#M;get isTTY(){return this.#M\?\?=G(\"node:tty\").isatty(N)}get fd(){return N}constructor(Z){super({readable:!0,writable:!0});this.#G=`/dev/fd/${Z}`}#N(Z){const Y=this.#H;if(this.#H=null,Y)Y(Z);else if(Z)this.destroy(Z);else if(!this.#z&&!this.#B)this.destroy()}_destroy(Z,Y){if(!Z&&this.#H!==null){var P=class A extends Error{code;name;constructor(T=\"The operation was aborted\",x=void 0){if(x!==void 0&&typeof x!==\"object\")throw new Error(`Invalid AbortError options:\\n\\n${JSON.stringify(x,null,2)}`);super(T,x);this.code=\"ABORT_ERR\",this.name=\"AbortError\"}};Z=new P}if(this.#J=null,this.#K=null,this.#H===null)Y(Z);else{if(this.#H=Y,this.#$)U(this.#$,Z);if(this.#j)U(this.#j,Z)}}_write(Z,Y,P){if(!this.#$){var{createWriteStream:A}=G(\"node:fs\"),T=this.#$=A(this.#G);T.on(\"finish\",()=>{if(this.#K){const x=this.#K;this.#K=null,x()}}),T.on(\"drain\",()=>{if(this.#J){const x=this.#J;this.#J=null,x()}}),Q(T,(x)=>{if(this.#B=!1,x)U(T,x);this.#N(x)})}if(T.write(Z,Y))P();else this.#J=P}_final(Z){this.#$&&this.#$.end(),this.#K=Z}#O(){var{createReadStream:Z}=G(\"node:fs\"),Y=this.#j=Z(this.#G);return Y.on(\"readable\",()=>{if(this.#L){const P=this.#L;this.#L=null,P()}else this.read()}),Y.on(\"end\",()=>{this.push(null)}),Q(Y,(P)=>{if(this.#z=!1,P)U(Y,P);this.#N(P)}),Y}_read(){var Z=this.#j;if(!Z)Z=this.#O();while(!0){const Y=Z.read();if(Y===null||!this.push(Y))return}}};return new V(N)}var{EventEmitter:J}=G(\"node:events\");function K(N){if(!N)return!0;var O=N.toLowerCase();return O===\"utf8\"||O===\"utf-8\"||O===\"buffer\"||O===\"binary\"}var L,M=class N extends J{#$;#j;#z;#B;bytesWritten=0;setDefaultEncoding(O){if(this.#j||!K(O))return this.#J(),this.#j.setDefaultEncoding(O)}#G(){switch(this.#$){case 1:{var O=@Bun.stdout.writer({highWaterMark:0});return O.unref(),O}case 2:{var O=@Bun.stderr.writer({highWaterMark:0});return O.unref(),O}default:throw new Error(\"Unsupported writer\")}}#H(){return this.#z\?\?=this.#G()}constructor(O){super();this.#$=O}get fd(){return this.#$}get isTTY(){return this.#B\?\?=G(\"node:tty\").isatty(this.#$)}cursorTo(O,Q,U){return(L\?\?=G(\"readline\")).cursorTo(this,O,Q,U)}moveCursor(O,Q,U){return(L\?\?=G(\"readline\")).moveCursor(this,O,Q,U)}clearLine(O,Q){return(L\?\?=G(\"readline\")).clearLine(this,O,Q)}clearScreenDown(O){return(L\?\?=G(\"readline\")).clearScreenDown(this,O)}ref(){this.#H().ref()}unref(){this.#H().unref()}on(O,Q){if(O===\"close\"||O===\"finish\")return this.#J(),this.#j.on(O,Q);if(O===\"drain\")return super.on(\"drain\",Q);if(O===\"error\")return super.on(\"error\",Q);return super.on(O,Q)}get _writableState(){return this.#J(),this.#j._writableState}get _readableState(){return this.#J(),this.#j._readableState}pipe(O){return this.#J(),this.#j.pipe(O)}unpipe(O){return this.#J(),this.#j.unpipe(O)}#J(){if(this.#j)return;this.#j=H(this.#$);const O=this.eventNames();for(let Q of O)this.#j.on(Q,(...U)=>{this.emit(Q,...U)})}#K(O){var Q=this.#H();const U=Q.write(O);this.bytesWritten+=U;const V=Q.flush(!1);return!!(U||V)}#L(O,Q){if(!K(Q))return this.#J(),this.#j.write(O,Q);return this.#K(O)}#M(O,Q){if(Q)this.emit(\"error\",Q);try{O(Q\?Q:null)}catch(U){this.emit(\"error\",U)}}#N(O,Q,U){if(!K(Q))return this.#J(),this.#j.write(O,Q,U);var V=this.#H();const X=V.write(O),Z=V.flush(!0);if(Z\?.then)return Z.then(()=>{this.#M(U),this.emit(\"drain\")},(Y)=>this.#M(U,Y)),!1;return queueMicrotask(()=>{this.#M(U)}),!!(X||Z)}write(O,Q,U){const V=this._write(O,Q,U);if(V)this.emit(\"drain\");return V}get hasColors(){return @Bun.tty[this.#$].hasColors}_write(O,Q,U){var V=this.#j;if(V)return V.write(O,Q,U);switch(arguments.length){case 0:{var X=new Error(\"Invalid arguments\");throw X.code=\"ERR_INVALID_ARG_TYPE\",X}case 1:return this.#K(O);case 2:if(typeof Q===\"function\")return this.#N(O,\"\",Q);else if(typeof Q===\"string\")return this.#L(O,Q);default:{if(typeof Q!==\"undefined\"&&typeof Q!==\"string\"||typeof U!==\"undefined\"&&typeof U!==\"function\"){var X=new Error(\"Invalid arguments\");throw X.code=\"ERR_INVALID_ARG_TYPE\",X}if(typeof U===\"undefined\")return this.#L(O,Q);return this.#N(O,Q,U)}}}destroy(){return this}end(){return this}};return new M(j)})\n"; - -// getStdinStream -const JSC::ConstructAbility s_processObjectInternalsGetStdinStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_processObjectInternalsGetStdinStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_processObjectInternalsGetStdinStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_processObjectInternalsGetStdinStreamCodeLength = 1799; -static const JSC::Intrinsic s_processObjectInternalsGetStdinStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_processObjectInternalsGetStdinStreamCode = "(function (j,T,Y){\"use strict\";var z={path:\"node:process\",require:T},G=(M)=>z.require(M),{Duplex:H,eos:J,destroy:K}=G(\"node:stream\"),L=class M extends H{#$;#j;#T;#Y=!0;#z=!1;#G=!0;#H;#J;#K;get isTTY(){return G(\"tty\").isatty(j)}get fd(){return j}constructor(){super({readable:!0,writable:!0})}#L(N){const P=this.#J;if(this.#J=null,P)P(N);else if(N)this.destroy(N);else if(!this.#Y&&!this.#G)this.destroy()}_destroy(N,P){if(!N&&this.#J!==null){var Q=class U extends Error{constructor(V=\"The operation was aborted\",X=void 0){if(X!==void 0&&typeof X!==\"object\")throw new Error(`Invalid AbortError options:\\n\\n${JSON.stringify(X,null,2)}`);super(V,X);this.code=\"ABORT_ERR\",this.name=\"AbortError\"}};N=new Q}if(this.#J===null)P(N);else if(this.#J=P,this.#T)K(this.#T,N)}setRawMode(N){}on(N,P){if(N===\"readable\")this.ref(),this.#z=!0;return super.on(N,P)}pause(){return this.unref(),super.pause()}resume(){return this.ref(),super.resume()}ref(){this.#$\?\?=Y.stdin.stream().getReader(),this.#j\?\?=setInterval(()=>{},1<<30)}unref(){if(this.#j)clearInterval(this.#j),this.#j=null}async#M(){try{var N,P;const Q=this.#$.readMany();if(!Q\?.then)({done:N,value:P}=Q);else({done:N,value:P}=await Q);if(!N){this.push(P[0]);const U=P.length;for(let V=1;V<U;V++)this.push(P[V])}else this.push(null),this.pause(),this.#Y=!1,this.#L()}catch(Q){this.#Y=!1,this.#L(Q)}}_read(N){if(this.#z)this.unref(),this.#z=!1;this.#M()}#N(){var{createWriteStream:N}=G(\"node:fs\"),P=this.#T=N(\"/dev/fd/0\");return P.on(\"finish\",()=>{if(this.#H){const Q=this.#H;this.#H=null,Q()}}),P.on(\"drain\",()=>{if(this.#K){const Q=this.#K;this.#K=null,Q()}}),J(P,(Q)=>{if(this.#G=!1,Q)K(P,Q);this.#L(Q)}),P}_write(N,P,Q){var U=this.#T;if(!U)U=this.#N();if(U.write(N,P))Q();else this.#K=Q}_final(N){this.#T.end(),this.#H=(...P)=>N(...P)}};return new L})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().processObjectInternalsBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().processObjectInternalsBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* TransformStream.ts */ -// initializeTransformStream -const JSC::ConstructAbility s_transformStreamInitializeTransformStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamInitializeTransformStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamInitializeTransformStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamInitializeTransformStreamCodeLength = 1334; -static const JSC::Intrinsic s_transformStreamInitializeTransformStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInitializeTransformStreamCode = "(function (){\"use strict\";let O=arguments[0];if(@isObject(O)&&@getByIdDirectPrivate(O,\"TransformStream\"))return this;let T=arguments[1],_=arguments[2];if(O===@undefined)O=null;if(_===@undefined)_={};if(T===@undefined)T={};let j={};if(O!==null){if(\"start\"in O){if(j[\"start\"]=O[\"start\"],typeof j[\"start\"]!==\"function\")@throwTypeError(\"transformer.start should be a function\")}if(\"transform\"in O){if(j[\"transform\"]=O[\"transform\"],typeof j[\"transform\"]!==\"function\")@throwTypeError(\"transformer.transform should be a function\")}if(\"flush\"in O){if(j[\"flush\"]=O[\"flush\"],typeof j[\"flush\"]!==\"function\")@throwTypeError(\"transformer.flush should be a function\")}if(\"readableType\"in O)@throwRangeError(\"TransformStream transformer has a readableType\");if(\"writableType\"in O)@throwRangeError(\"TransformStream transformer has a writableType\")}const q=@extractHighWaterMark(_,0),u=@extractSizeAlgorithm(_),v=@extractHighWaterMark(T,1),x=@extractSizeAlgorithm(T),B=@newPromiseCapability(@Promise);if(@initializeTransformStream(this,B.@promise,v,x,q,u),@setUpTransformStreamDefaultControllerFromTransformer(this,O,j),(\"start\"in j)){const E=@getByIdDirectPrivate(this,\"controller\");(()=>@promiseInvokeOrNoopMethodNoCatch(O,j[\"start\"],[E]))().@then(()=>{B.@resolve.@call()},(G)=>{B.@reject.@call(@undefined,G)})}else B.@resolve.@call();return this})\n"; - -// readable -const JSC::ConstructAbility s_transformStreamReadableCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamReadableCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamReadableCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamReadableCodeLength = 158; -static const JSC::Intrinsic s_transformStreamReadableCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamReadableCode = "(function (){\"use strict\";if(!@isTransformStream(this))throw @makeThisTypeError(\"TransformStream\",\"readable\");return @getByIdDirectPrivate(this,\"readable\")})\n"; - -// writable -const JSC::ConstructAbility s_transformStreamWritableCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamWritableCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamWritableCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamWritableCodeLength = 158; -static const JSC::Intrinsic s_transformStreamWritableCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamWritableCode = "(function (){\"use strict\";if(!@isTransformStream(this))throw @makeThisTypeError(\"TransformStream\",\"writable\");return @getByIdDirectPrivate(this,\"writable\")})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().transformStreamBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().transformStreamBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* JSBufferPrototype.ts */ -// setBigUint64 -const JSC::ConstructAbility s_jsBufferPrototypeSetBigUint64CodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeSetBigUint64CodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeSetBigUint64CodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeSetBigUint64CodeLength = 136; -static const JSC::Intrinsic s_jsBufferPrototypeSetBigUint64CodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeSetBigUint64Code = "(function (i,r,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigUint64(i,r,c)})\n"; - -// readInt8 -const JSC::ConstructAbility s_jsBufferPrototypeReadInt8CodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadInt8CodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt8CodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadInt8CodeLength = 123; -static const JSC::Intrinsic s_jsBufferPrototypeReadInt8CodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadInt8Code = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getInt8(r)})\n"; - -// readUInt8 -const JSC::ConstructAbility s_jsBufferPrototypeReadUInt8CodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadUInt8CodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt8CodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadUInt8CodeLength = 124; -static const JSC::Intrinsic s_jsBufferPrototypeReadUInt8CodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadUInt8Code = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getUint8(r)})\n"; - -// readInt16LE -const JSC::ConstructAbility s_jsBufferPrototypeReadInt16LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadInt16LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt16LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadInt16LECodeLength = 127; -static const JSC::Intrinsic s_jsBufferPrototypeReadInt16LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadInt16LECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getInt16(r,!0)})\n"; - -// readInt16BE -const JSC::ConstructAbility s_jsBufferPrototypeReadInt16BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadInt16BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt16BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadInt16BECodeLength = 127; -static const JSC::Intrinsic s_jsBufferPrototypeReadInt16BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadInt16BECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getInt16(r,!1)})\n"; - -// readUInt16LE -const JSC::ConstructAbility s_jsBufferPrototypeReadUInt16LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadUInt16LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt16LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadUInt16LECodeLength = 128; -static const JSC::Intrinsic s_jsBufferPrototypeReadUInt16LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadUInt16LECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getUint16(r,!0)})\n"; - -// readUInt16BE -const JSC::ConstructAbility s_jsBufferPrototypeReadUInt16BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadUInt16BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt16BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadUInt16BECodeLength = 128; -static const JSC::Intrinsic s_jsBufferPrototypeReadUInt16BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadUInt16BECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getUint16(r,!1)})\n"; - -// readInt32LE -const JSC::ConstructAbility s_jsBufferPrototypeReadInt32LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadInt32LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt32LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadInt32LECodeLength = 127; -static const JSC::Intrinsic s_jsBufferPrototypeReadInt32LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadInt32LECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getInt32(r,!0)})\n"; - -// readInt32BE -const JSC::ConstructAbility s_jsBufferPrototypeReadInt32BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadInt32BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt32BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadInt32BECodeLength = 127; -static const JSC::Intrinsic s_jsBufferPrototypeReadInt32BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadInt32BECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getInt32(r,!1)})\n"; - -// readUInt32LE -const JSC::ConstructAbility s_jsBufferPrototypeReadUInt32LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadUInt32LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt32LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadUInt32LECodeLength = 128; -static const JSC::Intrinsic s_jsBufferPrototypeReadUInt32LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadUInt32LECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getUint32(r,!0)})\n"; - -// readUInt32BE -const JSC::ConstructAbility s_jsBufferPrototypeReadUInt32BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadUInt32BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt32BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadUInt32BECodeLength = 128; -static const JSC::Intrinsic s_jsBufferPrototypeReadUInt32BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadUInt32BECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getUint32(r,!1)})\n"; - -// readIntLE -const JSC::ConstructAbility s_jsBufferPrototypeReadIntLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadIntLECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadIntLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadIntLECodeLength = 528; -static const JSC::Intrinsic s_jsBufferPrototypeReadIntLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadIntLECode = "(function (c,r){\"use strict\";const u=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(r){case 1:return u.getInt8(c);case 2:return u.getInt16(c,!0);case 3:{const _=u.getUint16(c,!0)+u.getUint8(c+2)*65536;return _|(_&8388608)*510}case 4:return u.getInt32(c,!0);case 5:{const _=u.getUint8(c+4);return(_|(_&128)*33554430)*4294967296+u.getUint32(c,!0)}case 6:{const _=u.getUint16(c+4,!0);return(_|(_&32768)*131070)*4294967296+u.getUint32(c,!0)}}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; - -// readIntBE -const JSC::ConstructAbility s_jsBufferPrototypeReadIntBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadIntBECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadIntBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadIntBECodeLength = 528; -static const JSC::Intrinsic s_jsBufferPrototypeReadIntBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadIntBECode = "(function (u,_){\"use strict\";const d=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(_){case 1:return d.getInt8(u);case 2:return d.getInt16(u,!1);case 3:{const r=d.getUint16(u+1,!1)+d.getUint8(u)*65536;return r|(r&8388608)*510}case 4:return d.getInt32(u,!1);case 5:{const r=d.getUint8(u);return(r|(r&128)*33554430)*4294967296+d.getUint32(u+1,!1)}case 6:{const r=d.getUint16(u,!1);return(r|(r&32768)*131070)*4294967296+d.getUint32(u+2,!1)}}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; - -// readUIntLE -const JSC::ConstructAbility s_jsBufferPrototypeReadUIntLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadUIntLECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadUIntLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadUIntLECodeLength = 445; -static const JSC::Intrinsic s_jsBufferPrototypeReadUIntLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadUIntLECode = "(function (a,r){\"use strict\";const u=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(r){case 1:return u.getUint8(a);case 2:return u.getUint16(a,!0);case 3:return u.getUint16(a,!0)+u.getUint8(a+2)*65536;case 4:return u.getUint32(a,!0);case 5:return u.getUint8(a+4)*4294967296+u.getUint32(a,!0);case 6:return u.getUint16(a+4,!0)*4294967296+u.getUint32(a,!0)}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; - -// readUIntBE -const JSC::ConstructAbility s_jsBufferPrototypeReadUIntBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadUIntBECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadUIntBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadUIntBECodeLength = 504; -static const JSC::Intrinsic s_jsBufferPrototypeReadUIntBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadUIntBECode = "(function (_,r){\"use strict\";const u=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(r){case 1:return u.getUint8(_);case 2:return u.getUint16(_,!1);case 3:return u.getUint16(_+1,!1)+u.getUint8(_)*65536;case 4:return u.getUint32(_,!1);case 5:{const c=u.getUint8(_);return(c|(c&128)*33554430)*4294967296+u.getUint32(_+1,!1)}case 6:{const c=u.getUint16(_,!1);return(c|(c&32768)*131070)*4294967296+u.getUint32(_+2,!1)}}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; - -// readFloatLE -const JSC::ConstructAbility s_jsBufferPrototypeReadFloatLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadFloatLECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadFloatLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadFloatLECodeLength = 129; -static const JSC::Intrinsic s_jsBufferPrototypeReadFloatLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadFloatLECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getFloat32(r,!0)})\n"; - -// readFloatBE -const JSC::ConstructAbility s_jsBufferPrototypeReadFloatBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadFloatBECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadFloatBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadFloatBECodeLength = 129; -static const JSC::Intrinsic s_jsBufferPrototypeReadFloatBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadFloatBECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getFloat32(r,!1)})\n"; - -// readDoubleLE -const JSC::ConstructAbility s_jsBufferPrototypeReadDoubleLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadDoubleLECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadDoubleLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadDoubleLECodeLength = 129; -static const JSC::Intrinsic s_jsBufferPrototypeReadDoubleLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadDoubleLECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getFloat64(r,!0)})\n"; - -// readDoubleBE -const JSC::ConstructAbility s_jsBufferPrototypeReadDoubleBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadDoubleBECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadDoubleBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadDoubleBECodeLength = 129; -static const JSC::Intrinsic s_jsBufferPrototypeReadDoubleBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadDoubleBECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getFloat64(r,!1)})\n"; - -// readBigInt64LE -const JSC::ConstructAbility s_jsBufferPrototypeReadBigInt64LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadBigInt64LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadBigInt64LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadBigInt64LECodeLength = 130; -static const JSC::Intrinsic s_jsBufferPrototypeReadBigInt64LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadBigInt64LECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getBigInt64(r,!0)})\n"; - -// readBigInt64BE -const JSC::ConstructAbility s_jsBufferPrototypeReadBigInt64BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadBigInt64BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadBigInt64BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadBigInt64BECodeLength = 130; -static const JSC::Intrinsic s_jsBufferPrototypeReadBigInt64BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadBigInt64BECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getBigInt64(r,!1)})\n"; - -// readBigUInt64LE -const JSC::ConstructAbility s_jsBufferPrototypeReadBigUInt64LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadBigUInt64LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadBigUInt64LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadBigUInt64LECodeLength = 131; -static const JSC::Intrinsic s_jsBufferPrototypeReadBigUInt64LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadBigUInt64LECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getBigUint64(r,!0)})\n"; - -// readBigUInt64BE -const JSC::ConstructAbility s_jsBufferPrototypeReadBigUInt64BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeReadBigUInt64BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeReadBigUInt64BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeReadBigUInt64BECodeLength = 131; -static const JSC::Intrinsic s_jsBufferPrototypeReadBigUInt64BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadBigUInt64BECode = "(function (r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).getBigUint64(r,!1)})\n"; - -// writeInt8 -const JSC::ConstructAbility s_jsBufferPrototypeWriteInt8CodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteInt8CodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt8CodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteInt8CodeLength = 131; -static const JSC::Intrinsic s_jsBufferPrototypeWriteInt8CodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt8Code = "(function (d,h){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt8(h,d),h+1})\n"; - -// writeUInt8 -const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt8CodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt8CodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt8CodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteUInt8CodeLength = 132; -static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt8CodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt8Code = "(function (d,h){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint8(h,d),h+1})\n"; - -// writeInt16LE -const JSC::ConstructAbility s_jsBufferPrototypeWriteInt16LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteInt16LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt16LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteInt16LECodeLength = 135; -static const JSC::Intrinsic s_jsBufferPrototypeWriteInt16LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt16LECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt16(d,r,!0),d+2})\n"; - -// writeInt16BE -const JSC::ConstructAbility s_jsBufferPrototypeWriteInt16BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteInt16BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt16BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteInt16BECodeLength = 135; -static const JSC::Intrinsic s_jsBufferPrototypeWriteInt16BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt16BECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt16(d,r,!1),d+2})\n"; - -// writeUInt16LE -const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt16LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt16LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt16LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteUInt16LECodeLength = 136; -static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt16LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt16LECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint16(d,r,!0),d+2})\n"; - -// writeUInt16BE -const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt16BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt16BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt16BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteUInt16BECodeLength = 136; -static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt16BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt16BECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint16(d,r,!1),d+2})\n"; - -// writeInt32LE -const JSC::ConstructAbility s_jsBufferPrototypeWriteInt32LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteInt32LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt32LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteInt32LECodeLength = 135; -static const JSC::Intrinsic s_jsBufferPrototypeWriteInt32LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt32LECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt32(d,r,!0),d+4})\n"; - -// writeInt32BE -const JSC::ConstructAbility s_jsBufferPrototypeWriteInt32BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteInt32BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt32BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteInt32BECodeLength = 135; -static const JSC::Intrinsic s_jsBufferPrototypeWriteInt32BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt32BECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt32(d,r,!1),d+4})\n"; - -// writeUInt32LE -const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt32LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt32LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt32LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteUInt32LECodeLength = 136; -static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt32LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt32LECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint32(d,r,!0),d+4})\n"; - -// writeUInt32BE -const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt32BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt32BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt32BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteUInt32BECodeLength = 136; -static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt32BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt32BECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint32(d,r,!1),d+4})\n"; - -// writeIntLE -const JSC::ConstructAbility s_jsBufferPrototypeWriteIntLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteIntLECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteIntLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteIntLECodeLength = 573; -static const JSC::Intrinsic s_jsBufferPrototypeWriteIntLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteIntLECode = "(function (r,c,d){\"use strict\";const p=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(d){case 1:{p.setInt8(c,r);break}case 2:{p.setInt16(c,r,!0);break}case 3:{p.setUint16(c,r&65535,!0),p.setInt8(c+2,Math.floor(r*0.0000152587890625));break}case 4:{p.setInt32(c,r,!0);break}case 5:{p.setUint32(c,r|0,!0),p.setInt8(c+4,Math.floor(r*0.00000000023283064365386964));break}case 6:{p.setUint32(c,r|0,!0),p.setInt16(c+4,Math.floor(r*0.00000000023283064365386964),!0);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return c+d})\n"; - -// writeIntBE -const JSC::ConstructAbility s_jsBufferPrototypeWriteIntBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteIntBECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteIntBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteIntBECodeLength = 573; -static const JSC::Intrinsic s_jsBufferPrototypeWriteIntBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteIntBECode = "(function (r,_,c){\"use strict\";const d=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(c){case 1:{d.setInt8(_,r);break}case 2:{d.setInt16(_,r,!1);break}case 3:{d.setUint16(_+1,r&65535,!1),d.setInt8(_,Math.floor(r*0.0000152587890625));break}case 4:{d.setInt32(_,r,!1);break}case 5:{d.setUint32(_+1,r|0,!1),d.setInt8(_,Math.floor(r*0.00000000023283064365386964));break}case 6:{d.setUint32(_+2,r|0,!1),d.setInt16(_,Math.floor(r*0.00000000023283064365386964),!1);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return _+c})\n"; - -// writeUIntLE -const JSC::ConstructAbility s_jsBufferPrototypeWriteUIntLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteUIntLECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUIntLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteUIntLECodeLength = 579; -static const JSC::Intrinsic s_jsBufferPrototypeWriteUIntLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUIntLECode = "(function (r,_,c){\"use strict\";const d=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(c){case 1:{d.setUint8(_,r);break}case 2:{d.setUint16(_,r,!0);break}case 3:{d.setUint16(_,r&65535,!0),d.setUint8(_+2,Math.floor(r*0.0000152587890625));break}case 4:{d.setUint32(_,r,!0);break}case 5:{d.setUint32(_,r|0,!0),d.setUint8(_+4,Math.floor(r*0.00000000023283064365386964));break}case 6:{d.setUint32(_,r|0,!0),d.setUint16(_+4,Math.floor(r*0.00000000023283064365386964),!0);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return _+c})\n"; - -// writeUIntBE -const JSC::ConstructAbility s_jsBufferPrototypeWriteUIntBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteUIntBECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUIntBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteUIntBECodeLength = 579; -static const JSC::Intrinsic s_jsBufferPrototypeWriteUIntBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUIntBECode = "(function (c,k,r){\"use strict\";const d=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(r){case 1:{d.setUint8(k,c);break}case 2:{d.setUint16(k,c,!1);break}case 3:{d.setUint16(k+1,c&65535,!1),d.setUint8(k,Math.floor(c*0.0000152587890625));break}case 4:{d.setUint32(k,c,!1);break}case 5:{d.setUint32(k+1,c|0,!1),d.setUint8(k,Math.floor(c*0.00000000023283064365386964));break}case 6:{d.setUint32(k+2,c|0,!1),d.setUint16(k,Math.floor(c*0.00000000023283064365386964),!1);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return k+r})\n"; - -// writeFloatLE -const JSC::ConstructAbility s_jsBufferPrototypeWriteFloatLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteFloatLECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteFloatLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteFloatLECodeLength = 137; -static const JSC::Intrinsic s_jsBufferPrototypeWriteFloatLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteFloatLECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat32(d,r,!0),d+4})\n"; - -// writeFloatBE -const JSC::ConstructAbility s_jsBufferPrototypeWriteFloatBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteFloatBECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteFloatBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteFloatBECodeLength = 137; -static const JSC::Intrinsic s_jsBufferPrototypeWriteFloatBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteFloatBECode = "(function (r,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat32(c,r,!1),c+4})\n"; - -// writeDoubleLE -const JSC::ConstructAbility s_jsBufferPrototypeWriteDoubleLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteDoubleLECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteDoubleLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteDoubleLECodeLength = 137; -static const JSC::Intrinsic s_jsBufferPrototypeWriteDoubleLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteDoubleLECode = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat64(d,r,!0),d+8})\n"; - -// writeDoubleBE -const JSC::ConstructAbility s_jsBufferPrototypeWriteDoubleBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteDoubleBECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteDoubleBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteDoubleBECodeLength = 137; -static const JSC::Intrinsic s_jsBufferPrototypeWriteDoubleBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteDoubleBECode = "(function (r,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat64(c,r,!1),c+8})\n"; - -// writeBigInt64LE -const JSC::ConstructAbility s_jsBufferPrototypeWriteBigInt64LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteBigInt64LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigInt64LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteBigInt64LECodeLength = 138; -static const JSC::Intrinsic s_jsBufferPrototypeWriteBigInt64LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteBigInt64LECode = "(function (r,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigInt64(c,r,!0),c+8})\n"; - -// writeBigInt64BE -const JSC::ConstructAbility s_jsBufferPrototypeWriteBigInt64BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteBigInt64BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigInt64BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteBigInt64BECodeLength = 138; -static const JSC::Intrinsic s_jsBufferPrototypeWriteBigInt64BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteBigInt64BECode = "(function (r,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigInt64(c,r,!1),c+8})\n"; - -// writeBigUInt64LE -const JSC::ConstructAbility s_jsBufferPrototypeWriteBigUInt64LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteBigUInt64LECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigUInt64LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteBigUInt64LECodeLength = 139; -static const JSC::Intrinsic s_jsBufferPrototypeWriteBigUInt64LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteBigUInt64LECode = "(function (r,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigUint64(c,r,!0),c+8})\n"; - -// writeBigUInt64BE -const JSC::ConstructAbility s_jsBufferPrototypeWriteBigUInt64BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeWriteBigUInt64BECodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigUInt64BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeWriteBigUInt64BECodeLength = 139; -static const JSC::Intrinsic s_jsBufferPrototypeWriteBigUInt64BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteBigUInt64BECode = "(function (r,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigUint64(c,r,!1),c+8})\n"; - -// utf8Write -const JSC::ConstructAbility s_jsBufferPrototypeUtf8WriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeUtf8WriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeUtf8WriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeUtf8WriteCodeLength = 65; -static const JSC::Intrinsic s_jsBufferPrototypeUtf8WriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeUtf8WriteCode = "(function (r,u,a){\"use strict\";return this.write(r,u,a,\"utf8\")})\n"; - -// ucs2Write -const JSC::ConstructAbility s_jsBufferPrototypeUcs2WriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeUcs2WriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeUcs2WriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeUcs2WriteCodeLength = 65; -static const JSC::Intrinsic s_jsBufferPrototypeUcs2WriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeUcs2WriteCode = "(function (r,u,a){\"use strict\";return this.write(r,u,a,\"ucs2\")})\n"; - -// utf16leWrite -const JSC::ConstructAbility s_jsBufferPrototypeUtf16leWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeUtf16leWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeUtf16leWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeUtf16leWriteCodeLength = 68; -static const JSC::Intrinsic s_jsBufferPrototypeUtf16leWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeUtf16leWriteCode = "(function (r,u,a){\"use strict\";return this.write(r,u,a,\"utf16le\")})\n"; - -// latin1Write -const JSC::ConstructAbility s_jsBufferPrototypeLatin1WriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeLatin1WriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeLatin1WriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeLatin1WriteCodeLength = 67; -static const JSC::Intrinsic s_jsBufferPrototypeLatin1WriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeLatin1WriteCode = "(function (r,u,a){\"use strict\";return this.write(r,u,a,\"latin1\")})\n"; - -// asciiWrite -const JSC::ConstructAbility s_jsBufferPrototypeAsciiWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeAsciiWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeAsciiWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeAsciiWriteCodeLength = 66; -static const JSC::Intrinsic s_jsBufferPrototypeAsciiWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeAsciiWriteCode = "(function (r,u,a){\"use strict\";return this.write(r,u,a,\"ascii\")})\n"; - -// base64Write -const JSC::ConstructAbility s_jsBufferPrototypeBase64WriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeBase64WriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeBase64WriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeBase64WriteCodeLength = 67; -static const JSC::Intrinsic s_jsBufferPrototypeBase64WriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeBase64WriteCode = "(function (r,u,a){\"use strict\";return this.write(r,u,a,\"base64\")})\n"; - -// base64urlWrite -const JSC::ConstructAbility s_jsBufferPrototypeBase64urlWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeBase64urlWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeBase64urlWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeBase64urlWriteCodeLength = 70; -static const JSC::Intrinsic s_jsBufferPrototypeBase64urlWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeBase64urlWriteCode = "(function (r,u,a){\"use strict\";return this.write(r,u,a,\"base64url\")})\n"; - -// hexWrite -const JSC::ConstructAbility s_jsBufferPrototypeHexWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeHexWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeHexWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeHexWriteCodeLength = 64; -static const JSC::Intrinsic s_jsBufferPrototypeHexWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeHexWriteCode = "(function (r,u,a){\"use strict\";return this.write(r,u,a,\"hex\")})\n"; - -// utf8Slice -const JSC::ConstructAbility s_jsBufferPrototypeUtf8SliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeUtf8SliceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeUtf8SliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeUtf8SliceCodeLength = 64; -static const JSC::Intrinsic s_jsBufferPrototypeUtf8SliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeUtf8SliceCode = "(function (r,d){\"use strict\";return this.toString(r,d,\"utf8\")})\n"; - -// ucs2Slice -const JSC::ConstructAbility s_jsBufferPrototypeUcs2SliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeUcs2SliceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeUcs2SliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeUcs2SliceCodeLength = 64; -static const JSC::Intrinsic s_jsBufferPrototypeUcs2SliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeUcs2SliceCode = "(function (r,d){\"use strict\";return this.toString(r,d,\"ucs2\")})\n"; - -// utf16leSlice -const JSC::ConstructAbility s_jsBufferPrototypeUtf16leSliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeUtf16leSliceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeUtf16leSliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeUtf16leSliceCodeLength = 67; -static const JSC::Intrinsic s_jsBufferPrototypeUtf16leSliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeUtf16leSliceCode = "(function (r,u){\"use strict\";return this.toString(r,u,\"utf16le\")})\n"; - -// latin1Slice -const JSC::ConstructAbility s_jsBufferPrototypeLatin1SliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeLatin1SliceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeLatin1SliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeLatin1SliceCodeLength = 66; -static const JSC::Intrinsic s_jsBufferPrototypeLatin1SliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeLatin1SliceCode = "(function (r,u){\"use strict\";return this.toString(r,u,\"latin1\")})\n"; - -// asciiSlice -const JSC::ConstructAbility s_jsBufferPrototypeAsciiSliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeAsciiSliceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeAsciiSliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeAsciiSliceCodeLength = 65; -static const JSC::Intrinsic s_jsBufferPrototypeAsciiSliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeAsciiSliceCode = "(function (r,u){\"use strict\";return this.toString(r,u,\"ascii\")})\n"; - -// base64Slice -const JSC::ConstructAbility s_jsBufferPrototypeBase64SliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeBase64SliceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeBase64SliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeBase64SliceCodeLength = 66; -static const JSC::Intrinsic s_jsBufferPrototypeBase64SliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeBase64SliceCode = "(function (r,u){\"use strict\";return this.toString(r,u,\"base64\")})\n"; - -// base64urlSlice -const JSC::ConstructAbility s_jsBufferPrototypeBase64urlSliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeBase64urlSliceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeBase64urlSliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeBase64urlSliceCodeLength = 69; -static const JSC::Intrinsic s_jsBufferPrototypeBase64urlSliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeBase64urlSliceCode = "(function (r,u){\"use strict\";return this.toString(r,u,\"base64url\")})\n"; - -// hexSlice -const JSC::ConstructAbility s_jsBufferPrototypeHexSliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeHexSliceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeHexSliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeHexSliceCodeLength = 63; -static const JSC::Intrinsic s_jsBufferPrototypeHexSliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeHexSliceCode = "(function (d,r){\"use strict\";return this.toString(d,r,\"hex\")})\n"; - -// toJSON -const JSC::ConstructAbility s_jsBufferPrototypeToJSONCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeToJSONCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeToJSONCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeToJSONCodeLength = 73; -static const JSC::Intrinsic s_jsBufferPrototypeToJSONCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeToJSONCode = "(function (){\"use strict\";return{type:\"Buffer\",data:@Array.from(this)}})\n"; - -// slice -const JSC::ConstructAbility s_jsBufferPrototypeSliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeSliceCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeSliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeSliceCodeLength = 260; -static const JSC::Intrinsic s_jsBufferPrototypeSliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeSliceCode = "(function (c,p){\"use strict\";var{buffer:i,byteOffset:k,byteLength:m}=this;function q(x,z){if(x=@trunc(x),x===0||@isNaN(x))return 0;else if(x<0)return x+=z,x>0\?x:0;else return x<z\?x:z}var v=q(c,m),w=p!==@undefined\?q(p,m):m;return new @Buffer(i,k+v,w>v\?w-v:0)})\n"; - -// parent -const JSC::ConstructAbility s_jsBufferPrototypeParentCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeParentCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeParentCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeParentCodeLength = 99; -static const JSC::Intrinsic s_jsBufferPrototypeParentCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeParentCode = "(function (){\"use strict\";return @isObject(this)&&this instanceof @Buffer\?this.buffer:@undefined})\n"; - -// offset -const JSC::ConstructAbility s_jsBufferPrototypeOffsetCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeOffsetCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeOffsetCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeOffsetCodeLength = 103; -static const JSC::Intrinsic s_jsBufferPrototypeOffsetCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeOffsetCode = "(function (){\"use strict\";return @isObject(this)&&this instanceof @Buffer\?this.byteOffset:@undefined})\n"; - -// inspect -const JSC::ConstructAbility s_jsBufferPrototypeInspectCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferPrototypeInspectCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferPrototypeInspectCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferPrototypeInspectCodeLength = 57; -static const JSC::Intrinsic s_jsBufferPrototypeInspectCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeInspectCode = "(function (e,r){\"use strict\";return @Bun.inspect(this)})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().jsBufferPrototypeBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().jsBufferPrototypeBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ReadableByteStreamController.ts */ -// initializeReadableByteStreamController -const JSC::ConstructAbility s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeLength = 253; -static const JSC::Intrinsic s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamControllerInitializeReadableByteStreamControllerCode = "(function (b,f,j){\"use strict\";if(arguments.length!==4&&arguments[3]!==@isReadableStream)@throwTypeError(\"ReadableByteStreamController constructor should not be called directly\");return @privateInitializeReadableByteStreamController.@call(this,b,f,j)})\n"; - -// enqueue -const JSC::ConstructAbility s_readableByteStreamControllerEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamControllerEnqueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamControllerEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamControllerEnqueueCodeLength = 562; -static const JSC::Intrinsic s_readableByteStreamControllerEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamControllerEnqueueCode = "(function (e){\"use strict\";if(!@isReadableByteStreamController(this))throw @makeThisTypeError(\"ReadableByteStreamController\",\"enqueue\");if(@getByIdDirectPrivate(this,\"closeRequested\"))@throwTypeError(\"ReadableByteStreamController is requested to close\");if(@getByIdDirectPrivate(@getByIdDirectPrivate(this,\"controlledReadableStream\"),\"state\")!==@streamReadable)@throwTypeError(\"ReadableStream is not readable\");if(!@isObject(e)||!@ArrayBuffer.@isView(e))@throwTypeError(\"Provided chunk is not a TypedArray\");return @readableByteStreamControllerEnqueue(this,e)})\n"; - -// error -const JSC::ConstructAbility s_readableByteStreamControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamControllerErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamControllerErrorCodeLength = 336; -static const JSC::Intrinsic s_readableByteStreamControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamControllerErrorCode = "(function (d){\"use strict\";if(!@isReadableByteStreamController(this))throw @makeThisTypeError(\"ReadableByteStreamController\",\"error\");if(@getByIdDirectPrivate(@getByIdDirectPrivate(this,\"controlledReadableStream\"),\"state\")!==@streamReadable)@throwTypeError(\"ReadableStream is not readable\");@readableByteStreamControllerError(this,d)})\n"; - -// close -const JSC::ConstructAbility s_readableByteStreamControllerCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamControllerCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamControllerCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamControllerCloseCodeLength = 433; -static const JSC::Intrinsic s_readableByteStreamControllerCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamControllerCloseCode = "(function (){\"use strict\";if(!@isReadableByteStreamController(this))throw @makeThisTypeError(\"ReadableByteStreamController\",\"close\");if(@getByIdDirectPrivate(this,\"closeRequested\"))@throwTypeError(\"Close has already been requested\");if(@getByIdDirectPrivate(@getByIdDirectPrivate(this,\"controlledReadableStream\"),\"state\")!==@streamReadable)@throwTypeError(\"ReadableStream is not readable\");@readableByteStreamControllerClose(this)})\n"; - -// byobRequest -const JSC::ConstructAbility s_readableByteStreamControllerByobRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamControllerByobRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamControllerByobRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamControllerByobRequestCodeLength = 523; -static const JSC::Intrinsic s_readableByteStreamControllerByobRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamControllerByobRequestCode = "(function (){\"use strict\";if(!@isReadableByteStreamController(this))throw @makeGetterTypeError(\"ReadableByteStreamController\",\"byobRequest\");var u=@getByIdDirectPrivate(this,\"byobRequest\");if(u===@undefined){var _=@getByIdDirectPrivate(this,\"pendingPullIntos\");const l=_.peek();if(l){const y=new @Uint8Array(l.buffer,l.byteOffset+l.bytesFilled,l.byteLength-l.bytesFilled);@putByIdDirectPrivate(this,\"byobRequest\",new @ReadableStreamBYOBRequest(this,y,@isReadableStream))}}return @getByIdDirectPrivate(this,\"byobRequest\")})\n"; - -// desiredSize -const JSC::ConstructAbility s_readableByteStreamControllerDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamControllerDesiredSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamControllerDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamControllerDesiredSizeCodeLength = 200; -static const JSC::Intrinsic s_readableByteStreamControllerDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamControllerDesiredSizeCode = "(function (){\"use strict\";if(!@isReadableByteStreamController(this))throw @makeGetterTypeError(\"ReadableByteStreamController\",\"desiredSize\");return @readableByteStreamControllerGetDesiredSize(this)})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().readableByteStreamControllerBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().readableByteStreamControllerBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ConsoleObject.ts */ -// asyncIterator -const JSC::ConstructAbility s_consoleObjectAsyncIteratorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_consoleObjectAsyncIteratorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_consoleObjectAsyncIteratorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_consoleObjectAsyncIteratorCodeLength = 577; -static const JSC::Intrinsic s_consoleObjectAsyncIteratorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_consoleObjectAsyncIteratorCode = "(function (){\"use strict\";const _=async function*j(){var q=@Bun.stdin.stream().getReader(),w=new globalThis.TextDecoder(\"utf-8\",{fatal:!1}),z,A=@Bun.indexOfLine;try{while(!0){var B,F,G;const L=q.readMany();if(@isPromise(L))({done:B,value:F}=await L);else({done:B,value:F}=L);if(B){if(G)yield w.decode(G);return}var H;for(let M of F){if(H=M,G)H=@Buffer.concat([G,M]),G=null;var J=0,K=A(H,J);while(K!==-1)yield w.decode(H.subarray(J,K)),J=K+1,K=A(H,J);G=H.subarray(J)}}}catch(L){z=L}finally{if(q.releaseLock(),z)throw z}},D=globalThis.Symbol.asyncIterator;return this[D]=_,_()})\n"; - -// write -const JSC::ConstructAbility s_consoleObjectWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_consoleObjectWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_consoleObjectWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_consoleObjectWriteCodeLength = 310; -static const JSC::Intrinsic s_consoleObjectWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_consoleObjectWriteCode = "(function (_){\"use strict\";var d=@getByIdDirectPrivate(this,\"writer\");if(!d){var s=@toLength(_\?.length\?\?0);d=@Bun.stdout.writer({highWaterMark:s>65536\?s:65536}),@putByIdDirectPrivate(this,\"writer\",d)}var a=d.write(_);const b=@argumentCount();for(var f=1;f<b;f++)a+=d.write(@argument(f));return d.flush(!0),a})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().consoleObjectBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().consoleObjectBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ReadableStreamInternals.ts */ -// readableStreamReaderGenericInitialize -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeLength = 585; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamReaderGenericInitializeCode = "(function (_,c){\"use strict\";if(@putByIdDirectPrivate(_,\"ownerReadableStream\",c),@putByIdDirectPrivate(c,\"reader\",_),@getByIdDirectPrivate(c,\"state\")===@streamReadable)@putByIdDirectPrivate(_,\"closedPromiseCapability\",@newPromiseCapability(@Promise));else if(@getByIdDirectPrivate(c,\"state\")===@streamClosed)@putByIdDirectPrivate(_,\"closedPromiseCapability\",{@promise:@Promise.@resolve()});else @assert(@getByIdDirectPrivate(c,\"state\")===@streamErrored),@putByIdDirectPrivate(_,\"closedPromiseCapability\",{@promise:@newHandledRejectedPromise(@getByIdDirectPrivate(c,\"storedError\"))})})\n"; - -// privateInitializeReadableStreamDefaultController -const JSC::ConstructAbility s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeLength = 675; -static const JSC::Intrinsic s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCode = "(function (_,p,b,f){\"use strict\";if(!@isReadableStream(_))@throwTypeError(\"ReadableStreamDefaultController needs a ReadableStream\");if(@getByIdDirectPrivate(_,\"readableStreamController\")!==null)@throwTypeError(\"ReadableStream already has a controller\");return @putByIdDirectPrivate(this,\"controlledReadableStream\",_),@putByIdDirectPrivate(this,\"underlyingSource\",p),@putByIdDirectPrivate(this,\"queue\",@newQueue()),@putByIdDirectPrivate(this,\"started\",-1),@putByIdDirectPrivate(this,\"closeRequested\",!1),@putByIdDirectPrivate(this,\"pullAgain\",!1),@putByIdDirectPrivate(this,\"pulling\",!1),@putByIdDirectPrivate(this,\"strategy\",@validateAndNormalizeQueuingStrategy(b,f)),this})\n"; - -// readableStreamDefaultControllerError -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeLength = 223; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerErrorCode = "(function (_,b){\"use strict\";const d=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(@getByIdDirectPrivate(d,\"state\")!==@streamReadable)return;@putByIdDirectPrivate(_,\"queue\",@newQueue()),@readableStreamError(d,b)})\n"; - -// readableStreamPipeTo -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamPipeToCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamPipeToCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamPipeToCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamPipeToCodeLength = 427; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamPipeToCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamPipeToCode = "(function (_,b){\"use strict\";@assert(@isReadableStream(_));const c=new @ReadableStreamDefaultReader(_);@getByIdDirectPrivate(c,\"closedPromiseCapability\").@promise.@then(()=>{},(g)=>{b.error(g)});function f(){@readableStreamDefaultReaderRead(c).@then(function(g){if(g.done){b.close();return}try{b.enqueue(g.value)}catch(h){b.error(\"ReadableStream chunk enqueueing in the sink failed\");return}f()},function(g){b.error(g)})}f()})\n"; - -// acquireReadableStreamDefaultReader -const JSC::ConstructAbility s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeLength = 127; -static const JSC::Intrinsic s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsAcquireReadableStreamDefaultReaderCode = "(function (d){\"use strict\";var g=@getByIdDirectPrivate(d,\"start\");if(g)g.@call(d);return new @ReadableStreamDefaultReader(d)})\n"; - -// setupReadableStreamDefaultController -const JSC::ConstructAbility s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeLength = 523; -static const JSC::Intrinsic s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsSetupReadableStreamDefaultControllerCode = "(function (D,O,b,f,j,q,v){\"use strict\";const w=new @ReadableStreamDefaultController(D,O,b,f,@isReadableStream),x=()=>@promiseInvokeOrNoopMethod(O,q,[w]),B=(C)=>@promiseInvokeOrNoopMethod(O,v,[C]);@putByIdDirectPrivate(w,\"pullAlgorithm\",x),@putByIdDirectPrivate(w,\"cancelAlgorithm\",B),@putByIdDirectPrivate(w,\"pull\",@readableStreamDefaultControllerPull),@putByIdDirectPrivate(w,\"cancel\",@readableStreamDefaultControllerCancel),@putByIdDirectPrivate(D,\"readableStreamController\",w),@readableStreamDefaultControllerStart(w)})\n"; - -// createReadableStreamController -const JSC::ConstructAbility s_readableStreamInternalsCreateReadableStreamControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsCreateReadableStreamControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsCreateReadableStreamControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsCreateReadableStreamControllerCodeLength = 671; -static const JSC::Intrinsic s_readableStreamInternalsCreateReadableStreamControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsCreateReadableStreamControllerCode = "(function (_,f,b){\"use strict\";const j=f.type,q=@toString(j);if(q===\"bytes\"){if(b.highWaterMark===@undefined)b.highWaterMark=0;if(b.size!==@undefined)@throwRangeError(\"Strategy for a ReadableByteStreamController cannot have a size\");@putByIdDirectPrivate(_,\"readableStreamController\",new @ReadableByteStreamController(_,f,b.highWaterMark,@isReadableStream))}else if(q===\"direct\"){var v=b\?.highWaterMark;@initializeArrayBufferStream.@call(_,f,v)}else if(j===@undefined){if(b.highWaterMark===@undefined)b.highWaterMark=1;@setupReadableStreamDefaultController(_,f,b.size,b.highWaterMark,f.start,f.pull,f.cancel)}else @throwRangeError(\"Invalid type for underlying source\")})\n"; - -// readableStreamDefaultControllerStart -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerStartCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerStartCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerStartCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerStartCodeLength = 465; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerStartCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerStartCode = "(function (_){\"use strict\";if(@getByIdDirectPrivate(_,\"started\")!==-1)return;const a=@getByIdDirectPrivate(_,\"underlyingSource\"),s=a.start;@putByIdDirectPrivate(_,\"started\",0),@promiseInvokeOrNoopMethodNoCatch(a,s,[_]).@then(()=>{@putByIdDirectPrivate(_,\"started\",1),@assert(!@getByIdDirectPrivate(_,\"pulling\")),@assert(!@getByIdDirectPrivate(_,\"pullAgain\")),@readableStreamDefaultControllerCallPullIfNeeded(_)},(C)=>{@readableStreamDefaultControllerError(_,C)})})\n"; - -// readableStreamPipeToWritableStream -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeLength = 1631; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamPipeToWritableStreamCode = "(function (_,f,k,D,q,w){\"use strict\";if(@assert(@isReadableStream(_)),@assert(@isWritableStream(f)),@assert(!@isReadableStreamLocked(_)),@assert(!@isWritableStreamLocked(f)),@assert(w===@undefined||@isAbortSignal(w)),@getByIdDirectPrivate(_,\"underlyingByteSource\")!==@undefined)return @Promise.@reject(\"Piping to a readable bytestream is not supported\");let x={source:_,destination:f,preventAbort:D,preventCancel:q,preventClose:k,signal:w};if(x.reader=@acquireReadableStreamDefaultReader(_),x.writer=@acquireWritableStreamDefaultWriter(f),@putByIdDirectPrivate(_,\"disturbed\",!0),x.finalized=!1,x.shuttingDown=!1,x.promiseCapability=@newPromiseCapability(@Promise),x.pendingReadPromiseCapability=@newPromiseCapability(@Promise),x.pendingReadPromiseCapability.@resolve.@call(),x.pendingWritePromise=@Promise.@resolve(),w!==@undefined){const z=(B)=>{if(x.finalized)return;@pipeToShutdownWithAction(x,()=>{const F=!x.preventAbort&&@getByIdDirectPrivate(x.destination,\"state\")===\"writable\"\?@writableStreamAbort(x.destination,B):@Promise.@resolve(),H=!x.preventCancel&&@getByIdDirectPrivate(x.source,\"state\")===@streamReadable\?@readableStreamCancel(x.source,B):@Promise.@resolve();let I=@newPromiseCapability(@Promise),J=!0,K=()=>{if(J){J=!1;return}I.@resolve.@call()},L=(M)=>{I.@reject.@call(@undefined,M)};return F.@then(K,L),H.@then(K,L),I.@promise},B)};if(@whenSignalAborted(w,z))return x.promiseCapability.@promise}return @pipeToErrorsMustBePropagatedForward(x),@pipeToErrorsMustBePropagatedBackward(x),@pipeToClosingMustBePropagatedForward(x),@pipeToClosingMustBePropagatedBackward(x),@pipeToLoop(x),x.promiseCapability.@promise})\n"; - -// pipeToLoop -const JSC::ConstructAbility s_readableStreamInternalsPipeToLoopCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPipeToLoopCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPipeToLoopCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPipeToLoopCodeLength = 110; -static const JSC::Intrinsic s_readableStreamInternalsPipeToLoopCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToLoopCode = "(function (d){\"use strict\";if(d.shuttingDown)return;@pipeToDoReadWrite(d).@then((n)=>{if(n)@pipeToLoop(d)})})\n"; - -// pipeToDoReadWrite -const JSC::ConstructAbility s_readableStreamInternalsPipeToDoReadWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPipeToDoReadWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPipeToDoReadWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPipeToDoReadWriteCodeLength = 731; -static const JSC::Intrinsic s_readableStreamInternalsPipeToDoReadWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToDoReadWriteCode = "(function (_){\"use strict\";return @assert(!_.shuttingDown),_.pendingReadPromiseCapability=@newPromiseCapability(@Promise),@getByIdDirectPrivate(_.writer,\"readyPromise\").@promise.@then(()=>{if(_.shuttingDown){_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1);return}@readableStreamDefaultReaderRead(_.reader).@then((n)=>{const b=!n.done&&@getByIdDirectPrivate(_.writer,\"stream\")!==@undefined;if(_.pendingReadPromiseCapability.@resolve.@call(@undefined,b),!b)return;_.pendingWritePromise=@writableStreamDefaultWriterWrite(_.writer,n.value)},(n)=>{_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1)})},(n)=>{_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1)}),_.pendingReadPromiseCapability.@promise})\n"; - -// pipeToErrorsMustBePropagatedForward -const JSC::ConstructAbility s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeLength = 438; -static const JSC::Intrinsic s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCode = "(function (s){\"use strict\";const d=()=>{s.pendingReadPromiseCapability.@resolve.@call(@undefined,!1);const l=@getByIdDirectPrivate(s.source,\"storedError\");if(!s.preventAbort){@pipeToShutdownWithAction(s,()=>@writableStreamAbort(s.destination,l),l);return}@pipeToShutdown(s,l)};if(@getByIdDirectPrivate(s.source,\"state\")===@streamErrored){d();return}@getByIdDirectPrivate(s.reader,\"closedPromiseCapability\").@promise.@then(@undefined,d)})\n"; - -// pipeToErrorsMustBePropagatedBackward -const JSC::ConstructAbility s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeLength = 369; -static const JSC::Intrinsic s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCode = "(function (d){\"use strict\";const n=()=>{const g=@getByIdDirectPrivate(d.destination,\"storedError\");if(!d.preventCancel){@pipeToShutdownWithAction(d,()=>@readableStreamCancel(d.source,g),g);return}@pipeToShutdown(d,g)};if(@getByIdDirectPrivate(d.destination,\"state\")===\"errored\"){n();return}@getByIdDirectPrivate(d.writer,\"closedPromise\").@promise.@then(@undefined,n)})\n"; - -// pipeToClosingMustBePropagatedForward -const JSC::ConstructAbility s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeLength = 405; -static const JSC::Intrinsic s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCode = "(function (r){\"use strict\";const l=()=>{if(r.pendingReadPromiseCapability.@resolve.@call(@undefined,!1),!r.preventClose){@pipeToShutdownWithAction(r,()=>@writableStreamDefaultWriterCloseWithErrorPropagation(r.writer));return}@pipeToShutdown(r)};if(@getByIdDirectPrivate(r.source,\"state\")===@streamClosed){l();return}@getByIdDirectPrivate(r.reader,\"closedPromiseCapability\").@promise.@then(l,@undefined)})\n"; - -// pipeToClosingMustBePropagatedBackward -const JSC::ConstructAbility s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeLength = 324; -static const JSC::Intrinsic s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCode = "(function (n){\"use strict\";if(!@writableStreamCloseQueuedOrInFlight(n.destination)&&@getByIdDirectPrivate(n.destination,\"state\")!==\"closed\")return;const _=@makeTypeError(\"closing is propagated backward\");if(!n.preventCancel){@pipeToShutdownWithAction(n,()=>@readableStreamCancel(n.source,_),_);return}@pipeToShutdown(n,_)})\n"; - -// pipeToShutdownWithAction -const JSC::ConstructAbility s_readableStreamInternalsPipeToShutdownWithActionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPipeToShutdownWithActionCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPipeToShutdownWithActionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPipeToShutdownWithActionCodeLength = 458; -static const JSC::Intrinsic s_readableStreamInternalsPipeToShutdownWithActionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToShutdownWithActionCode = "(function (d,h){\"use strict\";if(d.shuttingDown)return;d.shuttingDown=!0;const s=arguments.length>2,u=arguments[2],_=()=>{h().@then(()=>{if(s)@pipeToFinalize(d,u);else @pipeToFinalize(d)},(g)=>{@pipeToFinalize(d,g)})};if(@getByIdDirectPrivate(d.destination,\"state\")===\"writable\"&&!@writableStreamCloseQueuedOrInFlight(d.destination)){d.pendingReadPromiseCapability.@promise.@then(()=>{d.pendingWritePromise.@then(_,_)},(b)=>@pipeToFinalize(d,b));return}_()})\n"; - -// pipeToShutdown -const JSC::ConstructAbility s_readableStreamInternalsPipeToShutdownCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPipeToShutdownCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPipeToShutdownCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPipeToShutdownCodeLength = 411; -static const JSC::Intrinsic s_readableStreamInternalsPipeToShutdownCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToShutdownCode = "(function (c){\"use strict\";if(c.shuttingDown)return;c.shuttingDown=!0;const D=arguments.length>1,_=arguments[1],b=()=>{if(D)@pipeToFinalize(c,_);else @pipeToFinalize(c)};if(@getByIdDirectPrivate(c.destination,\"state\")===\"writable\"&&!@writableStreamCloseQueuedOrInFlight(c.destination)){c.pendingReadPromiseCapability.@promise.@then(()=>{c.pendingWritePromise.@then(b,b)},(d)=>@pipeToFinalize(c,d));return}b()})\n"; - -// pipeToFinalize -const JSC::ConstructAbility s_readableStreamInternalsPipeToFinalizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsPipeToFinalizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsPipeToFinalizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsPipeToFinalizeCodeLength = 259; -static const JSC::Intrinsic s_readableStreamInternalsPipeToFinalizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToFinalizeCode = "(function (r){\"use strict\";if(@writableStreamDefaultWriterRelease(r.writer),@readableStreamReaderGenericRelease(r.reader),r.finalized=!0,arguments.length>1)r.promiseCapability.@reject.@call(@undefined,arguments[1]);else r.promiseCapability.@resolve.@call()})\n"; - -// readableStreamTee -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamTeeCodeLength = 1104; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamTeeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamTeeCode = "(function (_,f){\"use strict\";@assert(@isReadableStream(_)),@assert(typeof f===\"boolean\");var D=@getByIdDirectPrivate(_,\"start\");if(D)@putByIdDirectPrivate(_,\"start\",@undefined),D();const E=new @ReadableStreamDefaultReader(_),T={closedOrErrored:!1,canceled1:!1,canceled2:!1,reason1:@undefined,reason2:@undefined};T.cancelPromiseCapability=@newPromiseCapability(@Promise);const g=@readableStreamTeePullFunction(T,E,f),i={};@putByIdDirectPrivate(i,\"pull\",g),@putByIdDirectPrivate(i,\"cancel\",@readableStreamTeeBranch1CancelFunction(T,_));const j={};@putByIdDirectPrivate(j,\"pull\",g),@putByIdDirectPrivate(j,\"cancel\",@readableStreamTeeBranch2CancelFunction(T,_));const k=new @ReadableStream(i),q=new @ReadableStream(j);return @getByIdDirectPrivate(E,\"closedPromiseCapability\").@promise.@then(@undefined,function(v){if(T.closedOrErrored)return;if(@readableStreamDefaultControllerError(k.@readableStreamController,v),@readableStreamDefaultControllerError(q.@readableStreamController,v),T.closedOrErrored=!0,!T.canceled1||!T.canceled2)T.cancelPromiseCapability.@resolve.@call()}),T.branch1=k,T.branch2=q,[k,q]})\n"; - -// readableStreamTeePullFunction -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeePullFunctionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeePullFunctionCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeePullFunctionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamTeePullFunctionCodeLength = 764; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamTeePullFunctionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamTeePullFunctionCode = "(function (f,m,i){\"use strict\";return function(){@Promise.prototype.@then.@call(@readableStreamDefaultReaderRead(m),function(j){if(@assert(@isObject(j)),@assert(typeof j.done===\"boolean\"),j.done&&!f.closedOrErrored){if(!f.canceled1)@readableStreamDefaultControllerClose(f.branch1.@readableStreamController);if(!f.canceled2)@readableStreamDefaultControllerClose(f.branch2.@readableStreamController);if(f.closedOrErrored=!0,!f.canceled1||!f.canceled2)f.cancelPromiseCapability.@resolve.@call()}if(f.closedOrErrored)return;if(!f.canceled1)@readableStreamDefaultControllerEnqueue(f.branch1.@readableStreamController,j.value);if(!f.canceled2)@readableStreamDefaultControllerEnqueue(f.branch2.@readableStreamController,i\?@structuredCloneForStream(j.value):j.value)})}})\n"; - -// readableStreamTeeBranch1CancelFunction -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeLength = 258; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCode = "(function (i,n){\"use strict\";return function(d){if(i.canceled1=!0,i.reason1=d,i.canceled2)@readableStreamCancel(n,[i.reason1,i.reason2]).@then(i.cancelPromiseCapability.@resolve,i.cancelPromiseCapability.@reject);return i.cancelPromiseCapability.@promise}})\n"; - -// readableStreamTeeBranch2CancelFunction -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeLength = 258; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCode = "(function (i,n){\"use strict\";return function(d){if(i.canceled2=!0,i.reason2=d,i.canceled1)@readableStreamCancel(n,[i.reason1,i.reason2]).@then(i.cancelPromiseCapability.@resolve,i.cancelPromiseCapability.@reject);return i.cancelPromiseCapability.@promise}})\n"; - -// isReadableStream -const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsIsReadableStreamCodeLength = 115; -static const JSC::Intrinsic s_readableStreamInternalsIsReadableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsIsReadableStreamCode = "(function (r){\"use strict\";return @isObject(r)&&@getByIdDirectPrivate(r,\"readableStreamController\")!==@undefined})\n"; - -// isReadableStreamDefaultReader -const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamDefaultReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamDefaultReaderCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamDefaultReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsIsReadableStreamDefaultReaderCodeLength = 92; -static const JSC::Intrinsic s_readableStreamInternalsIsReadableStreamDefaultReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsIsReadableStreamDefaultReaderCode = "(function (s){\"use strict\";return @isObject(s)&&!!@getByIdDirectPrivate(s,\"readRequests\")})\n"; - -// isReadableStreamDefaultController -const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamDefaultControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsIsReadableStreamDefaultControllerCodeLength = 96; -static const JSC::Intrinsic s_readableStreamInternalsIsReadableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsIsReadableStreamDefaultControllerCode = "(function (a){\"use strict\";return @isObject(a)&&!!@getByIdDirectPrivate(a,\"underlyingSource\")})\n"; - -// readDirectStream -const JSC::ConstructAbility s_readableStreamInternalsReadDirectStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadDirectStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadDirectStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadDirectStreamCodeLength = 900; -static const JSC::Intrinsic s_readableStreamInternalsReadDirectStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadDirectStreamCode = "(function (_,f,B){\"use strict\";@putByIdDirectPrivate(_,\"underlyingSource\",@undefined),@putByIdDirectPrivate(_,\"start\",@undefined);function j(w,x){if(x&&B\?.cancel){try{var z=B.cancel(x);@markPromiseAsHandled(z)}catch(A){}B=@undefined}if(w){if(@putByIdDirectPrivate(w,\"readableStreamController\",@undefined),@putByIdDirectPrivate(w,\"reader\",@undefined),x)@putByIdDirectPrivate(w,\"state\",@streamErrored),@putByIdDirectPrivate(w,\"storedError\",x);else @putByIdDirectPrivate(w,\"state\",@streamClosed);w=@undefined}}if(!B.pull){j();return}if(!@isCallable(B.pull)){j(),@throwTypeError(\"pull is not a function\");return}@putByIdDirectPrivate(_,\"readableStreamController\",f);const q=@getByIdDirectPrivate(_,\"highWaterMark\");f.start({highWaterMark:!q||q<64\?64:q}),@startDirectStream.@call(f,_,B.pull,j),@putByIdDirectPrivate(_,\"reader\",{});var v=B.pull(f);if(f=@undefined,v&&@isPromise(v))return v.@then(()=>{})})\n"; - -// assignToStream -const JSC::ConstructAbility s_readableStreamInternalsAssignToStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsAssignToStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsAssignToStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamInternalsAssignToStreamCodeLength = 221; -static const JSC::Intrinsic s_readableStreamInternalsAssignToStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsAssignToStreamCode = "(function (h,p){\"use strict\";var P=@getByIdDirectPrivate(h,\"underlyingSource\");if(P)try{return @readDirectStream(h,p,P)}catch(_){throw _}finally{P=@undefined,h=@undefined,p=@undefined}return @readStreamIntoSink(h,p,!0)})\n"; - -// readStreamIntoSink -const JSC::ConstructAbility s_readableStreamInternalsReadStreamIntoSinkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadStreamIntoSinkCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadStreamIntoSinkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadStreamIntoSinkCodeLength = 1395; -static const JSC::Intrinsic s_readableStreamInternalsReadStreamIntoSinkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadStreamIntoSinkCode = "(async function (B,_,f){\"use strict\";var D=!1,c=!1;try{var q=B.getReader(),w=q.readMany();if(w&&@isPromise(w))w=await w;if(w.done)return D=!0,_.end();var x=w.value.length;const J=@getByIdDirectPrivate(B,\"highWaterMark\");if(f)@startDirectStream.@call(_,B,@undefined,()=>!c&&@markPromiseAsHandled(B.cancel()));_.start({highWaterMark:J||0});for(var z=0,A=w.value,E=w.value.length;z<E;z++)_.write(A[z]);var F=@getByIdDirectPrivate(B,\"state\");if(F===@streamClosed)return D=!0,_.end();while(!0){var{value:G,done:H}=await q.read();if(H)return D=!0,_.end();_.write(G)}}catch(J){c=!0;try{q=@undefined;const K=B.cancel(J);@markPromiseAsHandled(K)}catch(K){}if(_&&!D){D=!0;try{_.close(J)}catch(K){throw new globalThis.AggregateError([J,K])}}throw J}finally{if(q){try{q.releaseLock()}catch(K){}q=@undefined}_=@undefined;var F=@getByIdDirectPrivate(B,\"state\");if(B){var I=@getByIdDirectPrivate(B,\"readableStreamController\");if(I){if(@getByIdDirectPrivate(I,\"underlyingSource\"))@putByIdDirectPrivate(I,\"underlyingSource\",@undefined);if(@getByIdDirectPrivate(I,\"controlledReadableStream\"))@putByIdDirectPrivate(I,\"controlledReadableStream\",@undefined);if(@putByIdDirectPrivate(B,\"readableStreamController\",null),@getByIdDirectPrivate(B,\"underlyingSource\"))@putByIdDirectPrivate(B,\"underlyingSource\",@undefined);I=@undefined}if(!c&&F!==@streamClosed&&F!==@streamErrored)@readableStreamClose(B);B=@undefined}}})\n"; - -// handleDirectStreamError -const JSC::ConstructAbility s_readableStreamInternalsHandleDirectStreamErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsHandleDirectStreamErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsHandleDirectStreamErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsHandleDirectStreamErrorCodeLength = 496; -static const JSC::Intrinsic s_readableStreamInternalsHandleDirectStreamErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsHandleDirectStreamErrorCode = "(function (i){\"use strict\";var _=this,f=_.@sink;if(f){@putByIdDirectPrivate(_,\"sink\",@undefined);try{f.close(i)}catch(g){}}if(this.error=this.flush=this.write=this.close=this.end=@onReadableStreamDirectControllerClosed,typeof this.@underlyingSource.close===\"function\")try{this.@underlyingSource.close.@call(this.@underlyingSource,i)}catch(g){}try{var u=_._pendingRead;if(u)_._pendingRead=@undefined,@rejectPromise(u,i)}catch(g){}var b=_.@controlledReadableStream;if(b)@readableStreamError(b,i)})\n"; - -// handleDirectStreamErrorReject -const JSC::ConstructAbility s_readableStreamInternalsHandleDirectStreamErrorRejectCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsHandleDirectStreamErrorRejectCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsHandleDirectStreamErrorRejectCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsHandleDirectStreamErrorRejectCodeLength = 95; -static const JSC::Intrinsic s_readableStreamInternalsHandleDirectStreamErrorRejectCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsHandleDirectStreamErrorRejectCode = "(function (r){\"use strict\";return @handleDirectStreamError.@call(this,r),@Promise.@reject(r)})\n"; - -// onPullDirectStream -const JSC::ConstructAbility s_readableStreamInternalsOnPullDirectStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsOnPullDirectStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsOnPullDirectStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsOnPullDirectStreamCodeLength = 785; -static const JSC::Intrinsic s_readableStreamInternalsOnPullDirectStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsOnPullDirectStreamCode = "(function (i){\"use strict\";var _=i.@controlledReadableStream;if(!_||@getByIdDirectPrivate(_,\"state\")!==@streamReadable)return;if(i._deferClose===-1)return;i._deferClose=-1,i._deferFlush=-1;var h,w;try{var b=i.@underlyingSource.pull(i);if(b&&@isPromise(b)){if(i._handleError===@undefined)i._handleError=@handleDirectStreamErrorReject.bind(i);@Promise.prototype.catch.@call(b,i._handleError)}}catch(k){return @handleDirectStreamErrorReject.@call(i,k)}finally{h=i._deferClose,w=i._deferFlush,i._deferFlush=i._deferClose=0}var g;if(i._pendingRead===@undefined)i._pendingRead=g=@newPromise();else g=@readableStreamAddReadRequest(_);if(h===1){var j=i._deferCloseReason;return i._deferCloseReason=@undefined,@onCloseDirectStream.@call(i,j),g}if(w===1)@onFlushDirectStream.@call(i);return g})\n"; - -// noopDoneFunction -const JSC::ConstructAbility s_readableStreamInternalsNoopDoneFunctionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsNoopDoneFunctionCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsNoopDoneFunctionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsNoopDoneFunctionCodeLength = 81; -static const JSC::Intrinsic s_readableStreamInternalsNoopDoneFunctionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsNoopDoneFunctionCode = "(function (){\"use strict\";return @Promise.@resolve({value:@undefined,done:!0})})\n"; - -// onReadableStreamDirectControllerClosed -const JSC::ConstructAbility s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeLength = 93; -static const JSC::Intrinsic s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsOnReadableStreamDirectControllerClosedCode = "(function (e){\"use strict\";@throwTypeError(\"ReadableStreamDirectController is now closed\")})\n"; - -// onCloseDirectStream -const JSC::ConstructAbility s_readableStreamInternalsOnCloseDirectStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsOnCloseDirectStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsOnCloseDirectStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsOnCloseDirectStreamCodeLength = 1460; -static const JSC::Intrinsic s_readableStreamInternalsOnCloseDirectStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsOnCloseDirectStreamCode = "(function (c){\"use strict\";var y=this.@controlledReadableStream;if(!y||@getByIdDirectPrivate(y,\"state\")!==@streamReadable)return;if(this._deferClose!==0){this._deferClose=1,this._deferCloseReason=c;return}if(@putByIdDirectPrivate(y,\"state\",@streamClosing),typeof this.@underlyingSource.close===\"function\")try{this.@underlyingSource.close.@call(this.@underlyingSource,c)}catch(v){}var _;try{_=this.@sink.end(),@putByIdDirectPrivate(this,\"sink\",@undefined)}catch(v){if(this._pendingRead){var b=this._pendingRead;this._pendingRead=@undefined,@rejectPromise(b,v)}@readableStreamError(y,v);return}this.error=this.flush=this.write=this.close=this.end=@onReadableStreamDirectControllerClosed;var C=@getByIdDirectPrivate(y,\"reader\");if(C&&@isReadableStreamDefaultReader(C)){var j=this._pendingRead;if(j&&@isPromise(j)&&_\?.byteLength){this._pendingRead=@undefined,@fulfillPromise(j,{value:_,done:!1}),@readableStreamClose(y);return}}if(_\?.byteLength){var k=@getByIdDirectPrivate(C,\"readRequests\");if(k\?.isNotEmpty()){@readableStreamFulfillReadRequest(y,_,!1),@readableStreamClose(y);return}@putByIdDirectPrivate(y,\"state\",@streamReadable),this.@pull=()=>{var v=@createFulfilledPromise({value:_,done:!1});return _=@undefined,@readableStreamClose(y),y=@undefined,v}}else if(this._pendingRead){var b=this._pendingRead;this._pendingRead=@undefined,@putByIdDirectPrivate(this,\"pull\",@noopDoneFunction),@fulfillPromise(b,{value:@undefined,done:!0})}@readableStreamClose(y)})\n"; - -// onFlushDirectStream -const JSC::ConstructAbility s_readableStreamInternalsOnFlushDirectStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsOnFlushDirectStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsOnFlushDirectStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsOnFlushDirectStreamCodeLength = 591; -static const JSC::Intrinsic s_readableStreamInternalsOnFlushDirectStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsOnFlushDirectStreamCode = "(function (){\"use strict\";var c=this.@controlledReadableStream,b=@getByIdDirectPrivate(c,\"reader\");if(!b||!@isReadableStreamDefaultReader(b))return;var j=this._pendingRead;if(this._pendingRead=@undefined,j&&@isPromise(j)){var k=this.@sink.flush();if(k\?.byteLength)this._pendingRead=@getByIdDirectPrivate(c,\"readRequests\")\?.shift(),@fulfillPromise(j,{value:k,done:!1});else this._pendingRead=j}else if(@getByIdDirectPrivate(c,\"readRequests\")\?.isNotEmpty()){var k=this.@sink.flush();if(k\?.byteLength)@readableStreamFulfillReadRequest(c,k,!1)}else if(this._deferFlush===-1)this._deferFlush=1})\n"; - -// createTextStream -const JSC::ConstructAbility s_readableStreamInternalsCreateTextStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsCreateTextStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsCreateTextStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsCreateTextStreamCodeLength = 984; -static const JSC::Intrinsic s_readableStreamInternalsCreateTextStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsCreateTextStreamCode = "(function (v){\"use strict\";var E,U=[],_=!1,j=!1,q=\"\",w=@toLength(0),x=@newPromiseCapability(@Promise),z=!1;return E={start(){},write(A){if(typeof A===\"string\"){var C=@toLength(A.length);if(C>0)q+=A,_=!0,w+=C;return C}if(!A||!(@ArrayBuffer.@isView(A)||A instanceof @ArrayBuffer))@throwTypeError(\"Expected text, ArrayBuffer or ArrayBufferView\");const F=@toLength(A.byteLength);if(F>0)if(j=!0,q.length>0)@arrayPush(U,q,A),q=\"\";else @arrayPush(U,A);return w+=F,F},flush(){return 0},end(){if(z)return\"\";return E.fulfill()},fulfill(){z=!0;const A=E.finishInternal();return @fulfillPromise(x.@promise,A),A},finishInternal(){if(!_&&!j)return\"\";if(_&&!j)return q;if(j&&!_)return new globalThis.TextDecoder().decode(@Bun.concatArrayBuffers(U));var A=new @Bun.ArrayBufferSink;A.start({highWaterMark:w,asUint8Array:!0});for(let C of U)A.write(C);if(U.length=0,q.length>0)A.write(q),q=\"\";return new globalThis.TextDecoder().decode(A.end())},close(){try{if(!z)z=!0,E.fulfill()}catch(A){}}},[E,x]})\n"; - -// initializeTextStream -const JSC::ConstructAbility s_readableStreamInternalsInitializeTextStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsInitializeTextStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsInitializeTextStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsInitializeTextStreamCodeLength = 578; -static const JSC::Intrinsic s_readableStreamInternalsInitializeTextStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsInitializeTextStreamCode = "(function (_,t){\"use strict\";var[f,p]=@createTextStream(t),I={@underlyingSource:_,@pull:@onPullDirectStream,@controlledReadableStream:this,@sink:f,close:@onCloseDirectStream,write:f.write,error:@handleDirectStreamError,end:@onCloseDirectStream,@close:@onCloseDirectStream,flush:@onFlushDirectStream,_pendingRead:@undefined,_deferClose:0,_deferFlush:0,_deferCloseReason:@undefined,_handleError:@undefined};return @putByIdDirectPrivate(this,\"readableStreamController\",I),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"start\",@undefined),p})\n"; - -// initializeArrayStream -const JSC::ConstructAbility s_readableStreamInternalsInitializeArrayStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsInitializeArrayStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsInitializeArrayStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsInitializeArrayStreamCodeLength = 797; -static const JSC::Intrinsic s_readableStreamInternalsInitializeArrayStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsInitializeArrayStreamCode = "(function (_,t){\"use strict\";var p=[],v=@newPromiseCapability(@Promise),b=!1;function j(){return b=!0,v.@resolve.@call(@undefined,p),p}var q={start(){},write(x){return @arrayPush(p,x),x.byteLength||x.length},flush(){return 0},end(){if(b)return[];return j()},close(){if(!b)j()}},w={@underlyingSource:_,@pull:@onPullDirectStream,@controlledReadableStream:this,@sink:q,close:@onCloseDirectStream,write:q.write,error:@handleDirectStreamError,end:@onCloseDirectStream,@close:@onCloseDirectStream,flush:@onFlushDirectStream,_pendingRead:@undefined,_deferClose:0,_deferFlush:0,_deferCloseReason:@undefined,_handleError:@undefined};return @putByIdDirectPrivate(this,\"readableStreamController\",w),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"start\",@undefined),v})\n"; - -// initializeArrayBufferStream -const JSC::ConstructAbility s_readableStreamInternalsInitializeArrayBufferStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsInitializeArrayBufferStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsInitializeArrayBufferStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsInitializeArrayBufferStreamCodeLength = 690; -static const JSC::Intrinsic s_readableStreamInternalsInitializeArrayBufferStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsInitializeArrayBufferStreamCode = "(function (d,_){\"use strict\";var R=_&&typeof _===\"number\"\?{highWaterMark:_,stream:!0,asUint8Array:!0}:{stream:!0,asUint8Array:!0},b=new @Bun.ArrayBufferSink;b.start(R);var f={@underlyingSource:d,@pull:@onPullDirectStream,@controlledReadableStream:this,@sink:b,close:@onCloseDirectStream,write:b.write.bind(b),error:@handleDirectStreamError,end:@onCloseDirectStream,@close:@onCloseDirectStream,flush:@onFlushDirectStream,_pendingRead:@undefined,_deferClose:0,_deferFlush:0,_deferCloseReason:@undefined,_handleError:@undefined};@putByIdDirectPrivate(this,\"readableStreamController\",f),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"start\",@undefined)})\n"; - -// readableStreamError -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamErrorCodeLength = 840; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamErrorCode = "(function (c,i){\"use strict\";@assert(@isReadableStream(c)),@assert(@getByIdDirectPrivate(c,\"state\")===@streamReadable),@putByIdDirectPrivate(c,\"state\",@streamErrored),@putByIdDirectPrivate(c,\"storedError\",i);const n=@getByIdDirectPrivate(c,\"reader\");if(!n)return;if(@isReadableStreamDefaultReader(n)){const f=@getByIdDirectPrivate(n,\"readRequests\");@putByIdDirectPrivate(n,\"readRequests\",@createFIFO());for(var _=f.shift();_;_=f.shift())@rejectPromise(_,i)}else{@assert(@isReadableStreamBYOBReader(n));const f=@getByIdDirectPrivate(n,\"readIntoRequests\");@putByIdDirectPrivate(n,\"readIntoRequests\",@createFIFO());for(var _=f.shift();_;_=f.shift())@rejectPromise(_,i)}@getByIdDirectPrivate(n,\"closedPromiseCapability\").@reject.@call(@undefined,i);const b=@getByIdDirectPrivate(n,\"closedPromiseCapability\").@promise;@markPromiseAsHandled(b)})\n"; - -// readableStreamDefaultControllerShouldCallPull -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeLength = 477; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCode = "(function (_){\"use strict\";const a=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(!@readableStreamDefaultControllerCanCloseOrEnqueue(_))return!1;if(@getByIdDirectPrivate(_,\"started\")!==1)return!1;if((!@isReadableStreamLocked(a)||!@getByIdDirectPrivate(@getByIdDirectPrivate(a,\"reader\"),\"readRequests\")\?.isNotEmpty())&&@readableStreamDefaultControllerGetDesiredSize(_)<=0)return!1;const f=@readableStreamDefaultControllerGetDesiredSize(_);return @assert(f!==null),f>0})\n"; - -// readableStreamDefaultControllerCallPullIfNeeded -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeLength = 859; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCode = "(function (_){\"use strict\";const d=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(!@readableStreamDefaultControllerCanCloseOrEnqueue(_))return;if(@getByIdDirectPrivate(_,\"started\")!==1)return;if((!@isReadableStreamLocked(d)||!@getByIdDirectPrivate(@getByIdDirectPrivate(d,\"reader\"),\"readRequests\")\?.isNotEmpty())&&@readableStreamDefaultControllerGetDesiredSize(_)<=0)return;if(@getByIdDirectPrivate(_,\"pulling\")){@putByIdDirectPrivate(_,\"pullAgain\",!0);return}@assert(!@getByIdDirectPrivate(_,\"pullAgain\")),@putByIdDirectPrivate(_,\"pulling\",!0),@getByIdDirectPrivate(_,\"pullAlgorithm\").@call(@undefined).@then(function(){if(@putByIdDirectPrivate(_,\"pulling\",!1),@getByIdDirectPrivate(_,\"pullAgain\"))@putByIdDirectPrivate(_,\"pullAgain\",!1),@readableStreamDefaultControllerCallPullIfNeeded(_)},function(g){@readableStreamDefaultControllerError(_,g)})})\n"; - -// isReadableStreamLocked -const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamLockedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamLockedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamLockedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsIsReadableStreamLockedCodeLength = 102; -static const JSC::Intrinsic s_readableStreamInternalsIsReadableStreamLockedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsIsReadableStreamLockedCode = "(function (c){\"use strict\";return @assert(@isReadableStream(c)),!!@getByIdDirectPrivate(c,\"reader\")})\n"; - -// readableStreamDefaultControllerGetDesiredSize -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeLength = 283; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCode = "(function (i){\"use strict\";const _=@getByIdDirectPrivate(i,\"controlledReadableStream\"),d=@getByIdDirectPrivate(_,\"state\");if(d===@streamErrored)return null;if(d===@streamClosed)return 0;return @getByIdDirectPrivate(i,\"strategy\").highWaterMark-@getByIdDirectPrivate(i,\"queue\").size})\n"; - -// readableStreamReaderGenericCancel -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamReaderGenericCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamReaderGenericCancelCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamReaderGenericCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamReaderGenericCancelCodeLength = 133; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamReaderGenericCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamReaderGenericCancelCode = "(function (c,p){\"use strict\";const u=@getByIdDirectPrivate(c,\"ownerReadableStream\");return @assert(!!u),@readableStreamCancel(u,p)})\n"; - -// readableStreamCancel -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamCancelCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamCancelCodeLength = 509; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamCancelCode = "(function (b,D){\"use strict\";@putByIdDirectPrivate(b,\"disturbed\",!0);const I=@getByIdDirectPrivate(b,\"state\");if(I===@streamClosed)return @Promise.@resolve();if(I===@streamErrored)return @Promise.@reject(@getByIdDirectPrivate(b,\"storedError\"));@readableStreamClose(b);var _=@getByIdDirectPrivate(b,\"readableStreamController\"),d=_.@cancel;if(d)return d(_,D).@then(function(){});var f=_.close;if(f)return @Promise.@resolve(_.close(D));@throwTypeError(\"ReadableStreamController has no cancel or close method\")})\n"; - -// readableStreamDefaultControllerCancel -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeLength = 146; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerCancelCode = "(function (d,u){\"use strict\";return @putByIdDirectPrivate(d,\"queue\",@newQueue()),@getByIdDirectPrivate(d,\"cancelAlgorithm\").@call(@undefined,u)})\n"; - -// readableStreamDefaultControllerPull -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerPullCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerPullCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerPullCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerPullCodeLength = 519; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerPullCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerPullCode = "(function (a){\"use strict\";var d=@getByIdDirectPrivate(a,\"queue\");if(d.content.isNotEmpty()){const y=@dequeueValue(d);if(@getByIdDirectPrivate(a,\"closeRequested\")&&d.content.isEmpty())@readableStreamClose(@getByIdDirectPrivate(a,\"controlledReadableStream\"));else @readableStreamDefaultControllerCallPullIfNeeded(a);return @createFulfilledPromise({value:y,done:!1})}const i=@readableStreamAddReadRequest(@getByIdDirectPrivate(a,\"controlledReadableStream\"));return @readableStreamDefaultControllerCallPullIfNeeded(a),i})\n"; - -// readableStreamDefaultControllerClose -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeLength = 266; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerCloseCode = "(function (d){\"use strict\";if(@assert(@readableStreamDefaultControllerCanCloseOrEnqueue(d)),@putByIdDirectPrivate(d,\"closeRequested\",!0),@getByIdDirectPrivate(d,\"queue\")\?.content\?.isEmpty())@readableStreamClose(@getByIdDirectPrivate(d,\"controlledReadableStream\"))})\n"; - -// readableStreamClose -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamCloseCodeLength = 617; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamCloseCode = "(function (i){\"use strict\";if(@assert(@getByIdDirectPrivate(i,\"state\")===@streamReadable),@putByIdDirectPrivate(i,\"state\",@streamClosed),!@getByIdDirectPrivate(i,\"reader\"))return;if(@isReadableStreamDefaultReader(@getByIdDirectPrivate(i,\"reader\"))){const p=@getByIdDirectPrivate(@getByIdDirectPrivate(i,\"reader\"),\"readRequests\");if(p.isNotEmpty()){@putByIdDirectPrivate(@getByIdDirectPrivate(i,\"reader\"),\"readRequests\",@createFIFO());for(var c=p.shift();c;c=p.shift())@fulfillPromise(c,{value:@undefined,done:!0})}}@getByIdDirectPrivate(@getByIdDirectPrivate(i,\"reader\"),\"closedPromiseCapability\").@resolve.@call()})\n"; - -// readableStreamFulfillReadRequest -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamFulfillReadRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamFulfillReadRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamFulfillReadRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamFulfillReadRequestCodeLength = 157; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamFulfillReadRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamFulfillReadRequestCode = "(function (p,P,_){\"use strict\";const b=@getByIdDirectPrivate(@getByIdDirectPrivate(p,\"reader\"),\"readRequests\").shift();@fulfillPromise(b,{value:P,done:_})})\n"; - -// readableStreamDefaultControllerEnqueue -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeLength = 659; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCode = "(function (_,b){\"use strict\";const f=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(@assert(@readableStreamDefaultControllerCanCloseOrEnqueue(_)),@isReadableStreamLocked(f)&&@getByIdDirectPrivate(@getByIdDirectPrivate(f,\"reader\"),\"readRequests\")\?.isNotEmpty()){@readableStreamFulfillReadRequest(f,b,!1),@readableStreamDefaultControllerCallPullIfNeeded(_);return}try{let v=1;if(@getByIdDirectPrivate(_,\"strategy\").size!==@undefined)v=@getByIdDirectPrivate(_,\"strategy\").size(b);@enqueueValueWithSize(@getByIdDirectPrivate(_,\"queue\"),b,v)}catch(v){throw @readableStreamDefaultControllerError(_,v),v}@readableStreamDefaultControllerCallPullIfNeeded(_)})\n"; - -// readableStreamDefaultReaderRead -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultReaderReadCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultReaderReadCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultReaderReadCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultReaderReadCodeLength = 491; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultReaderReadCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultReaderReadCode = "(function (i){\"use strict\";const P=@getByIdDirectPrivate(i,\"ownerReadableStream\");@assert(!!P);const c=@getByIdDirectPrivate(P,\"state\");if(@putByIdDirectPrivate(P,\"disturbed\",!0),c===@streamClosed)return @createFulfilledPromise({value:@undefined,done:!0});if(c===@streamErrored)return @Promise.@reject(@getByIdDirectPrivate(P,\"storedError\"));return @assert(c===@streamReadable),@getByIdDirectPrivate(P,\"readableStreamController\").@pull(@getByIdDirectPrivate(P,\"readableStreamController\"))})\n"; - -// readableStreamAddReadRequest -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamAddReadRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamAddReadRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamAddReadRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamAddReadRequestCodeLength = 274; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamAddReadRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamAddReadRequestCode = "(function (i){\"use strict\";@assert(@isReadableStreamDefaultReader(@getByIdDirectPrivate(i,\"reader\"))),@assert(@getByIdDirectPrivate(i,\"state\")==@streamReadable);const g=@newPromise();return @getByIdDirectPrivate(@getByIdDirectPrivate(i,\"reader\"),\"readRequests\").push(g),g})\n"; - -// isReadableStreamDisturbed -const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamDisturbedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamDisturbedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamDisturbedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsIsReadableStreamDisturbedCodeLength = 103; -static const JSC::Intrinsic s_readableStreamInternalsIsReadableStreamDisturbedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsIsReadableStreamDisturbedCode = "(function (c){\"use strict\";return @assert(@isReadableStream(c)),@getByIdDirectPrivate(c,\"disturbed\")})\n"; - -// readableStreamReaderGenericRelease -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeLength = 813; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamReaderGenericReleaseCode = "(function (c){\"use strict\";if(@assert(!!@getByIdDirectPrivate(c,\"ownerReadableStream\")),@assert(@getByIdDirectPrivate(@getByIdDirectPrivate(c,\"ownerReadableStream\"),\"reader\")===c),@getByIdDirectPrivate(@getByIdDirectPrivate(c,\"ownerReadableStream\"),\"state\")===@streamReadable)@getByIdDirectPrivate(c,\"closedPromiseCapability\").@reject.@call(@undefined,@makeTypeError(\"releasing lock of reader whose stream is still in readable state\"));else @putByIdDirectPrivate(c,\"closedPromiseCapability\",{@promise:@newHandledRejectedPromise(@makeTypeError(\"reader released lock\"))});const s=@getByIdDirectPrivate(c,\"closedPromiseCapability\").@promise;@markPromiseAsHandled(s),@putByIdDirectPrivate(@getByIdDirectPrivate(c,\"ownerReadableStream\"),\"reader\",@undefined),@putByIdDirectPrivate(c,\"ownerReadableStream\",@undefined)})\n"; - -// readableStreamDefaultControllerCanCloseOrEnqueue -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeLength = 180; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCode = "(function (a){\"use strict\";return!@getByIdDirectPrivate(a,\"closeRequested\")&&@getByIdDirectPrivate(@getByIdDirectPrivate(a,\"controlledReadableStream\"),\"state\")===@streamReadable})\n"; - -// lazyLoadStream -const JSC::ConstructAbility s_readableStreamInternalsLazyLoadStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsLazyLoadStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsLazyLoadStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsLazyLoadStreamCodeLength = 1589; -static const JSC::Intrinsic s_readableStreamInternalsLazyLoadStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsLazyLoadStreamCode = "(function (b,f){\"use strict\";var j=@getByIdDirectPrivate(b,\"bunNativeType\"),m=@getByIdDirectPrivate(b,\"bunNativePtr\"),q=@lazyStreamPrototypeMap.@get(j);if(q===@undefined){let U=function(Z){var{c:_,v:p}=this;this.c=@undefined,this.v=@undefined,J(Z,_,p)},W=function(Z){try{Z.close()}catch(_){globalThis.reportError(_)}},X=function(Z,_,p,z){z[0]=!1;var A;try{A=x(Z,p,z)}catch(C){return _.error(C)}return J(A,_,p)};var Q=U,P=W,O=X,[x,B,D,E,F,G,H]=@lazyLoad(j),I=[!1],J;J=function Z(_,p,z){if(_&&@isPromise(_))return _.then(U.bind({c:p,v:z}),(A)=>p.error(A));else if(typeof _===\"number\")if(z&&z.byteLength===_&&z.buffer===p.byobRequest\?.view\?.buffer)p.byobRequest.respondWithNewView(z);else p.byobRequest.respond(_);else if(_.constructor===@Uint8Array)p.enqueue(_);if(I[0]||_===!1)@enqueueJob(W,p),I[0]=!1};const Y=F\?new FinalizationRegistry(F):null;q=class Z{constructor(_,p,z){if(this.#f=_,this.#b={},this.pull=this.#j.bind(this),this.cancel=this.#m.bind(this),this.autoAllocateChunkSize=p,z!==@undefined)this.start=(A)=>{A.enqueue(z)};if(Y)Y.register(this,_,this.#b)}#b;pull;cancel;start;#f;type=\"bytes\";autoAllocateChunkSize=0;static startSync=B;#j(_){var p=this.#f;if(!p){_.close();return}X(p,_,_.byobRequest.view,I)}#m(_){var p=this.#f;Y&&Y.unregister(this.#b),G&&G(p,!1),D(p,_)}static deinit=F;static drain=H},@lazyStreamPrototypeMap.@set(j,q)}const K=q.startSync(m,f);var L;const{drain:M,deinit:N}=q;if(M)L=M(m);if(K===0){if(F&&m&&@enqueueJob(F,m),(L\?.byteLength\?\?0)>0)return{start(U){U.enqueue(L),U.close()},type:\"bytes\"};return{start(U){U.close()},type:\"bytes\"}}return new q(m,K,L)})\n"; - -// readableStreamIntoArray -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamIntoArrayCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamIntoArrayCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamIntoArrayCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamIntoArrayCodeLength = 247; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamIntoArrayCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamIntoArrayCode = "(function (_){\"use strict\";var b=_.getReader(),f=b.readMany();async function g(j){if(j.done)return[];var q=j.value||[];while(!0){var v=await b.read();if(v.done)break;q=q.concat(v.value)}return q}if(f&&@isPromise(f))return f.@then(g);return g(f)})\n"; - -// readableStreamIntoText -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamIntoTextCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamIntoTextCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamIntoTextCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamIntoTextCodeLength = 214; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamIntoTextCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamIntoTextCode = "(function (_){\"use strict\";const[d,n]=@createTextStream(@getByIdDirectPrivate(_,\"highWaterMark\")),u=@readStreamIntoSink(_,d,!1);if(u&&@isPromise(u))return @Promise.@resolve(u).@then(n.@promise);return n.@promise})\n"; - -// readableStreamToArrayBufferDirect -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeLength = 727; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamToArrayBufferDirectCode = "(function (v,_){\"use strict\";var j=new @Bun.ArrayBufferSink;@putByIdDirectPrivate(v,\"underlyingSource\",@undefined);var q=@getByIdDirectPrivate(v,\"highWaterMark\");j.start(q\?{highWaterMark:q}:{});var w=@newPromiseCapability(@Promise),x=!1,z=_.pull,A=_.close,B={start(){},close(D){if(!x){if(x=!0,A)A();@fulfillPromise(w.@promise,j.end())}},end(){if(!x){if(x=!0,A)A();@fulfillPromise(w.@promise,j.end())}},flush(){return 0},write:j.write.bind(j)},C=!1;try{const D=z(B);if(D&&@isObject(D)&&@isPromise(D))return async function(F,G,H){while(!x)await H(F);return await G}(B,promise,z);return w.@promise}catch(D){return C=!0,@readableStreamError(v,D),@Promise.@reject(D)}finally{if(!C&&v)@readableStreamClose(v);B=A=j=z=v=@undefined}})\n"; - -// readableStreamToTextDirect -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamToTextDirectCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamToTextDirectCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamToTextDirectCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamToTextDirectCodeLength = 278; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamToTextDirectCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamToTextDirectCode = "(async function (_,f){\"use strict\";const j=@initializeTextStream.@call(_,f,@undefined);var k=_.getReader();while(@getByIdDirectPrivate(_,\"state\")===@streamReadable){var n=await k.read();if(n.done)break}try{k.releaseLock()}catch(q){}return k=@undefined,_=@undefined,j.@promise})\n"; - -// readableStreamToArrayDirect -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamToArrayDirectCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamToArrayDirectCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamToArrayDirectCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamToArrayDirectCodeLength = 371; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamToArrayDirectCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamToArrayDirectCode = "(async function (_,k){\"use strict\";const f=@initializeArrayStream.@call(_,k,@undefined);k=@undefined;var j=_.getReader();try{while(@getByIdDirectPrivate(_,\"state\")===@streamReadable){var q=await j.read();if(q.done)break}try{j.releaseLock()}catch(v){}return j=@undefined,@Promise.@resolve(f.@promise)}catch(v){throw v}finally{_=@undefined,j=@undefined}return f.@promise})\n"; - -// readableStreamDefineLazyIterators -const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeLength = 516; -static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefineLazyIteratorsCode = "(function (_){\"use strict\";var g=globalThis.Symbol.asyncIterator,h=async function*q(w,x){var z=w.getReader(),B;try{while(!0){var D,F;const G=z.readMany();if(@isPromise(G))({done:D,value:F}=await G);else({done:D,value:F}=G);if(D)return;yield*F}}catch(G){B=G}finally{if(z.releaseLock(),!x)w.cancel(B);if(B)throw B}},j=function q(){return h(this,!1)},k=function q({preventCancel:w=!1}={preventCancel:!1}){return h(this,w)};return @Object.@defineProperty(_,g,{value:j}),@Object.@defineProperty(_,\"values\",{value:k}),_})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().readableStreamInternalsBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().readableStreamInternalsBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* TransformStreamDefaultController.ts */ -// initializeTransformStreamDefaultController -const JSC::ConstructAbility s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeLength = 40; -static const JSC::Intrinsic s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCode = "(function (){\"use strict\";return this})\n"; - -// desiredSize -const JSC::ConstructAbility s_transformStreamDefaultControllerDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamDefaultControllerDesiredSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamDefaultControllerDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamDefaultControllerDesiredSizeCodeLength = 339; -static const JSC::Intrinsic s_transformStreamDefaultControllerDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamDefaultControllerDesiredSizeCode = "(function (){\"use strict\";if(!@isTransformStreamDefaultController(this))throw @makeThisTypeError(\"TransformStreamDefaultController\",\"enqueue\");const i=@getByIdDirectPrivate(this,\"stream\"),h=@getByIdDirectPrivate(i,\"readable\"),C=@getByIdDirectPrivate(h,\"readableStreamController\");return @readableStreamDefaultControllerGetDesiredSize(C)})\n"; - -// enqueue -const JSC::ConstructAbility s_transformStreamDefaultControllerEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamDefaultControllerEnqueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamDefaultControllerEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamDefaultControllerEnqueueCodeLength = 195; -static const JSC::Intrinsic s_transformStreamDefaultControllerEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamDefaultControllerEnqueueCode = "(function (e){\"use strict\";if(!@isTransformStreamDefaultController(this))throw @makeThisTypeError(\"TransformStreamDefaultController\",\"enqueue\");@transformStreamDefaultControllerEnqueue(this,e)})\n"; - -// error -const JSC::ConstructAbility s_transformStreamDefaultControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamDefaultControllerErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamDefaultControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamDefaultControllerErrorCodeLength = 191; -static const JSC::Intrinsic s_transformStreamDefaultControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamDefaultControllerErrorCode = "(function (r){\"use strict\";if(!@isTransformStreamDefaultController(this))throw @makeThisTypeError(\"TransformStreamDefaultController\",\"error\");@transformStreamDefaultControllerError(this,r)})\n"; - -// terminate -const JSC::ConstructAbility s_transformStreamDefaultControllerTerminateCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_transformStreamDefaultControllerTerminateCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_transformStreamDefaultControllerTerminateCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_transformStreamDefaultControllerTerminateCodeLength = 196; -static const JSC::Intrinsic s_transformStreamDefaultControllerTerminateCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamDefaultControllerTerminateCode = "(function (){\"use strict\";if(!@isTransformStreamDefaultController(this))throw @makeThisTypeError(\"TransformStreamDefaultController\",\"terminate\");@transformStreamDefaultControllerTerminate(this)})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().transformStreamDefaultControllerBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().transformStreamDefaultControllerBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ReadableStreamBYOBReader.ts */ -// initializeReadableStreamBYOBReader -const JSC::ConstructAbility s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeLength = 485; -static const JSC::Intrinsic s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCode = "(function (_){\"use strict\";if(!@isReadableStream(_))@throwTypeError(\"ReadableStreamBYOBReader needs a ReadableStream\");if(!@isReadableByteStreamController(@getByIdDirectPrivate(_,\"readableStreamController\")))@throwTypeError(\"ReadableStreamBYOBReader needs a ReadableByteStreamController\");if(@isReadableStreamLocked(_))@throwTypeError(\"ReadableStream is locked\");return @readableStreamReaderGenericInitialize(this,_),@putByIdDirectPrivate(this,\"readIntoRequests\",@createFIFO()),this})\n"; - -// cancel -const JSC::ConstructAbility s_readableStreamBYOBReaderCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamBYOBReaderCancelCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamBYOBReaderCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamBYOBReaderCancelCodeLength = 351; -static const JSC::Intrinsic s_readableStreamBYOBReaderCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamBYOBReaderCancelCode = "(function (r){\"use strict\";if(!@isReadableStreamBYOBReader(this))return @Promise.@reject(@makeThisTypeError(\"ReadableStreamBYOBReader\",\"cancel\"));if(!@getByIdDirectPrivate(this,\"ownerReadableStream\"))return @Promise.@reject(@makeTypeError(\"cancel() called on a reader owned by no readable stream\"));return @readableStreamReaderGenericCancel(this,r)})\n"; - -// read -const JSC::ConstructAbility s_readableStreamBYOBReaderReadCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamBYOBReaderReadCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamBYOBReaderReadCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamBYOBReaderReadCodeLength = 648; -static const JSC::Intrinsic s_readableStreamBYOBReaderReadCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamBYOBReaderReadCode = "(function (n){\"use strict\";if(!@isReadableStreamBYOBReader(this))return @Promise.@reject(@makeThisTypeError(\"ReadableStreamBYOBReader\",\"read\"));if(!@getByIdDirectPrivate(this,\"ownerReadableStream\"))return @Promise.@reject(@makeTypeError(\"read() called on a reader owned by no readable stream\"));if(!@isObject(n))return @Promise.@reject(@makeTypeError(\"Provided view is not an object\"));if(!@ArrayBuffer.@isView(n))return @Promise.@reject(@makeTypeError(\"Provided view is not an ArrayBufferView\"));if(n.byteLength===0)return @Promise.@reject(@makeTypeError(\"Provided view cannot have a 0 byteLength\"));return @readableStreamBYOBReaderRead(this,n)})\n"; - -// releaseLock -const JSC::ConstructAbility s_readableStreamBYOBReaderReleaseLockCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamBYOBReaderReleaseLockCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamBYOBReaderReleaseLockCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamBYOBReaderReleaseLockCodeLength = 382; -static const JSC::Intrinsic s_readableStreamBYOBReaderReleaseLockCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamBYOBReaderReleaseLockCode = "(function (){\"use strict\";if(!@isReadableStreamBYOBReader(this))throw @makeThisTypeError(\"ReadableStreamBYOBReader\",\"releaseLock\");if(!@getByIdDirectPrivate(this,\"ownerReadableStream\"))return;if(@getByIdDirectPrivate(this,\"readIntoRequests\")\?.isNotEmpty())@throwTypeError(\"There are still pending read requests, cannot release the lock\");@readableStreamReaderGenericRelease(this)})\n"; - -// closed -const JSC::ConstructAbility s_readableStreamBYOBReaderClosedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamBYOBReaderClosedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamBYOBReaderClosedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamBYOBReaderClosedCodeLength = 219; -static const JSC::Intrinsic s_readableStreamBYOBReaderClosedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamBYOBReaderClosedCode = "(function (){\"use strict\";if(!@isReadableStreamBYOBReader(this))return @Promise.@reject(@makeGetterTypeError(\"ReadableStreamBYOBReader\",\"closed\"));return @getByIdDirectPrivate(this,\"closedPromiseCapability\").@promise})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().readableStreamBYOBReaderBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().readableStreamBYOBReaderBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* JSBufferConstructor.ts */ -// from -const JSC::ConstructAbility s_jsBufferConstructorFromCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_jsBufferConstructorFromCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_jsBufferConstructorFromCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_jsBufferConstructorFromCodeLength = 1107; -static const JSC::Intrinsic s_jsBufferConstructorFromCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferConstructorFromCode = "(function (n){\"use strict\";if(@isUndefinedOrNull(n))@throwTypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object.\");if(typeof n===\"string\"||typeof n===\"object\"&&(@isTypedArrayView(n)||n instanceof @ArrayBuffer||n instanceof SharedArrayBuffer||n instanceof String))switch(@argumentCount()){case 1:return new @Buffer(n);case 2:return new @Buffer(n,@argument(1));default:return new @Buffer(n,@argument(1),@argument(2))}var _=@toObject(n,\"The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object.\");if(!@isJSArray(_)){const f=@tryGetByIdWithWellKnownSymbol(n,\"toPrimitive\");if(f){const u=f.@call(n,\"string\");if(typeof u===\"string\")switch(@argumentCount()){case 1:return new @Buffer(u);case 2:return new @Buffer(u,@argument(1));default:return new @Buffer(u,@argument(1),@argument(2))}}if(!(\"length\"in _)||@isCallable(_))@throwTypeError(\"The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object.\")}return new @Buffer(@Uint8Array.from(_).buffer)})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().jsBufferConstructorBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().jsBufferConstructorBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ReadableStreamDefaultReader.ts */ -// initializeReadableStreamDefaultReader -const JSC::ConstructAbility s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeLength = 314; -static const JSC::Intrinsic s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCode = "(function (n){\"use strict\";if(!@isReadableStream(n))@throwTypeError(\"ReadableStreamDefaultReader needs a ReadableStream\");if(@isReadableStreamLocked(n))@throwTypeError(\"ReadableStream is locked\");return @readableStreamReaderGenericInitialize(this,n),@putByIdDirectPrivate(this,\"readRequests\",@createFIFO()),this})\n"; - -// cancel -const JSC::ConstructAbility s_readableStreamDefaultReaderCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultReaderCancelCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultReaderCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultReaderCancelCodeLength = 357; -static const JSC::Intrinsic s_readableStreamDefaultReaderCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultReaderCancelCode = "(function (e){\"use strict\";if(!@isReadableStreamDefaultReader(this))return @Promise.@reject(@makeThisTypeError(\"ReadableStreamDefaultReader\",\"cancel\"));if(!@getByIdDirectPrivate(this,\"ownerReadableStream\"))return @Promise.@reject(@makeTypeError(\"cancel() called on a reader owned by no readable stream\"));return @readableStreamReaderGenericCancel(this,e)})\n"; - -// readMany -const JSC::ConstructAbility s_readableStreamDefaultReaderReadManyCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultReaderReadManyCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultReaderReadManyCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultReaderReadManyCodeLength = 2598; -static const JSC::Intrinsic s_readableStreamDefaultReaderReadManyCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultReaderReadManyCode = "(function (){\"use strict\";if(!@isReadableStreamDefaultReader(this))@throwTypeError(\"ReadableStreamDefaultReader.readMany() should not be called directly\");const _=@getByIdDirectPrivate(this,\"ownerReadableStream\");if(!_)@throwTypeError(\"readMany() called on a reader owned by no readable stream\");const d=@getByIdDirectPrivate(_,\"state\");if(@putByIdDirectPrivate(_,\"disturbed\",!0),d===@streamClosed)return{value:[],size:0,done:!0};else if(d===@streamErrored)throw @getByIdDirectPrivate(_,\"storedError\");var S=@getByIdDirectPrivate(_,\"readableStreamController\"),D=@getByIdDirectPrivate(S,\"queue\");if(!D)return S.@pull(S).@then(function({done:B,value:C}){return B\?{done:!0,value:[],size:0}:{value:[C],size:1,done:!1}});const Q=D.content;var W=D.size,j=Q.toArray(!1),k=j.length;if(k>0){var w=@newArrayWithSize(k);if(@isReadableByteStreamController(S)){{const B=j[0];if(!(@ArrayBuffer.@isView(B)||B instanceof @ArrayBuffer))@putByValDirect(w,0,new @Uint8Array(B.buffer,B.byteOffset,B.byteLength));else @putByValDirect(w,0,B)}for(var x=1;x<k;x++){const B=j[x];if(!(@ArrayBuffer.@isView(B)||B instanceof @ArrayBuffer))@putByValDirect(w,x,new @Uint8Array(B.buffer,B.byteOffset,B.byteLength));else @putByValDirect(w,x,B)}}else{@putByValDirect(w,0,j[0].value);for(var x=1;x<k;x++)@putByValDirect(w,x,j[x].value)}if(@resetQueue(@getByIdDirectPrivate(S,\"queue\")),@getByIdDirectPrivate(S,\"closeRequested\"))@readableStreamClose(@getByIdDirectPrivate(S,\"controlledReadableStream\"));else if(@isReadableStreamDefaultController(S))@readableStreamDefaultControllerCallPullIfNeeded(S);else if(@isReadableByteStreamController(S))@readableByteStreamControllerCallPullIfNeeded(S);return{value:w,size:W,done:!1}}var y=(B)=>{if(B.done)return{value:[],size:0,done:!0};var C=@getByIdDirectPrivate(_,\"readableStreamController\"),E=@getByIdDirectPrivate(C,\"queue\"),F=[B.value].concat(E.content.toArray(!1)),G=F.length;if(@isReadableByteStreamController(C))for(var H=0;H<G;H++){const J=F[H];if(!(@ArrayBuffer.@isView(J)||J instanceof @ArrayBuffer)){const{buffer:K,byteOffset:N,byteLength:T}=J;@putByValDirect(F,H,new @Uint8Array(K,N,T))}}else for(var H=1;H<G;H++)@putByValDirect(F,H,F[H].value);var I=E.size;if(@resetQueue(E),@getByIdDirectPrivate(C,\"closeRequested\"))@readableStreamClose(@getByIdDirectPrivate(C,\"controlledReadableStream\"));else if(@isReadableStreamDefaultController(C))@readableStreamDefaultControllerCallPullIfNeeded(C);else if(@isReadableByteStreamController(C))@readableByteStreamControllerCallPullIfNeeded(C);return{value:F,size:I,done:!1}},A=S.@pull(S);if(A&&@isPromise(A))return A.@then(y);return y(A)})\n"; - -// read -const JSC::ConstructAbility s_readableStreamDefaultReaderReadCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultReaderReadCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultReaderReadCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultReaderReadCodeLength = 348; -static const JSC::Intrinsic s_readableStreamDefaultReaderReadCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultReaderReadCode = "(function (){\"use strict\";if(!@isReadableStreamDefaultReader(this))return @Promise.@reject(@makeThisTypeError(\"ReadableStreamDefaultReader\",\"read\"));if(!@getByIdDirectPrivate(this,\"ownerReadableStream\"))return @Promise.@reject(@makeTypeError(\"read() called on a reader owned by no readable stream\"));return @readableStreamDefaultReaderRead(this)})\n"; - -// releaseLock -const JSC::ConstructAbility s_readableStreamDefaultReaderReleaseLockCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultReaderReleaseLockCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultReaderReleaseLockCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultReaderReleaseLockCodeLength = 384; -static const JSC::Intrinsic s_readableStreamDefaultReaderReleaseLockCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultReaderReleaseLockCode = "(function (){\"use strict\";if(!@isReadableStreamDefaultReader(this))throw @makeThisTypeError(\"ReadableStreamDefaultReader\",\"releaseLock\");if(!@getByIdDirectPrivate(this,\"ownerReadableStream\"))return;if(@getByIdDirectPrivate(this,\"readRequests\")\?.isNotEmpty())@throwTypeError(\"There are still pending read requests, cannot release the lock\");@readableStreamReaderGenericRelease(this)})\n"; - -// closed -const JSC::ConstructAbility s_readableStreamDefaultReaderClosedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultReaderClosedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultReaderClosedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultReaderClosedCodeLength = 225; -static const JSC::Intrinsic s_readableStreamDefaultReaderClosedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultReaderClosedCode = "(function (){\"use strict\";if(!@isReadableStreamDefaultReader(this))return @Promise.@reject(@makeGetterTypeError(\"ReadableStreamDefaultReader\",\"closed\"));return @getByIdDirectPrivate(this,\"closedPromiseCapability\").@promise})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().readableStreamDefaultReaderBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().readableStreamDefaultReaderBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* StreamInternals.ts */ -// markPromiseAsHandled -const JSC::ConstructAbility s_streamInternalsMarkPromiseAsHandledCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsMarkPromiseAsHandledCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsMarkPromiseAsHandledCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsMarkPromiseAsHandledCodeLength = 169; -static const JSC::Intrinsic s_streamInternalsMarkPromiseAsHandledCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsMarkPromiseAsHandledCode = "(function (_){\"use strict\";@assert(@isPromise(_)),@putPromiseInternalField(_,@promiseFieldFlags,@getPromiseInternalField(_,@promiseFieldFlags)|@promiseFlagsIsHandled)})\n"; - -// shieldingPromiseResolve -const JSC::ConstructAbility s_streamInternalsShieldingPromiseResolveCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsShieldingPromiseResolveCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsShieldingPromiseResolveCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsShieldingPromiseResolveCodeLength = 124; -static const JSC::Intrinsic s_streamInternalsShieldingPromiseResolveCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsShieldingPromiseResolveCode = "(function (a){\"use strict\";const d=@Promise.@resolve(a);if(d.@then===@undefined)d.@then=@Promise.prototype.@then;return d})\n"; - -// promiseInvokeOrNoopMethodNoCatch -const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeLength = 125; -static const JSC::Intrinsic s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCode = "(function (_,n,p){\"use strict\";if(n===@undefined)return @Promise.@resolve();return @shieldingPromiseResolve(n.@apply(_,p))})\n"; - -// promiseInvokeOrNoopNoCatch -const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopNoCatchCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopNoCatchCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopNoCatchCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsPromiseInvokeOrNoopNoCatchCodeLength = 84; -static const JSC::Intrinsic s_streamInternalsPromiseInvokeOrNoopNoCatchCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPromiseInvokeOrNoopNoCatchCode = "(function (d,i,n){\"use strict\";return @promiseInvokeOrNoopMethodNoCatch(d,d[i],n)})\n"; - -// promiseInvokeOrNoopMethod -const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopMethodCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopMethodCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopMethodCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsPromiseInvokeOrNoopMethodCodeLength = 122; -static const JSC::Intrinsic s_streamInternalsPromiseInvokeOrNoopMethodCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPromiseInvokeOrNoopMethodCode = "(function (n,p,u){\"use strict\";try{return @promiseInvokeOrNoopMethodNoCatch(n,p,u)}catch(P){return @Promise.@reject(P)}})\n"; - -// promiseInvokeOrNoop -const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsPromiseInvokeOrNoopCodeLength = 116; -static const JSC::Intrinsic s_streamInternalsPromiseInvokeOrNoopCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPromiseInvokeOrNoopCode = "(function (n,d,p){\"use strict\";try{return @promiseInvokeOrNoopNoCatch(n,d,p)}catch(u){return @Promise.@reject(u)}})\n"; - -// promiseInvokeOrFallbackOrNoop -const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeLength = 198; -static const JSC::Intrinsic s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPromiseInvokeOrFallbackOrNoopCode = "(function (p,i,n,u,P){\"use strict\";try{const _=p[i];if(_===@undefined)return @promiseInvokeOrNoopNoCatch(p,u,P);return @shieldingPromiseResolve(_.@apply(p,n))}catch(_){return @Promise.@reject(_)}})\n"; - -// validateAndNormalizeQueuingStrategy -const JSC::ConstructAbility s_streamInternalsValidateAndNormalizeQueuingStrategyCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsValidateAndNormalizeQueuingStrategyCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsValidateAndNormalizeQueuingStrategyCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsValidateAndNormalizeQueuingStrategyCodeLength = 263; -static const JSC::Intrinsic s_streamInternalsValidateAndNormalizeQueuingStrategyCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsValidateAndNormalizeQueuingStrategyCode = "(function (d,_){\"use strict\";if(d!==@undefined&&typeof d!==\"function\")@throwTypeError(\"size parameter must be a function\");const b=@toNumber(_);if(@isNaN(b)||b<0)@throwRangeError(\"highWaterMark value is negative or not a number\");return{size:d,highWaterMark:b}})\n"; - -// createFIFO -const JSC::ConstructAbility s_streamInternalsCreateFIFOCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsCreateFIFOCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsCreateFIFOCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_streamInternalsCreateFIFOCodeLength = 1472; -static const JSC::Intrinsic s_streamInternalsCreateFIFOCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsCreateFIFOCode = "(function (){\"use strict\";var g=@Array.prototype.slice;class b{constructor(){this._head=0,this._tail=0,this._capacityMask=3,this._list=@newArrayWithSize(4)}_head;_tail;_capacityMask;_list;size(){if(this._head===this._tail)return 0;if(this._head<this._tail)return this._tail-this._head;else return this._capacityMask+1-(this._head-this._tail)}isEmpty(){return this.size()==0}isNotEmpty(){return this.size()>0}shift(){var{_head:k,_tail:v,_list:w,_capacityMask:x}=this;if(k===v)return @undefined;var z=w[k];if(@putByValDirect(w,k,@undefined),k=this._head=k+1&x,k<2&&v>1e4&&v<=w.length>>>2)this._shrinkArray();return z}peek(){if(this._head===this._tail)return @undefined;return this._list[this._head]}push(k){var v=this._tail;if(@putByValDirect(this._list,v,k),this._tail=v+1&this._capacityMask,this._tail===this._head)this._growArray()}toArray(k){var v=this._list,w=@toLength(v.length);if(k||this._head>this._tail){var x=@toLength(this._head),z=@toLength(this._tail),A=@toLength(w-x+z),B=@newArrayWithSize(A),E=0;for(var F=x;F<w;F++)@putByValDirect(B,E++,v[F]);for(var F=0;F<z;F++)@putByValDirect(B,E++,v[F]);return B}else return g.@call(v,this._head,this._tail)}clear(){this._head=0,this._tail=0,this._list.fill(@undefined)}_growArray(){if(this._head)this._list=this.toArray(!0),this._head=0;this._tail=@toLength(this._list.length),this._list.length<<=1,this._capacityMask=this._capacityMask<<1|1}shrinkArray(){this._list.length>>>=1,this._capacityMask>>>=1}}return new b})\n"; - -// newQueue -const JSC::ConstructAbility s_streamInternalsNewQueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsNewQueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsNewQueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsNewQueueCodeLength = 65; -static const JSC::Intrinsic s_streamInternalsNewQueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsNewQueueCode = "(function (){\"use strict\";return{content:@createFIFO(),size:0}})\n"; - -// dequeueValue -const JSC::ConstructAbility s_streamInternalsDequeueValueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsDequeueValueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsDequeueValueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsDequeueValueCodeLength = 106; -static const JSC::Intrinsic s_streamInternalsDequeueValueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsDequeueValueCode = "(function (a){\"use strict\";const n=a.content.shift();if(a.size-=n.size,a.size<0)a.size=0;return n.value})\n"; - -// enqueueValueWithSize -const JSC::ConstructAbility s_streamInternalsEnqueueValueWithSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsEnqueueValueWithSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsEnqueueValueWithSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsEnqueueValueWithSizeCodeLength = 161; -static const JSC::Intrinsic s_streamInternalsEnqueueValueWithSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsEnqueueValueWithSizeCode = "(function (r,c,d){\"use strict\";if(d=@toNumber(d),!@isFinite(d)||d<0)@throwRangeError(\"size has an incorrect value\");r.content.push({value:c,size:d}),r.size+=d})\n"; - -// peekQueueValue -const JSC::ConstructAbility s_streamInternalsPeekQueueValueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsPeekQueueValueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsPeekQueueValueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsPeekQueueValueCodeLength = 60; -static const JSC::Intrinsic s_streamInternalsPeekQueueValueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPeekQueueValueCode = "(function (a){\"use strict\";return a.content.peek()\?.value})\n"; - -// resetQueue -const JSC::ConstructAbility s_streamInternalsResetQueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsResetQueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsResetQueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsResetQueueCodeLength = 99; -static const JSC::Intrinsic s_streamInternalsResetQueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsResetQueueCode = "(function (a){\"use strict\";@assert(\"content\"in a),@assert(\"size\"in a),a.content.clear(),a.size=0})\n"; - -// extractSizeAlgorithm -const JSC::ConstructAbility s_streamInternalsExtractSizeAlgorithmCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsExtractSizeAlgorithmCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsExtractSizeAlgorithmCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsExtractSizeAlgorithmCodeLength = 176; -static const JSC::Intrinsic s_streamInternalsExtractSizeAlgorithmCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsExtractSizeAlgorithmCode = "(function (d){\"use strict\";const p=d.size;if(p===@undefined)return()=>1;if(typeof p!==\"function\")@throwTypeError(\"strategy.size must be a function\");return(_)=>{return p(_)}})\n"; - -// extractHighWaterMark -const JSC::ConstructAbility s_streamInternalsExtractHighWaterMarkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsExtractHighWaterMarkCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsExtractHighWaterMarkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsExtractHighWaterMarkCodeLength = 188; -static const JSC::Intrinsic s_streamInternalsExtractHighWaterMarkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsExtractHighWaterMarkCode = "(function (n,c){\"use strict\";const p=n.highWaterMark;if(p===@undefined)return c;if(@isNaN(p)||p<0)@throwRangeError(\"highWaterMark value is negative or not a number\");return @toNumber(p)})\n"; - -// extractHighWaterMarkFromQueuingStrategyInit -const JSC::ConstructAbility s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeLength = 249; -static const JSC::Intrinsic s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCode = "(function (_){\"use strict\";if(!@isObject(_))@throwTypeError(\"QueuingStrategyInit argument must be an object.\");const{highWaterMark:e}=_;if(e===@undefined)@throwTypeError(\"QueuingStrategyInit.highWaterMark member is required.\");return @toNumber(e)})\n"; - -// createFulfilledPromise -const JSC::ConstructAbility s_streamInternalsCreateFulfilledPromiseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsCreateFulfilledPromiseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsCreateFulfilledPromiseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsCreateFulfilledPromiseCodeLength = 81; -static const JSC::Intrinsic s_streamInternalsCreateFulfilledPromiseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsCreateFulfilledPromiseCode = "(function (n){\"use strict\";const r=@newPromise();return @fulfillPromise(r,n),r})\n"; - -// toDictionary -const JSC::ConstructAbility s_streamInternalsToDictionaryCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_streamInternalsToDictionaryCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_streamInternalsToDictionaryCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_streamInternalsToDictionaryCodeLength = 115; -static const JSC::Intrinsic s_streamInternalsToDictionaryCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsToDictionaryCode = "(function (n,_,b){\"use strict\";if(n===@undefined||n===null)return _;if(!@isObject(n))@throwTypeError(b);return n})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().streamInternalsBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().streamInternalsBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ImportMetaObject.ts */ -// loadCJS2ESM -const JSC::ConstructAbility s_importMetaObjectLoadCJS2ESMCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_importMetaObjectLoadCJS2ESMCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_importMetaObjectLoadCJS2ESMCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_importMetaObjectLoadCJS2ESMCodeLength = 1309; -static const JSC::Intrinsic s_importMetaObjectLoadCJS2ESMCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectLoadCJS2ESMCode = "(function (_){\"use strict\";var F=@Loader,W=@createFIFO(),b=_;while(b){var w=F.registry.@get(b);if(!w||!w.state||w.state<=@ModuleFetch)@fulfillModuleSync(b),w=F.registry.@get(b);var x=@getPromiseInternalField(w.fetch,@promiseFieldReactionsOrResult),z=F.parseModule(b,x),B=w.module;if(!B&&z&&@isPromise(z)){var D=@getPromiseInternalField(z,@promiseFieldReactionsOrResult),G=@getPromiseInternalField(z,@promiseFieldFlags),H=G&@promiseStateMask;if(H===@promiseStatePending||D&&@isPromise(D))@throwTypeError(`require() async module \"${b}\" is unsupported`);else if(H===@promiseStateRejected)@throwTypeError(`${D\?.message\?\?\"An error occurred\"} while parsing module \\\"${b}\\\"`);w.module=B=D}else if(z&&!B)w.module=B=z;@setStateToMax(w,@ModuleLink);var I=B.dependenciesMap,J=F.requestedModules(B),L=@newArrayWithSize(J.length);for(var Q=0,T=J.length;Q<T;++Q){var U=J[Q],V=U[0]===\"/\"\?U:F.resolve(U,b),X=F.ensureRegistered(V);if(X.state<@ModuleLink)W.push(V);@putByValDirect(L,Q,X),I.@set(U,X)}w.dependencies=L,w.instantiate=@Promise.resolve(w),w.satisfy=@Promise.resolve(w),b=W.shift();while(b&&(F.registry.@get(b)\?.state\?\?@ModuleFetch)>=@ModuleLink)b=W.shift()}var Y=F.linkAndEvaluateModule(_,@undefined);if(Y&&@isPromise(Y))@throwTypeError(`require() async module \\\"${_}\\\" is unsupported`);return F.registry.@get(_)})\n"; - -// requireESM -const JSC::ConstructAbility s_importMetaObjectRequireESMCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_importMetaObjectRequireESMCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_importMetaObjectRequireESMCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_importMetaObjectRequireESMCodeLength = 419; -static const JSC::Intrinsic s_importMetaObjectRequireESMCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectRequireESMCode = "(function (i){\"use strict\";var a=@Loader.registry.@get(i);if(!a||!a.evaluated)a=@loadCJS2ESM(i);if(!a||!a.evaluated||!a.module)@throwTypeError(`require() failed to evaluate module \"${i}\". This is an internal consistentency error.`);var E=@Loader.getModuleNamespaceObject(a.module);if(E[@commonJSSymbol]===0)return;var b=E.default,f=b\?.[@commonJSSymbol];if(f===0)return b;else if(f&&@isCallable(b))return b();return E})\n"; - -// internalRequire -const JSC::ConstructAbility s_importMetaObjectInternalRequireCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_importMetaObjectInternalRequireCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_importMetaObjectInternalRequireCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_importMetaObjectInternalRequireCodeLength = 611; -static const JSC::Intrinsic s_importMetaObjectInternalRequireCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectInternalRequireCode = "(function (n){\"use strict\";var _=@requireMap.@get(n);const i=n.substring(n.length-5);if(_){if(i===\".node\")return _.exports;return _}if(i===\".json\"){var S=globalThis[Symbol.for(\"_fs\")]||=@Bun.fs(),F=JSON.parse(S.readFileSync(n,\"utf8\"));return @requireMap.@set(n,F),F}else if(i===\".node\"){var b={exports:{}};return process.dlopen(b,n),@requireMap.@set(n,b),b.exports}else if(i===\".toml\"){var S=globalThis[Symbol.for(\"_fs\")]||=@Bun.fs(),F=@Bun.TOML.parse(S.readFileSync(n,\"utf8\"));return @requireMap.@set(n,F),F}else{var F=@requireESM(n);const j=@requireMap.@get(n);if(j)return j;return @requireMap.@set(n,F),F}})\n"; - -// createRequireCache -const JSC::ConstructAbility s_importMetaObjectCreateRequireCacheCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_importMetaObjectCreateRequireCacheCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_importMetaObjectCreateRequireCacheCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_importMetaObjectCreateRequireCacheCodeLength = 891; -static const JSC::Intrinsic s_importMetaObjectCreateRequireCacheCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectCreateRequireCacheCode = "(function (){\"use strict\";class r{id;parent;filename;children=[];paths=[];constructor(w){this.id=w;const c=w.lastIndexOf(\"/\");if(c!==-1&&w.length>c+1)this.filename=w.substring(c+1);else this.filename=w}get loaded(){return!0}require(w){return @internalRequire(@resolveSync(w,this.id))}get exports(){return @requireMap.@get(this.id)\?\?{}}set exports(w){@requireMap.@set(this.id,w)}}var _=new Map;return new Proxy({},{get(w,c){if(@requireMap.@get(c)){var g=_.@get(c);if(!g)g=new r(c),_.@set(c,g);return g}},set(w,c,b){if(!_.@has(c))_.@set(c,new r(c));return @requireMap.@set(c,b\?.exports),!0},has(w,c){return @requireMap.@has(c)},deleteProperty(w,c){return _.@delete(c),@requireMap.@delete(c),@Loader.registry.@delete(c),!0},ownKeys(w){return[...@requireMap.@keys()]},getPrototypeOf(w){return null},getOwnPropertyDescriptor(w,c){if(@requireMap.@has(c))return{configurable:!0,enumerable:!0}}})})\n"; - -// require -const JSC::ConstructAbility s_importMetaObjectRequireCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_importMetaObjectRequireCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_importMetaObjectRequireCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_importMetaObjectRequireCodeLength = 172; -static const JSC::Intrinsic s_importMetaObjectRequireCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectRequireCode = "(function (r){var _=this\?.path\?\?arguments.callee.path;if(typeof r!==\"string\")@throwTypeError(\"require(name) must be a string\");return @internalRequire(@resolveSync(r,_))})\n"; - -// main -const JSC::ConstructAbility s_importMetaObjectMainCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_importMetaObjectMainCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_importMetaObjectMainCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_importMetaObjectMainCodeLength = 57; -static const JSC::Intrinsic s_importMetaObjectMainCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectMainCode = "(function (){\"use strict\";return this.path===@Bun.main})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().importMetaObjectBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().importMetaObjectBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* CountQueuingStrategy.ts */ -// highWaterMark -const JSC::ConstructAbility s_countQueuingStrategyHighWaterMarkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_countQueuingStrategyHighWaterMarkCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_countQueuingStrategyHighWaterMarkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_countQueuingStrategyHighWaterMarkCodeLength = 205; -static const JSC::Intrinsic s_countQueuingStrategyHighWaterMarkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_countQueuingStrategyHighWaterMarkCode = "(function (){\"use strict\";const c=@getByIdDirectPrivate(this,\"highWaterMark\");if(c===@undefined)@throwTypeError(\"CountQueuingStrategy.highWaterMark getter called on incompatible |this| value.\");return c})\n"; - -// size -const JSC::ConstructAbility s_countQueuingStrategySizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_countQueuingStrategySizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_countQueuingStrategySizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_countQueuingStrategySizeCodeLength = 37; -static const JSC::Intrinsic s_countQueuingStrategySizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_countQueuingStrategySizeCode = "(function (){\"use strict\";return 1})\n"; - -// initializeCountQueuingStrategy -const JSC::ConstructAbility s_countQueuingStrategyInitializeCountQueuingStrategyCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_countQueuingStrategyInitializeCountQueuingStrategyCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_countQueuingStrategyInitializeCountQueuingStrategyCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_countQueuingStrategyInitializeCountQueuingStrategyCodeLength = 121; -static const JSC::Intrinsic s_countQueuingStrategyInitializeCountQueuingStrategyCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_countQueuingStrategyInitializeCountQueuingStrategyCode = "(function (c){\"use strict\";@putByIdDirectPrivate(this,\"highWaterMark\",@extractHighWaterMarkFromQueuingStrategyInit(c))})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().countQueuingStrategyBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().countQueuingStrategyBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ReadableStreamBYOBRequest.ts */ -// initializeReadableStreamBYOBRequest -const JSC::ConstructAbility s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeLength = 243; -static const JSC::Intrinsic s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCode = "(function (d,O){\"use strict\";if(arguments.length!==3&&arguments[2]!==@isReadableStream)@throwTypeError(\"ReadableStreamBYOBRequest constructor should not be called directly\");return @privateInitializeReadableStreamBYOBRequest.@call(this,d,O)})\n"; - -// respond -const JSC::ConstructAbility s_readableStreamBYOBRequestRespondCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamBYOBRequestRespondCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamBYOBRequestRespondCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamBYOBRequestRespondCodeLength = 430; -static const JSC::Intrinsic s_readableStreamBYOBRequestRespondCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamBYOBRequestRespondCode = "(function (e){\"use strict\";if(!@isReadableStreamBYOBRequest(this))throw @makeThisTypeError(\"ReadableStreamBYOBRequest\",\"respond\");if(@getByIdDirectPrivate(this,\"associatedReadableByteStreamController\")===@undefined)@throwTypeError(\"ReadableStreamBYOBRequest.associatedReadableByteStreamController is undefined\");return @readableByteStreamControllerRespond(@getByIdDirectPrivate(this,\"associatedReadableByteStreamController\"),e)})\n"; - -// respondWithNewView -const JSC::ConstructAbility s_readableStreamBYOBRequestRespondWithNewViewCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamBYOBRequestRespondWithNewViewCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamBYOBRequestRespondWithNewViewCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamBYOBRequestRespondWithNewViewCodeLength = 595; -static const JSC::Intrinsic s_readableStreamBYOBRequestRespondWithNewViewCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamBYOBRequestRespondWithNewViewCode = "(function (t){\"use strict\";if(!@isReadableStreamBYOBRequest(this))throw @makeThisTypeError(\"ReadableStreamBYOBRequest\",\"respond\");if(@getByIdDirectPrivate(this,\"associatedReadableByteStreamController\")===@undefined)@throwTypeError(\"ReadableStreamBYOBRequest.associatedReadableByteStreamController is undefined\");if(!@isObject(t))@throwTypeError(\"Provided view is not an object\");if(!@ArrayBuffer.@isView(t))@throwTypeError(\"Provided view is not an ArrayBufferView\");return @readableByteStreamControllerRespondWithNewView(@getByIdDirectPrivate(this,\"associatedReadableByteStreamController\"),t)})\n"; - -// view -const JSC::ConstructAbility s_readableStreamBYOBRequestViewCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamBYOBRequestViewCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamBYOBRequestViewCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamBYOBRequestViewCodeLength = 172; -static const JSC::Intrinsic s_readableStreamBYOBRequestViewCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamBYOBRequestViewCode = "(function (){\"use strict\";if(!@isReadableStreamBYOBRequest(this))throw @makeGetterTypeError(\"ReadableStreamBYOBRequest\",\"view\");return @getByIdDirectPrivate(this,\"view\")})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().readableStreamBYOBRequestBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().readableStreamBYOBRequestBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* WritableStreamDefaultWriter.ts */ -// initializeWritableStreamDefaultWriter -const JSC::ConstructAbility s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeLength = 237; -static const JSC::Intrinsic s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCode = "(function (d){\"use strict\";const u=@getInternalWritableStream(d);if(u)d=u;if(!@isWritableStream(d))@throwTypeError(\"WritableStreamDefaultWriter constructor takes a WritableStream\");return @setUpWritableStreamDefaultWriter(this,d),this})\n"; - -// closed -const JSC::ConstructAbility s_writableStreamDefaultWriterClosedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultWriterClosedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultWriterClosedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultWriterClosedCodeLength = 215; -static const JSC::Intrinsic s_writableStreamDefaultWriterClosedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultWriterClosedCode = "(function (){\"use strict\";if(!@isWritableStreamDefaultWriter(this))return @Promise.@reject(@makeGetterTypeError(\"WritableStreamDefaultWriter\",\"closed\"));return @getByIdDirectPrivate(this,\"closedPromise\").@promise})\n"; - -// desiredSize -const JSC::ConstructAbility s_writableStreamDefaultWriterDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultWriterDesiredSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultWriterDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultWriterDesiredSizeCodeLength = 309; -static const JSC::Intrinsic s_writableStreamDefaultWriterDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultWriterDesiredSizeCode = "(function (){\"use strict\";if(!@isWritableStreamDefaultWriter(this))throw @makeThisTypeError(\"WritableStreamDefaultWriter\",\"desiredSize\");if(@getByIdDirectPrivate(this,\"stream\")===@undefined)@throwTypeError(\"WritableStreamDefaultWriter has no stream\");return @writableStreamDefaultWriterGetDesiredSize(this)})\n"; - -// ready -const JSC::ConstructAbility s_writableStreamDefaultWriterReadyCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultWriterReadyCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultWriterReadyCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultWriterReadyCodeLength = 211; -static const JSC::Intrinsic s_writableStreamDefaultWriterReadyCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultWriterReadyCode = "(function (){\"use strict\";if(!@isWritableStreamDefaultWriter(this))return @Promise.@reject(@makeThisTypeError(\"WritableStreamDefaultWriter\",\"ready\"));return @getByIdDirectPrivate(this,\"readyPromise\").@promise})\n"; - -// abort -const JSC::ConstructAbility s_writableStreamDefaultWriterAbortCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultWriterAbortCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultWriterAbortCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultWriterAbortCodeLength = 340; -static const JSC::Intrinsic s_writableStreamDefaultWriterAbortCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultWriterAbortCode = "(function (r){\"use strict\";if(!@isWritableStreamDefaultWriter(this))return @Promise.@reject(@makeThisTypeError(\"WritableStreamDefaultWriter\",\"abort\"));if(@getByIdDirectPrivate(this,\"stream\")===@undefined)return @Promise.@reject(@makeTypeError(\"WritableStreamDefaultWriter has no stream\"));return @writableStreamDefaultWriterAbort(this,r)})\n"; - -// close -const JSC::ConstructAbility s_writableStreamDefaultWriterCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultWriterCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultWriterCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultWriterCloseCodeLength = 477; -static const JSC::Intrinsic s_writableStreamDefaultWriterCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultWriterCloseCode = "(function (){\"use strict\";if(!@isWritableStreamDefaultWriter(this))return @Promise.@reject(@makeThisTypeError(\"WritableStreamDefaultWriter\",\"close\"));const e=@getByIdDirectPrivate(this,\"stream\");if(e===@undefined)return @Promise.@reject(@makeTypeError(\"WritableStreamDefaultWriter has no stream\"));if(@writableStreamCloseQueuedOrInFlight(e))return @Promise.@reject(@makeTypeError(\"WritableStreamDefaultWriter is being closed\"));return @writableStreamDefaultWriterClose(this)})\n"; - -// releaseLock -const JSC::ConstructAbility s_writableStreamDefaultWriterReleaseLockCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultWriterReleaseLockCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultWriterReleaseLockCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultWriterReleaseLockCodeLength = 307; -static const JSC::Intrinsic s_writableStreamDefaultWriterReleaseLockCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultWriterReleaseLockCode = "(function (){\"use strict\";if(!@isWritableStreamDefaultWriter(this))throw @makeThisTypeError(\"WritableStreamDefaultWriter\",\"releaseLock\");const c=@getByIdDirectPrivate(this,\"stream\");if(c===@undefined)return;@assert(@getByIdDirectPrivate(c,\"writer\")!==@undefined),@writableStreamDefaultWriterRelease(this)})\n"; - -// write -const JSC::ConstructAbility s_writableStreamDefaultWriterWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultWriterWriteCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultWriterWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultWriterWriteCodeLength = 340; -static const JSC::Intrinsic s_writableStreamDefaultWriterWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultWriterWriteCode = "(function (_){\"use strict\";if(!@isWritableStreamDefaultWriter(this))return @Promise.@reject(@makeThisTypeError(\"WritableStreamDefaultWriter\",\"write\"));if(@getByIdDirectPrivate(this,\"stream\")===@undefined)return @Promise.@reject(@makeTypeError(\"WritableStreamDefaultWriter has no stream\"));return @writableStreamDefaultWriterWrite(this,_)})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().writableStreamDefaultWriterBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().writableStreamDefaultWriterBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ReadableStream.ts */ -// initializeReadableStream -const JSC::ConstructAbility s_readableStreamInitializeReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamInitializeReadableStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamInitializeReadableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamInitializeReadableStreamCodeLength = 2065; -static const JSC::Intrinsic s_readableStreamInitializeReadableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInitializeReadableStreamCode = "(function (_,f){\"use strict\";if(_===@undefined)_={@bunNativeType:0,@bunNativePtr:0,@lazy:!1};if(f===@undefined)f={};if(!@isObject(_))@throwTypeError(\"ReadableStream constructor takes an object as first argument\");if(f!==@undefined&&!@isObject(f))@throwTypeError(\"ReadableStream constructor takes an object as second argument, if any\");@putByIdDirectPrivate(this,\"state\",@streamReadable),@putByIdDirectPrivate(this,\"reader\",@undefined),@putByIdDirectPrivate(this,\"storedError\",@undefined),@putByIdDirectPrivate(this,\"disturbed\",!1),@putByIdDirectPrivate(this,\"readableStreamController\",null),@putByIdDirectPrivate(this,\"bunNativeType\",@getByIdDirectPrivate(_,\"bunNativeType\")\?\?0),@putByIdDirectPrivate(this,\"bunNativePtr\",@getByIdDirectPrivate(_,\"bunNativePtr\")\?\?0);const I=_.type===\"direct\",P=!!_.@lazy,b=I||P;if(@getByIdDirectPrivate(_,\"pull\")!==@undefined&&!b){const j=@getByIdDirectPrivate(f,\"size\"),m=@getByIdDirectPrivate(f,\"highWaterMark\");return @putByIdDirectPrivate(this,\"highWaterMark\",m),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@setupReadableStreamDefaultController(this,_,j,m!==@undefined\?m:1,@getByIdDirectPrivate(_,\"start\"),@getByIdDirectPrivate(_,\"pull\"),@getByIdDirectPrivate(_,\"cancel\")),this}if(I)@putByIdDirectPrivate(this,\"underlyingSource\",_),@putByIdDirectPrivate(this,\"highWaterMark\",@getByIdDirectPrivate(f,\"highWaterMark\")),@putByIdDirectPrivate(this,\"start\",()=>@createReadableStreamController(this,_,f));else if(b){const j=_.autoAllocateChunkSize;@putByIdDirectPrivate(this,\"highWaterMark\",@undefined),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"highWaterMark\",j||@getByIdDirectPrivate(f,\"highWaterMark\")),@putByIdDirectPrivate(this,\"start\",()=>{const m=@lazyLoadStream(this,j);if(m)@createReadableStreamController(this,m,f)})}else @putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"highWaterMark\",@getByIdDirectPrivate(f,\"highWaterMark\")),@putByIdDirectPrivate(this,\"start\",@undefined),@createReadableStreamController(this,_,f);return this})\n"; - -// readableStreamToArray -const JSC::ConstructAbility s_readableStreamReadableStreamToArrayCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamReadableStreamToArrayCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamReadableStreamToArrayCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamReadableStreamToArrayCodeLength = 173; -static const JSC::Intrinsic s_readableStreamReadableStreamToArrayCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamReadableStreamToArrayCode = "(function (_){\"use strict\";var p=@getByIdDirectPrivate(_,\"underlyingSource\");if(p!==@undefined)return @readableStreamToArrayDirect(_,p);return @readableStreamIntoArray(_)})\n"; - -// readableStreamToText -const JSC::ConstructAbility s_readableStreamReadableStreamToTextCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamReadableStreamToTextCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamReadableStreamToTextCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamReadableStreamToTextCodeLength = 171; -static const JSC::Intrinsic s_readableStreamReadableStreamToTextCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamReadableStreamToTextCode = "(function (_){\"use strict\";var p=@getByIdDirectPrivate(_,\"underlyingSource\");if(p!==@undefined)return @readableStreamToTextDirect(_,p);return @readableStreamIntoText(_)})\n"; - -// readableStreamToArrayBuffer -const JSC::ConstructAbility s_readableStreamReadableStreamToArrayBufferCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamReadableStreamToArrayBufferCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamReadableStreamToArrayBufferCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamReadableStreamToArrayBufferCodeLength = 271; -static const JSC::Intrinsic s_readableStreamReadableStreamToArrayBufferCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamReadableStreamToArrayBufferCode = "(function (_){\"use strict\";var f=@getByIdDirectPrivate(_,\"underlyingSource\");if(f!==@undefined)return @readableStreamToArrayBufferDirect(_,f);var A=@Bun.readableStreamToArray(_);if(@isPromise(A))return A.@then(@Bun.concatArrayBuffers);return @Bun.concatArrayBuffers(A)})\n"; - -// readableStreamToJSON -const JSC::ConstructAbility s_readableStreamReadableStreamToJSONCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamReadableStreamToJSONCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamReadableStreamToJSONCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamReadableStreamToJSONCodeLength = 94; -static const JSC::Intrinsic s_readableStreamReadableStreamToJSONCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamReadableStreamToJSONCode = "(function (d){\"use strict\";return @Bun.readableStreamToText(d).@then(globalThis.JSON.parse)})\n"; - -// readableStreamToBlob -const JSC::ConstructAbility s_readableStreamReadableStreamToBlobCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamReadableStreamToBlobCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamReadableStreamToBlobCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamReadableStreamToBlobCodeLength = 108; -static const JSC::Intrinsic s_readableStreamReadableStreamToBlobCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamReadableStreamToBlobCode = "(function (d){\"use strict\";return @Promise.resolve(@Bun.readableStreamToArray(d)).@then((_)=>new Blob(_))})\n"; - -// consumeReadableStream -const JSC::ConstructAbility s_readableStreamConsumeReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamConsumeReadableStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamConsumeReadableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamConsumeReadableStreamCodeLength = 1603; -static const JSC::Intrinsic s_readableStreamConsumeReadableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamConsumeReadableStreamCode = "(function (_,I,j){\"use strict\";const k=globalThis.Symbol.for(\"Bun.consumeReadableStreamPrototype\");var q=globalThis[k];if(!q)q=globalThis[k]=[];var w=q[I];if(w===@undefined){var[x,A,B,D,F,G]=globalThis[globalThis.Symbol.for(\"Bun.lazy\")](I);w=class J{handleError;handleClosed;processResult;constructor(K,L){this.#_=L,this.#I=K,this.#$=!1,this.handleError=this._handleError.bind(this),this.handleClosed=this._handleClosed.bind(this),this.processResult=this._processResult.bind(this),K.closed.then(this.handleClosed,this.handleError)}_handleClosed(){if(this.#$)return;this.#$=!0;var K=this.#_;this.#_=0,D(K),G(K)}_handleError(K){if(this.#$)return;this.#$=!0;var L=this.#_;this.#_=0,A(L,K),G(L)}#_;#$=!1;#I;_handleReadMany({value:K,done:L,size:N}){if(L){this.handleClosed();return}if(this.#$)return;B(this.#_,K,L,N)}read(){if(!this.#_)return @throwTypeError(\"ReadableStreamSink is already closed\");return this.processResult(this.#I.read())}_processResult(K){if(K&&@isPromise(K)){if(@getPromiseInternalField(K,@promiseFieldFlags)&@promiseStateFulfilled){const N=@getPromiseInternalField(K,@promiseFieldReactionsOrResult);if(N)K=N}}if(K&&@isPromise(K))return K.then(this.processResult,this.handleError),null;if(K.done)return this.handleClosed(),0;else if(K.value)return K.value;else return-1}readMany(){if(!this.#_)return @throwTypeError(\"ReadableStreamSink is already closed\");return this.processResult(this.#I.readMany())}};const H=I+1;if(q.length<H)q.length=H;@putByValDirect(q,I,w)}if(@isReadableStreamLocked(j))@throwTypeError(\"Cannot start reading from a locked stream\");return new w(j.getReader(),_)})\n"; - -// createEmptyReadableStream -const JSC::ConstructAbility s_readableStreamCreateEmptyReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamCreateEmptyReadableStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamCreateEmptyReadableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamCreateEmptyReadableStreamCodeLength = 99; -static const JSC::Intrinsic s_readableStreamCreateEmptyReadableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamCreateEmptyReadableStreamCode = "(function (){\"use strict\";var d=new @ReadableStream({pull(){}});return @readableStreamClose(d),d})\n"; - -// createNativeReadableStream -const JSC::ConstructAbility s_readableStreamCreateNativeReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamCreateNativeReadableStreamCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamCreateNativeReadableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamCreateNativeReadableStreamCodeLength = 129; -static const JSC::Intrinsic s_readableStreamCreateNativeReadableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamCreateNativeReadableStreamCode = "(function (_,d,m){\"use strict\";return new @ReadableStream({@lazy:!0,@bunNativeType:d,@bunNativePtr:_,autoAllocateChunkSize:m})})\n"; - -// cancel -const JSC::ConstructAbility s_readableStreamCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamCancelCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamCancelCodeLength = 266; -static const JSC::Intrinsic s_readableStreamCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamCancelCode = "(function (d){\"use strict\";if(!@isReadableStream(this))return @Promise.@reject(@makeThisTypeError(\"ReadableStream\",\"cancel\"));if(@isReadableStreamLocked(this))return @Promise.@reject(@makeTypeError(\"ReadableStream is locked\"));return @readableStreamCancel(this,d)})\n"; - -// getReader -const JSC::ConstructAbility s_readableStreamGetReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamGetReaderCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamGetReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamGetReaderCodeLength = 470; -static const JSC::Intrinsic s_readableStreamGetReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamGetReaderCode = "(function (d){\"use strict\";if(!@isReadableStream(this))throw @makeThisTypeError(\"ReadableStream\",\"getReader\");const c=@toDictionary(d,{},\"ReadableStream.getReader takes an object as first argument\").mode;if(c===@undefined){var e=@getByIdDirectPrivate(this,\"start\");if(e)@putByIdDirectPrivate(this,\"start\",@undefined),e();return new @ReadableStreamDefaultReader(this)}if(c==\"byob\")return new @ReadableStreamBYOBReader(this);@throwTypeError(\"Invalid mode is specified\")})\n"; - -// pipeThrough -const JSC::ConstructAbility s_readableStreamPipeThroughCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamPipeThroughCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamPipeThroughCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamPipeThroughCodeLength = 877; -static const JSC::Intrinsic s_readableStreamPipeThroughCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamPipeThroughCode = "(function (h,_){\"use strict\";const u=h,c=u[\"readable\"];if(!@isReadableStream(c))throw @makeTypeError(\"readable should be ReadableStream\");const d=u[\"writable\"],j=@getInternalWritableStream(d);if(!@isWritableStream(j))throw @makeTypeError(\"writable should be WritableStream\");let k=!1,q=!1,x=!1,y;if(!@isUndefinedOrNull(_)){if(!@isObject(_))throw @makeTypeError(\"options must be an object\");if(q=!!_[\"preventAbort\"],x=!!_[\"preventCancel\"],k=!!_[\"preventClose\"],y=_[\"signal\"],y!==@undefined&&!@isAbortSignal(y))throw @makeTypeError(\"options.signal must be AbortSignal\")}if(!@isReadableStream(this))throw @makeThisTypeError(\"ReadableStream\",\"pipeThrough\");if(@isReadableStreamLocked(this))throw @makeTypeError(\"ReadableStream is locked\");if(@isWritableStreamLocked(j))throw @makeTypeError(\"WritableStream is locked\");return @readableStreamPipeToWritableStream(this,j,k,q,x,y),c})\n"; - -// pipeTo -const JSC::ConstructAbility s_readableStreamPipeToCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamPipeToCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamPipeToCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamPipeToCodeLength = 926; -static const JSC::Intrinsic s_readableStreamPipeToCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamPipeToCode = "(function (_){\"use strict\";if(!@isReadableStream(this))return @Promise.@reject(@makeThisTypeError(\"ReadableStream\",\"pipeTo\"));if(@isReadableStreamLocked(this))return @Promise.@reject(@makeTypeError(\"ReadableStream is locked\"));let m=@argument(1),k=!1,P=!1,S=!1,f;if(!@isUndefinedOrNull(m)){if(!@isObject(m))return @Promise.@reject(@makeTypeError(\"options must be an object\"));try{P=!!m[\"preventAbort\"],S=!!m[\"preventCancel\"],k=!!m[\"preventClose\"],f=m[\"signal\"]}catch(j){return @Promise.@reject(j)}if(f!==@undefined&&!@isAbortSignal(f))return @Promise.@reject(@makeTypeError(\"options.signal must be AbortSignal\"))}const h=@getInternalWritableStream(_);if(!@isWritableStream(h))return @Promise.@reject(@makeTypeError(\"ReadableStream pipeTo requires a WritableStream\"));if(@isWritableStreamLocked(h))return @Promise.@reject(@makeTypeError(\"WritableStream is locked\"));return @readableStreamPipeToWritableStream(this,h,k,P,S,f)})\n"; - -// tee -const JSC::ConstructAbility s_readableStreamTeeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamTeeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamTeeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamTeeCodeLength = 140; -static const JSC::Intrinsic s_readableStreamTeeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamTeeCode = "(function (){\"use strict\";if(!@isReadableStream(this))throw @makeThisTypeError(\"ReadableStream\",\"tee\");return @readableStreamTee(this,!1)})\n"; - -// locked -const JSC::ConstructAbility s_readableStreamLockedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamLockedCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamLockedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamLockedCodeLength = 147; -static const JSC::Intrinsic s_readableStreamLockedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamLockedCode = "(function (){\"use strict\";if(!@isReadableStream(this))throw @makeGetterTypeError(\"ReadableStream\",\"locked\");return @isReadableStreamLocked(this)})\n"; - -// values -const JSC::ConstructAbility s_readableStreamValuesCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamValuesCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamValuesCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamValuesCodeLength = 129; -static const JSC::Intrinsic s_readableStreamValuesCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamValuesCode = "(function (_){\"use strict\";var a=@ReadableStream.prototype;return @readableStreamDefineLazyIterators(a),a.values.@call(this,_)})\n"; - -// lazyAsyncIterator -const JSC::ConstructAbility s_readableStreamLazyAsyncIteratorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamLazyAsyncIteratorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamLazyAsyncIteratorCodeImplementationVisibility = JSC::ImplementationVisibility::Private; -const int s_readableStreamLazyAsyncIteratorCodeLength = 152; -static const JSC::Intrinsic s_readableStreamLazyAsyncIteratorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamLazyAsyncIteratorCode = "(function (){\"use strict\";var b=@ReadableStream.prototype;return @readableStreamDefineLazyIterators(b),b[globalThis.Symbol.asyncIterator].@call(this)})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().readableStreamBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().readableStreamBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_READABLESTREAM_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ReadableStreamDefaultController.ts */ -// initializeReadableStreamDefaultController -const JSC::ConstructAbility s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeLength = 263; -static const JSC::Intrinsic s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCode = "(function (p,_,b,f){\"use strict\";if(arguments.length!==5&&arguments[4]!==@isReadableStream)@throwTypeError(\"ReadableStreamDefaultController constructor should not be called directly\");return @privateInitializeReadableStreamDefaultController.@call(this,p,_,b,f)})\n"; - -// enqueue -const JSC::ConstructAbility s_readableStreamDefaultControllerEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultControllerEnqueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultControllerEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultControllerEnqueueCodeLength = 356; -static const JSC::Intrinsic s_readableStreamDefaultControllerEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultControllerEnqueueCode = "(function (e){\"use strict\";if(!@isReadableStreamDefaultController(this))throw @makeThisTypeError(\"ReadableStreamDefaultController\",\"enqueue\");if(!@readableStreamDefaultControllerCanCloseOrEnqueue(this))@throwTypeError(\"ReadableStreamDefaultController is not in a state where chunk can be enqueued\");return @readableStreamDefaultControllerEnqueue(this,e)})\n"; - -// error -const JSC::ConstructAbility s_readableStreamDefaultControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultControllerErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultControllerErrorCodeLength = 188; -static const JSC::Intrinsic s_readableStreamDefaultControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultControllerErrorCode = "(function (t){\"use strict\";if(!@isReadableStreamDefaultController(this))throw @makeThisTypeError(\"ReadableStreamDefaultController\",\"error\");@readableStreamDefaultControllerError(this,t)})\n"; - -// close -const JSC::ConstructAbility s_readableStreamDefaultControllerCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultControllerCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultControllerCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultControllerCloseCodeLength = 337; -static const JSC::Intrinsic s_readableStreamDefaultControllerCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultControllerCloseCode = "(function (){\"use strict\";if(!@isReadableStreamDefaultController(this))throw @makeThisTypeError(\"ReadableStreamDefaultController\",\"close\");if(!@readableStreamDefaultControllerCanCloseOrEnqueue(this))@throwTypeError(\"ReadableStreamDefaultController is not in a state where it can be closed\");@readableStreamDefaultControllerClose(this)})\n"; - -// desiredSize -const JSC::ConstructAbility s_readableStreamDefaultControllerDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableStreamDefaultControllerDesiredSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableStreamDefaultControllerDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultControllerDesiredSizeCodeLength = 209; -static const JSC::Intrinsic s_readableStreamDefaultControllerDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultControllerDesiredSizeCode = "(function (){\"use strict\";if(!@isReadableStreamDefaultController(this))throw @makeGetterTypeError(\"ReadableStreamDefaultController\",\"desiredSize\");return @readableStreamDefaultControllerGetDesiredSize(this)})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().readableStreamDefaultControllerBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().readableStreamDefaultControllerBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* ReadableByteStreamInternals.ts */ -// privateInitializeReadableByteStreamController -const JSC::ConstructAbility s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeLength = 1654; -static const JSC::Intrinsic s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCode = "(function (_,D,b){\"use strict\";if(!@isReadableStream(_))@throwTypeError(\"ReadableByteStreamController needs a ReadableStream\");if(@getByIdDirectPrivate(_,\"readableStreamController\")!==null)@throwTypeError(\"ReadableStream already has a controller\");@putByIdDirectPrivate(this,\"controlledReadableStream\",_),@putByIdDirectPrivate(this,\"underlyingByteSource\",D),@putByIdDirectPrivate(this,\"pullAgain\",!1),@putByIdDirectPrivate(this,\"pulling\",!1),@readableByteStreamControllerClearPendingPullIntos(this),@putByIdDirectPrivate(this,\"queue\",@newQueue()),@putByIdDirectPrivate(this,\"started\",0),@putByIdDirectPrivate(this,\"closeRequested\",!1);let p=@toNumber(b);if(@isNaN(p)||p<0)@throwRangeError(\"highWaterMark value is negative or not a number\");@putByIdDirectPrivate(this,\"strategyHWM\",p);let f=D.autoAllocateChunkSize;if(f!==@undefined){if(f=@toNumber(f),f<=0||f===@Infinity||f===-@Infinity)@throwRangeError(\"autoAllocateChunkSize value is negative or equal to positive or negative infinity\")}@putByIdDirectPrivate(this,\"autoAllocateChunkSize\",f),@putByIdDirectPrivate(this,\"pendingPullIntos\",@createFIFO());const j=this;return @promiseInvokeOrNoopNoCatch(@getByIdDirectPrivate(j,\"underlyingByteSource\"),\"start\",[j]).@then(()=>{@putByIdDirectPrivate(j,\"started\",1),@assert(!@getByIdDirectPrivate(j,\"pulling\")),@assert(!@getByIdDirectPrivate(j,\"pullAgain\")),@readableByteStreamControllerCallPullIfNeeded(j)},(q)=>{if(@getByIdDirectPrivate(_,\"state\")===@streamReadable)@readableByteStreamControllerError(j,q)}),@putByIdDirectPrivate(this,\"cancel\",@readableByteStreamControllerCancel),@putByIdDirectPrivate(this,\"pull\",@readableByteStreamControllerPull),this})\n"; - -// readableStreamByteStreamControllerStart -const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeLength = 73; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCode = "(function (a){\"use strict\";@putByIdDirectPrivate(a,\"start\",@undefined)})\n"; - -// privateInitializeReadableStreamBYOBRequest -const JSC::ConstructAbility s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeLength = 139; -static const JSC::Intrinsic s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCode = "(function (_,a){\"use strict\";@putByIdDirectPrivate(this,\"associatedReadableByteStreamController\",_),@putByIdDirectPrivate(this,\"view\",a)})\n"; - -// isReadableByteStreamController -const JSC::ConstructAbility s_readableByteStreamInternalsIsReadableByteStreamControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsIsReadableByteStreamControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsIsReadableByteStreamControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsIsReadableByteStreamControllerCodeLength = 100; -static const JSC::Intrinsic s_readableByteStreamInternalsIsReadableByteStreamControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsIsReadableByteStreamControllerCode = "(function (a){\"use strict\";return @isObject(a)&&!!@getByIdDirectPrivate(a,\"underlyingByteSource\")})\n"; - -// isReadableStreamBYOBRequest -const JSC::ConstructAbility s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeLength = 118; -static const JSC::Intrinsic s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsIsReadableStreamBYOBRequestCode = "(function (r){\"use strict\";return @isObject(r)&&!!@getByIdDirectPrivate(r,\"associatedReadableByteStreamController\")})\n"; - -// isReadableStreamBYOBReader -const JSC::ConstructAbility s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeLength = 96; -static const JSC::Intrinsic s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsIsReadableStreamBYOBReaderCode = "(function (i){\"use strict\";return @isObject(i)&&!!@getByIdDirectPrivate(i,\"readIntoRequests\")})\n"; - -// readableByteStreamControllerCancel -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeLength = 248; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerCancelCode = "(function (_,d){\"use strict\";var b=@getByIdDirectPrivate(_,\"pendingPullIntos\"),g=b.peek();if(g)g.bytesFilled=0;return @putByIdDirectPrivate(_,\"queue\",@newQueue()),@promiseInvokeOrNoop(@getByIdDirectPrivate(_,\"underlyingByteSource\"),\"cancel\",[d])})\n"; - -// readableByteStreamControllerError -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeLength = 316; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerErrorCode = "(function (u,d){\"use strict\";@assert(@getByIdDirectPrivate(@getByIdDirectPrivate(u,\"controlledReadableStream\"),\"state\")===@streamReadable),@readableByteStreamControllerClearPendingPullIntos(u),@putByIdDirectPrivate(u,\"queue\",@newQueue()),@readableStreamError(@getByIdDirectPrivate(u,\"controlledReadableStream\"),d)})\n"; - -// readableByteStreamControllerClose -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeLength = 569; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerCloseCode = "(function (a){\"use strict\";if(@assert(!@getByIdDirectPrivate(a,\"closeRequested\")),@assert(@getByIdDirectPrivate(@getByIdDirectPrivate(a,\"controlledReadableStream\"),\"state\")===@streamReadable),@getByIdDirectPrivate(a,\"queue\").size>0){@putByIdDirectPrivate(a,\"closeRequested\",!0);return}var d=@getByIdDirectPrivate(a,\"pendingPullIntos\")\?.peek();if(d){if(d.bytesFilled>0){const i=@makeTypeError(\"Close requested while there remain pending bytes\");throw @readableByteStreamControllerError(a,i),i}}@readableStreamClose(@getByIdDirectPrivate(a,\"controlledReadableStream\"))})\n"; - -// readableByteStreamControllerClearPendingPullIntos -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeLength = 224; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCode = "(function (_){\"use strict\";@readableByteStreamControllerInvalidateBYOBRequest(_);var a=@getByIdDirectPrivate(_,\"pendingPullIntos\");if(a!==@undefined)a.clear();else @putByIdDirectPrivate(_,\"pendingPullIntos\",@createFIFO())})\n"; - -// readableByteStreamControllerGetDesiredSize -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeLength = 272; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCode = "(function (i){\"use strict\";const d=@getByIdDirectPrivate(i,\"controlledReadableStream\"),p=@getByIdDirectPrivate(d,\"state\");if(p===@streamErrored)return null;if(p===@streamClosed)return 0;return @getByIdDirectPrivate(i,\"strategyHWM\")-@getByIdDirectPrivate(i,\"queue\").size})\n"; - -// readableStreamHasBYOBReader -const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeLength = 125; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamHasBYOBReaderCode = "(function (n){\"use strict\";const c=@getByIdDirectPrivate(n,\"reader\");return c!==@undefined&&@isReadableStreamBYOBReader(c)})\n"; - -// readableStreamHasDefaultReader -const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeLength = 128; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamHasDefaultReaderCode = "(function (n){\"use strict\";const c=@getByIdDirectPrivate(n,\"reader\");return c!==@undefined&&@isReadableStreamDefaultReader(c)})\n"; - -// readableByteStreamControllerHandleQueueDrain -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeLength = 352; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCode = "(function (a){\"use strict\";if(@assert(@getByIdDirectPrivate(@getByIdDirectPrivate(a,\"controlledReadableStream\"),\"state\")===@streamReadable),!@getByIdDirectPrivate(a,\"queue\").size&&@getByIdDirectPrivate(a,\"closeRequested\"))@readableStreamClose(@getByIdDirectPrivate(a,\"controlledReadableStream\"));else @readableByteStreamControllerCallPullIfNeeded(a)})\n"; - -// readableByteStreamControllerPull -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerPullCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerPullCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerPullCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerPullCodeLength = 1005; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerPullCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerPullCode = "(function (_){\"use strict\";const d=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(@assert(@readableStreamHasDefaultReader(d)),@getByIdDirectPrivate(_,\"queue\").content\?.isNotEmpty()){const i=@getByIdDirectPrivate(_,\"queue\").content.shift();@getByIdDirectPrivate(_,\"queue\").size-=i.byteLength,@readableByteStreamControllerHandleQueueDrain(_);let u;try{u=new @Uint8Array(i.buffer,i.byteOffset,i.byteLength)}catch(E){return @Promise.@reject(E)}return @createFulfilledPromise({value:u,done:!1})}if(@getByIdDirectPrivate(_,\"autoAllocateChunkSize\")!==@undefined){let i;try{i=@createUninitializedArrayBuffer(@getByIdDirectPrivate(_,\"autoAllocateChunkSize\"))}catch(E){return @Promise.@reject(E)}const u={buffer:i,byteOffset:0,byteLength:@getByIdDirectPrivate(_,\"autoAllocateChunkSize\"),bytesFilled:0,elementSize:1,ctor:@Uint8Array,readerType:\"default\"};@getByIdDirectPrivate(_,\"pendingPullIntos\").push(u)}const a=@readableStreamAddReadRequest(d);return @readableByteStreamControllerCallPullIfNeeded(_),a})\n"; - -// readableByteStreamControllerShouldCallPull -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeLength = 619; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCode = "(function (i){\"use strict\";const u=@getByIdDirectPrivate(i,\"controlledReadableStream\");if(@getByIdDirectPrivate(u,\"state\")!==@streamReadable)return!1;if(@getByIdDirectPrivate(i,\"closeRequested\"))return!1;if(!(@getByIdDirectPrivate(i,\"started\")>0))return!1;const _=@getByIdDirectPrivate(u,\"reader\");if(_&&(@getByIdDirectPrivate(_,\"readRequests\")\?.isNotEmpty()||!!@getByIdDirectPrivate(_,\"bunNativePtr\")))return!0;if(@readableStreamHasBYOBReader(u)&&@getByIdDirectPrivate(@getByIdDirectPrivate(u,\"reader\"),\"readIntoRequests\")\?.isNotEmpty())return!0;if(@readableByteStreamControllerGetDesiredSize(i)>0)return!0;return!1})\n"; - -// readableByteStreamControllerCallPullIfNeeded -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeLength = 670; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCode = "(function (p){\"use strict\";if(!@readableByteStreamControllerShouldCallPull(p))return;if(@getByIdDirectPrivate(p,\"pulling\")){@putByIdDirectPrivate(p,\"pullAgain\",!0);return}@assert(!@getByIdDirectPrivate(p,\"pullAgain\")),@putByIdDirectPrivate(p,\"pulling\",!0),@promiseInvokeOrNoop(@getByIdDirectPrivate(p,\"underlyingByteSource\"),\"pull\",[p]).@then(()=>{if(@putByIdDirectPrivate(p,\"pulling\",!1),@getByIdDirectPrivate(p,\"pullAgain\"))@putByIdDirectPrivate(p,\"pullAgain\",!1),@readableByteStreamControllerCallPullIfNeeded(p)},(u)=>{if(@getByIdDirectPrivate(@getByIdDirectPrivate(p,\"controlledReadableStream\"),\"state\")===@streamReadable)@readableByteStreamControllerError(p,u)})})\n"; - -// transferBufferToCurrentRealm -const JSC::ConstructAbility s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeLength = 38; -static const JSC::Intrinsic s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsTransferBufferToCurrentRealmCode = "(function (r){\"use strict\";return r})\n"; - -// readableStreamReaderKind -const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamReaderKindCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamReaderKindCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamReaderKindCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableStreamReaderKindCodeLength = 188; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamReaderKindCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamReaderKindCode = "(function (n){\"use strict\";if(@getByIdDirectPrivate(n,\"readRequests\"))return @getByIdDirectPrivate(n,\"bunNativePtr\")\?3:1;if(@getByIdDirectPrivate(n,\"readIntoRequests\"))return 2;return 0})\n"; - -// readableByteStreamControllerEnqueue -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeLength = 1076; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCode = "(function (_,d){\"use strict\";const i=@getByIdDirectPrivate(_,\"controlledReadableStream\");switch(@assert(!@getByIdDirectPrivate(_,\"closeRequested\")),@assert(@getByIdDirectPrivate(i,\"state\")===@streamReadable),@getByIdDirectPrivate(i,\"reader\")\?@readableStreamReaderKind(@getByIdDirectPrivate(i,\"reader\")):0){case 1:{if(!@getByIdDirectPrivate(@getByIdDirectPrivate(i,\"reader\"),\"readRequests\")\?.isNotEmpty())@readableByteStreamControllerEnqueueChunk(_,@transferBufferToCurrentRealm(d.buffer),d.byteOffset,d.byteLength);else{@assert(!@getByIdDirectPrivate(_,\"queue\").content.size());const b=d.constructor===@Uint8Array\?d:new @Uint8Array(d.buffer,d.byteOffset,d.byteLength);@readableStreamFulfillReadRequest(i,b,!1)}break}case 2:{@readableByteStreamControllerEnqueueChunk(_,@transferBufferToCurrentRealm(d.buffer),d.byteOffset,d.byteLength),@readableByteStreamControllerProcessPullDescriptors(_);break}case 3:break;default:{@assert(!@isReadableStreamLocked(i)),@readableByteStreamControllerEnqueueChunk(_,@transferBufferToCurrentRealm(d.buffer),d.byteOffset,d.byteLength);break}}})\n"; - -// readableByteStreamControllerEnqueueChunk -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeLength = 160; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCode = "(function (d,D,P,a){\"use strict\";@getByIdDirectPrivate(d,\"queue\").content.push({buffer:D,byteOffset:P,byteLength:a}),@getByIdDirectPrivate(d,\"queue\").size+=a})\n"; - -// readableByteStreamControllerRespondWithNewView -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeLength = 417; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCode = "(function (_,d){\"use strict\";@assert(@getByIdDirectPrivate(_,\"pendingPullIntos\").isNotEmpty());let a=@getByIdDirectPrivate(_,\"pendingPullIntos\").peek();if(a.byteOffset+a.bytesFilled!==d.byteOffset)@throwRangeError(\"Invalid value for view.byteOffset\");if(a.byteLength!==d.byteLength)@throwRangeError(\"Invalid value for view.byteLength\");a.buffer=d.buffer,@readableByteStreamControllerRespondInternal(_,d.byteLength)})\n"; - -// readableByteStreamControllerRespond -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeLength = 251; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondCode = "(function (a,d){\"use strict\";if(d=@toNumber(d),@isNaN(d)||d===@Infinity||d<0)@throwRangeError(\"bytesWritten has an incorrect value\");@assert(@getByIdDirectPrivate(a,\"pendingPullIntos\").isNotEmpty()),@readableByteStreamControllerRespondInternal(a,d)})\n"; - -// readableByteStreamControllerRespondInternal -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeLength = 464; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCode = "(function (_,d){\"use strict\";let u=@getByIdDirectPrivate(_,\"pendingPullIntos\").peek(),I=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(@getByIdDirectPrivate(I,\"state\")===@streamClosed){if(d!==0)@throwTypeError(\"bytesWritten is different from 0 even though stream is closed\");@readableByteStreamControllerRespondInClosedState(_,u)}else @assert(@getByIdDirectPrivate(I,\"state\")===@streamReadable),@readableByteStreamControllerRespondInReadableState(_,d,u)})\n"; - -// readableByteStreamControllerRespondInReadableState -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeLength = 799; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCode = "(function (_,v,T){\"use strict\";if(T.bytesFilled+v>T.byteLength)@throwRangeError(\"bytesWritten value is too great\");if(@assert(@getByIdDirectPrivate(_,\"pendingPullIntos\").isEmpty()||@getByIdDirectPrivate(_,\"pendingPullIntos\").peek()===T),@readableByteStreamControllerInvalidateBYOBRequest(_),T.bytesFilled+=v,T.bytesFilled<T.elementSize)return;@readableByteStreamControllerShiftPendingDescriptor(_);const f=T.bytesFilled%T.elementSize;if(f>0){const g=T.byteOffset+T.bytesFilled,h=@cloneArrayBuffer(T.buffer,g-f,f);@readableByteStreamControllerEnqueueChunk(_,h,0,h.byteLength)}T.buffer=@transferBufferToCurrentRealm(T.buffer),T.bytesFilled-=f,@readableByteStreamControllerCommitDescriptor(@getByIdDirectPrivate(_,\"controlledReadableStream\"),T),@readableByteStreamControllerProcessPullDescriptors(_)})\n"; - -// readableByteStreamControllerRespondInClosedState -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeLength = 502; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCode = "(function (a,m){\"use strict\";if(m.buffer=@transferBufferToCurrentRealm(m.buffer),@assert(m.bytesFilled===0),@readableStreamHasBYOBReader(@getByIdDirectPrivate(a,\"controlledReadableStream\")))while(@getByIdDirectPrivate(@getByIdDirectPrivate(@getByIdDirectPrivate(a,\"controlledReadableStream\"),\"reader\"),\"readIntoRequests\")\?.isNotEmpty()){let d=@readableByteStreamControllerShiftPendingDescriptor(a);@readableByteStreamControllerCommitDescriptor(@getByIdDirectPrivate(a,\"controlledReadableStream\"),d)}})\n"; - -// readableByteStreamControllerProcessPullDescriptors -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeLength = 472; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCode = "(function (a){\"use strict\";@assert(!@getByIdDirectPrivate(a,\"closeRequested\"));while(@getByIdDirectPrivate(a,\"pendingPullIntos\").isNotEmpty()){if(@getByIdDirectPrivate(a,\"queue\").size===0)return;let d=@getByIdDirectPrivate(a,\"pendingPullIntos\").peek();if(@readableByteStreamControllerFillDescriptorFromQueue(a,d))@readableByteStreamControllerShiftPendingDescriptor(a),@readableByteStreamControllerCommitDescriptor(@getByIdDirectPrivate(a,\"controlledReadableStream\"),d)}})\n"; - -// readableByteStreamControllerFillDescriptorFromQueue -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeLength = 970; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCode = "(function (_,v){\"use strict\";const j=v.bytesFilled-v.bytesFilled%v.elementSize,k=@getByIdDirectPrivate(_,\"queue\").size<v.byteLength-v.bytesFilled\?@getByIdDirectPrivate(_,\"queue\").size:v.byteLength-v.bytesFilled,q=v.bytesFilled+k,w=q-q%v.elementSize;let z=k,E=!1;if(w>j)z=w-v.bytesFilled,E=!0;while(z>0){let G=@getByIdDirectPrivate(_,\"queue\").content.peek();const H=z<G.byteLength\?z:G.byteLength,J=v.byteOffset+v.bytesFilled;if(new @Uint8Array(v.buffer).set(new @Uint8Array(G.buffer,G.byteOffset,H),J),G.byteLength===H)@getByIdDirectPrivate(_,\"queue\").content.shift();else G.byteOffset+=H,G.byteLength-=H;@getByIdDirectPrivate(_,\"queue\").size-=H,@assert(@getByIdDirectPrivate(_,\"pendingPullIntos\").isEmpty()||@getByIdDirectPrivate(_,\"pendingPullIntos\").peek()===v),@readableByteStreamControllerInvalidateBYOBRequest(_),v.bytesFilled+=H,z-=H}if(!E)@assert(@getByIdDirectPrivate(_,\"queue\").size===0),@assert(v.bytesFilled>0),@assert(v.bytesFilled<v.elementSize);return E})\n"; - -// readableByteStreamControllerShiftPendingDescriptor -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeLength = 150; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCode = "(function (B){\"use strict\";let _=@getByIdDirectPrivate(B,\"pendingPullIntos\").shift();return @readableByteStreamControllerInvalidateBYOBRequest(B),_})\n"; - -// readableByteStreamControllerInvalidateBYOBRequest -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeLength = 308; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCode = "(function (i){\"use strict\";if(@getByIdDirectPrivate(i,\"byobRequest\")===@undefined)return;const d=@getByIdDirectPrivate(i,\"byobRequest\");@putByIdDirectPrivate(d,\"associatedReadableByteStreamController\",@undefined),@putByIdDirectPrivate(d,\"view\",@undefined),@putByIdDirectPrivate(i,\"byobRequest\",@undefined)})\n"; - -// readableByteStreamControllerCommitDescriptor -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeLength = 386; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCode = "(function (_,b){\"use strict\";@assert(@getByIdDirectPrivate(_,\"state\")!==@streamErrored);let g=!1;if(@getByIdDirectPrivate(_,\"state\")===@streamClosed)@assert(!b.bytesFilled),g=!0;let h=@readableByteStreamControllerConvertDescriptor(b);if(b.readerType===\"default\")@readableStreamFulfillReadRequest(_,h,g);else @assert(b.readerType===\"byob\"),@readableStreamFulfillReadIntoRequest(_,h,g)})\n"; - -// readableByteStreamControllerConvertDescriptor -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeLength = 176; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCode = "(function (d){\"use strict\";return @assert(d.bytesFilled<=d.byteLength),@assert(d.bytesFilled%d.elementSize===0),new d.ctor(d.buffer,d.byteOffset,d.bytesFilled/d.elementSize)})\n"; - -// readableStreamFulfillReadIntoRequest -const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeLength = 161; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCode = "(function (r,B,I){\"use strict\";const b=@getByIdDirectPrivate(@getByIdDirectPrivate(r,\"reader\"),\"readIntoRequests\").shift();@fulfillPromise(b,{value:B,done:I})})\n"; - -// readableStreamBYOBReaderRead -const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeLength = 356; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamBYOBReaderReadCode = "(function (_,c){\"use strict\";const n=@getByIdDirectPrivate(_,\"ownerReadableStream\");if(@assert(!!n),@putByIdDirectPrivate(n,\"disturbed\",!0),@getByIdDirectPrivate(n,\"state\")===@streamErrored)return @Promise.@reject(@getByIdDirectPrivate(n,\"storedError\"));return @readableByteStreamControllerPullInto(@getByIdDirectPrivate(n,\"readableStreamController\"),c)})\n"; - -// readableByteStreamControllerPullInto -const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeLength = 1255; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCode = "(function (y,_){\"use strict\";const b=@getByIdDirectPrivate(y,\"controlledReadableStream\");let h=1;if(_.BYTES_PER_ELEMENT!==@undefined)h=_.BYTES_PER_ELEMENT;const E=_.constructor,F={buffer:_.buffer,byteOffset:_.byteOffset,byteLength:_.byteLength,bytesFilled:0,elementSize:h,ctor:E,readerType:\"byob\"};var P=@getByIdDirectPrivate(y,\"pendingPullIntos\");if(P\?.isNotEmpty())return F.buffer=@transferBufferToCurrentRealm(F.buffer),P.push(F),@readableStreamAddReadIntoRequest(b);if(@getByIdDirectPrivate(b,\"state\")===@streamClosed){const T=new E(F.buffer,F.byteOffset,0);return @createFulfilledPromise({value:T,done:!0})}if(@getByIdDirectPrivate(y,\"queue\").size>0){if(@readableByteStreamControllerFillDescriptorFromQueue(y,F)){const T=@readableByteStreamControllerConvertDescriptor(F);return @readableByteStreamControllerHandleQueueDrain(y),@createFulfilledPromise({value:T,done:!1})}if(@getByIdDirectPrivate(y,\"closeRequested\")){const T=@makeTypeError(\"Closing stream has been requested\");return @readableByteStreamControllerError(y,T),@Promise.@reject(T)}}F.buffer=@transferBufferToCurrentRealm(F.buffer),@getByIdDirectPrivate(y,\"pendingPullIntos\").push(F);const R=@readableStreamAddReadIntoRequest(b);return @readableByteStreamControllerCallPullIfNeeded(y),R})\n"; - -// readableStreamAddReadIntoRequest -const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeLength = 326; -static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCode = "(function (_){\"use strict\";@assert(@isReadableStreamBYOBReader(@getByIdDirectPrivate(_,\"reader\"))),@assert(@getByIdDirectPrivate(_,\"state\")===@streamReadable||@getByIdDirectPrivate(_,\"state\")===@streamClosed);const n=@newPromise();return @getByIdDirectPrivate(@getByIdDirectPrivate(_,\"reader\"),\"readIntoRequests\").push(n),n})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().readableByteStreamInternalsBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().readableByteStreamInternalsBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -/* WritableStreamDefaultController.ts */ -// initializeWritableStreamDefaultController -const JSC::ConstructAbility s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeLength = 368; -static const JSC::Intrinsic s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCode = "(function (){\"use strict\";return @putByIdDirectPrivate(this,\"queue\",@newQueue()),@putByIdDirectPrivate(this,\"abortSteps\",(c)=>{const i=@getByIdDirectPrivate(this,\"abortAlgorithm\").@call(@undefined,c);return @writableStreamDefaultControllerClearAlgorithms(this),i}),@putByIdDirectPrivate(this,\"errorSteps\",()=>{@resetQueue(@getByIdDirectPrivate(this,\"queue\"))}),this})\n"; - -// error -const JSC::ConstructAbility s_writableStreamDefaultControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_writableStreamDefaultControllerErrorCodeConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_writableStreamDefaultControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_writableStreamDefaultControllerErrorCodeLength = 301; -static const JSC::Intrinsic s_writableStreamDefaultControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultControllerErrorCode = "(function (n){\"use strict\";if(@getByIdDirectPrivate(this,\"abortSteps\")===@undefined)throw @makeThisTypeError(\"WritableStreamDefaultController\",\"error\");const o=@getByIdDirectPrivate(this,\"stream\");if(@getByIdDirectPrivate(o,\"state\")!==\"writable\")return;@writableStreamDefaultControllerError(this,n)})\n"; - -#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ -{\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \ - return clientData->builtinFunctions().writableStreamDefaultControllerBuiltins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().writableStreamDefaultControllerBuiltins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \ -} -WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - - - -JSBuiltinInternalFunctions::JSBuiltinInternalFunctions(JSC::VM& vm) - : m_vm(vm) - , m_writableStreamInternals(vm) - , m_transformStreamInternals(vm) - , m_readableStreamInternals(vm) - , m_streamInternals(vm) - , m_readableByteStreamInternals(vm) - -{ - UNUSED_PARAM(vm); -} - -template<typename Visitor> -void JSBuiltinInternalFunctions::visit(Visitor& visitor) -{ - m_writableStreamInternals.visit(visitor); - m_transformStreamInternals.visit(visitor); - m_readableStreamInternals.visit(visitor); - m_streamInternals.visit(visitor); - m_readableByteStreamInternals.visit(visitor); - - UNUSED_PARAM(visitor); -} - -template void JSBuiltinInternalFunctions::visit(AbstractSlotVisitor&); -template void JSBuiltinInternalFunctions::visit(SlotVisitor&); - -SUPPRESS_ASAN void JSBuiltinInternalFunctions::initialize(Zig::GlobalObject& globalObject) -{ - UNUSED_PARAM(globalObject); - m_writableStreamInternals.init(globalObject); - m_transformStreamInternals.init(globalObject); - m_readableStreamInternals.init(globalObject); - m_streamInternals.init(globalObject); - m_readableByteStreamInternals.init(globalObject); - - JSVMClientData& clientData = *static_cast<JSVMClientData*>(m_vm.clientData); - Zig::GlobalObject::GlobalPropertyInfo staticGlobals[] = { -#define DECLARE_GLOBAL_STATIC(name) \ - Zig::GlobalObject::GlobalPropertyInfo( \ - clientData.builtinFunctions().writableStreamInternalsBuiltins().name##PrivateName(), writableStreamInternals().m_##name##Function.get() , JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly), - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_GLOBAL_STATIC) - #undef DECLARE_GLOBAL_STATIC - #define DECLARE_GLOBAL_STATIC(name) \ - Zig::GlobalObject::GlobalPropertyInfo( \ - clientData.builtinFunctions().transformStreamInternalsBuiltins().name##PrivateName(), transformStreamInternals().m_##name##Function.get() , JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly), - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_GLOBAL_STATIC) - #undef DECLARE_GLOBAL_STATIC - #define DECLARE_GLOBAL_STATIC(name) \ - Zig::GlobalObject::GlobalPropertyInfo( \ - clientData.builtinFunctions().readableStreamInternalsBuiltins().name##PrivateName(), readableStreamInternals().m_##name##Function.get() , JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly), - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_GLOBAL_STATIC) - #undef DECLARE_GLOBAL_STATIC - #define DECLARE_GLOBAL_STATIC(name) \ - Zig::GlobalObject::GlobalPropertyInfo( \ - clientData.builtinFunctions().streamInternalsBuiltins().name##PrivateName(), streamInternals().m_##name##Function.get() , JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly), - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_GLOBAL_STATIC) - #undef DECLARE_GLOBAL_STATIC - #define DECLARE_GLOBAL_STATIC(name) \ - Zig::GlobalObject::GlobalPropertyInfo( \ - clientData.builtinFunctions().readableByteStreamInternalsBuiltins().name##PrivateName(), readableByteStreamInternals().m_##name##Function.get() , JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly), - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_GLOBAL_STATIC) - #undef DECLARE_GLOBAL_STATIC - - }; - globalObject.addStaticGlobals(staticGlobals, std::size(staticGlobals)); - UNUSED_PARAM(clientData); -} - -} // namespace WebCore diff --git a/src/bun.js/builtins/WebCoreJSBuiltins.d.ts b/src/bun.js/builtins/WebCoreJSBuiltins.d.ts deleted file mode 100644 index a39c38348..000000000 --- a/src/bun.js/builtins/WebCoreJSBuiltins.d.ts +++ /dev/null @@ -1,199 +0,0 @@ -// Generated by `bun src/bun.js/builtins/codegen/index.js` -// Do not edit by hand. -type RemoveThis<F> = F extends (this: infer T, ...args: infer A) => infer R ? (...args: A) => R : F; - -// WritableStreamInternals.ts -declare const $isWritableStream: RemoveThis<typeof import("./ts/WritableStreamInternals")["isWritableStream"]>; -declare const $isWritableStreamDefaultWriter: RemoveThis<typeof import("./ts/WritableStreamInternals")["isWritableStreamDefaultWriter"]>; -declare const $acquireWritableStreamDefaultWriter: RemoveThis<typeof import("./ts/WritableStreamInternals")["acquireWritableStreamDefaultWriter"]>; -declare const $createWritableStream: RemoveThis<typeof import("./ts/WritableStreamInternals")["createWritableStream"]>; -declare const $createInternalWritableStreamFromUnderlyingSink: RemoveThis<typeof import("./ts/WritableStreamInternals")["createInternalWritableStreamFromUnderlyingSink"]>; -declare const $initializeWritableStreamSlots: RemoveThis<typeof import("./ts/WritableStreamInternals")["initializeWritableStreamSlots"]>; -declare const $writableStreamCloseForBindings: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamCloseForBindings"]>; -declare const $writableStreamAbortForBindings: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamAbortForBindings"]>; -declare const $isWritableStreamLocked: RemoveThis<typeof import("./ts/WritableStreamInternals")["isWritableStreamLocked"]>; -declare const $setUpWritableStreamDefaultWriter: RemoveThis<typeof import("./ts/WritableStreamInternals")["setUpWritableStreamDefaultWriter"]>; -declare const $writableStreamAbort: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamAbort"]>; -declare const $writableStreamClose: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamClose"]>; -declare const $writableStreamAddWriteRequest: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamAddWriteRequest"]>; -declare const $writableStreamCloseQueuedOrInFlight: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamCloseQueuedOrInFlight"]>; -declare const $writableStreamDealWithRejection: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDealWithRejection"]>; -declare const $writableStreamFinishErroring: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamFinishErroring"]>; -declare const $writableStreamFinishInFlightClose: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamFinishInFlightClose"]>; -declare const $writableStreamFinishInFlightCloseWithError: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamFinishInFlightCloseWithError"]>; -declare const $writableStreamFinishInFlightWrite: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamFinishInFlightWrite"]>; -declare const $writableStreamFinishInFlightWriteWithError: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamFinishInFlightWriteWithError"]>; -declare const $writableStreamHasOperationMarkedInFlight: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamHasOperationMarkedInFlight"]>; -declare const $writableStreamMarkCloseRequestInFlight: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamMarkCloseRequestInFlight"]>; -declare const $writableStreamMarkFirstWriteRequestInFlight: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamMarkFirstWriteRequestInFlight"]>; -declare const $writableStreamRejectCloseAndClosedPromiseIfNeeded: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamRejectCloseAndClosedPromiseIfNeeded"]>; -declare const $writableStreamStartErroring: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamStartErroring"]>; -declare const $writableStreamUpdateBackpressure: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamUpdateBackpressure"]>; -declare const $writableStreamDefaultWriterAbort: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultWriterAbort"]>; -declare const $writableStreamDefaultWriterClose: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultWriterClose"]>; -declare const $writableStreamDefaultWriterCloseWithErrorPropagation: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultWriterCloseWithErrorPropagation"]>; -declare const $writableStreamDefaultWriterEnsureClosedPromiseRejected: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultWriterEnsureClosedPromiseRejected"]>; -declare const $writableStreamDefaultWriterEnsureReadyPromiseRejected: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultWriterEnsureReadyPromiseRejected"]>; -declare const $writableStreamDefaultWriterGetDesiredSize: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultWriterGetDesiredSize"]>; -declare const $writableStreamDefaultWriterRelease: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultWriterRelease"]>; -declare const $writableStreamDefaultWriterWrite: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultWriterWrite"]>; -declare const $setUpWritableStreamDefaultController: RemoveThis<typeof import("./ts/WritableStreamInternals")["setUpWritableStreamDefaultController"]>; -declare const $writableStreamDefaultControllerStart: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerStart"]>; -declare const $setUpWritableStreamDefaultControllerFromUnderlyingSink: RemoveThis<typeof import("./ts/WritableStreamInternals")["setUpWritableStreamDefaultControllerFromUnderlyingSink"]>; -declare const $writableStreamDefaultControllerAdvanceQueueIfNeeded: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerAdvanceQueueIfNeeded"]>; -declare const $isCloseSentinel: RemoveThis<typeof import("./ts/WritableStreamInternals")["isCloseSentinel"]>; -declare const $writableStreamDefaultControllerClearAlgorithms: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerClearAlgorithms"]>; -declare const $writableStreamDefaultControllerClose: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerClose"]>; -declare const $writableStreamDefaultControllerError: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerError"]>; -declare const $writableStreamDefaultControllerErrorIfNeeded: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerErrorIfNeeded"]>; -declare const $writableStreamDefaultControllerGetBackpressure: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerGetBackpressure"]>; -declare const $writableStreamDefaultControllerGetChunkSize: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerGetChunkSize"]>; -declare const $writableStreamDefaultControllerGetDesiredSize: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerGetDesiredSize"]>; -declare const $writableStreamDefaultControllerProcessClose: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerProcessClose"]>; -declare const $writableStreamDefaultControllerProcessWrite: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerProcessWrite"]>; -declare const $writableStreamDefaultControllerWrite: RemoveThis<typeof import("./ts/WritableStreamInternals")["writableStreamDefaultControllerWrite"]>; - -// TransformStreamInternals.ts -declare const $isTransformStream: RemoveThis<typeof import("./ts/TransformStreamInternals")["isTransformStream"]>; -declare const $isTransformStreamDefaultController: RemoveThis<typeof import("./ts/TransformStreamInternals")["isTransformStreamDefaultController"]>; -declare const $createTransformStream: RemoveThis<typeof import("./ts/TransformStreamInternals")["createTransformStream"]>; -declare const $initializeTransformStream: RemoveThis<typeof import("./ts/TransformStreamInternals")["initializeTransformStream"]>; -declare const $transformStreamError: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamError"]>; -declare const $transformStreamErrorWritableAndUnblockWrite: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamErrorWritableAndUnblockWrite"]>; -declare const $transformStreamSetBackpressure: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamSetBackpressure"]>; -declare const $setUpTransformStreamDefaultController: RemoveThis<typeof import("./ts/TransformStreamInternals")["setUpTransformStreamDefaultController"]>; -declare const $setUpTransformStreamDefaultControllerFromTransformer: RemoveThis<typeof import("./ts/TransformStreamInternals")["setUpTransformStreamDefaultControllerFromTransformer"]>; -declare const $transformStreamDefaultControllerClearAlgorithms: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamDefaultControllerClearAlgorithms"]>; -declare const $transformStreamDefaultControllerEnqueue: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamDefaultControllerEnqueue"]>; -declare const $transformStreamDefaultControllerError: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamDefaultControllerError"]>; -declare const $transformStreamDefaultControllerPerformTransform: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamDefaultControllerPerformTransform"]>; -declare const $transformStreamDefaultControllerTerminate: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamDefaultControllerTerminate"]>; -declare const $transformStreamDefaultSinkWriteAlgorithm: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamDefaultSinkWriteAlgorithm"]>; -declare const $transformStreamDefaultSinkAbortAlgorithm: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamDefaultSinkAbortAlgorithm"]>; -declare const $transformStreamDefaultSinkCloseAlgorithm: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamDefaultSinkCloseAlgorithm"]>; -declare const $transformStreamDefaultSourcePullAlgorithm: RemoveThis<typeof import("./ts/TransformStreamInternals")["transformStreamDefaultSourcePullAlgorithm"]>; - -// ReadableStreamInternals.ts -declare const $readableStreamReaderGenericInitialize: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamReaderGenericInitialize"]>; -declare const $privateInitializeReadableStreamDefaultController: RemoveThis<typeof import("./ts/ReadableStreamInternals")["privateInitializeReadableStreamDefaultController"]>; -declare const $readableStreamDefaultControllerError: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerError"]>; -declare const $readableStreamPipeTo: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamPipeTo"]>; -declare const $acquireReadableStreamDefaultReader: RemoveThis<typeof import("./ts/ReadableStreamInternals")["acquireReadableStreamDefaultReader"]>; -declare const $setupReadableStreamDefaultController: RemoveThis<typeof import("./ts/ReadableStreamInternals")["setupReadableStreamDefaultController"]>; -declare const $createReadableStreamController: RemoveThis<typeof import("./ts/ReadableStreamInternals")["createReadableStreamController"]>; -declare const $readableStreamDefaultControllerStart: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerStart"]>; -declare const $readableStreamPipeToWritableStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamPipeToWritableStream"]>; -declare const $pipeToLoop: RemoveThis<typeof import("./ts/ReadableStreamInternals")["pipeToLoop"]>; -declare const $pipeToDoReadWrite: RemoveThis<typeof import("./ts/ReadableStreamInternals")["pipeToDoReadWrite"]>; -declare const $pipeToErrorsMustBePropagatedForward: RemoveThis<typeof import("./ts/ReadableStreamInternals")["pipeToErrorsMustBePropagatedForward"]>; -declare const $pipeToErrorsMustBePropagatedBackward: RemoveThis<typeof import("./ts/ReadableStreamInternals")["pipeToErrorsMustBePropagatedBackward"]>; -declare const $pipeToClosingMustBePropagatedForward: RemoveThis<typeof import("./ts/ReadableStreamInternals")["pipeToClosingMustBePropagatedForward"]>; -declare const $pipeToClosingMustBePropagatedBackward: RemoveThis<typeof import("./ts/ReadableStreamInternals")["pipeToClosingMustBePropagatedBackward"]>; -declare const $pipeToShutdownWithAction: RemoveThis<typeof import("./ts/ReadableStreamInternals")["pipeToShutdownWithAction"]>; -declare const $pipeToShutdown: RemoveThis<typeof import("./ts/ReadableStreamInternals")["pipeToShutdown"]>; -declare const $pipeToFinalize: RemoveThis<typeof import("./ts/ReadableStreamInternals")["pipeToFinalize"]>; -declare const $readableStreamTee: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamTee"]>; -declare const $readableStreamTeePullFunction: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamTeePullFunction"]>; -declare const $readableStreamTeeBranch1CancelFunction: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamTeeBranch1CancelFunction"]>; -declare const $readableStreamTeeBranch2CancelFunction: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamTeeBranch2CancelFunction"]>; -declare const $isReadableStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["isReadableStream"]>; -declare const $isReadableStreamDefaultReader: RemoveThis<typeof import("./ts/ReadableStreamInternals")["isReadableStreamDefaultReader"]>; -declare const $isReadableStreamDefaultController: RemoveThis<typeof import("./ts/ReadableStreamInternals")["isReadableStreamDefaultController"]>; -declare const $readDirectStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readDirectStream"]>; -declare const $assignToStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["assignToStream"]>; -declare const $readStreamIntoSink: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readStreamIntoSink"]>; -declare const $handleDirectStreamError: RemoveThis<typeof import("./ts/ReadableStreamInternals")["handleDirectStreamError"]>; -declare const $handleDirectStreamErrorReject: RemoveThis<typeof import("./ts/ReadableStreamInternals")["handleDirectStreamErrorReject"]>; -declare const $onPullDirectStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["onPullDirectStream"]>; -declare const $noopDoneFunction: RemoveThis<typeof import("./ts/ReadableStreamInternals")["noopDoneFunction"]>; -declare const $onReadableStreamDirectControllerClosed: RemoveThis<typeof import("./ts/ReadableStreamInternals")["onReadableStreamDirectControllerClosed"]>; -declare const $onCloseDirectStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["onCloseDirectStream"]>; -declare const $onFlushDirectStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["onFlushDirectStream"]>; -declare const $createTextStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["createTextStream"]>; -declare const $initializeTextStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["initializeTextStream"]>; -declare const $initializeArrayStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["initializeArrayStream"]>; -declare const $initializeArrayBufferStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["initializeArrayBufferStream"]>; -declare const $readableStreamError: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamError"]>; -declare const $readableStreamDefaultControllerShouldCallPull: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerShouldCallPull"]>; -declare const $readableStreamDefaultControllerCallPullIfNeeded: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerCallPullIfNeeded"]>; -declare const $isReadableStreamLocked: RemoveThis<typeof import("./ts/ReadableStreamInternals")["isReadableStreamLocked"]>; -declare const $readableStreamDefaultControllerGetDesiredSize: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerGetDesiredSize"]>; -declare const $readableStreamReaderGenericCancel: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamReaderGenericCancel"]>; -declare const $readableStreamCancel: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamCancel"]>; -declare const $readableStreamDefaultControllerCancel: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerCancel"]>; -declare const $readableStreamDefaultControllerPull: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerPull"]>; -declare const $readableStreamDefaultControllerClose: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerClose"]>; -declare const $readableStreamClose: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamClose"]>; -declare const $readableStreamFulfillReadRequest: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamFulfillReadRequest"]>; -declare const $readableStreamDefaultControllerEnqueue: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerEnqueue"]>; -declare const $readableStreamDefaultReaderRead: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultReaderRead"]>; -declare const $readableStreamAddReadRequest: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamAddReadRequest"]>; -declare const $isReadableStreamDisturbed: RemoveThis<typeof import("./ts/ReadableStreamInternals")["isReadableStreamDisturbed"]>; -declare const $readableStreamReaderGenericRelease: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamReaderGenericRelease"]>; -declare const $readableStreamDefaultControllerCanCloseOrEnqueue: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefaultControllerCanCloseOrEnqueue"]>; -declare const $lazyLoadStream: RemoveThis<typeof import("./ts/ReadableStreamInternals")["lazyLoadStream"]>; -declare const $readableStreamIntoArray: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamIntoArray"]>; -declare const $readableStreamIntoText: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamIntoText"]>; -declare const $readableStreamToArrayBufferDirect: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamToArrayBufferDirect"]>; -declare const $readableStreamToTextDirect: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamToTextDirect"]>; -declare const $readableStreamToArrayDirect: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamToArrayDirect"]>; -declare const $readableStreamDefineLazyIterators: RemoveThis<typeof import("./ts/ReadableStreamInternals")["readableStreamDefineLazyIterators"]>; - -// StreamInternals.ts -declare const $markPromiseAsHandled: RemoveThis<typeof import("./ts/StreamInternals")["markPromiseAsHandled"]>; -declare const $shieldingPromiseResolve: RemoveThis<typeof import("./ts/StreamInternals")["shieldingPromiseResolve"]>; -declare const $promiseInvokeOrNoopMethodNoCatch: RemoveThis<typeof import("./ts/StreamInternals")["promiseInvokeOrNoopMethodNoCatch"]>; -declare const $promiseInvokeOrNoopNoCatch: RemoveThis<typeof import("./ts/StreamInternals")["promiseInvokeOrNoopNoCatch"]>; -declare const $promiseInvokeOrNoopMethod: RemoveThis<typeof import("./ts/StreamInternals")["promiseInvokeOrNoopMethod"]>; -declare const $promiseInvokeOrNoop: RemoveThis<typeof import("./ts/StreamInternals")["promiseInvokeOrNoop"]>; -declare const $promiseInvokeOrFallbackOrNoop: RemoveThis<typeof import("./ts/StreamInternals")["promiseInvokeOrFallbackOrNoop"]>; -declare const $validateAndNormalizeQueuingStrategy: RemoveThis<typeof import("./ts/StreamInternals")["validateAndNormalizeQueuingStrategy"]>; -declare const $createFIFO: RemoveThis<typeof import("./ts/StreamInternals")["createFIFO"]>; -declare const $newQueue: RemoveThis<typeof import("./ts/StreamInternals")["newQueue"]>; -declare const $dequeueValue: RemoveThis<typeof import("./ts/StreamInternals")["dequeueValue"]>; -declare const $enqueueValueWithSize: RemoveThis<typeof import("./ts/StreamInternals")["enqueueValueWithSize"]>; -declare const $peekQueueValue: RemoveThis<typeof import("./ts/StreamInternals")["peekQueueValue"]>; -declare const $resetQueue: RemoveThis<typeof import("./ts/StreamInternals")["resetQueue"]>; -declare const $extractSizeAlgorithm: RemoveThis<typeof import("./ts/StreamInternals")["extractSizeAlgorithm"]>; -declare const $extractHighWaterMark: RemoveThis<typeof import("./ts/StreamInternals")["extractHighWaterMark"]>; -declare const $extractHighWaterMarkFromQueuingStrategyInit: RemoveThis<typeof import("./ts/StreamInternals")["extractHighWaterMarkFromQueuingStrategyInit"]>; -declare const $createFulfilledPromise: RemoveThis<typeof import("./ts/StreamInternals")["createFulfilledPromise"]>; -declare const $toDictionary: RemoveThis<typeof import("./ts/StreamInternals")["toDictionary"]>; - -// ReadableByteStreamInternals.ts -declare const $privateInitializeReadableByteStreamController: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["privateInitializeReadableByteStreamController"]>; -declare const $readableStreamByteStreamControllerStart: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableStreamByteStreamControllerStart"]>; -declare const $privateInitializeReadableStreamBYOBRequest: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["privateInitializeReadableStreamBYOBRequest"]>; -declare const $isReadableByteStreamController: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["isReadableByteStreamController"]>; -declare const $isReadableStreamBYOBRequest: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["isReadableStreamBYOBRequest"]>; -declare const $isReadableStreamBYOBReader: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["isReadableStreamBYOBReader"]>; -declare const $readableByteStreamControllerCancel: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerCancel"]>; -declare const $readableByteStreamControllerError: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerError"]>; -declare const $readableByteStreamControllerClose: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerClose"]>; -declare const $readableByteStreamControllerClearPendingPullIntos: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerClearPendingPullIntos"]>; -declare const $readableByteStreamControllerGetDesiredSize: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerGetDesiredSize"]>; -declare const $readableStreamHasBYOBReader: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableStreamHasBYOBReader"]>; -declare const $readableStreamHasDefaultReader: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableStreamHasDefaultReader"]>; -declare const $readableByteStreamControllerHandleQueueDrain: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerHandleQueueDrain"]>; -declare const $readableByteStreamControllerPull: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerPull"]>; -declare const $readableByteStreamControllerShouldCallPull: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerShouldCallPull"]>; -declare const $readableByteStreamControllerCallPullIfNeeded: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerCallPullIfNeeded"]>; -declare const $transferBufferToCurrentRealm: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["transferBufferToCurrentRealm"]>; -declare const $readableStreamReaderKind: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableStreamReaderKind"]>; -declare const $readableByteStreamControllerEnqueue: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerEnqueue"]>; -declare const $readableByteStreamControllerEnqueueChunk: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerEnqueueChunk"]>; -declare const $readableByteStreamControllerRespondWithNewView: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerRespondWithNewView"]>; -declare const $readableByteStreamControllerRespond: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerRespond"]>; -declare const $readableByteStreamControllerRespondInternal: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerRespondInternal"]>; -declare const $readableByteStreamControllerRespondInReadableState: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerRespondInReadableState"]>; -declare const $readableByteStreamControllerRespondInClosedState: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerRespondInClosedState"]>; -declare const $readableByteStreamControllerProcessPullDescriptors: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerProcessPullDescriptors"]>; -declare const $readableByteStreamControllerFillDescriptorFromQueue: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerFillDescriptorFromQueue"]>; -declare const $readableByteStreamControllerShiftPendingDescriptor: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerShiftPendingDescriptor"]>; -declare const $readableByteStreamControllerInvalidateBYOBRequest: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerInvalidateBYOBRequest"]>; -declare const $readableByteStreamControllerCommitDescriptor: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerCommitDescriptor"]>; -declare const $readableByteStreamControllerConvertDescriptor: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerConvertDescriptor"]>; -declare const $readableStreamFulfillReadIntoRequest: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableStreamFulfillReadIntoRequest"]>; -declare const $readableStreamBYOBReaderRead: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableStreamBYOBReaderRead"]>; -declare const $readableByteStreamControllerPullInto: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableByteStreamControllerPullInto"]>; -declare const $readableStreamAddReadIntoRequest: RemoveThis<typeof import("./ts/ReadableByteStreamInternals")["readableStreamAddReadIntoRequest"]>; diff --git a/src/bun.js/builtins/WebCoreJSBuiltins.h b/src/bun.js/builtins/WebCoreJSBuiltins.h deleted file mode 100644 index 3414ed847..000000000 --- a/src/bun.js/builtins/WebCoreJSBuiltins.h +++ /dev/null @@ -1,5512 +0,0 @@ -// Generated by `bun src/bun.js/builtins/codegen/index.js` -// Do not edit by hand. -#pragma once -namespace Zig { class GlobalObject; } -#include "root.h" -#include <JavaScriptCore/BuiltinUtils.h> -#include <JavaScriptCore/Identifier.h> -#include <JavaScriptCore/JSFunction.h> -#include <JavaScriptCore/UnlinkedFunctionExecutable.h> -#include <JavaScriptCore/VM.h> -#include <JavaScriptCore/WeakInlines.h> - -namespace JSC { -class FunctionExecutable; -} - -namespace WebCore { -/* BundlerPlugin.ts */ -// runSetupFunction -#define WEBCORE_BUILTIN_BUNDLERPLUGIN_RUNSETUPFUNCTION 1 -extern const char* const s_bundlerPluginRunSetupFunctionCode; -extern const int s_bundlerPluginRunSetupFunctionCodeLength; -extern const JSC::ConstructAbility s_bundlerPluginRunSetupFunctionCodeConstructAbility; -extern const JSC::ConstructorKind s_bundlerPluginRunSetupFunctionCodeConstructorKind; -extern const JSC::ImplementationVisibility s_bundlerPluginRunSetupFunctionCodeImplementationVisibility; - -// runOnResolvePlugins -#define WEBCORE_BUILTIN_BUNDLERPLUGIN_RUNONRESOLVEPLUGINS 1 -extern const char* const s_bundlerPluginRunOnResolvePluginsCode; -extern const int s_bundlerPluginRunOnResolvePluginsCodeLength; -extern const JSC::ConstructAbility s_bundlerPluginRunOnResolvePluginsCodeConstructAbility; -extern const JSC::ConstructorKind s_bundlerPluginRunOnResolvePluginsCodeConstructorKind; -extern const JSC::ImplementationVisibility s_bundlerPluginRunOnResolvePluginsCodeImplementationVisibility; - -// runOnLoadPlugins -#define WEBCORE_BUILTIN_BUNDLERPLUGIN_RUNONLOADPLUGINS 1 -extern const char* const s_bundlerPluginRunOnLoadPluginsCode; -extern const int s_bundlerPluginRunOnLoadPluginsCodeLength; -extern const JSC::ConstructAbility s_bundlerPluginRunOnLoadPluginsCodeConstructAbility; -extern const JSC::ConstructorKind s_bundlerPluginRunOnLoadPluginsCodeConstructorKind; -extern const JSC::ImplementationVisibility s_bundlerPluginRunOnLoadPluginsCodeImplementationVisibility; - -#define WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_DATA(macro) \ - macro(runSetupFunction, bundlerPluginRunSetupFunction, 2) \ - macro(runOnResolvePlugins, bundlerPluginRunOnResolvePlugins, 5) \ - macro(runOnLoadPlugins, bundlerPluginRunOnLoadPlugins, 4) \ - -#define WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_CODE(macro) \ - macro(bundlerPluginRunSetupFunctionCode, runSetupFunction, ASCIILiteral(), s_bundlerPluginRunSetupFunctionCodeLength) \ - macro(bundlerPluginRunOnResolvePluginsCode, runOnResolvePlugins, ASCIILiteral(), s_bundlerPluginRunOnResolvePluginsCodeLength) \ - macro(bundlerPluginRunOnLoadPluginsCode, runOnLoadPlugins, ASCIILiteral(), s_bundlerPluginRunOnLoadPluginsCodeLength) \ - -#define WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_FUNCTION_NAME(macro) \ - macro(runSetupFunction) \ - macro(runOnResolvePlugins) \ - macro(runOnLoadPlugins) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class BundlerPluginBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit BundlerPluginBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* BundlerPluginBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void BundlerPluginBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_BUNDLERPLUGIN_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ByteLengthQueuingStrategy.ts */ -// highWaterMark -#define WEBCORE_BUILTIN_BYTELENGTHQUEUINGSTRATEGY_HIGHWATERMARK 1 -extern const char* const s_byteLengthQueuingStrategyHighWaterMarkCode; -extern const int s_byteLengthQueuingStrategyHighWaterMarkCodeLength; -extern const JSC::ConstructAbility s_byteLengthQueuingStrategyHighWaterMarkCodeConstructAbility; -extern const JSC::ConstructorKind s_byteLengthQueuingStrategyHighWaterMarkCodeConstructorKind; -extern const JSC::ImplementationVisibility s_byteLengthQueuingStrategyHighWaterMarkCodeImplementationVisibility; - -// size -#define WEBCORE_BUILTIN_BYTELENGTHQUEUINGSTRATEGY_SIZE 1 -extern const char* const s_byteLengthQueuingStrategySizeCode; -extern const int s_byteLengthQueuingStrategySizeCodeLength; -extern const JSC::ConstructAbility s_byteLengthQueuingStrategySizeCodeConstructAbility; -extern const JSC::ConstructorKind s_byteLengthQueuingStrategySizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_byteLengthQueuingStrategySizeCodeImplementationVisibility; - -// initializeByteLengthQueuingStrategy -#define WEBCORE_BUILTIN_BYTELENGTHQUEUINGSTRATEGY_INITIALIZEBYTELENGTHQUEUINGSTRATEGY 1 -extern const char* const s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCode; -extern const int s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeLength; -extern const JSC::ConstructAbility s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeConstructAbility; -extern const JSC::ConstructorKind s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeConstructorKind; -extern const JSC::ImplementationVisibility s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeImplementationVisibility; - -#define WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_DATA(macro) \ - macro(highWaterMark, byteLengthQueuingStrategyHighWaterMark, 0) \ - macro(size, byteLengthQueuingStrategySize, 1) \ - macro(initializeByteLengthQueuingStrategy, byteLengthQueuingStrategyInitializeByteLengthQueuingStrategy, 1) \ - -#define WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_CODE(macro) \ - macro(byteLengthQueuingStrategyHighWaterMarkCode, highWaterMark, "get highWaterMark"_s, s_byteLengthQueuingStrategyHighWaterMarkCodeLength) \ - macro(byteLengthQueuingStrategySizeCode, size, ASCIILiteral(), s_byteLengthQueuingStrategySizeCodeLength) \ - macro(byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCode, initializeByteLengthQueuingStrategy, ASCIILiteral(), s_byteLengthQueuingStrategyInitializeByteLengthQueuingStrategyCodeLength) \ - -#define WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(macro) \ - macro(highWaterMark) \ - macro(size) \ - macro(initializeByteLengthQueuingStrategy) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ByteLengthQueuingStrategyBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ByteLengthQueuingStrategyBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ByteLengthQueuingStrategyBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ByteLengthQueuingStrategyBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_BYTELENGTHQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* WritableStreamInternals.ts */ -// isWritableStream -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_ISWRITABLESTREAM 1 -extern const char* const s_writableStreamInternalsIsWritableStreamCode; -extern const int s_writableStreamInternalsIsWritableStreamCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsIsWritableStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsIsWritableStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsIsWritableStreamCodeImplementationVisibility; - -// isWritableStreamDefaultWriter -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_ISWRITABLESTREAMDEFAULTWRITER 1 -extern const char* const s_writableStreamInternalsIsWritableStreamDefaultWriterCode; -extern const int s_writableStreamInternalsIsWritableStreamDefaultWriterCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsIsWritableStreamDefaultWriterCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsIsWritableStreamDefaultWriterCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsIsWritableStreamDefaultWriterCodeImplementationVisibility; - -// acquireWritableStreamDefaultWriter -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_ACQUIREWRITABLESTREAMDEFAULTWRITER 1 -extern const char* const s_writableStreamInternalsAcquireWritableStreamDefaultWriterCode; -extern const int s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeImplementationVisibility; - -// createWritableStream -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_CREATEWRITABLESTREAM 1 -extern const char* const s_writableStreamInternalsCreateWritableStreamCode; -extern const int s_writableStreamInternalsCreateWritableStreamCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsCreateWritableStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsCreateWritableStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsCreateWritableStreamCodeImplementationVisibility; - -// createInternalWritableStreamFromUnderlyingSink -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_CREATEINTERNALWRITABLESTREAMFROMUNDERLYINGSINK 1 -extern const char* const s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCode; -extern const int s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeImplementationVisibility; - -// initializeWritableStreamSlots -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_INITIALIZEWRITABLESTREAMSLOTS 1 -extern const char* const s_writableStreamInternalsInitializeWritableStreamSlotsCode; -extern const int s_writableStreamInternalsInitializeWritableStreamSlotsCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsInitializeWritableStreamSlotsCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsInitializeWritableStreamSlotsCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsInitializeWritableStreamSlotsCodeImplementationVisibility; - -// writableStreamCloseForBindings -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMCLOSEFORBINDINGS 1 -extern const char* const s_writableStreamInternalsWritableStreamCloseForBindingsCode; -extern const int s_writableStreamInternalsWritableStreamCloseForBindingsCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamCloseForBindingsCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamCloseForBindingsCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamCloseForBindingsCodeImplementationVisibility; - -// writableStreamAbortForBindings -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMABORTFORBINDINGS 1 -extern const char* const s_writableStreamInternalsWritableStreamAbortForBindingsCode; -extern const int s_writableStreamInternalsWritableStreamAbortForBindingsCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamAbortForBindingsCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamAbortForBindingsCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamAbortForBindingsCodeImplementationVisibility; - -// isWritableStreamLocked -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_ISWRITABLESTREAMLOCKED 1 -extern const char* const s_writableStreamInternalsIsWritableStreamLockedCode; -extern const int s_writableStreamInternalsIsWritableStreamLockedCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsIsWritableStreamLockedCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsIsWritableStreamLockedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsIsWritableStreamLockedCodeImplementationVisibility; - -// setUpWritableStreamDefaultWriter -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_SETUPWRITABLESTREAMDEFAULTWRITER 1 -extern const char* const s_writableStreamInternalsSetUpWritableStreamDefaultWriterCode; -extern const int s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeImplementationVisibility; - -// writableStreamAbort -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMABORT 1 -extern const char* const s_writableStreamInternalsWritableStreamAbortCode; -extern const int s_writableStreamInternalsWritableStreamAbortCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamAbortCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamAbortCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamAbortCodeImplementationVisibility; - -// writableStreamClose -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMCLOSE 1 -extern const char* const s_writableStreamInternalsWritableStreamCloseCode; -extern const int s_writableStreamInternalsWritableStreamCloseCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamCloseCodeImplementationVisibility; - -// writableStreamAddWriteRequest -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMADDWRITEREQUEST 1 -extern const char* const s_writableStreamInternalsWritableStreamAddWriteRequestCode; -extern const int s_writableStreamInternalsWritableStreamAddWriteRequestCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamAddWriteRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamAddWriteRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamAddWriteRequestCodeImplementationVisibility; - -// writableStreamCloseQueuedOrInFlight -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMCLOSEQUEUEDORINFLIGHT 1 -extern const char* const s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCode; -extern const int s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeImplementationVisibility; - -// writableStreamDealWithRejection -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEALWITHREJECTION 1 -extern const char* const s_writableStreamInternalsWritableStreamDealWithRejectionCode; -extern const int s_writableStreamInternalsWritableStreamDealWithRejectionCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDealWithRejectionCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDealWithRejectionCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDealWithRejectionCodeImplementationVisibility; - -// writableStreamFinishErroring -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMFINISHERRORING 1 -extern const char* const s_writableStreamInternalsWritableStreamFinishErroringCode; -extern const int s_writableStreamInternalsWritableStreamFinishErroringCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishErroringCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishErroringCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishErroringCodeImplementationVisibility; - -// writableStreamFinishInFlightClose -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMFINISHINFLIGHTCLOSE 1 -extern const char* const s_writableStreamInternalsWritableStreamFinishInFlightCloseCode; -extern const int s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeImplementationVisibility; - -// writableStreamFinishInFlightCloseWithError -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMFINISHINFLIGHTCLOSEWITHERROR 1 -extern const char* const s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCode; -extern const int s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeImplementationVisibility; - -// writableStreamFinishInFlightWrite -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMFINISHINFLIGHTWRITE 1 -extern const char* const s_writableStreamInternalsWritableStreamFinishInFlightWriteCode; -extern const int s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeImplementationVisibility; - -// writableStreamFinishInFlightWriteWithError -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMFINISHINFLIGHTWRITEWITHERROR 1 -extern const char* const s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCode; -extern const int s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeImplementationVisibility; - -// writableStreamHasOperationMarkedInFlight -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMHASOPERATIONMARKEDINFLIGHT 1 -extern const char* const s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCode; -extern const int s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeImplementationVisibility; - -// writableStreamMarkCloseRequestInFlight -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMMARKCLOSEREQUESTINFLIGHT 1 -extern const char* const s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCode; -extern const int s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeImplementationVisibility; - -// writableStreamMarkFirstWriteRequestInFlight -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMMARKFIRSTWRITEREQUESTINFLIGHT 1 -extern const char* const s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCode; -extern const int s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeImplementationVisibility; - -// writableStreamRejectCloseAndClosedPromiseIfNeeded -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMREJECTCLOSEANDCLOSEDPROMISEIFNEEDED 1 -extern const char* const s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCode; -extern const int s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeImplementationVisibility; - -// writableStreamStartErroring -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMSTARTERRORING 1 -extern const char* const s_writableStreamInternalsWritableStreamStartErroringCode; -extern const int s_writableStreamInternalsWritableStreamStartErroringCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamStartErroringCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamStartErroringCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamStartErroringCodeImplementationVisibility; - -// writableStreamUpdateBackpressure -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMUPDATEBACKPRESSURE 1 -extern const char* const s_writableStreamInternalsWritableStreamUpdateBackpressureCode; -extern const int s_writableStreamInternalsWritableStreamUpdateBackpressureCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamUpdateBackpressureCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamUpdateBackpressureCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamUpdateBackpressureCodeImplementationVisibility; - -// writableStreamDefaultWriterAbort -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTWRITERABORT 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultWriterAbortCode; -extern const int s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeImplementationVisibility; - -// writableStreamDefaultWriterClose -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTWRITERCLOSE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultWriterCloseCode; -extern const int s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeImplementationVisibility; - -// writableStreamDefaultWriterCloseWithErrorPropagation -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTWRITERCLOSEWITHERRORPROPAGATION 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCode; -extern const int s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeImplementationVisibility; - -// writableStreamDefaultWriterEnsureClosedPromiseRejected -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTWRITERENSURECLOSEDPROMISEREJECTED 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCode; -extern const int s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeImplementationVisibility; - -// writableStreamDefaultWriterEnsureReadyPromiseRejected -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTWRITERENSUREREADYPROMISEREJECTED 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCode; -extern const int s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeImplementationVisibility; - -// writableStreamDefaultWriterGetDesiredSize -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTWRITERGETDESIREDSIZE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCode; -extern const int s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeImplementationVisibility; - -// writableStreamDefaultWriterRelease -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTWRITERRELEASE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultWriterReleaseCode; -extern const int s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeImplementationVisibility; - -// writableStreamDefaultWriterWrite -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTWRITERWRITE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultWriterWriteCode; -extern const int s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeImplementationVisibility; - -// setUpWritableStreamDefaultController -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_SETUPWRITABLESTREAMDEFAULTCONTROLLER 1 -extern const char* const s_writableStreamInternalsSetUpWritableStreamDefaultControllerCode; -extern const int s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeImplementationVisibility; - -// writableStreamDefaultControllerStart -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERSTART 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerStartCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerStartCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerStartCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerStartCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerStartCodeImplementationVisibility; - -// setUpWritableStreamDefaultControllerFromUnderlyingSink -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_SETUPWRITABLESTREAMDEFAULTCONTROLLERFROMUNDERLYINGSINK 1 -extern const char* const s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCode; -extern const int s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeImplementationVisibility; - -// writableStreamDefaultControllerAdvanceQueueIfNeeded -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERADVANCEQUEUEIFNEEDED 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeImplementationVisibility; - -// isCloseSentinel -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_ISCLOSESENTINEL 1 -extern const char* const s_writableStreamInternalsIsCloseSentinelCode; -extern const int s_writableStreamInternalsIsCloseSentinelCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsIsCloseSentinelCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsIsCloseSentinelCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsIsCloseSentinelCodeImplementationVisibility; - -// writableStreamDefaultControllerClearAlgorithms -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERCLEARALGORITHMS 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeImplementationVisibility; - -// writableStreamDefaultControllerClose -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERCLOSE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerCloseCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeImplementationVisibility; - -// writableStreamDefaultControllerError -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERERROR 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerErrorCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeImplementationVisibility; - -// writableStreamDefaultControllerErrorIfNeeded -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERERRORIFNEEDED 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeImplementationVisibility; - -// writableStreamDefaultControllerGetBackpressure -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERGETBACKPRESSURE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeImplementationVisibility; - -// writableStreamDefaultControllerGetChunkSize -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERGETCHUNKSIZE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeImplementationVisibility; - -// writableStreamDefaultControllerGetDesiredSize -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERGETDESIREDSIZE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeImplementationVisibility; - -// writableStreamDefaultControllerProcessClose -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERPROCESSCLOSE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeImplementationVisibility; - -// writableStreamDefaultControllerProcessWrite -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERPROCESSWRITE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeImplementationVisibility; - -// writableStreamDefaultControllerWrite -#define WEBCORE_BUILTIN_WRITABLESTREAMINTERNALS_WRITABLESTREAMDEFAULTCONTROLLERWRITE 1 -extern const char* const s_writableStreamInternalsWritableStreamDefaultControllerWriteCode; -extern const int s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeLength; -extern const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeImplementationVisibility; - -#define WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_DATA(macro) \ - macro(isWritableStream, writableStreamInternalsIsWritableStream, 1) \ - macro(isWritableStreamDefaultWriter, writableStreamInternalsIsWritableStreamDefaultWriter, 1) \ - macro(acquireWritableStreamDefaultWriter, writableStreamInternalsAcquireWritableStreamDefaultWriter, 1) \ - macro(createWritableStream, writableStreamInternalsCreateWritableStream, 7) \ - macro(createInternalWritableStreamFromUnderlyingSink, writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSink, 2) \ - macro(initializeWritableStreamSlots, writableStreamInternalsInitializeWritableStreamSlots, 2) \ - macro(writableStreamCloseForBindings, writableStreamInternalsWritableStreamCloseForBindings, 1) \ - macro(writableStreamAbortForBindings, writableStreamInternalsWritableStreamAbortForBindings, 2) \ - macro(isWritableStreamLocked, writableStreamInternalsIsWritableStreamLocked, 1) \ - macro(setUpWritableStreamDefaultWriter, writableStreamInternalsSetUpWritableStreamDefaultWriter, 2) \ - macro(writableStreamAbort, writableStreamInternalsWritableStreamAbort, 2) \ - macro(writableStreamClose, writableStreamInternalsWritableStreamClose, 1) \ - macro(writableStreamAddWriteRequest, writableStreamInternalsWritableStreamAddWriteRequest, 1) \ - macro(writableStreamCloseQueuedOrInFlight, writableStreamInternalsWritableStreamCloseQueuedOrInFlight, 1) \ - macro(writableStreamDealWithRejection, writableStreamInternalsWritableStreamDealWithRejection, 2) \ - macro(writableStreamFinishErroring, writableStreamInternalsWritableStreamFinishErroring, 1) \ - macro(writableStreamFinishInFlightClose, writableStreamInternalsWritableStreamFinishInFlightClose, 1) \ - macro(writableStreamFinishInFlightCloseWithError, writableStreamInternalsWritableStreamFinishInFlightCloseWithError, 2) \ - macro(writableStreamFinishInFlightWrite, writableStreamInternalsWritableStreamFinishInFlightWrite, 1) \ - macro(writableStreamFinishInFlightWriteWithError, writableStreamInternalsWritableStreamFinishInFlightWriteWithError, 2) \ - macro(writableStreamHasOperationMarkedInFlight, writableStreamInternalsWritableStreamHasOperationMarkedInFlight, 1) \ - macro(writableStreamMarkCloseRequestInFlight, writableStreamInternalsWritableStreamMarkCloseRequestInFlight, 1) \ - macro(writableStreamMarkFirstWriteRequestInFlight, writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlight, 1) \ - macro(writableStreamRejectCloseAndClosedPromiseIfNeeded, writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeeded, 1) \ - macro(writableStreamStartErroring, writableStreamInternalsWritableStreamStartErroring, 2) \ - macro(writableStreamUpdateBackpressure, writableStreamInternalsWritableStreamUpdateBackpressure, 2) \ - macro(writableStreamDefaultWriterAbort, writableStreamInternalsWritableStreamDefaultWriterAbort, 2) \ - macro(writableStreamDefaultWriterClose, writableStreamInternalsWritableStreamDefaultWriterClose, 1) \ - macro(writableStreamDefaultWriterCloseWithErrorPropagation, writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagation, 1) \ - macro(writableStreamDefaultWriterEnsureClosedPromiseRejected, writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejected, 2) \ - macro(writableStreamDefaultWriterEnsureReadyPromiseRejected, writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejected, 2) \ - macro(writableStreamDefaultWriterGetDesiredSize, writableStreamInternalsWritableStreamDefaultWriterGetDesiredSize, 1) \ - macro(writableStreamDefaultWriterRelease, writableStreamInternalsWritableStreamDefaultWriterRelease, 1) \ - macro(writableStreamDefaultWriterWrite, writableStreamInternalsWritableStreamDefaultWriterWrite, 2) \ - macro(setUpWritableStreamDefaultController, writableStreamInternalsSetUpWritableStreamDefaultController, 9) \ - macro(writableStreamDefaultControllerStart, writableStreamInternalsWritableStreamDefaultControllerStart, 1) \ - macro(setUpWritableStreamDefaultControllerFromUnderlyingSink, writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSink, 6) \ - macro(writableStreamDefaultControllerAdvanceQueueIfNeeded, writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeeded, 1) \ - macro(isCloseSentinel, writableStreamInternalsIsCloseSentinel, 0) \ - macro(writableStreamDefaultControllerClearAlgorithms, writableStreamInternalsWritableStreamDefaultControllerClearAlgorithms, 1) \ - macro(writableStreamDefaultControllerClose, writableStreamInternalsWritableStreamDefaultControllerClose, 1) \ - macro(writableStreamDefaultControllerError, writableStreamInternalsWritableStreamDefaultControllerError, 2) \ - macro(writableStreamDefaultControllerErrorIfNeeded, writableStreamInternalsWritableStreamDefaultControllerErrorIfNeeded, 2) \ - macro(writableStreamDefaultControllerGetBackpressure, writableStreamInternalsWritableStreamDefaultControllerGetBackpressure, 1) \ - macro(writableStreamDefaultControllerGetChunkSize, writableStreamInternalsWritableStreamDefaultControllerGetChunkSize, 2) \ - macro(writableStreamDefaultControllerGetDesiredSize, writableStreamInternalsWritableStreamDefaultControllerGetDesiredSize, 1) \ - macro(writableStreamDefaultControllerProcessClose, writableStreamInternalsWritableStreamDefaultControllerProcessClose, 1) \ - macro(writableStreamDefaultControllerProcessWrite, writableStreamInternalsWritableStreamDefaultControllerProcessWrite, 2) \ - macro(writableStreamDefaultControllerWrite, writableStreamInternalsWritableStreamDefaultControllerWrite, 3) \ - -#define WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_CODE(macro) \ - macro(writableStreamInternalsIsWritableStreamCode, isWritableStream, ASCIILiteral(), s_writableStreamInternalsIsWritableStreamCodeLength) \ - macro(writableStreamInternalsIsWritableStreamDefaultWriterCode, isWritableStreamDefaultWriter, ASCIILiteral(), s_writableStreamInternalsIsWritableStreamDefaultWriterCodeLength) \ - macro(writableStreamInternalsAcquireWritableStreamDefaultWriterCode, acquireWritableStreamDefaultWriter, ASCIILiteral(), s_writableStreamInternalsAcquireWritableStreamDefaultWriterCodeLength) \ - macro(writableStreamInternalsCreateWritableStreamCode, createWritableStream, ASCIILiteral(), s_writableStreamInternalsCreateWritableStreamCodeLength) \ - macro(writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCode, createInternalWritableStreamFromUnderlyingSink, ASCIILiteral(), s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeLength) \ - macro(writableStreamInternalsInitializeWritableStreamSlotsCode, initializeWritableStreamSlots, ASCIILiteral(), s_writableStreamInternalsInitializeWritableStreamSlotsCodeLength) \ - macro(writableStreamInternalsWritableStreamCloseForBindingsCode, writableStreamCloseForBindings, ASCIILiteral(), s_writableStreamInternalsWritableStreamCloseForBindingsCodeLength) \ - macro(writableStreamInternalsWritableStreamAbortForBindingsCode, writableStreamAbortForBindings, ASCIILiteral(), s_writableStreamInternalsWritableStreamAbortForBindingsCodeLength) \ - macro(writableStreamInternalsIsWritableStreamLockedCode, isWritableStreamLocked, ASCIILiteral(), s_writableStreamInternalsIsWritableStreamLockedCodeLength) \ - macro(writableStreamInternalsSetUpWritableStreamDefaultWriterCode, setUpWritableStreamDefaultWriter, ASCIILiteral(), s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeLength) \ - macro(writableStreamInternalsWritableStreamAbortCode, writableStreamAbort, ASCIILiteral(), s_writableStreamInternalsWritableStreamAbortCodeLength) \ - macro(writableStreamInternalsWritableStreamCloseCode, writableStreamClose, ASCIILiteral(), s_writableStreamInternalsWritableStreamCloseCodeLength) \ - macro(writableStreamInternalsWritableStreamAddWriteRequestCode, writableStreamAddWriteRequest, ASCIILiteral(), s_writableStreamInternalsWritableStreamAddWriteRequestCodeLength) \ - macro(writableStreamInternalsWritableStreamCloseQueuedOrInFlightCode, writableStreamCloseQueuedOrInFlight, ASCIILiteral(), s_writableStreamInternalsWritableStreamCloseQueuedOrInFlightCodeLength) \ - macro(writableStreamInternalsWritableStreamDealWithRejectionCode, writableStreamDealWithRejection, ASCIILiteral(), s_writableStreamInternalsWritableStreamDealWithRejectionCodeLength) \ - macro(writableStreamInternalsWritableStreamFinishErroringCode, writableStreamFinishErroring, ASCIILiteral(), s_writableStreamInternalsWritableStreamFinishErroringCodeLength) \ - macro(writableStreamInternalsWritableStreamFinishInFlightCloseCode, writableStreamFinishInFlightClose, ASCIILiteral(), s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeLength) \ - macro(writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCode, writableStreamFinishInFlightCloseWithError, ASCIILiteral(), s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeLength) \ - macro(writableStreamInternalsWritableStreamFinishInFlightWriteCode, writableStreamFinishInFlightWrite, ASCIILiteral(), s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeLength) \ - macro(writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCode, writableStreamFinishInFlightWriteWithError, ASCIILiteral(), s_writableStreamInternalsWritableStreamFinishInFlightWriteWithErrorCodeLength) \ - macro(writableStreamInternalsWritableStreamHasOperationMarkedInFlightCode, writableStreamHasOperationMarkedInFlight, ASCIILiteral(), s_writableStreamInternalsWritableStreamHasOperationMarkedInFlightCodeLength) \ - macro(writableStreamInternalsWritableStreamMarkCloseRequestInFlightCode, writableStreamMarkCloseRequestInFlight, ASCIILiteral(), s_writableStreamInternalsWritableStreamMarkCloseRequestInFlightCodeLength) \ - macro(writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCode, writableStreamMarkFirstWriteRequestInFlight, ASCIILiteral(), s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeLength) \ - macro(writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCode, writableStreamRejectCloseAndClosedPromiseIfNeeded, ASCIILiteral(), s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeLength) \ - macro(writableStreamInternalsWritableStreamStartErroringCode, writableStreamStartErroring, ASCIILiteral(), s_writableStreamInternalsWritableStreamStartErroringCodeLength) \ - macro(writableStreamInternalsWritableStreamUpdateBackpressureCode, writableStreamUpdateBackpressure, ASCIILiteral(), s_writableStreamInternalsWritableStreamUpdateBackpressureCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultWriterAbortCode, writableStreamDefaultWriterAbort, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultWriterCloseCode, writableStreamDefaultWriterClose, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCode, writableStreamDefaultWriterCloseWithErrorPropagation, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCode, writableStreamDefaultWriterEnsureClosedPromiseRejected, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCode, writableStreamDefaultWriterEnsureReadyPromiseRejected, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCode, writableStreamDefaultWriterGetDesiredSize, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultWriterReleaseCode, writableStreamDefaultWriterRelease, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultWriterWriteCode, writableStreamDefaultWriterWrite, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeLength) \ - macro(writableStreamInternalsSetUpWritableStreamDefaultControllerCode, setUpWritableStreamDefaultController, ASCIILiteral(), s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerStartCode, writableStreamDefaultControllerStart, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerStartCodeLength) \ - macro(writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCode, setUpWritableStreamDefaultControllerFromUnderlyingSink, ASCIILiteral(), s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCode, writableStreamDefaultControllerAdvanceQueueIfNeeded, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeLength) \ - macro(writableStreamInternalsIsCloseSentinelCode, isCloseSentinel, ASCIILiteral(), s_writableStreamInternalsIsCloseSentinelCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCode, writableStreamDefaultControllerClearAlgorithms, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerClearAlgorithmsCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerCloseCode, writableStreamDefaultControllerClose, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerCloseCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerErrorCode, writableStreamDefaultControllerError, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCode, writableStreamDefaultControllerErrorIfNeeded, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCode, writableStreamDefaultControllerGetBackpressure, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerGetBackpressureCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCode, writableStreamDefaultControllerGetChunkSize, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerGetChunkSizeCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCode, writableStreamDefaultControllerGetDesiredSize, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerGetDesiredSizeCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerProcessCloseCode, writableStreamDefaultControllerProcessClose, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerProcessCloseCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerProcessWriteCode, writableStreamDefaultControllerProcessWrite, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeLength) \ - macro(writableStreamInternalsWritableStreamDefaultControllerWriteCode, writableStreamDefaultControllerWrite, ASCIILiteral(), s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeLength) \ - -#define WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(macro) \ - macro(isWritableStream) \ - macro(isWritableStreamDefaultWriter) \ - macro(acquireWritableStreamDefaultWriter) \ - macro(createWritableStream) \ - macro(createInternalWritableStreamFromUnderlyingSink) \ - macro(initializeWritableStreamSlots) \ - macro(writableStreamCloseForBindings) \ - macro(writableStreamAbortForBindings) \ - macro(isWritableStreamLocked) \ - macro(setUpWritableStreamDefaultWriter) \ - macro(writableStreamAbort) \ - macro(writableStreamClose) \ - macro(writableStreamAddWriteRequest) \ - macro(writableStreamCloseQueuedOrInFlight) \ - macro(writableStreamDealWithRejection) \ - macro(writableStreamFinishErroring) \ - macro(writableStreamFinishInFlightClose) \ - macro(writableStreamFinishInFlightCloseWithError) \ - macro(writableStreamFinishInFlightWrite) \ - macro(writableStreamFinishInFlightWriteWithError) \ - macro(writableStreamHasOperationMarkedInFlight) \ - macro(writableStreamMarkCloseRequestInFlight) \ - macro(writableStreamMarkFirstWriteRequestInFlight) \ - macro(writableStreamRejectCloseAndClosedPromiseIfNeeded) \ - macro(writableStreamStartErroring) \ - macro(writableStreamUpdateBackpressure) \ - macro(writableStreamDefaultWriterAbort) \ - macro(writableStreamDefaultWriterClose) \ - macro(writableStreamDefaultWriterCloseWithErrorPropagation) \ - macro(writableStreamDefaultWriterEnsureClosedPromiseRejected) \ - macro(writableStreamDefaultWriterEnsureReadyPromiseRejected) \ - macro(writableStreamDefaultWriterGetDesiredSize) \ - macro(writableStreamDefaultWriterRelease) \ - macro(writableStreamDefaultWriterWrite) \ - macro(setUpWritableStreamDefaultController) \ - macro(writableStreamDefaultControllerStart) \ - macro(setUpWritableStreamDefaultControllerFromUnderlyingSink) \ - macro(writableStreamDefaultControllerAdvanceQueueIfNeeded) \ - macro(isCloseSentinel) \ - macro(writableStreamDefaultControllerClearAlgorithms) \ - macro(writableStreamDefaultControllerClose) \ - macro(writableStreamDefaultControllerError) \ - macro(writableStreamDefaultControllerErrorIfNeeded) \ - macro(writableStreamDefaultControllerGetBackpressure) \ - macro(writableStreamDefaultControllerGetChunkSize) \ - macro(writableStreamDefaultControllerGetDesiredSize) \ - macro(writableStreamDefaultControllerProcessClose) \ - macro(writableStreamDefaultControllerProcessWrite) \ - macro(writableStreamDefaultControllerWrite) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class WritableStreamInternalsBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit WritableStreamInternalsBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* WritableStreamInternalsBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void WritableStreamInternalsBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -class WritableStreamInternalsBuiltinFunctions { -public: - explicit WritableStreamInternalsBuiltinFunctions(JSC::VM& vm) : m_vm(vm) { } - - void init(JSC::JSGlobalObject&); - template<typename Visitor> void visit(Visitor&); - -public: - JSC::VM& m_vm; - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(functionName) \ - JSC::WriteBarrier<JSC::JSFunction> m_##functionName##Function; - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS -}; - -inline void WritableStreamInternalsBuiltinFunctions::init(JSC::JSGlobalObject& globalObject) -{ -#define EXPORT_FUNCTION(codeName, functionName, overriddenName, length) \ - m_##functionName##Function.set(m_vm, &globalObject, JSC::JSFunction::create(m_vm, codeName##Generator(m_vm), &globalObject)); - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_CODE(EXPORT_FUNCTION) -#undef EXPORT_FUNCTION -} - -template<typename Visitor> -inline void WritableStreamInternalsBuiltinFunctions::visit(Visitor& visitor) -{ -#define VISIT_FUNCTION(name) visitor.append(m_##name##Function); - WEBCORE_FOREACH_WRITABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(VISIT_FUNCTION) -#undef VISIT_FUNCTION -} - -template void WritableStreamInternalsBuiltinFunctions::visit(JSC::AbstractSlotVisitor&); -template void WritableStreamInternalsBuiltinFunctions::visit(JSC::SlotVisitor&); - /* TransformStreamInternals.ts */ -// isTransformStream -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_ISTRANSFORMSTREAM 1 -extern const char* const s_transformStreamInternalsIsTransformStreamCode; -extern const int s_transformStreamInternalsIsTransformStreamCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsIsTransformStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsIsTransformStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsIsTransformStreamCodeImplementationVisibility; - -// isTransformStreamDefaultController -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_ISTRANSFORMSTREAMDEFAULTCONTROLLER 1 -extern const char* const s_transformStreamInternalsIsTransformStreamDefaultControllerCode; -extern const int s_transformStreamInternalsIsTransformStreamDefaultControllerCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsIsTransformStreamDefaultControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsIsTransformStreamDefaultControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsIsTransformStreamDefaultControllerCodeImplementationVisibility; - -// createTransformStream -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_CREATETRANSFORMSTREAM 1 -extern const char* const s_transformStreamInternalsCreateTransformStreamCode; -extern const int s_transformStreamInternalsCreateTransformStreamCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsCreateTransformStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsCreateTransformStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsCreateTransformStreamCodeImplementationVisibility; - -// initializeTransformStream -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_INITIALIZETRANSFORMSTREAM 1 -extern const char* const s_transformStreamInternalsInitializeTransformStreamCode; -extern const int s_transformStreamInternalsInitializeTransformStreamCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsInitializeTransformStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsInitializeTransformStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsInitializeTransformStreamCodeImplementationVisibility; - -// transformStreamError -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMERROR 1 -extern const char* const s_transformStreamInternalsTransformStreamErrorCode; -extern const int s_transformStreamInternalsTransformStreamErrorCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamErrorCodeImplementationVisibility; - -// transformStreamErrorWritableAndUnblockWrite -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMERRORWRITABLEANDUNBLOCKWRITE 1 -extern const char* const s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCode; -extern const int s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeImplementationVisibility; - -// transformStreamSetBackpressure -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMSETBACKPRESSURE 1 -extern const char* const s_transformStreamInternalsTransformStreamSetBackpressureCode; -extern const int s_transformStreamInternalsTransformStreamSetBackpressureCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamSetBackpressureCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamSetBackpressureCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamSetBackpressureCodeImplementationVisibility; - -// setUpTransformStreamDefaultController -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_SETUPTRANSFORMSTREAMDEFAULTCONTROLLER 1 -extern const char* const s_transformStreamInternalsSetUpTransformStreamDefaultControllerCode; -extern const int s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeImplementationVisibility; - -// setUpTransformStreamDefaultControllerFromTransformer -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_SETUPTRANSFORMSTREAMDEFAULTCONTROLLERFROMTRANSFORMER 1 -extern const char* const s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCode; -extern const int s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeImplementationVisibility; - -// transformStreamDefaultControllerClearAlgorithms -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMDEFAULTCONTROLLERCLEARALGORITHMS 1 -extern const char* const s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCode; -extern const int s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeImplementationVisibility; - -// transformStreamDefaultControllerEnqueue -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMDEFAULTCONTROLLERENQUEUE 1 -extern const char* const s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCode; -extern const int s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeImplementationVisibility; - -// transformStreamDefaultControllerError -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMDEFAULTCONTROLLERERROR 1 -extern const char* const s_transformStreamInternalsTransformStreamDefaultControllerErrorCode; -extern const int s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeImplementationVisibility; - -// transformStreamDefaultControllerPerformTransform -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMDEFAULTCONTROLLERPERFORMTRANSFORM 1 -extern const char* const s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCode; -extern const int s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeImplementationVisibility; - -// transformStreamDefaultControllerTerminate -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMDEFAULTCONTROLLERTERMINATE 1 -extern const char* const s_transformStreamInternalsTransformStreamDefaultControllerTerminateCode; -extern const int s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeImplementationVisibility; - -// transformStreamDefaultSinkWriteAlgorithm -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMDEFAULTSINKWRITEALGORITHM 1 -extern const char* const s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCode; -extern const int s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeImplementationVisibility; - -// transformStreamDefaultSinkAbortAlgorithm -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMDEFAULTSINKABORTALGORITHM 1 -extern const char* const s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCode; -extern const int s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeImplementationVisibility; - -// transformStreamDefaultSinkCloseAlgorithm -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMDEFAULTSINKCLOSEALGORITHM 1 -extern const char* const s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCode; -extern const int s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeImplementationVisibility; - -// transformStreamDefaultSourcePullAlgorithm -#define WEBCORE_BUILTIN_TRANSFORMSTREAMINTERNALS_TRANSFORMSTREAMDEFAULTSOURCEPULLALGORITHM 1 -extern const char* const s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCode; -extern const int s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeLength; -extern const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeImplementationVisibility; - -#define WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_DATA(macro) \ - macro(isTransformStream, transformStreamInternalsIsTransformStream, 1) \ - macro(isTransformStreamDefaultController, transformStreamInternalsIsTransformStreamDefaultController, 1) \ - macro(createTransformStream, transformStreamInternalsCreateTransformStream, 8) \ - macro(initializeTransformStream, transformStreamInternalsInitializeTransformStream, 7) \ - macro(transformStreamError, transformStreamInternalsTransformStreamError, 2) \ - macro(transformStreamErrorWritableAndUnblockWrite, transformStreamInternalsTransformStreamErrorWritableAndUnblockWrite, 2) \ - macro(transformStreamSetBackpressure, transformStreamInternalsTransformStreamSetBackpressure, 2) \ - macro(setUpTransformStreamDefaultController, transformStreamInternalsSetUpTransformStreamDefaultController, 4) \ - macro(setUpTransformStreamDefaultControllerFromTransformer, transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformer, 3) \ - macro(transformStreamDefaultControllerClearAlgorithms, transformStreamInternalsTransformStreamDefaultControllerClearAlgorithms, 1) \ - macro(transformStreamDefaultControllerEnqueue, transformStreamInternalsTransformStreamDefaultControllerEnqueue, 2) \ - macro(transformStreamDefaultControllerError, transformStreamInternalsTransformStreamDefaultControllerError, 2) \ - macro(transformStreamDefaultControllerPerformTransform, transformStreamInternalsTransformStreamDefaultControllerPerformTransform, 2) \ - macro(transformStreamDefaultControllerTerminate, transformStreamInternalsTransformStreamDefaultControllerTerminate, 1) \ - macro(transformStreamDefaultSinkWriteAlgorithm, transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithm, 2) \ - macro(transformStreamDefaultSinkAbortAlgorithm, transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithm, 2) \ - macro(transformStreamDefaultSinkCloseAlgorithm, transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithm, 1) \ - macro(transformStreamDefaultSourcePullAlgorithm, transformStreamInternalsTransformStreamDefaultSourcePullAlgorithm, 1) \ - -#define WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_CODE(macro) \ - macro(transformStreamInternalsIsTransformStreamCode, isTransformStream, ASCIILiteral(), s_transformStreamInternalsIsTransformStreamCodeLength) \ - macro(transformStreamInternalsIsTransformStreamDefaultControllerCode, isTransformStreamDefaultController, ASCIILiteral(), s_transformStreamInternalsIsTransformStreamDefaultControllerCodeLength) \ - macro(transformStreamInternalsCreateTransformStreamCode, createTransformStream, ASCIILiteral(), s_transformStreamInternalsCreateTransformStreamCodeLength) \ - macro(transformStreamInternalsInitializeTransformStreamCode, initializeTransformStream, ASCIILiteral(), s_transformStreamInternalsInitializeTransformStreamCodeLength) \ - macro(transformStreamInternalsTransformStreamErrorCode, transformStreamError, ASCIILiteral(), s_transformStreamInternalsTransformStreamErrorCodeLength) \ - macro(transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCode, transformStreamErrorWritableAndUnblockWrite, ASCIILiteral(), s_transformStreamInternalsTransformStreamErrorWritableAndUnblockWriteCodeLength) \ - macro(transformStreamInternalsTransformStreamSetBackpressureCode, transformStreamSetBackpressure, ASCIILiteral(), s_transformStreamInternalsTransformStreamSetBackpressureCodeLength) \ - macro(transformStreamInternalsSetUpTransformStreamDefaultControllerCode, setUpTransformStreamDefaultController, ASCIILiteral(), s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeLength) \ - macro(transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCode, setUpTransformStreamDefaultControllerFromTransformer, ASCIILiteral(), s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeLength) \ - macro(transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCode, transformStreamDefaultControllerClearAlgorithms, ASCIILiteral(), s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeLength) \ - macro(transformStreamInternalsTransformStreamDefaultControllerEnqueueCode, transformStreamDefaultControllerEnqueue, ASCIILiteral(), s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeLength) \ - macro(transformStreamInternalsTransformStreamDefaultControllerErrorCode, transformStreamDefaultControllerError, ASCIILiteral(), s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeLength) \ - macro(transformStreamInternalsTransformStreamDefaultControllerPerformTransformCode, transformStreamDefaultControllerPerformTransform, ASCIILiteral(), s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeLength) \ - macro(transformStreamInternalsTransformStreamDefaultControllerTerminateCode, transformStreamDefaultControllerTerminate, ASCIILiteral(), s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeLength) \ - macro(transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCode, transformStreamDefaultSinkWriteAlgorithm, ASCIILiteral(), s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeLength) \ - macro(transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCode, transformStreamDefaultSinkAbortAlgorithm, ASCIILiteral(), s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeLength) \ - macro(transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCode, transformStreamDefaultSinkCloseAlgorithm, ASCIILiteral(), s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeLength) \ - macro(transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCode, transformStreamDefaultSourcePullAlgorithm, ASCIILiteral(), s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeLength) \ - -#define WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_FUNCTION_NAME(macro) \ - macro(isTransformStream) \ - macro(isTransformStreamDefaultController) \ - macro(createTransformStream) \ - macro(initializeTransformStream) \ - macro(transformStreamError) \ - macro(transformStreamErrorWritableAndUnblockWrite) \ - macro(transformStreamSetBackpressure) \ - macro(setUpTransformStreamDefaultController) \ - macro(setUpTransformStreamDefaultControllerFromTransformer) \ - macro(transformStreamDefaultControllerClearAlgorithms) \ - macro(transformStreamDefaultControllerEnqueue) \ - macro(transformStreamDefaultControllerError) \ - macro(transformStreamDefaultControllerPerformTransform) \ - macro(transformStreamDefaultControllerTerminate) \ - macro(transformStreamDefaultSinkWriteAlgorithm) \ - macro(transformStreamDefaultSinkAbortAlgorithm) \ - macro(transformStreamDefaultSinkCloseAlgorithm) \ - macro(transformStreamDefaultSourcePullAlgorithm) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class TransformStreamInternalsBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit TransformStreamInternalsBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* TransformStreamInternalsBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void TransformStreamInternalsBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -class TransformStreamInternalsBuiltinFunctions { -public: - explicit TransformStreamInternalsBuiltinFunctions(JSC::VM& vm) : m_vm(vm) { } - - void init(JSC::JSGlobalObject&); - template<typename Visitor> void visit(Visitor&); - -public: - JSC::VM& m_vm; - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(functionName) \ - JSC::WriteBarrier<JSC::JSFunction> m_##functionName##Function; - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS -}; - -inline void TransformStreamInternalsBuiltinFunctions::init(JSC::JSGlobalObject& globalObject) -{ -#define EXPORT_FUNCTION(codeName, functionName, overriddenName, length) \ - m_##functionName##Function.set(m_vm, &globalObject, JSC::JSFunction::create(m_vm, codeName##Generator(m_vm), &globalObject)); - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_CODE(EXPORT_FUNCTION) -#undef EXPORT_FUNCTION -} - -template<typename Visitor> -inline void TransformStreamInternalsBuiltinFunctions::visit(Visitor& visitor) -{ -#define VISIT_FUNCTION(name) visitor.append(m_##name##Function); - WEBCORE_FOREACH_TRANSFORMSTREAMINTERNALS_BUILTIN_FUNCTION_NAME(VISIT_FUNCTION) -#undef VISIT_FUNCTION -} - -template void TransformStreamInternalsBuiltinFunctions::visit(JSC::AbstractSlotVisitor&); -template void TransformStreamInternalsBuiltinFunctions::visit(JSC::SlotVisitor&); - /* ProcessObjectInternals.ts */ -// binding -#define WEBCORE_BUILTIN_PROCESSOBJECTINTERNALS_BINDING 1 -extern const char* const s_processObjectInternalsBindingCode; -extern const int s_processObjectInternalsBindingCodeLength; -extern const JSC::ConstructAbility s_processObjectInternalsBindingCodeConstructAbility; -extern const JSC::ConstructorKind s_processObjectInternalsBindingCodeConstructorKind; -extern const JSC::ImplementationVisibility s_processObjectInternalsBindingCodeImplementationVisibility; - -// getStdioWriteStream -#define WEBCORE_BUILTIN_PROCESSOBJECTINTERNALS_GETSTDIOWRITESTREAM 1 -extern const char* const s_processObjectInternalsGetStdioWriteStreamCode; -extern const int s_processObjectInternalsGetStdioWriteStreamCodeLength; -extern const JSC::ConstructAbility s_processObjectInternalsGetStdioWriteStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_processObjectInternalsGetStdioWriteStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_processObjectInternalsGetStdioWriteStreamCodeImplementationVisibility; - -// getStdinStream -#define WEBCORE_BUILTIN_PROCESSOBJECTINTERNALS_GETSTDINSTREAM 1 -extern const char* const s_processObjectInternalsGetStdinStreamCode; -extern const int s_processObjectInternalsGetStdinStreamCodeLength; -extern const JSC::ConstructAbility s_processObjectInternalsGetStdinStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_processObjectInternalsGetStdinStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_processObjectInternalsGetStdinStreamCodeImplementationVisibility; - -#define WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_DATA(macro) \ - macro(binding, processObjectInternalsBinding, 1) \ - macro(getStdioWriteStream, processObjectInternalsGetStdioWriteStream, 2) \ - macro(getStdinStream, processObjectInternalsGetStdinStream, 3) \ - -#define WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_CODE(macro) \ - macro(processObjectInternalsBindingCode, binding, ASCIILiteral(), s_processObjectInternalsBindingCodeLength) \ - macro(processObjectInternalsGetStdioWriteStreamCode, getStdioWriteStream, ASCIILiteral(), s_processObjectInternalsGetStdioWriteStreamCodeLength) \ - macro(processObjectInternalsGetStdinStreamCode, getStdinStream, ASCIILiteral(), s_processObjectInternalsGetStdinStreamCodeLength) \ - -#define WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_FUNCTION_NAME(macro) \ - macro(binding) \ - macro(getStdioWriteStream) \ - macro(getStdinStream) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ProcessObjectInternalsBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ProcessObjectInternalsBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ProcessObjectInternalsBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ProcessObjectInternalsBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* TransformStream.ts */ -// initializeTransformStream -#define WEBCORE_BUILTIN_TRANSFORMSTREAM_INITIALIZETRANSFORMSTREAM 1 -extern const char* const s_transformStreamInitializeTransformStreamCode; -extern const int s_transformStreamInitializeTransformStreamCodeLength; -extern const JSC::ConstructAbility s_transformStreamInitializeTransformStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamInitializeTransformStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamInitializeTransformStreamCodeImplementationVisibility; - -// readable -#define WEBCORE_BUILTIN_TRANSFORMSTREAM_READABLE 1 -extern const char* const s_transformStreamReadableCode; -extern const int s_transformStreamReadableCodeLength; -extern const JSC::ConstructAbility s_transformStreamReadableCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamReadableCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamReadableCodeImplementationVisibility; - -// writable -#define WEBCORE_BUILTIN_TRANSFORMSTREAM_WRITABLE 1 -extern const char* const s_transformStreamWritableCode; -extern const int s_transformStreamWritableCodeLength; -extern const JSC::ConstructAbility s_transformStreamWritableCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamWritableCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamWritableCodeImplementationVisibility; - -#define WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_DATA(macro) \ - macro(initializeTransformStream, transformStreamInitializeTransformStream, 0) \ - macro(readable, transformStreamReadable, 0) \ - macro(writable, transformStreamWritable, 0) \ - -#define WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_CODE(macro) \ - macro(transformStreamInitializeTransformStreamCode, initializeTransformStream, ASCIILiteral(), s_transformStreamInitializeTransformStreamCodeLength) \ - macro(transformStreamReadableCode, readable, "get readable"_s, s_transformStreamReadableCodeLength) \ - macro(transformStreamWritableCode, writable, ASCIILiteral(), s_transformStreamWritableCodeLength) \ - -#define WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeTransformStream) \ - macro(readable) \ - macro(writable) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class TransformStreamBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit TransformStreamBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* TransformStreamBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void TransformStreamBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_TRANSFORMSTREAM_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* JSBufferPrototype.ts */ -// setBigUint64 -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_SETBIGUINT64 1 -extern const char* const s_jsBufferPrototypeSetBigUint64Code; -extern const int s_jsBufferPrototypeSetBigUint64CodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeSetBigUint64CodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeSetBigUint64CodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeSetBigUint64CodeImplementationVisibility; - -// readInt8 -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READINT8 1 -extern const char* const s_jsBufferPrototypeReadInt8Code; -extern const int s_jsBufferPrototypeReadInt8CodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadInt8CodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadInt8CodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt8CodeImplementationVisibility; - -// readUInt8 -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READUINT8 1 -extern const char* const s_jsBufferPrototypeReadUInt8Code; -extern const int s_jsBufferPrototypeReadUInt8CodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadUInt8CodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadUInt8CodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt8CodeImplementationVisibility; - -// readInt16LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READINT16LE 1 -extern const char* const s_jsBufferPrototypeReadInt16LECode; -extern const int s_jsBufferPrototypeReadInt16LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadInt16LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadInt16LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt16LECodeImplementationVisibility; - -// readInt16BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READINT16BE 1 -extern const char* const s_jsBufferPrototypeReadInt16BECode; -extern const int s_jsBufferPrototypeReadInt16BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadInt16BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadInt16BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt16BECodeImplementationVisibility; - -// readUInt16LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READUINT16LE 1 -extern const char* const s_jsBufferPrototypeReadUInt16LECode; -extern const int s_jsBufferPrototypeReadUInt16LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadUInt16LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadUInt16LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt16LECodeImplementationVisibility; - -// readUInt16BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READUINT16BE 1 -extern const char* const s_jsBufferPrototypeReadUInt16BECode; -extern const int s_jsBufferPrototypeReadUInt16BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadUInt16BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadUInt16BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt16BECodeImplementationVisibility; - -// readInt32LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READINT32LE 1 -extern const char* const s_jsBufferPrototypeReadInt32LECode; -extern const int s_jsBufferPrototypeReadInt32LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadInt32LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadInt32LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt32LECodeImplementationVisibility; - -// readInt32BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READINT32BE 1 -extern const char* const s_jsBufferPrototypeReadInt32BECode; -extern const int s_jsBufferPrototypeReadInt32BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadInt32BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadInt32BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadInt32BECodeImplementationVisibility; - -// readUInt32LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READUINT32LE 1 -extern const char* const s_jsBufferPrototypeReadUInt32LECode; -extern const int s_jsBufferPrototypeReadUInt32LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadUInt32LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadUInt32LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt32LECodeImplementationVisibility; - -// readUInt32BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READUINT32BE 1 -extern const char* const s_jsBufferPrototypeReadUInt32BECode; -extern const int s_jsBufferPrototypeReadUInt32BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadUInt32BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadUInt32BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadUInt32BECodeImplementationVisibility; - -// readIntLE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READINTLE 1 -extern const char* const s_jsBufferPrototypeReadIntLECode; -extern const int s_jsBufferPrototypeReadIntLECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadIntLECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadIntLECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadIntLECodeImplementationVisibility; - -// readIntBE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READINTBE 1 -extern const char* const s_jsBufferPrototypeReadIntBECode; -extern const int s_jsBufferPrototypeReadIntBECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadIntBECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadIntBECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadIntBECodeImplementationVisibility; - -// readUIntLE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READUINTLE 1 -extern const char* const s_jsBufferPrototypeReadUIntLECode; -extern const int s_jsBufferPrototypeReadUIntLECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadUIntLECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadUIntLECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadUIntLECodeImplementationVisibility; - -// readUIntBE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READUINTBE 1 -extern const char* const s_jsBufferPrototypeReadUIntBECode; -extern const int s_jsBufferPrototypeReadUIntBECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadUIntBECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadUIntBECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadUIntBECodeImplementationVisibility; - -// readFloatLE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READFLOATLE 1 -extern const char* const s_jsBufferPrototypeReadFloatLECode; -extern const int s_jsBufferPrototypeReadFloatLECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadFloatLECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadFloatLECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadFloatLECodeImplementationVisibility; - -// readFloatBE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READFLOATBE 1 -extern const char* const s_jsBufferPrototypeReadFloatBECode; -extern const int s_jsBufferPrototypeReadFloatBECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadFloatBECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadFloatBECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadFloatBECodeImplementationVisibility; - -// readDoubleLE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READDOUBLELE 1 -extern const char* const s_jsBufferPrototypeReadDoubleLECode; -extern const int s_jsBufferPrototypeReadDoubleLECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadDoubleLECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadDoubleLECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadDoubleLECodeImplementationVisibility; - -// readDoubleBE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READDOUBLEBE 1 -extern const char* const s_jsBufferPrototypeReadDoubleBECode; -extern const int s_jsBufferPrototypeReadDoubleBECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadDoubleBECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadDoubleBECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadDoubleBECodeImplementationVisibility; - -// readBigInt64LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READBIGINT64LE 1 -extern const char* const s_jsBufferPrototypeReadBigInt64LECode; -extern const int s_jsBufferPrototypeReadBigInt64LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadBigInt64LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadBigInt64LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadBigInt64LECodeImplementationVisibility; - -// readBigInt64BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READBIGINT64BE 1 -extern const char* const s_jsBufferPrototypeReadBigInt64BECode; -extern const int s_jsBufferPrototypeReadBigInt64BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadBigInt64BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadBigInt64BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadBigInt64BECodeImplementationVisibility; - -// readBigUInt64LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READBIGUINT64LE 1 -extern const char* const s_jsBufferPrototypeReadBigUInt64LECode; -extern const int s_jsBufferPrototypeReadBigUInt64LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadBigUInt64LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadBigUInt64LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadBigUInt64LECodeImplementationVisibility; - -// readBigUInt64BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_READBIGUINT64BE 1 -extern const char* const s_jsBufferPrototypeReadBigUInt64BECode; -extern const int s_jsBufferPrototypeReadBigUInt64BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeReadBigUInt64BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeReadBigUInt64BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeReadBigUInt64BECodeImplementationVisibility; - -// writeInt8 -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEINT8 1 -extern const char* const s_jsBufferPrototypeWriteInt8Code; -extern const int s_jsBufferPrototypeWriteInt8CodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteInt8CodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteInt8CodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt8CodeImplementationVisibility; - -// writeUInt8 -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEUINT8 1 -extern const char* const s_jsBufferPrototypeWriteUInt8Code; -extern const int s_jsBufferPrototypeWriteUInt8CodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt8CodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt8CodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt8CodeImplementationVisibility; - -// writeInt16LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEINT16LE 1 -extern const char* const s_jsBufferPrototypeWriteInt16LECode; -extern const int s_jsBufferPrototypeWriteInt16LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteInt16LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteInt16LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt16LECodeImplementationVisibility; - -// writeInt16BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEINT16BE 1 -extern const char* const s_jsBufferPrototypeWriteInt16BECode; -extern const int s_jsBufferPrototypeWriteInt16BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteInt16BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteInt16BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt16BECodeImplementationVisibility; - -// writeUInt16LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEUINT16LE 1 -extern const char* const s_jsBufferPrototypeWriteUInt16LECode; -extern const int s_jsBufferPrototypeWriteUInt16LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt16LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt16LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt16LECodeImplementationVisibility; - -// writeUInt16BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEUINT16BE 1 -extern const char* const s_jsBufferPrototypeWriteUInt16BECode; -extern const int s_jsBufferPrototypeWriteUInt16BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt16BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt16BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt16BECodeImplementationVisibility; - -// writeInt32LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEINT32LE 1 -extern const char* const s_jsBufferPrototypeWriteInt32LECode; -extern const int s_jsBufferPrototypeWriteInt32LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteInt32LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteInt32LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt32LECodeImplementationVisibility; - -// writeInt32BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEINT32BE 1 -extern const char* const s_jsBufferPrototypeWriteInt32BECode; -extern const int s_jsBufferPrototypeWriteInt32BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteInt32BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteInt32BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt32BECodeImplementationVisibility; - -// writeUInt32LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEUINT32LE 1 -extern const char* const s_jsBufferPrototypeWriteUInt32LECode; -extern const int s_jsBufferPrototypeWriteUInt32LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt32LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt32LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt32LECodeImplementationVisibility; - -// writeUInt32BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEUINT32BE 1 -extern const char* const s_jsBufferPrototypeWriteUInt32BECode; -extern const int s_jsBufferPrototypeWriteUInt32BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt32BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt32BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt32BECodeImplementationVisibility; - -// writeIntLE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEINTLE 1 -extern const char* const s_jsBufferPrototypeWriteIntLECode; -extern const int s_jsBufferPrototypeWriteIntLECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteIntLECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteIntLECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteIntLECodeImplementationVisibility; - -// writeIntBE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEINTBE 1 -extern const char* const s_jsBufferPrototypeWriteIntBECode; -extern const int s_jsBufferPrototypeWriteIntBECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteIntBECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteIntBECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteIntBECodeImplementationVisibility; - -// writeUIntLE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEUINTLE 1 -extern const char* const s_jsBufferPrototypeWriteUIntLECode; -extern const int s_jsBufferPrototypeWriteUIntLECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteUIntLECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteUIntLECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUIntLECodeImplementationVisibility; - -// writeUIntBE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEUINTBE 1 -extern const char* const s_jsBufferPrototypeWriteUIntBECode; -extern const int s_jsBufferPrototypeWriteUIntBECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteUIntBECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteUIntBECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUIntBECodeImplementationVisibility; - -// writeFloatLE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEFLOATLE 1 -extern const char* const s_jsBufferPrototypeWriteFloatLECode; -extern const int s_jsBufferPrototypeWriteFloatLECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteFloatLECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteFloatLECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteFloatLECodeImplementationVisibility; - -// writeFloatBE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEFLOATBE 1 -extern const char* const s_jsBufferPrototypeWriteFloatBECode; -extern const int s_jsBufferPrototypeWriteFloatBECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteFloatBECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteFloatBECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteFloatBECodeImplementationVisibility; - -// writeDoubleLE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEDOUBLELE 1 -extern const char* const s_jsBufferPrototypeWriteDoubleLECode; -extern const int s_jsBufferPrototypeWriteDoubleLECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteDoubleLECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteDoubleLECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteDoubleLECodeImplementationVisibility; - -// writeDoubleBE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEDOUBLEBE 1 -extern const char* const s_jsBufferPrototypeWriteDoubleBECode; -extern const int s_jsBufferPrototypeWriteDoubleBECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteDoubleBECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteDoubleBECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteDoubleBECodeImplementationVisibility; - -// writeBigInt64LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEBIGINT64LE 1 -extern const char* const s_jsBufferPrototypeWriteBigInt64LECode; -extern const int s_jsBufferPrototypeWriteBigInt64LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteBigInt64LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteBigInt64LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigInt64LECodeImplementationVisibility; - -// writeBigInt64BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEBIGINT64BE 1 -extern const char* const s_jsBufferPrototypeWriteBigInt64BECode; -extern const int s_jsBufferPrototypeWriteBigInt64BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteBigInt64BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteBigInt64BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigInt64BECodeImplementationVisibility; - -// writeBigUInt64LE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEBIGUINT64LE 1 -extern const char* const s_jsBufferPrototypeWriteBigUInt64LECode; -extern const int s_jsBufferPrototypeWriteBigUInt64LECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteBigUInt64LECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteBigUInt64LECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigUInt64LECodeImplementationVisibility; - -// writeBigUInt64BE -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_WRITEBIGUINT64BE 1 -extern const char* const s_jsBufferPrototypeWriteBigUInt64BECode; -extern const int s_jsBufferPrototypeWriteBigUInt64BECodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeWriteBigUInt64BECodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeWriteBigUInt64BECodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigUInt64BECodeImplementationVisibility; - -// utf8Write -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_UTF8WRITE 1 -extern const char* const s_jsBufferPrototypeUtf8WriteCode; -extern const int s_jsBufferPrototypeUtf8WriteCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeUtf8WriteCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeUtf8WriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeUtf8WriteCodeImplementationVisibility; - -// ucs2Write -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_UCS2WRITE 1 -extern const char* const s_jsBufferPrototypeUcs2WriteCode; -extern const int s_jsBufferPrototypeUcs2WriteCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeUcs2WriteCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeUcs2WriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeUcs2WriteCodeImplementationVisibility; - -// utf16leWrite -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_UTF16LEWRITE 1 -extern const char* const s_jsBufferPrototypeUtf16leWriteCode; -extern const int s_jsBufferPrototypeUtf16leWriteCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeUtf16leWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeUtf16leWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeUtf16leWriteCodeImplementationVisibility; - -// latin1Write -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_LATIN1WRITE 1 -extern const char* const s_jsBufferPrototypeLatin1WriteCode; -extern const int s_jsBufferPrototypeLatin1WriteCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeLatin1WriteCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeLatin1WriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeLatin1WriteCodeImplementationVisibility; - -// asciiWrite -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_ASCIIWRITE 1 -extern const char* const s_jsBufferPrototypeAsciiWriteCode; -extern const int s_jsBufferPrototypeAsciiWriteCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeAsciiWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeAsciiWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeAsciiWriteCodeImplementationVisibility; - -// base64Write -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_BASE64WRITE 1 -extern const char* const s_jsBufferPrototypeBase64WriteCode; -extern const int s_jsBufferPrototypeBase64WriteCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeBase64WriteCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeBase64WriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeBase64WriteCodeImplementationVisibility; - -// base64urlWrite -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_BASE64URLWRITE 1 -extern const char* const s_jsBufferPrototypeBase64urlWriteCode; -extern const int s_jsBufferPrototypeBase64urlWriteCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeBase64urlWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeBase64urlWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeBase64urlWriteCodeImplementationVisibility; - -// hexWrite -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_HEXWRITE 1 -extern const char* const s_jsBufferPrototypeHexWriteCode; -extern const int s_jsBufferPrototypeHexWriteCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeHexWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeHexWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeHexWriteCodeImplementationVisibility; - -// utf8Slice -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_UTF8SLICE 1 -extern const char* const s_jsBufferPrototypeUtf8SliceCode; -extern const int s_jsBufferPrototypeUtf8SliceCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeUtf8SliceCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeUtf8SliceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeUtf8SliceCodeImplementationVisibility; - -// ucs2Slice -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_UCS2SLICE 1 -extern const char* const s_jsBufferPrototypeUcs2SliceCode; -extern const int s_jsBufferPrototypeUcs2SliceCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeUcs2SliceCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeUcs2SliceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeUcs2SliceCodeImplementationVisibility; - -// utf16leSlice -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_UTF16LESLICE 1 -extern const char* const s_jsBufferPrototypeUtf16leSliceCode; -extern const int s_jsBufferPrototypeUtf16leSliceCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeUtf16leSliceCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeUtf16leSliceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeUtf16leSliceCodeImplementationVisibility; - -// latin1Slice -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_LATIN1SLICE 1 -extern const char* const s_jsBufferPrototypeLatin1SliceCode; -extern const int s_jsBufferPrototypeLatin1SliceCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeLatin1SliceCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeLatin1SliceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeLatin1SliceCodeImplementationVisibility; - -// asciiSlice -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_ASCIISLICE 1 -extern const char* const s_jsBufferPrototypeAsciiSliceCode; -extern const int s_jsBufferPrototypeAsciiSliceCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeAsciiSliceCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeAsciiSliceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeAsciiSliceCodeImplementationVisibility; - -// base64Slice -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_BASE64SLICE 1 -extern const char* const s_jsBufferPrototypeBase64SliceCode; -extern const int s_jsBufferPrototypeBase64SliceCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeBase64SliceCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeBase64SliceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeBase64SliceCodeImplementationVisibility; - -// base64urlSlice -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_BASE64URLSLICE 1 -extern const char* const s_jsBufferPrototypeBase64urlSliceCode; -extern const int s_jsBufferPrototypeBase64urlSliceCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeBase64urlSliceCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeBase64urlSliceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeBase64urlSliceCodeImplementationVisibility; - -// hexSlice -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_HEXSLICE 1 -extern const char* const s_jsBufferPrototypeHexSliceCode; -extern const int s_jsBufferPrototypeHexSliceCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeHexSliceCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeHexSliceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeHexSliceCodeImplementationVisibility; - -// toJSON -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_TOJSON 1 -extern const char* const s_jsBufferPrototypeToJSONCode; -extern const int s_jsBufferPrototypeToJSONCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeToJSONCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeToJSONCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeToJSONCodeImplementationVisibility; - -// slice -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_SLICE 1 -extern const char* const s_jsBufferPrototypeSliceCode; -extern const int s_jsBufferPrototypeSliceCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeSliceCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeSliceCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeSliceCodeImplementationVisibility; - -// parent -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_PARENT 1 -extern const char* const s_jsBufferPrototypeParentCode; -extern const int s_jsBufferPrototypeParentCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeParentCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeParentCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeParentCodeImplementationVisibility; - -// offset -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_OFFSET 1 -extern const char* const s_jsBufferPrototypeOffsetCode; -extern const int s_jsBufferPrototypeOffsetCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeOffsetCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeOffsetCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeOffsetCodeImplementationVisibility; - -// inspect -#define WEBCORE_BUILTIN_JSBUFFERPROTOTYPE_INSPECT 1 -extern const char* const s_jsBufferPrototypeInspectCode; -extern const int s_jsBufferPrototypeInspectCodeLength; -extern const JSC::ConstructAbility s_jsBufferPrototypeInspectCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferPrototypeInspectCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferPrototypeInspectCodeImplementationVisibility; - -#define WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_DATA(macro) \ - macro(setBigUint64, jsBufferPrototypeSetBigUint64, 3) \ - macro(readInt8, jsBufferPrototypeReadInt8, 1) \ - macro(readUInt8, jsBufferPrototypeReadUInt8, 1) \ - macro(readInt16LE, jsBufferPrototypeReadInt16LE, 1) \ - macro(readInt16BE, jsBufferPrototypeReadInt16BE, 1) \ - macro(readUInt16LE, jsBufferPrototypeReadUInt16LE, 1) \ - macro(readUInt16BE, jsBufferPrototypeReadUInt16BE, 1) \ - macro(readInt32LE, jsBufferPrototypeReadInt32LE, 1) \ - macro(readInt32BE, jsBufferPrototypeReadInt32BE, 1) \ - macro(readUInt32LE, jsBufferPrototypeReadUInt32LE, 1) \ - macro(readUInt32BE, jsBufferPrototypeReadUInt32BE, 1) \ - macro(readIntLE, jsBufferPrototypeReadIntLE, 2) \ - macro(readIntBE, jsBufferPrototypeReadIntBE, 2) \ - macro(readUIntLE, jsBufferPrototypeReadUIntLE, 2) \ - macro(readUIntBE, jsBufferPrototypeReadUIntBE, 2) \ - macro(readFloatLE, jsBufferPrototypeReadFloatLE, 1) \ - macro(readFloatBE, jsBufferPrototypeReadFloatBE, 1) \ - macro(readDoubleLE, jsBufferPrototypeReadDoubleLE, 1) \ - macro(readDoubleBE, jsBufferPrototypeReadDoubleBE, 1) \ - macro(readBigInt64LE, jsBufferPrototypeReadBigInt64LE, 1) \ - macro(readBigInt64BE, jsBufferPrototypeReadBigInt64BE, 1) \ - macro(readBigUInt64LE, jsBufferPrototypeReadBigUInt64LE, 1) \ - macro(readBigUInt64BE, jsBufferPrototypeReadBigUInt64BE, 1) \ - macro(writeInt8, jsBufferPrototypeWriteInt8, 2) \ - macro(writeUInt8, jsBufferPrototypeWriteUInt8, 2) \ - macro(writeInt16LE, jsBufferPrototypeWriteInt16LE, 2) \ - macro(writeInt16BE, jsBufferPrototypeWriteInt16BE, 2) \ - macro(writeUInt16LE, jsBufferPrototypeWriteUInt16LE, 2) \ - macro(writeUInt16BE, jsBufferPrototypeWriteUInt16BE, 2) \ - macro(writeInt32LE, jsBufferPrototypeWriteInt32LE, 2) \ - macro(writeInt32BE, jsBufferPrototypeWriteInt32BE, 2) \ - macro(writeUInt32LE, jsBufferPrototypeWriteUInt32LE, 2) \ - macro(writeUInt32BE, jsBufferPrototypeWriteUInt32BE, 2) \ - macro(writeIntLE, jsBufferPrototypeWriteIntLE, 3) \ - macro(writeIntBE, jsBufferPrototypeWriteIntBE, 3) \ - macro(writeUIntLE, jsBufferPrototypeWriteUIntLE, 3) \ - macro(writeUIntBE, jsBufferPrototypeWriteUIntBE, 3) \ - macro(writeFloatLE, jsBufferPrototypeWriteFloatLE, 2) \ - macro(writeFloatBE, jsBufferPrototypeWriteFloatBE, 2) \ - macro(writeDoubleLE, jsBufferPrototypeWriteDoubleLE, 2) \ - macro(writeDoubleBE, jsBufferPrototypeWriteDoubleBE, 2) \ - macro(writeBigInt64LE, jsBufferPrototypeWriteBigInt64LE, 2) \ - macro(writeBigInt64BE, jsBufferPrototypeWriteBigInt64BE, 2) \ - macro(writeBigUInt64LE, jsBufferPrototypeWriteBigUInt64LE, 2) \ - macro(writeBigUInt64BE, jsBufferPrototypeWriteBigUInt64BE, 2) \ - macro(utf8Write, jsBufferPrototypeUtf8Write, 3) \ - macro(ucs2Write, jsBufferPrototypeUcs2Write, 3) \ - macro(utf16leWrite, jsBufferPrototypeUtf16leWrite, 3) \ - macro(latin1Write, jsBufferPrototypeLatin1Write, 3) \ - macro(asciiWrite, jsBufferPrototypeAsciiWrite, 3) \ - macro(base64Write, jsBufferPrototypeBase64Write, 3) \ - macro(base64urlWrite, jsBufferPrototypeBase64urlWrite, 3) \ - macro(hexWrite, jsBufferPrototypeHexWrite, 3) \ - macro(utf8Slice, jsBufferPrototypeUtf8Slice, 2) \ - macro(ucs2Slice, jsBufferPrototypeUcs2Slice, 2) \ - macro(utf16leSlice, jsBufferPrototypeUtf16leSlice, 2) \ - macro(latin1Slice, jsBufferPrototypeLatin1Slice, 2) \ - macro(asciiSlice, jsBufferPrototypeAsciiSlice, 2) \ - macro(base64Slice, jsBufferPrototypeBase64Slice, 2) \ - macro(base64urlSlice, jsBufferPrototypeBase64urlSlice, 2) \ - macro(hexSlice, jsBufferPrototypeHexSlice, 2) \ - macro(toJSON, jsBufferPrototypeToJSON, 0) \ - macro(slice, jsBufferPrototypeSlice, 2) \ - macro(parent, jsBufferPrototypeParent, 0) \ - macro(offset, jsBufferPrototypeOffset, 0) \ - macro(inspect, jsBufferPrototypeInspect, 2) \ - -#define WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_CODE(macro) \ - macro(jsBufferPrototypeSetBigUint64Code, setBigUint64, ASCIILiteral(), s_jsBufferPrototypeSetBigUint64CodeLength) \ - macro(jsBufferPrototypeReadInt8Code, readInt8, ASCIILiteral(), s_jsBufferPrototypeReadInt8CodeLength) \ - macro(jsBufferPrototypeReadUInt8Code, readUInt8, ASCIILiteral(), s_jsBufferPrototypeReadUInt8CodeLength) \ - macro(jsBufferPrototypeReadInt16LECode, readInt16LE, ASCIILiteral(), s_jsBufferPrototypeReadInt16LECodeLength) \ - macro(jsBufferPrototypeReadInt16BECode, readInt16BE, ASCIILiteral(), s_jsBufferPrototypeReadInt16BECodeLength) \ - macro(jsBufferPrototypeReadUInt16LECode, readUInt16LE, ASCIILiteral(), s_jsBufferPrototypeReadUInt16LECodeLength) \ - macro(jsBufferPrototypeReadUInt16BECode, readUInt16BE, ASCIILiteral(), s_jsBufferPrototypeReadUInt16BECodeLength) \ - macro(jsBufferPrototypeReadInt32LECode, readInt32LE, ASCIILiteral(), s_jsBufferPrototypeReadInt32LECodeLength) \ - macro(jsBufferPrototypeReadInt32BECode, readInt32BE, ASCIILiteral(), s_jsBufferPrototypeReadInt32BECodeLength) \ - macro(jsBufferPrototypeReadUInt32LECode, readUInt32LE, ASCIILiteral(), s_jsBufferPrototypeReadUInt32LECodeLength) \ - macro(jsBufferPrototypeReadUInt32BECode, readUInt32BE, ASCIILiteral(), s_jsBufferPrototypeReadUInt32BECodeLength) \ - macro(jsBufferPrototypeReadIntLECode, readIntLE, ASCIILiteral(), s_jsBufferPrototypeReadIntLECodeLength) \ - macro(jsBufferPrototypeReadIntBECode, readIntBE, ASCIILiteral(), s_jsBufferPrototypeReadIntBECodeLength) \ - macro(jsBufferPrototypeReadUIntLECode, readUIntLE, ASCIILiteral(), s_jsBufferPrototypeReadUIntLECodeLength) \ - macro(jsBufferPrototypeReadUIntBECode, readUIntBE, ASCIILiteral(), s_jsBufferPrototypeReadUIntBECodeLength) \ - macro(jsBufferPrototypeReadFloatLECode, readFloatLE, ASCIILiteral(), s_jsBufferPrototypeReadFloatLECodeLength) \ - macro(jsBufferPrototypeReadFloatBECode, readFloatBE, ASCIILiteral(), s_jsBufferPrototypeReadFloatBECodeLength) \ - macro(jsBufferPrototypeReadDoubleLECode, readDoubleLE, ASCIILiteral(), s_jsBufferPrototypeReadDoubleLECodeLength) \ - macro(jsBufferPrototypeReadDoubleBECode, readDoubleBE, ASCIILiteral(), s_jsBufferPrototypeReadDoubleBECodeLength) \ - macro(jsBufferPrototypeReadBigInt64LECode, readBigInt64LE, ASCIILiteral(), s_jsBufferPrototypeReadBigInt64LECodeLength) \ - macro(jsBufferPrototypeReadBigInt64BECode, readBigInt64BE, ASCIILiteral(), s_jsBufferPrototypeReadBigInt64BECodeLength) \ - macro(jsBufferPrototypeReadBigUInt64LECode, readBigUInt64LE, ASCIILiteral(), s_jsBufferPrototypeReadBigUInt64LECodeLength) \ - macro(jsBufferPrototypeReadBigUInt64BECode, readBigUInt64BE, ASCIILiteral(), s_jsBufferPrototypeReadBigUInt64BECodeLength) \ - macro(jsBufferPrototypeWriteInt8Code, writeInt8, ASCIILiteral(), s_jsBufferPrototypeWriteInt8CodeLength) \ - macro(jsBufferPrototypeWriteUInt8Code, writeUInt8, ASCIILiteral(), s_jsBufferPrototypeWriteUInt8CodeLength) \ - macro(jsBufferPrototypeWriteInt16LECode, writeInt16LE, ASCIILiteral(), s_jsBufferPrototypeWriteInt16LECodeLength) \ - macro(jsBufferPrototypeWriteInt16BECode, writeInt16BE, ASCIILiteral(), s_jsBufferPrototypeWriteInt16BECodeLength) \ - macro(jsBufferPrototypeWriteUInt16LECode, writeUInt16LE, ASCIILiteral(), s_jsBufferPrototypeWriteUInt16LECodeLength) \ - macro(jsBufferPrototypeWriteUInt16BECode, writeUInt16BE, ASCIILiteral(), s_jsBufferPrototypeWriteUInt16BECodeLength) \ - macro(jsBufferPrototypeWriteInt32LECode, writeInt32LE, ASCIILiteral(), s_jsBufferPrototypeWriteInt32LECodeLength) \ - macro(jsBufferPrototypeWriteInt32BECode, writeInt32BE, ASCIILiteral(), s_jsBufferPrototypeWriteInt32BECodeLength) \ - macro(jsBufferPrototypeWriteUInt32LECode, writeUInt32LE, ASCIILiteral(), s_jsBufferPrototypeWriteUInt32LECodeLength) \ - macro(jsBufferPrototypeWriteUInt32BECode, writeUInt32BE, ASCIILiteral(), s_jsBufferPrototypeWriteUInt32BECodeLength) \ - macro(jsBufferPrototypeWriteIntLECode, writeIntLE, ASCIILiteral(), s_jsBufferPrototypeWriteIntLECodeLength) \ - macro(jsBufferPrototypeWriteIntBECode, writeIntBE, ASCIILiteral(), s_jsBufferPrototypeWriteIntBECodeLength) \ - macro(jsBufferPrototypeWriteUIntLECode, writeUIntLE, ASCIILiteral(), s_jsBufferPrototypeWriteUIntLECodeLength) \ - macro(jsBufferPrototypeWriteUIntBECode, writeUIntBE, ASCIILiteral(), s_jsBufferPrototypeWriteUIntBECodeLength) \ - macro(jsBufferPrototypeWriteFloatLECode, writeFloatLE, ASCIILiteral(), s_jsBufferPrototypeWriteFloatLECodeLength) \ - macro(jsBufferPrototypeWriteFloatBECode, writeFloatBE, ASCIILiteral(), s_jsBufferPrototypeWriteFloatBECodeLength) \ - macro(jsBufferPrototypeWriteDoubleLECode, writeDoubleLE, ASCIILiteral(), s_jsBufferPrototypeWriteDoubleLECodeLength) \ - macro(jsBufferPrototypeWriteDoubleBECode, writeDoubleBE, ASCIILiteral(), s_jsBufferPrototypeWriteDoubleBECodeLength) \ - macro(jsBufferPrototypeWriteBigInt64LECode, writeBigInt64LE, ASCIILiteral(), s_jsBufferPrototypeWriteBigInt64LECodeLength) \ - macro(jsBufferPrototypeWriteBigInt64BECode, writeBigInt64BE, ASCIILiteral(), s_jsBufferPrototypeWriteBigInt64BECodeLength) \ - macro(jsBufferPrototypeWriteBigUInt64LECode, writeBigUInt64LE, ASCIILiteral(), s_jsBufferPrototypeWriteBigUInt64LECodeLength) \ - macro(jsBufferPrototypeWriteBigUInt64BECode, writeBigUInt64BE, ASCIILiteral(), s_jsBufferPrototypeWriteBigUInt64BECodeLength) \ - macro(jsBufferPrototypeUtf8WriteCode, utf8Write, ASCIILiteral(), s_jsBufferPrototypeUtf8WriteCodeLength) \ - macro(jsBufferPrototypeUcs2WriteCode, ucs2Write, ASCIILiteral(), s_jsBufferPrototypeUcs2WriteCodeLength) \ - macro(jsBufferPrototypeUtf16leWriteCode, utf16leWrite, ASCIILiteral(), s_jsBufferPrototypeUtf16leWriteCodeLength) \ - macro(jsBufferPrototypeLatin1WriteCode, latin1Write, ASCIILiteral(), s_jsBufferPrototypeLatin1WriteCodeLength) \ - macro(jsBufferPrototypeAsciiWriteCode, asciiWrite, ASCIILiteral(), s_jsBufferPrototypeAsciiWriteCodeLength) \ - macro(jsBufferPrototypeBase64WriteCode, base64Write, ASCIILiteral(), s_jsBufferPrototypeBase64WriteCodeLength) \ - macro(jsBufferPrototypeBase64urlWriteCode, base64urlWrite, ASCIILiteral(), s_jsBufferPrototypeBase64urlWriteCodeLength) \ - macro(jsBufferPrototypeHexWriteCode, hexWrite, ASCIILiteral(), s_jsBufferPrototypeHexWriteCodeLength) \ - macro(jsBufferPrototypeUtf8SliceCode, utf8Slice, ASCIILiteral(), s_jsBufferPrototypeUtf8SliceCodeLength) \ - macro(jsBufferPrototypeUcs2SliceCode, ucs2Slice, ASCIILiteral(), s_jsBufferPrototypeUcs2SliceCodeLength) \ - macro(jsBufferPrototypeUtf16leSliceCode, utf16leSlice, ASCIILiteral(), s_jsBufferPrototypeUtf16leSliceCodeLength) \ - macro(jsBufferPrototypeLatin1SliceCode, latin1Slice, ASCIILiteral(), s_jsBufferPrototypeLatin1SliceCodeLength) \ - macro(jsBufferPrototypeAsciiSliceCode, asciiSlice, ASCIILiteral(), s_jsBufferPrototypeAsciiSliceCodeLength) \ - macro(jsBufferPrototypeBase64SliceCode, base64Slice, ASCIILiteral(), s_jsBufferPrototypeBase64SliceCodeLength) \ - macro(jsBufferPrototypeBase64urlSliceCode, base64urlSlice, ASCIILiteral(), s_jsBufferPrototypeBase64urlSliceCodeLength) \ - macro(jsBufferPrototypeHexSliceCode, hexSlice, ASCIILiteral(), s_jsBufferPrototypeHexSliceCodeLength) \ - macro(jsBufferPrototypeToJSONCode, toJSON, ASCIILiteral(), s_jsBufferPrototypeToJSONCodeLength) \ - macro(jsBufferPrototypeSliceCode, slice, ASCIILiteral(), s_jsBufferPrototypeSliceCodeLength) \ - macro(jsBufferPrototypeParentCode, parent, "get parent"_s, s_jsBufferPrototypeParentCodeLength) \ - macro(jsBufferPrototypeOffsetCode, offset, "get offset"_s, s_jsBufferPrototypeOffsetCodeLength) \ - macro(jsBufferPrototypeInspectCode, inspect, ASCIILiteral(), s_jsBufferPrototypeInspectCodeLength) \ - -#define WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_FUNCTION_NAME(macro) \ - macro(setBigUint64) \ - macro(readInt8) \ - macro(readUInt8) \ - macro(readInt16LE) \ - macro(readInt16BE) \ - macro(readUInt16LE) \ - macro(readUInt16BE) \ - macro(readInt32LE) \ - macro(readInt32BE) \ - macro(readUInt32LE) \ - macro(readUInt32BE) \ - macro(readIntLE) \ - macro(readIntBE) \ - macro(readUIntLE) \ - macro(readUIntBE) \ - macro(readFloatLE) \ - macro(readFloatBE) \ - macro(readDoubleLE) \ - macro(readDoubleBE) \ - macro(readBigInt64LE) \ - macro(readBigInt64BE) \ - macro(readBigUInt64LE) \ - macro(readBigUInt64BE) \ - macro(writeInt8) \ - macro(writeUInt8) \ - macro(writeInt16LE) \ - macro(writeInt16BE) \ - macro(writeUInt16LE) \ - macro(writeUInt16BE) \ - macro(writeInt32LE) \ - macro(writeInt32BE) \ - macro(writeUInt32LE) \ - macro(writeUInt32BE) \ - macro(writeIntLE) \ - macro(writeIntBE) \ - macro(writeUIntLE) \ - macro(writeUIntBE) \ - macro(writeFloatLE) \ - macro(writeFloatBE) \ - macro(writeDoubleLE) \ - macro(writeDoubleBE) \ - macro(writeBigInt64LE) \ - macro(writeBigInt64BE) \ - macro(writeBigUInt64LE) \ - macro(writeBigUInt64BE) \ - macro(utf8Write) \ - macro(ucs2Write) \ - macro(utf16leWrite) \ - macro(latin1Write) \ - macro(asciiWrite) \ - macro(base64Write) \ - macro(base64urlWrite) \ - macro(hexWrite) \ - macro(utf8Slice) \ - macro(ucs2Slice) \ - macro(utf16leSlice) \ - macro(latin1Slice) \ - macro(asciiSlice) \ - macro(base64Slice) \ - macro(base64urlSlice) \ - macro(hexSlice) \ - macro(toJSON) \ - macro(slice) \ - macro(parent) \ - macro(offset) \ - macro(inspect) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class JSBufferPrototypeBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit JSBufferPrototypeBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* JSBufferPrototypeBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void JSBufferPrototypeBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_JSBUFFERPROTOTYPE_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ReadableByteStreamController.ts */ -// initializeReadableByteStreamController -#define WEBCORE_BUILTIN_READABLEBYTESTREAMCONTROLLER_INITIALIZEREADABLEBYTESTREAMCONTROLLER 1 -extern const char* const s_readableByteStreamControllerInitializeReadableByteStreamControllerCode; -extern const int s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeImplementationVisibility; - -// enqueue -#define WEBCORE_BUILTIN_READABLEBYTESTREAMCONTROLLER_ENQUEUE 1 -extern const char* const s_readableByteStreamControllerEnqueueCode; -extern const int s_readableByteStreamControllerEnqueueCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamControllerEnqueueCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamControllerEnqueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamControllerEnqueueCodeImplementationVisibility; - -// error -#define WEBCORE_BUILTIN_READABLEBYTESTREAMCONTROLLER_ERROR 1 -extern const char* const s_readableByteStreamControllerErrorCode; -extern const int s_readableByteStreamControllerErrorCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamControllerErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamControllerErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamControllerErrorCodeImplementationVisibility; - -// close -#define WEBCORE_BUILTIN_READABLEBYTESTREAMCONTROLLER_CLOSE 1 -extern const char* const s_readableByteStreamControllerCloseCode; -extern const int s_readableByteStreamControllerCloseCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamControllerCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamControllerCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamControllerCloseCodeImplementationVisibility; - -// byobRequest -#define WEBCORE_BUILTIN_READABLEBYTESTREAMCONTROLLER_BYOBREQUEST 1 -extern const char* const s_readableByteStreamControllerByobRequestCode; -extern const int s_readableByteStreamControllerByobRequestCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamControllerByobRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamControllerByobRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamControllerByobRequestCodeImplementationVisibility; - -// desiredSize -#define WEBCORE_BUILTIN_READABLEBYTESTREAMCONTROLLER_DESIREDSIZE 1 -extern const char* const s_readableByteStreamControllerDesiredSizeCode; -extern const int s_readableByteStreamControllerDesiredSizeCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamControllerDesiredSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamControllerDesiredSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamControllerDesiredSizeCodeImplementationVisibility; - -#define WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_DATA(macro) \ - macro(initializeReadableByteStreamController, readableByteStreamControllerInitializeReadableByteStreamController, 3) \ - macro(enqueue, readableByteStreamControllerEnqueue, 1) \ - macro(error, readableByteStreamControllerError, 1) \ - macro(close, readableByteStreamControllerClose, 0) \ - macro(byobRequest, readableByteStreamControllerByobRequest, 0) \ - macro(desiredSize, readableByteStreamControllerDesiredSize, 0) \ - -#define WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_CODE(macro) \ - macro(readableByteStreamControllerInitializeReadableByteStreamControllerCode, initializeReadableByteStreamController, ASCIILiteral(), s_readableByteStreamControllerInitializeReadableByteStreamControllerCodeLength) \ - macro(readableByteStreamControllerEnqueueCode, enqueue, ASCIILiteral(), s_readableByteStreamControllerEnqueueCodeLength) \ - macro(readableByteStreamControllerErrorCode, error, ASCIILiteral(), s_readableByteStreamControllerErrorCodeLength) \ - macro(readableByteStreamControllerCloseCode, close, ASCIILiteral(), s_readableByteStreamControllerCloseCodeLength) \ - macro(readableByteStreamControllerByobRequestCode, byobRequest, "get byobRequest"_s, s_readableByteStreamControllerByobRequestCodeLength) \ - macro(readableByteStreamControllerDesiredSizeCode, desiredSize, "get desiredSize"_s, s_readableByteStreamControllerDesiredSizeCodeLength) \ - -#define WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeReadableByteStreamController) \ - macro(enqueue) \ - macro(error) \ - macro(close) \ - macro(byobRequest) \ - macro(desiredSize) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ReadableByteStreamControllerBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ReadableByteStreamControllerBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ReadableByteStreamControllerBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ReadableByteStreamControllerBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_READABLEBYTESTREAMCONTROLLER_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ConsoleObject.ts */ -// asyncIterator -#define WEBCORE_BUILTIN_CONSOLEOBJECT_ASYNCITERATOR 1 -extern const char* const s_consoleObjectAsyncIteratorCode; -extern const int s_consoleObjectAsyncIteratorCodeLength; -extern const JSC::ConstructAbility s_consoleObjectAsyncIteratorCodeConstructAbility; -extern const JSC::ConstructorKind s_consoleObjectAsyncIteratorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_consoleObjectAsyncIteratorCodeImplementationVisibility; - -// write -#define WEBCORE_BUILTIN_CONSOLEOBJECT_WRITE 1 -extern const char* const s_consoleObjectWriteCode; -extern const int s_consoleObjectWriteCodeLength; -extern const JSC::ConstructAbility s_consoleObjectWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_consoleObjectWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_consoleObjectWriteCodeImplementationVisibility; - -#define WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_DATA(macro) \ - macro(asyncIterator, consoleObjectAsyncIterator, 0) \ - macro(write, consoleObjectWrite, 1) \ - -#define WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_CODE(macro) \ - macro(consoleObjectAsyncIteratorCode, asyncIterator, "[Symbol.asyncIterator]"_s, s_consoleObjectAsyncIteratorCodeLength) \ - macro(consoleObjectWriteCode, write, ASCIILiteral(), s_consoleObjectWriteCodeLength) \ - -#define WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_FUNCTION_NAME(macro) \ - macro(asyncIterator) \ - macro(write) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ConsoleObjectBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ConsoleObjectBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ConsoleObjectBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ConsoleObjectBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_CONSOLEOBJECT_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ReadableStreamInternals.ts */ -// readableStreamReaderGenericInitialize -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMREADERGENERICINITIALIZE 1 -extern const char* const s_readableStreamInternalsReadableStreamReaderGenericInitializeCode; -extern const int s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeImplementationVisibility; - -// privateInitializeReadableStreamDefaultController -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PRIVATEINITIALIZEREADABLESTREAMDEFAULTCONTROLLER 1 -extern const char* const s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCode; -extern const int s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeImplementationVisibility; - -// readableStreamDefaultControllerError -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERERROR 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerErrorCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeImplementationVisibility; - -// readableStreamPipeTo -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMPIPETO 1 -extern const char* const s_readableStreamInternalsReadableStreamPipeToCode; -extern const int s_readableStreamInternalsReadableStreamPipeToCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamPipeToCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamPipeToCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamPipeToCodeImplementationVisibility; - -// acquireReadableStreamDefaultReader -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ACQUIREREADABLESTREAMDEFAULTREADER 1 -extern const char* const s_readableStreamInternalsAcquireReadableStreamDefaultReaderCode; -extern const int s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeImplementationVisibility; - -// setupReadableStreamDefaultController -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_SETUPREADABLESTREAMDEFAULTCONTROLLER 1 -extern const char* const s_readableStreamInternalsSetupReadableStreamDefaultControllerCode; -extern const int s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeImplementationVisibility; - -// createReadableStreamController -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_CREATEREADABLESTREAMCONTROLLER 1 -extern const char* const s_readableStreamInternalsCreateReadableStreamControllerCode; -extern const int s_readableStreamInternalsCreateReadableStreamControllerCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsCreateReadableStreamControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsCreateReadableStreamControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsCreateReadableStreamControllerCodeImplementationVisibility; - -// readableStreamDefaultControllerStart -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERSTART 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerStartCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerStartCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerStartCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerStartCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerStartCodeImplementationVisibility; - -// readableStreamPipeToWritableStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMPIPETOWRITABLESTREAM 1 -extern const char* const s_readableStreamInternalsReadableStreamPipeToWritableStreamCode; -extern const int s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeImplementationVisibility; - -// pipeToLoop -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PIPETOLOOP 1 -extern const char* const s_readableStreamInternalsPipeToLoopCode; -extern const int s_readableStreamInternalsPipeToLoopCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPipeToLoopCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPipeToLoopCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPipeToLoopCodeImplementationVisibility; - -// pipeToDoReadWrite -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PIPETODOREADWRITE 1 -extern const char* const s_readableStreamInternalsPipeToDoReadWriteCode; -extern const int s_readableStreamInternalsPipeToDoReadWriteCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPipeToDoReadWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPipeToDoReadWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPipeToDoReadWriteCodeImplementationVisibility; - -// pipeToErrorsMustBePropagatedForward -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PIPETOERRORSMUSTBEPROPAGATEDFORWARD 1 -extern const char* const s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCode; -extern const int s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeImplementationVisibility; - -// pipeToErrorsMustBePropagatedBackward -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PIPETOERRORSMUSTBEPROPAGATEDBACKWARD 1 -extern const char* const s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCode; -extern const int s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeImplementationVisibility; - -// pipeToClosingMustBePropagatedForward -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PIPETOCLOSINGMUSTBEPROPAGATEDFORWARD 1 -extern const char* const s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCode; -extern const int s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeImplementationVisibility; - -// pipeToClosingMustBePropagatedBackward -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PIPETOCLOSINGMUSTBEPROPAGATEDBACKWARD 1 -extern const char* const s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCode; -extern const int s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeImplementationVisibility; - -// pipeToShutdownWithAction -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PIPETOSHUTDOWNWITHACTION 1 -extern const char* const s_readableStreamInternalsPipeToShutdownWithActionCode; -extern const int s_readableStreamInternalsPipeToShutdownWithActionCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPipeToShutdownWithActionCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPipeToShutdownWithActionCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPipeToShutdownWithActionCodeImplementationVisibility; - -// pipeToShutdown -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PIPETOSHUTDOWN 1 -extern const char* const s_readableStreamInternalsPipeToShutdownCode; -extern const int s_readableStreamInternalsPipeToShutdownCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPipeToShutdownCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPipeToShutdownCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPipeToShutdownCodeImplementationVisibility; - -// pipeToFinalize -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_PIPETOFINALIZE 1 -extern const char* const s_readableStreamInternalsPipeToFinalizeCode; -extern const int s_readableStreamInternalsPipeToFinalizeCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsPipeToFinalizeCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsPipeToFinalizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsPipeToFinalizeCodeImplementationVisibility; - -// readableStreamTee -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMTEE 1 -extern const char* const s_readableStreamInternalsReadableStreamTeeCode; -extern const int s_readableStreamInternalsReadableStreamTeeCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeeCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeeCodeImplementationVisibility; - -// readableStreamTeePullFunction -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMTEEPULLFUNCTION 1 -extern const char* const s_readableStreamInternalsReadableStreamTeePullFunctionCode; -extern const int s_readableStreamInternalsReadableStreamTeePullFunctionCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeePullFunctionCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeePullFunctionCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeePullFunctionCodeImplementationVisibility; - -// readableStreamTeeBranch1CancelFunction -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMTEEBRANCH1CANCELFUNCTION 1 -extern const char* const s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCode; -extern const int s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeImplementationVisibility; - -// readableStreamTeeBranch2CancelFunction -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMTEEBRANCH2CANCELFUNCTION 1 -extern const char* const s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCode; -extern const int s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeImplementationVisibility; - -// isReadableStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ISREADABLESTREAM 1 -extern const char* const s_readableStreamInternalsIsReadableStreamCode; -extern const int s_readableStreamInternalsIsReadableStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamCodeImplementationVisibility; - -// isReadableStreamDefaultReader -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ISREADABLESTREAMDEFAULTREADER 1 -extern const char* const s_readableStreamInternalsIsReadableStreamDefaultReaderCode; -extern const int s_readableStreamInternalsIsReadableStreamDefaultReaderCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamDefaultReaderCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamDefaultReaderCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamDefaultReaderCodeImplementationVisibility; - -// isReadableStreamDefaultController -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ISREADABLESTREAMDEFAULTCONTROLLER 1 -extern const char* const s_readableStreamInternalsIsReadableStreamDefaultControllerCode; -extern const int s_readableStreamInternalsIsReadableStreamDefaultControllerCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamDefaultControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamDefaultControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamDefaultControllerCodeImplementationVisibility; - -// readDirectStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READDIRECTSTREAM 1 -extern const char* const s_readableStreamInternalsReadDirectStreamCode; -extern const int s_readableStreamInternalsReadDirectStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadDirectStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadDirectStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadDirectStreamCodeImplementationVisibility; - -// assignToStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ASSIGNTOSTREAM 1 -extern const char* const s_readableStreamInternalsAssignToStreamCode; -extern const int s_readableStreamInternalsAssignToStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsAssignToStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsAssignToStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsAssignToStreamCodeImplementationVisibility; - -// readStreamIntoSink -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READSTREAMINTOSINK 1 -extern const char* const s_readableStreamInternalsReadStreamIntoSinkCode; -extern const int s_readableStreamInternalsReadStreamIntoSinkCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadStreamIntoSinkCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadStreamIntoSinkCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadStreamIntoSinkCodeImplementationVisibility; - -// handleDirectStreamError -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_HANDLEDIRECTSTREAMERROR 1 -extern const char* const s_readableStreamInternalsHandleDirectStreamErrorCode; -extern const int s_readableStreamInternalsHandleDirectStreamErrorCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsHandleDirectStreamErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsHandleDirectStreamErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsHandleDirectStreamErrorCodeImplementationVisibility; - -// handleDirectStreamErrorReject -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_HANDLEDIRECTSTREAMERRORREJECT 1 -extern const char* const s_readableStreamInternalsHandleDirectStreamErrorRejectCode; -extern const int s_readableStreamInternalsHandleDirectStreamErrorRejectCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsHandleDirectStreamErrorRejectCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsHandleDirectStreamErrorRejectCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsHandleDirectStreamErrorRejectCodeImplementationVisibility; - -// onPullDirectStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ONPULLDIRECTSTREAM 1 -extern const char* const s_readableStreamInternalsOnPullDirectStreamCode; -extern const int s_readableStreamInternalsOnPullDirectStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsOnPullDirectStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsOnPullDirectStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsOnPullDirectStreamCodeImplementationVisibility; - -// noopDoneFunction -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_NOOPDONEFUNCTION 1 -extern const char* const s_readableStreamInternalsNoopDoneFunctionCode; -extern const int s_readableStreamInternalsNoopDoneFunctionCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsNoopDoneFunctionCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsNoopDoneFunctionCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsNoopDoneFunctionCodeImplementationVisibility; - -// onReadableStreamDirectControllerClosed -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ONREADABLESTREAMDIRECTCONTROLLERCLOSED 1 -extern const char* const s_readableStreamInternalsOnReadableStreamDirectControllerClosedCode; -extern const int s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeImplementationVisibility; - -// onCloseDirectStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ONCLOSEDIRECTSTREAM 1 -extern const char* const s_readableStreamInternalsOnCloseDirectStreamCode; -extern const int s_readableStreamInternalsOnCloseDirectStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsOnCloseDirectStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsOnCloseDirectStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsOnCloseDirectStreamCodeImplementationVisibility; - -// onFlushDirectStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ONFLUSHDIRECTSTREAM 1 -extern const char* const s_readableStreamInternalsOnFlushDirectStreamCode; -extern const int s_readableStreamInternalsOnFlushDirectStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsOnFlushDirectStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsOnFlushDirectStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsOnFlushDirectStreamCodeImplementationVisibility; - -// createTextStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_CREATETEXTSTREAM 1 -extern const char* const s_readableStreamInternalsCreateTextStreamCode; -extern const int s_readableStreamInternalsCreateTextStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsCreateTextStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsCreateTextStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsCreateTextStreamCodeImplementationVisibility; - -// initializeTextStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_INITIALIZETEXTSTREAM 1 -extern const char* const s_readableStreamInternalsInitializeTextStreamCode; -extern const int s_readableStreamInternalsInitializeTextStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsInitializeTextStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsInitializeTextStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsInitializeTextStreamCodeImplementationVisibility; - -// initializeArrayStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_INITIALIZEARRAYSTREAM 1 -extern const char* const s_readableStreamInternalsInitializeArrayStreamCode; -extern const int s_readableStreamInternalsInitializeArrayStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsInitializeArrayStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsInitializeArrayStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsInitializeArrayStreamCodeImplementationVisibility; - -// initializeArrayBufferStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_INITIALIZEARRAYBUFFERSTREAM 1 -extern const char* const s_readableStreamInternalsInitializeArrayBufferStreamCode; -extern const int s_readableStreamInternalsInitializeArrayBufferStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsInitializeArrayBufferStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsInitializeArrayBufferStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsInitializeArrayBufferStreamCodeImplementationVisibility; - -// readableStreamError -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMERROR 1 -extern const char* const s_readableStreamInternalsReadableStreamErrorCode; -extern const int s_readableStreamInternalsReadableStreamErrorCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamErrorCodeImplementationVisibility; - -// readableStreamDefaultControllerShouldCallPull -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERSHOULDCALLPULL 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeImplementationVisibility; - -// readableStreamDefaultControllerCallPullIfNeeded -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERCALLPULLIFNEEDED 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeImplementationVisibility; - -// isReadableStreamLocked -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ISREADABLESTREAMLOCKED 1 -extern const char* const s_readableStreamInternalsIsReadableStreamLockedCode; -extern const int s_readableStreamInternalsIsReadableStreamLockedCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamLockedCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamLockedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamLockedCodeImplementationVisibility; - -// readableStreamDefaultControllerGetDesiredSize -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERGETDESIREDSIZE 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeImplementationVisibility; - -// readableStreamReaderGenericCancel -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMREADERGENERICCANCEL 1 -extern const char* const s_readableStreamInternalsReadableStreamReaderGenericCancelCode; -extern const int s_readableStreamInternalsReadableStreamReaderGenericCancelCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamReaderGenericCancelCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamReaderGenericCancelCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamReaderGenericCancelCodeImplementationVisibility; - -// readableStreamCancel -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMCANCEL 1 -extern const char* const s_readableStreamInternalsReadableStreamCancelCode; -extern const int s_readableStreamInternalsReadableStreamCancelCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamCancelCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamCancelCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamCancelCodeImplementationVisibility; - -// readableStreamDefaultControllerCancel -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERCANCEL 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerCancelCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeImplementationVisibility; - -// readableStreamDefaultControllerPull -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERPULL 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerPullCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerPullCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerPullCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerPullCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerPullCodeImplementationVisibility; - -// readableStreamDefaultControllerClose -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERCLOSE 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerCloseCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeImplementationVisibility; - -// readableStreamClose -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMCLOSE 1 -extern const char* const s_readableStreamInternalsReadableStreamCloseCode; -extern const int s_readableStreamInternalsReadableStreamCloseCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamCloseCodeImplementationVisibility; - -// readableStreamFulfillReadRequest -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMFULFILLREADREQUEST 1 -extern const char* const s_readableStreamInternalsReadableStreamFulfillReadRequestCode; -extern const int s_readableStreamInternalsReadableStreamFulfillReadRequestCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamFulfillReadRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamFulfillReadRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamFulfillReadRequestCodeImplementationVisibility; - -// readableStreamDefaultControllerEnqueue -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERENQUEUE 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeImplementationVisibility; - -// readableStreamDefaultReaderRead -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTREADERREAD 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultReaderReadCode; -extern const int s_readableStreamInternalsReadableStreamDefaultReaderReadCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultReaderReadCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultReaderReadCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultReaderReadCodeImplementationVisibility; - -// readableStreamAddReadRequest -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMADDREADREQUEST 1 -extern const char* const s_readableStreamInternalsReadableStreamAddReadRequestCode; -extern const int s_readableStreamInternalsReadableStreamAddReadRequestCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamAddReadRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamAddReadRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamAddReadRequestCodeImplementationVisibility; - -// isReadableStreamDisturbed -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ISREADABLESTREAMDISTURBED 1 -extern const char* const s_readableStreamInternalsIsReadableStreamDisturbedCode; -extern const int s_readableStreamInternalsIsReadableStreamDisturbedCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamDisturbedCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamDisturbedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsIsReadableStreamDisturbedCodeImplementationVisibility; - -// readableStreamReaderGenericRelease -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMREADERGENERICRELEASE 1 -extern const char* const s_readableStreamInternalsReadableStreamReaderGenericReleaseCode; -extern const int s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeImplementationVisibility; - -// readableStreamDefaultControllerCanCloseOrEnqueue -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFAULTCONTROLLERCANCLOSEORENQUEUE 1 -extern const char* const s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCode; -extern const int s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeImplementationVisibility; - -// lazyLoadStream -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_LAZYLOADSTREAM 1 -extern const char* const s_readableStreamInternalsLazyLoadStreamCode; -extern const int s_readableStreamInternalsLazyLoadStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsLazyLoadStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsLazyLoadStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsLazyLoadStreamCodeImplementationVisibility; - -// readableStreamIntoArray -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMINTOARRAY 1 -extern const char* const s_readableStreamInternalsReadableStreamIntoArrayCode; -extern const int s_readableStreamInternalsReadableStreamIntoArrayCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamIntoArrayCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamIntoArrayCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamIntoArrayCodeImplementationVisibility; - -// readableStreamIntoText -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMINTOTEXT 1 -extern const char* const s_readableStreamInternalsReadableStreamIntoTextCode; -extern const int s_readableStreamInternalsReadableStreamIntoTextCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamIntoTextCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamIntoTextCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamIntoTextCodeImplementationVisibility; - -// readableStreamToArrayBufferDirect -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMTOARRAYBUFFERDIRECT 1 -extern const char* const s_readableStreamInternalsReadableStreamToArrayBufferDirectCode; -extern const int s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeImplementationVisibility; - -// readableStreamToTextDirect -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMTOTEXTDIRECT 1 -extern const char* const s_readableStreamInternalsReadableStreamToTextDirectCode; -extern const int s_readableStreamInternalsReadableStreamToTextDirectCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamToTextDirectCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamToTextDirectCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamToTextDirectCodeImplementationVisibility; - -// readableStreamToArrayDirect -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMTOARRAYDIRECT 1 -extern const char* const s_readableStreamInternalsReadableStreamToArrayDirectCode; -extern const int s_readableStreamInternalsReadableStreamToArrayDirectCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamToArrayDirectCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamToArrayDirectCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamToArrayDirectCodeImplementationVisibility; - -// readableStreamDefineLazyIterators -#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_READABLESTREAMDEFINELAZYITERATORS 1 -extern const char* const s_readableStreamInternalsReadableStreamDefineLazyIteratorsCode; -extern const int s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeLength; -extern const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeImplementationVisibility; - -#define WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_DATA(macro) \ - macro(readableStreamReaderGenericInitialize, readableStreamInternalsReadableStreamReaderGenericInitialize, 2) \ - macro(privateInitializeReadableStreamDefaultController, readableStreamInternalsPrivateInitializeReadableStreamDefaultController, 4) \ - macro(readableStreamDefaultControllerError, readableStreamInternalsReadableStreamDefaultControllerError, 2) \ - macro(readableStreamPipeTo, readableStreamInternalsReadableStreamPipeTo, 2) \ - macro(acquireReadableStreamDefaultReader, readableStreamInternalsAcquireReadableStreamDefaultReader, 1) \ - macro(setupReadableStreamDefaultController, readableStreamInternalsSetupReadableStreamDefaultController, 8) \ - macro(createReadableStreamController, readableStreamInternalsCreateReadableStreamController, 3) \ - macro(readableStreamDefaultControllerStart, readableStreamInternalsReadableStreamDefaultControllerStart, 1) \ - macro(readableStreamPipeToWritableStream, readableStreamInternalsReadableStreamPipeToWritableStream, 7) \ - macro(pipeToLoop, readableStreamInternalsPipeToLoop, 1) \ - macro(pipeToDoReadWrite, readableStreamInternalsPipeToDoReadWrite, 1) \ - macro(pipeToErrorsMustBePropagatedForward, readableStreamInternalsPipeToErrorsMustBePropagatedForward, 1) \ - macro(pipeToErrorsMustBePropagatedBackward, readableStreamInternalsPipeToErrorsMustBePropagatedBackward, 1) \ - macro(pipeToClosingMustBePropagatedForward, readableStreamInternalsPipeToClosingMustBePropagatedForward, 1) \ - macro(pipeToClosingMustBePropagatedBackward, readableStreamInternalsPipeToClosingMustBePropagatedBackward, 1) \ - macro(pipeToShutdownWithAction, readableStreamInternalsPipeToShutdownWithAction, 2) \ - macro(pipeToShutdown, readableStreamInternalsPipeToShutdown, 1) \ - macro(pipeToFinalize, readableStreamInternalsPipeToFinalize, 1) \ - macro(readableStreamTee, readableStreamInternalsReadableStreamTee, 2) \ - macro(readableStreamTeePullFunction, readableStreamInternalsReadableStreamTeePullFunction, 3) \ - macro(readableStreamTeeBranch1CancelFunction, readableStreamInternalsReadableStreamTeeBranch1CancelFunction, 2) \ - macro(readableStreamTeeBranch2CancelFunction, readableStreamInternalsReadableStreamTeeBranch2CancelFunction, 2) \ - macro(isReadableStream, readableStreamInternalsIsReadableStream, 1) \ - macro(isReadableStreamDefaultReader, readableStreamInternalsIsReadableStreamDefaultReader, 1) \ - macro(isReadableStreamDefaultController, readableStreamInternalsIsReadableStreamDefaultController, 1) \ - macro(readDirectStream, readableStreamInternalsReadDirectStream, 3) \ - macro(assignToStream, readableStreamInternalsAssignToStream, 2) \ - macro(readStreamIntoSink, readableStreamInternalsReadStreamIntoSink, 3) \ - macro(handleDirectStreamError, readableStreamInternalsHandleDirectStreamError, 1) \ - macro(handleDirectStreamErrorReject, readableStreamInternalsHandleDirectStreamErrorReject, 1) \ - macro(onPullDirectStream, readableStreamInternalsOnPullDirectStream, 1) \ - macro(noopDoneFunction, readableStreamInternalsNoopDoneFunction, 0) \ - macro(onReadableStreamDirectControllerClosed, readableStreamInternalsOnReadableStreamDirectControllerClosed, 1) \ - macro(onCloseDirectStream, readableStreamInternalsOnCloseDirectStream, 1) \ - macro(onFlushDirectStream, readableStreamInternalsOnFlushDirectStream, 0) \ - macro(createTextStream, readableStreamInternalsCreateTextStream, 1) \ - macro(initializeTextStream, readableStreamInternalsInitializeTextStream, 2) \ - macro(initializeArrayStream, readableStreamInternalsInitializeArrayStream, 2) \ - macro(initializeArrayBufferStream, readableStreamInternalsInitializeArrayBufferStream, 2) \ - macro(readableStreamError, readableStreamInternalsReadableStreamError, 2) \ - macro(readableStreamDefaultControllerShouldCallPull, readableStreamInternalsReadableStreamDefaultControllerShouldCallPull, 1) \ - macro(readableStreamDefaultControllerCallPullIfNeeded, readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeeded, 1) \ - macro(isReadableStreamLocked, readableStreamInternalsIsReadableStreamLocked, 1) \ - macro(readableStreamDefaultControllerGetDesiredSize, readableStreamInternalsReadableStreamDefaultControllerGetDesiredSize, 1) \ - macro(readableStreamReaderGenericCancel, readableStreamInternalsReadableStreamReaderGenericCancel, 2) \ - macro(readableStreamCancel, readableStreamInternalsReadableStreamCancel, 2) \ - macro(readableStreamDefaultControllerCancel, readableStreamInternalsReadableStreamDefaultControllerCancel, 2) \ - macro(readableStreamDefaultControllerPull, readableStreamInternalsReadableStreamDefaultControllerPull, 1) \ - macro(readableStreamDefaultControllerClose, readableStreamInternalsReadableStreamDefaultControllerClose, 1) \ - macro(readableStreamClose, readableStreamInternalsReadableStreamClose, 1) \ - macro(readableStreamFulfillReadRequest, readableStreamInternalsReadableStreamFulfillReadRequest, 3) \ - macro(readableStreamDefaultControllerEnqueue, readableStreamInternalsReadableStreamDefaultControllerEnqueue, 2) \ - macro(readableStreamDefaultReaderRead, readableStreamInternalsReadableStreamDefaultReaderRead, 1) \ - macro(readableStreamAddReadRequest, readableStreamInternalsReadableStreamAddReadRequest, 1) \ - macro(isReadableStreamDisturbed, readableStreamInternalsIsReadableStreamDisturbed, 1) \ - macro(readableStreamReaderGenericRelease, readableStreamInternalsReadableStreamReaderGenericRelease, 1) \ - macro(readableStreamDefaultControllerCanCloseOrEnqueue, readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueue, 1) \ - macro(lazyLoadStream, readableStreamInternalsLazyLoadStream, 2) \ - macro(readableStreamIntoArray, readableStreamInternalsReadableStreamIntoArray, 1) \ - macro(readableStreamIntoText, readableStreamInternalsReadableStreamIntoText, 1) \ - macro(readableStreamToArrayBufferDirect, readableStreamInternalsReadableStreamToArrayBufferDirect, 2) \ - macro(readableStreamToTextDirect, readableStreamInternalsReadableStreamToTextDirect, 2) \ - macro(readableStreamToArrayDirect, readableStreamInternalsReadableStreamToArrayDirect, 2) \ - macro(readableStreamDefineLazyIterators, readableStreamInternalsReadableStreamDefineLazyIterators, 1) \ - -#define WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_CODE(macro) \ - macro(readableStreamInternalsReadableStreamReaderGenericInitializeCode, readableStreamReaderGenericInitialize, ASCIILiteral(), s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeLength) \ - macro(readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCode, privateInitializeReadableStreamDefaultController, ASCIILiteral(), s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerErrorCode, readableStreamDefaultControllerError, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeLength) \ - macro(readableStreamInternalsReadableStreamPipeToCode, readableStreamPipeTo, ASCIILiteral(), s_readableStreamInternalsReadableStreamPipeToCodeLength) \ - macro(readableStreamInternalsAcquireReadableStreamDefaultReaderCode, acquireReadableStreamDefaultReader, ASCIILiteral(), s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeLength) \ - macro(readableStreamInternalsSetupReadableStreamDefaultControllerCode, setupReadableStreamDefaultController, ASCIILiteral(), s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeLength) \ - macro(readableStreamInternalsCreateReadableStreamControllerCode, createReadableStreamController, ASCIILiteral(), s_readableStreamInternalsCreateReadableStreamControllerCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerStartCode, readableStreamDefaultControllerStart, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerStartCodeLength) \ - macro(readableStreamInternalsReadableStreamPipeToWritableStreamCode, readableStreamPipeToWritableStream, ASCIILiteral(), s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeLength) \ - macro(readableStreamInternalsPipeToLoopCode, pipeToLoop, ASCIILiteral(), s_readableStreamInternalsPipeToLoopCodeLength) \ - macro(readableStreamInternalsPipeToDoReadWriteCode, pipeToDoReadWrite, ASCIILiteral(), s_readableStreamInternalsPipeToDoReadWriteCodeLength) \ - macro(readableStreamInternalsPipeToErrorsMustBePropagatedForwardCode, pipeToErrorsMustBePropagatedForward, ASCIILiteral(), s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeLength) \ - macro(readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCode, pipeToErrorsMustBePropagatedBackward, ASCIILiteral(), s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeLength) \ - macro(readableStreamInternalsPipeToClosingMustBePropagatedForwardCode, pipeToClosingMustBePropagatedForward, ASCIILiteral(), s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeLength) \ - macro(readableStreamInternalsPipeToClosingMustBePropagatedBackwardCode, pipeToClosingMustBePropagatedBackward, ASCIILiteral(), s_readableStreamInternalsPipeToClosingMustBePropagatedBackwardCodeLength) \ - macro(readableStreamInternalsPipeToShutdownWithActionCode, pipeToShutdownWithAction, ASCIILiteral(), s_readableStreamInternalsPipeToShutdownWithActionCodeLength) \ - macro(readableStreamInternalsPipeToShutdownCode, pipeToShutdown, ASCIILiteral(), s_readableStreamInternalsPipeToShutdownCodeLength) \ - macro(readableStreamInternalsPipeToFinalizeCode, pipeToFinalize, ASCIILiteral(), s_readableStreamInternalsPipeToFinalizeCodeLength) \ - macro(readableStreamInternalsReadableStreamTeeCode, readableStreamTee, ASCIILiteral(), s_readableStreamInternalsReadableStreamTeeCodeLength) \ - macro(readableStreamInternalsReadableStreamTeePullFunctionCode, readableStreamTeePullFunction, ASCIILiteral(), s_readableStreamInternalsReadableStreamTeePullFunctionCodeLength) \ - macro(readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCode, readableStreamTeeBranch1CancelFunction, ASCIILiteral(), s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeLength) \ - macro(readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCode, readableStreamTeeBranch2CancelFunction, ASCIILiteral(), s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeLength) \ - macro(readableStreamInternalsIsReadableStreamCode, isReadableStream, ASCIILiteral(), s_readableStreamInternalsIsReadableStreamCodeLength) \ - macro(readableStreamInternalsIsReadableStreamDefaultReaderCode, isReadableStreamDefaultReader, ASCIILiteral(), s_readableStreamInternalsIsReadableStreamDefaultReaderCodeLength) \ - macro(readableStreamInternalsIsReadableStreamDefaultControllerCode, isReadableStreamDefaultController, ASCIILiteral(), s_readableStreamInternalsIsReadableStreamDefaultControllerCodeLength) \ - macro(readableStreamInternalsReadDirectStreamCode, readDirectStream, ASCIILiteral(), s_readableStreamInternalsReadDirectStreamCodeLength) \ - macro(readableStreamInternalsAssignToStreamCode, assignToStream, ASCIILiteral(), s_readableStreamInternalsAssignToStreamCodeLength) \ - macro(readableStreamInternalsReadStreamIntoSinkCode, readStreamIntoSink, ASCIILiteral(), s_readableStreamInternalsReadStreamIntoSinkCodeLength) \ - macro(readableStreamInternalsHandleDirectStreamErrorCode, handleDirectStreamError, ASCIILiteral(), s_readableStreamInternalsHandleDirectStreamErrorCodeLength) \ - macro(readableStreamInternalsHandleDirectStreamErrorRejectCode, handleDirectStreamErrorReject, ASCIILiteral(), s_readableStreamInternalsHandleDirectStreamErrorRejectCodeLength) \ - macro(readableStreamInternalsOnPullDirectStreamCode, onPullDirectStream, ASCIILiteral(), s_readableStreamInternalsOnPullDirectStreamCodeLength) \ - macro(readableStreamInternalsNoopDoneFunctionCode, noopDoneFunction, ASCIILiteral(), s_readableStreamInternalsNoopDoneFunctionCodeLength) \ - macro(readableStreamInternalsOnReadableStreamDirectControllerClosedCode, onReadableStreamDirectControllerClosed, ASCIILiteral(), s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeLength) \ - macro(readableStreamInternalsOnCloseDirectStreamCode, onCloseDirectStream, ASCIILiteral(), s_readableStreamInternalsOnCloseDirectStreamCodeLength) \ - macro(readableStreamInternalsOnFlushDirectStreamCode, onFlushDirectStream, ASCIILiteral(), s_readableStreamInternalsOnFlushDirectStreamCodeLength) \ - macro(readableStreamInternalsCreateTextStreamCode, createTextStream, ASCIILiteral(), s_readableStreamInternalsCreateTextStreamCodeLength) \ - macro(readableStreamInternalsInitializeTextStreamCode, initializeTextStream, ASCIILiteral(), s_readableStreamInternalsInitializeTextStreamCodeLength) \ - macro(readableStreamInternalsInitializeArrayStreamCode, initializeArrayStream, ASCIILiteral(), s_readableStreamInternalsInitializeArrayStreamCodeLength) \ - macro(readableStreamInternalsInitializeArrayBufferStreamCode, initializeArrayBufferStream, ASCIILiteral(), s_readableStreamInternalsInitializeArrayBufferStreamCodeLength) \ - macro(readableStreamInternalsReadableStreamErrorCode, readableStreamError, ASCIILiteral(), s_readableStreamInternalsReadableStreamErrorCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCode, readableStreamDefaultControllerShouldCallPull, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCode, readableStreamDefaultControllerCallPullIfNeeded, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerCallPullIfNeededCodeLength) \ - macro(readableStreamInternalsIsReadableStreamLockedCode, isReadableStreamLocked, ASCIILiteral(), s_readableStreamInternalsIsReadableStreamLockedCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCode, readableStreamDefaultControllerGetDesiredSize, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeLength) \ - macro(readableStreamInternalsReadableStreamReaderGenericCancelCode, readableStreamReaderGenericCancel, ASCIILiteral(), s_readableStreamInternalsReadableStreamReaderGenericCancelCodeLength) \ - macro(readableStreamInternalsReadableStreamCancelCode, readableStreamCancel, ASCIILiteral(), s_readableStreamInternalsReadableStreamCancelCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerCancelCode, readableStreamDefaultControllerCancel, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerPullCode, readableStreamDefaultControllerPull, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerPullCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerCloseCode, readableStreamDefaultControllerClose, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerCloseCodeLength) \ - macro(readableStreamInternalsReadableStreamCloseCode, readableStreamClose, ASCIILiteral(), s_readableStreamInternalsReadableStreamCloseCodeLength) \ - macro(readableStreamInternalsReadableStreamFulfillReadRequestCode, readableStreamFulfillReadRequest, ASCIILiteral(), s_readableStreamInternalsReadableStreamFulfillReadRequestCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerEnqueueCode, readableStreamDefaultControllerEnqueue, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultReaderReadCode, readableStreamDefaultReaderRead, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultReaderReadCodeLength) \ - macro(readableStreamInternalsReadableStreamAddReadRequestCode, readableStreamAddReadRequest, ASCIILiteral(), s_readableStreamInternalsReadableStreamAddReadRequestCodeLength) \ - macro(readableStreamInternalsIsReadableStreamDisturbedCode, isReadableStreamDisturbed, ASCIILiteral(), s_readableStreamInternalsIsReadableStreamDisturbedCodeLength) \ - macro(readableStreamInternalsReadableStreamReaderGenericReleaseCode, readableStreamReaderGenericRelease, ASCIILiteral(), s_readableStreamInternalsReadableStreamReaderGenericReleaseCodeLength) \ - macro(readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCode, readableStreamDefaultControllerCanCloseOrEnqueue, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefaultControllerCanCloseOrEnqueueCodeLength) \ - macro(readableStreamInternalsLazyLoadStreamCode, lazyLoadStream, ASCIILiteral(), s_readableStreamInternalsLazyLoadStreamCodeLength) \ - macro(readableStreamInternalsReadableStreamIntoArrayCode, readableStreamIntoArray, ASCIILiteral(), s_readableStreamInternalsReadableStreamIntoArrayCodeLength) \ - macro(readableStreamInternalsReadableStreamIntoTextCode, readableStreamIntoText, ASCIILiteral(), s_readableStreamInternalsReadableStreamIntoTextCodeLength) \ - macro(readableStreamInternalsReadableStreamToArrayBufferDirectCode, readableStreamToArrayBufferDirect, ASCIILiteral(), s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeLength) \ - macro(readableStreamInternalsReadableStreamToTextDirectCode, readableStreamToTextDirect, ASCIILiteral(), s_readableStreamInternalsReadableStreamToTextDirectCodeLength) \ - macro(readableStreamInternalsReadableStreamToArrayDirectCode, readableStreamToArrayDirect, ASCIILiteral(), s_readableStreamInternalsReadableStreamToArrayDirectCodeLength) \ - macro(readableStreamInternalsReadableStreamDefineLazyIteratorsCode, readableStreamDefineLazyIterators, ASCIILiteral(), s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeLength) \ - -#define WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(macro) \ - macro(readableStreamReaderGenericInitialize) \ - macro(privateInitializeReadableStreamDefaultController) \ - macro(readableStreamDefaultControllerError) \ - macro(readableStreamPipeTo) \ - macro(acquireReadableStreamDefaultReader) \ - macro(setupReadableStreamDefaultController) \ - macro(createReadableStreamController) \ - macro(readableStreamDefaultControllerStart) \ - macro(readableStreamPipeToWritableStream) \ - macro(pipeToLoop) \ - macro(pipeToDoReadWrite) \ - macro(pipeToErrorsMustBePropagatedForward) \ - macro(pipeToErrorsMustBePropagatedBackward) \ - macro(pipeToClosingMustBePropagatedForward) \ - macro(pipeToClosingMustBePropagatedBackward) \ - macro(pipeToShutdownWithAction) \ - macro(pipeToShutdown) \ - macro(pipeToFinalize) \ - macro(readableStreamTee) \ - macro(readableStreamTeePullFunction) \ - macro(readableStreamTeeBranch1CancelFunction) \ - macro(readableStreamTeeBranch2CancelFunction) \ - macro(isReadableStream) \ - macro(isReadableStreamDefaultReader) \ - macro(isReadableStreamDefaultController) \ - macro(readDirectStream) \ - macro(assignToStream) \ - macro(readStreamIntoSink) \ - macro(handleDirectStreamError) \ - macro(handleDirectStreamErrorReject) \ - macro(onPullDirectStream) \ - macro(noopDoneFunction) \ - macro(onReadableStreamDirectControllerClosed) \ - macro(onCloseDirectStream) \ - macro(onFlushDirectStream) \ - macro(createTextStream) \ - macro(initializeTextStream) \ - macro(initializeArrayStream) \ - macro(initializeArrayBufferStream) \ - macro(readableStreamError) \ - macro(readableStreamDefaultControllerShouldCallPull) \ - macro(readableStreamDefaultControllerCallPullIfNeeded) \ - macro(isReadableStreamLocked) \ - macro(readableStreamDefaultControllerGetDesiredSize) \ - macro(readableStreamReaderGenericCancel) \ - macro(readableStreamCancel) \ - macro(readableStreamDefaultControllerCancel) \ - macro(readableStreamDefaultControllerPull) \ - macro(readableStreamDefaultControllerClose) \ - macro(readableStreamClose) \ - macro(readableStreamFulfillReadRequest) \ - macro(readableStreamDefaultControllerEnqueue) \ - macro(readableStreamDefaultReaderRead) \ - macro(readableStreamAddReadRequest) \ - macro(isReadableStreamDisturbed) \ - macro(readableStreamReaderGenericRelease) \ - macro(readableStreamDefaultControllerCanCloseOrEnqueue) \ - macro(lazyLoadStream) \ - macro(readableStreamIntoArray) \ - macro(readableStreamIntoText) \ - macro(readableStreamToArrayBufferDirect) \ - macro(readableStreamToTextDirect) \ - macro(readableStreamToArrayDirect) \ - macro(readableStreamDefineLazyIterators) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ReadableStreamInternalsBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ReadableStreamInternalsBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ReadableStreamInternalsBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ReadableStreamInternalsBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -class ReadableStreamInternalsBuiltinFunctions { -public: - explicit ReadableStreamInternalsBuiltinFunctions(JSC::VM& vm) : m_vm(vm) { } - - void init(JSC::JSGlobalObject&); - template<typename Visitor> void visit(Visitor&); - -public: - JSC::VM& m_vm; - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(functionName) \ - JSC::WriteBarrier<JSC::JSFunction> m_##functionName##Function; - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS -}; - -inline void ReadableStreamInternalsBuiltinFunctions::init(JSC::JSGlobalObject& globalObject) -{ -#define EXPORT_FUNCTION(codeName, functionName, overriddenName, length) \ - m_##functionName##Function.set(m_vm, &globalObject, JSC::JSFunction::create(m_vm, codeName##Generator(m_vm), &globalObject)); - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_CODE(EXPORT_FUNCTION) -#undef EXPORT_FUNCTION -} - -template<typename Visitor> -inline void ReadableStreamInternalsBuiltinFunctions::visit(Visitor& visitor) -{ -#define VISIT_FUNCTION(name) visitor.append(m_##name##Function); - WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(VISIT_FUNCTION) -#undef VISIT_FUNCTION -} - -template void ReadableStreamInternalsBuiltinFunctions::visit(JSC::AbstractSlotVisitor&); -template void ReadableStreamInternalsBuiltinFunctions::visit(JSC::SlotVisitor&); - /* TransformStreamDefaultController.ts */ -// initializeTransformStreamDefaultController -#define WEBCORE_BUILTIN_TRANSFORMSTREAMDEFAULTCONTROLLER_INITIALIZETRANSFORMSTREAMDEFAULTCONTROLLER 1 -extern const char* const s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCode; -extern const int s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeLength; -extern const JSC::ConstructAbility s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeImplementationVisibility; - -// desiredSize -#define WEBCORE_BUILTIN_TRANSFORMSTREAMDEFAULTCONTROLLER_DESIREDSIZE 1 -extern const char* const s_transformStreamDefaultControllerDesiredSizeCode; -extern const int s_transformStreamDefaultControllerDesiredSizeCodeLength; -extern const JSC::ConstructAbility s_transformStreamDefaultControllerDesiredSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamDefaultControllerDesiredSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamDefaultControllerDesiredSizeCodeImplementationVisibility; - -// enqueue -#define WEBCORE_BUILTIN_TRANSFORMSTREAMDEFAULTCONTROLLER_ENQUEUE 1 -extern const char* const s_transformStreamDefaultControllerEnqueueCode; -extern const int s_transformStreamDefaultControllerEnqueueCodeLength; -extern const JSC::ConstructAbility s_transformStreamDefaultControllerEnqueueCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamDefaultControllerEnqueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamDefaultControllerEnqueueCodeImplementationVisibility; - -// error -#define WEBCORE_BUILTIN_TRANSFORMSTREAMDEFAULTCONTROLLER_ERROR 1 -extern const char* const s_transformStreamDefaultControllerErrorCode; -extern const int s_transformStreamDefaultControllerErrorCodeLength; -extern const JSC::ConstructAbility s_transformStreamDefaultControllerErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamDefaultControllerErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamDefaultControllerErrorCodeImplementationVisibility; - -// terminate -#define WEBCORE_BUILTIN_TRANSFORMSTREAMDEFAULTCONTROLLER_TERMINATE 1 -extern const char* const s_transformStreamDefaultControllerTerminateCode; -extern const int s_transformStreamDefaultControllerTerminateCodeLength; -extern const JSC::ConstructAbility s_transformStreamDefaultControllerTerminateCodeConstructAbility; -extern const JSC::ConstructorKind s_transformStreamDefaultControllerTerminateCodeConstructorKind; -extern const JSC::ImplementationVisibility s_transformStreamDefaultControllerTerminateCodeImplementationVisibility; - -#define WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_DATA(macro) \ - macro(initializeTransformStreamDefaultController, transformStreamDefaultControllerInitializeTransformStreamDefaultController, 0) \ - macro(desiredSize, transformStreamDefaultControllerDesiredSize, 0) \ - macro(enqueue, transformStreamDefaultControllerEnqueue, 1) \ - macro(error, transformStreamDefaultControllerError, 1) \ - macro(terminate, transformStreamDefaultControllerTerminate, 0) \ - -#define WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_CODE(macro) \ - macro(transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCode, initializeTransformStreamDefaultController, ASCIILiteral(), s_transformStreamDefaultControllerInitializeTransformStreamDefaultControllerCodeLength) \ - macro(transformStreamDefaultControllerDesiredSizeCode, desiredSize, "get desiredSize"_s, s_transformStreamDefaultControllerDesiredSizeCodeLength) \ - macro(transformStreamDefaultControllerEnqueueCode, enqueue, ASCIILiteral(), s_transformStreamDefaultControllerEnqueueCodeLength) \ - macro(transformStreamDefaultControllerErrorCode, error, ASCIILiteral(), s_transformStreamDefaultControllerErrorCodeLength) \ - macro(transformStreamDefaultControllerTerminateCode, terminate, ASCIILiteral(), s_transformStreamDefaultControllerTerminateCodeLength) \ - -#define WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeTransformStreamDefaultController) \ - macro(desiredSize) \ - macro(enqueue) \ - macro(error) \ - macro(terminate) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class TransformStreamDefaultControllerBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit TransformStreamDefaultControllerBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* TransformStreamDefaultControllerBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void TransformStreamDefaultControllerBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_TRANSFORMSTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ReadableStreamBYOBReader.ts */ -// initializeReadableStreamBYOBReader -#define WEBCORE_BUILTIN_READABLESTREAMBYOBREADER_INITIALIZEREADABLESTREAMBYOBREADER 1 -extern const char* const s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCode; -extern const int s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeLength; -extern const JSC::ConstructAbility s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeImplementationVisibility; - -// cancel -#define WEBCORE_BUILTIN_READABLESTREAMBYOBREADER_CANCEL 1 -extern const char* const s_readableStreamBYOBReaderCancelCode; -extern const int s_readableStreamBYOBReaderCancelCodeLength; -extern const JSC::ConstructAbility s_readableStreamBYOBReaderCancelCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamBYOBReaderCancelCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamBYOBReaderCancelCodeImplementationVisibility; - -// read -#define WEBCORE_BUILTIN_READABLESTREAMBYOBREADER_READ 1 -extern const char* const s_readableStreamBYOBReaderReadCode; -extern const int s_readableStreamBYOBReaderReadCodeLength; -extern const JSC::ConstructAbility s_readableStreamBYOBReaderReadCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamBYOBReaderReadCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamBYOBReaderReadCodeImplementationVisibility; - -// releaseLock -#define WEBCORE_BUILTIN_READABLESTREAMBYOBREADER_RELEASELOCK 1 -extern const char* const s_readableStreamBYOBReaderReleaseLockCode; -extern const int s_readableStreamBYOBReaderReleaseLockCodeLength; -extern const JSC::ConstructAbility s_readableStreamBYOBReaderReleaseLockCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamBYOBReaderReleaseLockCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamBYOBReaderReleaseLockCodeImplementationVisibility; - -// closed -#define WEBCORE_BUILTIN_READABLESTREAMBYOBREADER_CLOSED 1 -extern const char* const s_readableStreamBYOBReaderClosedCode; -extern const int s_readableStreamBYOBReaderClosedCodeLength; -extern const JSC::ConstructAbility s_readableStreamBYOBReaderClosedCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamBYOBReaderClosedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamBYOBReaderClosedCodeImplementationVisibility; - -#define WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_DATA(macro) \ - macro(initializeReadableStreamBYOBReader, readableStreamBYOBReaderInitializeReadableStreamBYOBReader, 1) \ - macro(cancel, readableStreamBYOBReaderCancel, 1) \ - macro(read, readableStreamBYOBReaderRead, 1) \ - macro(releaseLock, readableStreamBYOBReaderReleaseLock, 0) \ - macro(closed, readableStreamBYOBReaderClosed, 0) \ - -#define WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_CODE(macro) \ - macro(readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCode, initializeReadableStreamBYOBReader, ASCIILiteral(), s_readableStreamBYOBReaderInitializeReadableStreamBYOBReaderCodeLength) \ - macro(readableStreamBYOBReaderCancelCode, cancel, ASCIILiteral(), s_readableStreamBYOBReaderCancelCodeLength) \ - macro(readableStreamBYOBReaderReadCode, read, ASCIILiteral(), s_readableStreamBYOBReaderReadCodeLength) \ - macro(readableStreamBYOBReaderReleaseLockCode, releaseLock, ASCIILiteral(), s_readableStreamBYOBReaderReleaseLockCodeLength) \ - macro(readableStreamBYOBReaderClosedCode, closed, "get closed"_s, s_readableStreamBYOBReaderClosedCodeLength) \ - -#define WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeReadableStreamBYOBReader) \ - macro(cancel) \ - macro(read) \ - macro(releaseLock) \ - macro(closed) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ReadableStreamBYOBReaderBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ReadableStreamBYOBReaderBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ReadableStreamBYOBReaderBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ReadableStreamBYOBReaderBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_READABLESTREAMBYOBREADER_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* JSBufferConstructor.ts */ -// from -#define WEBCORE_BUILTIN_JSBUFFERCONSTRUCTOR_FROM 1 -extern const char* const s_jsBufferConstructorFromCode; -extern const int s_jsBufferConstructorFromCodeLength; -extern const JSC::ConstructAbility s_jsBufferConstructorFromCodeConstructAbility; -extern const JSC::ConstructorKind s_jsBufferConstructorFromCodeConstructorKind; -extern const JSC::ImplementationVisibility s_jsBufferConstructorFromCodeImplementationVisibility; - -#define WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_DATA(macro) \ - macro(from, jsBufferConstructorFrom, 1) \ - -#define WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(macro) \ - macro(jsBufferConstructorFromCode, from, ASCIILiteral(), s_jsBufferConstructorFromCodeLength) \ - -#define WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_FUNCTION_NAME(macro) \ - macro(from) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class JSBufferConstructorBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit JSBufferConstructorBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* JSBufferConstructorBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void JSBufferConstructorBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_JSBUFFERCONSTRUCTOR_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ReadableStreamDefaultReader.ts */ -// initializeReadableStreamDefaultReader -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTREADER_INITIALIZEREADABLESTREAMDEFAULTREADER 1 -extern const char* const s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCode; -extern const int s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeImplementationVisibility; - -// cancel -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTREADER_CANCEL 1 -extern const char* const s_readableStreamDefaultReaderCancelCode; -extern const int s_readableStreamDefaultReaderCancelCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultReaderCancelCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultReaderCancelCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultReaderCancelCodeImplementationVisibility; - -// readMany -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTREADER_READMANY 1 -extern const char* const s_readableStreamDefaultReaderReadManyCode; -extern const int s_readableStreamDefaultReaderReadManyCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultReaderReadManyCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultReaderReadManyCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultReaderReadManyCodeImplementationVisibility; - -// read -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTREADER_READ 1 -extern const char* const s_readableStreamDefaultReaderReadCode; -extern const int s_readableStreamDefaultReaderReadCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultReaderReadCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultReaderReadCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultReaderReadCodeImplementationVisibility; - -// releaseLock -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTREADER_RELEASELOCK 1 -extern const char* const s_readableStreamDefaultReaderReleaseLockCode; -extern const int s_readableStreamDefaultReaderReleaseLockCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultReaderReleaseLockCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultReaderReleaseLockCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultReaderReleaseLockCodeImplementationVisibility; - -// closed -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTREADER_CLOSED 1 -extern const char* const s_readableStreamDefaultReaderClosedCode; -extern const int s_readableStreamDefaultReaderClosedCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultReaderClosedCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultReaderClosedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultReaderClosedCodeImplementationVisibility; - -#define WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_DATA(macro) \ - macro(initializeReadableStreamDefaultReader, readableStreamDefaultReaderInitializeReadableStreamDefaultReader, 1) \ - macro(cancel, readableStreamDefaultReaderCancel, 1) \ - macro(readMany, readableStreamDefaultReaderReadMany, 0) \ - macro(read, readableStreamDefaultReaderRead, 0) \ - macro(releaseLock, readableStreamDefaultReaderReleaseLock, 0) \ - macro(closed, readableStreamDefaultReaderClosed, 0) \ - -#define WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_CODE(macro) \ - macro(readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCode, initializeReadableStreamDefaultReader, ASCIILiteral(), s_readableStreamDefaultReaderInitializeReadableStreamDefaultReaderCodeLength) \ - macro(readableStreamDefaultReaderCancelCode, cancel, ASCIILiteral(), s_readableStreamDefaultReaderCancelCodeLength) \ - macro(readableStreamDefaultReaderReadManyCode, readMany, ASCIILiteral(), s_readableStreamDefaultReaderReadManyCodeLength) \ - macro(readableStreamDefaultReaderReadCode, read, ASCIILiteral(), s_readableStreamDefaultReaderReadCodeLength) \ - macro(readableStreamDefaultReaderReleaseLockCode, releaseLock, ASCIILiteral(), s_readableStreamDefaultReaderReleaseLockCodeLength) \ - macro(readableStreamDefaultReaderClosedCode, closed, "get closed"_s, s_readableStreamDefaultReaderClosedCodeLength) \ - -#define WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeReadableStreamDefaultReader) \ - macro(cancel) \ - macro(readMany) \ - macro(read) \ - macro(releaseLock) \ - macro(closed) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ReadableStreamDefaultReaderBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ReadableStreamDefaultReaderBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ReadableStreamDefaultReaderBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ReadableStreamDefaultReaderBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_READABLESTREAMDEFAULTREADER_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* StreamInternals.ts */ -// markPromiseAsHandled -#define WEBCORE_BUILTIN_STREAMINTERNALS_MARKPROMISEASHANDLED 1 -extern const char* const s_streamInternalsMarkPromiseAsHandledCode; -extern const int s_streamInternalsMarkPromiseAsHandledCodeLength; -extern const JSC::ConstructAbility s_streamInternalsMarkPromiseAsHandledCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsMarkPromiseAsHandledCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsMarkPromiseAsHandledCodeImplementationVisibility; - -// shieldingPromiseResolve -#define WEBCORE_BUILTIN_STREAMINTERNALS_SHIELDINGPROMISERESOLVE 1 -extern const char* const s_streamInternalsShieldingPromiseResolveCode; -extern const int s_streamInternalsShieldingPromiseResolveCodeLength; -extern const JSC::ConstructAbility s_streamInternalsShieldingPromiseResolveCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsShieldingPromiseResolveCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsShieldingPromiseResolveCodeImplementationVisibility; - -// promiseInvokeOrNoopMethodNoCatch -#define WEBCORE_BUILTIN_STREAMINTERNALS_PROMISEINVOKEORNOOPMETHODNOCATCH 1 -extern const char* const s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCode; -extern const int s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeLength; -extern const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeImplementationVisibility; - -// promiseInvokeOrNoopNoCatch -#define WEBCORE_BUILTIN_STREAMINTERNALS_PROMISEINVOKEORNOOPNOCATCH 1 -extern const char* const s_streamInternalsPromiseInvokeOrNoopNoCatchCode; -extern const int s_streamInternalsPromiseInvokeOrNoopNoCatchCodeLength; -extern const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopNoCatchCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopNoCatchCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopNoCatchCodeImplementationVisibility; - -// promiseInvokeOrNoopMethod -#define WEBCORE_BUILTIN_STREAMINTERNALS_PROMISEINVOKEORNOOPMETHOD 1 -extern const char* const s_streamInternalsPromiseInvokeOrNoopMethodCode; -extern const int s_streamInternalsPromiseInvokeOrNoopMethodCodeLength; -extern const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopMethodCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopMethodCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopMethodCodeImplementationVisibility; - -// promiseInvokeOrNoop -#define WEBCORE_BUILTIN_STREAMINTERNALS_PROMISEINVOKEORNOOP 1 -extern const char* const s_streamInternalsPromiseInvokeOrNoopCode; -extern const int s_streamInternalsPromiseInvokeOrNoopCodeLength; -extern const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopCodeImplementationVisibility; - -// promiseInvokeOrFallbackOrNoop -#define WEBCORE_BUILTIN_STREAMINTERNALS_PROMISEINVOKEORFALLBACKORNOOP 1 -extern const char* const s_streamInternalsPromiseInvokeOrFallbackOrNoopCode; -extern const int s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeLength; -extern const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeImplementationVisibility; - -// validateAndNormalizeQueuingStrategy -#define WEBCORE_BUILTIN_STREAMINTERNALS_VALIDATEANDNORMALIZEQUEUINGSTRATEGY 1 -extern const char* const s_streamInternalsValidateAndNormalizeQueuingStrategyCode; -extern const int s_streamInternalsValidateAndNormalizeQueuingStrategyCodeLength; -extern const JSC::ConstructAbility s_streamInternalsValidateAndNormalizeQueuingStrategyCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsValidateAndNormalizeQueuingStrategyCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsValidateAndNormalizeQueuingStrategyCodeImplementationVisibility; - -// createFIFO -#define WEBCORE_BUILTIN_STREAMINTERNALS_CREATEFIFO 1 -extern const char* const s_streamInternalsCreateFIFOCode; -extern const int s_streamInternalsCreateFIFOCodeLength; -extern const JSC::ConstructAbility s_streamInternalsCreateFIFOCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsCreateFIFOCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsCreateFIFOCodeImplementationVisibility; - -// newQueue -#define WEBCORE_BUILTIN_STREAMINTERNALS_NEWQUEUE 1 -extern const char* const s_streamInternalsNewQueueCode; -extern const int s_streamInternalsNewQueueCodeLength; -extern const JSC::ConstructAbility s_streamInternalsNewQueueCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsNewQueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsNewQueueCodeImplementationVisibility; - -// dequeueValue -#define WEBCORE_BUILTIN_STREAMINTERNALS_DEQUEUEVALUE 1 -extern const char* const s_streamInternalsDequeueValueCode; -extern const int s_streamInternalsDequeueValueCodeLength; -extern const JSC::ConstructAbility s_streamInternalsDequeueValueCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsDequeueValueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsDequeueValueCodeImplementationVisibility; - -// enqueueValueWithSize -#define WEBCORE_BUILTIN_STREAMINTERNALS_ENQUEUEVALUEWITHSIZE 1 -extern const char* const s_streamInternalsEnqueueValueWithSizeCode; -extern const int s_streamInternalsEnqueueValueWithSizeCodeLength; -extern const JSC::ConstructAbility s_streamInternalsEnqueueValueWithSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsEnqueueValueWithSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsEnqueueValueWithSizeCodeImplementationVisibility; - -// peekQueueValue -#define WEBCORE_BUILTIN_STREAMINTERNALS_PEEKQUEUEVALUE 1 -extern const char* const s_streamInternalsPeekQueueValueCode; -extern const int s_streamInternalsPeekQueueValueCodeLength; -extern const JSC::ConstructAbility s_streamInternalsPeekQueueValueCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsPeekQueueValueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsPeekQueueValueCodeImplementationVisibility; - -// resetQueue -#define WEBCORE_BUILTIN_STREAMINTERNALS_RESETQUEUE 1 -extern const char* const s_streamInternalsResetQueueCode; -extern const int s_streamInternalsResetQueueCodeLength; -extern const JSC::ConstructAbility s_streamInternalsResetQueueCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsResetQueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsResetQueueCodeImplementationVisibility; - -// extractSizeAlgorithm -#define WEBCORE_BUILTIN_STREAMINTERNALS_EXTRACTSIZEALGORITHM 1 -extern const char* const s_streamInternalsExtractSizeAlgorithmCode; -extern const int s_streamInternalsExtractSizeAlgorithmCodeLength; -extern const JSC::ConstructAbility s_streamInternalsExtractSizeAlgorithmCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsExtractSizeAlgorithmCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsExtractSizeAlgorithmCodeImplementationVisibility; - -// extractHighWaterMark -#define WEBCORE_BUILTIN_STREAMINTERNALS_EXTRACTHIGHWATERMARK 1 -extern const char* const s_streamInternalsExtractHighWaterMarkCode; -extern const int s_streamInternalsExtractHighWaterMarkCodeLength; -extern const JSC::ConstructAbility s_streamInternalsExtractHighWaterMarkCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsExtractHighWaterMarkCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsExtractHighWaterMarkCodeImplementationVisibility; - -// extractHighWaterMarkFromQueuingStrategyInit -#define WEBCORE_BUILTIN_STREAMINTERNALS_EXTRACTHIGHWATERMARKFROMQUEUINGSTRATEGYINIT 1 -extern const char* const s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCode; -extern const int s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeLength; -extern const JSC::ConstructAbility s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeImplementationVisibility; - -// createFulfilledPromise -#define WEBCORE_BUILTIN_STREAMINTERNALS_CREATEFULFILLEDPROMISE 1 -extern const char* const s_streamInternalsCreateFulfilledPromiseCode; -extern const int s_streamInternalsCreateFulfilledPromiseCodeLength; -extern const JSC::ConstructAbility s_streamInternalsCreateFulfilledPromiseCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsCreateFulfilledPromiseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsCreateFulfilledPromiseCodeImplementationVisibility; - -// toDictionary -#define WEBCORE_BUILTIN_STREAMINTERNALS_TODICTIONARY 1 -extern const char* const s_streamInternalsToDictionaryCode; -extern const int s_streamInternalsToDictionaryCodeLength; -extern const JSC::ConstructAbility s_streamInternalsToDictionaryCodeConstructAbility; -extern const JSC::ConstructorKind s_streamInternalsToDictionaryCodeConstructorKind; -extern const JSC::ImplementationVisibility s_streamInternalsToDictionaryCodeImplementationVisibility; - -#define WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_DATA(macro) \ - macro(markPromiseAsHandled, streamInternalsMarkPromiseAsHandled, 1) \ - macro(shieldingPromiseResolve, streamInternalsShieldingPromiseResolve, 1) \ - macro(promiseInvokeOrNoopMethodNoCatch, streamInternalsPromiseInvokeOrNoopMethodNoCatch, 3) \ - macro(promiseInvokeOrNoopNoCatch, streamInternalsPromiseInvokeOrNoopNoCatch, 3) \ - macro(promiseInvokeOrNoopMethod, streamInternalsPromiseInvokeOrNoopMethod, 3) \ - macro(promiseInvokeOrNoop, streamInternalsPromiseInvokeOrNoop, 3) \ - macro(promiseInvokeOrFallbackOrNoop, streamInternalsPromiseInvokeOrFallbackOrNoop, 5) \ - macro(validateAndNormalizeQueuingStrategy, streamInternalsValidateAndNormalizeQueuingStrategy, 2) \ - macro(createFIFO, streamInternalsCreateFIFO, 0) \ - macro(newQueue, streamInternalsNewQueue, 0) \ - macro(dequeueValue, streamInternalsDequeueValue, 1) \ - macro(enqueueValueWithSize, streamInternalsEnqueueValueWithSize, 3) \ - macro(peekQueueValue, streamInternalsPeekQueueValue, 1) \ - macro(resetQueue, streamInternalsResetQueue, 1) \ - macro(extractSizeAlgorithm, streamInternalsExtractSizeAlgorithm, 1) \ - macro(extractHighWaterMark, streamInternalsExtractHighWaterMark, 2) \ - macro(extractHighWaterMarkFromQueuingStrategyInit, streamInternalsExtractHighWaterMarkFromQueuingStrategyInit, 1) \ - macro(createFulfilledPromise, streamInternalsCreateFulfilledPromise, 1) \ - macro(toDictionary, streamInternalsToDictionary, 3) \ - -#define WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_CODE(macro) \ - macro(streamInternalsMarkPromiseAsHandledCode, markPromiseAsHandled, ASCIILiteral(), s_streamInternalsMarkPromiseAsHandledCodeLength) \ - macro(streamInternalsShieldingPromiseResolveCode, shieldingPromiseResolve, ASCIILiteral(), s_streamInternalsShieldingPromiseResolveCodeLength) \ - macro(streamInternalsPromiseInvokeOrNoopMethodNoCatchCode, promiseInvokeOrNoopMethodNoCatch, ASCIILiteral(), s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeLength) \ - macro(streamInternalsPromiseInvokeOrNoopNoCatchCode, promiseInvokeOrNoopNoCatch, ASCIILiteral(), s_streamInternalsPromiseInvokeOrNoopNoCatchCodeLength) \ - macro(streamInternalsPromiseInvokeOrNoopMethodCode, promiseInvokeOrNoopMethod, ASCIILiteral(), s_streamInternalsPromiseInvokeOrNoopMethodCodeLength) \ - macro(streamInternalsPromiseInvokeOrNoopCode, promiseInvokeOrNoop, ASCIILiteral(), s_streamInternalsPromiseInvokeOrNoopCodeLength) \ - macro(streamInternalsPromiseInvokeOrFallbackOrNoopCode, promiseInvokeOrFallbackOrNoop, ASCIILiteral(), s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeLength) \ - macro(streamInternalsValidateAndNormalizeQueuingStrategyCode, validateAndNormalizeQueuingStrategy, ASCIILiteral(), s_streamInternalsValidateAndNormalizeQueuingStrategyCodeLength) \ - macro(streamInternalsCreateFIFOCode, createFIFO, ASCIILiteral(), s_streamInternalsCreateFIFOCodeLength) \ - macro(streamInternalsNewQueueCode, newQueue, ASCIILiteral(), s_streamInternalsNewQueueCodeLength) \ - macro(streamInternalsDequeueValueCode, dequeueValue, ASCIILiteral(), s_streamInternalsDequeueValueCodeLength) \ - macro(streamInternalsEnqueueValueWithSizeCode, enqueueValueWithSize, ASCIILiteral(), s_streamInternalsEnqueueValueWithSizeCodeLength) \ - macro(streamInternalsPeekQueueValueCode, peekQueueValue, ASCIILiteral(), s_streamInternalsPeekQueueValueCodeLength) \ - macro(streamInternalsResetQueueCode, resetQueue, ASCIILiteral(), s_streamInternalsResetQueueCodeLength) \ - macro(streamInternalsExtractSizeAlgorithmCode, extractSizeAlgorithm, ASCIILiteral(), s_streamInternalsExtractSizeAlgorithmCodeLength) \ - macro(streamInternalsExtractHighWaterMarkCode, extractHighWaterMark, ASCIILiteral(), s_streamInternalsExtractHighWaterMarkCodeLength) \ - macro(streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCode, extractHighWaterMarkFromQueuingStrategyInit, ASCIILiteral(), s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeLength) \ - macro(streamInternalsCreateFulfilledPromiseCode, createFulfilledPromise, ASCIILiteral(), s_streamInternalsCreateFulfilledPromiseCodeLength) \ - macro(streamInternalsToDictionaryCode, toDictionary, ASCIILiteral(), s_streamInternalsToDictionaryCodeLength) \ - -#define WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_FUNCTION_NAME(macro) \ - macro(markPromiseAsHandled) \ - macro(shieldingPromiseResolve) \ - macro(promiseInvokeOrNoopMethodNoCatch) \ - macro(promiseInvokeOrNoopNoCatch) \ - macro(promiseInvokeOrNoopMethod) \ - macro(promiseInvokeOrNoop) \ - macro(promiseInvokeOrFallbackOrNoop) \ - macro(validateAndNormalizeQueuingStrategy) \ - macro(createFIFO) \ - macro(newQueue) \ - macro(dequeueValue) \ - macro(enqueueValueWithSize) \ - macro(peekQueueValue) \ - macro(resetQueue) \ - macro(extractSizeAlgorithm) \ - macro(extractHighWaterMark) \ - macro(extractHighWaterMarkFromQueuingStrategyInit) \ - macro(createFulfilledPromise) \ - macro(toDictionary) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class StreamInternalsBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit StreamInternalsBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* StreamInternalsBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void StreamInternalsBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -class StreamInternalsBuiltinFunctions { -public: - explicit StreamInternalsBuiltinFunctions(JSC::VM& vm) : m_vm(vm) { } - - void init(JSC::JSGlobalObject&); - template<typename Visitor> void visit(Visitor&); - -public: - JSC::VM& m_vm; - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(functionName) \ - JSC::WriteBarrier<JSC::JSFunction> m_##functionName##Function; - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS -}; - -inline void StreamInternalsBuiltinFunctions::init(JSC::JSGlobalObject& globalObject) -{ -#define EXPORT_FUNCTION(codeName, functionName, overriddenName, length) \ - m_##functionName##Function.set(m_vm, &globalObject, JSC::JSFunction::create(m_vm, codeName##Generator(m_vm), &globalObject)); - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_CODE(EXPORT_FUNCTION) -#undef EXPORT_FUNCTION -} - -template<typename Visitor> -inline void StreamInternalsBuiltinFunctions::visit(Visitor& visitor) -{ -#define VISIT_FUNCTION(name) visitor.append(m_##name##Function); - WEBCORE_FOREACH_STREAMINTERNALS_BUILTIN_FUNCTION_NAME(VISIT_FUNCTION) -#undef VISIT_FUNCTION -} - -template void StreamInternalsBuiltinFunctions::visit(JSC::AbstractSlotVisitor&); -template void StreamInternalsBuiltinFunctions::visit(JSC::SlotVisitor&); - /* ImportMetaObject.ts */ -// loadCJS2ESM -#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_LOADCJS2ESM 1 -extern const char* const s_importMetaObjectLoadCJS2ESMCode; -extern const int s_importMetaObjectLoadCJS2ESMCodeLength; -extern const JSC::ConstructAbility s_importMetaObjectLoadCJS2ESMCodeConstructAbility; -extern const JSC::ConstructorKind s_importMetaObjectLoadCJS2ESMCodeConstructorKind; -extern const JSC::ImplementationVisibility s_importMetaObjectLoadCJS2ESMCodeImplementationVisibility; - -// requireESM -#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_REQUIREESM 1 -extern const char* const s_importMetaObjectRequireESMCode; -extern const int s_importMetaObjectRequireESMCodeLength; -extern const JSC::ConstructAbility s_importMetaObjectRequireESMCodeConstructAbility; -extern const JSC::ConstructorKind s_importMetaObjectRequireESMCodeConstructorKind; -extern const JSC::ImplementationVisibility s_importMetaObjectRequireESMCodeImplementationVisibility; - -// internalRequire -#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_INTERNALREQUIRE 1 -extern const char* const s_importMetaObjectInternalRequireCode; -extern const int s_importMetaObjectInternalRequireCodeLength; -extern const JSC::ConstructAbility s_importMetaObjectInternalRequireCodeConstructAbility; -extern const JSC::ConstructorKind s_importMetaObjectInternalRequireCodeConstructorKind; -extern const JSC::ImplementationVisibility s_importMetaObjectInternalRequireCodeImplementationVisibility; - -// createRequireCache -#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_CREATEREQUIRECACHE 1 -extern const char* const s_importMetaObjectCreateRequireCacheCode; -extern const int s_importMetaObjectCreateRequireCacheCodeLength; -extern const JSC::ConstructAbility s_importMetaObjectCreateRequireCacheCodeConstructAbility; -extern const JSC::ConstructorKind s_importMetaObjectCreateRequireCacheCodeConstructorKind; -extern const JSC::ImplementationVisibility s_importMetaObjectCreateRequireCacheCodeImplementationVisibility; - -// require -#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_REQUIRE 1 -extern const char* const s_importMetaObjectRequireCode; -extern const int s_importMetaObjectRequireCodeLength; -extern const JSC::ConstructAbility s_importMetaObjectRequireCodeConstructAbility; -extern const JSC::ConstructorKind s_importMetaObjectRequireCodeConstructorKind; -extern const JSC::ImplementationVisibility s_importMetaObjectRequireCodeImplementationVisibility; - -// main -#define WEBCORE_BUILTIN_IMPORTMETAOBJECT_MAIN 1 -extern const char* const s_importMetaObjectMainCode; -extern const int s_importMetaObjectMainCodeLength; -extern const JSC::ConstructAbility s_importMetaObjectMainCodeConstructAbility; -extern const JSC::ConstructorKind s_importMetaObjectMainCodeConstructorKind; -extern const JSC::ImplementationVisibility s_importMetaObjectMainCodeImplementationVisibility; - -#define WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_DATA(macro) \ - macro(loadCJS2ESM, importMetaObjectLoadCJS2ESM, 1) \ - macro(requireESM, importMetaObjectRequireESM, 1) \ - macro(internalRequire, importMetaObjectInternalRequire, 1) \ - macro(createRequireCache, importMetaObjectCreateRequireCache, 0) \ - macro(require, importMetaObjectRequire, 1) \ - macro(main, importMetaObjectMain, 0) \ - -#define WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_CODE(macro) \ - macro(importMetaObjectLoadCJS2ESMCode, loadCJS2ESM, ASCIILiteral(), s_importMetaObjectLoadCJS2ESMCodeLength) \ - macro(importMetaObjectRequireESMCode, requireESM, ASCIILiteral(), s_importMetaObjectRequireESMCodeLength) \ - macro(importMetaObjectInternalRequireCode, internalRequire, ASCIILiteral(), s_importMetaObjectInternalRequireCodeLength) \ - macro(importMetaObjectCreateRequireCacheCode, createRequireCache, ASCIILiteral(), s_importMetaObjectCreateRequireCacheCodeLength) \ - macro(importMetaObjectRequireCode, require, ASCIILiteral(), s_importMetaObjectRequireCodeLength) \ - macro(importMetaObjectMainCode, main, "get main"_s, s_importMetaObjectMainCodeLength) \ - -#define WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_FUNCTION_NAME(macro) \ - macro(loadCJS2ESM) \ - macro(requireESM) \ - macro(internalRequire) \ - macro(createRequireCache) \ - macro(require) \ - macro(main) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ImportMetaObjectBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ImportMetaObjectBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ImportMetaObjectBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ImportMetaObjectBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_IMPORTMETAOBJECT_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* CountQueuingStrategy.ts */ -// highWaterMark -#define WEBCORE_BUILTIN_COUNTQUEUINGSTRATEGY_HIGHWATERMARK 1 -extern const char* const s_countQueuingStrategyHighWaterMarkCode; -extern const int s_countQueuingStrategyHighWaterMarkCodeLength; -extern const JSC::ConstructAbility s_countQueuingStrategyHighWaterMarkCodeConstructAbility; -extern const JSC::ConstructorKind s_countQueuingStrategyHighWaterMarkCodeConstructorKind; -extern const JSC::ImplementationVisibility s_countQueuingStrategyHighWaterMarkCodeImplementationVisibility; - -// size -#define WEBCORE_BUILTIN_COUNTQUEUINGSTRATEGY_SIZE 1 -extern const char* const s_countQueuingStrategySizeCode; -extern const int s_countQueuingStrategySizeCodeLength; -extern const JSC::ConstructAbility s_countQueuingStrategySizeCodeConstructAbility; -extern const JSC::ConstructorKind s_countQueuingStrategySizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_countQueuingStrategySizeCodeImplementationVisibility; - -// initializeCountQueuingStrategy -#define WEBCORE_BUILTIN_COUNTQUEUINGSTRATEGY_INITIALIZECOUNTQUEUINGSTRATEGY 1 -extern const char* const s_countQueuingStrategyInitializeCountQueuingStrategyCode; -extern const int s_countQueuingStrategyInitializeCountQueuingStrategyCodeLength; -extern const JSC::ConstructAbility s_countQueuingStrategyInitializeCountQueuingStrategyCodeConstructAbility; -extern const JSC::ConstructorKind s_countQueuingStrategyInitializeCountQueuingStrategyCodeConstructorKind; -extern const JSC::ImplementationVisibility s_countQueuingStrategyInitializeCountQueuingStrategyCodeImplementationVisibility; - -#define WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_DATA(macro) \ - macro(highWaterMark, countQueuingStrategyHighWaterMark, 0) \ - macro(size, countQueuingStrategySize, 0) \ - macro(initializeCountQueuingStrategy, countQueuingStrategyInitializeCountQueuingStrategy, 1) \ - -#define WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_CODE(macro) \ - macro(countQueuingStrategyHighWaterMarkCode, highWaterMark, "get highWaterMark"_s, s_countQueuingStrategyHighWaterMarkCodeLength) \ - macro(countQueuingStrategySizeCode, size, ASCIILiteral(), s_countQueuingStrategySizeCodeLength) \ - macro(countQueuingStrategyInitializeCountQueuingStrategyCode, initializeCountQueuingStrategy, ASCIILiteral(), s_countQueuingStrategyInitializeCountQueuingStrategyCodeLength) \ - -#define WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(macro) \ - macro(highWaterMark) \ - macro(size) \ - macro(initializeCountQueuingStrategy) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class CountQueuingStrategyBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit CountQueuingStrategyBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* CountQueuingStrategyBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void CountQueuingStrategyBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_COUNTQUEUINGSTRATEGY_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ReadableStreamBYOBRequest.ts */ -// initializeReadableStreamBYOBRequest -#define WEBCORE_BUILTIN_READABLESTREAMBYOBREQUEST_INITIALIZEREADABLESTREAMBYOBREQUEST 1 -extern const char* const s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCode; -extern const int s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeLength; -extern const JSC::ConstructAbility s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeImplementationVisibility; - -// respond -#define WEBCORE_BUILTIN_READABLESTREAMBYOBREQUEST_RESPOND 1 -extern const char* const s_readableStreamBYOBRequestRespondCode; -extern const int s_readableStreamBYOBRequestRespondCodeLength; -extern const JSC::ConstructAbility s_readableStreamBYOBRequestRespondCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamBYOBRequestRespondCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamBYOBRequestRespondCodeImplementationVisibility; - -// respondWithNewView -#define WEBCORE_BUILTIN_READABLESTREAMBYOBREQUEST_RESPONDWITHNEWVIEW 1 -extern const char* const s_readableStreamBYOBRequestRespondWithNewViewCode; -extern const int s_readableStreamBYOBRequestRespondWithNewViewCodeLength; -extern const JSC::ConstructAbility s_readableStreamBYOBRequestRespondWithNewViewCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamBYOBRequestRespondWithNewViewCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamBYOBRequestRespondWithNewViewCodeImplementationVisibility; - -// view -#define WEBCORE_BUILTIN_READABLESTREAMBYOBREQUEST_VIEW 1 -extern const char* const s_readableStreamBYOBRequestViewCode; -extern const int s_readableStreamBYOBRequestViewCodeLength; -extern const JSC::ConstructAbility s_readableStreamBYOBRequestViewCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamBYOBRequestViewCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamBYOBRequestViewCodeImplementationVisibility; - -#define WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_DATA(macro) \ - macro(initializeReadableStreamBYOBRequest, readableStreamBYOBRequestInitializeReadableStreamBYOBRequest, 2) \ - macro(respond, readableStreamBYOBRequestRespond, 1) \ - macro(respondWithNewView, readableStreamBYOBRequestRespondWithNewView, 1) \ - macro(view, readableStreamBYOBRequestView, 0) \ - -#define WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_CODE(macro) \ - macro(readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCode, initializeReadableStreamBYOBRequest, ASCIILiteral(), s_readableStreamBYOBRequestInitializeReadableStreamBYOBRequestCodeLength) \ - macro(readableStreamBYOBRequestRespondCode, respond, ASCIILiteral(), s_readableStreamBYOBRequestRespondCodeLength) \ - macro(readableStreamBYOBRequestRespondWithNewViewCode, respondWithNewView, ASCIILiteral(), s_readableStreamBYOBRequestRespondWithNewViewCodeLength) \ - macro(readableStreamBYOBRequestViewCode, view, "get view"_s, s_readableStreamBYOBRequestViewCodeLength) \ - -#define WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeReadableStreamBYOBRequest) \ - macro(respond) \ - macro(respondWithNewView) \ - macro(view) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ReadableStreamBYOBRequestBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ReadableStreamBYOBRequestBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ReadableStreamBYOBRequestBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ReadableStreamBYOBRequestBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_READABLESTREAMBYOBREQUEST_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* WritableStreamDefaultWriter.ts */ -// initializeWritableStreamDefaultWriter -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTWRITER_INITIALIZEWRITABLESTREAMDEFAULTWRITER 1 -extern const char* const s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCode; -extern const int s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeImplementationVisibility; - -// closed -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTWRITER_CLOSED 1 -extern const char* const s_writableStreamDefaultWriterClosedCode; -extern const int s_writableStreamDefaultWriterClosedCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultWriterClosedCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultWriterClosedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultWriterClosedCodeImplementationVisibility; - -// desiredSize -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTWRITER_DESIREDSIZE 1 -extern const char* const s_writableStreamDefaultWriterDesiredSizeCode; -extern const int s_writableStreamDefaultWriterDesiredSizeCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultWriterDesiredSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultWriterDesiredSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultWriterDesiredSizeCodeImplementationVisibility; - -// ready -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTWRITER_READY 1 -extern const char* const s_writableStreamDefaultWriterReadyCode; -extern const int s_writableStreamDefaultWriterReadyCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultWriterReadyCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultWriterReadyCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultWriterReadyCodeImplementationVisibility; - -// abort -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTWRITER_ABORT 1 -extern const char* const s_writableStreamDefaultWriterAbortCode; -extern const int s_writableStreamDefaultWriterAbortCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultWriterAbortCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultWriterAbortCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultWriterAbortCodeImplementationVisibility; - -// close -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTWRITER_CLOSE 1 -extern const char* const s_writableStreamDefaultWriterCloseCode; -extern const int s_writableStreamDefaultWriterCloseCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultWriterCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultWriterCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultWriterCloseCodeImplementationVisibility; - -// releaseLock -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTWRITER_RELEASELOCK 1 -extern const char* const s_writableStreamDefaultWriterReleaseLockCode; -extern const int s_writableStreamDefaultWriterReleaseLockCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultWriterReleaseLockCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultWriterReleaseLockCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultWriterReleaseLockCodeImplementationVisibility; - -// write -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTWRITER_WRITE 1 -extern const char* const s_writableStreamDefaultWriterWriteCode; -extern const int s_writableStreamDefaultWriterWriteCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultWriterWriteCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultWriterWriteCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultWriterWriteCodeImplementationVisibility; - -#define WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_DATA(macro) \ - macro(initializeWritableStreamDefaultWriter, writableStreamDefaultWriterInitializeWritableStreamDefaultWriter, 1) \ - macro(closed, writableStreamDefaultWriterClosed, 0) \ - macro(desiredSize, writableStreamDefaultWriterDesiredSize, 0) \ - macro(ready, writableStreamDefaultWriterReady, 0) \ - macro(abort, writableStreamDefaultWriterAbort, 1) \ - macro(close, writableStreamDefaultWriterClose, 0) \ - macro(releaseLock, writableStreamDefaultWriterReleaseLock, 0) \ - macro(write, writableStreamDefaultWriterWrite, 1) \ - -#define WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_CODE(macro) \ - macro(writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCode, initializeWritableStreamDefaultWriter, ASCIILiteral(), s_writableStreamDefaultWriterInitializeWritableStreamDefaultWriterCodeLength) \ - macro(writableStreamDefaultWriterClosedCode, closed, "get closed"_s, s_writableStreamDefaultWriterClosedCodeLength) \ - macro(writableStreamDefaultWriterDesiredSizeCode, desiredSize, "get desiredSize"_s, s_writableStreamDefaultWriterDesiredSizeCodeLength) \ - macro(writableStreamDefaultWriterReadyCode, ready, "get ready"_s, s_writableStreamDefaultWriterReadyCodeLength) \ - macro(writableStreamDefaultWriterAbortCode, abort, ASCIILiteral(), s_writableStreamDefaultWriterAbortCodeLength) \ - macro(writableStreamDefaultWriterCloseCode, close, ASCIILiteral(), s_writableStreamDefaultWriterCloseCodeLength) \ - macro(writableStreamDefaultWriterReleaseLockCode, releaseLock, ASCIILiteral(), s_writableStreamDefaultWriterReleaseLockCodeLength) \ - macro(writableStreamDefaultWriterWriteCode, write, ASCIILiteral(), s_writableStreamDefaultWriterWriteCodeLength) \ - -#define WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeWritableStreamDefaultWriter) \ - macro(closed) \ - macro(desiredSize) \ - macro(ready) \ - macro(abort) \ - macro(close) \ - macro(releaseLock) \ - macro(write) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class WritableStreamDefaultWriterBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit WritableStreamDefaultWriterBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* WritableStreamDefaultWriterBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void WritableStreamDefaultWriterBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTWRITER_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ReadableStream.ts */ -// initializeReadableStream -#define WEBCORE_BUILTIN_READABLESTREAM_INITIALIZEREADABLESTREAM 1 -extern const char* const s_readableStreamInitializeReadableStreamCode; -extern const int s_readableStreamInitializeReadableStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamInitializeReadableStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamInitializeReadableStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamInitializeReadableStreamCodeImplementationVisibility; - -// readableStreamToArray -#define WEBCORE_BUILTIN_READABLESTREAM_READABLESTREAMTOARRAY 1 -extern const char* const s_readableStreamReadableStreamToArrayCode; -extern const int s_readableStreamReadableStreamToArrayCodeLength; -extern const JSC::ConstructAbility s_readableStreamReadableStreamToArrayCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamReadableStreamToArrayCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamReadableStreamToArrayCodeImplementationVisibility; - -// readableStreamToText -#define WEBCORE_BUILTIN_READABLESTREAM_READABLESTREAMTOTEXT 1 -extern const char* const s_readableStreamReadableStreamToTextCode; -extern const int s_readableStreamReadableStreamToTextCodeLength; -extern const JSC::ConstructAbility s_readableStreamReadableStreamToTextCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamReadableStreamToTextCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamReadableStreamToTextCodeImplementationVisibility; - -// readableStreamToArrayBuffer -#define WEBCORE_BUILTIN_READABLESTREAM_READABLESTREAMTOARRAYBUFFER 1 -extern const char* const s_readableStreamReadableStreamToArrayBufferCode; -extern const int s_readableStreamReadableStreamToArrayBufferCodeLength; -extern const JSC::ConstructAbility s_readableStreamReadableStreamToArrayBufferCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamReadableStreamToArrayBufferCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamReadableStreamToArrayBufferCodeImplementationVisibility; - -// readableStreamToJSON -#define WEBCORE_BUILTIN_READABLESTREAM_READABLESTREAMTOJSON 1 -extern const char* const s_readableStreamReadableStreamToJSONCode; -extern const int s_readableStreamReadableStreamToJSONCodeLength; -extern const JSC::ConstructAbility s_readableStreamReadableStreamToJSONCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamReadableStreamToJSONCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamReadableStreamToJSONCodeImplementationVisibility; - -// readableStreamToBlob -#define WEBCORE_BUILTIN_READABLESTREAM_READABLESTREAMTOBLOB 1 -extern const char* const s_readableStreamReadableStreamToBlobCode; -extern const int s_readableStreamReadableStreamToBlobCodeLength; -extern const JSC::ConstructAbility s_readableStreamReadableStreamToBlobCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamReadableStreamToBlobCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamReadableStreamToBlobCodeImplementationVisibility; - -// consumeReadableStream -#define WEBCORE_BUILTIN_READABLESTREAM_CONSUMEREADABLESTREAM 1 -extern const char* const s_readableStreamConsumeReadableStreamCode; -extern const int s_readableStreamConsumeReadableStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamConsumeReadableStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamConsumeReadableStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamConsumeReadableStreamCodeImplementationVisibility; - -// createEmptyReadableStream -#define WEBCORE_BUILTIN_READABLESTREAM_CREATEEMPTYREADABLESTREAM 1 -extern const char* const s_readableStreamCreateEmptyReadableStreamCode; -extern const int s_readableStreamCreateEmptyReadableStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamCreateEmptyReadableStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamCreateEmptyReadableStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamCreateEmptyReadableStreamCodeImplementationVisibility; - -// createNativeReadableStream -#define WEBCORE_BUILTIN_READABLESTREAM_CREATENATIVEREADABLESTREAM 1 -extern const char* const s_readableStreamCreateNativeReadableStreamCode; -extern const int s_readableStreamCreateNativeReadableStreamCodeLength; -extern const JSC::ConstructAbility s_readableStreamCreateNativeReadableStreamCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamCreateNativeReadableStreamCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamCreateNativeReadableStreamCodeImplementationVisibility; - -// cancel -#define WEBCORE_BUILTIN_READABLESTREAM_CANCEL 1 -extern const char* const s_readableStreamCancelCode; -extern const int s_readableStreamCancelCodeLength; -extern const JSC::ConstructAbility s_readableStreamCancelCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamCancelCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamCancelCodeImplementationVisibility; - -// getReader -#define WEBCORE_BUILTIN_READABLESTREAM_GETREADER 1 -extern const char* const s_readableStreamGetReaderCode; -extern const int s_readableStreamGetReaderCodeLength; -extern const JSC::ConstructAbility s_readableStreamGetReaderCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamGetReaderCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamGetReaderCodeImplementationVisibility; - -// pipeThrough -#define WEBCORE_BUILTIN_READABLESTREAM_PIPETHROUGH 1 -extern const char* const s_readableStreamPipeThroughCode; -extern const int s_readableStreamPipeThroughCodeLength; -extern const JSC::ConstructAbility s_readableStreamPipeThroughCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamPipeThroughCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamPipeThroughCodeImplementationVisibility; - -// pipeTo -#define WEBCORE_BUILTIN_READABLESTREAM_PIPETO 1 -extern const char* const s_readableStreamPipeToCode; -extern const int s_readableStreamPipeToCodeLength; -extern const JSC::ConstructAbility s_readableStreamPipeToCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamPipeToCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamPipeToCodeImplementationVisibility; - -// tee -#define WEBCORE_BUILTIN_READABLESTREAM_TEE 1 -extern const char* const s_readableStreamTeeCode; -extern const int s_readableStreamTeeCodeLength; -extern const JSC::ConstructAbility s_readableStreamTeeCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamTeeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamTeeCodeImplementationVisibility; - -// locked -#define WEBCORE_BUILTIN_READABLESTREAM_LOCKED 1 -extern const char* const s_readableStreamLockedCode; -extern const int s_readableStreamLockedCodeLength; -extern const JSC::ConstructAbility s_readableStreamLockedCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamLockedCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamLockedCodeImplementationVisibility; - -// values -#define WEBCORE_BUILTIN_READABLESTREAM_VALUES 1 -extern const char* const s_readableStreamValuesCode; -extern const int s_readableStreamValuesCodeLength; -extern const JSC::ConstructAbility s_readableStreamValuesCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamValuesCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamValuesCodeImplementationVisibility; - -// lazyAsyncIterator -#define WEBCORE_BUILTIN_READABLESTREAM_LAZYASYNCITERATOR 1 -extern const char* const s_readableStreamLazyAsyncIteratorCode; -extern const int s_readableStreamLazyAsyncIteratorCodeLength; -extern const JSC::ConstructAbility s_readableStreamLazyAsyncIteratorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamLazyAsyncIteratorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamLazyAsyncIteratorCodeImplementationVisibility; - -#define WEBCORE_FOREACH_READABLESTREAM_BUILTIN_DATA(macro) \ - macro(initializeReadableStream, readableStreamInitializeReadableStream, 2) \ - macro(readableStreamToArray, readableStreamReadableStreamToArray, 1) \ - macro(readableStreamToText, readableStreamReadableStreamToText, 1) \ - macro(readableStreamToArrayBuffer, readableStreamReadableStreamToArrayBuffer, 1) \ - macro(readableStreamToJSON, readableStreamReadableStreamToJSON, 1) \ - macro(readableStreamToBlob, readableStreamReadableStreamToBlob, 1) \ - macro(consumeReadableStream, readableStreamConsumeReadableStream, 3) \ - macro(createEmptyReadableStream, readableStreamCreateEmptyReadableStream, 0) \ - macro(createNativeReadableStream, readableStreamCreateNativeReadableStream, 3) \ - macro(cancel, readableStreamCancel, 1) \ - macro(getReader, readableStreamGetReader, 1) \ - macro(pipeThrough, readableStreamPipeThrough, 2) \ - macro(pipeTo, readableStreamPipeTo, 1) \ - macro(tee, readableStreamTee, 0) \ - macro(locked, readableStreamLocked, 0) \ - macro(values, readableStreamValues, 1) \ - macro(lazyAsyncIterator, readableStreamLazyAsyncIterator, 0) \ - -#define WEBCORE_FOREACH_READABLESTREAM_BUILTIN_CODE(macro) \ - macro(readableStreamInitializeReadableStreamCode, initializeReadableStream, ASCIILiteral(), s_readableStreamInitializeReadableStreamCodeLength) \ - macro(readableStreamReadableStreamToArrayCode, readableStreamToArray, ASCIILiteral(), s_readableStreamReadableStreamToArrayCodeLength) \ - macro(readableStreamReadableStreamToTextCode, readableStreamToText, ASCIILiteral(), s_readableStreamReadableStreamToTextCodeLength) \ - macro(readableStreamReadableStreamToArrayBufferCode, readableStreamToArrayBuffer, ASCIILiteral(), s_readableStreamReadableStreamToArrayBufferCodeLength) \ - macro(readableStreamReadableStreamToJSONCode, readableStreamToJSON, ASCIILiteral(), s_readableStreamReadableStreamToJSONCodeLength) \ - macro(readableStreamReadableStreamToBlobCode, readableStreamToBlob, ASCIILiteral(), s_readableStreamReadableStreamToBlobCodeLength) \ - macro(readableStreamConsumeReadableStreamCode, consumeReadableStream, ASCIILiteral(), s_readableStreamConsumeReadableStreamCodeLength) \ - macro(readableStreamCreateEmptyReadableStreamCode, createEmptyReadableStream, ASCIILiteral(), s_readableStreamCreateEmptyReadableStreamCodeLength) \ - macro(readableStreamCreateNativeReadableStreamCode, createNativeReadableStream, ASCIILiteral(), s_readableStreamCreateNativeReadableStreamCodeLength) \ - macro(readableStreamCancelCode, cancel, ASCIILiteral(), s_readableStreamCancelCodeLength) \ - macro(readableStreamGetReaderCode, getReader, ASCIILiteral(), s_readableStreamGetReaderCodeLength) \ - macro(readableStreamPipeThroughCode, pipeThrough, ASCIILiteral(), s_readableStreamPipeThroughCodeLength) \ - macro(readableStreamPipeToCode, pipeTo, ASCIILiteral(), s_readableStreamPipeToCodeLength) \ - macro(readableStreamTeeCode, tee, ASCIILiteral(), s_readableStreamTeeCodeLength) \ - macro(readableStreamLockedCode, locked, "get locked"_s, s_readableStreamLockedCodeLength) \ - macro(readableStreamValuesCode, values, ASCIILiteral(), s_readableStreamValuesCodeLength) \ - macro(readableStreamLazyAsyncIteratorCode, lazyAsyncIterator, ASCIILiteral(), s_readableStreamLazyAsyncIteratorCodeLength) \ - -#define WEBCORE_FOREACH_READABLESTREAM_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeReadableStream) \ - macro(readableStreamToArray) \ - macro(readableStreamToText) \ - macro(readableStreamToArrayBuffer) \ - macro(readableStreamToJSON) \ - macro(readableStreamToBlob) \ - macro(consumeReadableStream) \ - macro(createEmptyReadableStream) \ - macro(createNativeReadableStream) \ - macro(cancel) \ - macro(getReader) \ - macro(pipeThrough) \ - macro(pipeTo) \ - macro(tee) \ - macro(locked) \ - macro(values) \ - macro(lazyAsyncIterator) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_READABLESTREAM_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ReadableStreamBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ReadableStreamBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_READABLESTREAM_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_READABLESTREAM_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_READABLESTREAM_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_READABLESTREAM_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_READABLESTREAM_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_READABLESTREAM_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ReadableStreamBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_READABLESTREAM_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ReadableStreamBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_READABLESTREAM_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ReadableStreamDefaultController.ts */ -// initializeReadableStreamDefaultController -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTCONTROLLER_INITIALIZEREADABLESTREAMDEFAULTCONTROLLER 1 -extern const char* const s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCode; -extern const int s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeImplementationVisibility; - -// enqueue -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTCONTROLLER_ENQUEUE 1 -extern const char* const s_readableStreamDefaultControllerEnqueueCode; -extern const int s_readableStreamDefaultControllerEnqueueCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultControllerEnqueueCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultControllerEnqueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultControllerEnqueueCodeImplementationVisibility; - -// error -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTCONTROLLER_ERROR 1 -extern const char* const s_readableStreamDefaultControllerErrorCode; -extern const int s_readableStreamDefaultControllerErrorCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultControllerErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultControllerErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultControllerErrorCodeImplementationVisibility; - -// close -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTCONTROLLER_CLOSE 1 -extern const char* const s_readableStreamDefaultControllerCloseCode; -extern const int s_readableStreamDefaultControllerCloseCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultControllerCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultControllerCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultControllerCloseCodeImplementationVisibility; - -// desiredSize -#define WEBCORE_BUILTIN_READABLESTREAMDEFAULTCONTROLLER_DESIREDSIZE 1 -extern const char* const s_readableStreamDefaultControllerDesiredSizeCode; -extern const int s_readableStreamDefaultControllerDesiredSizeCodeLength; -extern const JSC::ConstructAbility s_readableStreamDefaultControllerDesiredSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_readableStreamDefaultControllerDesiredSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableStreamDefaultControllerDesiredSizeCodeImplementationVisibility; - -#define WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_DATA(macro) \ - macro(initializeReadableStreamDefaultController, readableStreamDefaultControllerInitializeReadableStreamDefaultController, 4) \ - macro(enqueue, readableStreamDefaultControllerEnqueue, 1) \ - macro(error, readableStreamDefaultControllerError, 1) \ - macro(close, readableStreamDefaultControllerClose, 0) \ - macro(desiredSize, readableStreamDefaultControllerDesiredSize, 0) \ - -#define WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(macro) \ - macro(readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCode, initializeReadableStreamDefaultController, ASCIILiteral(), s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeLength) \ - macro(readableStreamDefaultControllerEnqueueCode, enqueue, ASCIILiteral(), s_readableStreamDefaultControllerEnqueueCodeLength) \ - macro(readableStreamDefaultControllerErrorCode, error, ASCIILiteral(), s_readableStreamDefaultControllerErrorCodeLength) \ - macro(readableStreamDefaultControllerCloseCode, close, ASCIILiteral(), s_readableStreamDefaultControllerCloseCodeLength) \ - macro(readableStreamDefaultControllerDesiredSizeCode, desiredSize, "get desiredSize"_s, s_readableStreamDefaultControllerDesiredSizeCodeLength) \ - -#define WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeReadableStreamDefaultController) \ - macro(enqueue) \ - macro(error) \ - macro(close) \ - macro(desiredSize) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ReadableStreamDefaultControllerBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ReadableStreamDefaultControllerBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ReadableStreamDefaultControllerBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ReadableStreamDefaultControllerBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_READABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -/* ReadableByteStreamInternals.ts */ -// privateInitializeReadableByteStreamController -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_PRIVATEINITIALIZEREADABLEBYTESTREAMCONTROLLER 1 -extern const char* const s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCode; -extern const int s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeImplementationVisibility; - -// readableStreamByteStreamControllerStart -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLESTREAMBYTESTREAMCONTROLLERSTART 1 -extern const char* const s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCode; -extern const int s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeImplementationVisibility; - -// privateInitializeReadableStreamBYOBRequest -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_PRIVATEINITIALIZEREADABLESTREAMBYOBREQUEST 1 -extern const char* const s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCode; -extern const int s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeImplementationVisibility; - -// isReadableByteStreamController -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_ISREADABLEBYTESTREAMCONTROLLER 1 -extern const char* const s_readableByteStreamInternalsIsReadableByteStreamControllerCode; -extern const int s_readableByteStreamInternalsIsReadableByteStreamControllerCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsIsReadableByteStreamControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsIsReadableByteStreamControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsIsReadableByteStreamControllerCodeImplementationVisibility; - -// isReadableStreamBYOBRequest -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_ISREADABLESTREAMBYOBREQUEST 1 -extern const char* const s_readableByteStreamInternalsIsReadableStreamBYOBRequestCode; -extern const int s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeImplementationVisibility; - -// isReadableStreamBYOBReader -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_ISREADABLESTREAMBYOBREADER 1 -extern const char* const s_readableByteStreamInternalsIsReadableStreamBYOBReaderCode; -extern const int s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeImplementationVisibility; - -// readableByteStreamControllerCancel -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERCANCEL 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerCancelCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeImplementationVisibility; - -// readableByteStreamControllerError -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERERROR 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerErrorCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeImplementationVisibility; - -// readableByteStreamControllerClose -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERCLOSE 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerCloseCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeImplementationVisibility; - -// readableByteStreamControllerClearPendingPullIntos -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERCLEARPENDINGPULLINTOS 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeImplementationVisibility; - -// readableByteStreamControllerGetDesiredSize -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERGETDESIREDSIZE 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeImplementationVisibility; - -// readableStreamHasBYOBReader -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLESTREAMHASBYOBREADER 1 -extern const char* const s_readableByteStreamInternalsReadableStreamHasBYOBReaderCode; -extern const int s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeImplementationVisibility; - -// readableStreamHasDefaultReader -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLESTREAMHASDEFAULTREADER 1 -extern const char* const s_readableByteStreamInternalsReadableStreamHasDefaultReaderCode; -extern const int s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeImplementationVisibility; - -// readableByteStreamControllerHandleQueueDrain -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERHANDLEQUEUEDRAIN 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeImplementationVisibility; - -// readableByteStreamControllerPull -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERPULL 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerPullCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerPullCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerPullCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerPullCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerPullCodeImplementationVisibility; - -// readableByteStreamControllerShouldCallPull -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERSHOULDCALLPULL 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeImplementationVisibility; - -// readableByteStreamControllerCallPullIfNeeded -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERCALLPULLIFNEEDED 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeImplementationVisibility; - -// transferBufferToCurrentRealm -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_TRANSFERBUFFERTOCURRENTREALM 1 -extern const char* const s_readableByteStreamInternalsTransferBufferToCurrentRealmCode; -extern const int s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeImplementationVisibility; - -// readableStreamReaderKind -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLESTREAMREADERKIND 1 -extern const char* const s_readableByteStreamInternalsReadableStreamReaderKindCode; -extern const int s_readableByteStreamInternalsReadableStreamReaderKindCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamReaderKindCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamReaderKindCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamReaderKindCodeImplementationVisibility; - -// readableByteStreamControllerEnqueue -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERENQUEUE 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeImplementationVisibility; - -// readableByteStreamControllerEnqueueChunk -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERENQUEUECHUNK 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeImplementationVisibility; - -// readableByteStreamControllerRespondWithNewView -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERRESPONDWITHNEWVIEW 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeImplementationVisibility; - -// readableByteStreamControllerRespond -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERRESPOND 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeImplementationVisibility; - -// readableByteStreamControllerRespondInternal -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERRESPONDINTERNAL 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeImplementationVisibility; - -// readableByteStreamControllerRespondInReadableState -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERRESPONDINREADABLESTATE 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeImplementationVisibility; - -// readableByteStreamControllerRespondInClosedState -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERRESPONDINCLOSEDSTATE 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeImplementationVisibility; - -// readableByteStreamControllerProcessPullDescriptors -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERPROCESSPULLDESCRIPTORS 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeImplementationVisibility; - -// readableByteStreamControllerFillDescriptorFromQueue -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERFILLDESCRIPTORFROMQUEUE 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeImplementationVisibility; - -// readableByteStreamControllerShiftPendingDescriptor -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERSHIFTPENDINGDESCRIPTOR 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeImplementationVisibility; - -// readableByteStreamControllerInvalidateBYOBRequest -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERINVALIDATEBYOBREQUEST 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeImplementationVisibility; - -// readableByteStreamControllerCommitDescriptor -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERCOMMITDESCRIPTOR 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeImplementationVisibility; - -// readableByteStreamControllerConvertDescriptor -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERCONVERTDESCRIPTOR 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeImplementationVisibility; - -// readableStreamFulfillReadIntoRequest -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLESTREAMFULFILLREADINTOREQUEST 1 -extern const char* const s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCode; -extern const int s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeImplementationVisibility; - -// readableStreamBYOBReaderRead -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLESTREAMBYOBREADERREAD 1 -extern const char* const s_readableByteStreamInternalsReadableStreamBYOBReaderReadCode; -extern const int s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeImplementationVisibility; - -// readableByteStreamControllerPullInto -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLEBYTESTREAMCONTROLLERPULLINTO 1 -extern const char* const s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCode; -extern const int s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeImplementationVisibility; - -// readableStreamAddReadIntoRequest -#define WEBCORE_BUILTIN_READABLEBYTESTREAMINTERNALS_READABLESTREAMADDREADINTOREQUEST 1 -extern const char* const s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCode; -extern const int s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeLength; -extern const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeConstructAbility; -extern const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeConstructorKind; -extern const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeImplementationVisibility; - -#define WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_DATA(macro) \ - macro(privateInitializeReadableByteStreamController, readableByteStreamInternalsPrivateInitializeReadableByteStreamController, 3) \ - macro(readableStreamByteStreamControllerStart, readableByteStreamInternalsReadableStreamByteStreamControllerStart, 1) \ - macro(privateInitializeReadableStreamBYOBRequest, readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequest, 2) \ - macro(isReadableByteStreamController, readableByteStreamInternalsIsReadableByteStreamController, 1) \ - macro(isReadableStreamBYOBRequest, readableByteStreamInternalsIsReadableStreamBYOBRequest, 1) \ - macro(isReadableStreamBYOBReader, readableByteStreamInternalsIsReadableStreamBYOBReader, 1) \ - macro(readableByteStreamControllerCancel, readableByteStreamInternalsReadableByteStreamControllerCancel, 2) \ - macro(readableByteStreamControllerError, readableByteStreamInternalsReadableByteStreamControllerError, 2) \ - macro(readableByteStreamControllerClose, readableByteStreamInternalsReadableByteStreamControllerClose, 1) \ - macro(readableByteStreamControllerClearPendingPullIntos, readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntos, 1) \ - macro(readableByteStreamControllerGetDesiredSize, readableByteStreamInternalsReadableByteStreamControllerGetDesiredSize, 1) \ - macro(readableStreamHasBYOBReader, readableByteStreamInternalsReadableStreamHasBYOBReader, 1) \ - macro(readableStreamHasDefaultReader, readableByteStreamInternalsReadableStreamHasDefaultReader, 1) \ - macro(readableByteStreamControllerHandleQueueDrain, readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrain, 1) \ - macro(readableByteStreamControllerPull, readableByteStreamInternalsReadableByteStreamControllerPull, 1) \ - macro(readableByteStreamControllerShouldCallPull, readableByteStreamInternalsReadableByteStreamControllerShouldCallPull, 1) \ - macro(readableByteStreamControllerCallPullIfNeeded, readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeeded, 1) \ - macro(transferBufferToCurrentRealm, readableByteStreamInternalsTransferBufferToCurrentRealm, 1) \ - macro(readableStreamReaderKind, readableByteStreamInternalsReadableStreamReaderKind, 1) \ - macro(readableByteStreamControllerEnqueue, readableByteStreamInternalsReadableByteStreamControllerEnqueue, 2) \ - macro(readableByteStreamControllerEnqueueChunk, readableByteStreamInternalsReadableByteStreamControllerEnqueueChunk, 4) \ - macro(readableByteStreamControllerRespondWithNewView, readableByteStreamInternalsReadableByteStreamControllerRespondWithNewView, 2) \ - macro(readableByteStreamControllerRespond, readableByteStreamInternalsReadableByteStreamControllerRespond, 2) \ - macro(readableByteStreamControllerRespondInternal, readableByteStreamInternalsReadableByteStreamControllerRespondInternal, 2) \ - macro(readableByteStreamControllerRespondInReadableState, readableByteStreamInternalsReadableByteStreamControllerRespondInReadableState, 3) \ - macro(readableByteStreamControllerRespondInClosedState, readableByteStreamInternalsReadableByteStreamControllerRespondInClosedState, 2) \ - macro(readableByteStreamControllerProcessPullDescriptors, readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptors, 1) \ - macro(readableByteStreamControllerFillDescriptorFromQueue, readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueue, 2) \ - macro(readableByteStreamControllerShiftPendingDescriptor, readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptor, 1) \ - macro(readableByteStreamControllerInvalidateBYOBRequest, readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequest, 1) \ - macro(readableByteStreamControllerCommitDescriptor, readableByteStreamInternalsReadableByteStreamControllerCommitDescriptor, 2) \ - macro(readableByteStreamControllerConvertDescriptor, readableByteStreamInternalsReadableByteStreamControllerConvertDescriptor, 1) \ - macro(readableStreamFulfillReadIntoRequest, readableByteStreamInternalsReadableStreamFulfillReadIntoRequest, 3) \ - macro(readableStreamBYOBReaderRead, readableByteStreamInternalsReadableStreamBYOBReaderRead, 2) \ - macro(readableByteStreamControllerPullInto, readableByteStreamInternalsReadableByteStreamControllerPullInto, 2) \ - macro(readableStreamAddReadIntoRequest, readableByteStreamInternalsReadableStreamAddReadIntoRequest, 1) \ - -#define WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_CODE(macro) \ - macro(readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCode, privateInitializeReadableByteStreamController, ASCIILiteral(), s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeLength) \ - macro(readableByteStreamInternalsReadableStreamByteStreamControllerStartCode, readableStreamByteStreamControllerStart, ASCIILiteral(), s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeLength) \ - macro(readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCode, privateInitializeReadableStreamBYOBRequest, ASCIILiteral(), s_readableByteStreamInternalsPrivateInitializeReadableStreamBYOBRequestCodeLength) \ - macro(readableByteStreamInternalsIsReadableByteStreamControllerCode, isReadableByteStreamController, ASCIILiteral(), s_readableByteStreamInternalsIsReadableByteStreamControllerCodeLength) \ - macro(readableByteStreamInternalsIsReadableStreamBYOBRequestCode, isReadableStreamBYOBRequest, ASCIILiteral(), s_readableByteStreamInternalsIsReadableStreamBYOBRequestCodeLength) \ - macro(readableByteStreamInternalsIsReadableStreamBYOBReaderCode, isReadableStreamBYOBReader, ASCIILiteral(), s_readableByteStreamInternalsIsReadableStreamBYOBReaderCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerCancelCode, readableByteStreamControllerCancel, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerErrorCode, readableByteStreamControllerError, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerCloseCode, readableByteStreamControllerClose, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCode, readableByteStreamControllerClearPendingPullIntos, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCode, readableByteStreamControllerGetDesiredSize, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeLength) \ - macro(readableByteStreamInternalsReadableStreamHasBYOBReaderCode, readableStreamHasBYOBReader, ASCIILiteral(), s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeLength) \ - macro(readableByteStreamInternalsReadableStreamHasDefaultReaderCode, readableStreamHasDefaultReader, ASCIILiteral(), s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCode, readableByteStreamControllerHandleQueueDrain, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerPullCode, readableByteStreamControllerPull, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerPullCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCode, readableByteStreamControllerShouldCallPull, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCode, readableByteStreamControllerCallPullIfNeeded, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeLength) \ - macro(readableByteStreamInternalsTransferBufferToCurrentRealmCode, transferBufferToCurrentRealm, ASCIILiteral(), s_readableByteStreamInternalsTransferBufferToCurrentRealmCodeLength) \ - macro(readableByteStreamInternalsReadableStreamReaderKindCode, readableStreamReaderKind, ASCIILiteral(), s_readableByteStreamInternalsReadableStreamReaderKindCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerEnqueueCode, readableByteStreamControllerEnqueue, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCode, readableByteStreamControllerEnqueueChunk, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCode, readableByteStreamControllerRespondWithNewView, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerRespondCode, readableByteStreamControllerRespond, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerRespondInternalCode, readableByteStreamControllerRespondInternal, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCode, readableByteStreamControllerRespondInReadableState, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCode, readableByteStreamControllerRespondInClosedState, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCode, readableByteStreamControllerProcessPullDescriptors, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCode, readableByteStreamControllerFillDescriptorFromQueue, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCode, readableByteStreamControllerShiftPendingDescriptor, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCode, readableByteStreamControllerInvalidateBYOBRequest, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerInvalidateBYOBRequestCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCode, readableByteStreamControllerCommitDescriptor, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCode, readableByteStreamControllerConvertDescriptor, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeLength) \ - macro(readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCode, readableStreamFulfillReadIntoRequest, ASCIILiteral(), s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeLength) \ - macro(readableByteStreamInternalsReadableStreamBYOBReaderReadCode, readableStreamBYOBReaderRead, ASCIILiteral(), s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeLength) \ - macro(readableByteStreamInternalsReadableByteStreamControllerPullIntoCode, readableByteStreamControllerPullInto, ASCIILiteral(), s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeLength) \ - macro(readableByteStreamInternalsReadableStreamAddReadIntoRequestCode, readableStreamAddReadIntoRequest, ASCIILiteral(), s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeLength) \ - -#define WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(macro) \ - macro(privateInitializeReadableByteStreamController) \ - macro(readableStreamByteStreamControllerStart) \ - macro(privateInitializeReadableStreamBYOBRequest) \ - macro(isReadableByteStreamController) \ - macro(isReadableStreamBYOBRequest) \ - macro(isReadableStreamBYOBReader) \ - macro(readableByteStreamControllerCancel) \ - macro(readableByteStreamControllerError) \ - macro(readableByteStreamControllerClose) \ - macro(readableByteStreamControllerClearPendingPullIntos) \ - macro(readableByteStreamControllerGetDesiredSize) \ - macro(readableStreamHasBYOBReader) \ - macro(readableStreamHasDefaultReader) \ - macro(readableByteStreamControllerHandleQueueDrain) \ - macro(readableByteStreamControllerPull) \ - macro(readableByteStreamControllerShouldCallPull) \ - macro(readableByteStreamControllerCallPullIfNeeded) \ - macro(transferBufferToCurrentRealm) \ - macro(readableStreamReaderKind) \ - macro(readableByteStreamControllerEnqueue) \ - macro(readableByteStreamControllerEnqueueChunk) \ - macro(readableByteStreamControllerRespondWithNewView) \ - macro(readableByteStreamControllerRespond) \ - macro(readableByteStreamControllerRespondInternal) \ - macro(readableByteStreamControllerRespondInReadableState) \ - macro(readableByteStreamControllerRespondInClosedState) \ - macro(readableByteStreamControllerProcessPullDescriptors) \ - macro(readableByteStreamControllerFillDescriptorFromQueue) \ - macro(readableByteStreamControllerShiftPendingDescriptor) \ - macro(readableByteStreamControllerInvalidateBYOBRequest) \ - macro(readableByteStreamControllerCommitDescriptor) \ - macro(readableByteStreamControllerConvertDescriptor) \ - macro(readableStreamFulfillReadIntoRequest) \ - macro(readableStreamBYOBReaderRead) \ - macro(readableByteStreamControllerPullInto) \ - macro(readableStreamAddReadIntoRequest) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ReadableByteStreamInternalsBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ReadableByteStreamInternalsBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* ReadableByteStreamInternalsBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ReadableByteStreamInternalsBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -class ReadableByteStreamInternalsBuiltinFunctions { -public: - explicit ReadableByteStreamInternalsBuiltinFunctions(JSC::VM& vm) : m_vm(vm) { } - - void init(JSC::JSGlobalObject&); - template<typename Visitor> void visit(Visitor&); - -public: - JSC::VM& m_vm; - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(functionName) \ - JSC::WriteBarrier<JSC::JSFunction> m_##functionName##Function; - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS -}; - -inline void ReadableByteStreamInternalsBuiltinFunctions::init(JSC::JSGlobalObject& globalObject) -{ -#define EXPORT_FUNCTION(codeName, functionName, overriddenName, length) \ - m_##functionName##Function.set(m_vm, &globalObject, JSC::JSFunction::create(m_vm, codeName##Generator(m_vm), &globalObject)); - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_CODE(EXPORT_FUNCTION) -#undef EXPORT_FUNCTION -} - -template<typename Visitor> -inline void ReadableByteStreamInternalsBuiltinFunctions::visit(Visitor& visitor) -{ -#define VISIT_FUNCTION(name) visitor.append(m_##name##Function); - WEBCORE_FOREACH_READABLEBYTESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(VISIT_FUNCTION) -#undef VISIT_FUNCTION -} - -template void ReadableByteStreamInternalsBuiltinFunctions::visit(JSC::AbstractSlotVisitor&); -template void ReadableByteStreamInternalsBuiltinFunctions::visit(JSC::SlotVisitor&); - /* WritableStreamDefaultController.ts */ -// initializeWritableStreamDefaultController -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTCONTROLLER_INITIALIZEWRITABLESTREAMDEFAULTCONTROLLER 1 -extern const char* const s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCode; -extern const int s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeImplementationVisibility; - -// error -#define WEBCORE_BUILTIN_WRITABLESTREAMDEFAULTCONTROLLER_ERROR 1 -extern const char* const s_writableStreamDefaultControllerErrorCode; -extern const int s_writableStreamDefaultControllerErrorCodeLength; -extern const JSC::ConstructAbility s_writableStreamDefaultControllerErrorCodeConstructAbility; -extern const JSC::ConstructorKind s_writableStreamDefaultControllerErrorCodeConstructorKind; -extern const JSC::ImplementationVisibility s_writableStreamDefaultControllerErrorCodeImplementationVisibility; - -#define WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_DATA(macro) \ - macro(initializeWritableStreamDefaultController, writableStreamDefaultControllerInitializeWritableStreamDefaultController, 0) \ - macro(error, writableStreamDefaultControllerError, 1) \ - -#define WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(macro) \ - macro(writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCode, initializeWritableStreamDefaultController, ASCIILiteral(), s_writableStreamDefaultControllerInitializeWritableStreamDefaultControllerCodeLength) \ - macro(writableStreamDefaultControllerErrorCode, error, ASCIILiteral(), s_writableStreamDefaultControllerErrorCodeLength) \ - -#define WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(macro) \ - macro(initializeWritableStreamDefaultController) \ - macro(error) \ - -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class WritableStreamDefaultControllerBuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit WritableStreamDefaultControllerBuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ - JSC::UnlinkedFunctionExecutable* name##Executable(); \ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \ - JSC::SourceCode m_##name##Source;\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \ -inline JSC::UnlinkedFunctionExecutable* WritableStreamDefaultControllerBuiltinsWrapper::name##Executable() \ -{\ - if (!m_##name##Executable) {\ - JSC::Identifier executableName = functionName##PublicName();\ - if (overriddenName)\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\ - }\ - return m_##name##Executable.get();\ -} -WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void WritableStreamDefaultControllerBuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_WRITABLESTREAMDEFAULTCONTROLLER_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -class JSBuiltinFunctions { -public: - explicit JSBuiltinFunctions(JSC::VM& vm) - : m_vm(vm) - , m_bundlerPluginBuiltins(m_vm) - , m_byteLengthQueuingStrategyBuiltins(m_vm) - , m_writableStreamInternalsBuiltins(m_vm) - , m_transformStreamInternalsBuiltins(m_vm) - , m_processObjectInternalsBuiltins(m_vm) - , m_transformStreamBuiltins(m_vm) - , m_jsBufferPrototypeBuiltins(m_vm) - , m_readableByteStreamControllerBuiltins(m_vm) - , m_consoleObjectBuiltins(m_vm) - , m_readableStreamInternalsBuiltins(m_vm) - , m_transformStreamDefaultControllerBuiltins(m_vm) - , m_readableStreamBYOBReaderBuiltins(m_vm) - , m_jsBufferConstructorBuiltins(m_vm) - , m_readableStreamDefaultReaderBuiltins(m_vm) - , m_streamInternalsBuiltins(m_vm) - , m_importMetaObjectBuiltins(m_vm) - , m_countQueuingStrategyBuiltins(m_vm) - , m_readableStreamBYOBRequestBuiltins(m_vm) - , m_writableStreamDefaultWriterBuiltins(m_vm) - , m_readableStreamBuiltins(m_vm) - , m_readableStreamDefaultControllerBuiltins(m_vm) - , m_readableByteStreamInternalsBuiltins(m_vm) - , m_writableStreamDefaultControllerBuiltins(m_vm) - - { - m_writableStreamInternalsBuiltins.exportNames(); - m_transformStreamInternalsBuiltins.exportNames(); - m_readableStreamInternalsBuiltins.exportNames(); - m_streamInternalsBuiltins.exportNames(); - m_readableByteStreamInternalsBuiltins.exportNames(); - } - BundlerPluginBuiltinsWrapper& bundlerPluginBuiltins() { return m_bundlerPluginBuiltins; } - ByteLengthQueuingStrategyBuiltinsWrapper& byteLengthQueuingStrategyBuiltins() { return m_byteLengthQueuingStrategyBuiltins; } - WritableStreamInternalsBuiltinsWrapper& writableStreamInternalsBuiltins() { return m_writableStreamInternalsBuiltins; } - TransformStreamInternalsBuiltinsWrapper& transformStreamInternalsBuiltins() { return m_transformStreamInternalsBuiltins; } - ProcessObjectInternalsBuiltinsWrapper& processObjectInternalsBuiltins() { return m_processObjectInternalsBuiltins; } - TransformStreamBuiltinsWrapper& transformStreamBuiltins() { return m_transformStreamBuiltins; } - JSBufferPrototypeBuiltinsWrapper& jsBufferPrototypeBuiltins() { return m_jsBufferPrototypeBuiltins; } - ReadableByteStreamControllerBuiltinsWrapper& readableByteStreamControllerBuiltins() { return m_readableByteStreamControllerBuiltins; } - ConsoleObjectBuiltinsWrapper& consoleObjectBuiltins() { return m_consoleObjectBuiltins; } - ReadableStreamInternalsBuiltinsWrapper& readableStreamInternalsBuiltins() { return m_readableStreamInternalsBuiltins; } - TransformStreamDefaultControllerBuiltinsWrapper& transformStreamDefaultControllerBuiltins() { return m_transformStreamDefaultControllerBuiltins; } - ReadableStreamBYOBReaderBuiltinsWrapper& readableStreamBYOBReaderBuiltins() { return m_readableStreamBYOBReaderBuiltins; } - JSBufferConstructorBuiltinsWrapper& jsBufferConstructorBuiltins() { return m_jsBufferConstructorBuiltins; } - ReadableStreamDefaultReaderBuiltinsWrapper& readableStreamDefaultReaderBuiltins() { return m_readableStreamDefaultReaderBuiltins; } - StreamInternalsBuiltinsWrapper& streamInternalsBuiltins() { return m_streamInternalsBuiltins; } - ImportMetaObjectBuiltinsWrapper& importMetaObjectBuiltins() { return m_importMetaObjectBuiltins; } - CountQueuingStrategyBuiltinsWrapper& countQueuingStrategyBuiltins() { return m_countQueuingStrategyBuiltins; } - ReadableStreamBYOBRequestBuiltinsWrapper& readableStreamBYOBRequestBuiltins() { return m_readableStreamBYOBRequestBuiltins; } - WritableStreamDefaultWriterBuiltinsWrapper& writableStreamDefaultWriterBuiltins() { return m_writableStreamDefaultWriterBuiltins; } - ReadableStreamBuiltinsWrapper& readableStreamBuiltins() { return m_readableStreamBuiltins; } - ReadableStreamDefaultControllerBuiltinsWrapper& readableStreamDefaultControllerBuiltins() { return m_readableStreamDefaultControllerBuiltins; } - ReadableByteStreamInternalsBuiltinsWrapper& readableByteStreamInternalsBuiltins() { return m_readableByteStreamInternalsBuiltins; } - WritableStreamDefaultControllerBuiltinsWrapper& writableStreamDefaultControllerBuiltins() { return m_writableStreamDefaultControllerBuiltins; } - -private: - JSC::VM& m_vm; - BundlerPluginBuiltinsWrapper m_bundlerPluginBuiltins; - ByteLengthQueuingStrategyBuiltinsWrapper m_byteLengthQueuingStrategyBuiltins; - WritableStreamInternalsBuiltinsWrapper m_writableStreamInternalsBuiltins; - TransformStreamInternalsBuiltinsWrapper m_transformStreamInternalsBuiltins; - ProcessObjectInternalsBuiltinsWrapper m_processObjectInternalsBuiltins; - TransformStreamBuiltinsWrapper m_transformStreamBuiltins; - JSBufferPrototypeBuiltinsWrapper m_jsBufferPrototypeBuiltins; - ReadableByteStreamControllerBuiltinsWrapper m_readableByteStreamControllerBuiltins; - ConsoleObjectBuiltinsWrapper m_consoleObjectBuiltins; - ReadableStreamInternalsBuiltinsWrapper m_readableStreamInternalsBuiltins; - TransformStreamDefaultControllerBuiltinsWrapper m_transformStreamDefaultControllerBuiltins; - ReadableStreamBYOBReaderBuiltinsWrapper m_readableStreamBYOBReaderBuiltins; - JSBufferConstructorBuiltinsWrapper m_jsBufferConstructorBuiltins; - ReadableStreamDefaultReaderBuiltinsWrapper m_readableStreamDefaultReaderBuiltins; - StreamInternalsBuiltinsWrapper m_streamInternalsBuiltins; - ImportMetaObjectBuiltinsWrapper m_importMetaObjectBuiltins; - CountQueuingStrategyBuiltinsWrapper m_countQueuingStrategyBuiltins; - ReadableStreamBYOBRequestBuiltinsWrapper m_readableStreamBYOBRequestBuiltins; - WritableStreamDefaultWriterBuiltinsWrapper m_writableStreamDefaultWriterBuiltins; - ReadableStreamBuiltinsWrapper m_readableStreamBuiltins; - ReadableStreamDefaultControllerBuiltinsWrapper m_readableStreamDefaultControllerBuiltins; - ReadableByteStreamInternalsBuiltinsWrapper m_readableByteStreamInternalsBuiltins; - WritableStreamDefaultControllerBuiltinsWrapper m_writableStreamDefaultControllerBuiltins; -; -}; - -class JSBuiltinInternalFunctions { -public: - explicit JSBuiltinInternalFunctions(JSC::VM&); - - template<typename Visitor> void visit(Visitor&); - void initialize(Zig::GlobalObject&); - WritableStreamInternalsBuiltinFunctions& writableStreamInternals() { return m_writableStreamInternals; } - TransformStreamInternalsBuiltinFunctions& transformStreamInternals() { return m_transformStreamInternals; } - ReadableStreamInternalsBuiltinFunctions& readableStreamInternals() { return m_readableStreamInternals; } - StreamInternalsBuiltinFunctions& streamInternals() { return m_streamInternals; } - ReadableByteStreamInternalsBuiltinFunctions& readableByteStreamInternals() { return m_readableByteStreamInternals; } - -private: - JSC::VM& m_vm; - WritableStreamInternalsBuiltinFunctions m_writableStreamInternals; - TransformStreamInternalsBuiltinFunctions m_transformStreamInternals; - ReadableStreamInternalsBuiltinFunctions m_readableStreamInternals; - StreamInternalsBuiltinFunctions m_streamInternals; - ReadableByteStreamInternalsBuiltinFunctions m_readableByteStreamInternals; - -}; - -} // namespace WebCore diff --git a/src/bun.js/builtins/builtins.d.ts b/src/bun.js/builtins/builtins.d.ts deleted file mode 100644 index 7bd3e4fae..000000000 --- a/src/bun.js/builtins/builtins.d.ts +++ /dev/null @@ -1,533 +0,0 @@ -// Typedefs for JSC intrinsics. Instead of @, we use $ -type TODO = any; - -/** Place this directly above a function declaration (like a decorator) to make it a getter. */ -declare const $getter: never; -/** Assign to this directly above a function declaration (like a decorator) to override the function's display name. */ -declare var $overriddenName: string; -/** ??? */ -declare var $linkTimeConstant: never; -/** Assign to this directly above a function declaration (like a decorator) to set visibility */ -declare var $visibility: "Public" | "Private"; -/** ??? */ -declare var $nakedConstructor: never; -/** Assign to this directly above a function declaration (like a decorator) to set intrinsic */ -declare var $intrinsic: string; -declare var $constructor; -/** Place this directly above a function declaration (like a decorator) to NOT include "use strict" */ -declare var $sloppy; - -declare function $extractHighWaterMarkFromQueuingStrategyInit(obj: any): any; - -// JSC defines their intrinsics in a nice list here: -// https://github.com/WebKit/WebKit/blob/main/Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h -// -// And implemented here: (search for "emit_intrinsic_<name>", like "emit_intrinsic_arrayPush") -// https://github.com/WebKit/WebKit/blob/main/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp - -/** Assert a value is true */ -declare function $assert(index: any): void; -/** returns `arguments[index]` */ -declare function $argument<T = any>(index: number): any; -/** returns number of arguments */ -declare function $argumentCount(): number; -/** array.push(item) */ -declare function $arrayPush(array: T[], item: T): void; -/** gets a property on an object */ -declare function $getByIdDirect<T = any>(obj: any, key: string): T; -/** - * gets a private property on an object. translates to the `op_get_by_id_direct` bytecode. - * - * TODO: clarify what private means exactly. - */ -declare function $getByIdDirectPrivate<T = any>(obj: any, key: string): T; -/** - * gets a property on an object - */ -declare function $getByValWithThis(target: any, receiver: any, propertyKey: string): void; -/** gets the prototype of an object */ -declare function $getPrototypeOf(value: any): any; -/** gets an internal property on a promise - * - * You can pass - * - $promiseFieldFlags - get a number with flags - * - $promiseFieldReactionsOrResult - get the result (like Bun.peek) - */ -declare function $getPromiseInternalField<K extends PromiseFieldType, V>( - promise: Promise<V>, - key: K, -): PromiseFieldToValue<K, V>; -declare function $getGeneratorInternalField(): TODO; -declare function $getAsyncGeneratorInternalField(): TODO; -declare function $getAbstractModuleRecordInternalField(): TODO; -declare function $getArrayIteratorInternalField(): TODO; -declare function $getStringIteratorInternalField(): TODO; -declare function $getMapIteratorInternalField(): TODO; -declare function $getSetIteratorInternalField(): TODO; -declare function $getProxyInternalField(): TODO; -declare function $idWithProfile(): TODO; -declare function $isObject(obj: unknown): obj is object; -declare function $isCallable(fn: unknown): fn is CallableFunction; -declare function $isConstructor(fn: unknown): fn is { new (...args: any[]): any }; -declare function $isJSArray(obj: unknown): obj is any[]; -declare function $isProxyObject(obj: unknown): obj is Proxy; -declare function $isDerivedArray(): TODO; -declare function $isGenerator(obj: unknown): obj is Generator<any, any, any>; -declare function $isAsyncGenerator(obj: unknown): obj is AsyncGenerator<any, any, any>; -declare function $isPromise(obj: unknown): obj is Promise<any>; -declare function $isRegExpObject(obj: unknown): obj is RegExp; -declare function $isMap<K, V>(obj: unknown): obj is Map<K, V>; -declare function $isSet<V>(obj: unknown): obj is Set<V>; -declare function $isShadowRealm(obj: unknown): obj is ShadowRealm; -declare function $isStringIterator(obj: unknown): obj is Iterator<string>; -declare function $isArrayIterator(obj: unknown): obj is Iterator<any>; -declare function $isMapIterator(obj: unknown): obj is Iterator<any>; -declare function $isSetIterator(obj: unknown): obj is Iterator<any>; -declare function $isUndefinedOrNull(obj: unknown): obj is null | undefined; -declare function $tailCallForwardArguments(): TODO; -/** - * **NOTE** - use `throw new TypeError()` instead. it compiles to the same builtin - * @deprecated - */ -declare function $throwTypeError(message: string): never; -/** - * **NOTE** - use `throw new RangeError()` instead. it compiles to the same builtin - * @deprecated - */ -declare function $throwRangeError(message: string): never; -/** - * **NOTE** - use `throw new OutOfMemoryError()` instead. it compiles to the same builtin - * @deprecated - */ -declare function $throwOutOfMemoryError(): never; -declare function $tryGetById(): TODO; -declare function $tryGetByIdWithWellKnownSymbol(obj: any, key: WellKnownSymbol): any; -declare function $putByIdDirect(obj: any, key: PropertyKey, value: any): void; -declare function $putByIdDirectPrivate(obj: any, key: PropertyKey, value: any): void; -declare function $putByValDirect(obj: any, key: PropertyKey, value: any): void; -declare function $putByValWithThisSloppy(): TODO; -declare function $putByValWithThisStrict(): TODO; -declare function $putPromiseInternalField<T extends PromiseFieldType, P extends Promise<any>>( - promise: P, - key: T, - value: PromiseFieldToValue<T, P>, -): void; -declare function $putGeneratorInternalField(): TODO; -declare function $putAsyncGeneratorInternalField(): TODO; -declare function $putArrayIteratorInternalField(): TODO; -declare function $putStringIteratorInternalField(): TODO; -declare function $putMapIteratorInternalField(): TODO; -declare function $putSetIteratorInternalField(): TODO; -declare function $superSamplerBegin(): TODO; -declare function $superSamplerEnd(): TODO; -declare function $toNumber(x: any): number; -declare function $toString(x: any): string; -declare function $toPropertyKey(x: any): PropertyKey; -/** - * Often used like - * `$toObject(this, "Class.prototype.method requires that |this| not be null or undefined");` - */ -declare function $toObject(object: any, errorMessage?: string): object; -declare function $newArrayWithSize<T>(size: number): T[]; -declare function $newArrayWithSpecies(): TODO; -declare function $newPromise(): TODO; -declare function $createPromise(): TODO; -declare const $iterationKindKey: TODO; -declare const $iterationKindValue: TODO; -declare const $iterationKindEntries: TODO; -declare const $MAX_ARRAY_INDEX: number; -declare const $MAX_STRING_LENGTH: number; -declare const $MAX_SAFE_INTEGER: number; -declare const $ModuleFetch: number; -declare const $ModuleTranslate: number; -declare const $ModuleInstantiate: number; -declare const $ModuleSatisfy: number; -declare const $ModuleLink: number; -declare const $ModuleReady: number; -declare const $promiseRejectionReject: TODO; -declare const $promiseRejectionHandle: TODO; -declare const $promiseStatePending: number; -declare const $promiseStateFulfilled: number; -declare const $promiseStateRejected: number; -declare const $promiseStateMask: number; -declare const $promiseFlagsIsHandled: number; -declare const $promiseFlagsIsFirstResolvingFunctionCalled: number; -declare const $promiseFieldFlags: unique symbol; -declare const $promiseFieldReactionsOrResult: unique symbol; -declare const $proxyFieldTarget: TODO; -declare const $proxyFieldHandler: TODO; -declare const $generatorFieldState: TODO; -declare const $generatorFieldNext: TODO; -declare const $generatorFieldThis: TODO; -declare const $generatorFieldFrame: TODO; -declare const $generatorFieldContext: TODO; -declare const $GeneratorResumeModeNormal: TODO; -declare const $GeneratorResumeModeThrow: TODO; -declare const $GeneratorResumeModeReturn: TODO; -declare const $GeneratorStateCompleted: TODO; -declare const $GeneratorStateExecuting: TODO; -declare const $arrayIteratorFieldIndex: TODO; -declare const $arrayIteratorFieldIteratedObject: TODO; -declare const $arrayIteratorFieldKind: TODO; -declare const $mapIteratorFieldMapBucket: TODO; -declare const $mapIteratorFieldKind: TODO; -declare const $setIteratorFieldSetBucket: TODO; -declare const $setIteratorFieldKind: TODO; -declare const $stringIteratorFieldIndex: TODO; -declare const $stringIteratorFieldIteratedString: TODO; -declare const $asyncGeneratorFieldSuspendReason: TODO; -declare const $asyncGeneratorFieldQueueFirst: TODO; -declare const $asyncGeneratorFieldQueueLast: TODO; -declare const $AsyncGeneratorStateCompleted: TODO; -declare const $AsyncGeneratorStateExecuting: TODO; -declare const $AsyncGeneratorStateAwaitingReturn: TODO; -declare const $AsyncGeneratorStateSuspendedStart: TODO; -declare const $AsyncGeneratorStateSuspendedYield: TODO; -declare const $AsyncGeneratorSuspendReasonYield: TODO; -declare const $AsyncGeneratorSuspendReasonAwait: TODO; -declare const $AsyncGeneratorSuspendReasonNone: TODO; -declare const $abstractModuleRecordFieldState: TODO; - -// We define our intrinsics in ./BunBuiltinNames.h. Some of those are globals. - -declare var $_events: TODO; -declare function $abortAlgorithm(): TODO; -declare function $abortSteps(): TODO; -declare function $addEventListener(): TODO; -declare function $appendFromJS(): TODO; -declare function $argv(): TODO; -declare function $assignToStream(): TODO; -declare function $associatedReadableByteStreamController(): TODO; -declare function $autoAllocateChunkSize(): TODO; -declare function $backpressure(): TODO; -declare function $backpressureChangePromise(): TODO; -declare function $basename(): TODO; -declare function $body(): TODO; -declare function $bunNativePtr(): TODO; -declare function $bunNativeType(): TODO; -declare function $byobRequest(): TODO; -declare function $cancel(): TODO; -declare function $cancelAlgorithm(): TODO; -declare function $chdir(): TODO; -declare function $cloneArrayBuffer(a, b, c): TODO; -declare function $close(): TODO; -declare function $closeAlgorithm(): TODO; -declare function $closeRequest(): TODO; -declare function $closeRequested(): TODO; -declare function $closed(): TODO; -declare function $closedPromise(): TODO; -declare function $closedPromiseCapability(): TODO; -declare function $code(): TODO; -declare const $commonJSSymbol: unique symbol; -declare function $connect(): TODO; -declare function $consumeReadableStream(): TODO; -declare function $controlledReadableStream(): TODO; -declare function $controller(): TODO; -declare function $cork(): TODO; -declare function $createEmptyReadableStream(): TODO; -declare function $createFIFO(): TODO; -declare function $createNativeReadableStream(): TODO; -declare function $createReadableStream(): TODO; -declare function $createUninitializedArrayBuffer(size: number): ArrayBuffer; -declare function $createWritableStreamFromInternal(): TODO; -declare function $cwd(): TODO; -declare function $data(): TODO; -declare function $dataView(): TODO; -declare function $decode(): TODO; -declare function $delimiter(): TODO; -declare function $destroy(): TODO; -declare function $dir(): TODO; -declare function $direct(): TODO; -declare function $dirname(): TODO; -declare function $disturbed(): TODO; -declare function $document(): TODO; -declare function $encode(): TODO; -declare function $encoding(): TODO; -declare function $end(): TODO; -declare function $errno(): TODO; -declare function $errorSteps(): TODO; -declare function $execArgv(): TODO; -declare function $extname(): TODO; -declare function $failureKind(): TODO; -declare function $fatal(): TODO; -declare function $fetch(): TODO; -declare function $fetchRequest(): TODO; -declare function $file(): TODO; -declare function $filePath(): TODO; -declare function $fillFromJS(): TODO; -declare function $filter(): TODO; -declare function $finishConsumingStream(): TODO; -declare function $flush(): TODO; -declare function $flushAlgorithm(): TODO; -declare function $format(): TODO; -declare function $fulfillModuleSync(key: string): void; -declare function $get(): TODO; -declare function $getInternalWritableStream(writable: WritableStream): TODO; -declare function $handleEvent(): TODO; -declare function $hash(): TODO; -declare function $header(): TODO; -declare function $headers(): TODO; -declare function $highWaterMark(): TODO; -declare function $host(): TODO; -declare function $hostname(): TODO; -declare function $href(): TODO; -declare function $ignoreBOM(): TODO; -declare function $importer(): TODO; -declare function $inFlightCloseRequest(): TODO; -declare function $inFlightWriteRequest(): TODO; -declare function $initializeWith(): TODO; -declare function $internalRequire(path: string): TODO; -declare function $internalStream(): TODO; -declare function $internalWritable(): TODO; -declare function $isAbortSignal(signal: unknown): signal is AbortSignal; -declare function $isAbsolute(): TODO; -declare function $isDisturbed(): TODO; -declare function $isPaused(): TODO; -declare function $isWindows(): TODO; -declare function $join(): TODO; -declare function $kind(): TODO; -declare function $lazy(): TODO; -declare function $lazyLoad(): TODO; -declare function $lazyStreamPrototypeMap(): TODO; -declare function $loadModule(): TODO; -declare function $localStreams(): TODO; -declare function $main(): TODO; -declare function $makeDOMException(): TODO; -declare function $makeGetterTypeError(className: string, prop: string): Error; -declare function $makeThisTypeError(className: string, method: string): Error; -declare function $map(): TODO; -declare function $method(): TODO; -declare function $nextTick(): TODO; -declare function $normalize(): TODO; -declare function $on(): TODO; -declare function $once(): TODO; -declare function $options(): TODO; -declare function $origin(): TODO; -declare function $ownerReadableStream(): TODO; -declare function $parse(): TODO; -declare function $password(): TODO; -declare function $patch(): TODO; -declare function $path(): TODO; -declare function $pathname(): TODO; -declare function $pause(): TODO; -declare function $pendingAbortRequest(): TODO; -declare function $pendingPullIntos(): TODO; -declare function $pid(): TODO; -declare function $pipe(): TODO; -declare function $port(): TODO; -declare function $post(): TODO; -declare function $ppid(): TODO; -declare function $prependEventListener(): TODO; -declare function $process(): TODO; -declare function $protocol(): TODO; -declare function $pull(): TODO; -declare function $pullAgain(): TODO; -declare function $pullAlgorithm(): TODO; -declare function $pulling(): TODO; -declare function $put(): TODO; -declare function $queue(): TODO; -declare function $read(): TODO; -declare function $readIntoRequests(): TODO; -declare function $readRequests(): TODO; -declare function $readable(): TODO; -declare function $readableStreamController(): TODO; -declare function $readableStreamToArray(): TODO; -declare function $reader(): TODO; -declare function $readyPromise(): TODO; -declare function $readyPromiseCapability(): TODO; -declare function $redirect(): TODO; -declare function $relative(): TODO; -declare function $releaseLock(): TODO; -declare function $removeEventListener(): TODO; -declare function $require(): TODO; -declare function $requireESM(path: string): any; -declare const $requireMap: Map<string, TODO>; -declare function $resolve(name: string, from: string): Promise<string>; -declare function $resolveSync(name: string, from: string): string; -declare function $resume(): TODO; -declare function $search(): TODO; -declare function $searchParams(): TODO; -declare function $self(): TODO; -declare function $sep(): TODO; -declare function $setBody(): TODO; -declare function $setStatus(): TODO; -declare function $setup(): TODO; -declare function $sink(): TODO; -declare function $size(): TODO; -declare function $start(): TODO; -declare function $startAlgorithm(): TODO; -declare function $startConsumingStream(): TODO; -declare function $startDirectStream(): TODO; -declare function $started(): TODO; -declare function $startedPromise(): TODO; -declare function $state(): TODO; -declare function $status(): TODO; -declare function $storedError(): TODO; -declare function $strategy(): TODO; -declare function $strategyHWM(): TODO; -declare function $strategySizeAlgorithm(): TODO; -declare function $stream(): TODO; -declare function $streamClosed(): TODO; -declare function $streamClosing(): TODO; -declare function $streamErrored(): TODO; -declare function $streamReadable(): TODO; -declare function $streamWaiting(): TODO; -declare function $streamWritable(): TODO; -declare function $structuredCloneForStream(): TODO; -declare function $syscall(): TODO; -declare function $textDecoderStreamDecoder(): TODO; -declare function $textDecoderStreamTransform(): TODO; -declare function $textEncoderStreamEncoder(): TODO; -declare function $textEncoderStreamTransform(): TODO; -declare function $toNamespacedPath(): TODO; -declare function $trace(): TODO; -declare function $transformAlgorithm(): TODO; -declare function $uncork(): TODO; -declare function $underlyingByteSource(): TODO; -declare function $underlyingSink(): TODO; -declare function $underlyingSource(): TODO; -declare function $unpipe(): TODO; -declare function $unshift(): TODO; -declare function $url(): TODO; -declare function $username(): TODO; -declare function $version(): TODO; -declare function $versions(): TODO; -declare function $view(): TODO; -declare function $whenSignalAborted(signal: AbortSignal, cb: (reason: any) => void): TODO; -declare function $writable(): TODO; -declare function $write(): TODO; -declare function $writeAlgorithm(): TODO; -declare function $writeRequests(): TODO; -declare function $writer(): TODO; -declare function $writing(): TODO; -declare function $written(): TODO; - -// The following I cannot find any definitions of, but they are functional. -declare function $toLength(length: number): number; -declare function $isTypedArrayView(obj: unknown): obj is ArrayBufferView | DataView | Uint8Array; -declare function $setStateToMax(target: any, state: number): void; -declare function $trunc(target: number): number; -declare function $newPromiseCapability(C: PromiseConstructor): TODO; -/** @deprecated, use new TypeError instead */ -declare function $makeTypeError(message: string): TypeError; -declare function $newHandledRejectedPromise(error: unknown): Promise<never>; - -// Types used in the above functions -type PromiseFieldType = typeof $promiseFieldFlags | typeof $promiseFieldReactionsOrResult; -type PromiseFieldToValue<X extends PromiseFieldType, V> = X extends typeof $promiseFieldFlags - ? number - : X extends typeof $promiseFieldReactionsOrResult - ? V | any - : any; -type WellKnownSymbol = keyof { [K in keyof SymbolConstructor as SymbolConstructor[K] extends symbol ? K : never]: K }; - -// You can also `@` on any method on a classes to avoid prototype pollution and secret internals -type ClassWithIntrinsics<T> = { [K in keyof T as T[K] extends Function ? `$${K}` : never]: T[K] }; - -declare interface Map<K, V> extends ClassWithIntrinsics<Map<K, V>> {} -declare interface CallableFunction extends ClassWithIntrinsics<CallableFunction> {} -declare interface Promise<T> extends ClassWithIntrinsics<Promise<T>> {} -declare interface ArrayBufferConstructor<T> extends ClassWithIntrinsics<ArrayBufferConstructor<T>> {} -declare interface PromiseConstructor<T> extends ClassWithIntrinsics<PromiseConstructor<T>> {} - -declare interface UnderlyingSource { - $lazy: boolean; - $bunNativeType: number; - $bunNativePtr: number; - autoAllocateChunkSize?: number; -} - -declare class OutOfMemoryError { - constructor(); -} - -declare class ReadableStreamDefaultController { - constructor( - stream: unknown, - underlyingSource: unknown, - size: unknown, - highWaterMark: unknown, - $isReadableStream: typeof $isReadableStream, - ); -} -declare class ReadableByteStreamController { - constructor( - stream: unknown, - underlyingSource: unknown, - strategy: unknown, - $isReadableStream: typeof $isReadableStream, - ); -} -declare class ReadableStreamBYOBRequest { - constructor(stream: unknown, view: unknown, $isReadableStream: typeof $isReadableStream); -} -declare class ReadableStreamBYOBReader { - constructor(stream: unknown); -} - -// Inlining our enum types -declare const $ImportKindIdToLabel: Array<import("bun").ImportKind>; -declare const $ImportKindLabelToId: Record<import("bun").ImportKind, number>; -declare const $LoaderIdToLabel: Array<import("bun").Loader>; -declare const $LoaderLabelToId: Record<import("bun").Loader, number>; - -// not a builtin, but a build-time macro of our own -/** Returns a not implemented error that points to a github issue. */ -declare function notImplementedIssue(issueNumber: number, description: string): Error; -/** Return a function that throws a not implemented error that points to a github issue */ -declare function notImplementedIssueFn(issueNumber: number, description: string): (...args: any[]) => never; - -declare type JSCSourceCodeObject = unique symbol; - -declare var Loader: { - registry: Map<string, LoaderEntry>; - - parseModule(key: string, sourceCodeObject: JSCSourceCodeObject): Promise<LoaderModule> | LoaderModule; - linkAndEvaluateModule(resolvedSpecifier: string, unknown: any); - getModuleNamespaceObject(module: LoaderModule): any; - requestedModules(module: LoaderModule): string[]; - dependencyKeysIfEvaluated(specifier: string): string[]; - resolve(specifier: string, referrer: string): string; - ensureRegistered(key: string): LoaderEntry; -}; - -interface LoaderEntry { - key: string; - state: number; - fetch: Promise<JSCSourceCodeObject>; - instantiate: Promise<any>; - satisfy: Promise<any>; - dependencies: string[]; - module: LoaderModule; - linkError?: any; - linkSucceeded: boolean; - evaluated: boolean; - then?: any; - isAsync: boolean; -} - -interface LoaderModule { - dependenciesMap: Map<string, LoaderEntry>; -} - -declare module "bun" { - var TOML: { - parse(contents: string): any; - }; - function fs(): typeof import("node:fs"); - function _Os(): typeof import("node:os"); - var main: string; - var tty: Array<{ hasColors: boolean }>; -} - -declare interface Function { - path: string; -} - -declare var $Buffer: { - new (a: any, b?: any, c?: any): Buffer; -}; - -declare interface Error { - code?: string; -} diff --git a/src/bun.js/builtins/codegen/builtin-parser.ts b/src/bun.js/builtins/codegen/builtin-parser.ts deleted file mode 100644 index e96d79c63..000000000 --- a/src/bun.js/builtins/codegen/builtin-parser.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { applyReplacements } from "./replacements"; - -/** - * Slices a string until it hits a }, but keeping in mind JS comments, - * regex, template literals, comments, and matching { - * - * Used to extract function bodies without parsing the code. - * - * If you pass replace=true, it will run replacements on the code - */ -export function sliceSourceCode( - contents: string, - replace: boolean, -): { result: string; rest: string; usesThis: boolean } { - let bracketCount = 0; - let i = 0; - let result = ""; - let usesThis = false; - while (contents.length) { - // TODO: template literal, regexp - // these are important because our replacement logic would replace intrinsics - // within these, when it should remain as the literal dollar. - // but this isn't used in the codebase - i = contents.match(/\/\*|\/\/|'|"|{|}|`/)?.index ?? contents.length; - const chunk = replace ? applyReplacements(contents.slice(0, i)) : contents.slice(0, i); - if (chunk.includes("this")) usesThis = true; - result += chunk; - contents = contents.slice(i); - if (!contents.length) break; - if (contents.startsWith("/*")) { - i = contents.slice(2).indexOf("*/") + 2; - } else if (contents.startsWith("//")) { - i = contents.slice(2).indexOf("\n") + 2; - } else if (contents.startsWith("'")) { - i = contents.slice(1).match(/(?<!\\)'/)!.index! + 2; - } else if (contents.startsWith('"')) { - i = contents.slice(1).match(/(?<!\\)"/)!.index! + 2; - } else if (contents.startsWith("`")) { - const { result: result2, rest } = sliceTemplateLiteralSourceCode(contents.slice(1), replace); - result += "`" + result2; - contents = rest; - continue; - } else if (contents.startsWith("{")) { - bracketCount++; - i = 1; - } else if (contents.startsWith("}")) { - bracketCount--; - if (bracketCount <= 0) { - result += "}"; - contents = contents.slice(1); - break; - } - i = 1; - } else { - throw new Error("TODO"); - } - result += contents.slice(0, i); - contents = contents.slice(i); - } - - return { result, rest: contents, usesThis }; -} - -function sliceTemplateLiteralSourceCode(contents: string, replace: boolean) { - let i = 0; - let result = ""; - let usesThis = false; - while (contents.length) { - i = contents.match(/`|\${/)!.index!; - result += contents.slice(0, i); - contents = contents.slice(i); - if (!contents.length) break; - if (contents.startsWith("`")) { - result += "`"; - contents = contents.slice(1); - break; - } else if (contents.startsWith("$")) { - const { result: result2, rest, usesThis: usesThisVal } = sliceSourceCode(contents.slice(1), replace); - result += "$" + result2; - contents = rest; - usesThis ||= usesThisVal; - continue; - } else { - throw new Error("TODO"); - } - } - - return { result, rest: contents, usesThis }; -} diff --git a/src/bun.js/builtins/codegen/helpers.ts b/src/bun.js/builtins/codegen/helpers.ts deleted file mode 100644 index 6345f8ffa..000000000 --- a/src/bun.js/builtins/codegen/helpers.ts +++ /dev/null @@ -1,25 +0,0 @@ -export function fmtCPPString(str: string) { - return ( - '"' + - str - .replace(/\\/g, "\\\\") - .replace(/"/g, '\\"') - .replace(/\n/g, "\\n") - .replace(/\r/g, "\\r") - .replace(/\t/g, "\\t") - .replace(/\?/g, "\\?") + // https://stackoverflow.com/questions/1234582 - '"' - ); -} - -export function cap(str: string) { - return str[0].toUpperCase() + str.slice(1); -} - -export function low(str: string) { - if (str.startsWith("JS")) { - return "js" + str.slice(2); - } - - return str[0].toLowerCase() + str.slice(1); -} diff --git a/src/bun.js/builtins/codegen/index.ts b/src/bun.js/builtins/codegen/index.ts deleted file mode 100644 index c9e44ec06..000000000 --- a/src/bun.js/builtins/codegen/index.ts +++ /dev/null @@ -1,624 +0,0 @@ -import { existsSync, mkdirSync, readdirSync, rmSync, writeFileSync } from "fs"; -import path from "path"; -import { sliceSourceCode } from "./builtin-parser"; -import { applyGlobalReplacements, enums, globalsToPrefix } from "./replacements"; -import { cap, fmtCPPString, low } from "./helpers"; - -console.log("Bundling Bun builtins..."); - -const MINIFY = process.argv.includes("--minify") || process.argv.includes("-m"); -const PARALLEL = process.argv.includes("--parallel") || process.argv.includes("-p"); -const KEEP_TMP = process.argv.includes("--keep-tmp") || process.argv.includes("-k"); - -const SRC_DIR = path.join(import.meta.dir, "../ts"); -const OUT_DIR = path.join(import.meta.dir, "../"); -const TMP_DIR = path.join(import.meta.dir, "../out"); - -if (existsSync(TMP_DIR)) rmSync(TMP_DIR, { recursive: true }); -mkdirSync(TMP_DIR); - -const define = { - "process.env.NODE_ENV": "development", - "process.platform": process.platform, - "process.arch": process.arch, -}; - -for (const name in enums) { - const value = enums[name]; - if (typeof value !== "object") throw new Error("Invalid enum object " + name + " defined in " + import.meta.file); - if (typeof value === null) throw new Error("Invalid enum object " + name + " defined in " + import.meta.file); - const keys = Array.isArray(value) ? value : Object.keys(value).filter(k => !k.match(/^[0-9]+$/)); - define[`__intrinsic__${name}IdToLabel`] = "[" + keys.map(k => `"${k}"`).join(", ") + "]"; - define[`__intrinsic__${name}LabelToId`] = "{" + keys.map(k => `"${k}": ${keys.indexOf(k)}`).join(", ") + "}"; -} - -for (const name of globalsToPrefix) { - define[name] = "__intrinsic__" + name; -} - -interface ParsedBuiltin { - name: string; - params: string[]; - directives: Record<string, any>; - source: string; - async: boolean; -} -interface BundledBuiltin { - name: string; - directives: Record<string, any>; - isGetter: boolean; - isConstructor: boolean; - isLinkTimeConstant: boolean; - isNakedConstructor: boolean; - intrinsic: string; - overriddenName: string; - source: string; - params: string[]; - visibility: string; -} - -/** - * Source .ts file --> Array<bundled js function code> - */ -async function processFileSplit(filename: string): Promise<{ functions: BundledBuiltin[]; internal: boolean }> { - const basename = path.basename(filename, ".ts"); - let contents = await Bun.file(filename).text(); - - contents = applyGlobalReplacements(contents); - - // first approach doesnt work perfectly because we actually need to split each function declaration - // and then compile those separately - - const consumeWhitespace = /^\s*/; - const consumeTopLevelContent = /^(\/\*|\/\/|type|import|interface|\$|export (?:async )?function|(?:async )?function)/; - const consumeEndOfType = /;|.(?=export|type|interface|\$|\/\/|\/\*|function)/; - - const functions: ParsedBuiltin[] = []; - let directives: Record<string, any> = {}; - const bundledFunctions: BundledBuiltin[] = []; - let internal = false; - - while (contents.length) { - contents = contents.replace(consumeWhitespace, ""); - if (!contents.length) break; - const match = contents.match(consumeTopLevelContent); - if (!match) { - throw new SyntaxError("Could not process input:\n" + contents.slice(0, contents.indexOf("\n"))); - } - contents = contents.slice(match.index!); - if (match[1] === "import") { - // TODO: we may want to do stuff with these - const i = contents.indexOf(";"); - contents = contents.slice(i + 1); - } else if (match[1] === "/*") { - const i = contents.indexOf("*/") + 2; - internal ||= contents.slice(0, i).includes("@internal"); - contents = contents.slice(i); - } else if (match[1] === "//") { - const i = contents.indexOf("\n") + 1; - internal ||= contents.slice(0, i).includes("@internal"); - contents = contents.slice(i); - } else if (match[1] === "type" || match[1] === "export type") { - const i = contents.search(consumeEndOfType); - contents = contents.slice(i + 1); - } else if (match[1] === "interface") { - contents = sliceSourceCode(contents, false).rest; - } else if (match[1] === "$") { - const directive = contents.match(/^\$([a-zA-Z0-9]+)(?:\s*=\s*([^\n]+?))?\s*;?\n/); - if (!directive) { - throw new SyntaxError("Could not parse directive:\n" + contents.slice(0, contents.indexOf("\n"))); - } - const name = directive[1]; - let value; - try { - value = directive[2] ? JSON.parse(directive[2]) : true; - } catch (error) { - throw new SyntaxError("Could not parse directive value " + directive[2] + " (must be JSON parsable)"); - } - if (name === "constructor") { - throw new SyntaxError("$constructor not implemented"); - } - if (name === "nakedConstructor") { - throw new SyntaxError("$nakedConstructor not implemented"); - } - directives[name] = value; - contents = contents.slice(directive[0].length); - } else if (match[1] === "export function" || match[1] === "export async function") { - const declaration = contents.match( - /^export\s+(async\s+)?function\s+([a-zA-Z0-9]+)\s*\(([^)]*)\)(?:\s*:\s*([^{\n]+))?\s*{?/, - ); - if (!declaration) - throw new SyntaxError("Could not parse function declaration:\n" + contents.slice(0, contents.indexOf("\n"))); - - const async = !!declaration[1]; - const name = declaration[2]; - const paramString = declaration[3]; - const params = - paramString.trim().length === 0 ? [] : paramString.split(",").map(x => x.replace(/:.+$/, "").trim()); - if (params[0] === "this") { - params.shift(); - } - - const { result, rest } = sliceSourceCode(contents.slice(declaration[0].length - 1), true); - functions.push({ - name, - params, - directives, - source: result.trim().slice(1, -1), - async, - }); - contents = rest; - directives = {}; - } else if (match[1] === "function" || match[1] === "async function") { - const fnname = contents.match(/^function ([a-zA-Z0-9]+)\(([^)]*)\)(?:\s*:\s*([^{\n]+))?\s*{?/)![1]; - throw new SyntaxError("All top level functions must be exported: " + fnname); - } else { - throw new Error("TODO: parse " + match[1]); - } - } - - for (const fn of functions) { - const tmpFile = path.join(TMP_DIR, `${basename}.${fn.name}.ts`); - - // not sure if this optimization works properly in jsc builtins - // const useThis = fn.usesThis; - const useThis = true; - - // TODO: we should use format=IIFE so we could bundle imports and extra functions. - await Bun.write( - tmpFile, - `// @ts-nocheck -// GENERATED TEMP FILE - DO NOT EDIT -// Sourced from ${path.relative(TMP_DIR, filename)} - -// do not allow the bundler to rename a symbol to $ -($); - -$$capture_start$$(${fn.async ? "async " : ""}${ - useThis - ? `function(${fn.params.join(",")})` - : `${fn.params.length === 1 ? fn.params[0] : `(${fn.params.join(",")})`}=>` - } {${fn.source}}).$$capture_end$$; -`, - ); - await Bun.sleep(1); - const build = await Bun.build({ - entrypoints: [tmpFile], - define, - minify: true, - }); - if (!build.success) { - throw new AggregateError(build.logs, "Failed bundling builtin function " + fn.name + " from " + basename + ".ts"); - } - if (build.outputs.length !== 1) { - throw new Error("expected one output"); - } - const output = await build.outputs[0].text(); - const captured = output.match(/\$\$capture_start\$\$([\s\S]+)\.\$\$capture_end\$\$/)![1]; - const finalReplacement = - (fn.directives.sloppy ? captured : captured.replace(/function\s*\(.*?\)\s*{/, '$&"use strict";')) - .replace(/^\((async )?function\(/, "($1function (") - .replace(/__intrinsic__/g, "@") + "\n"; - - bundledFunctions.push({ - name: fn.name, - directives: fn.directives, - source: finalReplacement, - params: fn.params, - visibility: fn.directives.visibility ?? (fn.directives.linkTimeConstant ? "Private" : "Public"), - isGetter: !!fn.directives.getter, - isConstructor: !!fn.directives.constructor, - isLinkTimeConstant: !!fn.directives.linkTimeConstant, - isNakedConstructor: !!fn.directives.nakedConstructor, - intrinsic: fn.directives.intrinsic ?? "NoIntrinsic", - overriddenName: fn.directives.getter - ? `"get ${fn.name}"_s` - : fn.directives.overriddenName - ? `"${fn.directives.overriddenName}"_s` - : "ASCIILiteral()", - }); - } - - return { - functions: bundledFunctions, - internal, - }; -} - -const filesToProcess = readdirSync(SRC_DIR).filter(x => x.endsWith(".ts")); - -const files: Array<{ basename: string; functions: BundledBuiltin[]; internal: boolean }> = []; -async function processFile(x: string) { - const basename = path.basename(x, ".ts"); - try { - files.push({ - basename, - ...(await processFileSplit(path.join(SRC_DIR, x))), - }); - } catch (error) { - console.error("Failed to process file: " + basename + ".ts"); - console.error(error); - process.exit(1); - } -} - -// Bun seems to crash if this is parallelized, :( -if (PARALLEL) { - await Promise.all(filesToProcess.map(processFile)); -} else { - for (const x of filesToProcess) { - await processFile(x); - } -} - -// C++ codegen -let bundledCPP = `// Generated by \`bun src/bun.js/builtins/codegen/index.js\` -// Do not edit by hand. -namespace Zig { class GlobalObject; } -#include "root.h" -#include "config.h" -#include "JSDOMGlobalObject.h" -#include "WebCoreJSClientData.h" -#include <JavaScriptCore/JSObjectInlines.h> - -namespace WebCore { - -`; - -for (const { basename, functions } of files) { - bundledCPP += `/* ${basename}.ts */\n`; - const lowerBasename = low(basename); - for (const fn of functions) { - const name = `${lowerBasename}${cap(fn.name)}Code`; - bundledCPP += `// ${fn.name} -const JSC::ConstructAbility s_${name}ConstructAbility = JSC::ConstructAbility::CannotConstruct; -const JSC::ConstructorKind s_${name}ConstructorKind = JSC::ConstructorKind::None; -const JSC::ImplementationVisibility s_${name}ImplementationVisibility = JSC::ImplementationVisibility::${fn.visibility}; -const int s_${name}Length = ${fn.source.length}; -static const JSC::Intrinsic s_${name}Intrinsic = JSC::NoIntrinsic; -const char* const s_${name} = ${fmtCPPString(fn.source)}; - -`; - } - bundledCPP += `#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \\ -JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \\ -{\\ - JSVMClientData* clientData = static_cast<JSVMClientData*>(vm.clientData); \\ - return clientData->builtinFunctions().${lowerBasename}Builtins().codeName##Executable()->link(vm, nullptr, clientData->builtinFunctions().${lowerBasename}Builtins().codeName##Source(), std::nullopt, s_##codeName##Intrinsic); \\ -} -WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR) -#undef DEFINE_BUILTIN_GENERATOR - -`; -} - -bundledCPP += ` - -JSBuiltinInternalFunctions::JSBuiltinInternalFunctions(JSC::VM& vm) - : m_vm(vm) -`; - -for (const { basename, internal } of files) { - if (internal) { - bundledCPP += ` , m_${low(basename)}(vm)\n`; - } -} - -bundledCPP += ` -{ - UNUSED_PARAM(vm); -} - -template<typename Visitor> -void JSBuiltinInternalFunctions::visit(Visitor& visitor) -{ -`; -for (const { basename, internal } of files) { - if (internal) bundledCPP += ` m_${low(basename)}.visit(visitor);\n`; -} - -bundledCPP += ` - UNUSED_PARAM(visitor); -} - -template void JSBuiltinInternalFunctions::visit(AbstractSlotVisitor&); -template void JSBuiltinInternalFunctions::visit(SlotVisitor&); - -SUPPRESS_ASAN void JSBuiltinInternalFunctions::initialize(Zig::GlobalObject& globalObject) -{ - UNUSED_PARAM(globalObject); -`; - -for (const { basename, internal } of files) { - if (internal) { - bundledCPP += ` m_${low(basename)}.init(globalObject);\n`; - } -} - -bundledCPP += ` - JSVMClientData& clientData = *static_cast<JSVMClientData*>(m_vm.clientData); - Zig::GlobalObject::GlobalPropertyInfo staticGlobals[] = { -`; - -for (const { basename, internal } of files) { - if (internal) { - bundledCPP += `#define DECLARE_GLOBAL_STATIC(name) \\ - Zig::GlobalObject::GlobalPropertyInfo( \\ - clientData.builtinFunctions().${low(basename)}Builtins().name##PrivateName(), ${low( - basename, - )}().m_##name##Function.get() , JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly), - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_FUNCTION_NAME(DECLARE_GLOBAL_STATIC) - #undef DECLARE_GLOBAL_STATIC - `; - } -} - -bundledCPP += ` - }; - globalObject.addStaticGlobals(staticGlobals, std::size(staticGlobals)); - UNUSED_PARAM(clientData); -} - -} // namespace WebCore -`; - -// C++ Header codegen -let bundledHeader = `// Generated by \`bun src/bun.js/builtins/codegen/index.js\` -// Do not edit by hand. -#pragma once -namespace Zig { class GlobalObject; } -#include "root.h" -#include <JavaScriptCore/BuiltinUtils.h> -#include <JavaScriptCore/Identifier.h> -#include <JavaScriptCore/JSFunction.h> -#include <JavaScriptCore/UnlinkedFunctionExecutable.h> -#include <JavaScriptCore/VM.h> -#include <JavaScriptCore/WeakInlines.h> - -namespace JSC { -class FunctionExecutable; -} - -namespace WebCore { -`; -for (const { basename, functions, internal } of files) { - bundledHeader += `/* ${basename}.ts */ -`; - const lowerBasename = low(basename); - - for (const fn of functions) { - const name = `${lowerBasename}${cap(fn.name)}Code`; - bundledHeader += `// ${fn.name} -#define WEBCORE_BUILTIN_${basename.toUpperCase()}_${fn.name.toUpperCase()} 1 -extern const char* const s_${name}; -extern const int s_${name}Length; -extern const JSC::ConstructAbility s_${name}ConstructAbility; -extern const JSC::ConstructorKind s_${name}ConstructorKind; -extern const JSC::ImplementationVisibility s_${name}ImplementationVisibility; - -`; - } - bundledHeader += `#define WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_DATA(macro) \\\n`; - for (const fn of functions) { - bundledHeader += ` macro(${fn.name}, ${lowerBasename}${cap(fn.name)}, ${fn.params.length}) \\\n`; - } - bundledHeader += "\n"; - bundledHeader += `#define WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_CODE(macro) \\\n`; - for (const fn of functions) { - const name = `${lowerBasename}${cap(fn.name)}Code`; - bundledHeader += ` macro(${name}, ${fn.name}, ${fn.overriddenName}, s_${name}Length) \\\n`; - } - bundledHeader += "\n"; - bundledHeader += `#define WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_FUNCTION_NAME(macro) \\\n`; - for (const fn of functions) { - bundledHeader += ` macro(${fn.name}) \\\n`; - } - bundledHeader += ` -#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \\ - JSC::FunctionExecutable* codeName##Generator(JSC::VM&); - -WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR) -#undef DECLARE_BUILTIN_GENERATOR - -class ${basename}BuiltinsWrapper : private JSC::WeakHandleOwner { -public: - explicit ${basename}BuiltinsWrapper(JSC::VM& vm) - : m_vm(vm) - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES) -#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) , m_##name##Source(JSC::makeSource(StringImpl::createWithoutCopying(s_##name, length), { })) - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS) -#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS - { - } - -#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \\ - JSC::UnlinkedFunctionExecutable* name##Executable(); \\ - const JSC::SourceCode& name##Source() const { return m_##name##Source; } - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES) -#undef EXPOSE_BUILTIN_EXECUTABLES - - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR) - - void exportNames(); - -private: - JSC::VM& m_vm; - - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES) - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, overriddenName, length) \\ - JSC::SourceCode m_##name##Source;\\ - JSC::Weak<JSC::UnlinkedFunctionExecutable> m_##name##Executable; - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS - -}; - -#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, overriddenName, length) \\ -inline JSC::UnlinkedFunctionExecutable* ${basename}BuiltinsWrapper::name##Executable() \\ -{\\ - if (!m_##name##Executable) {\\ - JSC::Identifier executableName = functionName##PublicName();\\ - if (overriddenName)\\ - executableName = JSC::Identifier::fromString(m_vm, overriddenName);\\ - m_##name##Executable = JSC::Weak<JSC::UnlinkedFunctionExecutable>(JSC::createBuiltinExecutable(m_vm, m_##name##Source, executableName, s_##name##ImplementationVisibility, s_##name##ConstructorKind, s_##name##ConstructAbility), this, &m_##name##Executable);\\ - }\\ - return m_##name##Executable.get();\\ -} -WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES) -#undef DEFINE_BUILTIN_EXECUTABLES - -inline void ${basename}BuiltinsWrapper::exportNames() -{ -#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames->appendExternalName(name##PublicName(), name##PrivateName()); - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME) -#undef EXPORT_FUNCTION_NAME -} -`; - - if (internal) { - bundledHeader += `class ${basename}BuiltinFunctions { -public: - explicit ${basename}BuiltinFunctions(JSC::VM& vm) : m_vm(vm) { } - - void init(JSC::JSGlobalObject&); - template<typename Visitor> void visit(Visitor&); - -public: - JSC::VM& m_vm; - -#define DECLARE_BUILTIN_SOURCE_MEMBERS(functionName) \\ - JSC::WriteBarrier<JSC::JSFunction> m_##functionName##Function; - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_SOURCE_MEMBERS) -#undef DECLARE_BUILTIN_SOURCE_MEMBERS -}; - -inline void ${basename}BuiltinFunctions::init(JSC::JSGlobalObject& globalObject) -{ -#define EXPORT_FUNCTION(codeName, functionName, overriddenName, length) \\ - m_##functionName##Function.set(m_vm, &globalObject, JSC::JSFunction::create(m_vm, codeName##Generator(m_vm), &globalObject)); - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_CODE(EXPORT_FUNCTION) -#undef EXPORT_FUNCTION -} - -template<typename Visitor> -inline void ${basename}BuiltinFunctions::visit(Visitor& visitor) -{ -#define VISIT_FUNCTION(name) visitor.append(m_##name##Function); - WEBCORE_FOREACH_${basename.toUpperCase()}_BUILTIN_FUNCTION_NAME(VISIT_FUNCTION) -#undef VISIT_FUNCTION -} - -template void ${basename}BuiltinFunctions::visit(JSC::AbstractSlotVisitor&); -template void ${basename}BuiltinFunctions::visit(JSC::SlotVisitor&); - `; - } -} -bundledHeader += `class JSBuiltinFunctions { -public: - explicit JSBuiltinFunctions(JSC::VM& vm) - : m_vm(vm) -`; - -for (const { basename } of files) { - bundledHeader += ` , m_${low(basename)}Builtins(m_vm)\n`; -} - -bundledHeader += ` - { -`; - -for (const { basename, internal } of files) { - if (internal) { - bundledHeader += ` m_${low(basename)}Builtins.exportNames();\n`; - } -} - -bundledHeader += ` } -`; - -for (const { basename } of files) { - bundledHeader += ` ${basename}BuiltinsWrapper& ${low(basename)}Builtins() { return m_${low( - basename, - )}Builtins; }\n`; -} - -bundledHeader += ` -private: - JSC::VM& m_vm; -`; - -for (const { basename } of files) { - bundledHeader += ` ${basename}BuiltinsWrapper m_${low(basename)}Builtins;\n`; -} - -bundledHeader += `; -}; - -class JSBuiltinInternalFunctions { -public: - explicit JSBuiltinInternalFunctions(JSC::VM&); - - template<typename Visitor> void visit(Visitor&); - void initialize(Zig::GlobalObject&); -`; - -for (const { basename, internal } of files) { - if (internal) { - bundledHeader += ` ${basename}BuiltinFunctions& ${low(basename)}() { return m_${low(basename)}; }\n`; - } -} - -bundledHeader += ` -private: - JSC::VM& m_vm; -`; - -for (const { basename, internal } of files) { - if (internal) { - bundledHeader += ` ${basename}BuiltinFunctions m_${low(basename)};\n`; - } -} - -bundledHeader += ` -}; - -} // namespace WebCore -`; - -await Bun.write(path.join(OUT_DIR, "WebCoreJSBuiltins.h"), bundledHeader); -await Bun.write(path.join(OUT_DIR, "WebCoreJSBuiltins.cpp"), bundledCPP); - -// Generate TS types -let dts = `// Generated by \`bun src/bun.js/builtins/codegen/index.js\` -// Do not edit by hand. -type RemoveThis<F> = F extends (this: infer T, ...args: infer A) => infer R ? (...args: A) => R : F; -`; - -for (const { basename, functions, internal } of files) { - if (internal) { - dts += `\n// ${basename}.ts\n`; - for (const fn of functions) { - dts += `declare const \$${fn.name}: RemoveThis<typeof import("./ts/${basename}")[${JSON.stringify(fn.name)}]>;\n`; - } - } -} - -await Bun.write(path.join(OUT_DIR, "WebCoreJSBuiltins.d.ts"), dts); - -const totalJSSize = files.reduce( - (acc, { functions }) => acc + functions.reduce((acc, fn) => acc + fn.source.length, 0), - 0, -); - -if (!KEEP_TMP) { - await rmSync(TMP_DIR, { recursive: true }); -} - -console.log( - `Embedded JS size: %s bytes (across %s functions, %s files)`, - totalJSSize, - files.reduce((acc, { functions }) => acc + functions.length, 0), - files.length, -); -console.log(`[${performance.now().toFixed(1)}ms]`); diff --git a/src/bun.js/builtins/codegen/replacements.ts b/src/bun.js/builtins/codegen/replacements.ts deleted file mode 100644 index 05c81b901..000000000 --- a/src/bun.js/builtins/codegen/replacements.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { LoaderKeys } from "../../../api/schema"; - -// This is a list of extra syntax replacements to do. Kind of like macros -// These are only run on code itself, not string contents or comments. -export const replacements: ReplacementRule[] = [ - { from: /\bthrow new TypeError\b/g, to: "$throwTypeError" }, - { from: /\bthrow new RangeError\b/g, to: "$throwRangeError" }, - { from: /\bthrow new OutOfMemoryError\b/g, to: "$throwOutOfMemoryError" }, - { from: /\bnew TypeError\b/g, to: "$makeTypeError" }, -]; - -// These rules are run on the entire file, including within strings. -export const globalReplacements: ReplacementRule[] = [ - { - from: /\bnotImplementedIssue\(\s*([0-9]+)\s*,\s*((?:"[^"]*"|'[^']+'))\s*\)/g, - to: "new TypeError(`${$2} is not implemented yet. See https://github.com/oven-sh/bun/issues/$1`)", - }, - { - from: /\bnotImplementedIssueFn\(\s*([0-9]+)\s*,\s*((?:"[^"]*"|'[^']+'))\s*\)/g, - to: "() => $throwTypeError(`${$2} is not implemented yet. See https://github.com/oven-sh/bun/issues/$1`)", - }, -]; - -// This is a list of globals we should access using @ notation -// undefined -> __intrinsic__undefined -> @undefined -export const globalsToPrefix = [ - "AbortSignal", - "Array", - "ArrayBuffer", - "Buffer", - "Bun", - "Infinity", - "Loader", - "Promise", - "ReadableByteStreamController", - "ReadableStream", - "ReadableStreamBYOBReader", - "ReadableStreamBYOBRequest", - "ReadableStreamDefaultController", - "ReadableStreamDefaultReader", - "TransformStream", - "TransformStreamDefaultController", - "Uint8Array", - "WritableStream", - "WritableStreamDefaultController", - "WritableStreamDefaultWriter", - "isFinite", - "isNaN", - "undefined", -]; - -// These enums map to $<enum>IdToLabel and $<enum>LabelToId -// Make sure to define in ./builtins.d.ts -export const enums = { - Loader: LoaderKeys, - ImportKind: [ - "entry-point", - "import-statement", - "require-call", - "dynamic-import", - "require-resolve", - "import-rule", - "url-token", - "internal", - ], -}; - -// These identifiers have typedef but not present at runtime (converted with replacements) -// If they are present in the bundle after runtime, we warn at the user. -// TODO: implement this check. -export const warnOnIdentifiersNotPresentAtRuntime = [ - // - "OutOfMemoryError", - "notImplementedIssue", - "notImplementedIssueFn", -]; - -export interface ReplacementRule { - from: RegExp; - to: string; - global?: boolean; -} - -/** Applies source code replacements as defined in `replacements` */ -export function applyReplacements(src: string) { - let result = src.replace(/\$([a-zA-Z0-9_]+)\b/gm, `__intrinsic__$1`); - for (const replacement of replacements) { - result = result.replace(replacement.from, replacement.to.replaceAll("$", "__intrinsic__")); - } - return result; -} - -/** Applies source code replacements as defined in `globalReplacements` */ -export function applyGlobalReplacements(src: string) { - let result = src; - for (const replacement of globalReplacements) { - result = result.replace(replacement.from, replacement.to.replaceAll("$", "__intrinsic__")); - } - return result; -} diff --git a/src/bun.js/builtins/ts/BundlerPlugin.ts b/src/bun.js/builtins/ts/BundlerPlugin.ts deleted file mode 100644 index 831a6614e..000000000 --- a/src/bun.js/builtins/ts/BundlerPlugin.ts +++ /dev/null @@ -1,370 +0,0 @@ -import type { - AnyFunction, - BuildConfig, - BunPlugin, - OnLoadCallback, - OnLoadResult, - OnLoadResultObject, - OnLoadResultSourceCode, - OnResolveCallback, - PluginBuilder, - PluginConstraints, -} from "bun"; - -// This API expects 4 functions: -// It should be generic enough to reuse for Bun.plugin() eventually, too. -interface BundlerPlugin { - onLoad: Map<string, [RegExp, OnLoadCallback][]>; - onResolve: Map<string, [RegExp, OnResolveCallback][]>; - onLoadAsync( - internalID, - sourceCode: string | Uint8Array | ArrayBuffer | DataView | null, - loaderKey: number | null, - ): void; - onResolveAsync(internalID, a, b, c): void; - addError(internalID, error, number): void; - addFilter(filter, namespace, number): void; -} - -// Extra types -type Setup = BunPlugin["setup"]; -type MinifyObj = Exclude<BuildConfig["minify"], boolean>; -interface BuildConfigExt extends BuildConfig { - // we support esbuild-style entryPoints - entryPoints?: string[]; - // plugins is guaranteed to not be null - plugins: BunPlugin[]; -} -interface PluginBuilderExt extends PluginBuilder { - // these functions aren't implemented yet, so we dont publicly expose them - resolve: AnyFunction; - onStart: AnyFunction; - onEnd: AnyFunction; - onDispose: AnyFunction; - // we partially support initialOptions. it's read-only and a subset of - // all options mapped to their esbuild names - initialOptions: any; - // we set this to an empty object - esbuild: any; -} - -export function runSetupFunction(this: BundlerPlugin, setup: Setup, config: BuildConfigExt) { - var onLoadPlugins = new Map<string, [RegExp, AnyFunction][]>(); - var onResolvePlugins = new Map<string, [RegExp, AnyFunction][]>(); - - function validate(filterObject: PluginConstraints, callback, map) { - if (!filterObject || !$isObject(filterObject)) { - throw new TypeError('Expected an object with "filter" RegExp'); - } - - if (!callback || !$isCallable(callback)) { - throw new TypeError("callback must be a function"); - } - - var { filter, namespace = "file" } = filterObject; - - if (!filter) { - throw new TypeError('Expected an object with "filter" RegExp'); - } - - if (!$isRegExpObject(filter)) { - throw new TypeError("filter must be a RegExp"); - } - - if (namespace && !(typeof namespace === "string")) { - throw new TypeError("namespace must be a string"); - } - - if ((namespace?.length ?? 0) === 0) { - namespace = "file"; - } - - if (!/^([/$a-zA-Z0-9_\\-]+)$/.test(namespace)) { - throw new TypeError("namespace can only contain $a-zA-Z0-9_\\-"); - } - - var callbacks = map.$get(namespace); - - if (!callbacks) { - map.$set(namespace, [[filter, callback]]); - } else { - $arrayPush(callbacks, [filter, callback]); - } - } - - function onLoad(filterObject, callback) { - validate(filterObject, callback, onLoadPlugins); - } - - function onResolve(filterObject, callback) { - validate(filterObject, callback, onResolvePlugins); - } - - const processSetupResult = () => { - var anyOnLoad = false, - anyOnResolve = false; - - for (var [namespace, callbacks] of onLoadPlugins.entries()) { - for (var [filter] of callbacks) { - this.addFilter(filter, namespace, 1); - anyOnLoad = true; - } - } - - for (var [namespace, callbacks] of onResolvePlugins.entries()) { - for (var [filter] of callbacks) { - this.addFilter(filter, namespace, 0); - anyOnResolve = true; - } - } - - if (anyOnResolve) { - var onResolveObject = this.onResolve; - if (!onResolveObject) { - this.onResolve = onResolvePlugins; - } else { - for (var [namespace, callbacks] of onResolvePlugins.entries()) { - var existing = onResolveObject.$get(namespace) as [RegExp, AnyFunction][]; - - if (!existing) { - onResolveObject.$set(namespace, callbacks); - } else { - onResolveObject.$set(namespace, existing.concat(callbacks)); - } - } - } - } - - if (anyOnLoad) { - var onLoadObject = this.onLoad; - if (!onLoadObject) { - this.onLoad = onLoadPlugins; - } else { - for (var [namespace, callbacks] of onLoadPlugins.entries()) { - var existing = onLoadObject.$get(namespace) as [RegExp, AnyFunction][]; - - if (!existing) { - onLoadObject.$set(namespace, callbacks); - } else { - onLoadObject.$set(namespace, existing.concat(callbacks)); - } - } - } - } - - return anyOnLoad || anyOnResolve; - }; - - var setupResult = setup({ - config: config, - onDispose: notImplementedIssueFn(2771, "On-dispose callbacks"), - onEnd: notImplementedIssueFn(2771, "On-end callbacks"), - onLoad, - onResolve, - onStart: notImplementedIssueFn(2771, "On-start callbacks"), - resolve: notImplementedIssueFn(2771, "build.resolve()"), - // esbuild's options argument is different, we provide some interop - initialOptions: { - ...config, - bundle: true, - entryPoints: config.entrypoints ?? config.entryPoints ?? [], - minify: typeof config.minify === "boolean" ? config.minify : false, - minifyIdentifiers: config.minify === true || (config.minify as MinifyObj)?.identifiers, - minifyWhitespace: config.minify === true || (config.minify as MinifyObj)?.whitespace, - minifySyntax: config.minify === true || (config.minify as MinifyObj)?.syntax, - outbase: config.root, - platform: config.target === "bun" ? "node" : config.target, - }, - esbuild: {}, - } satisfies PluginBuilderExt as PluginBuilder); - - if (setupResult && $isPromise(setupResult)) { - if ($getPromiseInternalField(setupResult, $promiseFieldFlags) & $promiseStateFulfilled) { - setupResult = $getPromiseInternalField(setupResult, $promiseFieldReactionsOrResult); - } else { - return setupResult.$then(processSetupResult); - } - } - - return processSetupResult(); -} - -export function runOnResolvePlugins(this: BundlerPlugin, specifier, inputNamespace, importer, internalID, kindId) { - // Must be kept in sync with ImportRecord.label - const kind = $ImportKindIdToLabel[kindId]; - - var promiseResult: any = (async (inputPath, inputNamespace, importer, kind) => { - var { onResolve, onLoad } = this; - var results = onResolve.$get(inputNamespace); - if (!results) { - this.onResolveAsync(internalID, null, null, null); - return null; - } - - for (let [filter, callback] of results) { - if (filter.test(inputPath)) { - var result = callback({ - path: inputPath, - importer, - namespace: inputNamespace, - // resolveDir - kind, - // pluginData - }); - - while ( - result && - $isPromise(result) && - ($getPromiseInternalField(result, $promiseFieldFlags) & $promiseStateMask) === $promiseStateFulfilled - ) { - result = $getPromiseInternalField(result, $promiseFieldReactionsOrResult); - } - - if (result && $isPromise(result)) { - result = await result; - } - - if (!result || !$isObject(result)) { - continue; - } - - var { path, namespace: userNamespace = inputNamespace, external } = result; - if (!(typeof path === "string") || !(typeof userNamespace === "string")) { - throw new TypeError("onResolve plugins must return an object with a string 'path' and string 'loader' field"); - } - - if (!path) { - continue; - } - - if (!userNamespace) { - userNamespace = inputNamespace; - } - if (typeof external !== "boolean" && !$isUndefinedOrNull(external)) { - throw new TypeError('onResolve plugins "external" field must be boolean or unspecified'); - } - - if (!external) { - if (userNamespace === "file") { - if (process.platform !== "win32") { - if (path[0] !== "/" || path.includes("..")) { - throw new TypeError('onResolve plugin "path" must be absolute when the namespace is "file"'); - } - } else { - // TODO: Windows - } - } - if (userNamespace === "dataurl") { - if (!path.startsWith("data:")) { - throw new TypeError('onResolve plugin "path" must start with "data:" when the namespace is "dataurl"'); - } - } - - if (userNamespace && userNamespace !== "file" && (!onLoad || !onLoad.$has(userNamespace))) { - throw new TypeError(`Expected onLoad plugin for namespace ${userNamespace} to exist`); - } - } - this.onResolveAsync(internalID, path, userNamespace, external); - return null; - } - } - - this.onResolveAsync(internalID, null, null, null); - return null; - })(specifier, inputNamespace, importer, kind); - - while ( - promiseResult && - $isPromise(promiseResult) && - ($getPromiseInternalField(promiseResult, $promiseFieldFlags) & $promiseStateMask) === $promiseStateFulfilled - ) { - promiseResult = $getPromiseInternalField(promiseResult, $promiseFieldReactionsOrResult); - } - - if (promiseResult && $isPromise(promiseResult)) { - promiseResult.then( - () => {}, - e => { - this.addError(internalID, e, 0); - }, - ); - } -} - -export function runOnLoadPlugins(this: BundlerPlugin, internalID, path, namespace, defaultLoaderId) { - const LOADERS_MAP = $LoaderLabelToId; - const loaderName = $LoaderIdToLabel[defaultLoaderId]; - - var promiseResult = (async (internalID, path, namespace, defaultLoader) => { - var results = this.onLoad.$get(namespace); - if (!results) { - this.onLoadAsync(internalID, null, null); - return null; - } - - for (let [filter, callback] of results) { - if (filter.test(path)) { - var result = callback({ - path, - namespace, - // suffix - // pluginData - loader: defaultLoader, - }); - - while ( - result && - $isPromise(result) && - ($getPromiseInternalField(result, $promiseFieldFlags) & $promiseStateMask) === $promiseStateFulfilled - ) { - result = $getPromiseInternalField(result, $promiseFieldReactionsOrResult); - } - - if (result && $isPromise(result)) { - result = await result; - } - - if (!result || !$isObject(result)) { - continue; - } - - var { contents, loader = defaultLoader } = result as OnLoadResultSourceCode & OnLoadResultObject; - if (!(typeof contents === "string") && !$isTypedArrayView(contents)) { - throw new TypeError('onLoad plugins must return an object with "contents" as a string or Uint8Array'); - } - - if (!(typeof loader === "string")) { - throw new TypeError('onLoad plugins must return an object with "loader" as a string'); - } - - const chosenLoader = LOADERS_MAP[loader]; - if (chosenLoader === undefined) { - throw new TypeError(`Loader ${loader} is not supported.`); - } - - this.onLoadAsync(internalID, contents, chosenLoader); - return null; - } - } - - this.onLoadAsync(internalID, null, null); - return null; - })(internalID, path, namespace, loaderName); - - while ( - promiseResult && - $isPromise(promiseResult) && - ($getPromiseInternalField(promiseResult, $promiseFieldFlags) & $promiseStateMask) === $promiseStateFulfilled - ) { - promiseResult = $getPromiseInternalField(promiseResult, $promiseFieldReactionsOrResult); - } - - if (promiseResult && $isPromise(promiseResult)) { - promiseResult.then( - () => {}, - e => { - this.addError(internalID, e, 1); - }, - ); - } -} diff --git a/src/bun.js/builtins/ts/ByteLengthQueuingStrategy.ts b/src/bun.js/builtins/ts/ByteLengthQueuingStrategy.ts deleted file mode 100644 index fc3f3d998..000000000 --- a/src/bun.js/builtins/ts/ByteLengthQueuingStrategy.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2015 Canon Inc. - * Copyright (C) 2015 Igalia S.L. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -$getter; -export function highWaterMark(this: any) { - const highWaterMark = $getByIdDirectPrivate(this, "highWaterMark"); - if (highWaterMark === undefined) - throw new TypeError("ByteLengthQueuingStrategy.highWaterMark getter called on incompatible |this| value."); - - return highWaterMark; -} - -export function size(chunk) { - return chunk.byteLength; -} - -export function initializeByteLengthQueuingStrategy(this: any, parameters: any) { - $putByIdDirectPrivate(this, "highWaterMark", $extractHighWaterMarkFromQueuingStrategyInit(parameters)); -} diff --git a/src/bun.js/builtins/ts/ConsoleObject.ts b/src/bun.js/builtins/ts/ConsoleObject.ts deleted file mode 100644 index 45746459a..000000000 --- a/src/bun.js/builtins/ts/ConsoleObject.ts +++ /dev/null @@ -1,84 +0,0 @@ -$overriddenName = "[Symbol.asyncIterator]"; -export function asyncIterator(this: Console) { - const Iterator = async function* ConsoleAsyncIterator() { - const stream = Bun.stdin.stream(); - var reader = stream.getReader(); - - // TODO: use builtin - var decoder = new (globalThis as any).TextDecoder("utf-8", { fatal: false }) as TextDecoder; - var deferredError; - var indexOf = Bun.indexOfLine; - - try { - while (true) { - var done, value; - var pendingChunk; - const firstResult = reader.readMany(); - if ($isPromise(firstResult)) { - ({ done, value } = await firstResult); - } else { - ({ done, value } = firstResult); - } - - if (done) { - if (pendingChunk) { - yield decoder.decode(pendingChunk); - } - return; - } - - var actualChunk; - // we assume it was given line-by-line - for (const chunk of value) { - actualChunk = chunk; - if (pendingChunk) { - actualChunk = Buffer.concat([pendingChunk, chunk]); - pendingChunk = null; - } - - var last = 0; - // TODO: "\r", 0x4048, 0x4049, 0x404A, 0x404B, 0x404C, 0x404D, 0x404E, 0x404F - var i = indexOf(actualChunk, last); - while (i !== -1) { - yield decoder.decode(actualChunk.subarray(last, i)); - last = i + 1; - i = indexOf(actualChunk, last); - } - - pendingChunk = actualChunk.subarray(last); - } - } - } catch (e) { - deferredError = e; - } finally { - reader.releaseLock(); - - if (deferredError) { - throw deferredError; - } - } - }; - - const symbol = globalThis.Symbol.asyncIterator; - this[symbol] = Iterator; - return Iterator(); -} - -export function write(this: Console, input) { - var writer = $getByIdDirectPrivate(this, "writer"); - if (!writer) { - var length = $toLength(input?.length ?? 0); - writer = Bun.stdout.writer({ highWaterMark: length > 65536 ? length : 65536 }); - $putByIdDirectPrivate(this, "writer", writer); - } - - var wrote = writer.write(input); - - const count = $argumentCount(); - for (var i = 1; i < count; i++) { - wrote += writer.write($argument(i)); - } - - writer.flush(true); - return wrote; -} diff --git a/src/bun.js/builtins/ts/CountQueuingStrategy.ts b/src/bun.js/builtins/ts/CountQueuingStrategy.ts deleted file mode 100644 index a72dca1ca..000000000 --- a/src/bun.js/builtins/ts/CountQueuingStrategy.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2015 Canon Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -$getter; -export function highWaterMark(this: any) { - const highWaterMark = $getByIdDirectPrivate(this, "highWaterMark"); - - if (highWaterMark === undefined) - throw new TypeError("CountQueuingStrategy.highWaterMark getter called on incompatible |this| value."); - - return highWaterMark; -} - -export function size() { - return 1; -} - -export function initializeCountQueuingStrategy(this: any, parameters: any) { - $putByIdDirectPrivate(this, "highWaterMark", $extractHighWaterMarkFromQueuingStrategyInit(parameters)); -} diff --git a/src/bun.js/builtins/ts/ImportMetaObject.ts b/src/bun.js/builtins/ts/ImportMetaObject.ts deleted file mode 100644 index 2df0f0c98..000000000 --- a/src/bun.js/builtins/ts/ImportMetaObject.ts +++ /dev/null @@ -1,257 +0,0 @@ -type ImportMetaObject = Partial<ImportMeta>; - -export function loadCJS2ESM(this: ImportMetaObject, resolvedSpecifier: string) { - var loader = Loader; - var queue = $createFIFO(); - var key = resolvedSpecifier; - while (key) { - // we need to explicitly check because state could be $ModuleFetch - // it will throw this error if we do not: - // $throwTypeError("Requested module is already fetched."); - var entry = loader.registry.$get(key); - - if (!entry || !entry.state || entry.state <= $ModuleFetch) { - $fulfillModuleSync(key); - entry = loader.registry.$get(key)!; - } - - // entry.fetch is a Promise<SourceCode> - // SourceCode is not a string, it's a JSC::SourceCode object - // this pulls it out of the promise without delaying by a tick - // the promise is already fullfilled by $fullfillModuleSync - var sourceCodeObject = $getPromiseInternalField(entry.fetch, $promiseFieldReactionsOrResult); - // parseModule() returns a Promise, but the value is already fulfilled - // so we just pull it out of the promise here once again - // But, this time we do it a little more carefully because this is a JSC function call and not bun source code - var moduleRecordPromise = loader.parseModule(key, sourceCodeObject); - var module = entry.module; - if (!module && moduleRecordPromise && $isPromise(moduleRecordPromise)) { - var reactionsOrResult = $getPromiseInternalField(moduleRecordPromise, $promiseFieldReactionsOrResult); - var flags = $getPromiseInternalField(moduleRecordPromise, $promiseFieldFlags); - var state = flags & $promiseStateMask; - // this branch should never happen, but just to be safe - if (state === $promiseStatePending || (reactionsOrResult && $isPromise(reactionsOrResult))) { - throw new TypeError(`require() async module "${key}" is unsupported`); - } else if (state === $promiseStateRejected) { - // TODO: use SyntaxError but preserve the specifier - throw new TypeError(`${reactionsOrResult?.message ?? "An error occurred"} while parsing module \"${key}\"`); - } - entry.module = module = reactionsOrResult; - } else if (moduleRecordPromise && !module) { - entry.module = module = moduleRecordPromise as LoaderModule; - } - - // This is very similar to "requestInstantiate" in ModuleLoader.js in JavaScriptCore. - $setStateToMax(entry, $ModuleLink); - var dependenciesMap = module.dependenciesMap; - var requestedModules = loader.requestedModules(module); - var dependencies = $newArrayWithSize<string>(requestedModules.length); - for (var i = 0, length = requestedModules.length; i < length; ++i) { - var depName = requestedModules[i]; - // optimization: if it starts with a slash then it's an absolute path - // we don't need to run the resolver a 2nd time - var depKey = depName[0] === "/" ? depName : loader.resolve(depName, key); - var depEntry = loader.ensureRegistered(depKey); - if (depEntry.state < $ModuleLink) { - queue.push(depKey); - } - - $putByValDirect(dependencies, i, depEntry); - dependenciesMap.$set(depName, depEntry); - } - - entry.dependencies = dependencies; - // All dependencies resolved, set instantiate and satisfy field directly. - entry.instantiate = Promise.resolve(entry); - entry.satisfy = Promise.resolve(entry); - key = queue.shift(); - while (key && (loader.registry.$get(key)?.state ?? $ModuleFetch) >= $ModuleLink) { - key = queue.shift(); - } - } - - var linkAndEvaluateResult = loader.linkAndEvaluateModule(resolvedSpecifier, undefined); - if (linkAndEvaluateResult && $isPromise(linkAndEvaluateResult)) { - // if you use top-level await, or any dependencies use top-level await, then we throw here - // this means the module will still actually load eventually, but that's okay. - throw new TypeError(`require() async module \"${resolvedSpecifier}\" is unsupported`); - } - - return loader.registry.$get(resolvedSpecifier); -} - -export function requireESM(this: ImportMetaObject, resolved) { - var entry = Loader.registry.$get(resolved); - - if (!entry || !entry.evaluated) { - entry = $loadCJS2ESM(resolved); - } - - if (!entry || !entry.evaluated || !entry.module) { - throw new TypeError(`require() failed to evaluate module "${resolved}". This is an internal consistentency error.`); - } - var exports = Loader.getModuleNamespaceObject(entry.module); - if (exports[$commonJSSymbol] === 0) { - // CommonJS module created via `Bun::CommonJSModuleRecord` - // We will refer to the requireMap to get the exports - return; - } - - var commonJS = exports.default; - var cjs = commonJS?.[$commonJSSymbol]; - if (cjs === 0) { - return commonJS; - } else if (cjs && $isCallable(commonJS)) { - return commonJS(); - } - - return exports; -} - -export function internalRequire(this: ImportMetaObject, resolved) { - var cached = $requireMap.$get(resolved); - const last5 = resolved.substring(resolved.length - 5); - if (cached) { - if (last5 === ".node") { - return cached.exports; - } - return cached; - } - - // TODO: remove this hardcoding - if (last5 === ".json") { - var fs = (globalThis[Symbol.for("_fs")] ||= Bun.fs()); - var exports = JSON.parse(fs.readFileSync(resolved, "utf8")); - $requireMap.$set(resolved, exports); - return exports; - } else if (last5 === ".node") { - var module = { exports: {} }; - process.dlopen(module, resolved); - $requireMap.$set(resolved, module); - return module.exports; - } else if (last5 === ".toml") { - var fs = (globalThis[Symbol.for("_fs")] ||= Bun.fs()); - var exports = Bun.TOML.parse(fs.readFileSync(resolved, "utf8")); - $requireMap.$set(resolved, exports); - return exports; - } else { - var exports = $requireESM(resolved); - const cachedExports = $requireMap.$get(resolved); - if (cachedExports) { - return cachedExports; - } - - $requireMap.$set(resolved, exports); - return exports; - } -} - -export function createRequireCache() { - class Module { - id; - parent; - filename; - children = []; - paths = []; - - constructor(filename) { - this.id = filename; - // TODO: windows - const lastSlash = filename.lastIndexOf("/"); - if (lastSlash !== -1 && filename.length > lastSlash + 1) { - this.filename = filename.substring(lastSlash + 1); - } else { - this.filename = filename; - } - } - - get loaded() { - return true; - } - - require(path) { - return $internalRequire($resolveSync(path, this.id)); - } - - get exports() { - return $requireMap.$get(this.id) ?? {}; - } - - set exports(value) { - $requireMap.$set(this.id, value); - } - } - - var moduleMap = new Map(); - - return new Proxy( - {}, - { - get(target, key: string) { - const entry = $requireMap.$get(key); - if (entry) { - var mod = moduleMap.$get(key); - if (!mod) { - mod = new Module(key); - moduleMap.$set(key, mod); - } - return mod; - } - }, - set(target, key: string, value) { - if (!moduleMap.$has(key)) { - moduleMap.$set(key, new Module(key)); - } - - $requireMap.$set(key, value?.exports); - - return true; - }, - - has(target, key: string) { - return $requireMap.$has(key); - }, - - deleteProperty(target, key: string) { - moduleMap.$delete(key); - $requireMap.$delete(key); - Loader.registry.$delete(key); - return true; - }, - - ownKeys(target) { - return [...$requireMap.$keys()]; - }, - - // In Node, require.cache has a null prototype - getPrototypeOf(target) { - return null; - }, - - getOwnPropertyDescriptor(target, key: string) { - if ($requireMap.$has(key)) { - return { - configurable: true, - enumerable: true, - }; - } - }, - }, - ); -} - -$sloppy; -export function require(this: ImportMetaObject, name) { - var from = this?.path ?? arguments.callee.path; - - if (typeof name !== "string") { - throw new TypeError("require(name) must be a string"); - } - - return $internalRequire($resolveSync(name, from)); -} - -$getter; -export function main(this: ImportMetaObject) { - return this.path === Bun.main; -} diff --git a/src/bun.js/builtins/ts/JSBufferConstructor.ts b/src/bun.js/builtins/ts/JSBufferConstructor.ts deleted file mode 100644 index debc62d51..000000000 --- a/src/bun.js/builtins/ts/JSBufferConstructor.ts +++ /dev/null @@ -1,67 +0,0 @@ -export function from(items) { - if ($isUndefinedOrNull(items)) { - throw new TypeError( - "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object.", - ); - } - - // TODO: figure out why private symbol not found - if ( - typeof items === "string" || - (typeof items === "object" && - ($isTypedArrayView(items) || - items instanceof ArrayBuffer || - items instanceof SharedArrayBuffer || - items instanceof String)) - ) { - switch ($argumentCount()) { - case 1: { - return new $Buffer(items); - } - case 2: { - return new $Buffer(items, $argument(1)); - } - default: { - return new $Buffer(items, $argument(1), $argument(2)); - } - } - } - - var arrayLike = $toObject( - items, - "The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object.", - ) as ArrayLike<any>; - - if (!$isJSArray(arrayLike)) { - const toPrimitive = $tryGetByIdWithWellKnownSymbol(items, "toPrimitive"); - - if (toPrimitive) { - const primitive = toPrimitive.$call(items, "string"); - - if (typeof primitive === "string") { - switch ($argumentCount()) { - case 1: { - return new $Buffer(primitive); - } - case 2: { - return new $Buffer(primitive, $argument(1)); - } - default: { - return new $Buffer(primitive, $argument(1), $argument(2)); - } - } - } - } - - if (!("length" in arrayLike) || $isCallable(arrayLike)) { - throw new TypeError( - "The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object.", - ); - } - } - - // Don't pass the second argument because Node's Buffer.from doesn't accept - // a function and Uint8Array.from requires it if it exists - // That means we cannot use $tailCallFowrardArguments here, sadly - return new $Buffer(Uint8Array.from(arrayLike).buffer); -} diff --git a/src/bun.js/builtins/ts/JSBufferPrototype.ts b/src/bun.js/builtins/ts/JSBufferPrototype.ts deleted file mode 100644 index 97b25b9b2..000000000 --- a/src/bun.js/builtins/ts/JSBufferPrototype.ts +++ /dev/null @@ -1,495 +0,0 @@ -// The fastest way as of April 2022 is to use DataView. -// DataView has intrinsics that cause inlining - -interface BufferExt extends Buffer { - $dataView?: DataView; - - toString(encoding?: BufferEncoding, start?: number, end?: number): string; - toString(offset: number, length: number, encoding?: BufferEncoding): string; -} - -export function setBigUint64(this: BufferExt, offset, value, le) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setBigUint64( - offset, - value, - le, - ); -} -export function readInt8(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getInt8(offset); -} -export function readUInt8(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getUint8(offset); -} -export function readInt16LE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getInt16(offset, true); -} -export function readInt16BE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getInt16(offset, false); -} -export function readUInt16LE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getUint16(offset, true); -} -export function readUInt16BE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getUint16(offset, false); -} -export function readInt32LE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getInt32(offset, true); -} -export function readInt32BE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getInt32(offset, false); -} -export function readUInt32LE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getUint32(offset, true); -} -export function readUInt32BE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getUint32(offset, false); -} - -export function readIntLE(this: BufferExt, offset, byteLength) { - const view = (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)); - switch (byteLength) { - case 1: { - return view.getInt8(offset); - } - case 2: { - return view.getInt16(offset, true); - } - case 3: { - const val = view.getUint16(offset, true) + view.getUint8(offset + 2) * 2 ** 16; - return val | ((val & (2 ** 23)) * 0x1fe); - } - case 4: { - return view.getInt32(offset, true); - } - case 5: { - const last = view.getUint8(offset + 4); - return (last | ((last & (2 ** 7)) * 0x1fffffe)) * 2 ** 32 + view.getUint32(offset, true); - } - case 6: { - const last = view.getUint16(offset + 4, true); - return (last | ((last & (2 ** 15)) * 0x1fffe)) * 2 ** 32 + view.getUint32(offset, true); - } - } - throw new RangeError("byteLength must be >= 1 and <= 6"); -} -export function readIntBE(this: BufferExt, offset, byteLength) { - const view = (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)); - switch (byteLength) { - case 1: { - return view.getInt8(offset); - } - case 2: { - return view.getInt16(offset, false); - } - case 3: { - const val = view.getUint16(offset + 1, false) + view.getUint8(offset) * 2 ** 16; - return val | ((val & (2 ** 23)) * 0x1fe); - } - case 4: { - return view.getInt32(offset, false); - } - case 5: { - const last = view.getUint8(offset); - return (last | ((last & (2 ** 7)) * 0x1fffffe)) * 2 ** 32 + view.getUint32(offset + 1, false); - } - case 6: { - const last = view.getUint16(offset, false); - return (last | ((last & (2 ** 15)) * 0x1fffe)) * 2 ** 32 + view.getUint32(offset + 2, false); - } - } - throw new RangeError("byteLength must be >= 1 and <= 6"); -} -export function readUIntLE(this: BufferExt, offset, byteLength) { - const view = (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)); - switch (byteLength) { - case 1: { - return view.getUint8(offset); - } - case 2: { - return view.getUint16(offset, true); - } - case 3: { - return view.getUint16(offset, true) + view.getUint8(offset + 2) * 2 ** 16; - } - case 4: { - return view.getUint32(offset, true); - } - case 5: { - return view.getUint8(offset + 4) * 2 ** 32 + view.getUint32(offset, true); - } - case 6: { - return view.getUint16(offset + 4, true) * 2 ** 32 + view.getUint32(offset, true); - } - } - throw new RangeError("byteLength must be >= 1 and <= 6"); -} -export function readUIntBE(this: BufferExt, offset, byteLength) { - const view = (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)); - switch (byteLength) { - case 1: { - return view.getUint8(offset); - } - case 2: { - return view.getUint16(offset, false); - } - case 3: { - return view.getUint16(offset + 1, false) + view.getUint8(offset) * 2 ** 16; - } - case 4: { - return view.getUint32(offset, false); - } - case 5: { - const last = view.getUint8(offset); - return (last | ((last & (2 ** 7)) * 0x1fffffe)) * 2 ** 32 + view.getUint32(offset + 1, false); - } - case 6: { - const last = view.getUint16(offset, false); - return (last | ((last & (2 ** 15)) * 0x1fffe)) * 2 ** 32 + view.getUint32(offset + 2, false); - } - } - throw new RangeError("byteLength must be >= 1 and <= 6"); -} - -export function readFloatLE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getFloat32(offset, true); -} -export function readFloatBE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getFloat32(offset, false); -} -export function readDoubleLE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getFloat64(offset, true); -} -export function readDoubleBE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getFloat64(offset, false); -} -export function readBigInt64LE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getBigInt64(offset, true); -} -export function readBigInt64BE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getBigInt64(offset, false); -} -export function readBigUInt64LE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getBigUint64(offset, true); -} -export function readBigUInt64BE(this: BufferExt, offset) { - return (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).getBigUint64(offset, false); -} - -export function writeInt8(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setInt8(offset, value); - return offset + 1; -} -export function writeUInt8(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setUint8(offset, value); - return offset + 1; -} -export function writeInt16LE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setInt16(offset, value, true); - return offset + 2; -} -export function writeInt16BE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setInt16(offset, value, false); - return offset + 2; -} -export function writeUInt16LE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setUint16(offset, value, true); - return offset + 2; -} -export function writeUInt16BE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setUint16(offset, value, false); - return offset + 2; -} -export function writeInt32LE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setInt32(offset, value, true); - return offset + 4; -} -export function writeInt32BE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setInt32(offset, value, false); - return offset + 4; -} -export function writeUInt32LE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setUint32(offset, value, true); - return offset + 4; -} -export function writeUInt32BE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setUint32(offset, value, false); - return offset + 4; -} - -export function writeIntLE(this: BufferExt, value, offset, byteLength) { - const view = (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)); - switch (byteLength) { - case 1: { - view.setInt8(offset, value); - break; - } - case 2: { - view.setInt16(offset, value, true); - break; - } - case 3: { - view.setUint16(offset, value & 0xffff, true); - view.setInt8(offset + 2, Math.floor(value * 2 ** -16)); - break; - } - case 4: { - view.setInt32(offset, value, true); - break; - } - case 5: { - view.setUint32(offset, value | 0, true); - view.setInt8(offset + 4, Math.floor(value * 2 ** -32)); - break; - } - case 6: { - view.setUint32(offset, value | 0, true); - view.setInt16(offset + 4, Math.floor(value * 2 ** -32), true); - break; - } - default: { - throw new RangeError("byteLength must be >= 1 and <= 6"); - } - } - return offset + byteLength; -} -export function writeIntBE(this: BufferExt, value, offset, byteLength) { - const view = (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)); - switch (byteLength) { - case 1: { - view.setInt8(offset, value); - break; - } - case 2: { - view.setInt16(offset, value, false); - break; - } - case 3: { - view.setUint16(offset + 1, value & 0xffff, false); - view.setInt8(offset, Math.floor(value * 2 ** -16)); - break; - } - case 4: { - view.setInt32(offset, value, false); - break; - } - case 5: { - view.setUint32(offset + 1, value | 0, false); - view.setInt8(offset, Math.floor(value * 2 ** -32)); - break; - } - case 6: { - view.setUint32(offset + 2, value | 0, false); - view.setInt16(offset, Math.floor(value * 2 ** -32), false); - break; - } - default: { - throw new RangeError("byteLength must be >= 1 and <= 6"); - } - } - return offset + byteLength; -} -export function writeUIntLE(this: BufferExt, value, offset, byteLength) { - const view = (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)); - switch (byteLength) { - case 1: { - view.setUint8(offset, value); - break; - } - case 2: { - view.setUint16(offset, value, true); - break; - } - case 3: { - view.setUint16(offset, value & 0xffff, true); - view.setUint8(offset + 2, Math.floor(value * 2 ** -16)); - break; - } - case 4: { - view.setUint32(offset, value, true); - break; - } - case 5: { - view.setUint32(offset, value | 0, true); - view.setUint8(offset + 4, Math.floor(value * 2 ** -32)); - break; - } - case 6: { - view.setUint32(offset, value | 0, true); - view.setUint16(offset + 4, Math.floor(value * 2 ** -32), true); - break; - } - default: { - throw new RangeError("byteLength must be >= 1 and <= 6"); - } - } - return offset + byteLength; -} -export function writeUIntBE(this: BufferExt, value, offset, byteLength) { - const view = (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)); - switch (byteLength) { - case 1: { - view.setUint8(offset, value); - break; - } - case 2: { - view.setUint16(offset, value, false); - break; - } - case 3: { - view.setUint16(offset + 1, value & 0xffff, false); - view.setUint8(offset, Math.floor(value * 2 ** -16)); - break; - } - case 4: { - view.setUint32(offset, value, false); - break; - } - case 5: { - view.setUint32(offset + 1, value | 0, false); - view.setUint8(offset, Math.floor(value * 2 ** -32)); - break; - } - case 6: { - view.setUint32(offset + 2, value | 0, false); - view.setUint16(offset, Math.floor(value * 2 ** -32), false); - break; - } - default: { - throw new RangeError("byteLength must be >= 1 and <= 6"); - } - } - return offset + byteLength; -} - -export function writeFloatLE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setFloat32(offset, value, true); - return offset + 4; -} - -export function writeFloatBE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setFloat32(offset, value, false); - return offset + 4; -} - -export function writeDoubleLE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setFloat64(offset, value, true); - return offset + 8; -} - -export function writeDoubleBE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setFloat64(offset, value, false); - return offset + 8; -} - -export function writeBigInt64LE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setBigInt64(offset, value, true); - return offset + 8; -} - -export function writeBigInt64BE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setBigInt64(offset, value, false); - return offset + 8; -} - -export function writeBigUInt64LE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setBigUint64(offset, value, true); - return offset + 8; -} - -export function writeBigUInt64BE(this: BufferExt, value, offset) { - (this.$dataView ||= new DataView(this.buffer, this.byteOffset, this.byteLength)).setBigUint64(offset, value, false); - return offset + 8; -} - -export function utf8Write(this: BufferExt, text, offset, length) { - return this.write(text, offset, length, "utf8"); -} -export function ucs2Write(this: BufferExt, text, offset, length) { - return this.write(text, offset, length, "ucs2"); -} -export function utf16leWrite(this: BufferExt, text, offset, length) { - return this.write(text, offset, length, "utf16le"); -} -export function latin1Write(this: BufferExt, text, offset, length) { - return this.write(text, offset, length, "latin1"); -} -export function asciiWrite(this: BufferExt, text, offset, length) { - return this.write(text, offset, length, "ascii"); -} -export function base64Write(this: BufferExt, text, offset, length) { - return this.write(text, offset, length, "base64"); -} -export function base64urlWrite(this: BufferExt, text, offset, length) { - return this.write(text, offset, length, "base64url"); -} -export function hexWrite(this: BufferExt, text, offset, length) { - return this.write(text, offset, length, "hex"); -} - -export function utf8Slice(this: BufferExt, offset, length) { - return this.toString(offset, length, "utf8"); -} -export function ucs2Slice(this: BufferExt, offset, length) { - return this.toString(offset, length, "ucs2"); -} -export function utf16leSlice(this: BufferExt, offset, length) { - return this.toString(offset, length, "utf16le"); -} -export function latin1Slice(this: BufferExt, offset, length) { - return this.toString(offset, length, "latin1"); -} -export function asciiSlice(this: BufferExt, offset, length) { - return this.toString(offset, length, "ascii"); -} -export function base64Slice(this: BufferExt, offset, length) { - return this.toString(offset, length, "base64"); -} -export function base64urlSlice(this: BufferExt, offset, length) { - return this.toString(offset, length, "base64url"); -} -export function hexSlice(this: BufferExt, offset, length) { - return this.toString(offset, length, "hex"); -} - -export function toJSON(this: BufferExt) { - const type = "Buffer"; - const data = Array.from(this); - return { type, data }; -} - -export function slice(this: BufferExt, start, end) { - var { buffer, byteOffset, byteLength } = this; - - function adjustOffset(offset, length) { - // Use Math.trunc() to convert offset to an integer value that can be larger - // than an Int32. Hence, don't use offset | 0 or similar techniques. - offset = $trunc(offset); - if (offset === 0 || isNaN(offset)) { - return 0; - } else if (offset < 0) { - offset += length; - return offset > 0 ? offset : 0; - } else { - return offset < length ? offset : length; - } - } - - var start_ = adjustOffset(start, byteLength); - var end_ = end !== undefined ? adjustOffset(end, byteLength) : byteLength; - return new $Buffer(buffer, byteOffset + start_, end_ > start_ ? end_ - start_ : 0); -} - -$getter; -export function parent(this: BufferExt) { - return $isObject(this) && this instanceof $Buffer ? this.buffer : undefined; -} - -$getter; -export function offset(this: BufferExt) { - return $isObject(this) && this instanceof $Buffer ? this.byteOffset : undefined; -} - -export function inspect(this: BufferExt, recurseTimes, ctx) { - return Bun.inspect(this); -} diff --git a/src/bun.js/builtins/ts/ProcessObjectInternals.ts b/src/bun.js/builtins/ts/ProcessObjectInternals.ts deleted file mode 100644 index 8b24e68ba..000000000 --- a/src/bun.js/builtins/ts/ProcessObjectInternals.ts +++ /dev/null @@ -1,676 +0,0 @@ -/* - * Copyright 2023 Codeblog Corp. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function binding(bindingName) { - if (bindingName !== "constants") - throw new TypeError( - "process.binding() is not supported in Bun. If that breaks something, please file an issue and include a reproducible code sample.", - ); - - var cache = globalThis.Symbol.for("process.bindings.constants"); - var constants = globalThis[cache]; - if (!constants) { - // TODO: make this less hacky. - // This calls require("node:fs").constants - // except, outside an ESM module. - const { constants: fs } = globalThis[globalThis.Symbol.for("Bun.lazy")]("createImportMeta", "node:process").require( - "node:fs", - ); - constants = { - fs, - zlib: {}, - crypto: {}, - os: Bun._Os().constants, - }; - globalThis[cache] = constants; - } - return constants; -} - -export function getStdioWriteStream(fd_, rawRequire) { - var module = { path: "node:process", require: rawRequire }; - var require = path => module.require(path); - - function createStdioWriteStream(fd_) { - var { Duplex, eos, destroy } = require("node:stream"); - var StdioWriteStream = class StdioWriteStream extends Duplex { - #writeStream; - #readStream; - - #readable = true; - #writable = true; - #fdPath; - - #onClose; - #onDrain; - #onFinish; - #onReadable; - #isTTY; - - get isTTY() { - return (this.#isTTY ??= require("node:tty").isatty(fd_)); - } - - get fd() { - return fd_; - } - - constructor(fd) { - super({ readable: true, writable: true }); - this.#fdPath = `/dev/fd/${fd}`; - } - - #onFinished(err) { - const cb = this.#onClose; - this.#onClose = null; - - if (cb) { - cb(err); - } else if (err) { - this.destroy(err); - } else if (!this.#readable && !this.#writable) { - this.destroy(); - } - } - - _destroy(err, callback) { - if (!err && this.#onClose !== null) { - var AbortError = class AbortError extends Error { - code: string; - name: string; - constructor(message = "The operation was aborted", options = void 0) { - if (options !== void 0 && typeof options !== "object") { - throw new Error(`Invalid AbortError options:\n\n${JSON.stringify(options, null, 2)}`); - } - super(message, options); - this.code = "ABORT_ERR"; - this.name = "AbortError"; - } - }; - err = new AbortError(); - } - - this.#onDrain = null; - this.#onFinish = null; - if (this.#onClose === null) { - callback(err); - } else { - this.#onClose = callback; - if (this.#writeStream) destroy(this.#writeStream, err); - if (this.#readStream) destroy(this.#readStream, err); - } - } - - _write(chunk, encoding, callback) { - if (!this.#writeStream) { - var { createWriteStream } = require("node:fs"); - var stream = (this.#writeStream = createWriteStream(this.#fdPath)); - - stream.on("finish", () => { - if (this.#onFinish) { - const cb = this.#onFinish; - this.#onFinish = null; - cb(); - } - }); - - stream.on("drain", () => { - if (this.#onDrain) { - const cb = this.#onDrain; - this.#onDrain = null; - cb(); - } - }); - - eos(stream, err => { - this.#writable = false; - if (err) { - destroy(stream, err); - } - this.#onFinished(err); - }); - } - if (stream.write(chunk, encoding)) { - callback(); - } else { - this.#onDrain = callback; - } - } - - _final(callback) { - this.#writeStream && this.#writeStream.end(); - this.#onFinish = callback; - } - - #loadReadStream() { - var { createReadStream } = require("node:fs"); - - var readStream = (this.#readStream = createReadStream(this.#fdPath)); - - readStream.on("readable", () => { - if (this.#onReadable) { - const cb = this.#onReadable; - this.#onReadable = null; - cb(); - } else { - this.read(); - } - }); - - readStream.on("end", () => { - this.push(null); - }); - - eos(readStream, err => { - this.#readable = false; - if (err) { - destroy(readStream, err); - } - this.#onFinished(err); - }); - return readStream; - } - - _read() { - var stream = this.#readStream; - if (!stream) { - stream = this.#loadReadStream(); - } - - while (true) { - const buf = stream.read(); - if (buf === null || !this.push(buf)) { - return; - } - } - } - }; - return new StdioWriteStream(fd_); - } - - var { EventEmitter } = require("node:events"); - - function isFastEncoding(encoding) { - if (!encoding) return true; - - var normalied = encoding.toLowerCase(); - return normalied === "utf8" || normalied === "utf-8" || normalied === "buffer" || normalied === "binary"; - } - - var readline; - - var FastStdioWriteStream = class StdioWriteStream extends EventEmitter { - #fd; - #innerStream; - #writer; - #isTTY; - - bytesWritten = 0; - - setDefaultEncoding(encoding) { - if (this.#innerStream || !isFastEncoding(encoding)) { - this.#ensureInnerStream(); - return this.#innerStream.setDefaultEncoding(encoding); - } - } - - #createWriter() { - switch (this.#fd) { - case 1: { - var writer = Bun.stdout.writer({ highWaterMark: 0 }); - writer.unref(); - return writer; - } - - case 2: { - var writer = Bun.stderr.writer({ highWaterMark: 0 }); - writer.unref(); - return writer; - } - default: { - throw new Error("Unsupported writer"); - } - } - } - - #getWriter() { - return (this.#writer ??= this.#createWriter()); - } - - constructor(fd_) { - super(); - this.#fd = fd_; - } - - get fd() { - return this.#fd; - } - - get isTTY() { - return (this.#isTTY ??= require("node:tty").isatty(this.#fd)); - } - - cursorTo(x, y, callback) { - return (readline ??= require("readline")).cursorTo(this, x, y, callback); - } - - moveCursor(dx, dy, callback) { - return (readline ??= require("readline")).moveCursor(this, dx, dy, callback); - } - - clearLine(dir, callback) { - return (readline ??= require("readline")).clearLine(this, dir, callback); - } - - clearScreenDown(callback) { - return (readline ??= require("readline")).clearScreenDown(this, callback); - } - - // TODO: once implemented this.columns and this.rows should be uncommented - // getWindowSize() { - // return [this.columns, this.rows]; - // } - - ref() { - this.#getWriter().ref(); - } - - unref() { - this.#getWriter().unref(); - } - - on(event, listener) { - if (event === "close" || event === "finish") { - this.#ensureInnerStream(); - return this.#innerStream.on(event, listener); - } - - if (event === "drain") { - return super.on("drain", listener); - } - - if (event === "error") { - return super.on("error", listener); - } - - return super.on(event, listener); - } - - get _writableState() { - this.#ensureInnerStream(); - return this.#innerStream._writableState; - } - - get _readableState() { - this.#ensureInnerStream(); - return this.#innerStream._readableState; - } - - pipe(destination) { - this.#ensureInnerStream(); - return this.#innerStream.pipe(destination); - } - - unpipe(destination) { - this.#ensureInnerStream(); - return this.#innerStream.unpipe(destination); - } - - #ensureInnerStream() { - if (this.#innerStream) return; - this.#innerStream = createStdioWriteStream(this.#fd); - const events = this.eventNames(); - for (const event of events) { - this.#innerStream.on(event, (...args) => { - this.emit(event, ...args); - }); - } - } - - #write1(chunk) { - var writer = this.#getWriter(); - const writeResult = writer.write(chunk); - this.bytesWritten += writeResult; - const flushResult = writer.flush(false); - return !!(writeResult || flushResult); - } - - #writeWithEncoding(chunk, encoding) { - if (!isFastEncoding(encoding)) { - this.#ensureInnerStream(); - return this.#innerStream.write(chunk, encoding); - } - - return this.#write1(chunk); - } - - #performCallback(cb, err?: any) { - if (err) { - this.emit("error", err); - } - - try { - cb(err ? err : null); - } catch (err2) { - this.emit("error", err2); - } - } - - #writeWithCallbackAndEncoding(chunk, encoding, callback) { - if (!isFastEncoding(encoding)) { - this.#ensureInnerStream(); - return this.#innerStream.write(chunk, encoding, callback); - } - - var writer = this.#getWriter(); - const writeResult = writer.write(chunk); - const flushResult = writer.flush(true); - if (flushResult?.then) { - flushResult.then( - () => { - this.#performCallback(callback); - this.emit("drain"); - }, - err => this.#performCallback(callback, err), - ); - return false; - } - - queueMicrotask(() => { - this.#performCallback(callback); - }); - - return !!(writeResult || flushResult); - } - - write(chunk, encoding, callback) { - const result = this._write(chunk, encoding, callback); - - if (result) { - this.emit("drain"); - } - - return result; - } - - get hasColors() { - return Bun.tty[this.#fd].hasColors; - } - - _write(chunk, encoding, callback) { - var inner = this.#innerStream; - if (inner) { - return inner.write(chunk, encoding, callback); - } - - switch (arguments.length) { - case 0: { - var error = new Error("Invalid arguments"); - error.code = "ERR_INVALID_ARG_TYPE"; - throw error; - } - case 1: { - return this.#write1(chunk); - } - case 2: { - if (typeof encoding === "function") { - return this.#writeWithCallbackAndEncoding(chunk, "", encoding); - } else if (typeof encoding === "string") { - return this.#writeWithEncoding(chunk, encoding); - } - } - default: { - if ( - (typeof encoding !== "undefined" && typeof encoding !== "string") || - (typeof callback !== "undefined" && typeof callback !== "function") - ) { - var error = new Error("Invalid arguments"); - error.code = "ERR_INVALID_ARG_TYPE"; - throw error; - } - - if (typeof callback === "undefined") { - return this.#writeWithEncoding(chunk, encoding); - } - - return this.#writeWithCallbackAndEncoding(chunk, encoding, callback); - } - } - } - - destroy() { - return this; - } - - end() { - return this; - } - }; - - return new FastStdioWriteStream(fd_); -} - -export function getStdinStream(fd_, rawRequire, Bun) { - var module = { path: "node:process", require: rawRequire }; - var require = path => module.require(path); - - var { Duplex, eos, destroy } = require("node:stream"); - - var StdinStream = class StdinStream extends Duplex { - #reader; - // TODO: investigate https://github.com/oven-sh/bun/issues/1607 - - #readRef; - #writeStream; - - #readable = true; - #unrefOnRead = false; - #writable = true; - - #onFinish; - #onClose; - #onDrain; - - get isTTY() { - return require("tty").isatty(fd_); - } - - get fd() { - return fd_; - } - - constructor() { - super({ readable: true, writable: true }); - } - - #onFinished(err?) { - const cb = this.#onClose; - this.#onClose = null; - - if (cb) { - cb(err); - } else if (err) { - this.destroy(err); - } else if (!this.#readable && !this.#writable) { - this.destroy(); - } - } - - _destroy(err, callback) { - if (!err && this.#onClose !== null) { - var AbortError = class AbortError extends Error { - constructor(message = "The operation was aborted", options = void 0) { - if (options !== void 0 && typeof options !== "object") { - throw new Error(`Invalid AbortError options:\n\n${JSON.stringify(options, null, 2)}`); - } - super(message, options); - this.code = "ABORT_ERR"; - this.name = "AbortError"; - } - }; - err = new AbortError(); - } - - if (this.#onClose === null) { - callback(err); - } else { - this.#onClose = callback; - if (this.#writeStream) destroy(this.#writeStream, err); - } - } - - setRawMode(mode) {} - - on(name, callback) { - // Streams don't generally required to present any data when only - // `readable` events are present, i.e. `readableFlowing === false` - // - // However, Node.js has a this quirk whereby `process.stdin.read()` - // blocks under TTY mode, thus looping `.read()` in this particular - // case would not result in truncation. - // - // Therefore the following hack is only specific to `process.stdin` - // and does not apply to the underlying Stream implementation. - if (name === "readable") { - this.ref(); - this.#unrefOnRead = true; - } - return super.on(name, callback); - } - - pause() { - this.unref(); - return super.pause(); - } - - resume() { - this.ref(); - return super.resume(); - } - - ref() { - this.#reader ??= Bun.stdin.stream().getReader(); - this.#readRef ??= setInterval(() => {}, 1 << 30); - } - - unref() { - if (this.#readRef) { - clearInterval(this.#readRef); - this.#readRef = null; - } - } - - async #readInternal() { - try { - var done, value; - const read = this.#reader.readMany(); - - // read same-tick if possible - if (!read?.then) { - ({ done, value } = read); - } else { - ({ done, value } = await read); - } - - if (!done) { - this.push(value[0]); - - // shouldn't actually happen, but just in case - const length = value.length; - for (let i = 1; i < length; i++) { - this.push(value[i]); - } - } else { - this.push(null); - this.pause(); - this.#readable = false; - this.#onFinished(); - } - } catch (err) { - this.#readable = false; - this.#onFinished(err); - } - } - - _read(size) { - if (this.#unrefOnRead) { - this.unref(); - this.#unrefOnRead = false; - } - this.#readInternal(); - } - - #constructWriteStream() { - var { createWriteStream } = require("node:fs"); - var writeStream = (this.#writeStream = createWriteStream("/dev/fd/0")); - - writeStream.on("finish", () => { - if (this.#onFinish) { - const cb = this.#onFinish; - this.#onFinish = null; - cb(); - } - }); - - writeStream.on("drain", () => { - if (this.#onDrain) { - const cb = this.#onDrain; - this.#onDrain = null; - cb(); - } - }); - - eos(writeStream, err => { - this.#writable = false; - if (err) { - destroy(writeStream, err); - } - this.#onFinished(err); - }); - - return writeStream; - } - - _write(chunk, encoding, callback) { - var writeStream = this.#writeStream; - if (!writeStream) { - writeStream = this.#constructWriteStream(); - } - - if (writeStream.write(chunk, encoding)) { - callback(); - } else { - this.#onDrain = callback; - } - } - - _final(callback) { - this.#writeStream.end(); - this.#onFinish = (...args) => callback(...args); - } - }; - - return new StdinStream(); -} diff --git a/src/bun.js/builtins/ts/ReadableByteStreamController.ts b/src/bun.js/builtins/ts/ReadableByteStreamController.ts deleted file mode 100644 index 888f241bc..000000000 --- a/src/bun.js/builtins/ts/ReadableByteStreamController.ts +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2016 Canon Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeReadableByteStreamController(this, stream, underlyingByteSource, highWaterMark) { - if (arguments.length !== 4 && arguments[3] !== $isReadableStream) - throw new TypeError("ReadableByteStreamController constructor should not be called directly"); - - return $privateInitializeReadableByteStreamController.$call(this, stream, underlyingByteSource, highWaterMark); -} - -export function enqueue(this, chunk) { - if (!$isReadableByteStreamController(this)) throw $makeThisTypeError("ReadableByteStreamController", "enqueue"); - - if ($getByIdDirectPrivate(this, "closeRequested")) - throw new TypeError("ReadableByteStreamController is requested to close"); - - if ($getByIdDirectPrivate($getByIdDirectPrivate(this, "controlledReadableStream"), "state") !== $streamReadable) - throw new TypeError("ReadableStream is not readable"); - - if (!$isObject(chunk) || !ArrayBuffer.$isView(chunk)) throw new TypeError("Provided chunk is not a TypedArray"); - - return $readableByteStreamControllerEnqueue(this, chunk); -} - -export function error(this, error) { - if (!$isReadableByteStreamController(this)) throw $makeThisTypeError("ReadableByteStreamController", "error"); - - if ($getByIdDirectPrivate($getByIdDirectPrivate(this, "controlledReadableStream"), "state") !== $streamReadable) - throw new TypeError("ReadableStream is not readable"); - - $readableByteStreamControllerError(this, error); -} - -export function close(this) { - if (!$isReadableByteStreamController(this)) throw $makeThisTypeError("ReadableByteStreamController", "close"); - - if ($getByIdDirectPrivate(this, "closeRequested")) throw new TypeError("Close has already been requested"); - - if ($getByIdDirectPrivate($getByIdDirectPrivate(this, "controlledReadableStream"), "state") !== $streamReadable) - throw new TypeError("ReadableStream is not readable"); - - $readableByteStreamControllerClose(this); -} - -$getter; -export function byobRequest(this) { - if (!$isReadableByteStreamController(this)) throw $makeGetterTypeError("ReadableByteStreamController", "byobRequest"); - - var request = $getByIdDirectPrivate(this, "byobRequest"); - if (request === undefined) { - var pending = $getByIdDirectPrivate(this, "pendingPullIntos"); - const firstDescriptor = pending.peek(); - if (firstDescriptor) { - const view = new Uint8Array( - firstDescriptor.buffer, - firstDescriptor.byteOffset + firstDescriptor.bytesFilled, - firstDescriptor.byteLength - firstDescriptor.bytesFilled, - ); - $putByIdDirectPrivate(this, "byobRequest", new ReadableStreamBYOBRequest(this, view, $isReadableStream)); - } - } - - return $getByIdDirectPrivate(this, "byobRequest"); -} - -$getter; -export function desiredSize(this) { - if (!$isReadableByteStreamController(this)) throw $makeGetterTypeError("ReadableByteStreamController", "desiredSize"); - - return $readableByteStreamControllerGetDesiredSize(this); -} diff --git a/src/bun.js/builtins/ts/ReadableByteStreamInternals.ts b/src/bun.js/builtins/ts/ReadableByteStreamInternals.ts deleted file mode 100644 index f44c385b4..000000000 --- a/src/bun.js/builtins/ts/ReadableByteStreamInternals.ts +++ /dev/null @@ -1,656 +0,0 @@ -/* - * Copyright (C) 2016 Canon Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -// @internal - -export function privateInitializeReadableByteStreamController(this, stream, underlyingByteSource, highWaterMark) { - if (!$isReadableStream(stream)) throw new TypeError("ReadableByteStreamController needs a ReadableStream"); - - // readableStreamController is initialized with null value. - if ($getByIdDirectPrivate(stream, "readableStreamController") !== null) - throw new TypeError("ReadableStream already has a controller"); - - $putByIdDirectPrivate(this, "controlledReadableStream", stream); - $putByIdDirectPrivate(this, "underlyingByteSource", underlyingByteSource); - $putByIdDirectPrivate(this, "pullAgain", false); - $putByIdDirectPrivate(this, "pulling", false); - $readableByteStreamControllerClearPendingPullIntos(this); - $putByIdDirectPrivate(this, "queue", $newQueue()); - $putByIdDirectPrivate(this, "started", 0); - $putByIdDirectPrivate(this, "closeRequested", false); - - let hwm = $toNumber(highWaterMark); - if (isNaN(hwm) || hwm < 0) throw new RangeError("highWaterMark value is negative or not a number"); - $putByIdDirectPrivate(this, "strategyHWM", hwm); - - let autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; - if (autoAllocateChunkSize !== undefined) { - autoAllocateChunkSize = $toNumber(autoAllocateChunkSize); - if (autoAllocateChunkSize <= 0 || autoAllocateChunkSize === Infinity || autoAllocateChunkSize === -Infinity) - throw new RangeError("autoAllocateChunkSize value is negative or equal to positive or negative infinity"); - } - $putByIdDirectPrivate(this, "autoAllocateChunkSize", autoAllocateChunkSize); - $putByIdDirectPrivate(this, "pendingPullIntos", $createFIFO()); - - const controller = this; - $promiseInvokeOrNoopNoCatch($getByIdDirectPrivate(controller, "underlyingByteSource"), "start", [controller]).$then( - () => { - $putByIdDirectPrivate(controller, "started", 1); - $assert(!$getByIdDirectPrivate(controller, "pulling")); - $assert(!$getByIdDirectPrivate(controller, "pullAgain")); - $readableByteStreamControllerCallPullIfNeeded(controller); - }, - error => { - if ($getByIdDirectPrivate(stream, "state") === $streamReadable) - $readableByteStreamControllerError(controller, error); - }, - ); - - $putByIdDirectPrivate(this, "cancel", $readableByteStreamControllerCancel); - $putByIdDirectPrivate(this, "pull", $readableByteStreamControllerPull); - - return this; -} - -export function readableStreamByteStreamControllerStart(this, controller) { - $putByIdDirectPrivate(controller, "start", undefined); -} - -export function privateInitializeReadableStreamBYOBRequest(this, controller, view) { - $putByIdDirectPrivate(this, "associatedReadableByteStreamController", controller); - $putByIdDirectPrivate(this, "view", view); -} - -export function isReadableByteStreamController(controller) { - // Same test mechanism as in isReadableStreamDefaultController (ReadableStreamInternals.js). - // See corresponding function for explanations. - return $isObject(controller) && !!$getByIdDirectPrivate(controller, "underlyingByteSource"); -} - -export function isReadableStreamBYOBRequest(byobRequest) { - // Same test mechanism as in isReadableStreamDefaultController (ReadableStreamInternals.js). - // See corresponding function for explanations. - return $isObject(byobRequest) && !!$getByIdDirectPrivate(byobRequest, "associatedReadableByteStreamController"); -} - -export function isReadableStreamBYOBReader(reader) { - // Spec tells to return true only if reader has a readIntoRequests internal slot. - // However, since it is a private slot, it cannot be checked using hasOwnProperty(). - // Since readIntoRequests is initialized with an empty array, the following test is ok. - return $isObject(reader) && !!$getByIdDirectPrivate(reader, "readIntoRequests"); -} - -export function readableByteStreamControllerCancel(controller, reason) { - var pendingPullIntos = $getByIdDirectPrivate(controller, "pendingPullIntos"); - var first = pendingPullIntos.peek(); - if (first) first.bytesFilled = 0; - - $putByIdDirectPrivate(controller, "queue", $newQueue()); - return $promiseInvokeOrNoop($getByIdDirectPrivate(controller, "underlyingByteSource"), "cancel", [reason]); -} - -export function readableByteStreamControllerError(controller, e) { - $assert( - $getByIdDirectPrivate($getByIdDirectPrivate(controller, "controlledReadableStream"), "state") === $streamReadable, - ); - $readableByteStreamControllerClearPendingPullIntos(controller); - $putByIdDirectPrivate(controller, "queue", $newQueue()); - $readableStreamError($getByIdDirectPrivate(controller, "controlledReadableStream"), e); -} - -export function readableByteStreamControllerClose(controller) { - $assert(!$getByIdDirectPrivate(controller, "closeRequested")); - $assert( - $getByIdDirectPrivate($getByIdDirectPrivate(controller, "controlledReadableStream"), "state") === $streamReadable, - ); - - if ($getByIdDirectPrivate(controller, "queue").size > 0) { - $putByIdDirectPrivate(controller, "closeRequested", true); - return; - } - - var first = $getByIdDirectPrivate(controller, "pendingPullIntos")?.peek(); - if (first) { - if (first.bytesFilled > 0) { - const e = $makeTypeError("Close requested while there remain pending bytes"); - $readableByteStreamControllerError(controller, e); - throw e; - } - } - - $readableStreamClose($getByIdDirectPrivate(controller, "controlledReadableStream")); -} - -export function readableByteStreamControllerClearPendingPullIntos(controller) { - $readableByteStreamControllerInvalidateBYOBRequest(controller); - var existing = $getByIdDirectPrivate(controller, "pendingPullIntos"); - if (existing !== undefined) { - existing.clear(); - } else { - $putByIdDirectPrivate(controller, "pendingPullIntos", $createFIFO()); - } -} - -export function readableByteStreamControllerGetDesiredSize(controller) { - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - const state = $getByIdDirectPrivate(stream, "state"); - - if (state === $streamErrored) return null; - if (state === $streamClosed) return 0; - - return $getByIdDirectPrivate(controller, "strategyHWM") - $getByIdDirectPrivate(controller, "queue").size; -} - -export function readableStreamHasBYOBReader(stream) { - const reader = $getByIdDirectPrivate(stream, "reader"); - return reader !== undefined && $isReadableStreamBYOBReader(reader); -} - -export function readableStreamHasDefaultReader(stream) { - const reader = $getByIdDirectPrivate(stream, "reader"); - return reader !== undefined && $isReadableStreamDefaultReader(reader); -} - -export function readableByteStreamControllerHandleQueueDrain(controller) { - $assert( - $getByIdDirectPrivate($getByIdDirectPrivate(controller, "controlledReadableStream"), "state") === $streamReadable, - ); - if (!$getByIdDirectPrivate(controller, "queue").size && $getByIdDirectPrivate(controller, "closeRequested")) - $readableStreamClose($getByIdDirectPrivate(controller, "controlledReadableStream")); - else $readableByteStreamControllerCallPullIfNeeded(controller); -} - -export function readableByteStreamControllerPull(controller) { - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - $assert($readableStreamHasDefaultReader(stream)); - if ($getByIdDirectPrivate(controller, "queue").content?.isNotEmpty()) { - const entry = $getByIdDirectPrivate(controller, "queue").content.shift(); - $getByIdDirectPrivate(controller, "queue").size -= entry.byteLength; - $readableByteStreamControllerHandleQueueDrain(controller); - let view; - try { - view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); - } catch (error) { - return Promise.$reject(error); - } - return $createFulfilledPromise({ value: view, done: false }); - } - - if ($getByIdDirectPrivate(controller, "autoAllocateChunkSize") !== undefined) { - let buffer; - try { - buffer = $createUninitializedArrayBuffer($getByIdDirectPrivate(controller, "autoAllocateChunkSize")); - } catch (error) { - return Promise.$reject(error); - } - const pullIntoDescriptor = { - buffer, - byteOffset: 0, - byteLength: $getByIdDirectPrivate(controller, "autoAllocateChunkSize"), - bytesFilled: 0, - elementSize: 1, - ctor: Uint8Array, - readerType: "default", - }; - $getByIdDirectPrivate(controller, "pendingPullIntos").push(pullIntoDescriptor); - } - - const promise = $readableStreamAddReadRequest(stream); - $readableByteStreamControllerCallPullIfNeeded(controller); - return promise; -} - -export function readableByteStreamControllerShouldCallPull(controller) { - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - - if ($getByIdDirectPrivate(stream, "state") !== $streamReadable) return false; - if ($getByIdDirectPrivate(controller, "closeRequested")) return false; - if (!($getByIdDirectPrivate(controller, "started") > 0)) return false; - const reader = $getByIdDirectPrivate(stream, "reader"); - - if ( - reader && - ($getByIdDirectPrivate(reader, "readRequests")?.isNotEmpty() || !!$getByIdDirectPrivate(reader, "bunNativePtr")) - ) - return true; - if ( - $readableStreamHasBYOBReader(stream) && - $getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readIntoRequests")?.isNotEmpty() - ) - return true; - if ($readableByteStreamControllerGetDesiredSize(controller) > 0) return true; - return false; -} - -export function readableByteStreamControllerCallPullIfNeeded(controller) { - if (!$readableByteStreamControllerShouldCallPull(controller)) return; - - if ($getByIdDirectPrivate(controller, "pulling")) { - $putByIdDirectPrivate(controller, "pullAgain", true); - return; - } - - $assert(!$getByIdDirectPrivate(controller, "pullAgain")); - $putByIdDirectPrivate(controller, "pulling", true); - $promiseInvokeOrNoop($getByIdDirectPrivate(controller, "underlyingByteSource"), "pull", [controller]).$then( - () => { - $putByIdDirectPrivate(controller, "pulling", false); - if ($getByIdDirectPrivate(controller, "pullAgain")) { - $putByIdDirectPrivate(controller, "pullAgain", false); - $readableByteStreamControllerCallPullIfNeeded(controller); - } - }, - error => { - if ( - $getByIdDirectPrivate($getByIdDirectPrivate(controller, "controlledReadableStream"), "state") === - $streamReadable - ) - $readableByteStreamControllerError(controller, error); - }, - ); -} - -export function transferBufferToCurrentRealm(buffer) { - // FIXME: Determine what should be done here exactly (what is already existing in current - // codebase and what has to be added). According to spec, Transfer operation should be - // performed in order to transfer buffer to current realm. For the moment, simply return - // received buffer. - return buffer; -} - -export function readableStreamReaderKind(reader) { - if (!!$getByIdDirectPrivate(reader, "readRequests")) return $getByIdDirectPrivate(reader, "bunNativePtr") ? 3 : 1; - - if (!!$getByIdDirectPrivate(reader, "readIntoRequests")) return 2; - - return 0; -} - -export function readableByteStreamControllerEnqueue(controller, chunk) { - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - $assert(!$getByIdDirectPrivate(controller, "closeRequested")); - $assert($getByIdDirectPrivate(stream, "state") === $streamReadable); - - switch ( - $getByIdDirectPrivate(stream, "reader") ? $readableStreamReaderKind($getByIdDirectPrivate(stream, "reader")) : 0 - ) { - /* default reader */ - case 1: { - if (!$getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readRequests")?.isNotEmpty()) - $readableByteStreamControllerEnqueueChunk( - controller, - $transferBufferToCurrentRealm(chunk.buffer), - chunk.byteOffset, - chunk.byteLength, - ); - else { - $assert(!$getByIdDirectPrivate(controller, "queue").content.size()); - const transferredView = - chunk.constructor === Uint8Array ? chunk : new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength); - $readableStreamFulfillReadRequest(stream, transferredView, false); - } - break; - } - - /* BYOB */ - case 2: { - $readableByteStreamControllerEnqueueChunk( - controller, - $transferBufferToCurrentRealm(chunk.buffer), - chunk.byteOffset, - chunk.byteLength, - ); - $readableByteStreamControllerProcessPullDescriptors(controller); - break; - } - - /* NativeReader */ - case 3: { - // reader.$enqueueNative($getByIdDirectPrivate(reader, "bunNativePtr"), chunk); - - break; - } - - default: { - $assert(!$isReadableStreamLocked(stream)); - $readableByteStreamControllerEnqueueChunk( - controller, - $transferBufferToCurrentRealm(chunk.buffer), - chunk.byteOffset, - chunk.byteLength, - ); - break; - } - } -} - -// Spec name: readableByteStreamControllerEnqueueChunkToQueue. -export function readableByteStreamControllerEnqueueChunk(controller, buffer, byteOffset, byteLength) { - $getByIdDirectPrivate(controller, "queue").content.push({ - buffer: buffer, - byteOffset: byteOffset, - byteLength: byteLength, - }); - $getByIdDirectPrivate(controller, "queue").size += byteLength; -} - -export function readableByteStreamControllerRespondWithNewView(controller, view) { - $assert($getByIdDirectPrivate(controller, "pendingPullIntos").isNotEmpty()); - - let firstDescriptor = $getByIdDirectPrivate(controller, "pendingPullIntos").peek(); - - if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) - throw new RangeError("Invalid value for view.byteOffset"); - - if (firstDescriptor.byteLength !== view.byteLength) throw new RangeError("Invalid value for view.byteLength"); - - firstDescriptor.buffer = view.buffer; - $readableByteStreamControllerRespondInternal(controller, view.byteLength); -} - -export function readableByteStreamControllerRespond(controller, bytesWritten) { - bytesWritten = $toNumber(bytesWritten); - - if (isNaN(bytesWritten) || bytesWritten === Infinity || bytesWritten < 0) - throw new RangeError("bytesWritten has an incorrect value"); - - $assert($getByIdDirectPrivate(controller, "pendingPullIntos").isNotEmpty()); - - $readableByteStreamControllerRespondInternal(controller, bytesWritten); -} - -export function readableByteStreamControllerRespondInternal(controller, bytesWritten) { - let firstDescriptor = $getByIdDirectPrivate(controller, "pendingPullIntos").peek(); - let stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - - if ($getByIdDirectPrivate(stream, "state") === $streamClosed) { - if (bytesWritten !== 0) throw new TypeError("bytesWritten is different from 0 even though stream is closed"); - $readableByteStreamControllerRespondInClosedState(controller, firstDescriptor); - } else { - $assert($getByIdDirectPrivate(stream, "state") === $streamReadable); - $readableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); - } -} - -export function readableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { - if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) - throw new RangeError("bytesWritten value is too great"); - - $assert( - $getByIdDirectPrivate(controller, "pendingPullIntos").isEmpty() || - $getByIdDirectPrivate(controller, "pendingPullIntos").peek() === pullIntoDescriptor, - ); - $readableByteStreamControllerInvalidateBYOBRequest(controller); - pullIntoDescriptor.bytesFilled += bytesWritten; - - if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) return; - - $readableByteStreamControllerShiftPendingDescriptor(controller); - const remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; - - if (remainderSize > 0) { - const end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - const remainder = $cloneArrayBuffer(pullIntoDescriptor.buffer, end - remainderSize, remainderSize); - $readableByteStreamControllerEnqueueChunk(controller, remainder, 0, remainder.byteLength); - } - - pullIntoDescriptor.buffer = $transferBufferToCurrentRealm(pullIntoDescriptor.buffer); - pullIntoDescriptor.bytesFilled -= remainderSize; - $readableByteStreamControllerCommitDescriptor( - $getByIdDirectPrivate(controller, "controlledReadableStream"), - pullIntoDescriptor, - ); - $readableByteStreamControllerProcessPullDescriptors(controller); -} - -export function readableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { - firstDescriptor.buffer = $transferBufferToCurrentRealm(firstDescriptor.buffer); - $assert(firstDescriptor.bytesFilled === 0); - - if ($readableStreamHasBYOBReader($getByIdDirectPrivate(controller, "controlledReadableStream"))) { - while ( - $getByIdDirectPrivate( - $getByIdDirectPrivate($getByIdDirectPrivate(controller, "controlledReadableStream"), "reader"), - "readIntoRequests", - )?.isNotEmpty() - ) { - let pullIntoDescriptor = $readableByteStreamControllerShiftPendingDescriptor(controller); - $readableByteStreamControllerCommitDescriptor( - $getByIdDirectPrivate(controller, "controlledReadableStream"), - pullIntoDescriptor, - ); - } - } -} - -// Spec name: readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue (shortened for readability). -export function readableByteStreamControllerProcessPullDescriptors(controller) { - $assert(!$getByIdDirectPrivate(controller, "closeRequested")); - while ($getByIdDirectPrivate(controller, "pendingPullIntos").isNotEmpty()) { - if ($getByIdDirectPrivate(controller, "queue").size === 0) return; - let pullIntoDescriptor = $getByIdDirectPrivate(controller, "pendingPullIntos").peek(); - if ($readableByteStreamControllerFillDescriptorFromQueue(controller, pullIntoDescriptor)) { - $readableByteStreamControllerShiftPendingDescriptor(controller); - $readableByteStreamControllerCommitDescriptor( - $getByIdDirectPrivate(controller, "controlledReadableStream"), - pullIntoDescriptor, - ); - } - } -} - -// Spec name: readableByteStreamControllerFillPullIntoDescriptorFromQueue (shortened for readability). -export function readableByteStreamControllerFillDescriptorFromQueue(controller, pullIntoDescriptor) { - const currentAlignedBytes = - pullIntoDescriptor.bytesFilled - (pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize); - const maxBytesToCopy = - $getByIdDirectPrivate(controller, "queue").size < pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled - ? $getByIdDirectPrivate(controller, "queue").size - : pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled; - const maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; - const maxAlignedBytes = maxBytesFilled - (maxBytesFilled % pullIntoDescriptor.elementSize); - let totalBytesToCopyRemaining = maxBytesToCopy; - let ready = false; - - if (maxAlignedBytes > currentAlignedBytes) { - totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; - ready = true; - } - - while (totalBytesToCopyRemaining > 0) { - let headOfQueue = $getByIdDirectPrivate(controller, "queue").content.peek(); - const bytesToCopy = - totalBytesToCopyRemaining < headOfQueue.byteLength ? totalBytesToCopyRemaining : headOfQueue.byteLength; - // Copy appropriate part of pullIntoDescriptor.buffer to headOfQueue.buffer. - // Remark: this implementation is not completely aligned on the definition of CopyDataBlockBytes - // operation of ECMAScript (the case of Shared Data Block is not considered here, but it doesn't seem to be an issue). - const destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - // FIXME: As indicated in comments of bug 172717, access to set is not safe. However, using prototype.$set.$call does - // not work ($set is undefined). A safe way to do that is needed. - new Uint8Array(pullIntoDescriptor.buffer).set( - new Uint8Array(headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy), - destStart, - ); - - if (headOfQueue.byteLength === bytesToCopy) $getByIdDirectPrivate(controller, "queue").content.shift(); - else { - headOfQueue.byteOffset += bytesToCopy; - headOfQueue.byteLength -= bytesToCopy; - } - - $getByIdDirectPrivate(controller, "queue").size -= bytesToCopy; - $assert( - $getByIdDirectPrivate(controller, "pendingPullIntos").isEmpty() || - $getByIdDirectPrivate(controller, "pendingPullIntos").peek() === pullIntoDescriptor, - ); - $readableByteStreamControllerInvalidateBYOBRequest(controller); - pullIntoDescriptor.bytesFilled += bytesToCopy; - totalBytesToCopyRemaining -= bytesToCopy; - } - - if (!ready) { - $assert($getByIdDirectPrivate(controller, "queue").size === 0); - $assert(pullIntoDescriptor.bytesFilled > 0); - $assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize); - } - - return ready; -} - -// Spec name: readableByteStreamControllerShiftPendingPullInto (renamed for consistency). -export function readableByteStreamControllerShiftPendingDescriptor(controller) { - let descriptor = $getByIdDirectPrivate(controller, "pendingPullIntos").shift(); - $readableByteStreamControllerInvalidateBYOBRequest(controller); - return descriptor; -} - -export function readableByteStreamControllerInvalidateBYOBRequest(controller) { - if ($getByIdDirectPrivate(controller, "byobRequest") === undefined) return; - const byobRequest = $getByIdDirectPrivate(controller, "byobRequest"); - $putByIdDirectPrivate(byobRequest, "associatedReadableByteStreamController", undefined); - $putByIdDirectPrivate(byobRequest, "view", undefined); - $putByIdDirectPrivate(controller, "byobRequest", undefined); -} - -// Spec name: readableByteStreamControllerCommitPullIntoDescriptor (shortened for readability). -export function readableByteStreamControllerCommitDescriptor(stream, pullIntoDescriptor) { - $assert($getByIdDirectPrivate(stream, "state") !== $streamErrored); - let done = false; - if ($getByIdDirectPrivate(stream, "state") === $streamClosed) { - $assert(!pullIntoDescriptor.bytesFilled); - done = true; - } - let filledView = $readableByteStreamControllerConvertDescriptor(pullIntoDescriptor); - if (pullIntoDescriptor.readerType === "default") $readableStreamFulfillReadRequest(stream, filledView, done); - else { - $assert(pullIntoDescriptor.readerType === "byob"); - $readableStreamFulfillReadIntoRequest(stream, filledView, done); - } -} - -// Spec name: readableByteStreamControllerConvertPullIntoDescriptor (shortened for readability). -export function readableByteStreamControllerConvertDescriptor(pullIntoDescriptor) { - $assert(pullIntoDescriptor.bytesFilled <= pullIntoDescriptor.byteLength); - $assert(pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize === 0); - - return new pullIntoDescriptor.ctor( - pullIntoDescriptor.buffer, - pullIntoDescriptor.byteOffset, - pullIntoDescriptor.bytesFilled / pullIntoDescriptor.elementSize, - ); -} - -export function readableStreamFulfillReadIntoRequest(stream, chunk, done) { - const readIntoRequest = $getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readIntoRequests").shift(); - $fulfillPromise(readIntoRequest, { value: chunk, done: done }); -} - -export function readableStreamBYOBReaderRead(reader, view) { - const stream = $getByIdDirectPrivate(reader, "ownerReadableStream"); - $assert(!!stream); - - $putByIdDirectPrivate(stream, "disturbed", true); - if ($getByIdDirectPrivate(stream, "state") === $streamErrored) - return Promise.$reject($getByIdDirectPrivate(stream, "storedError")); - - return $readableByteStreamControllerPullInto($getByIdDirectPrivate(stream, "readableStreamController"), view); -} - -export function readableByteStreamControllerPullInto(controller, view) { - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - let elementSize = 1; - // Spec describes that in the case where view is a TypedArray, elementSize - // should be set to the size of an element (e.g. 2 for UInt16Array). For - // DataView, BYTES_PER_ELEMENT is undefined, contrary to the same property - // for TypedArrays. - // FIXME: Getting BYTES_PER_ELEMENT like this is not safe (property is read-only - // but can be modified if the prototype is redefined). A safe way of getting - // it would be to determine which type of ArrayBufferView view is an instance - // of based on typed arrays private variables. However, this is not possible due - // to bug 167697, which prevents access to typed arrays through their private - // names unless public name has already been met before. - if (view.BYTES_PER_ELEMENT !== undefined) elementSize = view.BYTES_PER_ELEMENT; - - // FIXME: Getting constructor like this is not safe. A safe way of getting - // it would be to determine which type of ArrayBufferView view is an instance - // of, and to assign appropriate constructor based on this (e.g. ctor = - // $Uint8Array). However, this is not possible due to bug 167697, which - // prevents access to typed arrays through their private names unless public - // name has already been met before. - const ctor = view.constructor; - - const pullIntoDescriptor = { - buffer: view.buffer, - byteOffset: view.byteOffset, - byteLength: view.byteLength, - bytesFilled: 0, - elementSize, - ctor, - readerType: "byob", - }; - - var pending = $getByIdDirectPrivate(controller, "pendingPullIntos"); - if (pending?.isNotEmpty()) { - pullIntoDescriptor.buffer = $transferBufferToCurrentRealm(pullIntoDescriptor.buffer); - pending.push(pullIntoDescriptor); - return $readableStreamAddReadIntoRequest(stream); - } - - if ($getByIdDirectPrivate(stream, "state") === $streamClosed) { - const emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); - return $createFulfilledPromise({ value: emptyView, done: true }); - } - - if ($getByIdDirectPrivate(controller, "queue").size > 0) { - if ($readableByteStreamControllerFillDescriptorFromQueue(controller, pullIntoDescriptor)) { - const filledView = $readableByteStreamControllerConvertDescriptor(pullIntoDescriptor); - $readableByteStreamControllerHandleQueueDrain(controller); - return $createFulfilledPromise({ value: filledView, done: false }); - } - if ($getByIdDirectPrivate(controller, "closeRequested")) { - const e = $makeTypeError("Closing stream has been requested"); - $readableByteStreamControllerError(controller, e); - return Promise.$reject(e); - } - } - - pullIntoDescriptor.buffer = $transferBufferToCurrentRealm(pullIntoDescriptor.buffer); - $getByIdDirectPrivate(controller, "pendingPullIntos").push(pullIntoDescriptor); - const promise = $readableStreamAddReadIntoRequest(stream); - $readableByteStreamControllerCallPullIfNeeded(controller); - return promise; -} - -export function readableStreamAddReadIntoRequest(stream) { - $assert($isReadableStreamBYOBReader($getByIdDirectPrivate(stream, "reader"))); - $assert( - $getByIdDirectPrivate(stream, "state") === $streamReadable || - $getByIdDirectPrivate(stream, "state") === $streamClosed, - ); - - const readRequest = $newPromise(); - $getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readIntoRequests").push(readRequest); - - return readRequest; -} diff --git a/src/bun.js/builtins/ts/ReadableStream.ts b/src/bun.js/builtins/ts/ReadableStream.ts deleted file mode 100644 index 613f869e5..000000000 --- a/src/bun.js/builtins/ts/ReadableStream.ts +++ /dev/null @@ -1,421 +0,0 @@ -/* - * Copyright (C) 2015 Canon Inc. - * Copyright (C) 2015 Igalia. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeReadableStream(this: any, underlyingSource: UnderlyingSource, strategy: any) { - if (underlyingSource === undefined) - underlyingSource = { $bunNativeType: 0, $bunNativePtr: 0, $lazy: false } as UnderlyingSource; - if (strategy === undefined) strategy = {}; - - if (!$isObject(underlyingSource)) throw new TypeError("ReadableStream constructor takes an object as first argument"); - - if (strategy !== undefined && !$isObject(strategy)) - throw new TypeError("ReadableStream constructor takes an object as second argument, if any"); - - $putByIdDirectPrivate(this, "state", $streamReadable); - - $putByIdDirectPrivate(this, "reader", undefined); - - $putByIdDirectPrivate(this, "storedError", undefined); - - $putByIdDirectPrivate(this, "disturbed", false); - - // Initialized with null value to enable distinction with undefined case. - $putByIdDirectPrivate(this, "readableStreamController", null); - $putByIdDirectPrivate(this, "bunNativeType", $getByIdDirectPrivate(underlyingSource, "bunNativeType") ?? 0); - $putByIdDirectPrivate(this, "bunNativePtr", $getByIdDirectPrivate(underlyingSource, "bunNativePtr") ?? 0); - - const isDirect = underlyingSource.type === "direct"; - // direct streams are always lazy - const isUnderlyingSourceLazy = !!underlyingSource.$lazy; - const isLazy = isDirect || isUnderlyingSourceLazy; - - // FIXME: We should introduce https://streams.spec.whatwg.org/#create-readable-stream. - // For now, we emulate this with underlyingSource with private properties. - if ($getByIdDirectPrivate(underlyingSource, "pull") !== undefined && !isLazy) { - const size = $getByIdDirectPrivate(strategy, "size"); - const highWaterMark = $getByIdDirectPrivate(strategy, "highWaterMark"); - $putByIdDirectPrivate(this, "highWaterMark", highWaterMark); - $putByIdDirectPrivate(this, "underlyingSource", undefined); - $setupReadableStreamDefaultController( - this, - underlyingSource, - size, - highWaterMark !== undefined ? highWaterMark : 1, - $getByIdDirectPrivate(underlyingSource, "start"), - $getByIdDirectPrivate(underlyingSource, "pull"), - $getByIdDirectPrivate(underlyingSource, "cancel"), - ); - - return this; - } - if (isDirect) { - $putByIdDirectPrivate(this, "underlyingSource", underlyingSource); - $putByIdDirectPrivate(this, "highWaterMark", $getByIdDirectPrivate(strategy, "highWaterMark")); - $putByIdDirectPrivate(this, "start", () => $createReadableStreamController(this, underlyingSource, strategy)); - } else if (isLazy) { - const autoAllocateChunkSize = underlyingSource.autoAllocateChunkSize; - $putByIdDirectPrivate(this, "highWaterMark", undefined); - $putByIdDirectPrivate(this, "underlyingSource", undefined); - $putByIdDirectPrivate( - this, - "highWaterMark", - autoAllocateChunkSize || $getByIdDirectPrivate(strategy, "highWaterMark"), - ); - - $putByIdDirectPrivate(this, "start", () => { - const instance = $lazyLoadStream(this, autoAllocateChunkSize); - if (instance) { - $createReadableStreamController(this, instance, strategy); - } - }); - } else { - $putByIdDirectPrivate(this, "underlyingSource", undefined); - $putByIdDirectPrivate(this, "highWaterMark", $getByIdDirectPrivate(strategy, "highWaterMark")); - $putByIdDirectPrivate(this, "start", undefined); - $createReadableStreamController(this, underlyingSource, strategy); - } - - return this; -} - -$linkTimeConstant; -export function readableStreamToArray(stream: ReadableStream): Promise<unknown[]> { - // this is a direct stream - var underlyingSource = $getByIdDirectPrivate(stream, "underlyingSource"); - if (underlyingSource !== undefined) { - return $readableStreamToArrayDirect(stream, underlyingSource); - } - - return $readableStreamIntoArray(stream); -} - -$linkTimeConstant; -export function readableStreamToText(stream: ReadableStream): Promise<string> { - // this is a direct stream - var underlyingSource = $getByIdDirectPrivate(stream, "underlyingSource"); - if (underlyingSource !== undefined) { - return $readableStreamToTextDirect(stream, underlyingSource); - } - - return $readableStreamIntoText(stream); -} - -$linkTimeConstant; -export function readableStreamToArrayBuffer(stream: ReadableStream<ArrayBuffer>): Promise<ArrayBuffer> | ArrayBuffer { - // this is a direct stream - var underlyingSource = $getByIdDirectPrivate(stream, "underlyingSource"); - - if (underlyingSource !== undefined) { - return $readableStreamToArrayBufferDirect(stream, underlyingSource); - } - - var array = Bun.readableStreamToArray(stream); - if ($isPromise(array)) { - return array.$then(Bun.concatArrayBuffers); - } - - return Bun.concatArrayBuffers(array); -} - -$linkTimeConstant; -export function readableStreamToJSON(stream: ReadableStream): unknown { - return Bun.readableStreamToText(stream).$then(globalThis.JSON.parse); -} - -$linkTimeConstant; -export function readableStreamToBlob(stream: ReadableStream): Promise<Blob> { - return Promise.resolve(Bun.readableStreamToArray(stream)).$then(array => new Blob(array)); -} - -$linkTimeConstant; -export function consumeReadableStream(nativePtr, nativeType, inputStream) { - const symbol = globalThis.Symbol.for("Bun.consumeReadableStreamPrototype"); - var cached = globalThis[symbol]; - if (!cached) { - cached = globalThis[symbol] = []; - } - var Prototype = cached[nativeType]; - if (Prototype === undefined) { - var [doRead, doError, doReadMany, doClose, onClose, deinit] = - globalThis[globalThis.Symbol.for("Bun.lazy")](nativeType); - - Prototype = class NativeReadableStreamSink { - handleError: any; - handleClosed: any; - processResult: any; - - constructor(reader, ptr) { - this.#ptr = ptr; - this.#reader = reader; - this.#didClose = false; - - this.handleError = this._handleError.bind(this); - this.handleClosed = this._handleClosed.bind(this); - this.processResult = this._processResult.bind(this); - - reader.closed.then(this.handleClosed, this.handleError); - } - - _handleClosed() { - if (this.#didClose) return; - this.#didClose = true; - var ptr = this.#ptr; - this.#ptr = 0; - doClose(ptr); - deinit(ptr); - } - - _handleError(error) { - if (this.#didClose) return; - this.#didClose = true; - var ptr = this.#ptr; - this.#ptr = 0; - doError(ptr, error); - deinit(ptr); - } - - #ptr; - #didClose = false; - #reader; - - _handleReadMany({ value, done, size }) { - if (done) { - this.handleClosed(); - return; - } - - if (this.#didClose) return; - - doReadMany(this.#ptr, value, done, size); - } - - read() { - if (!this.#ptr) return $throwTypeError("ReadableStreamSink is already closed"); - - return this.processResult(this.#reader.read()); - } - - _processResult(result) { - if (result && $isPromise(result)) { - const flags = $getPromiseInternalField(result, $promiseFieldFlags); - if (flags & $promiseStateFulfilled) { - const fulfilledValue = $getPromiseInternalField(result, $promiseFieldReactionsOrResult); - if (fulfilledValue) { - result = fulfilledValue; - } - } - } - - if (result && $isPromise(result)) { - result.then(this.processResult, this.handleError); - return null; - } - - if (result.done) { - this.handleClosed(); - return 0; - } else if (result.value) { - return result.value; - } else { - return -1; - } - } - - readMany() { - if (!this.#ptr) return $throwTypeError("ReadableStreamSink is already closed"); - return this.processResult(this.#reader.readMany()); - } - }; - - const minlength = nativeType + 1; - if (cached.length < minlength) { - cached.length = minlength; - } - $putByValDirect(cached, nativeType, Prototype); - } - - if ($isReadableStreamLocked(inputStream)) { - throw new TypeError("Cannot start reading from a locked stream"); - } - - return new Prototype(inputStream.getReader(), nativePtr); -} - -$linkTimeConstant; -export function createEmptyReadableStream() { - var stream = new ReadableStream({ - pull() {}, - } as any); - $readableStreamClose(stream); - return stream; -} - -$linkTimeConstant; -export function createNativeReadableStream(nativePtr, nativeType, autoAllocateChunkSize) { - return new ReadableStream({ - $lazy: true, - $bunNativeType: nativeType, - $bunNativePtr: nativePtr, - autoAllocateChunkSize: autoAllocateChunkSize, - }); -} - -export function cancel(this, reason) { - if (!$isReadableStream(this)) return Promise.$reject($makeThisTypeError("ReadableStream", "cancel")); - - if ($isReadableStreamLocked(this)) return Promise.$reject($makeTypeError("ReadableStream is locked")); - - return $readableStreamCancel(this, reason); -} - -export function getReader(this, options) { - if (!$isReadableStream(this)) throw $makeThisTypeError("ReadableStream", "getReader"); - - const mode = $toDictionary(options, {}, "ReadableStream.getReader takes an object as first argument").mode; - if (mode === undefined) { - var start_ = $getByIdDirectPrivate(this, "start"); - if (start_) { - $putByIdDirectPrivate(this, "start", undefined); - start_(); - } - - return new ReadableStreamDefaultReader(this); - } - // String conversion is required by spec, hence double equals. - if (mode == "byob") { - return new ReadableStreamBYOBReader(this); - } - - throw new TypeError("Invalid mode is specified"); -} - -export function pipeThrough(this, streams, options) { - const transforms = streams; - - const readable = transforms["readable"]; - if (!$isReadableStream(readable)) throw $makeTypeError("readable should be ReadableStream"); - - const writable = transforms["writable"]; - const internalWritable = $getInternalWritableStream(writable); - if (!$isWritableStream(internalWritable)) throw $makeTypeError("writable should be WritableStream"); - - let preventClose = false; - let preventAbort = false; - let preventCancel = false; - let signal; - if (!$isUndefinedOrNull(options)) { - if (!$isObject(options)) throw $makeTypeError("options must be an object"); - - preventAbort = !!options["preventAbort"]; - preventCancel = !!options["preventCancel"]; - preventClose = !!options["preventClose"]; - - signal = options["signal"]; - if (signal !== undefined && !$isAbortSignal(signal)) throw $makeTypeError("options.signal must be AbortSignal"); - } - - if (!$isReadableStream(this)) throw $makeThisTypeError("ReadableStream", "pipeThrough"); - - if ($isReadableStreamLocked(this)) throw $makeTypeError("ReadableStream is locked"); - - if ($isWritableStreamLocked(internalWritable)) throw $makeTypeError("WritableStream is locked"); - - $readableStreamPipeToWritableStream(this, internalWritable, preventClose, preventAbort, preventCancel, signal); - - return readable; -} - -export function pipeTo(this, destination) { - if (!$isReadableStream(this)) return Promise.$reject($makeThisTypeError("ReadableStream", "pipeTo")); - - if ($isReadableStreamLocked(this)) return Promise.$reject($makeTypeError("ReadableStream is locked")); - - // FIXME: https://bugs.webkit.org/show_bug.cgi?id=159869. - // Built-in generator should be able to parse function signature to compute the function length correctly. - let options = $argument(1); - - let preventClose = false; - let preventAbort = false; - let preventCancel = false; - let signal; - if (!$isUndefinedOrNull(options)) { - if (!$isObject(options)) return Promise.$reject($makeTypeError("options must be an object")); - - try { - preventAbort = !!options["preventAbort"]; - preventCancel = !!options["preventCancel"]; - preventClose = !!options["preventClose"]; - - signal = options["signal"]; - } catch (e) { - return Promise.$reject(e); - } - - if (signal !== undefined && !$isAbortSignal(signal)) - return Promise.$reject(new TypeError("options.signal must be AbortSignal")); - } - - const internalDestination = $getInternalWritableStream(destination); - if (!$isWritableStream(internalDestination)) - return Promise.$reject(new TypeError("ReadableStream pipeTo requires a WritableStream")); - - if ($isWritableStreamLocked(internalDestination)) return Promise.$reject(new TypeError("WritableStream is locked")); - - return $readableStreamPipeToWritableStream( - this, - internalDestination, - preventClose, - preventAbort, - preventCancel, - signal, - ); -} - -export function tee(this) { - if (!$isReadableStream(this)) throw $makeThisTypeError("ReadableStream", "tee"); - - return $readableStreamTee(this, false); -} - -$getter; -export function locked(this) { - if (!$isReadableStream(this)) throw $makeGetterTypeError("ReadableStream", "locked"); - - return $isReadableStreamLocked(this); -} - -export function values(this, options) { - var prototype = ReadableStream.prototype; - $readableStreamDefineLazyIterators(prototype); - return prototype.values.$call(this, options); -} - -$linkTimeConstant; -export function lazyAsyncIterator(this) { - var prototype = ReadableStream.prototype; - $readableStreamDefineLazyIterators(prototype); - return prototype[globalThis.Symbol.asyncIterator].$call(this); -} diff --git a/src/bun.js/builtins/ts/ReadableStreamBYOBReader.ts b/src/bun.js/builtins/ts/ReadableStreamBYOBReader.ts deleted file mode 100644 index 5ebfddb19..000000000 --- a/src/bun.js/builtins/ts/ReadableStreamBYOBReader.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2017 Canon Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY CANON INC. AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL CANON INC. AND ITS CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeReadableStreamBYOBReader(this, stream) { - if (!$isReadableStream(stream)) throw new TypeError("ReadableStreamBYOBReader needs a ReadableStream"); - if (!$isReadableByteStreamController($getByIdDirectPrivate(stream, "readableStreamController"))) - throw new TypeError("ReadableStreamBYOBReader needs a ReadableByteStreamController"); - if ($isReadableStreamLocked(stream)) throw new TypeError("ReadableStream is locked"); - - $readableStreamReaderGenericInitialize(this, stream); - $putByIdDirectPrivate(this, "readIntoRequests", $createFIFO()); - - return this; -} - -export function cancel(this, reason) { - if (!$isReadableStreamBYOBReader(this)) - return Promise.$reject($makeThisTypeError("ReadableStreamBYOBReader", "cancel")); - - if (!$getByIdDirectPrivate(this, "ownerReadableStream")) - return Promise.$reject($makeTypeError("cancel() called on a reader owned by no readable stream")); - - return $readableStreamReaderGenericCancel(this, reason); -} - -export function read(this, view: DataView) { - if (!$isReadableStreamBYOBReader(this)) - return Promise.$reject($makeThisTypeError("ReadableStreamBYOBReader", "read")); - - if (!$getByIdDirectPrivate(this, "ownerReadableStream")) - return Promise.$reject($makeTypeError("read() called on a reader owned by no readable stream")); - - if (!$isObject(view)) return Promise.$reject($makeTypeError("Provided view is not an object")); - - if (!ArrayBuffer.$isView(view)) return Promise.$reject($makeTypeError("Provided view is not an ArrayBufferView")); - - if (view.byteLength === 0) return Promise.$reject($makeTypeError("Provided view cannot have a 0 byteLength")); - - return $readableStreamBYOBReaderRead(this, view); -} - -export function releaseLock(this) { - if (!$isReadableStreamBYOBReader(this)) throw $makeThisTypeError("ReadableStreamBYOBReader", "releaseLock"); - - if (!$getByIdDirectPrivate(this, "ownerReadableStream")) return; - - if ($getByIdDirectPrivate(this, "readIntoRequests")?.isNotEmpty()) - throw new TypeError("There are still pending read requests, cannot release the lock"); - - $readableStreamReaderGenericRelease(this); -} - -$getter; -export function closed(this) { - if (!$isReadableStreamBYOBReader(this)) - return Promise.$reject($makeGetterTypeError("ReadableStreamBYOBReader", "closed")); - - return $getByIdDirectPrivate(this, "closedPromiseCapability").$promise; -} diff --git a/src/bun.js/builtins/ts/ReadableStreamBYOBRequest.ts b/src/bun.js/builtins/ts/ReadableStreamBYOBRequest.ts deleted file mode 100644 index 1354f9349..000000000 --- a/src/bun.js/builtins/ts/ReadableStreamBYOBRequest.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2017 Canon Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeReadableStreamBYOBRequest(this, controller, view) { - if (arguments.length !== 3 && arguments[2] !== $isReadableStream) - throw new TypeError("ReadableStreamBYOBRequest constructor should not be called directly"); - - return $privateInitializeReadableStreamBYOBRequest.$call(this, controller, view); -} - -export function respond(this, bytesWritten) { - if (!$isReadableStreamBYOBRequest(this)) throw $makeThisTypeError("ReadableStreamBYOBRequest", "respond"); - - if ($getByIdDirectPrivate(this, "associatedReadableByteStreamController") === undefined) - throw new TypeError("ReadableStreamBYOBRequest.associatedReadableByteStreamController is undefined"); - - return $readableByteStreamControllerRespond( - $getByIdDirectPrivate(this, "associatedReadableByteStreamController"), - bytesWritten, - ); -} - -export function respondWithNewView(this, view) { - if (!$isReadableStreamBYOBRequest(this)) throw $makeThisTypeError("ReadableStreamBYOBRequest", "respond"); - - if ($getByIdDirectPrivate(this, "associatedReadableByteStreamController") === undefined) - throw new TypeError("ReadableStreamBYOBRequest.associatedReadableByteStreamController is undefined"); - - if (!$isObject(view)) throw new TypeError("Provided view is not an object"); - - if (!ArrayBuffer.$isView(view)) throw new TypeError("Provided view is not an ArrayBufferView"); - - return $readableByteStreamControllerRespondWithNewView( - $getByIdDirectPrivate(this, "associatedReadableByteStreamController"), - view, - ); -} - -$getter; -export function view(this) { - if (!$isReadableStreamBYOBRequest(this)) throw $makeGetterTypeError("ReadableStreamBYOBRequest", "view"); - - return $getByIdDirectPrivate(this, "view"); -} diff --git a/src/bun.js/builtins/ts/ReadableStreamDefaultController.ts b/src/bun.js/builtins/ts/ReadableStreamDefaultController.ts deleted file mode 100644 index 912cd1acb..000000000 --- a/src/bun.js/builtins/ts/ReadableStreamDefaultController.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2015 Canon Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeReadableStreamDefaultController(this, stream, underlyingSource, size, highWaterMark) { - if (arguments.length !== 5 && arguments[4] !== $isReadableStream) - throw new TypeError("ReadableStreamDefaultController constructor should not be called directly"); - - return $privateInitializeReadableStreamDefaultController.$call(this, stream, underlyingSource, size, highWaterMark); -} - -export function enqueue(this, chunk) { - if (!$isReadableStreamDefaultController(this)) throw $makeThisTypeError("ReadableStreamDefaultController", "enqueue"); - - if (!$readableStreamDefaultControllerCanCloseOrEnqueue(this)) - throw new TypeError("ReadableStreamDefaultController is not in a state where chunk can be enqueued"); - - return $readableStreamDefaultControllerEnqueue(this, chunk); -} - -export function error(this, err) { - if (!$isReadableStreamDefaultController(this)) throw $makeThisTypeError("ReadableStreamDefaultController", "error"); - - $readableStreamDefaultControllerError(this, err); -} - -export function close(this) { - if (!$isReadableStreamDefaultController(this)) throw $makeThisTypeError("ReadableStreamDefaultController", "close"); - - if (!$readableStreamDefaultControllerCanCloseOrEnqueue(this)) - throw new TypeError("ReadableStreamDefaultController is not in a state where it can be closed"); - - $readableStreamDefaultControllerClose(this); -} - -$getter; -export function desiredSize(this) { - if (!$isReadableStreamDefaultController(this)) - throw $makeGetterTypeError("ReadableStreamDefaultController", "desiredSize"); - - return $readableStreamDefaultControllerGetDesiredSize(this); -} diff --git a/src/bun.js/builtins/ts/ReadableStreamDefaultReader.ts b/src/bun.js/builtins/ts/ReadableStreamDefaultReader.ts deleted file mode 100644 index ecd553ed5..000000000 --- a/src/bun.js/builtins/ts/ReadableStreamDefaultReader.ts +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright (C) 2015 Canon Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeReadableStreamDefaultReader(this, stream) { - if (!$isReadableStream(stream)) throw new TypeError("ReadableStreamDefaultReader needs a ReadableStream"); - if ($isReadableStreamLocked(stream)) throw new TypeError("ReadableStream is locked"); - - $readableStreamReaderGenericInitialize(this, stream); - $putByIdDirectPrivate(this, "readRequests", $createFIFO()); - - return this; -} - -export function cancel(this, reason) { - if (!$isReadableStreamDefaultReader(this)) - return Promise.$reject($makeThisTypeError("ReadableStreamDefaultReader", "cancel")); - - if (!$getByIdDirectPrivate(this, "ownerReadableStream")) - return Promise.$reject(new TypeError("cancel() called on a reader owned by no readable stream")); - - return $readableStreamReaderGenericCancel(this, reason); -} - -export function readMany(this) { - if (!$isReadableStreamDefaultReader(this)) - throw new TypeError("ReadableStreamDefaultReader.readMany() should not be called directly"); - - const stream = $getByIdDirectPrivate(this, "ownerReadableStream"); - if (!stream) throw new TypeError("readMany() called on a reader owned by no readable stream"); - - const state = $getByIdDirectPrivate(stream, "state"); - $putByIdDirectPrivate(stream, "disturbed", true); - if (state === $streamClosed) return { value: [], size: 0, done: true }; - else if (state === $streamErrored) { - throw $getByIdDirectPrivate(stream, "storedError"); - } - - var controller = $getByIdDirectPrivate(stream, "readableStreamController"); - var queue = $getByIdDirectPrivate(controller, "queue"); - - if (!queue) { - // This is a ReadableStream direct controller implemented in JS - // It hasn't been started yet. - return controller.$pull(controller).$then(function ({ done, value }) { - return done ? { done: true, value: [], size: 0 } : { value: [value], size: 1, done: false }; - }); - } - - const content = queue.content; - var size = queue.size; - var values = content.toArray(false); - - var length = values.length; - - if (length > 0) { - var outValues = $newArrayWithSize(length); - if ($isReadableByteStreamController(controller)) { - { - const buf = values[0]; - if (!(ArrayBuffer.$isView(buf) || buf instanceof ArrayBuffer)) { - $putByValDirect(outValues, 0, new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)); - } else { - $putByValDirect(outValues, 0, buf); - } - } - - for (var i = 1; i < length; i++) { - const buf = values[i]; - if (!(ArrayBuffer.$isView(buf) || buf instanceof ArrayBuffer)) { - $putByValDirect(outValues, i, new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)); - } else { - $putByValDirect(outValues, i, buf); - } - } - } else { - $putByValDirect(outValues, 0, values[0].value); - for (var i = 1; i < length; i++) { - $putByValDirect(outValues, i, values[i].value); - } - } - - $resetQueue($getByIdDirectPrivate(controller, "queue")); - - if ($getByIdDirectPrivate(controller, "closeRequested")) - $readableStreamClose($getByIdDirectPrivate(controller, "controlledReadableStream")); - else if ($isReadableStreamDefaultController(controller)) - $readableStreamDefaultControllerCallPullIfNeeded(controller); - else if ($isReadableByteStreamController(controller)) $readableByteStreamControllerCallPullIfNeeded(controller); - - return { value: outValues, size, done: false }; - } - - var onPullMany = result => { - if (result.done) { - return { value: [], size: 0, done: true }; - } - var controller = $getByIdDirectPrivate(stream, "readableStreamController"); - - var queue = $getByIdDirectPrivate(controller, "queue"); - var value = [result.value].concat(queue.content.toArray(false)); - var length = value.length; - - if ($isReadableByteStreamController(controller)) { - for (var i = 0; i < length; i++) { - const buf = value[i]; - if (!(ArrayBuffer.$isView(buf) || buf instanceof ArrayBuffer)) { - const { buffer, byteOffset, byteLength } = buf; - $putByValDirect(value, i, new Uint8Array(buffer, byteOffset, byteLength)); - } - } - } else { - for (var i = 1; i < length; i++) { - $putByValDirect(value, i, value[i].value); - } - } - - var size = queue.size; - $resetQueue(queue); - - if ($getByIdDirectPrivate(controller, "closeRequested")) - $readableStreamClose($getByIdDirectPrivate(controller, "controlledReadableStream")); - else if ($isReadableStreamDefaultController(controller)) - $readableStreamDefaultControllerCallPullIfNeeded(controller); - else if ($isReadableByteStreamController(controller)) $readableByteStreamControllerCallPullIfNeeded(controller); - - return { value: value, size: size, done: false }; - }; - - var pullResult = controller.$pull(controller); - if (pullResult && $isPromise(pullResult)) { - return pullResult.$then(onPullMany); - } - - return onPullMany(pullResult); -} - -export function read(this) { - if (!$isReadableStreamDefaultReader(this)) - return Promise.$reject($makeThisTypeError("ReadableStreamDefaultReader", "read")); - if (!$getByIdDirectPrivate(this, "ownerReadableStream")) - return Promise.$reject(new TypeError("read() called on a reader owned by no readable stream")); - - return $readableStreamDefaultReaderRead(this); -} - -export function releaseLock(this) { - if (!$isReadableStreamDefaultReader(this)) throw $makeThisTypeError("ReadableStreamDefaultReader", "releaseLock"); - - if (!$getByIdDirectPrivate(this, "ownerReadableStream")) return; - - if ($getByIdDirectPrivate(this, "readRequests")?.isNotEmpty()) - throw new TypeError("There are still pending read requests, cannot release the lock"); - - $readableStreamReaderGenericRelease(this); -} - -$getter; -export function closed(this) { - if (!$isReadableStreamDefaultReader(this)) - return Promise.$reject($makeGetterTypeError("ReadableStreamDefaultReader", "closed")); - - return $getByIdDirectPrivate(this, "closedPromiseCapability").$promise; -} diff --git a/src/bun.js/builtins/ts/ReadableStreamInternals.ts b/src/bun.js/builtins/ts/ReadableStreamInternals.ts deleted file mode 100644 index 0c4e816f4..000000000 --- a/src/bun.js/builtins/ts/ReadableStreamInternals.ts +++ /dev/null @@ -1,1799 +0,0 @@ -/* - * Copyright (C) 2015 Canon Inc. All rights reserved. - * Copyright (C) 2015 Igalia. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// @internal - -export function readableStreamReaderGenericInitialize(reader, stream) { - $putByIdDirectPrivate(reader, "ownerReadableStream", stream); - $putByIdDirectPrivate(stream, "reader", reader); - if ($getByIdDirectPrivate(stream, "state") === $streamReadable) - $putByIdDirectPrivate(reader, "closedPromiseCapability", $newPromiseCapability(Promise)); - else if ($getByIdDirectPrivate(stream, "state") === $streamClosed) - $putByIdDirectPrivate(reader, "closedPromiseCapability", { - $promise: Promise.$resolve(), - }); - else { - $assert($getByIdDirectPrivate(stream, "state") === $streamErrored); - $putByIdDirectPrivate(reader, "closedPromiseCapability", { - $promise: $newHandledRejectedPromise($getByIdDirectPrivate(stream, "storedError")), - }); - } -} - -export function privateInitializeReadableStreamDefaultController(this, stream, underlyingSource, size, highWaterMark) { - if (!$isReadableStream(stream)) throw new TypeError("ReadableStreamDefaultController needs a ReadableStream"); - - // readableStreamController is initialized with null value. - if ($getByIdDirectPrivate(stream, "readableStreamController") !== null) - throw new TypeError("ReadableStream already has a controller"); - - $putByIdDirectPrivate(this, "controlledReadableStream", stream); - $putByIdDirectPrivate(this, "underlyingSource", underlyingSource); - $putByIdDirectPrivate(this, "queue", $newQueue()); - $putByIdDirectPrivate(this, "started", -1); - $putByIdDirectPrivate(this, "closeRequested", false); - $putByIdDirectPrivate(this, "pullAgain", false); - $putByIdDirectPrivate(this, "pulling", false); - $putByIdDirectPrivate(this, "strategy", $validateAndNormalizeQueuingStrategy(size, highWaterMark)); - - return this; -} - -export function readableStreamDefaultControllerError(controller, error) { - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - if ($getByIdDirectPrivate(stream, "state") !== $streamReadable) return; - $putByIdDirectPrivate(controller, "queue", $newQueue()); - - $readableStreamError(stream, error); -} - -export function readableStreamPipeTo(stream, sink) { - $assert($isReadableStream(stream)); - - const reader = new ReadableStreamDefaultReader(stream); - - $getByIdDirectPrivate(reader, "closedPromiseCapability").$promise.$then( - () => {}, - e => { - sink.error(e); - }, - ); - - function doPipe() { - $readableStreamDefaultReaderRead(reader).$then( - function (result) { - if (result.done) { - sink.close(); - return; - } - try { - sink.enqueue(result.value); - } catch (e) { - sink.error("ReadableStream chunk enqueueing in the sink failed"); - return; - } - doPipe(); - }, - function (e) { - sink.error(e); - }, - ); - } - doPipe(); -} - -export function acquireReadableStreamDefaultReader(stream) { - var start = $getByIdDirectPrivate(stream, "start"); - if (start) { - start.$call(stream); - } - - return new ReadableStreamDefaultReader(stream); -} - -// https://streams.spec.whatwg.org/#set-up-readable-stream-default-controller, starting from step 6. -// The other part is implemented in privateInitializeReadableStreamDefaultController. -export function setupReadableStreamDefaultController( - stream, - underlyingSource, - size, - highWaterMark, - startMethod, - pullMethod, - cancelMethod, -) { - const controller = new ReadableStreamDefaultController( - stream, - underlyingSource, - size, - highWaterMark, - $isReadableStream, - ); - - const pullAlgorithm = () => $promiseInvokeOrNoopMethod(underlyingSource, pullMethod, [controller]); - const cancelAlgorithm = reason => $promiseInvokeOrNoopMethod(underlyingSource, cancelMethod, [reason]); - - $putByIdDirectPrivate(controller, "pullAlgorithm", pullAlgorithm); - $putByIdDirectPrivate(controller, "cancelAlgorithm", cancelAlgorithm); - $putByIdDirectPrivate(controller, "pull", $readableStreamDefaultControllerPull); - $putByIdDirectPrivate(controller, "cancel", $readableStreamDefaultControllerCancel); - $putByIdDirectPrivate(stream, "readableStreamController", controller); - - $readableStreamDefaultControllerStart(controller); -} - -export function createReadableStreamController(stream, underlyingSource, strategy) { - const type = underlyingSource.type; - const typeString = $toString(type); - - if (typeString === "bytes") { - // if (!$readableByteStreamAPIEnabled()) - // $throwTypeError("ReadableByteStreamController is not implemented"); - - if (strategy.highWaterMark === undefined) strategy.highWaterMark = 0; - if (strategy.size !== undefined) $throwRangeError("Strategy for a ReadableByteStreamController cannot have a size"); - - $putByIdDirectPrivate( - stream, - "readableStreamController", - new ReadableByteStreamController(stream, underlyingSource, strategy.highWaterMark, $isReadableStream), - ); - } else if (typeString === "direct") { - var highWaterMark = strategy?.highWaterMark; - $initializeArrayBufferStream.$call(stream, underlyingSource, highWaterMark); - } else if (type === undefined) { - if (strategy.highWaterMark === undefined) strategy.highWaterMark = 1; - - $setupReadableStreamDefaultController( - stream, - underlyingSource, - strategy.size, - strategy.highWaterMark, - underlyingSource.start, - underlyingSource.pull, - underlyingSource.cancel, - ); - } else throw new RangeError("Invalid type for underlying source"); -} - -export function readableStreamDefaultControllerStart(controller) { - if ($getByIdDirectPrivate(controller, "started") !== -1) return; - - const underlyingSource = $getByIdDirectPrivate(controller, "underlyingSource"); - const startMethod = underlyingSource.start; - $putByIdDirectPrivate(controller, "started", 0); - - $promiseInvokeOrNoopMethodNoCatch(underlyingSource, startMethod, [controller]).$then( - () => { - $putByIdDirectPrivate(controller, "started", 1); - $assert(!$getByIdDirectPrivate(controller, "pulling")); - $assert(!$getByIdDirectPrivate(controller, "pullAgain")); - $readableStreamDefaultControllerCallPullIfNeeded(controller); - }, - error => { - $readableStreamDefaultControllerError(controller, error); - }, - ); -} - -// FIXME: Replace readableStreamPipeTo by below function. -// This method implements the latest https://streams.spec.whatwg.org/#readable-stream-pipe-to. -export function readableStreamPipeToWritableStream( - source, - destination, - preventClose, - preventAbort, - preventCancel, - signal, -) { - // const isDirectStream = !!$getByIdDirectPrivate(source, "start"); - - $assert($isReadableStream(source)); - $assert($isWritableStream(destination)); - $assert(!$isReadableStreamLocked(source)); - $assert(!$isWritableStreamLocked(destination)); - $assert(signal === undefined || $isAbortSignal(signal)); - - if ($getByIdDirectPrivate(source, "underlyingByteSource") !== undefined) - return Promise.$reject("Piping to a readable bytestream is not supported"); - - let pipeState: any = { - source: source, - destination: destination, - preventAbort: preventAbort, - preventCancel: preventCancel, - preventClose: preventClose, - signal: signal, - }; - - pipeState.reader = $acquireReadableStreamDefaultReader(source); - pipeState.writer = $acquireWritableStreamDefaultWriter(destination); - - $putByIdDirectPrivate(source, "disturbed", true); - - pipeState.finalized = false; - pipeState.shuttingDown = false; - pipeState.promiseCapability = $newPromiseCapability(Promise); - pipeState.pendingReadPromiseCapability = $newPromiseCapability(Promise); - pipeState.pendingReadPromiseCapability.$resolve.$call(); - pipeState.pendingWritePromise = Promise.$resolve(); - - if (signal !== undefined) { - const algorithm = reason => { - if (pipeState.finalized) return; - - $pipeToShutdownWithAction( - pipeState, - () => { - const shouldAbortDestination = - !pipeState.preventAbort && $getByIdDirectPrivate(pipeState.destination, "state") === "writable"; - const promiseDestination = shouldAbortDestination - ? $writableStreamAbort(pipeState.destination, reason) - : Promise.$resolve(); - - const shouldAbortSource = - !pipeState.preventCancel && $getByIdDirectPrivate(pipeState.source, "state") === $streamReadable; - const promiseSource = shouldAbortSource - ? $readableStreamCancel(pipeState.source, reason) - : Promise.$resolve(); - - let promiseCapability = $newPromiseCapability(Promise); - let shouldWait = true; - let handleResolvedPromise = () => { - if (shouldWait) { - shouldWait = false; - return; - } - promiseCapability.$resolve.$call(); - }; - let handleRejectedPromise = e => { - promiseCapability.$reject.$call(undefined, e); - }; - promiseDestination.$then(handleResolvedPromise, handleRejectedPromise); - promiseSource.$then(handleResolvedPromise, handleRejectedPromise); - return promiseCapability.$promise; - }, - reason, - ); - }; - if ($whenSignalAborted(signal, algorithm)) return pipeState.promiseCapability.$promise; - } - - $pipeToErrorsMustBePropagatedForward(pipeState); - $pipeToErrorsMustBePropagatedBackward(pipeState); - $pipeToClosingMustBePropagatedForward(pipeState); - $pipeToClosingMustBePropagatedBackward(pipeState); - - $pipeToLoop(pipeState); - - return pipeState.promiseCapability.$promise; -} - -export function pipeToLoop(pipeState) { - if (pipeState.shuttingDown) return; - - $pipeToDoReadWrite(pipeState).$then(result => { - if (result) $pipeToLoop(pipeState); - }); -} - -export function pipeToDoReadWrite(pipeState) { - $assert(!pipeState.shuttingDown); - - pipeState.pendingReadPromiseCapability = $newPromiseCapability(Promise); - $getByIdDirectPrivate(pipeState.writer, "readyPromise").$promise.$then( - () => { - if (pipeState.shuttingDown) { - pipeState.pendingReadPromiseCapability.$resolve.$call(undefined, false); - return; - } - - $readableStreamDefaultReaderRead(pipeState.reader).$then( - result => { - const canWrite = !result.done && $getByIdDirectPrivate(pipeState.writer, "stream") !== undefined; - pipeState.pendingReadPromiseCapability.$resolve.$call(undefined, canWrite); - if (!canWrite) return; - - pipeState.pendingWritePromise = $writableStreamDefaultWriterWrite(pipeState.writer, result.value); - }, - e => { - pipeState.pendingReadPromiseCapability.$resolve.$call(undefined, false); - }, - ); - }, - e => { - pipeState.pendingReadPromiseCapability.$resolve.$call(undefined, false); - }, - ); - return pipeState.pendingReadPromiseCapability.$promise; -} - -export function pipeToErrorsMustBePropagatedForward(pipeState) { - const action = () => { - pipeState.pendingReadPromiseCapability.$resolve.$call(undefined, false); - const error = $getByIdDirectPrivate(pipeState.source, "storedError"); - if (!pipeState.preventAbort) { - $pipeToShutdownWithAction(pipeState, () => $writableStreamAbort(pipeState.destination, error), error); - return; - } - $pipeToShutdown(pipeState, error); - }; - - if ($getByIdDirectPrivate(pipeState.source, "state") === $streamErrored) { - action(); - return; - } - - $getByIdDirectPrivate(pipeState.reader, "closedPromiseCapability").$promise.$then(undefined, action); -} - -export function pipeToErrorsMustBePropagatedBackward(pipeState) { - const action = () => { - const error = $getByIdDirectPrivate(pipeState.destination, "storedError"); - if (!pipeState.preventCancel) { - $pipeToShutdownWithAction(pipeState, () => $readableStreamCancel(pipeState.source, error), error); - return; - } - $pipeToShutdown(pipeState, error); - }; - if ($getByIdDirectPrivate(pipeState.destination, "state") === "errored") { - action(); - return; - } - $getByIdDirectPrivate(pipeState.writer, "closedPromise").$promise.$then(undefined, action); -} - -export function pipeToClosingMustBePropagatedForward(pipeState) { - const action = () => { - pipeState.pendingReadPromiseCapability.$resolve.$call(undefined, false); - // const error = $getByIdDirectPrivate(pipeState.source, "storedError"); - if (!pipeState.preventClose) { - $pipeToShutdownWithAction(pipeState, () => - $writableStreamDefaultWriterCloseWithErrorPropagation(pipeState.writer), - ); - return; - } - $pipeToShutdown(pipeState); - }; - if ($getByIdDirectPrivate(pipeState.source, "state") === $streamClosed) { - action(); - return; - } - $getByIdDirectPrivate(pipeState.reader, "closedPromiseCapability").$promise.$then(action, undefined); -} - -export function pipeToClosingMustBePropagatedBackward(pipeState) { - if ( - !$writableStreamCloseQueuedOrInFlight(pipeState.destination) && - $getByIdDirectPrivate(pipeState.destination, "state") !== "closed" - ) - return; - - // $assert no chunks have been read/written - - const error = new TypeError("closing is propagated backward"); - if (!pipeState.preventCancel) { - $pipeToShutdownWithAction(pipeState, () => $readableStreamCancel(pipeState.source, error), error); - return; - } - $pipeToShutdown(pipeState, error); -} - -export function pipeToShutdownWithAction(pipeState, action) { - if (pipeState.shuttingDown) return; - - pipeState.shuttingDown = true; - - const hasError = arguments.length > 2; - const error = arguments[2]; - const finalize = () => { - const promise = action(); - promise.$then( - () => { - if (hasError) $pipeToFinalize(pipeState, error); - else $pipeToFinalize(pipeState); - }, - e => { - $pipeToFinalize(pipeState, e); - }, - ); - }; - - if ( - $getByIdDirectPrivate(pipeState.destination, "state") === "writable" && - !$writableStreamCloseQueuedOrInFlight(pipeState.destination) - ) { - pipeState.pendingReadPromiseCapability.$promise.$then( - () => { - pipeState.pendingWritePromise.$then(finalize, finalize); - }, - e => $pipeToFinalize(pipeState, e), - ); - return; - } - - finalize(); -} - -export function pipeToShutdown(pipeState) { - if (pipeState.shuttingDown) return; - - pipeState.shuttingDown = true; - - const hasError = arguments.length > 1; - const error = arguments[1]; - const finalize = () => { - if (hasError) $pipeToFinalize(pipeState, error); - else $pipeToFinalize(pipeState); - }; - - if ( - $getByIdDirectPrivate(pipeState.destination, "state") === "writable" && - !$writableStreamCloseQueuedOrInFlight(pipeState.destination) - ) { - pipeState.pendingReadPromiseCapability.$promise.$then( - () => { - pipeState.pendingWritePromise.$then(finalize, finalize); - }, - e => $pipeToFinalize(pipeState, e), - ); - return; - } - finalize(); -} - -export function pipeToFinalize(pipeState) { - $writableStreamDefaultWriterRelease(pipeState.writer); - $readableStreamReaderGenericRelease(pipeState.reader); - - // Instead of removing the abort algorithm as per spec, we make it a no-op which is equivalent. - pipeState.finalized = true; - - if (arguments.length > 1) pipeState.promiseCapability.$reject.$call(undefined, arguments[1]); - else pipeState.promiseCapability.$resolve.$call(); -} - -export function readableStreamTee(stream, shouldClone) { - $assert($isReadableStream(stream)); - $assert(typeof shouldClone === "boolean"); - - var start_ = $getByIdDirectPrivate(stream, "start"); - if (start_) { - $putByIdDirectPrivate(stream, "start", undefined); - start_(); - } - - const reader = new $ReadableStreamDefaultReader(stream); - - const teeState = { - closedOrErrored: false, - canceled1: false, - canceled2: false, - reason1: undefined, - reason2: undefined, - }; - - teeState.cancelPromiseCapability = $newPromiseCapability(Promise); - - const pullFunction = $readableStreamTeePullFunction(teeState, reader, shouldClone); - - const branch1Source = {}; - $putByIdDirectPrivate(branch1Source, "pull", pullFunction); - $putByIdDirectPrivate(branch1Source, "cancel", $readableStreamTeeBranch1CancelFunction(teeState, stream)); - - const branch2Source = {}; - $putByIdDirectPrivate(branch2Source, "pull", pullFunction); - $putByIdDirectPrivate(branch2Source, "cancel", $readableStreamTeeBranch2CancelFunction(teeState, stream)); - - const branch1 = new $ReadableStream(branch1Source); - const branch2 = new $ReadableStream(branch2Source); - - $getByIdDirectPrivate(reader, "closedPromiseCapability").$promise.$then(undefined, function (e) { - if (teeState.closedOrErrored) return; - $readableStreamDefaultControllerError(branch1.$readableStreamController, e); - $readableStreamDefaultControllerError(branch2.$readableStreamController, e); - teeState.closedOrErrored = true; - if (!teeState.canceled1 || !teeState.canceled2) teeState.cancelPromiseCapability.$resolve.$call(); - }); - - // Additional fields compared to the spec, as they are needed within pull/cancel functions. - teeState.branch1 = branch1; - teeState.branch2 = branch2; - - return [branch1, branch2]; -} - -export function readableStreamTeePullFunction(teeState, reader, shouldClone) { - return function () { - Promise.prototype.$then.$call($readableStreamDefaultReaderRead(reader), function (result) { - $assert($isObject(result)); - $assert(typeof result.done === "boolean"); - if (result.done && !teeState.closedOrErrored) { - if (!teeState.canceled1) $readableStreamDefaultControllerClose(teeState.branch1.$readableStreamController); - if (!teeState.canceled2) $readableStreamDefaultControllerClose(teeState.branch2.$readableStreamController); - teeState.closedOrErrored = true; - if (!teeState.canceled1 || !teeState.canceled2) teeState.cancelPromiseCapability.$resolve.$call(); - } - if (teeState.closedOrErrored) return; - if (!teeState.canceled1) - $readableStreamDefaultControllerEnqueue(teeState.branch1.$readableStreamController, result.value); - if (!teeState.canceled2) - $readableStreamDefaultControllerEnqueue( - teeState.branch2.$readableStreamController, - shouldClone ? $structuredCloneForStream(result.value) : result.value, - ); - }); - }; -} - -export function readableStreamTeeBranch1CancelFunction(teeState, stream) { - return function (r) { - teeState.canceled1 = true; - teeState.reason1 = r; - if (teeState.canceled2) { - $readableStreamCancel(stream, [teeState.reason1, teeState.reason2]).$then( - teeState.cancelPromiseCapability.$resolve, - teeState.cancelPromiseCapability.$reject, - ); - } - return teeState.cancelPromiseCapability.$promise; - }; -} - -export function readableStreamTeeBranch2CancelFunction(teeState, stream) { - return function (r) { - teeState.canceled2 = true; - teeState.reason2 = r; - if (teeState.canceled1) { - $readableStreamCancel(stream, [teeState.reason1, teeState.reason2]).$then( - teeState.cancelPromiseCapability.$resolve, - teeState.cancelPromiseCapability.$reject, - ); - } - return teeState.cancelPromiseCapability.$promise; - }; -} - -export function isReadableStream(stream) { - // Spec tells to return true only if stream has a readableStreamController internal slot. - // However, since it is a private slot, it cannot be checked using hasOwnProperty(). - // Therefore, readableStreamController is initialized with null value. - return $isObject(stream) && $getByIdDirectPrivate(stream, "readableStreamController") !== undefined; -} - -export function isReadableStreamDefaultReader(reader) { - // Spec tells to return true only if reader has a readRequests internal slot. - // However, since it is a private slot, it cannot be checked using hasOwnProperty(). - // Since readRequests is initialized with an empty array, the following test is ok. - return $isObject(reader) && !!$getByIdDirectPrivate(reader, "readRequests"); -} - -export function isReadableStreamDefaultController(controller) { - // Spec tells to return true only if controller has an underlyingSource internal slot. - // However, since it is a private slot, it cannot be checked using hasOwnProperty(). - // underlyingSource is obtained in ReadableStream constructor: if undefined, it is set - // to an empty object. Therefore, following test is ok. - return $isObject(controller) && !!$getByIdDirectPrivate(controller, "underlyingSource"); -} - -export function readDirectStream(stream, sink, underlyingSource) { - $putByIdDirectPrivate(stream, "underlyingSource", undefined); - $putByIdDirectPrivate(stream, "start", undefined); - - function close(stream, reason) { - if (reason && underlyingSource?.cancel) { - try { - var prom = underlyingSource.cancel(reason); - $markPromiseAsHandled(prom); - } catch (e) {} - - underlyingSource = undefined; - } - - if (stream) { - $putByIdDirectPrivate(stream, "readableStreamController", undefined); - $putByIdDirectPrivate(stream, "reader", undefined); - if (reason) { - $putByIdDirectPrivate(stream, "state", $streamErrored); - $putByIdDirectPrivate(stream, "storedError", reason); - } else { - $putByIdDirectPrivate(stream, "state", $streamClosed); - } - stream = undefined; - } - } - - if (!underlyingSource.pull) { - close(); - return; - } - - if (!$isCallable(underlyingSource.pull)) { - close(); - $throwTypeError("pull is not a function"); - return; - } - - $putByIdDirectPrivate(stream, "readableStreamController", sink); - const highWaterMark = $getByIdDirectPrivate(stream, "highWaterMark"); - - sink.start({ - highWaterMark: !highWaterMark || highWaterMark < 64 ? 64 : highWaterMark, - }); - - $startDirectStream.$call(sink, stream, underlyingSource.pull, close); - $putByIdDirectPrivate(stream, "reader", {}); - - var maybePromise = underlyingSource.pull(sink); - sink = undefined; - if (maybePromise && $isPromise(maybePromise)) { - return maybePromise.$then(() => {}); - } -} - -$linkTimeConstant; -export function assignToStream(stream, sink) { - // The stream is either a direct stream or a "default" JS stream - var underlyingSource = $getByIdDirectPrivate(stream, "underlyingSource"); - - // we know it's a direct stream when $underlyingSource is set - if (underlyingSource) { - try { - return $readDirectStream(stream, sink, underlyingSource); - } catch (e) { - throw e; - } finally { - underlyingSource = undefined; - stream = undefined; - sink = undefined; - } - } - - return $readStreamIntoSink(stream, sink, true); -} - -export async function readStreamIntoSink(stream, sink, isNative) { - var didClose = false; - var didThrow = false; - try { - var reader = stream.getReader(); - var many = reader.readMany(); - if (many && $isPromise(many)) { - many = await many; - } - if (many.done) { - didClose = true; - return sink.end(); - } - var wroteCount = many.value.length; - const highWaterMark = $getByIdDirectPrivate(stream, "highWaterMark"); - if (isNative) - $startDirectStream.$call(sink, stream, undefined, () => !didThrow && $markPromiseAsHandled(stream.cancel())); - - sink.start({ highWaterMark: highWaterMark || 0 }); - - for (var i = 0, values = many.value, length = many.value.length; i < length; i++) { - sink.write(values[i]); - } - - var streamState = $getByIdDirectPrivate(stream, "state"); - if (streamState === $streamClosed) { - didClose = true; - return sink.end(); - } - - while (true) { - var { value, done } = await reader.read(); - if (done) { - didClose = true; - return sink.end(); - } - - sink.write(value); - } - } catch (e) { - didThrow = true; - - try { - reader = undefined; - const prom = stream.cancel(e); - $markPromiseAsHandled(prom); - } catch (j) {} - - if (sink && !didClose) { - didClose = true; - try { - sink.close(e); - } catch (j) { - throw new globalThis.AggregateError([e, j]); - } - } - - throw e; - } finally { - if (reader) { - try { - reader.releaseLock(); - } catch (e) {} - reader = undefined; - } - sink = undefined; - var streamState = $getByIdDirectPrivate(stream, "state"); - if (stream) { - // make it easy for this to be GC'd - // but don't do property transitions - var readableStreamController = $getByIdDirectPrivate(stream, "readableStreamController"); - if (readableStreamController) { - if ($getByIdDirectPrivate(readableStreamController, "underlyingSource")) - $putByIdDirectPrivate(readableStreamController, "underlyingSource", undefined); - if ($getByIdDirectPrivate(readableStreamController, "controlledReadableStream")) - $putByIdDirectPrivate(readableStreamController, "controlledReadableStream", undefined); - - $putByIdDirectPrivate(stream, "readableStreamController", null); - if ($getByIdDirectPrivate(stream, "underlyingSource")) - $putByIdDirectPrivate(stream, "underlyingSource", undefined); - readableStreamController = undefined; - } - - if (!didThrow && streamState !== $streamClosed && streamState !== $streamErrored) { - $readableStreamClose(stream); - } - stream = undefined; - } - } -} - -export function handleDirectStreamError(e) { - var controller = this; - var sink = controller.$sink; - if (sink) { - $putByIdDirectPrivate(controller, "sink", undefined); - try { - sink.close(e); - } catch (f) {} - } - - this.error = this.flush = this.write = this.close = this.end = $onReadableStreamDirectControllerClosed; - - if (typeof this.$underlyingSource.close === "function") { - try { - this.$underlyingSource.close.$call(this.$underlyingSource, e); - } catch (e) {} - } - - try { - var pend = controller._pendingRead; - if (pend) { - controller._pendingRead = undefined; - $rejectPromise(pend, e); - } - } catch (f) {} - var stream = controller.$controlledReadableStream; - if (stream) $readableStreamError(stream, e); -} - -export function handleDirectStreamErrorReject(e) { - $handleDirectStreamError.$call(this, e); - return Promise.$reject(e); -} - -export function onPullDirectStream(controller) { - var stream = controller.$controlledReadableStream; - if (!stream || $getByIdDirectPrivate(stream, "state") !== $streamReadable) return; - - // pull is in progress - // this is a recursive call - // ignore it - if (controller._deferClose === -1) { - return; - } - - controller._deferClose = -1; - controller._deferFlush = -1; - var deferClose; - var deferFlush; - - // Direct streams allow $pull to be called multiple times, unlike the spec. - // Backpressure is handled by the destination, not by the underlying source. - // In this case, we rely on the heuristic that repeatedly draining in the same tick - // is bad for performance - // this code is only run when consuming a direct stream from JS - // without the HTTP server or anything else - try { - var result = controller.$underlyingSource.pull(controller); - - if (result && $isPromise(result)) { - if (controller._handleError === undefined) { - controller._handleError = $handleDirectStreamErrorReject.bind(controller); - } - - Promise.prototype.catch.$call(result, controller._handleError); - } - } catch (e) { - return $handleDirectStreamErrorReject.$call(controller, e); - } finally { - deferClose = controller._deferClose; - deferFlush = controller._deferFlush; - controller._deferFlush = controller._deferClose = 0; - } - - var promiseToReturn; - - if (controller._pendingRead === undefined) { - controller._pendingRead = promiseToReturn = $newPromise(); - } else { - promiseToReturn = $readableStreamAddReadRequest(stream); - } - - // they called close during $pull() - // we delay that - if (deferClose === 1) { - var reason = controller._deferCloseReason; - controller._deferCloseReason = undefined; - $onCloseDirectStream.$call(controller, reason); - return promiseToReturn; - } - - // not done, but they called flush() - if (deferFlush === 1) { - $onFlushDirectStream.$call(controller); - } - - return promiseToReturn; -} - -export function noopDoneFunction() { - return Promise.$resolve({ value: undefined, done: true }); -} - -export function onReadableStreamDirectControllerClosed(reason) { - $throwTypeError("ReadableStreamDirectController is now closed"); -} - -export function onCloseDirectStream(reason) { - var stream = this.$controlledReadableStream; - if (!stream || $getByIdDirectPrivate(stream, "state") !== $streamReadable) return; - - if (this._deferClose !== 0) { - this._deferClose = 1; - this._deferCloseReason = reason; - return; - } - - $putByIdDirectPrivate(stream, "state", $streamClosing); - if (typeof this.$underlyingSource.close === "function") { - try { - this.$underlyingSource.close.$call(this.$underlyingSource, reason); - } catch (e) {} - } - - var flushed; - try { - flushed = this.$sink.end(); - $putByIdDirectPrivate(this, "sink", undefined); - } catch (e) { - if (this._pendingRead) { - var read = this._pendingRead; - this._pendingRead = undefined; - $rejectPromise(read, e); - } - $readableStreamError(stream, e); - return; - } - - this.error = this.flush = this.write = this.close = this.end = $onReadableStreamDirectControllerClosed; - - var reader = $getByIdDirectPrivate(stream, "reader"); - - if (reader && $isReadableStreamDefaultReader(reader)) { - var _pendingRead = this._pendingRead; - if (_pendingRead && $isPromise(_pendingRead) && flushed?.byteLength) { - this._pendingRead = undefined; - $fulfillPromise(_pendingRead, { value: flushed, done: false }); - $readableStreamClose(stream); - return; - } - } - - if (flushed?.byteLength) { - var requests = $getByIdDirectPrivate(reader, "readRequests"); - if (requests?.isNotEmpty()) { - $readableStreamFulfillReadRequest(stream, flushed, false); - $readableStreamClose(stream); - return; - } - - $putByIdDirectPrivate(stream, "state", $streamReadable); - this.$pull = () => { - var thisResult = $createFulfilledPromise({ - value: flushed, - done: false, - }); - flushed = undefined; - $readableStreamClose(stream); - stream = undefined; - return thisResult; - }; - } else if (this._pendingRead) { - var read = this._pendingRead; - this._pendingRead = undefined; - $putByIdDirectPrivate(this, "pull", $noopDoneFunction); - $fulfillPromise(read, { value: undefined, done: true }); - } - - $readableStreamClose(stream); -} - -export function onFlushDirectStream() { - var stream = this.$controlledReadableStream; - var reader = $getByIdDirectPrivate(stream, "reader"); - if (!reader || !$isReadableStreamDefaultReader(reader)) { - return; - } - - var _pendingRead = this._pendingRead; - this._pendingRead = undefined; - if (_pendingRead && $isPromise(_pendingRead)) { - var flushed = this.$sink.flush(); - if (flushed?.byteLength) { - this._pendingRead = $getByIdDirectPrivate(stream, "readRequests")?.shift(); - $fulfillPromise(_pendingRead, { value: flushed, done: false }); - } else { - this._pendingRead = _pendingRead; - } - } else if ($getByIdDirectPrivate(stream, "readRequests")?.isNotEmpty()) { - var flushed = this.$sink.flush(); - if (flushed?.byteLength) { - $readableStreamFulfillReadRequest(stream, flushed, false); - } - } else if (this._deferFlush === -1) { - this._deferFlush = 1; - } -} - -export function createTextStream(highWaterMark) { - var sink; - var array = []; - var hasString = false; - var hasBuffer = false; - var rope = ""; - var estimatedLength = $toLength(0); - var capability = $newPromiseCapability(Promise); - var calledDone = false; - - sink = { - start() {}, - write(chunk) { - if (typeof chunk === "string") { - var chunkLength = $toLength(chunk.length); - if (chunkLength > 0) { - rope += chunk; - hasString = true; - // TODO: utf16 byte length - estimatedLength += chunkLength; - } - - return chunkLength; - } - - if (!chunk || !($ArrayBuffer.$isView(chunk) || chunk instanceof $ArrayBuffer)) { - $throwTypeError("Expected text, ArrayBuffer or ArrayBufferView"); - } - - const byteLength = $toLength(chunk.byteLength); - if (byteLength > 0) { - hasBuffer = true; - if (rope.length > 0) { - $arrayPush(array, rope, chunk); - rope = ""; - } else { - $arrayPush(array, chunk); - } - } - estimatedLength += byteLength; - return byteLength; - }, - - flush() { - return 0; - }, - - end() { - if (calledDone) { - return ""; - } - return sink.fulfill(); - }, - - fulfill() { - calledDone = true; - const result = sink.finishInternal(); - - $fulfillPromise(capability.$promise, result); - return result; - }, - - finishInternal() { - if (!hasString && !hasBuffer) { - return ""; - } - - if (hasString && !hasBuffer) { - return rope; - } - - if (hasBuffer && !hasString) { - return new globalThis.TextDecoder().decode($Bun.concatArrayBuffers(array)); - } - - // worst case: mixed content - - var arrayBufferSink = new $Bun.ArrayBufferSink(); - arrayBufferSink.start({ - highWaterMark: estimatedLength, - asUint8Array: true, - }); - for (let item of array) { - arrayBufferSink.write(item); - } - array.length = 0; - if (rope.length > 0) { - arrayBufferSink.write(rope); - rope = ""; - } - - // TODO: use builtin - return new globalThis.TextDecoder().decode(arrayBufferSink.end()); - }, - - close() { - try { - if (!calledDone) { - calledDone = true; - sink.fulfill(); - } - } catch (e) {} - }, - }; - - return [sink, capability]; -} - -export function initializeTextStream(underlyingSource, highWaterMark) { - var [sink, closingPromise] = $createTextStream(highWaterMark); - - var controller = { - $underlyingSource: underlyingSource, - $pull: $onPullDirectStream, - $controlledReadableStream: this, - $sink: sink, - close: $onCloseDirectStream, - write: sink.write, - error: $handleDirectStreamError, - end: $onCloseDirectStream, - $close: $onCloseDirectStream, - flush: $onFlushDirectStream, - _pendingRead: undefined, - _deferClose: 0, - _deferFlush: 0, - _deferCloseReason: undefined, - _handleError: undefined, - }; - - $putByIdDirectPrivate(this, "readableStreamController", controller); - $putByIdDirectPrivate(this, "underlyingSource", undefined); - $putByIdDirectPrivate(this, "start", undefined); - return closingPromise; -} - -export function initializeArrayStream(underlyingSource, highWaterMark) { - var array = []; - var closingPromise = $newPromiseCapability(Promise); - var calledDone = false; - - function fulfill() { - calledDone = true; - closingPromise.$resolve.$call(undefined, array); - return array; - } - - var sink = { - start() {}, - write(chunk) { - $arrayPush(array, chunk); - return chunk.byteLength || chunk.length; - }, - - flush() { - return 0; - }, - - end() { - if (calledDone) { - return []; - } - return fulfill(); - }, - - close() { - if (!calledDone) { - fulfill(); - } - }, - }; - - var controller = { - $underlyingSource: underlyingSource, - $pull: $onPullDirectStream, - $controlledReadableStream: this, - $sink: sink, - close: $onCloseDirectStream, - write: sink.write, - error: $handleDirectStreamError, - end: $onCloseDirectStream, - $close: $onCloseDirectStream, - flush: $onFlushDirectStream, - _pendingRead: undefined, - _deferClose: 0, - _deferFlush: 0, - _deferCloseReason: undefined, - _handleError: undefined, - }; - - $putByIdDirectPrivate(this, "readableStreamController", controller); - $putByIdDirectPrivate(this, "underlyingSource", undefined); - $putByIdDirectPrivate(this, "start", undefined); - return closingPromise; -} - -export function initializeArrayBufferStream(underlyingSource, highWaterMark) { - // This is the fallback implementation for direct streams - // When we don't know what the destination type is - // We assume it is a Uint8Array. - - var opts = - highWaterMark && typeof highWaterMark === "number" - ? { highWaterMark, stream: true, asUint8Array: true } - : { stream: true, asUint8Array: true }; - var sink = new $Bun.ArrayBufferSink(); - sink.start(opts); - - var controller = { - $underlyingSource: underlyingSource, - $pull: $onPullDirectStream, - $controlledReadableStream: this, - $sink: sink, - close: $onCloseDirectStream, - write: sink.write.bind(sink), - error: $handleDirectStreamError, - end: $onCloseDirectStream, - $close: $onCloseDirectStream, - flush: $onFlushDirectStream, - _pendingRead: undefined, - _deferClose: 0, - _deferFlush: 0, - _deferCloseReason: undefined, - _handleError: undefined, - }; - - $putByIdDirectPrivate(this, "readableStreamController", controller); - $putByIdDirectPrivate(this, "underlyingSource", undefined); - $putByIdDirectPrivate(this, "start", undefined); -} - -export function readableStreamError(stream, error) { - $assert($isReadableStream(stream)); - $assert($getByIdDirectPrivate(stream, "state") === $streamReadable); - $putByIdDirectPrivate(stream, "state", $streamErrored); - $putByIdDirectPrivate(stream, "storedError", error); - - const reader = $getByIdDirectPrivate(stream, "reader"); - - if (!reader) return; - - if ($isReadableStreamDefaultReader(reader)) { - const requests = $getByIdDirectPrivate(reader, "readRequests"); - $putByIdDirectPrivate(reader, "readRequests", $createFIFO()); - for (var request = requests.shift(); request; request = requests.shift()) $rejectPromise(request, error); - } else { - $assert($isReadableStreamBYOBReader(reader)); - const requests = $getByIdDirectPrivate(reader, "readIntoRequests"); - $putByIdDirectPrivate(reader, "readIntoRequests", $createFIFO()); - for (var request = requests.shift(); request; request = requests.shift()) $rejectPromise(request, error); - } - - $getByIdDirectPrivate(reader, "closedPromiseCapability").$reject.$call(undefined, error); - const promise = $getByIdDirectPrivate(reader, "closedPromiseCapability").$promise; - $markPromiseAsHandled(promise); -} - -export function readableStreamDefaultControllerShouldCallPull(controller) { - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - - if (!$readableStreamDefaultControllerCanCloseOrEnqueue(controller)) return false; - if (!($getByIdDirectPrivate(controller, "started") === 1)) return false; - if ( - (!$isReadableStreamLocked(stream) || - !$getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readRequests")?.isNotEmpty()) && - $readableStreamDefaultControllerGetDesiredSize(controller) <= 0 - ) - return false; - const desiredSize = $readableStreamDefaultControllerGetDesiredSize(controller); - $assert(desiredSize !== null); - return desiredSize > 0; -} - -export function readableStreamDefaultControllerCallPullIfNeeded(controller) { - // FIXME: use $readableStreamDefaultControllerShouldCallPull - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - - if (!$readableStreamDefaultControllerCanCloseOrEnqueue(controller)) return; - if (!($getByIdDirectPrivate(controller, "started") === 1)) return; - if ( - (!$isReadableStreamLocked(stream) || - !$getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readRequests")?.isNotEmpty()) && - $readableStreamDefaultControllerGetDesiredSize(controller) <= 0 - ) - return; - - if ($getByIdDirectPrivate(controller, "pulling")) { - $putByIdDirectPrivate(controller, "pullAgain", true); - return; - } - - $assert(!$getByIdDirectPrivate(controller, "pullAgain")); - $putByIdDirectPrivate(controller, "pulling", true); - - $getByIdDirectPrivate(controller, "pullAlgorithm") - .$call(undefined) - .$then( - function () { - $putByIdDirectPrivate(controller, "pulling", false); - if ($getByIdDirectPrivate(controller, "pullAgain")) { - $putByIdDirectPrivate(controller, "pullAgain", false); - - $readableStreamDefaultControllerCallPullIfNeeded(controller); - } - }, - function (error) { - $readableStreamDefaultControllerError(controller, error); - }, - ); -} - -export function isReadableStreamLocked(stream) { - $assert($isReadableStream(stream)); - return !!$getByIdDirectPrivate(stream, "reader"); -} - -export function readableStreamDefaultControllerGetDesiredSize(controller) { - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - const state = $getByIdDirectPrivate(stream, "state"); - - if (state === $streamErrored) return null; - if (state === $streamClosed) return 0; - - return $getByIdDirectPrivate(controller, "strategy").highWaterMark - $getByIdDirectPrivate(controller, "queue").size; -} - -export function readableStreamReaderGenericCancel(reader, reason) { - const stream = $getByIdDirectPrivate(reader, "ownerReadableStream"); - $assert(!!stream); - return $readableStreamCancel(stream, reason); -} - -export function readableStreamCancel(stream, reason) { - $putByIdDirectPrivate(stream, "disturbed", true); - const state = $getByIdDirectPrivate(stream, "state"); - if (state === $streamClosed) return Promise.$resolve(); - if (state === $streamErrored) return Promise.$reject($getByIdDirectPrivate(stream, "storedError")); - $readableStreamClose(stream); - - var controller = $getByIdDirectPrivate(stream, "readableStreamController"); - var cancel = controller.$cancel; - if (cancel) { - return cancel(controller, reason).$then(function () {}); - } - - var close = controller.close; - if (close) { - return Promise.$resolve(controller.close(reason)); - } - - $throwTypeError("ReadableStreamController has no cancel or close method"); -} - -export function readableStreamDefaultControllerCancel(controller, reason) { - $putByIdDirectPrivate(controller, "queue", $newQueue()); - return $getByIdDirectPrivate(controller, "cancelAlgorithm").$call(undefined, reason); -} - -export function readableStreamDefaultControllerPull(controller) { - var queue = $getByIdDirectPrivate(controller, "queue"); - if (queue.content.isNotEmpty()) { - const chunk = $dequeueValue(queue); - if ($getByIdDirectPrivate(controller, "closeRequested") && queue.content.isEmpty()) - $readableStreamClose($getByIdDirectPrivate(controller, "controlledReadableStream")); - else $readableStreamDefaultControllerCallPullIfNeeded(controller); - - return $createFulfilledPromise({ value: chunk, done: false }); - } - const pendingPromise = $readableStreamAddReadRequest($getByIdDirectPrivate(controller, "controlledReadableStream")); - $readableStreamDefaultControllerCallPullIfNeeded(controller); - return pendingPromise; -} - -export function readableStreamDefaultControllerClose(controller) { - $assert($readableStreamDefaultControllerCanCloseOrEnqueue(controller)); - $putByIdDirectPrivate(controller, "closeRequested", true); - if ($getByIdDirectPrivate(controller, "queue")?.content?.isEmpty()) - $readableStreamClose($getByIdDirectPrivate(controller, "controlledReadableStream")); -} - -export function readableStreamClose(stream) { - $assert($getByIdDirectPrivate(stream, "state") === $streamReadable); - $putByIdDirectPrivate(stream, "state", $streamClosed); - if (!$getByIdDirectPrivate(stream, "reader")) return; - - if ($isReadableStreamDefaultReader($getByIdDirectPrivate(stream, "reader"))) { - const requests = $getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readRequests"); - if (requests.isNotEmpty()) { - $putByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readRequests", $createFIFO()); - - for (var request = requests.shift(); request; request = requests.shift()) - $fulfillPromise(request, { value: undefined, done: true }); - } - } - - $getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "closedPromiseCapability").$resolve.$call(); -} - -export function readableStreamFulfillReadRequest(stream, chunk, done) { - const readRequest = $getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readRequests").shift(); - $fulfillPromise(readRequest, { value: chunk, done: done }); -} - -export function readableStreamDefaultControllerEnqueue(controller, chunk) { - const stream = $getByIdDirectPrivate(controller, "controlledReadableStream"); - // this is checked by callers - $assert($readableStreamDefaultControllerCanCloseOrEnqueue(controller)); - - if ( - $isReadableStreamLocked(stream) && - $getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readRequests")?.isNotEmpty() - ) { - $readableStreamFulfillReadRequest(stream, chunk, false); - $readableStreamDefaultControllerCallPullIfNeeded(controller); - return; - } - - try { - let chunkSize = 1; - if ($getByIdDirectPrivate(controller, "strategy").size !== undefined) - chunkSize = $getByIdDirectPrivate(controller, "strategy").size(chunk); - $enqueueValueWithSize($getByIdDirectPrivate(controller, "queue"), chunk, chunkSize); - } catch (error) { - $readableStreamDefaultControllerError(controller, error); - throw error; - } - $readableStreamDefaultControllerCallPullIfNeeded(controller); -} - -export function readableStreamDefaultReaderRead(reader) { - const stream = $getByIdDirectPrivate(reader, "ownerReadableStream"); - $assert(!!stream); - const state = $getByIdDirectPrivate(stream, "state"); - - $putByIdDirectPrivate(stream, "disturbed", true); - if (state === $streamClosed) return $createFulfilledPromise({ value: undefined, done: true }); - if (state === $streamErrored) return Promise.$reject($getByIdDirectPrivate(stream, "storedError")); - $assert(state === $streamReadable); - - return $getByIdDirectPrivate(stream, "readableStreamController").$pull( - $getByIdDirectPrivate(stream, "readableStreamController"), - ); -} - -export function readableStreamAddReadRequest(stream) { - $assert($isReadableStreamDefaultReader($getByIdDirectPrivate(stream, "reader"))); - $assert($getByIdDirectPrivate(stream, "state") == $streamReadable); - - const readRequest = $newPromise(); - - $getByIdDirectPrivate($getByIdDirectPrivate(stream, "reader"), "readRequests").push(readRequest); - - return readRequest; -} - -export function isReadableStreamDisturbed(stream) { - $assert($isReadableStream(stream)); - return $getByIdDirectPrivate(stream, "disturbed"); -} - -export function readableStreamReaderGenericRelease(reader) { - $assert(!!$getByIdDirectPrivate(reader, "ownerReadableStream")); - $assert($getByIdDirectPrivate($getByIdDirectPrivate(reader, "ownerReadableStream"), "reader") === reader); - - if ($getByIdDirectPrivate($getByIdDirectPrivate(reader, "ownerReadableStream"), "state") === $streamReadable) - $getByIdDirectPrivate(reader, "closedPromiseCapability").$reject.$call( - undefined, - $makeTypeError("releasing lock of reader whose stream is still in readable state"), - ); - else - $putByIdDirectPrivate(reader, "closedPromiseCapability", { - $promise: $newHandledRejectedPromise($makeTypeError("reader released lock")), - }); - - const promise = $getByIdDirectPrivate(reader, "closedPromiseCapability").$promise; - $markPromiseAsHandled(promise); - $putByIdDirectPrivate($getByIdDirectPrivate(reader, "ownerReadableStream"), "reader", undefined); - $putByIdDirectPrivate(reader, "ownerReadableStream", undefined); -} - -export function readableStreamDefaultControllerCanCloseOrEnqueue(controller) { - return ( - !$getByIdDirectPrivate(controller, "closeRequested") && - $getByIdDirectPrivate($getByIdDirectPrivate(controller, "controlledReadableStream"), "state") === $streamReadable - ); -} - -export function lazyLoadStream(stream, autoAllocateChunkSize) { - var nativeType = $getByIdDirectPrivate(stream, "bunNativeType"); - var nativePtr = $getByIdDirectPrivate(stream, "bunNativePtr"); - var Prototype = $lazyStreamPrototypeMap.$get(nativeType); - if (Prototype === undefined) { - var [pull, start, cancel, setClose, deinit, setRefOrUnref, drain] = $lazyLoad(nativeType); - var closer = [false]; - var handleResult; - function handleNativeReadableStreamPromiseResult(val) { - var { c, v } = this; - this.c = undefined; - this.v = undefined; - handleResult(val, c, v); - } - - function callClose(controller) { - try { - controller.close(); - } catch (e) { - globalThis.reportError(e); - } - } - - handleResult = function handleResult(result, controller, view) { - if (result && $isPromise(result)) { - return result.then( - handleNativeReadableStreamPromiseResult.bind({ - c: controller, - v: view, - }), - err => controller.error(err), - ); - } else if (typeof result === "number") { - if (view && view.byteLength === result && view.buffer === controller.byobRequest?.view?.buffer) { - controller.byobRequest.respondWithNewView(view); - } else { - controller.byobRequest.respond(result); - } - } else if (result.constructor === $Uint8Array) { - controller.enqueue(result); - } - - if (closer[0] || result === false) { - $enqueueJob(callClose, controller); - closer[0] = false; - } - }; - - function createResult(tag, controller, view, closer) { - closer[0] = false; - - var result; - try { - result = pull(tag, view, closer); - } catch (err) { - return controller.error(err); - } - - return handleResult(result, controller, view); - } - - const registry = deinit ? new FinalizationRegistry(deinit) : null; - Prototype = class NativeReadableStreamSource { - constructor(tag, autoAllocateChunkSize, drainValue) { - this.#tag = tag; - this.#cancellationToken = {}; - this.pull = this.#pull.bind(this); - this.cancel = this.#cancel.bind(this); - this.autoAllocateChunkSize = autoAllocateChunkSize; - - if (drainValue !== undefined) { - this.start = controller => { - controller.enqueue(drainValue); - }; - } - - if (registry) { - registry.register(this, tag, this.#cancellationToken); - } - } - - #cancellationToken; - pull; - cancel; - start; - - #tag; - type = "bytes"; - autoAllocateChunkSize = 0; - - static startSync = start; - - #pull(controller) { - var tag = this.#tag; - - if (!tag) { - controller.close(); - return; - } - - createResult(tag, controller, controller.byobRequest.view, closer); - } - - #cancel(reason) { - var tag = this.#tag; - - registry && registry.unregister(this.#cancellationToken); - setRefOrUnref && setRefOrUnref(tag, false); - cancel(tag, reason); - } - static deinit = deinit; - static drain = drain; - }; - $lazyStreamPrototypeMap.$set(nativeType, Prototype); - } - - const chunkSize = Prototype.startSync(nativePtr, autoAllocateChunkSize); - var drainValue; - const { drain: drainFn, deinit: deinitFn } = Prototype; - if (drainFn) { - drainValue = drainFn(nativePtr); - } - - // empty file, no need for native back-and-forth on this - if (chunkSize === 0) { - deinit && nativePtr && $enqueueJob(deinit, nativePtr); - - if ((drainValue?.byteLength ?? 0) > 0) { - return { - start(controller) { - controller.enqueue(drainValue); - controller.close(); - }, - type: "bytes", - }; - } - - return { - start(controller) { - controller.close(); - }, - type: "bytes", - }; - } - - return new Prototype(nativePtr, chunkSize, drainValue); -} - -export function readableStreamIntoArray(stream) { - var reader = stream.getReader(); - var manyResult = reader.readMany(); - - async function processManyResult(result) { - if (result.done) { - return []; - } - - var chunks = result.value || []; - - while (true) { - var thisResult = await reader.read(); - if (thisResult.done) { - break; - } - chunks = chunks.concat(thisResult.value); - } - - return chunks; - } - - if (manyResult && $isPromise(manyResult)) { - return manyResult.$then(processManyResult); - } - - return processManyResult(manyResult); -} - -export function readableStreamIntoText(stream) { - const [textStream, closer] = $createTextStream($getByIdDirectPrivate(stream, "highWaterMark")); - const prom = $readStreamIntoSink(stream, textStream, false); - if (prom && $isPromise(prom)) { - return Promise.$resolve(prom).$then(closer.$promise); - } - return closer.$promise; -} - -export function readableStreamToArrayBufferDirect(stream, underlyingSource) { - var sink = new $Bun.ArrayBufferSink(); - $putByIdDirectPrivate(stream, "underlyingSource", undefined); - var highWaterMark = $getByIdDirectPrivate(stream, "highWaterMark"); - sink.start(highWaterMark ? { highWaterMark } : {}); - var capability = $newPromiseCapability(Promise); - var ended = false; - var pull = underlyingSource.pull; - var close = underlyingSource.close; - - var controller = { - start() {}, - close(reason) { - if (!ended) { - ended = true; - if (close) { - close(); - } - - $fulfillPromise(capability.$promise, sink.end()); - } - }, - end() { - if (!ended) { - ended = true; - if (close) { - close(); - } - $fulfillPromise(capability.$promise, sink.end()); - } - }, - flush() { - return 0; - }, - write: sink.write.bind(sink), - }; - - var didError = false; - try { - const firstPull = pull(controller); - if (firstPull && $isObject(firstPull) && $isPromise(firstPull)) { - return (async function (controller, promise, pull) { - while (!ended) { - await pull(controller); - } - return await promise; - })(controller, promise, pull); - } - - return capability.$promise; - } catch (e) { - didError = true; - $readableStreamError(stream, e); - return Promise.$reject(e); - } finally { - if (!didError && stream) $readableStreamClose(stream); - controller = close = sink = pull = stream = undefined; - } -} - -export async function readableStreamToTextDirect(stream, underlyingSource) { - const capability = $initializeTextStream.$call(stream, underlyingSource, undefined); - var reader = stream.getReader(); - - while ($getByIdDirectPrivate(stream, "state") === $streamReadable) { - var thisResult = await reader.read(); - if (thisResult.done) { - break; - } - } - - try { - reader.releaseLock(); - } catch (e) {} - reader = undefined; - stream = undefined; - - return capability.$promise; -} - -export async function readableStreamToArrayDirect(stream, underlyingSource) { - const capability = $initializeArrayStream.$call(stream, underlyingSource, undefined); - underlyingSource = undefined; - var reader = stream.getReader(); - try { - while ($getByIdDirectPrivate(stream, "state") === $streamReadable) { - var thisResult = await reader.read(); - if (thisResult.done) { - break; - } - } - - try { - reader.releaseLock(); - } catch (e) {} - reader = undefined; - - return Promise.$resolve(capability.$promise); - } catch (e) { - throw e; - } finally { - stream = undefined; - reader = undefined; - } -} - -export function readableStreamDefineLazyIterators(prototype) { - var asyncIterator = globalThis.Symbol.asyncIterator; - - var ReadableStreamAsyncIterator = async function* ReadableStreamAsyncIterator(stream, preventCancel) { - var reader = stream.getReader(); - var deferredError; - try { - while (true) { - var done, value; - const firstResult = reader.readMany(); - if ($isPromise(firstResult)) { - ({ done, value } = await firstResult); - } else { - ({ done, value } = firstResult); - } - - if (done) { - return; - } - yield* value; - } - } catch (e) { - deferredError = e; - } finally { - reader.releaseLock(); - - if (!preventCancel) { - stream.cancel(deferredError); - } - - if (deferredError) { - throw deferredError; - } - } - }; - var createAsyncIterator = function asyncIterator() { - return ReadableStreamAsyncIterator(this, false); - }; - var createValues = function values({ preventCancel = false } = { preventCancel: false }) { - return ReadableStreamAsyncIterator(this, preventCancel); - }; - $Object.$defineProperty(prototype, asyncIterator, { value: createAsyncIterator }); - $Object.$defineProperty(prototype, "values", { value: createValues }); - return prototype; -} diff --git a/src/bun.js/builtins/ts/StreamInternals.ts b/src/bun.js/builtins/ts/StreamInternals.ts deleted file mode 100644 index b42dc2f57..000000000 --- a/src/bun.js/builtins/ts/StreamInternals.ts +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Copyright (C) 2015 Canon Inc. - * Copyright (C) 2015 Igalia. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// @internal - -export function markPromiseAsHandled(promise: Promise<unknown>) { - $assert($isPromise(promise)); - $putPromiseInternalField( - promise, - $promiseFieldFlags, - $getPromiseInternalField(promise, $promiseFieldFlags) | $promiseFlagsIsHandled, - ); -} - -export function shieldingPromiseResolve(result) { - const promise = Promise.$resolve(result); - if (promise.$then === undefined) promise.$then = Promise.prototype.$then; - return promise; -} - -export function promiseInvokeOrNoopMethodNoCatch(object, method, args) { - if (method === undefined) return Promise.$resolve(); - return $shieldingPromiseResolve(method.$apply(object, args)); -} - -export function promiseInvokeOrNoopNoCatch(object, key, args) { - return $promiseInvokeOrNoopMethodNoCatch(object, object[key], args); -} - -export function promiseInvokeOrNoopMethod(object, method, args) { - try { - return $promiseInvokeOrNoopMethodNoCatch(object, method, args); - } catch (error) { - return Promise.$reject(error); - } -} - -export function promiseInvokeOrNoop(object, key, args) { - try { - return $promiseInvokeOrNoopNoCatch(object, key, args); - } catch (error) { - return Promise.$reject(error); - } -} - -export function promiseInvokeOrFallbackOrNoop(object, key1, args1, key2, args2) { - try { - const method = object[key1]; - if (method === undefined) return $promiseInvokeOrNoopNoCatch(object, key2, args2); - return $shieldingPromiseResolve(method.$apply(object, args1)); - } catch (error) { - return Promise.$reject(error); - } -} - -export function validateAndNormalizeQueuingStrategy(size, highWaterMark) { - if (size !== undefined && typeof size !== "function") throw new TypeError("size parameter must be a function"); - - const newHighWaterMark = $toNumber(highWaterMark); - - if (isNaN(newHighWaterMark) || newHighWaterMark < 0) - throw new RangeError("highWaterMark value is negative or not a number"); - - return { size: size, highWaterMark: newHighWaterMark }; -} - -$linkTimeConstant; -export function createFIFO() { - var slice = Array.prototype.slice; - - class Denqueue { - constructor() { - this._head = 0; - this._tail = 0; - // this._capacity = 0; - this._capacityMask = 0x3; - this._list = $newArrayWithSize(4); - } - - _head; - _tail; - _capacityMask; - _list; - - size() { - if (this._head === this._tail) return 0; - if (this._head < this._tail) return this._tail - this._head; - else return this._capacityMask + 1 - (this._head - this._tail); - } - - isEmpty() { - return this.size() == 0; - } - - isNotEmpty() { - return this.size() > 0; - } - - shift() { - var { _head: head, _tail, _list, _capacityMask } = this; - if (head === _tail) return undefined; - var item = _list[head]; - $putByValDirect(_list, head, undefined); - head = this._head = (head + 1) & _capacityMask; - if (head < 2 && _tail > 10000 && _tail <= _list.length >>> 2) this._shrinkArray(); - return item; - } - - peek() { - if (this._head === this._tail) return undefined; - return this._list[this._head]; - } - - push(item) { - var tail = this._tail; - $putByValDirect(this._list, tail, item); - this._tail = (tail + 1) & this._capacityMask; - if (this._tail === this._head) { - this._growArray(); - } - // if (this._capacity && this.size() > this._capacity) { - // this.shift(); - // } - } - - toArray(fullCopy) { - var list = this._list; - var len = $toLength(list.length); - - if (fullCopy || this._head > this._tail) { - var _head = $toLength(this._head); - var _tail = $toLength(this._tail); - var total = $toLength(len - _head + _tail); - var array = $newArrayWithSize(total); - var j = 0; - for (var i = _head; i < len; i++) $putByValDirect(array, j++, list[i]); - for (var i = 0; i < _tail; i++) $putByValDirect(array, j++, list[i]); - return array; - } else { - return slice.$call(list, this._head, this._tail); - } - } - - clear() { - this._head = 0; - this._tail = 0; - this._list.fill(undefined); - } - - _growArray() { - if (this._head) { - // copy existing data, head to end, then beginning to tail. - this._list = this.toArray(true); - this._head = 0; - } - - // head is at 0 and array is now full, safe to extend - this._tail = $toLength(this._list.length); - - this._list.length <<= 1; - this._capacityMask = (this._capacityMask << 1) | 1; - } - - shrinkArray() { - this._list.length >>>= 1; - this._capacityMask >>>= 1; - } - } - - return new Denqueue(); -} - -export function newQueue() { - return { content: $createFIFO(), size: 0 }; -} - -export function dequeueValue(queue) { - const record = queue.content.shift(); - queue.size -= record.size; - // As described by spec, below case may occur due to rounding errors. - if (queue.size < 0) queue.size = 0; - return record.value; -} - -export function enqueueValueWithSize(queue, value, size) { - size = $toNumber(size); - if (!isFinite(size) || size < 0) throw new RangeError("size has an incorrect value"); - - queue.content.push({ value, size }); - queue.size += size; -} - -export function peekQueueValue(queue) { - return queue.content.peek()?.value; -} - -export function resetQueue(queue) { - $assert("content" in queue); - $assert("size" in queue); - queue.content.clear(); - queue.size = 0; -} - -export function extractSizeAlgorithm(strategy) { - const sizeAlgorithm = strategy.size; - - if (sizeAlgorithm === undefined) return () => 1; - - if (typeof sizeAlgorithm !== "function") throw new TypeError("strategy.size must be a function"); - - return chunk => { - return sizeAlgorithm(chunk); - }; -} - -export function extractHighWaterMark(strategy, defaultHWM) { - const highWaterMark = strategy.highWaterMark; - - if (highWaterMark === undefined) return defaultHWM; - - if (isNaN(highWaterMark) || highWaterMark < 0) - throw new RangeError("highWaterMark value is negative or not a number"); - - return $toNumber(highWaterMark); -} - -export function extractHighWaterMarkFromQueuingStrategyInit(init: { highWaterMark?: number }) { - if (!$isObject(init)) throw new TypeError("QueuingStrategyInit argument must be an object."); - const { highWaterMark } = init; - if (highWaterMark === undefined) throw new TypeError("QueuingStrategyInit.highWaterMark member is required."); - - return $toNumber(highWaterMark); -} - -export function createFulfilledPromise(value) { - const promise = $newPromise(); - $fulfillPromise(promise, value); - return promise; -} - -export function toDictionary(value, defaultValue, errorMessage) { - if (value === undefined || value === null) return defaultValue; - if (!$isObject(value)) throw new TypeError(errorMessage); - return value; -} diff --git a/src/bun.js/builtins/ts/TransformStream.ts b/src/bun.js/builtins/ts/TransformStream.ts deleted file mode 100644 index 54467db39..000000000 --- a/src/bun.js/builtins/ts/TransformStream.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2020 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeTransformStream(this) { - let transformer = arguments[0]; - - // This is the path for CreateTransformStream. - if ($isObject(transformer) && $getByIdDirectPrivate(transformer, "TransformStream")) return this; - - let writableStrategy = arguments[1]; - let readableStrategy = arguments[2]; - - if (transformer === undefined) transformer = null; - - if (readableStrategy === undefined) readableStrategy = {}; - - if (writableStrategy === undefined) writableStrategy = {}; - - let transformerDict = {}; - if (transformer !== null) { - if ("start" in transformer) { - transformerDict["start"] = transformer["start"]; - if (typeof transformerDict["start"] !== "function") $throwTypeError("transformer.start should be a function"); - } - if ("transform" in transformer) { - transformerDict["transform"] = transformer["transform"]; - if (typeof transformerDict["transform"] !== "function") - $throwTypeError("transformer.transform should be a function"); - } - if ("flush" in transformer) { - transformerDict["flush"] = transformer["flush"]; - if (typeof transformerDict["flush"] !== "function") $throwTypeError("transformer.flush should be a function"); - } - - if ("readableType" in transformer) throw new RangeError("TransformStream transformer has a readableType"); - if ("writableType" in transformer) throw new RangeError("TransformStream transformer has a writableType"); - } - - const readableHighWaterMark = $extractHighWaterMark(readableStrategy, 0); - const readableSizeAlgorithm = $extractSizeAlgorithm(readableStrategy); - - const writableHighWaterMark = $extractHighWaterMark(writableStrategy, 1); - const writableSizeAlgorithm = $extractSizeAlgorithm(writableStrategy); - - const startPromiseCapability = $newPromiseCapability(Promise); - $initializeTransformStream( - this, - startPromiseCapability.$promise, - writableHighWaterMark, - writableSizeAlgorithm, - readableHighWaterMark, - readableSizeAlgorithm, - ); - $setUpTransformStreamDefaultControllerFromTransformer(this, transformer, transformerDict); - - if ("start" in transformerDict) { - const controller = $getByIdDirectPrivate(this, "controller"); - const startAlgorithm = () => $promiseInvokeOrNoopMethodNoCatch(transformer, transformerDict["start"], [controller]); - startAlgorithm().$then( - () => { - // FIXME: We probably need to resolve start promise with the result of the start algorithm. - startPromiseCapability.$resolve.$call(); - }, - error => { - startPromiseCapability.$reject.$call(undefined, error); - }, - ); - } else startPromiseCapability.$resolve.$call(); - - return this; -} - -$getter; -export function readable() { - if (!$isTransformStream(this)) throw $makeThisTypeError("TransformStream", "readable"); - - return $getByIdDirectPrivate(this, "readable"); -} - -export function writable() { - if (!$isTransformStream(this)) throw $makeThisTypeError("TransformStream", "writable"); - - return $getByIdDirectPrivate(this, "writable"); -} diff --git a/src/bun.js/builtins/ts/TransformStreamDefaultController.ts b/src/bun.js/builtins/ts/TransformStreamDefaultController.ts deleted file mode 100644 index 1045498b8..000000000 --- a/src/bun.js/builtins/ts/TransformStreamDefaultController.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2020 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeTransformStreamDefaultController(this) { - return this; -} - -$getter; -export function desiredSize(this) { - if (!$isTransformStreamDefaultController(this)) - throw $makeThisTypeError("TransformStreamDefaultController", "enqueue"); - - const stream = $getByIdDirectPrivate(this, "stream"); - const readable = $getByIdDirectPrivate(stream, "readable"); - const readableController = $getByIdDirectPrivate(readable, "readableStreamController"); - - return $readableStreamDefaultControllerGetDesiredSize(readableController); -} - -export function enqueue(this, chunk) { - if (!$isTransformStreamDefaultController(this)) - throw $makeThisTypeError("TransformStreamDefaultController", "enqueue"); - - $transformStreamDefaultControllerEnqueue(this, chunk); -} - -export function error(this, e) { - if (!$isTransformStreamDefaultController(this)) throw $makeThisTypeError("TransformStreamDefaultController", "error"); - - $transformStreamDefaultControllerError(this, e); -} - -export function terminate(this) { - if (!$isTransformStreamDefaultController(this)) - throw $makeThisTypeError("TransformStreamDefaultController", "terminate"); - - $transformStreamDefaultControllerTerminate(this); -} diff --git a/src/bun.js/builtins/ts/TransformStreamInternals.ts b/src/bun.js/builtins/ts/TransformStreamInternals.ts deleted file mode 100644 index 9994d1282..000000000 --- a/src/bun.js/builtins/ts/TransformStreamInternals.ts +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Copyright (C) 2020 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -// @internal - -export function isTransformStream(stream) { - return $isObject(stream) && !!$getByIdDirectPrivate(stream, "readable"); -} - -export function isTransformStreamDefaultController(controller) { - return $isObject(controller) && !!$getByIdDirectPrivate(controller, "transformAlgorithm"); -} - -export function createTransformStream( - startAlgorithm, - transformAlgorithm, - flushAlgorithm, - writableHighWaterMark, - writableSizeAlgorithm, - readableHighWaterMark, - readableSizeAlgorithm, -) { - if (writableHighWaterMark === undefined) writableHighWaterMark = 1; - if (writableSizeAlgorithm === undefined) writableSizeAlgorithm = () => 1; - if (readableHighWaterMark === undefined) readableHighWaterMark = 0; - if (readableSizeAlgorithm === undefined) readableSizeAlgorithm = () => 1; - $assert(writableHighWaterMark >= 0); - $assert(readableHighWaterMark >= 0); - - const transform = {}; - $putByIdDirectPrivate(transform, "TransformStream", true); - - const stream = new TransformStream(transform); - const startPromiseCapability = $newPromiseCapability(Promise); - $initializeTransformStream( - stream, - startPromiseCapability.$promise, - writableHighWaterMark, - writableSizeAlgorithm, - readableHighWaterMark, - readableSizeAlgorithm, - ); - - const controller = new TransformStreamDefaultController(); - $setUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm); - - startAlgorithm().$then( - () => { - startPromiseCapability.$resolve.$call(); - }, - error => { - startPromiseCapability.$reject.$call(undefined, error); - }, - ); - - return stream; -} - -export function initializeTransformStream( - stream, - startPromise, - writableHighWaterMark, - writableSizeAlgorithm, - readableHighWaterMark, - readableSizeAlgorithm, -) { - const startAlgorithm = () => { - return startPromise; - }; - const writeAlgorithm = chunk => { - return $transformStreamDefaultSinkWriteAlgorithm(stream, chunk); - }; - const abortAlgorithm = reason => { - return $transformStreamDefaultSinkAbortAlgorithm(stream, reason); - }; - const closeAlgorithm = () => { - return $transformStreamDefaultSinkCloseAlgorithm(stream); - }; - const writable = $createWritableStream( - startAlgorithm, - writeAlgorithm, - closeAlgorithm, - abortAlgorithm, - writableHighWaterMark, - writableSizeAlgorithm, - ); - - const pullAlgorithm = () => { - return $transformStreamDefaultSourcePullAlgorithm(stream); - }; - const cancelAlgorithm = reason => { - $transformStreamErrorWritableAndUnblockWrite(stream, reason); - return Promise.$resolve(); - }; - const underlyingSource = {}; - $putByIdDirectPrivate(underlyingSource, "start", startAlgorithm); - $putByIdDirectPrivate(underlyingSource, "pull", pullAlgorithm); - $putByIdDirectPrivate(underlyingSource, "cancel", cancelAlgorithm); - const options = {}; - $putByIdDirectPrivate(options, "size", readableSizeAlgorithm); - $putByIdDirectPrivate(options, "highWaterMark", readableHighWaterMark); - const readable = new ReadableStream(underlyingSource, options); - - // The writable to expose to JS through writable getter. - $putByIdDirectPrivate(stream, "writable", writable); - // The writable to use for the actual transform algorithms. - $putByIdDirectPrivate(stream, "internalWritable", $getInternalWritableStream(writable)); - - $putByIdDirectPrivate(stream, "readable", readable); - $putByIdDirectPrivate(stream, "backpressure", undefined); - $putByIdDirectPrivate(stream, "backpressureChangePromise", undefined); - - $transformStreamSetBackpressure(stream, true); - $putByIdDirectPrivate(stream, "controller", undefined); -} - -export function transformStreamError(stream, e) { - const readable = $getByIdDirectPrivate(stream, "readable"); - const readableController = $getByIdDirectPrivate(readable, "readableStreamController"); - $readableStreamDefaultControllerError(readableController, e); - - $transformStreamErrorWritableAndUnblockWrite(stream, e); -} - -export function transformStreamErrorWritableAndUnblockWrite(stream, e) { - $transformStreamDefaultControllerClearAlgorithms($getByIdDirectPrivate(stream, "controller")); - - const writable = $getByIdDirectPrivate(stream, "internalWritable"); - $writableStreamDefaultControllerErrorIfNeeded($getByIdDirectPrivate(writable, "controller"), e); - - if ($getByIdDirectPrivate(stream, "backpressure")) $transformStreamSetBackpressure(stream, false); -} - -export function transformStreamSetBackpressure(stream, backpressure) { - $assert($getByIdDirectPrivate(stream, "backpressure") !== backpressure); - - const backpressureChangePromise = $getByIdDirectPrivate(stream, "backpressureChangePromise"); - if (backpressureChangePromise !== undefined) backpressureChangePromise.$resolve.$call(); - - $putByIdDirectPrivate(stream, "backpressureChangePromise", $newPromiseCapability(Promise)); - $putByIdDirectPrivate(stream, "backpressure", backpressure); -} - -export function setUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) { - $assert($isTransformStream(stream)); - $assert($getByIdDirectPrivate(stream, "controller") === undefined); - - $putByIdDirectPrivate(controller, "stream", stream); - $putByIdDirectPrivate(stream, "controller", controller); - $putByIdDirectPrivate(controller, "transformAlgorithm", transformAlgorithm); - $putByIdDirectPrivate(controller, "flushAlgorithm", flushAlgorithm); -} - -export function setUpTransformStreamDefaultControllerFromTransformer(stream, transformer, transformerDict) { - const controller = new TransformStreamDefaultController(); - let transformAlgorithm = chunk => { - try { - $transformStreamDefaultControllerEnqueue(controller, chunk); - } catch (e) { - return Promise.$reject(e); - } - return Promise.$resolve(); - }; - let flushAlgorithm = () => { - return Promise.$resolve(); - }; - - if ("transform" in transformerDict) - transformAlgorithm = chunk => { - return $promiseInvokeOrNoopMethod(transformer, transformerDict["transform"], [chunk, controller]); - }; - - if ("flush" in transformerDict) { - flushAlgorithm = () => { - return $promiseInvokeOrNoopMethod(transformer, transformerDict["flush"], [controller]); - }; - } - - $setUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm); -} - -export function transformStreamDefaultControllerClearAlgorithms(controller) { - // We set transformAlgorithm to true to allow GC but keep the isTransformStreamDefaultController check. - $putByIdDirectPrivate(controller, "transformAlgorithm", true); - $putByIdDirectPrivate(controller, "flushAlgorithm", undefined); -} - -export function transformStreamDefaultControllerEnqueue(controller, chunk) { - const stream = $getByIdDirectPrivate(controller, "stream"); - const readable = $getByIdDirectPrivate(stream, "readable"); - const readableController = $getByIdDirectPrivate(readable, "readableStreamController"); - - $assert(readableController !== undefined); - if (!$readableStreamDefaultControllerCanCloseOrEnqueue(readableController)) - $throwTypeError("TransformStream.readable cannot close or enqueue"); - - try { - $readableStreamDefaultControllerEnqueue(readableController, chunk); - } catch (e) { - $transformStreamErrorWritableAndUnblockWrite(stream, e); - throw $getByIdDirectPrivate(readable, "storedError"); - } - - const backpressure = !$readableStreamDefaultControllerShouldCallPull(readableController); - if (backpressure !== $getByIdDirectPrivate(stream, "backpressure")) { - $assert(backpressure); - $transformStreamSetBackpressure(stream, true); - } -} - -export function transformStreamDefaultControllerError(controller, e) { - $transformStreamError($getByIdDirectPrivate(controller, "stream"), e); -} - -export function transformStreamDefaultControllerPerformTransform(controller, chunk) { - const promiseCapability = $newPromiseCapability(Promise); - - const transformPromise = $getByIdDirectPrivate(controller, "transformAlgorithm").$call(undefined, chunk); - transformPromise.$then( - () => { - promiseCapability.$resolve(); - }, - r => { - $transformStreamError($getByIdDirectPrivate(controller, "stream"), r); - promiseCapability.$reject.$call(undefined, r); - }, - ); - return promiseCapability.$promise; -} - -export function transformStreamDefaultControllerTerminate(controller) { - const stream = $getByIdDirectPrivate(controller, "stream"); - const readable = $getByIdDirectPrivate(stream, "readable"); - const readableController = $getByIdDirectPrivate(readable, "readableStreamController"); - - // FIXME: Update readableStreamDefaultControllerClose to make this check. - if ($readableStreamDefaultControllerCanCloseOrEnqueue(readableController)) - $readableStreamDefaultControllerClose(readableController); - const error = $makeTypeError("the stream has been terminated"); - $transformStreamErrorWritableAndUnblockWrite(stream, error); -} - -export function transformStreamDefaultSinkWriteAlgorithm(stream, chunk) { - const writable = $getByIdDirectPrivate(stream, "internalWritable"); - - $assert($getByIdDirectPrivate(writable, "state") === "writable"); - - const controller = $getByIdDirectPrivate(stream, "controller"); - - if ($getByIdDirectPrivate(stream, "backpressure")) { - const promiseCapability = $newPromiseCapability(Promise); - - const backpressureChangePromise = $getByIdDirectPrivate(stream, "backpressureChangePromise"); - $assert(backpressureChangePromise !== undefined); - backpressureChangePromise.$promise.$then( - () => { - const state = $getByIdDirectPrivate(writable, "state"); - if (state === "erroring") { - promiseCapability.$reject.$call(undefined, $getByIdDirectPrivate(writable, "storedError")); - return; - } - - $assert(state === "writable"); - $transformStreamDefaultControllerPerformTransform(controller, chunk).$then( - () => { - promiseCapability.$resolve(); - }, - e => { - promiseCapability.$reject.$call(undefined, e); - }, - ); - }, - e => { - promiseCapability.$reject.$call(undefined, e); - }, - ); - - return promiseCapability.$promise; - } - return $transformStreamDefaultControllerPerformTransform(controller, chunk); -} - -export function transformStreamDefaultSinkAbortAlgorithm(stream, reason) { - $transformStreamError(stream, reason); - return Promise.$resolve(); -} - -export function transformStreamDefaultSinkCloseAlgorithm(stream) { - const readable = $getByIdDirectPrivate(stream, "readable"); - const controller = $getByIdDirectPrivate(stream, "controller"); - const readableController = $getByIdDirectPrivate(readable, "readableStreamController"); - - const flushAlgorithm = $getByIdDirectPrivate(controller, "flushAlgorithm"); - $assert(flushAlgorithm !== undefined); - const flushPromise = $getByIdDirectPrivate(controller, "flushAlgorithm").$call(); - $transformStreamDefaultControllerClearAlgorithms(controller); - - const promiseCapability = $newPromiseCapability(Promise); - flushPromise.$then( - () => { - if ($getByIdDirectPrivate(readable, "state") === $streamErrored) { - promiseCapability.$reject.$call(undefined, $getByIdDirectPrivate(readable, "storedError")); - return; - } - - // FIXME: Update readableStreamDefaultControllerClose to make this check. - if ($readableStreamDefaultControllerCanCloseOrEnqueue(readableController)) - $readableStreamDefaultControllerClose(readableController); - promiseCapability.$resolve(); - }, - r => { - $transformStreamError($getByIdDirectPrivate(controller, "stream"), r); - promiseCapability.$reject.$call(undefined, $getByIdDirectPrivate(readable, "storedError")); - }, - ); - return promiseCapability.$promise; -} - -export function transformStreamDefaultSourcePullAlgorithm(stream) { - $assert($getByIdDirectPrivate(stream, "backpressure")); - $assert($getByIdDirectPrivate(stream, "backpressureChangePromise") !== undefined); - - $transformStreamSetBackpressure(stream, false); - - return $getByIdDirectPrivate(stream, "backpressureChangePromise").$promise; -} diff --git a/src/bun.js/builtins/ts/WritableStreamDefaultController.ts b/src/bun.js/builtins/ts/WritableStreamDefaultController.ts deleted file mode 100644 index 1a3ddc290..000000000 --- a/src/bun.js/builtins/ts/WritableStreamDefaultController.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2020 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeWritableStreamDefaultController(this) { - $putByIdDirectPrivate(this, "queue", $newQueue()); - $putByIdDirectPrivate(this, "abortSteps", reason => { - const result = $getByIdDirectPrivate(this, "abortAlgorithm").$call(undefined, reason); - $writableStreamDefaultControllerClearAlgorithms(this); - return result; - }); - - $putByIdDirectPrivate(this, "errorSteps", () => { - $resetQueue($getByIdDirectPrivate(this, "queue")); - }); - - return this; -} - -export function error(this, e) { - if ($getByIdDirectPrivate(this, "abortSteps") === undefined) - throw $makeThisTypeError("WritableStreamDefaultController", "error"); - - const stream = $getByIdDirectPrivate(this, "stream"); - if ($getByIdDirectPrivate(stream, "state") !== "writable") return; - $writableStreamDefaultControllerError(this, e); -} diff --git a/src/bun.js/builtins/ts/WritableStreamDefaultWriter.ts b/src/bun.js/builtins/ts/WritableStreamDefaultWriter.ts deleted file mode 100644 index 795b43892..000000000 --- a/src/bun.js/builtins/ts/WritableStreamDefaultWriter.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (C) 2020 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -export function initializeWritableStreamDefaultWriter(stream) { - // stream can be a WritableStream if WritableStreamDefaultWriter constructor is called directly from JS - // or an InternalWritableStream in other code paths. - const internalStream = $getInternalWritableStream(stream); - if (internalStream) stream = internalStream; - - if (!$isWritableStream(stream)) $throwTypeError("WritableStreamDefaultWriter constructor takes a WritableStream"); - - $setUpWritableStreamDefaultWriter(this, stream); - return this; -} - -$getter; -export function closed() { - if (!$isWritableStreamDefaultWriter(this)) - return Promise.$reject($makeGetterTypeError("WritableStreamDefaultWriter", "closed")); - - return $getByIdDirectPrivate(this, "closedPromise").$promise; -} - -$getter; -export function desiredSize() { - if (!$isWritableStreamDefaultWriter(this)) throw $makeThisTypeError("WritableStreamDefaultWriter", "desiredSize"); - - if ($getByIdDirectPrivate(this, "stream") === undefined) $throwTypeError("WritableStreamDefaultWriter has no stream"); - - return $writableStreamDefaultWriterGetDesiredSize(this); -} - -$getter; -export function ready() { - if (!$isWritableStreamDefaultWriter(this)) - return Promise.$reject($makeThisTypeError("WritableStreamDefaultWriter", "ready")); - - return $getByIdDirectPrivate(this, "readyPromise").$promise; -} - -export function abort(reason) { - if (!$isWritableStreamDefaultWriter(this)) - return Promise.$reject($makeThisTypeError("WritableStreamDefaultWriter", "abort")); - - if ($getByIdDirectPrivate(this, "stream") === undefined) - return Promise.$reject($makeTypeError("WritableStreamDefaultWriter has no stream")); - - return $writableStreamDefaultWriterAbort(this, reason); -} - -export function close() { - if (!$isWritableStreamDefaultWriter(this)) - return Promise.$reject($makeThisTypeError("WritableStreamDefaultWriter", "close")); - - const stream = $getByIdDirectPrivate(this, "stream"); - if (stream === undefined) return Promise.$reject($makeTypeError("WritableStreamDefaultWriter has no stream")); - - if ($writableStreamCloseQueuedOrInFlight(stream)) - return Promise.$reject($makeTypeError("WritableStreamDefaultWriter is being closed")); - - return $writableStreamDefaultWriterClose(this); -} - -export function releaseLock() { - if (!$isWritableStreamDefaultWriter(this)) throw $makeThisTypeError("WritableStreamDefaultWriter", "releaseLock"); - - const stream = $getByIdDirectPrivate(this, "stream"); - if (stream === undefined) return; - - $assert($getByIdDirectPrivate(stream, "writer") !== undefined); - $writableStreamDefaultWriterRelease(this); -} - -export function write(chunk) { - if (!$isWritableStreamDefaultWriter(this)) - return Promise.$reject($makeThisTypeError("WritableStreamDefaultWriter", "write")); - - if ($getByIdDirectPrivate(this, "stream") === undefined) - return Promise.$reject($makeTypeError("WritableStreamDefaultWriter has no stream")); - - return $writableStreamDefaultWriterWrite(this, chunk); -} diff --git a/src/bun.js/builtins/ts/WritableStreamInternals.ts b/src/bun.js/builtins/ts/WritableStreamInternals.ts deleted file mode 100644 index f436a285e..000000000 --- a/src/bun.js/builtins/ts/WritableStreamInternals.ts +++ /dev/null @@ -1,790 +0,0 @@ -/* - * Copyright (C) 2015 Canon Inc. - * Copyright (C) 2015 Igalia - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// @internal - -export function isWritableStream(stream) { - return $isObject(stream) && !!$getByIdDirectPrivate(stream, "underlyingSink"); -} - -export function isWritableStreamDefaultWriter(writer) { - return $isObject(writer) && !!$getByIdDirectPrivate(writer, "closedPromise"); -} - -export function acquireWritableStreamDefaultWriter(stream) { - return new WritableStreamDefaultWriter(stream); -} - -// https://streams.spec.whatwg.org/#create-writable-stream -export function createWritableStream( - startAlgorithm, - writeAlgorithm, - closeAlgorithm, - abortAlgorithm, - highWaterMark, - sizeAlgorithm, -) { - $assert(typeof highWaterMark === "number" && !isNaN(highWaterMark) && highWaterMark >= 0); - - const internalStream = {}; - $initializeWritableStreamSlots(internalStream, {}); - const controller = new WritableStreamDefaultController(); - - $setUpWritableStreamDefaultController( - internalStream, - controller, - startAlgorithm, - writeAlgorithm, - closeAlgorithm, - abortAlgorithm, - highWaterMark, - sizeAlgorithm, - ); - - return $createWritableStreamFromInternal(internalStream); -} - -export function createInternalWritableStreamFromUnderlyingSink(underlyingSink, strategy) { - const stream = {}; - - if (underlyingSink === undefined) underlyingSink = {}; - - if (strategy === undefined) strategy = {}; - - if (!$isObject(underlyingSink)) $throwTypeError("WritableStream constructor takes an object as first argument"); - - if ("type" in underlyingSink) $throwRangeError("Invalid type is specified"); - - const sizeAlgorithm = $extractSizeAlgorithm(strategy); - const highWaterMark = $extractHighWaterMark(strategy, 1); - - const underlyingSinkDict = {}; - if ("start" in underlyingSink) { - underlyingSinkDict["start"] = underlyingSink["start"]; - if (typeof underlyingSinkDict["start"] !== "function") $throwTypeError("underlyingSink.start should be a function"); - } - if ("write" in underlyingSink) { - underlyingSinkDict["write"] = underlyingSink["write"]; - if (typeof underlyingSinkDict["write"] !== "function") $throwTypeError("underlyingSink.write should be a function"); - } - if ("close" in underlyingSink) { - underlyingSinkDict["close"] = underlyingSink["close"]; - if (typeof underlyingSinkDict["close"] !== "function") $throwTypeError("underlyingSink.close should be a function"); - } - if ("abort" in underlyingSink) { - underlyingSinkDict["abort"] = underlyingSink["abort"]; - if (typeof underlyingSinkDict["abort"] !== "function") $throwTypeError("underlyingSink.abort should be a function"); - } - - $initializeWritableStreamSlots(stream, underlyingSink); - $setUpWritableStreamDefaultControllerFromUnderlyingSink( - stream, - underlyingSink, - underlyingSinkDict, - highWaterMark, - sizeAlgorithm, - ); - - return stream; -} - -export function initializeWritableStreamSlots(stream, underlyingSink) { - $putByIdDirectPrivate(stream, "state", "writable"); - $putByIdDirectPrivate(stream, "storedError", undefined); - $putByIdDirectPrivate(stream, "writer", undefined); - $putByIdDirectPrivate(stream, "controller", undefined); - $putByIdDirectPrivate(stream, "inFlightWriteRequest", undefined); - $putByIdDirectPrivate(stream, "closeRequest", undefined); - $putByIdDirectPrivate(stream, "inFlightCloseRequest", undefined); - $putByIdDirectPrivate(stream, "pendingAbortRequest", undefined); - $putByIdDirectPrivate(stream, "writeRequests", $createFIFO()); - $putByIdDirectPrivate(stream, "backpressure", false); - $putByIdDirectPrivate(stream, "underlyingSink", underlyingSink); -} - -export function writableStreamCloseForBindings(stream) { - if ($isWritableStreamLocked(stream)) - return Promise.$reject($makeTypeError("WritableStream.close method can only be used on non locked WritableStream")); - - if ($writableStreamCloseQueuedOrInFlight(stream)) - return Promise.$reject( - $makeTypeError("WritableStream.close method can only be used on a being close WritableStream"), - ); - - return $writableStreamClose(stream); -} - -export function writableStreamAbortForBindings(stream, reason) { - if ($isWritableStreamLocked(stream)) - return Promise.$reject($makeTypeError("WritableStream.abort method can only be used on non locked WritableStream")); - - return $writableStreamAbort(stream, reason); -} - -export function isWritableStreamLocked(stream) { - return $getByIdDirectPrivate(stream, "writer") !== undefined; -} - -export function setUpWritableStreamDefaultWriter(writer, stream) { - if ($isWritableStreamLocked(stream)) $throwTypeError("WritableStream is locked"); - - $putByIdDirectPrivate(writer, "stream", stream); - $putByIdDirectPrivate(stream, "writer", writer); - - const readyPromiseCapability = $newPromiseCapability(Promise); - const closedPromiseCapability = $newPromiseCapability(Promise); - $putByIdDirectPrivate(writer, "readyPromise", readyPromiseCapability); - $putByIdDirectPrivate(writer, "closedPromise", closedPromiseCapability); - - const state = $getByIdDirectPrivate(stream, "state"); - if (state === "writable") { - if ($writableStreamCloseQueuedOrInFlight(stream) || !$getByIdDirectPrivate(stream, "backpressure")) - readyPromiseCapability.$resolve.$call(); - } else if (state === "erroring") { - readyPromiseCapability.$reject.$call(undefined, $getByIdDirectPrivate(stream, "storedError")); - $markPromiseAsHandled(readyPromiseCapability.$promise); - } else if (state === "closed") { - readyPromiseCapability.$resolve.$call(); - closedPromiseCapability.$resolve.$call(); - } else { - $assert(state === "errored"); - const storedError = $getByIdDirectPrivate(stream, "storedError"); - readyPromiseCapability.$reject.$call(undefined, storedError); - $markPromiseAsHandled(readyPromiseCapability.$promise); - closedPromiseCapability.$reject.$call(undefined, storedError); - $markPromiseAsHandled(closedPromiseCapability.$promise); - } -} - -export function writableStreamAbort(stream, reason) { - const state = $getByIdDirectPrivate(stream, "state"); - if (state === "closed" || state === "errored") return Promise.$resolve(); - - const pendingAbortRequest = $getByIdDirectPrivate(stream, "pendingAbortRequest"); - if (pendingAbortRequest !== undefined) return pendingAbortRequest.promise.$promise; - - $assert(state === "writable" || state === "erroring"); - let wasAlreadyErroring = false; - if (state === "erroring") { - wasAlreadyErroring = true; - reason = undefined; - } - - const abortPromiseCapability = $newPromiseCapability(Promise); - $putByIdDirectPrivate(stream, "pendingAbortRequest", { - promise: abortPromiseCapability, - reason: reason, - wasAlreadyErroring: wasAlreadyErroring, - }); - - if (!wasAlreadyErroring) $writableStreamStartErroring(stream, reason); - return abortPromiseCapability.$promise; -} - -export function writableStreamClose(stream) { - const state = $getByIdDirectPrivate(stream, "state"); - if (state === "closed" || state === "errored") - return Promise.$reject($makeTypeError("Cannot close a writable stream that is closed or errored")); - - $assert(state === "writable" || state === "erroring"); - $assert(!$writableStreamCloseQueuedOrInFlight(stream)); - - const closePromiseCapability = $newPromiseCapability(Promise); - $putByIdDirectPrivate(stream, "closeRequest", closePromiseCapability); - - const writer = $getByIdDirectPrivate(stream, "writer"); - if (writer !== undefined && $getByIdDirectPrivate(stream, "backpressure") && state === "writable") - $getByIdDirectPrivate(writer, "readyPromise").$resolve.$call(); - - $writableStreamDefaultControllerClose($getByIdDirectPrivate(stream, "controller")); - - return closePromiseCapability.$promise; -} - -export function writableStreamAddWriteRequest(stream) { - $assert($isWritableStreamLocked(stream)); - $assert($getByIdDirectPrivate(stream, "state") === "writable"); - - const writePromiseCapability = $newPromiseCapability(Promise); - const writeRequests = $getByIdDirectPrivate(stream, "writeRequests"); - writeRequests.push(writePromiseCapability); - return writePromiseCapability.$promise; -} - -export function writableStreamCloseQueuedOrInFlight(stream) { - return ( - $getByIdDirectPrivate(stream, "closeRequest") !== undefined || - $getByIdDirectPrivate(stream, "inFlightCloseRequest") !== undefined - ); -} - -export function writableStreamDealWithRejection(stream, error) { - const state = $getByIdDirectPrivate(stream, "state"); - if (state === "writable") { - $writableStreamStartErroring(stream, error); - return; - } - - $assert(state === "erroring"); - $writableStreamFinishErroring(stream); -} - -export function writableStreamFinishErroring(stream) { - $assert($getByIdDirectPrivate(stream, "state") === "erroring"); - $assert(!$writableStreamHasOperationMarkedInFlight(stream)); - - $putByIdDirectPrivate(stream, "state", "errored"); - - const controller = $getByIdDirectPrivate(stream, "controller"); - $getByIdDirectPrivate(controller, "errorSteps").$call(); - - const storedError = $getByIdDirectPrivate(stream, "storedError"); - const requests = $getByIdDirectPrivate(stream, "writeRequests"); - for (var request = requests.shift(); request; request = requests.shift()) - request.$reject.$call(undefined, storedError); - - // TODO: is this still necessary? - $putByIdDirectPrivate(stream, "writeRequests", $createFIFO()); - - const abortRequest = $getByIdDirectPrivate(stream, "pendingAbortRequest"); - if (abortRequest === undefined) { - $writableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - - $putByIdDirectPrivate(stream, "pendingAbortRequest", undefined); - if (abortRequest.wasAlreadyErroring) { - abortRequest.promise.$reject.$call(undefined, storedError); - $writableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - return; - } - - $getByIdDirectPrivate(controller, "abortSteps") - .$call(undefined, abortRequest.reason) - .$then( - () => { - abortRequest.promise.$resolve.$call(); - $writableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }, - reason => { - abortRequest.promise.$reject.$call(undefined, reason); - $writableStreamRejectCloseAndClosedPromiseIfNeeded(stream); - }, - ); -} - -export function writableStreamFinishInFlightClose(stream) { - const inFlightCloseRequest = $getByIdDirectPrivate(stream, "inFlightCloseRequest"); - inFlightCloseRequest.$resolve.$call(); - - $putByIdDirectPrivate(stream, "inFlightCloseRequest", undefined); - - const state = $getByIdDirectPrivate(stream, "state"); - $assert(state === "writable" || state === "erroring"); - - if (state === "erroring") { - $putByIdDirectPrivate(stream, "storedError", undefined); - const abortRequest = $getByIdDirectPrivate(stream, "pendingAbortRequest"); - if (abortRequest !== undefined) { - abortRequest.promise.$resolve.$call(); - $putByIdDirectPrivate(stream, "pendingAbortRequest", undefined); - } - } - - $putByIdDirectPrivate(stream, "state", "closed"); - - const writer = $getByIdDirectPrivate(stream, "writer"); - if (writer !== undefined) $getByIdDirectPrivate(writer, "closedPromise").$resolve.$call(); - - $assert($getByIdDirectPrivate(stream, "pendingAbortRequest") === undefined); - $assert($getByIdDirectPrivate(stream, "storedError") === undefined); -} - -export function writableStreamFinishInFlightCloseWithError(stream, error) { - const inFlightCloseRequest = $getByIdDirectPrivate(stream, "inFlightCloseRequest"); - $assert(inFlightCloseRequest !== undefined); - inFlightCloseRequest.$reject.$call(undefined, error); - - $putByIdDirectPrivate(stream, "inFlightCloseRequest", undefined); - - const state = $getByIdDirectPrivate(stream, "state"); - $assert(state === "writable" || state === "erroring"); - - const abortRequest = $getByIdDirectPrivate(stream, "pendingAbortRequest"); - if (abortRequest !== undefined) { - abortRequest.promise.$reject.$call(undefined, error); - $putByIdDirectPrivate(stream, "pendingAbortRequest", undefined); - } - - $writableStreamDealWithRejection(stream, error); -} - -export function writableStreamFinishInFlightWrite(stream) { - const inFlightWriteRequest = $getByIdDirectPrivate(stream, "inFlightWriteRequest"); - $assert(inFlightWriteRequest !== undefined); - inFlightWriteRequest.$resolve.$call(); - - $putByIdDirectPrivate(stream, "inFlightWriteRequest", undefined); -} - -export function writableStreamFinishInFlightWriteWithError(stream, error) { - const inFlightWriteRequest = $getByIdDirectPrivate(stream, "inFlightWriteRequest"); - $assert(inFlightWriteRequest !== undefined); - inFlightWriteRequest.$reject.$call(undefined, error); - - $putByIdDirectPrivate(stream, "inFlightWriteRequest", undefined); - - const state = $getByIdDirectPrivate(stream, "state"); - $assert(state === "writable" || state === "erroring"); - - $writableStreamDealWithRejection(stream, error); -} - -export function writableStreamHasOperationMarkedInFlight(stream) { - return ( - $getByIdDirectPrivate(stream, "inFlightWriteRequest") !== undefined || - $getByIdDirectPrivate(stream, "inFlightCloseRequest") !== undefined - ); -} - -export function writableStreamMarkCloseRequestInFlight(stream) { - const closeRequest = $getByIdDirectPrivate(stream, "closeRequest"); - $assert($getByIdDirectPrivate(stream, "inFlightCloseRequest") === undefined); - $assert(closeRequest !== undefined); - - $putByIdDirectPrivate(stream, "inFlightCloseRequest", closeRequest); - $putByIdDirectPrivate(stream, "closeRequest", undefined); -} - -export function writableStreamMarkFirstWriteRequestInFlight(stream) { - const writeRequests = $getByIdDirectPrivate(stream, "writeRequests"); - $assert($getByIdDirectPrivate(stream, "inFlightWriteRequest") === undefined); - $assert(writeRequests.isNotEmpty()); - - const writeRequest = writeRequests.shift(); - $putByIdDirectPrivate(stream, "inFlightWriteRequest", writeRequest); -} - -export function writableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { - $assert($getByIdDirectPrivate(stream, "state") === "errored"); - - const storedError = $getByIdDirectPrivate(stream, "storedError"); - - const closeRequest = $getByIdDirectPrivate(stream, "closeRequest"); - if (closeRequest !== undefined) { - $assert($getByIdDirectPrivate(stream, "inFlightCloseRequest") === undefined); - closeRequest.$reject.$call(undefined, storedError); - $putByIdDirectPrivate(stream, "closeRequest", undefined); - } - - const writer = $getByIdDirectPrivate(stream, "writer"); - if (writer !== undefined) { - const closedPromise = $getByIdDirectPrivate(writer, "closedPromise"); - closedPromise.$reject.$call(undefined, storedError); - $markPromiseAsHandled(closedPromise.$promise); - } -} - -export function writableStreamStartErroring(stream, reason) { - $assert($getByIdDirectPrivate(stream, "storedError") === undefined); - $assert($getByIdDirectPrivate(stream, "state") === "writable"); - - const controller = $getByIdDirectPrivate(stream, "controller"); - $assert(controller !== undefined); - - $putByIdDirectPrivate(stream, "state", "erroring"); - $putByIdDirectPrivate(stream, "storedError", reason); - - const writer = $getByIdDirectPrivate(stream, "writer"); - if (writer !== undefined) $writableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); - - if (!$writableStreamHasOperationMarkedInFlight(stream) && $getByIdDirectPrivate(controller, "started") === 1) - $writableStreamFinishErroring(stream); -} - -export function writableStreamUpdateBackpressure(stream, backpressure) { - $assert($getByIdDirectPrivate(stream, "state") === "writable"); - $assert(!$writableStreamCloseQueuedOrInFlight(stream)); - - const writer = $getByIdDirectPrivate(stream, "writer"); - if (writer !== undefined && backpressure !== $getByIdDirectPrivate(stream, "backpressure")) { - if (backpressure) $putByIdDirectPrivate(writer, "readyPromise", $newPromiseCapability(Promise)); - else $getByIdDirectPrivate(writer, "readyPromise").$resolve.$call(); - } - $putByIdDirectPrivate(stream, "backpressure", backpressure); -} - -export function writableStreamDefaultWriterAbort(writer, reason) { - const stream = $getByIdDirectPrivate(writer, "stream"); - $assert(stream !== undefined); - return $writableStreamAbort(stream, reason); -} - -export function writableStreamDefaultWriterClose(writer) { - const stream = $getByIdDirectPrivate(writer, "stream"); - $assert(stream !== undefined); - return $writableStreamClose(stream); -} - -export function writableStreamDefaultWriterCloseWithErrorPropagation(writer) { - const stream = $getByIdDirectPrivate(writer, "stream"); - $assert(stream !== undefined); - - const state = $getByIdDirectPrivate(stream, "state"); - - if ($writableStreamCloseQueuedOrInFlight(stream) || state === "closed") return Promise.$resolve(); - - if (state === "errored") return Promise.$reject($getByIdDirectPrivate(stream, "storedError")); - - $assert(state === "writable" || state === "erroring"); - return $writableStreamDefaultWriterClose(writer); -} - -export function writableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) { - let closedPromiseCapability = $getByIdDirectPrivate(writer, "closedPromise"); - let closedPromise = closedPromiseCapability.$promise; - - if (($getPromiseInternalField(closedPromise, $promiseFieldFlags) & $promiseStateMask) !== $promiseStatePending) { - closedPromiseCapability = $newPromiseCapability(Promise); - closedPromise = closedPromiseCapability.$promise; - $putByIdDirectPrivate(writer, "closedPromise", closedPromiseCapability); - } - - closedPromiseCapability.$reject.$call(undefined, error); - $markPromiseAsHandled(closedPromise); -} - -export function writableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) { - let readyPromiseCapability = $getByIdDirectPrivate(writer, "readyPromise"); - let readyPromise = readyPromiseCapability.$promise; - - if (($getPromiseInternalField(readyPromise, $promiseFieldFlags) & $promiseStateMask) !== $promiseStatePending) { - readyPromiseCapability = $newPromiseCapability(Promise); - readyPromise = readyPromiseCapability.$promise; - $putByIdDirectPrivate(writer, "readyPromise", readyPromiseCapability); - } - - readyPromiseCapability.$reject.$call(undefined, error); - $markPromiseAsHandled(readyPromise); -} - -export function writableStreamDefaultWriterGetDesiredSize(writer) { - const stream = $getByIdDirectPrivate(writer, "stream"); - $assert(stream !== undefined); - - const state = $getByIdDirectPrivate(stream, "state"); - - if (state === "errored" || state === "erroring") return null; - - if (state === "closed") return 0; - - return $writableStreamDefaultControllerGetDesiredSize($getByIdDirectPrivate(stream, "controller")); -} - -export function writableStreamDefaultWriterRelease(writer) { - const stream = $getByIdDirectPrivate(writer, "stream"); - $assert(stream !== undefined); - $assert($getByIdDirectPrivate(stream, "writer") === writer); - - const releasedError = $makeTypeError("writableStreamDefaultWriterRelease"); - - $writableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); - $writableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); - - $putByIdDirectPrivate(stream, "writer", undefined); - $putByIdDirectPrivate(writer, "stream", undefined); -} - -export function writableStreamDefaultWriterWrite(writer, chunk) { - const stream = $getByIdDirectPrivate(writer, "stream"); - $assert(stream !== undefined); - - const controller = $getByIdDirectPrivate(stream, "controller"); - $assert(controller !== undefined); - const chunkSize = $writableStreamDefaultControllerGetChunkSize(controller, chunk); - - if (stream !== $getByIdDirectPrivate(writer, "stream")) - return Promise.$reject($makeTypeError("writer is not stream's writer")); - - const state = $getByIdDirectPrivate(stream, "state"); - if (state === "errored") return Promise.$reject($getByIdDirectPrivate(stream, "storedError")); - - if ($writableStreamCloseQueuedOrInFlight(stream) || state === "closed") - return Promise.$reject($makeTypeError("stream is closing or closed")); - - if ($writableStreamCloseQueuedOrInFlight(stream) || state === "closed") - return Promise.$reject($makeTypeError("stream is closing or closed")); - - if (state === "erroring") return Promise.$reject($getByIdDirectPrivate(stream, "storedError")); - - $assert(state === "writable"); - - const promise = $writableStreamAddWriteRequest(stream); - $writableStreamDefaultControllerWrite(controller, chunk, chunkSize); - return promise; -} - -export function setUpWritableStreamDefaultController( - stream, - controller, - startAlgorithm, - writeAlgorithm, - closeAlgorithm, - abortAlgorithm, - highWaterMark, - sizeAlgorithm, -) { - $assert($isWritableStream(stream)); - $assert($getByIdDirectPrivate(stream, "controller") === undefined); - - $putByIdDirectPrivate(controller, "stream", stream); - $putByIdDirectPrivate(stream, "controller", controller); - - $resetQueue($getByIdDirectPrivate(controller, "queue")); - - $putByIdDirectPrivate(controller, "started", -1); - $putByIdDirectPrivate(controller, "startAlgorithm", startAlgorithm); - $putByIdDirectPrivate(controller, "strategySizeAlgorithm", sizeAlgorithm); - $putByIdDirectPrivate(controller, "strategyHWM", highWaterMark); - $putByIdDirectPrivate(controller, "writeAlgorithm", writeAlgorithm); - $putByIdDirectPrivate(controller, "closeAlgorithm", closeAlgorithm); - $putByIdDirectPrivate(controller, "abortAlgorithm", abortAlgorithm); - - const backpressure = $writableStreamDefaultControllerGetBackpressure(controller); - $writableStreamUpdateBackpressure(stream, backpressure); - - $writableStreamDefaultControllerStart(controller); -} - -export function writableStreamDefaultControllerStart(controller) { - if ($getByIdDirectPrivate(controller, "started") !== -1) return; - - $putByIdDirectPrivate(controller, "started", 0); - - const startAlgorithm = $getByIdDirectPrivate(controller, "startAlgorithm"); - $putByIdDirectPrivate(controller, "startAlgorithm", undefined); - const stream = $getByIdDirectPrivate(controller, "stream"); - return Promise.$resolve(startAlgorithm.$call()).$then( - () => { - const state = $getByIdDirectPrivate(stream, "state"); - $assert(state === "writable" || state === "erroring"); - $putByIdDirectPrivate(controller, "started", 1); - $writableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, - error => { - const state = $getByIdDirectPrivate(stream, "state"); - $assert(state === "writable" || state === "erroring"); - $putByIdDirectPrivate(controller, "started", 1); - $writableStreamDealWithRejection(stream, error); - }, - ); -} - -export function setUpWritableStreamDefaultControllerFromUnderlyingSink( - stream, - underlyingSink, - underlyingSinkDict, - highWaterMark, - sizeAlgorithm, -) { - const controller = new $WritableStreamDefaultController(); - - let startAlgorithm = () => {}; - let writeAlgorithm = () => { - return Promise.$resolve(); - }; - let closeAlgorithm = () => { - return Promise.$resolve(); - }; - let abortAlgorithm = () => { - return Promise.$resolve(); - }; - - if ("start" in underlyingSinkDict) { - const startMethod = underlyingSinkDict["start"]; - startAlgorithm = () => $promiseInvokeOrNoopMethodNoCatch(underlyingSink, startMethod, [controller]); - } - if ("write" in underlyingSinkDict) { - const writeMethod = underlyingSinkDict["write"]; - writeAlgorithm = chunk => $promiseInvokeOrNoopMethod(underlyingSink, writeMethod, [chunk, controller]); - } - if ("close" in underlyingSinkDict) { - const closeMethod = underlyingSinkDict["close"]; - closeAlgorithm = () => $promiseInvokeOrNoopMethod(underlyingSink, closeMethod, []); - } - if ("abort" in underlyingSinkDict) { - const abortMethod = underlyingSinkDict["abort"]; - abortAlgorithm = reason => $promiseInvokeOrNoopMethod(underlyingSink, abortMethod, [reason]); - } - - $setUpWritableStreamDefaultController( - stream, - controller, - startAlgorithm, - writeAlgorithm, - closeAlgorithm, - abortAlgorithm, - highWaterMark, - sizeAlgorithm, - ); -} - -export function writableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { - const stream = $getByIdDirectPrivate(controller, "stream"); - - if ($getByIdDirectPrivate(controller, "started") !== 1) return; - - $assert(stream !== undefined); - if ($getByIdDirectPrivate(stream, "inFlightWriteRequest") !== undefined) return; - - const state = $getByIdDirectPrivate(stream, "state"); - $assert(state !== "closed" || state !== "errored"); - if (state === "erroring") { - $writableStreamFinishErroring(stream); - return; - } - - const queue = $getByIdDirectPrivate(controller, "queue"); - - if (queue.content?.isEmpty() ?? false) return; - - const value = $peekQueueValue(queue); - if (value === $isCloseSentinel) $writableStreamDefaultControllerProcessClose(controller); - else $writableStreamDefaultControllerProcessWrite(controller, value); -} - -export function isCloseSentinel() {} - -export function writableStreamDefaultControllerClearAlgorithms(controller) { - $putByIdDirectPrivate(controller, "writeAlgorithm", undefined); - $putByIdDirectPrivate(controller, "closeAlgorithm", undefined); - $putByIdDirectPrivate(controller, "abortAlgorithm", undefined); - $putByIdDirectPrivate(controller, "strategySizeAlgorithm", undefined); -} - -export function writableStreamDefaultControllerClose(controller) { - $enqueueValueWithSize($getByIdDirectPrivate(controller, "queue"), $isCloseSentinel, 0); - $writableStreamDefaultControllerAdvanceQueueIfNeeded(controller); -} - -export function writableStreamDefaultControllerError(controller, error) { - const stream = $getByIdDirectPrivate(controller, "stream"); - $assert(stream !== undefined); - $assert($getByIdDirectPrivate(stream, "state") === "writable"); - - $writableStreamDefaultControllerClearAlgorithms(controller); - $writableStreamStartErroring(stream, error); -} - -export function writableStreamDefaultControllerErrorIfNeeded(controller, error) { - const stream = $getByIdDirectPrivate(controller, "stream"); - if ($getByIdDirectPrivate(stream, "state") === "writable") $writableStreamDefaultControllerError(controller, error); -} - -export function writableStreamDefaultControllerGetBackpressure(controller) { - const desiredSize = $writableStreamDefaultControllerGetDesiredSize(controller); - return desiredSize <= 0; -} - -export function writableStreamDefaultControllerGetChunkSize(controller, chunk) { - try { - return $getByIdDirectPrivate(controller, "strategySizeAlgorithm").$call(undefined, chunk); - } catch (e) { - $writableStreamDefaultControllerErrorIfNeeded(controller, e); - return 1; - } -} - -export function writableStreamDefaultControllerGetDesiredSize(controller) { - return $getByIdDirectPrivate(controller, "strategyHWM") - $getByIdDirectPrivate(controller, "queue").size; -} - -export function writableStreamDefaultControllerProcessClose(controller) { - const stream = $getByIdDirectPrivate(controller, "stream"); - - $writableStreamMarkCloseRequestInFlight(stream); - $dequeueValue($getByIdDirectPrivate(controller, "queue")); - - $assert($getByIdDirectPrivate(controller, "queue").content?.isEmpty()); - - const sinkClosePromise = $getByIdDirectPrivate(controller, "closeAlgorithm").$call(); - $writableStreamDefaultControllerClearAlgorithms(controller); - - sinkClosePromise.$then( - () => { - $writableStreamFinishInFlightClose(stream); - }, - reason => { - $writableStreamFinishInFlightCloseWithError(stream, reason); - }, - ); -} - -export function writableStreamDefaultControllerProcessWrite(controller, chunk) { - const stream = $getByIdDirectPrivate(controller, "stream"); - - $writableStreamMarkFirstWriteRequestInFlight(stream); - - const sinkWritePromise = $getByIdDirectPrivate(controller, "writeAlgorithm").$call(undefined, chunk); - - sinkWritePromise.$then( - () => { - $writableStreamFinishInFlightWrite(stream); - const state = $getByIdDirectPrivate(stream, "state"); - $assert(state === "writable" || state === "erroring"); - - $dequeueValue($getByIdDirectPrivate(controller, "queue")); - if (!$writableStreamCloseQueuedOrInFlight(stream) && state === "writable") { - const backpressure = $writableStreamDefaultControllerGetBackpressure(controller); - $writableStreamUpdateBackpressure(stream, backpressure); - } - $writableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - }, - reason => { - const state = $getByIdDirectPrivate(stream, "state"); - if (state === "writable") $writableStreamDefaultControllerClearAlgorithms(controller); - - $writableStreamFinishInFlightWriteWithError(stream, reason); - }, - ); -} - -export function writableStreamDefaultControllerWrite(controller, chunk, chunkSize) { - try { - $enqueueValueWithSize($getByIdDirectPrivate(controller, "queue"), chunk, chunkSize); - - const stream = $getByIdDirectPrivate(controller, "stream"); - - const state = $getByIdDirectPrivate(stream, "state"); - if (!$writableStreamCloseQueuedOrInFlight(stream) && state === "writable") { - const backpressure = $writableStreamDefaultControllerGetBackpressure(controller); - $writableStreamUpdateBackpressure(stream, backpressure); - } - $writableStreamDefaultControllerAdvanceQueueIfNeeded(controller); - } catch (e) { - $writableStreamDefaultControllerErrorIfNeeded(controller, e); - } -} diff --git a/src/bun.js/builtins/tsconfig.json b/src/bun.js/builtins/tsconfig.json deleted file mode 100644 index 612488c5f..000000000 --- a/src/bun.js/builtins/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "noEmit": true - }, - "include": [".", "builtins.d.ts", "WebCoreJSBuiltins.d.ts", "../../../packages/bun-types/index.d.ts"] -} diff --git a/src/bun.js/bun-jsc.exports.js b/src/bun.js/bun-jsc.exports.js deleted file mode 100644 index d49e41851..000000000 --- a/src/bun.js/bun-jsc.exports.js +++ /dev/null @@ -1,35 +0,0 @@ -const jsc = globalThis[Symbol.for("Bun.lazy")]("bun:jsc"); - -export const callerSourceOrigin = jsc.callerSourceOrigin; -export const jscDescribe = jsc.describe; -export const jscDescribeArray = jsc.describeArray; -/** Too easy to confuse with test describe */ -export const describe = jscDescribe; -export const describeArray = jscDescribeArray; -export const drainMicrotasks = jsc.drainMicrotasks; -export const edenGC = jsc.edenGC; -export const fullGC = jsc.fullGC; -export const gcAndSweep = jsc.gcAndSweep; -export const getRandomSeed = jsc.getRandomSeed; -export const heapSize = jsc.heapSize; -export const heapStats = jsc.heapStats; -export const startSamplingProfiler = jsc.startSamplingProfiler; -export const samplingProfilerStackTraces = jsc.samplingProfilerStackTraces; -export const isRope = jsc.isRope; -export const memoryUsage = jsc.memoryUsage; -export const noInline = jsc.noInline; -export const noFTL = jsc.noFTL; -export const noOSRExitFuzzing = jsc.noOSRExitFuzzing; -export const numberOfDFGCompiles = jsc.numberOfDFGCompiles; -export const optimizeNextInvocation = jsc.optimizeNextInvocation; -export const releaseWeakRefs = jsc.releaseWeakRefs; -export const reoptimizationRetryCount = jsc.reoptimizationRetryCount; -export const setRandomSeed = jsc.setRandomSeed; -export const startRemoteDebugger = jsc.startRemoteDebugger; -export const totalCompileTime = jsc.totalCompileTime; -export const getProtectedObjects = jsc.getProtectedObjects; -export const generateHeapSnapshotForDebugging = jsc.generateHeapSnapshotForDebugging; -export const profile = jsc.profile; -export default jsc; -export const setTimeZone = jsc.setTimeZone; -export const setTimezone = setTimeZone; diff --git a/src/bun.js/child_process.exports.js b/src/bun.js/child_process.exports.js deleted file mode 100644 index 0ee72fe4c..000000000 --- a/src/bun.js/child_process.exports.js +++ /dev/null @@ -1,1747 +0,0 @@ -const EventEmitter = import.meta.require("node:events"); -const { - Readable: { fromWeb: ReadableFromWeb }, - NativeWritable, -} = import.meta.require("node:stream"); -const { - constants: { signals }, -} = import.meta.require("node:os"); -const { promisify } = import.meta.require("node:util"); - -const { ArrayBuffer, Uint8Array, String, Object, Buffer, Promise } = import.meta.primordials; - -var ObjectPrototypeHasOwnProperty = Object.prototype.hasOwnProperty; -var ObjectCreate = Object.create; -var ObjectAssign = Object.assign; -var ObjectDefineProperty = Object.defineProperty; -var BufferConcat = Buffer.concat; -var BufferIsEncoding = Buffer.isEncoding; - -var kEmptyObject = ObjectCreate(null); - -var ArrayPrototypePush = Array.prototype.push; -var ArrayPrototypeReduce = Array.prototype.reduce; -var ArrayPrototypeFilter = Array.prototype.filter; -var ArrayPrototypeJoin = Array.prototype.join; -var ArrayPrototypeMap = Array.prototype.map; -var ArrayPrototypeIncludes = Array.prototype.includes; -var ArrayPrototypeSlice = Array.prototype.slice; -var ArrayPrototypeUnshift = Array.prototype.unshift; -var ArrayIsArray = Array.isArray; - -// var ArrayBuffer = ArrayBuffer; -var ArrayBufferIsView = ArrayBuffer.isView; - -var NumberIsInteger = Number.isInteger; -var MathAbs = Math.abs; - -var StringPrototypeToUpperCase = String.prototype.toUpperCase; -var StringPrototypeIncludes = String.prototype.includes; -var StringPrototypeSlice = String.prototype.slice; -var Uint8ArrayPrototypeIncludes = Uint8Array.prototype.includes; - -const MAX_BUFFER = 1024 * 1024; - -// General debug vs tracking stdio streams. Useful for stream debugging in particular -const __DEBUG__ = process.env.DEBUG || false; - -// You can use this env var along with `process.env.DEBUG_TRACK_EE` to debug stdio streams -// Just set `DEBUG_TRACK_EE=PARENT_STDOUT-0, PARENT_STDOUT-1`, etc. and `DEBUG_STDIO=1` and you will be able to track particular stdio streams -// TODO: Add ability to track a range of IDs rather than just enumerated ones -const __TRACK_STDIO__ = process.env.DEBUG_STDIO; -const debug = __DEBUG__ ? console.log : () => {}; - -if (__TRACK_STDIO__) { - debug("child_process: debug mode on"); - globalThis.__lastId = null; - globalThis.__getId = () => { - return globalThis.__lastId !== null ? globalThis.__lastId++ : 0; - }; -} - -// Sections: -// 1. Exported child_process functions -// 2. child_process helpers -// 3. ChildProcess "class" -// 4. ChildProcess helpers -// 5. Validators -// 6. Random utilities -// 7. Node errors / error polyfills - -// TODO: -// Port rest of node tests -// Fix exit codes with Bun.spawn -// ------------------------------ -// Fix errors -// Support file descriptors being passed in for stdio -// ------------------------------ -// TODO: Look at Pipe to see if we can support passing Node Pipe objects to stdio param - -// TODO: Add these params after support added in Bun.spawn -// uid <number> Sets the user identity of the process (see setuid(2)). -// gid <number> Sets the group identity of the process (see setgid(2)). -// detached <boolean> Prepare child to run independently of its parent process. Specific behavior depends on the platform, see options.detached). - -// TODO: After IPC channels can be opened -// serialization <string> Specify the kind of serialization used for sending messages between processes. Possible values are 'json' and 'advanced'. See Advanced serialization for more details. Default: 'json'. - -// TODO: Add support for ipc option, verify only one IPC channel in array -// stdio <Array> | <string> Child's stdio configuration (see options.stdio). -// Support wrapped ipc types (e.g. net.Socket, dgram.Socket, TTY, etc.) -// IPC FD passing support - -// From node child_process docs(https://nodejs.org/api/child_process.html#optionsstdio): -// 'ipc': Create an IPC channel for passing messages/file descriptors between parent and child. -// A ChildProcess may have at most one IPC stdio file descriptor. Setting this option enables the subprocess.send() method. -// If the child is a Node.js process, the presence of an IPC channel will enable process.send() and process.disconnect() methods, -// as well as 'disconnect' and 'message' events within the child. - -//------------------------------------------------------------------------------ -// Section 1. Exported child_process functions -//------------------------------------------------------------------------------ - -// TODO: Implement these props when Windows is supported -// * windowsVerbatimArguments?: boolean; -// * windowsHide?: boolean; - -// Copyright Joyent, Inc. and other Node contributors. -// -// 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 spawnTimeoutFunction(child, timeoutHolder) { - var timeoutId = timeoutHolder.timeoutId; - if (timeoutId > -1) { - try { - child.kill(killSignal); - } catch (err) { - child.emit("error", err); - } - timeoutHolder.timeoutId = -1; - } -} -/** - * Spawns a new process using the given `file`. - * @param {string} file - * @param {string[]} [args] - * @param {{ - * cwd?: string; - * env?: Record<string, string>; - * argv0?: string; - * stdio?: Array | string; - * detached?: boolean; - * uid?: number; - * gid?: number; - * serialization?: string; - * shell?: boolean | string; - * signal?: AbortSignal; - * timeout?: number; - * killSignal?: string | number; - * }} [options] - * @returns {ChildProcess} - */ -export function spawn(file, args, options) { - options = normalizeSpawnArguments(file, args, options); - validateTimeout(options.timeout); - validateAbortSignal(options.signal, "options.signal"); - const killSignal = sanitizeKillSignal(options.killSignal); - const child = new ChildProcess(); - - debug("spawn", options); - child.spawn(options); - - if (options.timeout > 0) { - let timeoutId = setTimeout(() => { - if (timeoutId) { - try { - child.kill(killSignal); - } catch (err) { - child.emit("error", err); - } - timeoutId = null; - } - }); - - child.once("exit", () => { - if (timeoutId) { - clearTimeout(timeoutId); - timeoutId = null; - } - }); - } - - if (options.signal) { - const signal = options.signal; - if (signal.aborted) { - process.nextTick(onAbortListener); - } else { - signal.addEventListener("abort", onAbortListener, { once: true }); - child.once("exit", () => signal.removeEventListener("abort", onAbortListener)); - } - - function onAbortListener() { - abortChildProcess(child, killSignal); - } - } - return child; -} - -/** - * Spawns the specified file as a shell. - * @param {string} file - * @param {string[]} [args] - * @param {{ - * cwd?: string; - * env?: Record<string, string>; - * encoding?: string; - * timeout?: number; - * maxBuffer?: number; - * killSignal?: string | number; - * uid?: number; - * gid?: number; - * windowsHide?: boolean; - * windowsVerbatimArguments?: boolean; - * shell?: boolean | string; - * signal?: AbortSignal; - * }} [options] - * @param {( - * error?: Error, - * stdout?: string | Buffer, - * stderr?: string | Buffer - * ) => any} [callback] - * @returns {ChildProcess} - */ -export function execFile(file, args, options, callback) { - ({ file, args, options, callback } = normalizeExecFileArgs(file, args, options, callback)); - - options = { - encoding: "utf8", - timeout: 0, - maxBuffer: MAX_BUFFER, - killSignal: "SIGTERM", - cwd: null, - env: null, - shell: false, - ...options, - }; - - const maxBuffer = options.maxBuffer; - - // Validate the timeout, if present. - validateTimeout(options.timeout); - - // Validate maxBuffer, if present. - validateMaxBuffer(maxBuffer); - - options.killSignal = sanitizeKillSignal(options.killSignal); - - const child = spawn(file, args, { - cwd: options.cwd, - env: options.env, - // gid: options.gid, - shell: options.shell, - signal: options.signal, - // uid: options.uid, - }); - - let encoding; - const _stdout = []; - const _stderr = []; - if (options.encoding !== "buffer" && BufferIsEncoding(options.encoding)) { - encoding = options.encoding; - } else { - encoding = null; - } - let stdoutLen = 0; - let stderrLen = 0; - let killed = false; - let exited = false; - let timeoutId; - let encodedStdoutLen; - let encodedStderrLen; - - let ex = null; - - let cmd = file; - - function exitHandler(code, signal) { - if (exited) return; - exited = true; - - if (timeoutId) { - clearTimeout(timeoutId); - timeoutId = null; - } - - if (!callback) return; - - const readableEncoding = child?.stdout?.readableEncoding; - // merge chunks - let stdout; - let stderr; - if (encoding || (child.stdout && readableEncoding)) { - stdout = ArrayPrototypeJoin.call(_stdout, ""); - } else { - stdout = BufferConcat(_stdout); - } - if (encoding || (child.stderr && readableEncoding)) { - stderr = ArrayPrototypeJoin.call(_stderr, ""); - } else { - stderr = BufferConcat(_stderr); - } - - if (!ex && code === 0 && signal === null) { - callback(null, stdout, stderr); - return; - } - - if (args?.length) cmd += ` ${ArrayPrototypeJoin.call(args, " ")}`; - if (!ex) { - let message = `Command failed: ${cmd}`; - if (stderr) message += `\n${stderr}`; - ex = genericNodeError(message, { - // code: code < 0 ? getSystemErrorName(code) : code, // TODO: Add getSystemErrorName - code: code, - killed: child.killed || killed, - signal: signal, - }); - } - - ex.cmd = cmd; - callback(ex, stdout, stderr); - } - - function errorHandler(e) { - ex = e; - - if (child.stdout) child.stdout.destroy(); - if (child.stderr) child.stderr.destroy(); - - exitHandler(); - } - - function kill() { - if (child.stdout) child.stdout.destroy(); - if (child.stderr) child.stderr.destroy(); - - killed = true; - try { - child.kill(options.killSignal); - } catch (e) { - ex = e; - exitHandler(); - } - } - - if (options.timeout > 0) { - timeoutId = setTimeout(function delayedKill() { - kill(); - timeoutId = null; - }, options.timeout); - } - - if (child.stdout) { - if (encoding) child.stdout.setEncoding(encoding); - - child.stdout.on( - "data", - maxBuffer === Infinity - ? function onUnlimitedSizeBufferedData(chunk) { - ArrayPrototypePush.call(_stdout, chunk); - } - : encoding - ? function onChildStdoutEncoded(chunk) { - stdoutLen += chunk.length; - - if (stdoutLen * 4 > maxBuffer) { - const encoding = child.stdout.readableEncoding; - const actualLen = Buffer.byteLength(chunk, encoding); - if (encodedStdoutLen === undefined) { - for (let i = 0; i < _stdout.length; i++) { - encodedStdoutLen += Buffer.byteLength(_stdout[i], encoding); - } - } else { - encodedStdoutLen += actualLen; - } - const truncatedLen = maxBuffer - (encodedStdoutLen - actualLen); - ArrayPrototypePush.call(_stdout, StringPrototypeSlice.apply(chunk, 0, truncatedLen)); - - ex = new ERR_CHILD_PROCESS_STDIO_MAXBUFFER("stdout"); - kill(); - } else { - ArrayPrototypePush.call(_stdout, chunk); - } - } - : function onChildStdoutRaw(chunk) { - stdoutLen += chunk.length; - - if (stdoutLen > maxBuffer) { - const truncatedLen = maxBuffer - (stdoutLen - chunk.length); - ArrayPrototypePush.call(_stdout, chunk.slice(0, truncatedLen)); - - ex = new ERR_CHILD_PROCESS_STDIO_MAXBUFFER("stdout"); - kill(); - } else { - ArrayPrototypePush.call(_stdout, chunk); - } - }, - ); - } - - if (child.stderr) { - if (encoding) child.stderr.setEncoding(encoding); - - child.stderr.on( - "data", - maxBuffer === Infinity - ? function onUnlimitedSizeBufferedData(chunk) { - ArrayPrototypePush.call(_stderr, chunk); - } - : encoding - ? function onChildStderrEncoded(chunk) { - stderrLen += chunk.length; - - if (stderrLen * 4 > maxBuffer) { - const encoding = child.stderr.readableEncoding; - const actualLen = Buffer.byteLength(chunk, encoding); - if (encodedStderrLen === undefined) { - for (let i = 0; i < _stderr.length; i++) { - encodedStderrLen += Buffer.byteLength(_stderr[i], encoding); - } - } else { - encodedStderrLen += actualLen; - } - const truncatedLen = maxBuffer - (encodedStderrLen - actualLen); - ArrayPrototypePush.call(_stderr, StringPrototypeSlice.call(chunk, 0, truncatedLen)); - - ex = new ERR_CHILD_PROCESS_STDIO_MAXBUFFER("stderr"); - kill(); - } else { - ArrayPrototypePush.call(_stderr, chunk); - } - } - : function onChildStderrRaw(chunk) { - stderrLen += chunk.length; - - if (stderrLen > maxBuffer) { - const truncatedLen = maxBuffer - (stderrLen - chunk.length); - ArrayPrototypePush.call(_stderr, StringPrototypeSlice.call(chunk, 0, truncatedLen)); - - ex = new ERR_CHILD_PROCESS_STDIO_MAXBUFFER("stderr"); - kill(); - } else { - ArrayPrototypePush.call(_stderr, chunk); - } - }, - ); - } - - child.addListener("close", exitHandler); - child.addListener("error", errorHandler); - - return child; -} - -/** - * Spawns a shell executing the given command. - * @param {string} command - * @param {{ - * cmd?: string; - * env?: Record<string, string>; - * encoding?: string; - * shell?: string; - * signal?: AbortSignal; - * timeout?: number; - * maxBuffer?: number; - * killSignal?: string | number; - * uid?: number; - * gid?: number; - * windowsHide?: boolean; - * }} [options] - * @param {( - * error?: Error, - * stdout?: string | Buffer, - * stderr?: string | Buffer - * ) => any} [callback] - * @returns {ChildProcess} - */ -export function exec(command, options, callback) { - const opts = normalizeExecArgs(command, options, callback); - return execFile(opts.file, opts.options, opts.callback); -} - -const customPromiseExecFunction = orig => { - return (...args) => { - let resolve; - let reject; - const promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); - - promise.child = orig(...args, (err, stdout, stderr) => { - if (err !== null) { - err.stdout = stdout; - err.stderr = stderr; - reject(err); - } else { - resolve({ stdout, stderr }); - } - }); - - return promise; - }; -}; - -ObjectDefineProperty(exec, promisify.custom, { - __proto__: null, - enumerable: false, - value: customPromiseExecFunction(exec), -}); - -/** - * Spawns a new process synchronously using the given `file`. - * @param {string} file - * @param {string[]} [args] - * @param {{ - * cwd?: string; - * input?: string | Buffer | TypedArray | DataView; - * argv0?: string; - * stdio?: string | Array; - * env?: Record<string, string>; - * uid?: number; - * gid?: number; - * timeout?: number; - * killSignal?: string | number; - * maxBuffer?: number; - * encoding?: string; - * shell?: boolean | string; - * }} [options] - * @returns {{ - * pid: number; - * output: Array; - * stdout: Buffer | string; - * stderr: Buffer | string; - * status: number | null; - * signal: string | null; - * error: Error; - * }} - */ -export function spawnSync(file, args, options) { - options = { - maxBuffer: MAX_BUFFER, - ...normalizeSpawnArguments(file, args, options), - }; - - const maxBuffer = options.maxBuffer; - const encoding = options.encoding; - - debug("spawnSync", options); - - // Validate the timeout, if present. - validateTimeout(options.timeout); - - // Validate maxBuffer, if present. - validateMaxBuffer(maxBuffer); - - // Validate and translate the kill signal, if present. - options.killSignal = sanitizeKillSignal(options.killSignal); - - const stdio = options.stdio || "pipe"; - const bunStdio = getBunStdioFromOptions(stdio); - - var { input } = options; - if (input) { - if (ArrayBufferIsView(input)) { - bunStdio[0] = input; - } else if (typeof input === "string") { - bunStdio[0] = Buffer.from(input, encoding || "utf8"); - } else { - throw new ERR_INVALID_ARG_TYPE(`options.stdio[0]`, ["Buffer", "TypedArray", "DataView", "string"], input); - } - } - - const { stdout, stderr, success, exitCode } = Bun.spawnSync({ - cmd: options.args, - env: options.env || undefined, - cwd: options.cwd || undefined, - stdin: bunStdio[0], - stdout: bunStdio[1], - stderr: bunStdio[2], - }); - - const result = { - signal: null, - status: exitCode, - output: [null, stdout, stderr], - }; - - if (stdout && encoding && encoding !== "buffer") { - result.output[1] = result.output[1]?.toString(encoding); - } - - if (stderr && encoding && encoding !== "buffer") { - result.output[2] = result.output[2]?.toString(encoding); - } - - result.stdout = result.output[1]; - result.stderr = result.output[2]; - - if (!success) { - result.error = new SystemError(result.output[2], options.file, "spawnSync", -1, result.status); - result.error.spawnargs = ArrayPrototypeSlice.call(options.args, 1); - } - - return result; -} - -/** - * Spawns a file as a shell synchronously. - * @param {string} file - * @param {string[]} [args] - * @param {{ - * cwd?: string; - * input?: string | Buffer | TypedArray | DataView; - * stdio?: string | Array; - * env?: Record<string, string>; - * uid?: number; - * gid?: number; - * timeout?: number; - * killSignal?: string | number; - * maxBuffer?: number; - * encoding?: string; - * windowsHide?: boolean; - * shell?: boolean | string; - * }} [options] - * @returns {Buffer | string} - */ -export function execFileSync(file, args, options) { - ({ file, args, options } = normalizeExecFileArgs(file, args, options)); - - // const inheritStderr = !options.stdio; - const ret = spawnSync(file, args, options); - - // if (inheritStderr && ret.stderr) process.stderr.write(ret.stderr); - - const errArgs = [options.argv0 || file]; - ArrayPrototypePush.apply(errArgs, args); - const err = checkExecSyncError(ret, errArgs); - - if (err) throw err; - - return ret.stdout; -} - -/** - * Spawns a shell executing the given `command` synchronously. - * @param {string} command - * @param {{ - * cwd?: string; - * input?: string | Buffer | TypedArray | DataView; - * stdio?: string | Array; - * env?: Record<string, string>; - * shell?: string; - * uid?: number; - * gid?: number; - * timeout?: number; - * killSignal?: string | number; - * maxBuffer?: number; - * encoding?: string; - * windowsHide?: boolean; - * }} [options] - * @returns {Buffer | string} - */ -export function execSync(command, options) { - const opts = normalizeExecArgs(command, options, null); - // const inheritStderr = !opts.options.stdio; - - const ret = spawnSync(opts.file, opts.options); - - // if (inheritStderr && ret.stderr) process.stderr.write(ret.stderr); // TODO: Uncomment when we have process.stderr - - const err = checkExecSyncError(ret, undefined, command); - - if (err) throw err; - - return ret.stdout; -} - -export function fork() { - throw new Error("Not implemented"); -} - -//------------------------------------------------------------------------------ -// Section 2. child_process helpers -//------------------------------------------------------------------------------ -function convertToValidSignal(signal) { - if (typeof signal === "number" && getSignalsToNamesMapping()[signal]) return signal; - - if (typeof signal === "string") { - const signalName = signals[StringPrototypeToUpperCase.call(signal)]; - if (signalName) return signalName; - } - - throw new ERR_UNKNOWN_SIGNAL(signal); -} - -function sanitizeKillSignal(killSignal) { - if (typeof killSignal === "string" || typeof killSignal === "number") { - return convertToValidSignal(killSignal); - } else if (killSignal != null) { - throw new ERR_INVALID_ARG_TYPE("options.killSignal", ["string", "number"], killSignal); - } -} - -let signalsToNamesMapping; -function getSignalsToNamesMapping() { - if (signalsToNamesMapping !== undefined) return signalsToNamesMapping; - - signalsToNamesMapping = ObjectCreate(null); - for (const key in signals) { - signalsToNamesMapping[signals[key]] = key; - } - - return signalsToNamesMapping; -} - -function normalizeExecFileArgs(file, args, options, callback) { - if (ArrayIsArray(args)) { - args = ArrayPrototypeSlice.call(args); - } else if (args != null && typeof args === "object") { - callback = options; - options = args; - args = null; - } else if (typeof args === "function") { - callback = args; - options = null; - args = null; - } - - if (args == null) { - args = []; - } - - if (typeof options === "function") { - callback = options; - } else if (options != null) { - validateObject(options, "options"); - } - - if (options == null) { - options = kEmptyObject; - } - - if (callback != null) { - validateFunction(callback, "callback"); - } - - // Validate argv0, if present. - if (options.argv0 != null) { - validateString(options.argv0, "options.argv0"); - validateArgumentNullCheck(options.argv0, "options.argv0"); - } - - return { file, args, options, callback }; -} - -function normalizeExecArgs(command, options, callback) { - validateString(command, "command"); - validateArgumentNullCheck(command, "command"); - - if (typeof options === "function") { - callback = options; - options = undefined; - } - - // Make a shallow copy so we don't clobber the user's options object. - options = { ...options }; - options.shell = typeof options.shell === "string" ? options.shell : true; - - return { - file: command, - options: options, - callback: callback, - }; -} - -function normalizeSpawnArguments(file, args, options) { - validateString(file, "file"); - validateArgumentNullCheck(file, "file"); - - if (file.length === 0) throw new ERR_INVALID_ARG_VALUE("file", file, "cannot be empty"); - - if (ArrayIsArray(args)) { - args = ArrayPrototypeSlice.call(args); - } else if (args == null) { - args = []; - } else if (typeof args !== "object") { - throw new ERR_INVALID_ARG_TYPE("args", "object", args); - } else { - options = args; - args = []; - } - - validateArgumentsNullCheck(args, "args"); - - if (options === undefined) options = {}; - else validateObject(options, "options"); - - let cwd = options.cwd; - - // Validate the cwd, if present. - if (cwd != null) { - cwd = getValidatedPath(cwd, "options.cwd"); - } - - // TODO: Detached check - // TODO: Gid check - // TODO: Uid check - - // Validate the shell, if present. - if (options.shell != null && typeof options.shell !== "boolean" && typeof options.shell !== "string") { - throw new ERR_INVALID_ARG_TYPE("options.shell", ["boolean", "string"], options.shell); - } - - // Validate argv0, if present. - if (options.argv0 != null) { - validateString(options.argv0, "options.argv0"); - validateArgumentNullCheck(options.argv0, "options.argv0"); - } - - // TODO: Windows checks for Windows specific options - - // Handle shell - if (options.shell) { - validateArgumentNullCheck(options.shell, "options.shell"); - const command = ArrayPrototypeJoin.call([file, ...args], " "); - // TODO: Windows moment - // Set the shell, switches, and commands. - // if (process.platform === "win32") { - // if (typeof options.shell === "string") file = options.shell; - // else file = process.env.comspec || "cmd.exe"; - // // '/d /s /c' is used only for cmd.exe. - // if (RegExpPrototypeExec(/^(?:.*\\)?cmd(?:\.exe)?$/i, file) !== null) { - // args = ["/d", "/s", "/c", `"${command}"`]; - // windowsVerbatimArguments = true; - // } else { - // args = ["-c", command]; - // } - // } else { - if (typeof options.shell === "string") file = options.shell; - else if (process.platform === "android") file = "sh"; - else file = "sh"; - args = ["-c", command]; - // } - } - - // Handle argv0 - if (typeof options.argv0 === "string") { - ArrayPrototypeUnshift.call(args, options.argv0); - } else { - ArrayPrototypeUnshift.call(args, file); - } - - const env = options.env || process.env; - const envPairs = env; - - // // process.env.NODE_V8_COVERAGE always propagates, making it possible to - // // collect coverage for programs that spawn with white-listed environment. - // copyProcessEnvToEnv(env, "NODE_V8_COVERAGE", options.env); - - // TODO: Windows env support here... - - return { ...options, file, args, cwd, envPairs }; -} - -function checkExecSyncError(ret, args, cmd) { - let err; - if (ret.error) { - err = ret.error; - ObjectAssign(err, ret); - } else if (ret.status !== 0) { - let msg = "Command failed: "; - msg += cmd || ArrayPrototypeJoin.call(args, " "); - if (ret.stderr && ret.stderr.length > 0) msg += `\n${ret.stderr.toString()}`; - err = genericNodeError(msg, ret); - } - return err; -} - -//------------------------------------------------------------------------------ -// Section 3. ChildProcess class -//------------------------------------------------------------------------------ -export class ChildProcess extends EventEmitter { - #handle; - #exited = false; - #closesNeeded = 1; - #closesGot = 0; - - connected = false; - signalCode = null; - exitCode = null; - spawnfile; - spawnargs; - pid; - channel; - - get killed() { - if (this.#handle == null) return false; - } - - // constructor(options) { - // super(options); - // this.#handle[owner_symbol] = this; - // } - - #handleOnExit(exitCode, signalCode, err) { - if (this.#exited) return; - this.exitCode = this.#handle.exitCode; - this.signalCode = exitCode > 0 ? signalCode : null; - - if (this.#stdin) { - this.#stdin.destroy(); - } - - if (this.#handle) { - this.#handle = null; - } - - if (exitCode < 0) { - const err = new SystemError( - `Spawned process exited with error code: ${exitCode}`, - undefined, - "spawn", - "EUNKNOWN", - "ERR_CHILD_PROCESS_UNKNOWN_ERROR", - ); - - if (this.spawnfile) err.path = this.spawnfile; - - err.spawnargs = ArrayPrototypeSlice.call(this.spawnargs, 1); - this.emit("error", err); - } else { - this.emit("exit", this.exitCode, this.signalCode); - } - - // If any of the stdio streams have not been touched, - // then pull all the data through so that it can get the - // eof and emit a 'close' event. - // Do it on nextTick so that the user has one last chance - // to consume the output, if for example they only want to - // start reading the data once the process exits. - process.nextTick(flushStdio, this); - - this.#maybeClose(); - this.#exited = true; - this.#stdioOptions = ["destroyed", "destroyed", "destroyed"]; - } - - #getBunSpawnIo(i, encoding) { - if (__DEBUG__ && !this.#handle) { - if (this.#handle === null) { - debug("ChildProcess: getBunSpawnIo: this.#handle is null. This means the subprocess already exited"); - } else { - debug("ChildProcess: getBunSpawnIo: this.#handle is undefined"); - } - } - const io = this.#stdioOptions[i]; - switch (i) { - case 0: { - switch (io) { - case "pipe": - return new NativeWritable(this.#handle.stdin); - case "inherit": - return process.stdin || null; - case "destroyed": - return new ShimmedStdin(); - default: - return null; - } - } - case 2: - case 1: { - switch (io) { - case "pipe": - return ReadableFromWeb( - this.#handle[fdToStdioName(i)], - __TRACK_STDIO__ - ? { - encoding, - __id: `PARENT_${fdToStdioName(i).toUpperCase()}-${globalThis.__getId()}`, - } - : { encoding }, - ); - case "inherit": - return process[fdToStdioName(i)] || null; - case "destroyed": - return new ShimmedStdioOutStream(); - default: - return null; - } - } - } - } - - #stdin; - #stdout; - #stderr; - #stdioObject; - #encoding; - #stdioOptions; - - #createStdioObject() { - return Object.create(null, { - 0: { - get: () => this.stdin, - }, - 1: { - get: () => this.stdout, - }, - 2: { - get: () => this.stderr, - }, - }); - } - - get stdin() { - return (this.#stdin ??= this.#getBunSpawnIo(0, this.#encoding)); - } - - get stdout() { - return (this.#stdout ??= this.#getBunSpawnIo(1, this.#encoding)); - } - - get stderr() { - return (this.#stderr ??= this.#getBunSpawnIo(2, this.#encoding)); - } - - get stdio() { - return (this.#stdioObject ??= this.#createStdioObject()); - } - - spawn(options) { - validateObject(options, "options"); - - // validateOneOf(options.serialization, "options.serialization", [ - // undefined, - // "json", - // // "advanced", // TODO - // ]); - // const serialization = options.serialization || "json"; - - // if (ipc !== undefined) { - // // Let child process know about opened IPC channel - // if (options.envPairs === undefined) options.envPairs = []; - // else validateArray(options.envPairs, "options.envPairs"); - - // ArrayPrototypePush.call(options.envPairs, `NODE_CHANNEL_FD=${ipcFd}`); - // ArrayPrototypePush.call( - // options.envPairs, - // `NODE_CHANNEL_SERIALIZATION_MODE=${serialization}` - // ); - // } - - validateString(options.file, "options.file"); - // NOTE: This is confusing... So node allows you to pass a file name - // But also allows you to pass a command in the args and it should execute - // To add another layer of confusion, they also give the option to pass an explicit "argv0" - // which overrides the actual command of the spawned process... - var file; - file = this.spawnfile = options.file; - - var spawnargs; - if (options.args == null) { - spawnargs = this.spawnargs = []; - } else { - validateArray(options.args, "options.args"); - spawnargs = this.spawnargs = options.args; - } - - const stdio = options.stdio || ["pipe", "pipe", "pipe"]; - const bunStdio = getBunStdioFromOptions(stdio); - - var env = options.envPairs || undefined; - - this.#encoding = options.encoding || undefined; - this.#stdioOptions = bunStdio; - this.#handle = Bun.spawn({ - cmd: spawnargs, - stdin: bunStdio[0], - stdout: bunStdio[1], - stderr: bunStdio[2], - cwd: options.cwd || undefined, - env: env || process.env, - onExit: (handle, exitCode, signalCode, err) => { - this.#handle = handle; - this.pid = this.#handle.pid; - - process.nextTick( - (exitCode, signalCode, err) => this.#handleOnExit(exitCode, signalCode, err), - exitCode, - signalCode, - err, - ); - }, - lazy: true, - }); - this.pid = this.#handle.pid; - - onSpawnNT(this); - - // const ipc = stdio.ipc; - // const ipcFd = stdio.ipcFd; - // stdio = options.stdio = stdio.stdio; - - // for (i = 0; i < stdio.length; i++) { - // const stream = stdio[i]; - // if (stream.type === "ignore") continue; - - // if (stream.ipc) { - // this._closesNeeded++; - // continue; - // } - - // // The stream is already cloned and piped, thus stop its readable side, - // // otherwise we might attempt to read from the stream when at the same time - // // the child process does. - // if (stream.type === "wrap") { - // stream.handle.reading = false; - // stream.handle.readStop(); - // stream._stdio.pause(); - // stream._stdio.readableFlowing = false; - // stream._stdio._readableState.reading = false; - // stream._stdio[kIsUsedAsStdio] = true; - // continue; - // } - - // if (stream.handle) { - // stream.socket = createSocket( - // this.pid !== 0 ? stream.handle : null, - // i > 0 - // ); - - // // Add .send() method and start listening for IPC data - // if (ipc !== undefined) setupChannel(this, ipc, serialization); - } - - send() { - console.log("ChildProcess.prototype.send() - Sorry! Not implemented yet"); - } - - disconnect() { - console.log("ChildProcess.prototype.disconnect() - Sorry! Not implemented yet"); - } - - kill(sig) { - const signal = sig === 0 ? sig : convertToValidSignal(sig === undefined ? "SIGTERM" : sig); - - if (this.#handle) { - this.#handle.kill(signal); - } - - this.#maybeClose(); - - // TODO: Figure out how to make this conform to the Node spec... - // The problem is that the handle does not report killed until the process exits - // So we can't return whether or not the process was killed because Bun.spawn seems to handle this async instead of sync like Node does - // return this.#handle?.killed ?? true; - return true; - } - - #maybeClose() { - debug("Attempting to maybe close..."); - this.#closesGot++; - if (this.#closesGot === this.#closesNeeded) { - this.emit("close", this.exitCode, this.signalCode); - } - } - - ref() { - if (this.#handle) this.#handle.ref(); - } - - unref() { - if (this.#handle) this.#handle.unref(); - } -} - -//------------------------------------------------------------------------------ -// Section 4. ChildProcess helpers -//------------------------------------------------------------------------------ -const nodeToBunLookup = { - ignore: null, - pipe: "pipe", - overlapped: "pipe", // TODO: this may need to work differently for Windows - inherit: "inherit", -}; - -function nodeToBun(item) { - // If inherit and we are referencing stdin/stdout/stderr index, - // we can get the fd from the ReadStream for the corresponding stdio - if (typeof item === "number") { - return item; - } else { - const result = nodeToBunLookup[item]; - if (result === undefined) throw new Error("Invalid stdio option"); - return result; - } -} - -function fdToStdioName(fd) { - switch (fd) { - case 0: - return "stdin"; - case 1: - return "stdout"; - case 2: - return "stderr"; - default: - return null; - } -} - -function getBunStdioFromOptions(stdio) { - const normalizedStdio = normalizeStdio(stdio); - // Node options: - // pipe: just a pipe - // ipc = can only be one in array - // overlapped -- same as pipe on Unix based systems - // inherit -- 'inherit': equivalent to ['inherit', 'inherit', 'inherit'] or [0, 1, 2] - // ignore -- > /dev/null, more or less same as null option for Bun.spawn stdio - // TODO: Stream -- use this stream - // number -- used as FD - // null, undefined: Use default value. Not same as ignore, which is Bun.spawn null. - // null/undefined: For stdio fds 0, 1, and 2 (in other words, stdin, stdout, and stderr) a pipe is created. For fd 3 and up, the default is 'ignore' - - // Important Bun options - // pipe - // fd - // null - no stdin/stdout/stderr - - // Translations: node -> bun - // pipe -> pipe - // overlapped -> pipe - // ignore -> null - // inherit -> inherit (stdin/stdout/stderr) - // Stream -> throw err for now - const bunStdio = normalizedStdio.map(item => nodeToBun(item)); - return bunStdio; -} - -function normalizeStdio(stdio) { - if (typeof stdio === "string") { - switch (stdio) { - case "ignore": - return ["ignore", "ignore", "ignore"]; - case "pipe": - return ["pipe", "pipe", "pipe"]; - case "inherit": - return ["inherit", "inherit", "inherit"]; - default: - throw new ERR_INVALID_OPT_VALUE("stdio", stdio); - } - } else if (ArrayIsArray(stdio)) { - // Validate if each is a valid stdio type - // TODO: Support wrapped types here - - let processedStdio; - if (stdio.length === 0) processedStdio = ["pipe", "pipe", "pipe"]; - else if (stdio.length === 1) processedStdio = [stdio[0], "pipe", "pipe"]; - else if (stdio.length === 2) processedStdio = [stdio[0], stdio[1], "pipe"]; - else if (stdio.length >= 3) processedStdio = [stdio[0], stdio[1], stdio[2]]; - - return processedStdio.map(item => (!item ? "pipe" : item)); - } else { - throw new ERR_INVALID_OPT_VALUE("stdio", stdio); - } -} - -function flushStdio(subprocess) { - const stdio = subprocess.stdio; - if (stdio == null) return; - - for (let i = 0; i < stdio.length; i++) { - const stream = stdio[i]; - // TODO(addaleax): This doesn't necessarily account for all the ways in - // which data can be read from a stream, e.g. being consumed on the - // native layer directly as a StreamBase. - if (!stream || !stream.readable) { - continue; - } - stream.resume(); - } -} - -function onSpawnNT(self) { - self.emit("spawn"); -} - -function abortChildProcess(child, killSignal) { - if (!child) return; - try { - if (child.kill(killSignal)) { - child.emit("error", new AbortError()); - } - } catch (err) { - child.emit("error", err); - } -} - -class ShimmedStdin extends EventEmitter { - constructor() { - super(); - } - write() { - return false; - } - destroy() {} - end() {} - pipe() {} -} - -class ShimmedStdioOutStream extends EventEmitter { - pipe() {} -} - -//------------------------------------------------------------------------------ -// Section 5. Validators -//------------------------------------------------------------------------------ - -function validateMaxBuffer(maxBuffer) { - if (maxBuffer != null && !(typeof maxBuffer === "number" && maxBuffer >= 0)) { - throw new ERR_OUT_OF_RANGE("options.maxBuffer", "a positive number", maxBuffer); - } -} - -function validateArgumentNullCheck(arg, propName) { - if (typeof arg === "string" && StringPrototypeIncludes.call(arg, "\u0000")) { - throw new ERR_INVALID_ARG_VALUE(propName, arg, "must be a string without null bytes"); - } -} - -function validateArgumentsNullCheck(args, propName) { - for (let i = 0; i < args.length; ++i) { - validateArgumentNullCheck(args[i], `${propName}[${i}]`); - } -} - -function validateTimeout(timeout) { - if (timeout != null && !(NumberIsInteger(timeout) && timeout >= 0)) { - throw new ERR_OUT_OF_RANGE("timeout", "an unsigned integer", timeout); - } -} - -function validateBoolean(value, name) { - if (typeof value !== "boolean") throw new ERR_INVALID_ARG_TYPE(name, "boolean", value); -} - -/** - * @callback validateFunction - * @param {*} value - * @param {string} name - * @returns {asserts value is Function} - */ - -/** @type {validateFunction} */ -function validateFunction(value, name) { - if (typeof value !== "function") throw new ERR_INVALID_ARG_TYPE(name, "Function", value); -} - -/** - * @callback validateAbortSignal - * @param {*} signal - * @param {string} name - */ - -/** @type {validateAbortSignal} */ -const validateAbortSignal = (signal, name) => { - if (signal !== undefined && (signal === null || typeof signal !== "object" || !("aborted" in signal))) { - throw new ERR_INVALID_ARG_TYPE(name, "AbortSignal", signal); - } -}; - -/** - * @callback validateOneOf - * @template T - * @param {T} value - * @param {string} name - * @param {T[]} oneOf - */ - -/** @type {validateOneOf} */ -const validateOneOf = (value, name, oneOf) => { - // const validateOneOf = hideStackFrames((value, name, oneOf) => { - if (!ArrayPrototypeIncludes.call(oneOf, value)) { - const allowed = ArrayPrototypeJoin.call( - ArrayPrototypeMap.call(oneOf, v => (typeof v === "string" ? `'${v}'` : String(v))), - ", ", - ); - const reason = "must be one of: " + allowed; - throw new ERR_INVALID_ARG_VALUE(name, value, reason); - } -}; - -/** - * @callback validateObject - * @param {*} value - * @param {string} name - * @param {{ - * allowArray?: boolean, - * allowFunction?: boolean, - * nullable?: boolean - * }} [options] - */ - -/** @type {validateObject} */ -const validateObject = (value, name, options = null) => { - // const validateObject = hideStackFrames((value, name, options = null) => { - const allowArray = options?.allowArray ?? false; - const allowFunction = options?.allowFunction ?? false; - const nullable = options?.nullable ?? false; - if ( - (!nullable && value === null) || - (!allowArray && ArrayIsArray.call(value)) || - (typeof value !== "object" && (!allowFunction || typeof value !== "function")) - ) { - throw new ERR_INVALID_ARG_TYPE(name, "object", value); - } -}; - -/** - * @callback validateArray - * @param {*} value - * @param {string} name - * @param {number} [minLength] - * @returns {asserts value is any[]} - */ - -/** @type {validateArray} */ -const validateArray = (value, name, minLength = 0) => { - // const validateArray = hideStackFrames((value, name, minLength = 0) => { - if (!ArrayIsArray(value)) { - throw new ERR_INVALID_ARG_TYPE(name, "Array", value); - } - if (value.length < minLength) { - const reason = `must be longer than ${minLength}`; - throw new ERR_INVALID_ARG_VALUE(name, value, reason); - } -}; - -/** - * @callback validateString - * @param {*} value - * @param {string} name - * @returns {asserts value is string} - */ - -/** @type {validateString} */ -function validateString(value, name) { - if (typeof value !== "string") throw new ERR_INVALID_ARG_TYPE(name, "string", value); -} - -function nullCheck(path, propName, throwError = true) { - const pathIsString = typeof path === "string"; - const pathIsUint8Array = isUint8Array(path); - - // We can only perform meaningful checks on strings and Uint8Arrays. - if ( - (!pathIsString && !pathIsUint8Array) || - (pathIsString && !StringPrototypeIncludes.call(path, "\u0000")) || - (pathIsUint8Array && !Uint8ArrayPrototypeIncludes.call(path, 0)) - ) { - return; - } - - const err = new ERR_INVALID_ARG_VALUE(propName, path, "must be a string or Uint8Array without null bytes"); - if (throwError) { - throw err; - } - return err; -} - -function validatePath(path, propName = "path") { - if (typeof path !== "string" && !isUint8Array(path)) { - throw new ERR_INVALID_ARG_TYPE(propName, ["string", "Buffer", "URL"], path); - } - - const err = nullCheck(path, propName, false); - - if (err !== undefined) { - throw err; - } -} - -function getValidatedPath(fileURLOrPath, propName = "path") { - const path = toPathIfFileURL(fileURLOrPath); - validatePath(path, propName); - return path; -} - -function isUint8Array(value) { - return typeof value === "object" && value !== null && value instanceof Uint8Array; -} - -//------------------------------------------------------------------------------ -// Section 6. Random utilities -//------------------------------------------------------------------------------ - -function isURLInstance(fileURLOrPath) { - return fileURLOrPath != null && fileURLOrPath.href && fileURLOrPath.origin; -} - -function toPathIfFileURL(fileURLOrPath) { - if (!isURLInstance(fileURLOrPath)) return fileURLOrPath; - return Bun.fileURLToPath(fileURLOrPath); -} - -//------------------------------------------------------------------------------ -// Section 7. Node errors / error polyfills -//------------------------------------------------------------------------------ -var Error = globalThis.Error; -var TypeError = globalThis.TypeError; -var RangeError = globalThis.RangeError; - -// Node uses a slightly different abort error than standard DOM. See: https://github.com/nodejs/node/blob/main/lib/internal/errors.js -class AbortError extends Error { - code = "ABORT_ERR"; - name = "AbortError"; - constructor(message = "The operation was aborted", options = undefined) { - if (options !== undefined && typeof options !== "object") { - throw new ERR_INVALID_ARG_TYPE("options", "Object", options); - } - super(message, options); - } -} - -function genericNodeError(message, options) { - const err = new Error(message); - err.code = options.code; - err.killed = options.killed; - err.signal = options.signal; - return err; -} - -// const messages = new Map(); - -// Utility function for registering the error codes. Only used here. Exported -// *only* to allow for testing. -// function E(sym, val, def) { -// messages.set(sym, val); -// def = makeNodeErrorWithCode(def, sym); -// errorCodes[sym] = def; -// } - -// function makeNodeErrorWithCode(Base, key) { -// return function NodeError(...args) { -// // const limit = Error.stackTraceLimit; -// // if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = 0; -// const error = new Base(); -// // Reset the limit and setting the name property. -// // if (isErrorStackTraceLimitWritable()) Error.stackTraceLimit = limit; -// const message = getMessage(key, args); -// error.message = message; -// // captureLargerStackTrace(error); -// error.code = key; -// return error; -// }; -// } - -// function getMessage(key, args) { -// const msgFn = messages.get(key); -// if (args.length !== msgFn.length) -// throw new Error( -// `Invalid number of args for error message ${key}. Got ${args.length}, expected ${msgFn.length}.` -// ); -// return msgFn(...args); -// } - -// E( -// "ERR_INVALID_ARG_TYPE", -// (name, expected, actual) => { -// assert(typeof name === "string", "'name' must be a string"); -// if (!ArrayIsArray(expected)) { -// expected = [expected]; -// } - -// let msg = "The "; -// if (StringPrototypeEndsWith(name, " argument")) { -// // For cases like 'first argument' -// msg += `${name} `; -// } else { -// const type = StringPrototypeIncludes(name, ".") ? "property" : "argument"; -// msg += `"${name}" ${type} `; -// } -// msg += "must be "; - -// const types = []; -// const instances = []; -// const other = []; - -// for (const value of expected) { -// assert( -// typeof value === "string", -// "All expected entries have to be of type string" -// ); -// if (ArrayPrototypeIncludes.call(kTypes, value)) { -// ArrayPrototypePush(types, StringPrototypeToLowerCase(value)); -// } else if (RegExpPrototypeExec(classRegExp, value) !== null) { -// ArrayPrototypePush(instances, value); -// } else { -// assert( -// value !== "object", -// 'The value "object" should be written as "Object"' -// ); -// ArrayPrototypePush(other, value); -// } -// } - -// // Special handle `object` in case other instances are allowed to outline -// // the differences between each other. -// if (instances.length > 0) { -// const pos = ArrayPrototypeIndexOf(types, "object"); -// if (pos !== -1) { -// ArrayPrototypeSplice.call(types, pos, 1); -// ArrayPrototypePush.call(instances, "Object"); -// } -// } - -// if (types.length > 0) { -// if (types.length > 2) { -// const last = ArrayPrototypePop(types); -// msg += `one of type ${ArrayPrototypeJoin(types, ", ")}, or ${last}`; -// } else if (types.length === 2) { -// msg += `one of type ${types[0]} or ${types[1]}`; -// } else { -// msg += `of type ${types[0]}`; -// } -// if (instances.length > 0 || other.length > 0) msg += " or "; -// } - -// if (instances.length > 0) { -// if (instances.length > 2) { -// const last = ArrayPrototypePop(instances); -// msg += `an instance of ${ArrayPrototypeJoin( -// instances, -// ", " -// )}, or ${last}`; -// } else { -// msg += `an instance of ${instances[0]}`; -// if (instances.length === 2) { -// msg += ` or ${instances[1]}`; -// } -// } -// if (other.length > 0) msg += " or "; -// } - -// if (other.length > 0) { -// if (other.length > 2) { -// const last = ArrayPrototypePop(other); -// msg += `one of ${ArrayPrototypeJoin.call(other, ", ")}, or ${last}`; -// } else if (other.length === 2) { -// msg += `one of ${other[0]} or ${other[1]}`; -// } else { -// if (StringPrototypeToLowerCase(other[0]) !== other[0]) msg += "an "; -// msg += `${other[0]}`; -// } -// } - -// msg += `. Received ${determineSpecificType(actual)}`; - -// return msg; -// }, -// TypeError -// ); - -function ERR_OUT_OF_RANGE(str, range, input, replaceDefaultBoolean = false) { - // Node implementation: - // assert(range, 'Missing "range" argument'); - // let msg = replaceDefaultBoolean - // ? str - // : `The value of "${str}" is out of range.`; - // let received; - // if (NumberIsInteger(input) && MathAbs(input) > 2 ** 32) { - // received = addNumericalSeparator(String(input)); - // } else if (typeof input === "bigint") { - // received = String(input); - // if (input > 2n ** 32n || input < -(2n ** 32n)) { - // received = addNumericalSeparator(received); - // } - // received += "n"; - // } else { - // received = lazyInternalUtilInspect().inspect(input); - // } - // msg += ` It must be ${range}. Received ${received}`; - // return new RangeError(msg); - return new RangeError(`The value of ${str} is out of range. It must be ${range}. Received ${input}`); -} - -function ERR_CHILD_PROCESS_STDIO_MAXBUFFER(stdio) { - return Error(`${stdio} maxBuffer length exceeded`); -} - -function ERR_UNKNOWN_SIGNAL(name) { - const err = new TypeError(`Unknown signal: ${name}`); - err.code = "ERR_UNKNOWN_SIGNAL"; - return err; -} - -function ERR_INVALID_ARG_TYPE(name, type, value) { - const err = new TypeError(`The "${name}" argument must be of type ${type}. Received ${value}`); - err.code = "ERR_INVALID_ARG_TYPE"; - return err; -} - -function ERR_INVALID_OPT_VALUE(name, value) { - return new TypeError(`The value "${value}" is invalid for option "${name}"`); -} - -function ERR_INVALID_ARG_VALUE(name, value, reason) { - return new Error(`The value "${value}" is invalid for argument '${name}'. Reason: ${reason}`); -} - -class SystemError extends Error { - path; - syscall; - errno; - code; - constructor(message, path, syscall, errno, code) { - super(message); - this.path = path; - this.syscall = syscall; - this.errno = errno; - this.code = code; - } - - get name() { - return "SystemError"; - } -} - -export default { - ChildProcess, - spawn, - execFile, - exec, - fork, - spawnSync, - execFileSync, - execSync, - - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/cluster.exports.js b/src/bun.js/cluster.exports.js deleted file mode 100644 index 201310dd5..000000000 --- a/src/bun.js/cluster.exports.js +++ /dev/null @@ -1,57 +0,0 @@ -// This is a stub -// We leave it in here to provide a better error message -// TODO: implement node cluster -const { EventEmitter } = import.meta.require("node:events"); -class TODO extends Error { - constructor( - message = "node:cluster is not implemented yet in Bun. Track the status: https://github.com/oven-sh/bun/issues/2428", - ) { - super(message); - this.name = "TODO"; - } -} - -export var SCHED_NONE = 0, - SCHED_RR = 1, - Worker, - schedulingPolicy = 2, - isWorker = false, - isPrimary = true, - isMaster = true, - cluster; - -Worker = function Worker() { - throw new TODO("Worker is not implemented yet in Bun"); -}; - -// TODO: is it okay for this to be a class? -class Cluster extends EventEmitter { - static isWorker = false; - static isPrimary = true; - static isMaster = true; - - static Worker = Worker; - - fork() { - throw new TODO(); - } - - disconnect() { - throw new TODO(); - } - - setupMaster() { - throw new TODO(); - } - - settings = {}; - workers = {}; - SCHED_NONE = 0; - SCHED_RR = 1; - schedulingPolicy = 2; - [Symbol.for("CommonJS")] = 0; -} - -cluster = new Cluster(); - -export { cluster as default }; diff --git a/src/bun.js/crypto.exports.js b/src/bun.js/crypto.exports.js deleted file mode 100644 index a7848eb37..000000000 --- a/src/bun.js/crypto.exports.js +++ /dev/null @@ -1,23894 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf, - __hasOwnProp = Object.prototype.hasOwnProperty; - -const MAX_STRING_LENGTH = 536870888; - -var __require = id => import.meta.require(id); -const crypto = globalThis.crypto; -const globalCrypto = crypto; - -var __esm = (fn, res) => - function () { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])((fn = 0))), res; - }; -var __commonJS = (cb, mod) => - function () { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; -var __export = (target, all) => { - for (var name in all) __defProp(target, name, { get: all[name], enumerable: !0 }); - }, - __copyProps = (to, from, except, desc) => { - if ((from && typeof from == "object") || typeof from == "function") - for (let key of __getOwnPropNames(from)) - !__hasOwnProp.call(to, key) && - key !== except && - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - return to; - }, - __reExport = (target, mod, secondTarget) => ( - __copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default") - ), - __toESM = (mod, isNodeMode, target) => ( - (target = mod != null ? __create(__getProtoOf(mod)) : {}), - __copyProps( - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target, - mod, - ) - ); - -// node_modules/safe-buffer/index.js -var require_safe_buffer = __commonJS({ - "node_modules/safe-buffer/index.js"(exports, module) { - var buffer = __require("buffer"), - Buffer2 = buffer.Buffer; - function copyProps(src, dst) { - for (var key in src) dst[key] = src[key]; - } - Buffer2.from && Buffer2.alloc && Buffer2.allocUnsafe && Buffer2.allocUnsafeSlow - ? (module.exports = buffer) - : (copyProps(buffer, exports), (exports.Buffer = SafeBuffer)); - function SafeBuffer(arg, encodingOrOffset, length) { - return Buffer2(arg, encodingOrOffset, length); - } - SafeBuffer.prototype = Object.create(Buffer2.prototype); - copyProps(Buffer2, SafeBuffer); - SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg == "number") throw new TypeError("Argument must not be a number"); - return Buffer2(arg, encodingOrOffset, length); - }; - SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size != "number") throw new TypeError("Argument must be a number"); - var buf = Buffer2(size); - return ( - fill !== void 0 ? (typeof encoding == "string" ? buf.fill(fill, encoding) : buf.fill(fill)) : buf.fill(0), buf - ); - }; - SafeBuffer.allocUnsafe = function (size) { - if (typeof size != "number") throw new TypeError("Argument must be a number"); - return Buffer2(size); - }; - SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size != "number") throw new TypeError("Argument must be a number"); - return buffer.SlowBuffer(size); - }; - }, -}); - -// node_modules/randombytes/browser.js -var require_browser = __commonJS({ - "node_modules/randombytes/browser.js"(exports, module) { - "use strict"; - var MAX_BYTES = 65536, - MAX_UINT32 = 4294967295; - function oldBrowser() { - throw new Error(`Secure random number generation is not supported by this browser. -Use Chrome, Firefox or Internet Explorer 11`); - } - var Buffer2 = require_safe_buffer().Buffer, - crypto2 = globalCrypto; - crypto2 && crypto2.getRandomValues ? (module.exports = randomBytes) : (module.exports = oldBrowser); - function randomBytes(size, cb) { - if (size > MAX_UINT32) throw new RangeError("requested too many random bytes"); - var bytes = Buffer2.allocUnsafe(size); - if (size > 0) - if (size > MAX_BYTES) - for (var generated = 0; generated < size; generated += MAX_BYTES) - crypto2.getRandomValues(bytes.slice(generated, generated + MAX_BYTES)); - else crypto2.getRandomValues(bytes); - return typeof cb == "function" - ? process.nextTick(function () { - cb(null, bytes); - }) - : bytes; - } - }, -}); - -// node_modules/inherits/inherits_browser.js -var require_inherits_browser = __commonJS({ - "node_modules/inherits/inherits_browser.js"(exports, module) { - typeof Object.create == "function" - ? (module.exports = function (ctor, superCtor) { - superCtor && - ((ctor.super_ = superCtor), - (ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: !1, - writable: !0, - configurable: !0, - }, - }))); - }) - : (module.exports = function (ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - (TempCtor.prototype = superCtor.prototype), - (ctor.prototype = new TempCtor()), - (ctor.prototype.constructor = ctor); - } - }); - }, -}); - -// node_modules/hash-base/index.js -var require_hash_base = __commonJS({ - "node_modules/hash-base/index.js"(exports, module) { - "use strict"; - var Buffer2 = require_safe_buffer().Buffer, - Transform = __require("readable-stream").Transform, - inherits = require_inherits_browser(); - function throwIfNotStringOrBuffer(val, prefix) { - if (!Buffer2.isBuffer(val) && typeof val != "string") - throw new TypeError(prefix + " must be a string or a buffer"); - } - function HashBase(blockSize) { - Transform.call(this), - (this._block = Buffer2.allocUnsafe(blockSize)), - (this._blockSize = blockSize), - (this._blockOffset = 0), - (this._length = [0, 0, 0, 0]), - (this._finalized = !1); - } - inherits(HashBase, Transform); - HashBase.prototype._transform = function (chunk, encoding, callback) { - var error = null; - try { - this.update(chunk, encoding); - } catch (err) { - error = err; - } - callback(error); - }; - HashBase.prototype._flush = function (callback) { - var error = null; - try { - this.push(this.digest()); - } catch (err) { - error = err; - } - callback(error); - }; - HashBase.prototype.update = function (data, encoding) { - if ((throwIfNotStringOrBuffer(data, "Data"), this._finalized)) throw new Error("Digest already called"); - Buffer2.isBuffer(data) || (data = Buffer2.from(data, encoding)); - for (var block = this._block, offset = 0; this._blockOffset + data.length - offset >= this._blockSize; ) { - for (var i = this._blockOffset; i < this._blockSize; ) block[i++] = data[offset++]; - this._update(), (this._blockOffset = 0); - } - for (; offset < data.length; ) block[this._blockOffset++] = data[offset++]; - for (var j = 0, carry = data.length * 8; carry > 0; ++j) - (this._length[j] += carry), - (carry = (this._length[j] / 4294967296) | 0), - carry > 0 && (this._length[j] -= 4294967296 * carry); - return this; - }; - HashBase.prototype._update = function () { - throw new Error("_update is not implemented"); - }; - HashBase.prototype.digest = function (encoding) { - if (this._finalized) throw new Error("Digest already called"); - this._finalized = !0; - var digest = this._digest(); - encoding !== void 0 && (digest = digest.toString(encoding)), this._block.fill(0), (this._blockOffset = 0); - for (var i = 0; i < 4; ++i) this._length[i] = 0; - return digest; - }; - HashBase.prototype._digest = function () { - throw new Error("_digest is not implemented"); - }; - module.exports = HashBase; - }, -}); - -// node_modules/md5.js/index.js -var require_md5 = __commonJS({ - "node_modules/md5.js/index.js"(exports, module) { - "use strict"; - var inherits = require_inherits_browser(), - HashBase = require_hash_base(), - Buffer2 = require_safe_buffer().Buffer, - ARRAY16 = new Array(16); - function MD5() { - HashBase.call(this, 64), - (this._a = 1732584193), - (this._b = 4023233417), - (this._c = 2562383102), - (this._d = 271733878); - } - inherits(MD5, HashBase); - MD5.prototype._update = function () { - for (var M = ARRAY16, i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4); - var a = this._a, - b = this._b, - c = this._c, - d = this._d; - (a = fnF(a, b, c, d, M[0], 3614090360, 7)), - (d = fnF(d, a, b, c, M[1], 3905402710, 12)), - (c = fnF(c, d, a, b, M[2], 606105819, 17)), - (b = fnF(b, c, d, a, M[3], 3250441966, 22)), - (a = fnF(a, b, c, d, M[4], 4118548399, 7)), - (d = fnF(d, a, b, c, M[5], 1200080426, 12)), - (c = fnF(c, d, a, b, M[6], 2821735955, 17)), - (b = fnF(b, c, d, a, M[7], 4249261313, 22)), - (a = fnF(a, b, c, d, M[8], 1770035416, 7)), - (d = fnF(d, a, b, c, M[9], 2336552879, 12)), - (c = fnF(c, d, a, b, M[10], 4294925233, 17)), - (b = fnF(b, c, d, a, M[11], 2304563134, 22)), - (a = fnF(a, b, c, d, M[12], 1804603682, 7)), - (d = fnF(d, a, b, c, M[13], 4254626195, 12)), - (c = fnF(c, d, a, b, M[14], 2792965006, 17)), - (b = fnF(b, c, d, a, M[15], 1236535329, 22)), - (a = fnG(a, b, c, d, M[1], 4129170786, 5)), - (d = fnG(d, a, b, c, M[6], 3225465664, 9)), - (c = fnG(c, d, a, b, M[11], 643717713, 14)), - (b = fnG(b, c, d, a, M[0], 3921069994, 20)), - (a = fnG(a, b, c, d, M[5], 3593408605, 5)), - (d = fnG(d, a, b, c, M[10], 38016083, 9)), - (c = fnG(c, d, a, b, M[15], 3634488961, 14)), - (b = fnG(b, c, d, a, M[4], 3889429448, 20)), - (a = fnG(a, b, c, d, M[9], 568446438, 5)), - (d = fnG(d, a, b, c, M[14], 3275163606, 9)), - (c = fnG(c, d, a, b, M[3], 4107603335, 14)), - (b = fnG(b, c, d, a, M[8], 1163531501, 20)), - (a = fnG(a, b, c, d, M[13], 2850285829, 5)), - (d = fnG(d, a, b, c, M[2], 4243563512, 9)), - (c = fnG(c, d, a, b, M[7], 1735328473, 14)), - (b = fnG(b, c, d, a, M[12], 2368359562, 20)), - (a = fnH(a, b, c, d, M[5], 4294588738, 4)), - (d = fnH(d, a, b, c, M[8], 2272392833, 11)), - (c = fnH(c, d, a, b, M[11], 1839030562, 16)), - (b = fnH(b, c, d, a, M[14], 4259657740, 23)), - (a = fnH(a, b, c, d, M[1], 2763975236, 4)), - (d = fnH(d, a, b, c, M[4], 1272893353, 11)), - (c = fnH(c, d, a, b, M[7], 4139469664, 16)), - (b = fnH(b, c, d, a, M[10], 3200236656, 23)), - (a = fnH(a, b, c, d, M[13], 681279174, 4)), - (d = fnH(d, a, b, c, M[0], 3936430074, 11)), - (c = fnH(c, d, a, b, M[3], 3572445317, 16)), - (b = fnH(b, c, d, a, M[6], 76029189, 23)), - (a = fnH(a, b, c, d, M[9], 3654602809, 4)), - (d = fnH(d, a, b, c, M[12], 3873151461, 11)), - (c = fnH(c, d, a, b, M[15], 530742520, 16)), - (b = fnH(b, c, d, a, M[2], 3299628645, 23)), - (a = fnI(a, b, c, d, M[0], 4096336452, 6)), - (d = fnI(d, a, b, c, M[7], 1126891415, 10)), - (c = fnI(c, d, a, b, M[14], 2878612391, 15)), - (b = fnI(b, c, d, a, M[5], 4237533241, 21)), - (a = fnI(a, b, c, d, M[12], 1700485571, 6)), - (d = fnI(d, a, b, c, M[3], 2399980690, 10)), - (c = fnI(c, d, a, b, M[10], 4293915773, 15)), - (b = fnI(b, c, d, a, M[1], 2240044497, 21)), - (a = fnI(a, b, c, d, M[8], 1873313359, 6)), - (d = fnI(d, a, b, c, M[15], 4264355552, 10)), - (c = fnI(c, d, a, b, M[6], 2734768916, 15)), - (b = fnI(b, c, d, a, M[13], 1309151649, 21)), - (a = fnI(a, b, c, d, M[4], 4149444226, 6)), - (d = fnI(d, a, b, c, M[11], 3174756917, 10)), - (c = fnI(c, d, a, b, M[2], 718787259, 15)), - (b = fnI(b, c, d, a, M[9], 3951481745, 21)), - (this._a = (this._a + a) | 0), - (this._b = (this._b + b) | 0), - (this._c = (this._c + c) | 0), - (this._d = (this._d + d) | 0); - }; - MD5.prototype._digest = function () { - (this._block[this._blockOffset++] = 128), - this._blockOffset > 56 && (this._block.fill(0, this._blockOffset, 64), this._update(), (this._blockOffset = 0)), - this._block.fill(0, this._blockOffset, 56), - this._block.writeUInt32LE(this._length[0], 56), - this._block.writeUInt32LE(this._length[1], 60), - this._update(); - var buffer = Buffer2.allocUnsafe(16); - return ( - buffer.writeInt32LE(this._a, 0), - buffer.writeInt32LE(this._b, 4), - buffer.writeInt32LE(this._c, 8), - buffer.writeInt32LE(this._d, 12), - buffer - ); - }; - function rotl(x, n) { - return (x << n) | (x >>> (32 - n)); - } - function fnF(a, b, c, d, m, k, s) { - return (rotl((a + ((b & c) | (~b & d)) + m + k) | 0, s) + b) | 0; - } - function fnG(a, b, c, d, m, k, s) { - return (rotl((a + ((b & d) | (c & ~d)) + m + k) | 0, s) + b) | 0; - } - function fnH(a, b, c, d, m, k, s) { - return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0; - } - function fnI(a, b, c, d, m, k, s) { - return (rotl((a + (c ^ (b | ~d)) + m + k) | 0, s) + b) | 0; - } - module.exports = MD5; - }, -}); - -// node_modules/ripemd160/index.js -var require_ripemd160 = __commonJS({ - "node_modules/ripemd160/index.js"(exports, module) { - "use strict"; - var Buffer2 = __require("buffer").Buffer, - inherits = require_inherits_browser(), - HashBase = require_hash_base(), - ARRAY16 = new Array(16), - zl = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, - 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, - 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13, - ], - zr = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, - 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, - 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11, - ], - sl = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6, - ], - sr = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11, - ], - hl = [0, 1518500249, 1859775393, 2400959708, 2840853838], - hr = [1352829926, 1548603684, 1836072691, 2053994217, 0]; - function RIPEMD160() { - HashBase.call(this, 64), - (this._a = 1732584193), - (this._b = 4023233417), - (this._c = 2562383102), - (this._d = 271733878), - (this._e = 3285377520); - } - inherits(RIPEMD160, HashBase); - RIPEMD160.prototype._update = function () { - for (var words = ARRAY16, j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4); - for ( - var al = this._a | 0, - bl = this._b | 0, - cl = this._c | 0, - dl = this._d | 0, - el = this._e | 0, - ar = this._a | 0, - br = this._b | 0, - cr = this._c | 0, - dr = this._d | 0, - er = this._e | 0, - i = 0; - i < 80; - i += 1 - ) { - var tl, tr; - i < 16 - ? ((tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])), - (tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]))) - : i < 32 - ? ((tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])), - (tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]))) - : i < 48 - ? ((tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])), - (tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]))) - : i < 64 - ? ((tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])), - (tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]))) - : ((tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])), - (tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]))), - (al = el), - (el = dl), - (dl = rotl(cl, 10)), - (cl = bl), - (bl = tl), - (ar = er), - (er = dr), - (dr = rotl(cr, 10)), - (cr = br), - (br = tr); - } - var t = (this._b + cl + dr) | 0; - (this._b = (this._c + dl + er) | 0), - (this._c = (this._d + el + ar) | 0), - (this._d = (this._e + al + br) | 0), - (this._e = (this._a + bl + cr) | 0), - (this._a = t); - }; - RIPEMD160.prototype._digest = function () { - (this._block[this._blockOffset++] = 128), - this._blockOffset > 56 && (this._block.fill(0, this._blockOffset, 64), this._update(), (this._blockOffset = 0)), - this._block.fill(0, this._blockOffset, 56), - this._block.writeUInt32LE(this._length[0], 56), - this._block.writeUInt32LE(this._length[1], 60), - this._update(); - var buffer = Buffer2.alloc ? Buffer2.alloc(20) : new Buffer2(20); - return ( - buffer.writeInt32LE(this._a, 0), - buffer.writeInt32LE(this._b, 4), - buffer.writeInt32LE(this._c, 8), - buffer.writeInt32LE(this._d, 12), - buffer.writeInt32LE(this._e, 16), - buffer - ); - }; - function rotl(x, n) { - return (x << n) | (x >>> (32 - n)); - } - function fn1(a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0; - } - function fn2(a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & c) | (~b & d)) + m + k) | 0, s) + e) | 0; - } - function fn3(a, b, c, d, e, m, k, s) { - return (rotl((a + ((b | ~c) ^ d) + m + k) | 0, s) + e) | 0; - } - function fn4(a, b, c, d, e, m, k, s) { - return (rotl((a + ((b & d) | (c & ~d)) + m + k) | 0, s) + e) | 0; - } - function fn5(a, b, c, d, e, m, k, s) { - return (rotl((a + (b ^ (c | ~d)) + m + k) | 0, s) + e) | 0; - } - module.exports = RIPEMD160; - }, -}); - -// node_modules/sha.js/hash.js -var require_hash = __commonJS({ - "node_modules/sha.js/hash.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer; - function Hash(blockSize, finalSize) { - (this._block = Buffer2.alloc(blockSize)), - (this._finalSize = finalSize), - (this._blockSize = blockSize), - (this._len = 0); - } - Hash.prototype.update = function (data, enc) { - typeof data == "string" && ((enc = enc || "utf8"), (data = Buffer2.from(data, enc))); - for ( - var block = this._block, blockSize = this._blockSize, length = data.length, accum = this._len, offset = 0; - offset < length; - - ) { - for ( - var assigned = accum % blockSize, remainder = Math.min(length - offset, blockSize - assigned), i = 0; - i < remainder; - i++ - ) - block[assigned + i] = data[offset + i]; - (accum += remainder), (offset += remainder), accum % blockSize === 0 && this._update(block); - } - return (this._len += length), this; - }; - Hash.prototype.digest = function (enc) { - var rem = this._len % this._blockSize; - (this._block[rem] = 128), - this._block.fill(0, rem + 1), - rem >= this._finalSize && (this._update(this._block), this._block.fill(0)); - var bits = this._len * 8; - if (bits <= 4294967295) this._block.writeUInt32BE(bits, this._blockSize - 4); - else { - var lowBits = (bits & 4294967295) >>> 0, - highBits = (bits - lowBits) / 4294967296; - this._block.writeUInt32BE(highBits, this._blockSize - 8), - this._block.writeUInt32BE(lowBits, this._blockSize - 4); - } - this._update(this._block); - var hash = this._hash(); - return enc ? hash.toString(enc) : hash; - }; - Hash.prototype._update = function () { - throw new Error("_update must be implemented by subclass"); - }; - module.exports = Hash; - }, -}); - -// node_modules/sha.js/sha.js -var require_sha = __commonJS({ - "node_modules/sha.js/sha.js"(exports, module) { - var inherits = require_inherits_browser(), - Hash = require_hash(), - Buffer2 = require_safe_buffer().Buffer, - K = [1518500249, 1859775393, -1894007588, -899497514], - W = new Array(80); - function Sha() { - this.init(), (this._w = W), Hash.call(this, 64, 56); - } - inherits(Sha, Hash); - Sha.prototype.init = function () { - return ( - (this._a = 1732584193), - (this._b = 4023233417), - (this._c = 2562383102), - (this._d = 271733878), - (this._e = 3285377520), - this - ); - }; - function rotl5(num) { - return (num << 5) | (num >>> 27); - } - function rotl30(num) { - return (num << 30) | (num >>> 2); - } - function ft(s, b, c, d) { - return s === 0 ? (b & c) | (~b & d) : s === 2 ? (b & c) | (b & d) | (c & d) : b ^ c ^ d; - } - Sha.prototype._update = function (M) { - for ( - var W2 = this._w, a = this._a | 0, b = this._b | 0, c = this._c | 0, d = this._d | 0, e = this._e | 0, i = 0; - i < 16; - ++i - ) - W2[i] = M.readInt32BE(i * 4); - for (; i < 80; ++i) W2[i] = W2[i - 3] ^ W2[i - 8] ^ W2[i - 14] ^ W2[i - 16]; - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20), - t = (rotl5(a) + ft(s, b, c, d) + e + W2[j] + K[s]) | 0; - (e = d), (d = c), (c = rotl30(b)), (b = a), (a = t); - } - (this._a = (a + this._a) | 0), - (this._b = (b + this._b) | 0), - (this._c = (c + this._c) | 0), - (this._d = (d + this._d) | 0), - (this._e = (e + this._e) | 0); - }; - Sha.prototype._hash = function () { - var H = Buffer2.allocUnsafe(20); - return ( - H.writeInt32BE(this._a | 0, 0), - H.writeInt32BE(this._b | 0, 4), - H.writeInt32BE(this._c | 0, 8), - H.writeInt32BE(this._d | 0, 12), - H.writeInt32BE(this._e | 0, 16), - H - ); - }; - module.exports = Sha; - }, -}); - -// node_modules/sha.js/sha1.js -var require_sha1 = __commonJS({ - "node_modules/sha.js/sha1.js"(exports, module) { - var inherits = require_inherits_browser(), - Hash = require_hash(), - Buffer2 = require_safe_buffer().Buffer, - K = [1518500249, 1859775393, -1894007588, -899497514], - W = new Array(80); - function Sha1() { - this.init(), (this._w = W), Hash.call(this, 64, 56); - } - inherits(Sha1, Hash); - Sha1.prototype.init = function () { - return ( - (this._a = 1732584193), - (this._b = 4023233417), - (this._c = 2562383102), - (this._d = 271733878), - (this._e = 3285377520), - this - ); - }; - function rotl1(num) { - return (num << 1) | (num >>> 31); - } - function rotl5(num) { - return (num << 5) | (num >>> 27); - } - function rotl30(num) { - return (num << 30) | (num >>> 2); - } - function ft(s, b, c, d) { - return s === 0 ? (b & c) | (~b & d) : s === 2 ? (b & c) | (b & d) | (c & d) : b ^ c ^ d; - } - Sha1.prototype._update = function (M) { - for ( - var W2 = this._w, a = this._a | 0, b = this._b | 0, c = this._c | 0, d = this._d | 0, e = this._e | 0, i = 0; - i < 16; - ++i - ) - W2[i] = M.readInt32BE(i * 4); - for (; i < 80; ++i) W2[i] = rotl1(W2[i - 3] ^ W2[i - 8] ^ W2[i - 14] ^ W2[i - 16]); - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20), - t = (rotl5(a) + ft(s, b, c, d) + e + W2[j] + K[s]) | 0; - (e = d), (d = c), (c = rotl30(b)), (b = a), (a = t); - } - (this._a = (a + this._a) | 0), - (this._b = (b + this._b) | 0), - (this._c = (c + this._c) | 0), - (this._d = (d + this._d) | 0), - (this._e = (e + this._e) | 0); - }; - Sha1.prototype._hash = function () { - var H = Buffer2.allocUnsafe(20); - return ( - H.writeInt32BE(this._a | 0, 0), - H.writeInt32BE(this._b | 0, 4), - H.writeInt32BE(this._c | 0, 8), - H.writeInt32BE(this._d | 0, 12), - H.writeInt32BE(this._e | 0, 16), - H - ); - }; - module.exports = Sha1; - }, -}); - -// node_modules/sha.js/sha256.js -var require_sha256 = __commonJS({ - "node_modules/sha.js/sha256.js"(exports, module) { - var inherits = require_inherits_browser(), - Hash = require_hash(), - Buffer2 = require_safe_buffer().Buffer, - K = [ - 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, - 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, - 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, - 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, - 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, - 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, - 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, - 3329325298, - ], - W = new Array(64); - function Sha256() { - this.init(), (this._w = W), Hash.call(this, 64, 56); - } - inherits(Sha256, Hash); - Sha256.prototype.init = function () { - return ( - (this._a = 1779033703), - (this._b = 3144134277), - (this._c = 1013904242), - (this._d = 2773480762), - (this._e = 1359893119), - (this._f = 2600822924), - (this._g = 528734635), - (this._h = 1541459225), - this - ); - }; - function ch(x, y, z) { - return z ^ (x & (y ^ z)); - } - function maj(x, y, z) { - return (x & y) | (z & (x | y)); - } - function sigma0(x) { - return ((x >>> 2) | (x << 30)) ^ ((x >>> 13) | (x << 19)) ^ ((x >>> 22) | (x << 10)); - } - function sigma1(x) { - return ((x >>> 6) | (x << 26)) ^ ((x >>> 11) | (x << 21)) ^ ((x >>> 25) | (x << 7)); - } - function gamma0(x) { - return ((x >>> 7) | (x << 25)) ^ ((x >>> 18) | (x << 14)) ^ (x >>> 3); - } - function gamma1(x) { - return ((x >>> 17) | (x << 15)) ^ ((x >>> 19) | (x << 13)) ^ (x >>> 10); - } - Sha256.prototype._update = function (M) { - for ( - var W2 = this._w, - a = this._a | 0, - b = this._b | 0, - c = this._c | 0, - d = this._d | 0, - e = this._e | 0, - f = this._f | 0, - g = this._g | 0, - h = this._h | 0, - i = 0; - i < 16; - ++i - ) - W2[i] = M.readInt32BE(i * 4); - for (; i < 64; ++i) W2[i] = (gamma1(W2[i - 2]) + W2[i - 7] + gamma0(W2[i - 15]) + W2[i - 16]) | 0; - for (var j = 0; j < 64; ++j) { - var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W2[j]) | 0, - T2 = (sigma0(a) + maj(a, b, c)) | 0; - (h = g), (g = f), (f = e), (e = (d + T1) | 0), (d = c), (c = b), (b = a), (a = (T1 + T2) | 0); - } - (this._a = (a + this._a) | 0), - (this._b = (b + this._b) | 0), - (this._c = (c + this._c) | 0), - (this._d = (d + this._d) | 0), - (this._e = (e + this._e) | 0), - (this._f = (f + this._f) | 0), - (this._g = (g + this._g) | 0), - (this._h = (h + this._h) | 0); - }; - Sha256.prototype._hash = function () { - var H = Buffer2.allocUnsafe(32); - return ( - H.writeInt32BE(this._a, 0), - H.writeInt32BE(this._b, 4), - H.writeInt32BE(this._c, 8), - H.writeInt32BE(this._d, 12), - H.writeInt32BE(this._e, 16), - H.writeInt32BE(this._f, 20), - H.writeInt32BE(this._g, 24), - H.writeInt32BE(this._h, 28), - H - ); - }; - module.exports = Sha256; - }, -}); - -// node_modules/sha.js/sha224.js -var require_sha224 = __commonJS({ - "node_modules/sha.js/sha224.js"(exports, module) { - var inherits = require_inherits_browser(), - Sha256 = require_sha256(), - Hash = require_hash(), - Buffer2 = require_safe_buffer().Buffer, - W = new Array(64); - function Sha224() { - this.init(), (this._w = W), Hash.call(this, 64, 56); - } - inherits(Sha224, Sha256); - Sha224.prototype.init = function () { - return ( - (this._a = 3238371032), - (this._b = 914150663), - (this._c = 812702999), - (this._d = 4144912697), - (this._e = 4290775857), - (this._f = 1750603025), - (this._g = 1694076839), - (this._h = 3204075428), - this - ); - }; - Sha224.prototype._hash = function () { - var H = Buffer2.allocUnsafe(28); - return ( - H.writeInt32BE(this._a, 0), - H.writeInt32BE(this._b, 4), - H.writeInt32BE(this._c, 8), - H.writeInt32BE(this._d, 12), - H.writeInt32BE(this._e, 16), - H.writeInt32BE(this._f, 20), - H.writeInt32BE(this._g, 24), - H - ); - }; - module.exports = Sha224; - }, -}); - -// node_modules/sha.js/sha512.js -var require_sha512 = __commonJS({ - "node_modules/sha.js/sha512.js"(exports, module) { - var inherits = require_inherits_browser(), - Hash = require_hash(), - Buffer2 = require_safe_buffer().Buffer, - K = [ - 1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, - 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, - 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, - 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, - 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, - 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, - 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, - 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, - 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, - 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, - 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, - 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, - 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, - 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, - 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, - 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, - 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, - 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591, - ], - W = new Array(160); - function Sha512() { - this.init(), (this._w = W), Hash.call(this, 128, 112); - } - inherits(Sha512, Hash); - Sha512.prototype.init = function () { - return ( - (this._ah = 1779033703), - (this._bh = 3144134277), - (this._ch = 1013904242), - (this._dh = 2773480762), - (this._eh = 1359893119), - (this._fh = 2600822924), - (this._gh = 528734635), - (this._hh = 1541459225), - (this._al = 4089235720), - (this._bl = 2227873595), - (this._cl = 4271175723), - (this._dl = 1595750129), - (this._el = 2917565137), - (this._fl = 725511199), - (this._gl = 4215389547), - (this._hl = 327033209), - this - ); - }; - function Ch(x, y, z) { - return z ^ (x & (y ^ z)); - } - function maj(x, y, z) { - return (x & y) | (z & (x | y)); - } - function sigma0(x, xl) { - return ((x >>> 28) | (xl << 4)) ^ ((xl >>> 2) | (x << 30)) ^ ((xl >>> 7) | (x << 25)); - } - function sigma1(x, xl) { - return ((x >>> 14) | (xl << 18)) ^ ((x >>> 18) | (xl << 14)) ^ ((xl >>> 9) | (x << 23)); - } - function Gamma0(x, xl) { - return ((x >>> 1) | (xl << 31)) ^ ((x >>> 8) | (xl << 24)) ^ (x >>> 7); - } - function Gamma0l(x, xl) { - return ((x >>> 1) | (xl << 31)) ^ ((x >>> 8) | (xl << 24)) ^ ((x >>> 7) | (xl << 25)); - } - function Gamma1(x, xl) { - return ((x >>> 19) | (xl << 13)) ^ ((xl >>> 29) | (x << 3)) ^ (x >>> 6); - } - function Gamma1l(x, xl) { - return ((x >>> 19) | (xl << 13)) ^ ((xl >>> 29) | (x << 3)) ^ ((x >>> 6) | (xl << 26)); - } - function getCarry(a, b) { - return a >>> 0 < b >>> 0 ? 1 : 0; - } - Sha512.prototype._update = function (M) { - for ( - var W2 = this._w, - ah = this._ah | 0, - bh = this._bh | 0, - ch = this._ch | 0, - dh = this._dh | 0, - eh = this._eh | 0, - fh = this._fh | 0, - gh = this._gh | 0, - hh = this._hh | 0, - al = this._al | 0, - bl = this._bl | 0, - cl = this._cl | 0, - dl = this._dl | 0, - el = this._el | 0, - fl = this._fl | 0, - gl = this._gl | 0, - hl = this._hl | 0, - i = 0; - i < 32; - i += 2 - ) - (W2[i] = M.readInt32BE(i * 4)), (W2[i + 1] = M.readInt32BE(i * 4 + 4)); - for (; i < 160; i += 2) { - var xh = W2[i - 30], - xl = W2[i - 15 * 2 + 1], - gamma0 = Gamma0(xh, xl), - gamma0l = Gamma0l(xl, xh); - (xh = W2[i - 2 * 2]), (xl = W2[i - 2 * 2 + 1]); - var gamma1 = Gamma1(xh, xl), - gamma1l = Gamma1l(xl, xh), - Wi7h = W2[i - 7 * 2], - Wi7l = W2[i - 7 * 2 + 1], - Wi16h = W2[i - 16 * 2], - Wi16l = W2[i - 16 * 2 + 1], - Wil = (gamma0l + Wi7l) | 0, - Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0; - (Wil = (Wil + gamma1l) | 0), - (Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0), - (Wil = (Wil + Wi16l) | 0), - (Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0), - (W2[i] = Wih), - (W2[i + 1] = Wil); - } - for (var j = 0; j < 160; j += 2) { - (Wih = W2[j]), (Wil = W2[j + 1]); - var majh = maj(ah, bh, ch), - majl = maj(al, bl, cl), - sigma0h = sigma0(ah, al), - sigma0l = sigma0(al, ah), - sigma1h = sigma1(eh, el), - sigma1l = sigma1(el, eh), - Kih = K[j], - Kil = K[j + 1], - chh = Ch(eh, fh, gh), - chl = Ch(el, fl, gl), - t1l = (hl + sigma1l) | 0, - t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0; - (t1l = (t1l + chl) | 0), - (t1h = (t1h + chh + getCarry(t1l, chl)) | 0), - (t1l = (t1l + Kil) | 0), - (t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0), - (t1l = (t1l + Wil) | 0), - (t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0); - var t2l = (sigma0l + majl) | 0, - t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0; - (hh = gh), - (hl = gl), - (gh = fh), - (gl = fl), - (fh = eh), - (fl = el), - (el = (dl + t1l) | 0), - (eh = (dh + t1h + getCarry(el, dl)) | 0), - (dh = ch), - (dl = cl), - (ch = bh), - (cl = bl), - (bh = ah), - (bl = al), - (al = (t1l + t2l) | 0), - (ah = (t1h + t2h + getCarry(al, t1l)) | 0); - } - (this._al = (this._al + al) | 0), - (this._bl = (this._bl + bl) | 0), - (this._cl = (this._cl + cl) | 0), - (this._dl = (this._dl + dl) | 0), - (this._el = (this._el + el) | 0), - (this._fl = (this._fl + fl) | 0), - (this._gl = (this._gl + gl) | 0), - (this._hl = (this._hl + hl) | 0), - (this._ah = (this._ah + ah + getCarry(this._al, al)) | 0), - (this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0), - (this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0), - (this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0), - (this._eh = (this._eh + eh + getCarry(this._el, el)) | 0), - (this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0), - (this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0), - (this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0); - }; - Sha512.prototype._hash = function () { - var H = Buffer2.allocUnsafe(64); - function writeInt64BE(h, l, offset) { - H.writeInt32BE(h, offset), H.writeInt32BE(l, offset + 4); - } - return ( - writeInt64BE(this._ah, this._al, 0), - writeInt64BE(this._bh, this._bl, 8), - writeInt64BE(this._ch, this._cl, 16), - writeInt64BE(this._dh, this._dl, 24), - writeInt64BE(this._eh, this._el, 32), - writeInt64BE(this._fh, this._fl, 40), - writeInt64BE(this._gh, this._gl, 48), - writeInt64BE(this._hh, this._hl, 56), - H - ); - }; - module.exports = Sha512; - }, -}); - -// node_modules/sha.js/sha384.js -var require_sha384 = __commonJS({ - "node_modules/sha.js/sha384.js"(exports, module) { - var inherits = require_inherits_browser(), - SHA512 = require_sha512(), - Hash = require_hash(), - Buffer2 = require_safe_buffer().Buffer, - W = new Array(160); - function Sha384() { - this.init(), (this._w = W), Hash.call(this, 128, 112); - } - inherits(Sha384, SHA512); - Sha384.prototype.init = function () { - return ( - (this._ah = 3418070365), - (this._bh = 1654270250), - (this._ch = 2438529370), - (this._dh = 355462360), - (this._eh = 1731405415), - (this._fh = 2394180231), - (this._gh = 3675008525), - (this._hh = 1203062813), - (this._al = 3238371032), - (this._bl = 914150663), - (this._cl = 812702999), - (this._dl = 4144912697), - (this._el = 4290775857), - (this._fl = 1750603025), - (this._gl = 1694076839), - (this._hl = 3204075428), - this - ); - }; - Sha384.prototype._hash = function () { - var H = Buffer2.allocUnsafe(48); - function writeInt64BE(h, l, offset) { - H.writeInt32BE(h, offset), H.writeInt32BE(l, offset + 4); - } - return ( - writeInt64BE(this._ah, this._al, 0), - writeInt64BE(this._bh, this._bl, 8), - writeInt64BE(this._ch, this._cl, 16), - writeInt64BE(this._dh, this._dl, 24), - writeInt64BE(this._eh, this._el, 32), - writeInt64BE(this._fh, this._fl, 40), - H - ); - }; - module.exports = Sha384; - }, -}); - -// node_modules/sha.js/index.js -var require_sha2 = __commonJS({ - "node_modules/sha.js/index.js"(exports, module) { - var exports = (module.exports = function (algorithm) { - algorithm = algorithm.toLowerCase(); - var Algorithm = exports[algorithm]; - if (!Algorithm) throw new Error(algorithm + " is not supported (we accept pull requests)"); - return new Algorithm(); - }); - exports.sha = require_sha(); - exports.sha1 = require_sha1(); - exports.sha224 = require_sha224(); - exports.sha256 = require_sha256(); - exports.sha384 = require_sha384(); - exports.sha512 = require_sha512(); - }, -}); - -// stream.js -var stream_exports = import.meta.require("node:stream"); - -// node_modules/cipher-base/index.js -var require_cipher_base = __commonJS({ - "node_modules/cipher-base/index.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer, - Transform = stream_exports.Transform, - StringDecoder = __require("string_decoder").StringDecoder, - inherits = require_inherits_browser(); - function CipherBase(hashMode) { - Transform.call(this), - (this.hashMode = typeof hashMode == "string"), - this.hashMode ? (this[hashMode] = this._finalOrDigest) : (this.final = this._finalOrDigest), - this._final && ((this.__final = this._final), (this._final = null)), - (this._decoder = null), - (this._encoding = null); - } - inherits(CipherBase, Transform); - CipherBase.prototype.update = function (data, inputEnc, outputEnc) { - typeof data == "string" && (data = Buffer2.from(data, inputEnc)); - var outData = this._update(data); - return this.hashMode ? this : (outputEnc && (outData = this._toString(outData, outputEnc)), outData); - }; - CipherBase.prototype.setAutoPadding = function () {}; - CipherBase.prototype.getAuthTag = function () { - throw new Error("trying to get auth tag in unsupported state"); - }; - CipherBase.prototype.setAuthTag = function () { - throw new Error("trying to set auth tag in unsupported state"); - }; - CipherBase.prototype.setAAD = function () { - throw new Error("trying to set aad in unsupported state"); - }; - CipherBase.prototype._transform = function (data, _, next) { - var err; - try { - this.hashMode ? this._update(data) : this.push(this._update(data)); - } catch (e) { - err = e; - } finally { - next(err); - } - }; - CipherBase.prototype._flush = function (done) { - var err; - try { - this.push(this.__final()); - } catch (e) { - err = e; - } - done(err); - }; - CipherBase.prototype._finalOrDigest = function (outputEnc) { - var outData = this.__final() || Buffer2.alloc(0); - return outputEnc && (outData = this._toString(outData, outputEnc, !0)), outData; - }; - CipherBase.prototype._toString = function (value, enc, fin) { - if ((this._decoder || ((this._decoder = new StringDecoder(enc)), (this._encoding = enc)), this._encoding !== enc)) - throw new Error("can't switch encodings"); - var out = this._decoder.write(value); - return fin && (out += this._decoder.end()), out; - }; - module.exports = CipherBase; - }, -}); - -// node_modules/create-hash/browser.js -var require_browser2 = __commonJS({ - "node_modules/create-hash/browser.js"(exports, module) { - ("use strict"); - const { Transform } = stream_exports; - - // does not become a node stream unless you create it into one - const LazyHash = function Hash(algorithm, options) { - this._options = options; - this._hasher = new CryptoHasher(algorithm, options); - this._finalized = false; - }; - LazyHash.prototype = Object.create(Transform.prototype); - LazyHash.prototype.update = function update(data, encoding) { - this._checkFinalized(); - this._hasher.update(data, encoding); - return this; - }; - LazyHash.prototype.digest = function update(data, encoding) { - this._checkFinalized(); - this._finalized = true; - return this._hasher.digest(data, encoding); - }; - LazyHash.prototype._checkFinalized = function _checkFinalized() { - if (this._finalized) { - var err = new Error("Digest already called"); - err.code = "ERR_CRYPTO_HASH_FINALIZED"; - throw err; - } - }; - LazyHash.prototype.copy = function copy() { - const copy = Object.create(LazyHash.prototype); - copy._options = this._options; - copy._hasher = this._hasher.copy(); - copy._finalized = this._finalized; - return copy; - }; - - const lazyHashFullInitProto = { - __proto__: Transform.prototype, - ...LazyHash.prototype, - _transform(data, encoding, callback) { - this.update(data, encoding); - callback && callback(); - }, - _flush(callback) { - this.push(this.digest()); - callback(); - }, - }; - - const triggerMethods = [ - "_events", - "_eventsCount", - "_final", - "_maxListeners", - "_maxListeners", - "_read", - "_undestroy", - "_writableState", - "_write", - "_writev", - "addListener", - "asIndexedPairs", - "closed", - "compose", - "constructor", - "cork", - "destroy", - "destroyed", - "drop", - "emit", - "end", - "errored", - "eventNames", - "every", - "filter", - "find", - "flatMap", - "forEach", - "getMaxListeners", - "hasOwnProperty", - "isPaused", - "isPrototypeOf", - "iterator", - "listenerCount", - "listeners", - "map", - "off", - "on", - "once", - "pause", - "pipe", - "prependListener", - "prependOnceListener", - "propertyIsEnumerable", - "push", - "rawListeners", - "read", - "readable", - "readableAborted", - "readableBuffer", - "readableDidRead", - "readableEncoding", - "readableEnded", - "readableFlowing", - "readableHighWaterMark", - "readableLength", - "readableObjectMode", - "reduce", - "removeAllListeners", - "removeListener", - "resume", - "setDefaultEncoding", - "setEncoding", - "setMaxListeners", - "some", - "take", - "toArray", - "toLocaleString", - "toString", - "uncork", - "unpipe", - "unshift", - "valueOf", - "wrap", - "writable", - "writableBuffer", - "writableCorked", - "writableEnded", - "writableFinished", - "writableHighWaterMark", - "writableLength", - "writableNeedDrain", - "writableObjectMode", - "write", - ]; - for (const method of triggerMethods) { - Object.defineProperty(LazyHash.prototype, method, { - get() { - Object.setPrototypeOf(this, lazyHashFullInitProto); - Transform.call(this, this._options); - return this[method]; - }, - enumerable: false, - configurable: true, - }); - } - - module.exports = function createHash(algorithm) { - return new LazyHash(algorithm); - }; - - module.exports.createHash = module.exports; - module.exports.Hash = LazyHash; - }, -}); - -// node_modules/create-hmac/legacy.js -var require_legacy = __commonJS({ - "node_modules/create-hmac/legacy.js"(exports, module) { - "use strict"; - var inherits = require_inherits_browser(), - Buffer2 = require_safe_buffer().Buffer, - Base = require_cipher_base(), - ZEROS = Buffer2.alloc(128), - blocksize = 64; - function Hmac(alg, key) { - Base.call(this, "digest"), - typeof key == "string" && (key = Buffer2.from(key)), - (this._alg = alg), - (this._key = key), - key.length > blocksize - ? (key = alg(key)) - : key.length < blocksize && (key = Buffer2.concat([key, ZEROS], blocksize)); - for ( - var ipad = (this._ipad = Buffer2.allocUnsafe(blocksize)), - opad = (this._opad = Buffer2.allocUnsafe(blocksize)), - i = 0; - i < blocksize; - i++ - ) - (ipad[i] = key[i] ^ 54), (opad[i] = key[i] ^ 92); - this._hash = [ipad]; - } - inherits(Hmac, Base); - Hmac.prototype._update = function (data) { - this._hash.push(data); - }; - Hmac.prototype._final = function () { - var h = this._alg(Buffer2.concat(this._hash)); - return this._alg(Buffer2.concat([this._opad, h])); - }; - module.exports = Hmac; - }, -}); - -// node_modules/create-hash/md5.js -var require_md52 = __commonJS({ - "node_modules/create-hash/md5.js"(exports, module) { - var MD5 = require_md5(); - module.exports = function (buffer) { - return new MD5().update(buffer).digest(); - }; - }, -}); - -// node_modules/create-hmac/browser.js -var require_browser3 = __commonJS({ - "node_modules/create-hmac/browser.js"(exports, module) { - "use strict"; - var inherits = require_inherits_browser(), - Legacy = require_legacy(), - Base = require_cipher_base(), - Buffer2 = require_safe_buffer().Buffer, - md5 = require_md52(), - RIPEMD160 = require_ripemd160(), - sha = require_sha2(), - ZEROS = Buffer2.alloc(128); - function Hmac(alg, key) { - Base.call(this, "digest"), typeof key == "string" && (key = Buffer2.from(key)); - var blocksize = alg === "sha512" || alg === "sha384" ? 128 : 64; - if (((this._alg = alg), (this._key = key), key.length > blocksize)) { - var hash = alg === "rmd160" ? new RIPEMD160() : sha(alg); - key = hash.update(key).digest(); - } else key.length < blocksize && (key = Buffer2.concat([key, ZEROS], blocksize)); - for ( - var ipad = (this._ipad = Buffer2.allocUnsafe(blocksize)), - opad = (this._opad = Buffer2.allocUnsafe(blocksize)), - i = 0; - i < blocksize; - i++ - ) - (ipad[i] = key[i] ^ 54), (opad[i] = key[i] ^ 92); - (this._hash = alg === "rmd160" ? new RIPEMD160() : sha(alg)), this._hash.update(ipad); - } - inherits(Hmac, Base); - Hmac.prototype._update = function (data) { - this._hash.update(data); - }; - Hmac.prototype._final = function () { - var h = this._hash.digest(), - hash = this._alg === "rmd160" ? new RIPEMD160() : sha(this._alg); - return hash.update(this._opad).update(h).digest(); - }; - module.exports = function (alg, key) { - return ( - (alg = alg.toLowerCase()), - alg === "rmd160" || alg === "ripemd160" - ? new Hmac("rmd160", key) - : alg === "md5" - ? new Legacy(md5, key) - : new Hmac(alg, key) - ); - }; - }, -}); - -// node_modules/browserify-sign/browser/algorithms.json -var require_algorithms = __commonJS({ - "node_modules/browserify-sign/browser/algorithms.json"(exports, module) { - module.exports = { - sha224WithRSAEncryption: { - sign: "rsa", - hash: "sha224", - id: "302d300d06096086480165030402040500041c", - }, - "RSA-SHA224": { - sign: "ecdsa/rsa", - hash: "sha224", - id: "302d300d06096086480165030402040500041c", - }, - sha256WithRSAEncryption: { - sign: "rsa", - hash: "sha256", - id: "3031300d060960864801650304020105000420", - }, - "RSA-SHA256": { - sign: "ecdsa/rsa", - hash: "sha256", - id: "3031300d060960864801650304020105000420", - }, - sha384WithRSAEncryption: { - sign: "rsa", - hash: "sha384", - id: "3041300d060960864801650304020205000430", - }, - "RSA-SHA384": { - sign: "ecdsa/rsa", - hash: "sha384", - id: "3041300d060960864801650304020205000430", - }, - sha512WithRSAEncryption: { - sign: "rsa", - hash: "sha512", - id: "3051300d060960864801650304020305000440", - }, - "RSA-SHA512": { - sign: "ecdsa/rsa", - hash: "sha512", - id: "3051300d060960864801650304020305000440", - }, - "RSA-SHA1": { - sign: "rsa", - hash: "sha1", - id: "3021300906052b0e03021a05000414", - }, - "ecdsa-with-SHA1": { - sign: "ecdsa", - hash: "sha1", - id: "", - }, - sha256: { - sign: "ecdsa", - hash: "sha256", - id: "", - }, - sha224: { - sign: "ecdsa", - hash: "sha224", - id: "", - }, - sha384: { - sign: "ecdsa", - hash: "sha384", - id: "", - }, - sha512: { - sign: "ecdsa", - hash: "sha512", - id: "", - }, - "DSA-SHA": { - sign: "dsa", - hash: "sha1", - id: "", - }, - "DSA-SHA1": { - sign: "dsa", - hash: "sha1", - id: "", - }, - DSA: { - sign: "dsa", - hash: "sha1", - id: "", - }, - "DSA-WITH-SHA224": { - sign: "dsa", - hash: "sha224", - id: "", - }, - "DSA-SHA224": { - sign: "dsa", - hash: "sha224", - id: "", - }, - "DSA-WITH-SHA256": { - sign: "dsa", - hash: "sha256", - id: "", - }, - "DSA-SHA256": { - sign: "dsa", - hash: "sha256", - id: "", - }, - "DSA-WITH-SHA384": { - sign: "dsa", - hash: "sha384", - id: "", - }, - "DSA-SHA384": { - sign: "dsa", - hash: "sha384", - id: "", - }, - "DSA-WITH-SHA512": { - sign: "dsa", - hash: "sha512", - id: "", - }, - "DSA-SHA512": { - sign: "dsa", - hash: "sha512", - id: "", - }, - "DSA-RIPEMD160": { - sign: "dsa", - hash: "rmd160", - id: "", - }, - ripemd160WithRSA: { - sign: "rsa", - hash: "rmd160", - id: "3021300906052b2403020105000414", - }, - "RSA-RIPEMD160": { - sign: "rsa", - hash: "rmd160", - id: "3021300906052b2403020105000414", - }, - md5WithRSAEncryption: { - sign: "rsa", - hash: "md5", - id: "3020300c06082a864886f70d020505000410", - }, - "RSA-MD5": { - sign: "rsa", - hash: "md5", - id: "3020300c06082a864886f70d020505000410", - }, - }; - }, -}); - -// node_modules/browserify-sign/algos.js -var require_algos = __commonJS({ - "node_modules/browserify-sign/algos.js"(exports, module) { - module.exports = require_algorithms(); - }, -}); - -// node_modules/pbkdf2/lib/precondition.js -var require_precondition = __commonJS({ - "node_modules/pbkdf2/lib/precondition.js"(exports, module) { - var MAX_ALLOC = Math.pow(2, 30) - 1; - module.exports = function (iterations, keylen) { - if (typeof iterations != "number") throw new TypeError("Iterations not a number"); - if (iterations < 0) throw new TypeError("Bad iterations"); - if (typeof keylen != "number") throw new TypeError("Key length not a number"); - if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) throw new TypeError("Bad key length"); - }; - }, -}); - -// node_modules/pbkdf2/lib/default-encoding.js -var require_default_encoding = __commonJS({ - "node_modules/pbkdf2/lib/default-encoding.js"(exports, module) { - var defaultEncoding; - global.process && global.process.browser - ? (defaultEncoding = "utf-8") - : global.process && global.process.version - ? ((pVersionMajor = parseInt(process.version.split(".")[0].slice(1), 10)), - (defaultEncoding = pVersionMajor >= 6 ? "utf-8" : "binary")) - : (defaultEncoding = "utf-8"); - var pVersionMajor; - module.exports = defaultEncoding; - }, -}); - -// node_modules/pbkdf2/lib/to-buffer.js -var require_to_buffer = __commonJS({ - "node_modules/pbkdf2/lib/to-buffer.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer; - module.exports = function (thing, encoding, name) { - if (Buffer2.isBuffer(thing)) return thing; - if (typeof thing == "string") return Buffer2.from(thing, encoding); - if (ArrayBuffer.isView(thing)) return Buffer2.from(thing.buffer); - throw new TypeError(name + " must be a string, a Buffer, a typed array or a DataView"); - }; - }, -}); - -// node_modules/pbkdf2/lib/sync-browser.js -var require_sync_browser = __commonJS({ - "node_modules/pbkdf2/lib/sync-browser.js"(exports, module) { - var md5 = require_md52(), - RIPEMD160 = require_ripemd160(), - sha = require_sha2(), - Buffer2 = require_safe_buffer().Buffer, - checkParameters = require_precondition(), - defaultEncoding = require_default_encoding(), - toBuffer = require_to_buffer(), - ZEROS = Buffer2.alloc(128), - sizes = { - md5: 16, - sha1: 20, - sha224: 28, - sha256: 32, - sha384: 48, - sha512: 64, - rmd160: 20, - ripemd160: 20, - }; - function Hmac(alg, key, saltLen) { - var hash = getDigest(alg), - blocksize = alg === "sha512" || alg === "sha384" ? 128 : 64; - key.length > blocksize - ? (key = hash(key)) - : key.length < blocksize && (key = Buffer2.concat([key, ZEROS], blocksize)); - for ( - var ipad = Buffer2.allocUnsafe(blocksize + sizes[alg]), - opad = Buffer2.allocUnsafe(blocksize + sizes[alg]), - i = 0; - i < blocksize; - i++ - ) - (ipad[i] = key[i] ^ 54), (opad[i] = key[i] ^ 92); - var ipad1 = Buffer2.allocUnsafe(blocksize + saltLen + 4); - ipad.copy(ipad1, 0, 0, blocksize), - (this.ipad1 = ipad1), - (this.ipad2 = ipad), - (this.opad = opad), - (this.alg = alg), - (this.blocksize = blocksize), - (this.hash = hash), - (this.size = sizes[alg]); - } - Hmac.prototype.run = function (data, ipad) { - data.copy(ipad, this.blocksize); - var h = this.hash(ipad); - return h.copy(this.opad, this.blocksize), this.hash(this.opad); - }; - function getDigest(alg) { - function shaFunc(data) { - return sha(alg).update(data).digest(); - } - function rmd160Func(data) { - return new RIPEMD160().update(data).digest(); - } - return alg === "rmd160" || alg === "ripemd160" ? rmd160Func : alg === "md5" ? md5 : shaFunc; - } - function pbkdf2(password, salt, iterations, keylen, digest) { - checkParameters(iterations, keylen), - (password = toBuffer(password, defaultEncoding, "Password")), - (salt = toBuffer(salt, defaultEncoding, "Salt")), - (digest = digest || "sha1"); - var hmac = new Hmac(digest, password, salt.length), - DK = Buffer2.allocUnsafe(keylen), - block1 = Buffer2.allocUnsafe(salt.length + 4); - salt.copy(block1, 0, 0, salt.length); - for (var destPos = 0, hLen = sizes[digest], l = Math.ceil(keylen / hLen), i = 1; i <= l; i++) { - block1.writeUInt32BE(i, salt.length); - for (var T = hmac.run(block1, hmac.ipad1), U = T, j = 1; j < iterations; j++) { - U = hmac.run(U, hmac.ipad2); - for (var k = 0; k < hLen; k++) T[k] ^= U[k]; - } - T.copy(DK, destPos), (destPos += hLen); - } - return DK; - } - module.exports = pbkdf2; - }, -}); - -// node_modules/pbkdf2/lib/async.js -var require_async = __commonJS({ - "node_modules/pbkdf2/lib/async.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer, - checkParameters = require_precondition(), - defaultEncoding = require_default_encoding(), - sync = require_sync_browser(), - toBuffer = require_to_buffer(), - ZERO_BUF, - subtle = globalCrypto.subtle, - toBrowser = { - sha: "SHA-1", - "sha-1": "SHA-1", - sha1: "SHA-1", - sha256: "SHA-256", - "sha-256": "SHA-256", - sha384: "SHA-384", - "sha-384": "SHA-384", - "sha-512": "SHA-512", - sha512: "SHA-512", - }, - checks = []; - function checkNative(algo) { - if ((global.process && !global.process.browser) || !subtle || !subtle.importKey || !subtle.deriveBits) - return Promise.resolve(!1); - if (checks[algo] !== void 0) return checks[algo]; - ZERO_BUF = ZERO_BUF || Buffer2.alloc(8); - var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo) - .then(function () { - return !0; - }) - .catch(function () { - return !1; - }); - return (checks[algo] = prom), prom; - } - var nextTick; - function getNextTick() { - return ( - nextTick || - (global.process && global.process.nextTick - ? (nextTick = global.process.nextTick) - : global.queueMicrotask - ? (nextTick = global.queueMicrotask) - : global.setImmediate - ? (nextTick = global.setImmediate) - : (nextTick = global.setTimeout), - nextTick) - ); - } - function browserPbkdf2(password, salt, iterations, length, algo) { - return subtle - .importKey("raw", password, { name: "PBKDF2" }, !1, ["deriveBits"]) - .then(function (key) { - return subtle.deriveBits( - { - name: "PBKDF2", - salt, - iterations, - hash: { - name: algo, - }, - }, - key, - length << 3, - ); - }) - .then(function (res) { - return Buffer2.from(res); - }); - } - function resolvePromise(promise, callback) { - promise.then( - function (out) { - getNextTick()(function () { - callback(null, out); - }); - }, - function (e) { - getNextTick()(function () { - callback(e); - }); - }, - ); - } - module.exports = function (password, salt, iterations, keylen, digest, callback) { - typeof digest == "function" && ((callback = digest), (digest = void 0)), (digest = digest || "sha1"); - var algo = toBrowser[digest.toLowerCase()]; - if (!algo || typeof global.Promise != "function") { - getNextTick()(function () { - var out; - try { - out = sync(password, salt, iterations, keylen, digest); - } catch (e) { - return callback(e); - } - callback(null, out); - }); - return; - } - if ( - (checkParameters(iterations, keylen), - (password = toBuffer(password, defaultEncoding, "Password")), - (salt = toBuffer(salt, defaultEncoding, "Salt")), - typeof callback != "function") - ) - throw new Error("No callback provided to pbkdf2"); - resolvePromise( - checkNative(algo).then(function (resp) { - return resp - ? browserPbkdf2(password, salt, iterations, keylen, algo) - : sync(password, salt, iterations, keylen, digest); - }), - callback, - ); - }; - }, -}); - -// node_modules/pbkdf2/browser.js -var require_browser4 = __commonJS({ - "node_modules/pbkdf2/browser.js"(exports) { - exports.pbkdf2 = require_async(); - exports.pbkdf2Sync = require_sync_browser(); - }, -}); - -// node_modules/des.js/lib/des/utils.js -var require_utils = __commonJS({ - "node_modules/des.js/lib/des/utils.js"(exports) { - "use strict"; - exports.readUInt32BE = function (bytes, off) { - var res = (bytes[0 + off] << 24) | (bytes[1 + off] << 16) | (bytes[2 + off] << 8) | bytes[3 + off]; - return res >>> 0; - }; - exports.writeUInt32BE = function (bytes, value, off) { - (bytes[0 + off] = value >>> 24), - (bytes[1 + off] = (value >>> 16) & 255), - (bytes[2 + off] = (value >>> 8) & 255), - (bytes[3 + off] = value & 255); - }; - exports.ip = function (inL, inR, out, off) { - for (var outL = 0, outR = 0, i = 6; i >= 0; i -= 2) { - for (var j = 0; j <= 24; j += 8) (outL <<= 1), (outL |= (inR >>> (j + i)) & 1); - for (var j = 0; j <= 24; j += 8) (outL <<= 1), (outL |= (inL >>> (j + i)) & 1); - } - for (var i = 6; i >= 0; i -= 2) { - for (var j = 1; j <= 25; j += 8) (outR <<= 1), (outR |= (inR >>> (j + i)) & 1); - for (var j = 1; j <= 25; j += 8) (outR <<= 1), (outR |= (inL >>> (j + i)) & 1); - } - (out[off + 0] = outL >>> 0), (out[off + 1] = outR >>> 0); - }; - exports.rip = function (inL, inR, out, off) { - for (var outL = 0, outR = 0, i = 0; i < 4; i++) - for (var j = 24; j >= 0; j -= 8) - (outL <<= 1), (outL |= (inR >>> (j + i)) & 1), (outL <<= 1), (outL |= (inL >>> (j + i)) & 1); - for (var i = 4; i < 8; i++) - for (var j = 24; j >= 0; j -= 8) - (outR <<= 1), (outR |= (inR >>> (j + i)) & 1), (outR <<= 1), (outR |= (inL >>> (j + i)) & 1); - (out[off + 0] = outL >>> 0), (out[off + 1] = outR >>> 0); - }; - exports.pc1 = function (inL, inR, out, off) { - for (var outL = 0, outR = 0, i = 7; i >= 5; i--) { - for (var j = 0; j <= 24; j += 8) (outL <<= 1), (outL |= (inR >> (j + i)) & 1); - for (var j = 0; j <= 24; j += 8) (outL <<= 1), (outL |= (inL >> (j + i)) & 1); - } - for (var j = 0; j <= 24; j += 8) (outL <<= 1), (outL |= (inR >> (j + i)) & 1); - for (var i = 1; i <= 3; i++) { - for (var j = 0; j <= 24; j += 8) (outR <<= 1), (outR |= (inR >> (j + i)) & 1); - for (var j = 0; j <= 24; j += 8) (outR <<= 1), (outR |= (inL >> (j + i)) & 1); - } - for (var j = 0; j <= 24; j += 8) (outR <<= 1), (outR |= (inL >> (j + i)) & 1); - (out[off + 0] = outL >>> 0), (out[off + 1] = outR >>> 0); - }; - exports.r28shl = function (num, shift) { - return ((num << shift) & 268435455) | (num >>> (28 - shift)); - }; - var pc2table = [ - 14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26, 15, 4, 25, 19, 9, 1, 26, - 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24, - ]; - exports.pc2 = function (inL, inR, out, off) { - for (var outL = 0, outR = 0, len = pc2table.length >>> 1, i = 0; i < len; i++) - (outL <<= 1), (outL |= (inL >>> pc2table[i]) & 1); - for (var i = len; i < pc2table.length; i++) (outR <<= 1), (outR |= (inR >>> pc2table[i]) & 1); - (out[off + 0] = outL >>> 0), (out[off + 1] = outR >>> 0); - }; - exports.expand = function (r, out, off) { - var outL = 0, - outR = 0; - outL = ((r & 1) << 5) | (r >>> 27); - for (var i = 23; i >= 15; i -= 4) (outL <<= 6), (outL |= (r >>> i) & 63); - for (var i = 11; i >= 3; i -= 4) (outR |= (r >>> i) & 63), (outR <<= 6); - (outR |= ((r & 31) << 1) | (r >>> 31)), (out[off + 0] = outL >>> 0), (out[off + 1] = outR >>> 0); - }; - var sTable = [ - 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, - 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, - 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, - 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, - 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, - 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, - 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, - 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, - 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, - 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, - 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, - 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, - 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, - 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, - 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, - 3, 5, 5, 6, 8, 11, - ]; - exports.substitute = function (inL, inR) { - for (var out = 0, i = 0; i < 4; i++) { - var b = (inL >>> (18 - i * 6)) & 63, - sb = sTable[i * 64 + b]; - (out <<= 4), (out |= sb); - } - for (var i = 0; i < 4; i++) { - var b = (inR >>> (18 - i * 6)) & 63, - sb = sTable[4 * 64 + i * 64 + b]; - (out <<= 4), (out |= sb); - } - return out >>> 0; - }; - var permuteTable = [ - 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, - 7, - ]; - exports.permute = function (num) { - for (var out = 0, i = 0; i < permuteTable.length; i++) (out <<= 1), (out |= (num >>> permuteTable[i]) & 1); - return out >>> 0; - }; - exports.padSplit = function (num, size, group) { - for (var str = num.toString(2); str.length < size; ) str = "0" + str; - for (var out = [], i = 0; i < size; i += group) out.push(str.slice(i, i + group)); - return out.join(" "); - }; - }, -}); - -// node_modules/minimalistic-assert/index.js -var require_minimalistic_assert = __commonJS({ - "node_modules/minimalistic-assert/index.js"(exports, module) { - module.exports = assert; - function assert(val, msg) { - if (!val) throw new Error(msg || "Assertion failed"); - } - assert.equal = function (l, r, msg) { - if (l != r) throw new Error(msg || "Assertion failed: " + l + " != " + r); - }; - }, -}); - -// node_modules/des.js/lib/des/cipher.js -var require_cipher = __commonJS({ - "node_modules/des.js/lib/des/cipher.js"(exports, module) { - "use strict"; - var assert = require_minimalistic_assert(); - function Cipher(options) { - (this.options = options), - (this.type = this.options.type), - (this.blockSize = 8), - this._init(), - (this.buffer = new Array(this.blockSize)), - (this.bufferOff = 0); - } - module.exports = Cipher; - Cipher.prototype._init = function () {}; - Cipher.prototype.update = function (data) { - return data.length === 0 ? [] : this.type === "decrypt" ? this._updateDecrypt(data) : this._updateEncrypt(data); - }; - Cipher.prototype._buffer = function (data, off) { - for (var min = Math.min(this.buffer.length - this.bufferOff, data.length - off), i = 0; i < min; i++) - this.buffer[this.bufferOff + i] = data[off + i]; - return (this.bufferOff += min), min; - }; - Cipher.prototype._flushBuffer = function (out, off) { - return this._update(this.buffer, 0, out, off), (this.bufferOff = 0), this.blockSize; - }; - Cipher.prototype._updateEncrypt = function (data) { - var inputOff = 0, - outputOff = 0, - count = ((this.bufferOff + data.length) / this.blockSize) | 0, - out = new Array(count * this.blockSize); - this.bufferOff !== 0 && - ((inputOff += this._buffer(data, inputOff)), - this.bufferOff === this.buffer.length && (outputOff += this._flushBuffer(out, outputOff))); - for ( - var max = data.length - ((data.length - inputOff) % this.blockSize); - inputOff < max; - inputOff += this.blockSize - ) - this._update(data, inputOff, out, outputOff), (outputOff += this.blockSize); - for (; inputOff < data.length; inputOff++, this.bufferOff++) this.buffer[this.bufferOff] = data[inputOff]; - return out; - }; - Cipher.prototype._updateDecrypt = function (data) { - for ( - var inputOff = 0, - outputOff = 0, - count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1, - out = new Array(count * this.blockSize); - count > 0; - count-- - ) - (inputOff += this._buffer(data, inputOff)), (outputOff += this._flushBuffer(out, outputOff)); - return (inputOff += this._buffer(data, inputOff)), out; - }; - Cipher.prototype.final = function (buffer) { - var first; - buffer && (first = this.update(buffer)); - var last; - return ( - this.type === "encrypt" ? (last = this._finalEncrypt()) : (last = this._finalDecrypt()), - first ? first.concat(last) : last - ); - }; - Cipher.prototype._pad = function (buffer, off) { - if (off === 0) return !1; - for (; off < buffer.length; ) buffer[off++] = 0; - return !0; - }; - Cipher.prototype._finalEncrypt = function () { - if (!this._pad(this.buffer, this.bufferOff)) return []; - var out = new Array(this.blockSize); - return this._update(this.buffer, 0, out, 0), out; - }; - Cipher.prototype._unpad = function (buffer) { - return buffer; - }; - Cipher.prototype._finalDecrypt = function () { - assert.equal(this.bufferOff, this.blockSize, "Not enough data to decrypt"); - var out = new Array(this.blockSize); - return this._flushBuffer(out, 0), this._unpad(out); - }; - }, -}); - -// node_modules/des.js/lib/des/des.js -var require_des = __commonJS({ - "node_modules/des.js/lib/des/des.js"(exports, module) { - "use strict"; - var assert = require_minimalistic_assert(), - inherits = require_inherits_browser(), - utils = require_utils(), - Cipher = require_cipher(); - function DESState() { - (this.tmp = new Array(2)), (this.keys = null); - } - function DES(options) { - Cipher.call(this, options); - var state = new DESState(); - (this._desState = state), this.deriveKeys(state, options.key); - } - inherits(DES, Cipher); - module.exports = DES; - DES.create = function (options) { - return new DES(options); - }; - var shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]; - DES.prototype.deriveKeys = function (state, key) { - (state.keys = new Array(16 * 2)), assert.equal(key.length, this.blockSize, "Invalid key length"); - var kL = utils.readUInt32BE(key, 0), - kR = utils.readUInt32BE(key, 4); - utils.pc1(kL, kR, state.tmp, 0), (kL = state.tmp[0]), (kR = state.tmp[1]); - for (var i = 0; i < state.keys.length; i += 2) { - var shift = shiftTable[i >>> 1]; - (kL = utils.r28shl(kL, shift)), (kR = utils.r28shl(kR, shift)), utils.pc2(kL, kR, state.keys, i); - } - }; - DES.prototype._update = function (inp, inOff, out, outOff) { - var state = this._desState, - l = utils.readUInt32BE(inp, inOff), - r = utils.readUInt32BE(inp, inOff + 4); - utils.ip(l, r, state.tmp, 0), - (l = state.tmp[0]), - (r = state.tmp[1]), - this.type === "encrypt" ? this._encrypt(state, l, r, state.tmp, 0) : this._decrypt(state, l, r, state.tmp, 0), - (l = state.tmp[0]), - (r = state.tmp[1]), - utils.writeUInt32BE(out, l, outOff), - utils.writeUInt32BE(out, r, outOff + 4); - }; - DES.prototype._pad = function (buffer, off) { - for (var value = buffer.length - off, i = off; i < buffer.length; i++) buffer[i] = value; - return !0; - }; - DES.prototype._unpad = function (buffer) { - for (var pad = buffer[buffer.length - 1], i = buffer.length - pad; i < buffer.length; i++) - assert.equal(buffer[i], pad); - return buffer.slice(0, buffer.length - pad); - }; - DES.prototype._encrypt = function (state, lStart, rStart, out, off) { - for (var l = lStart, r = rStart, i = 0; i < state.keys.length; i += 2) { - var keyL = state.keys[i], - keyR = state.keys[i + 1]; - utils.expand(r, state.tmp, 0), (keyL ^= state.tmp[0]), (keyR ^= state.tmp[1]); - var s = utils.substitute(keyL, keyR), - f = utils.permute(s), - t = r; - (r = (l ^ f) >>> 0), (l = t); - } - utils.rip(r, l, out, off); - }; - DES.prototype._decrypt = function (state, lStart, rStart, out, off) { - for (var l = rStart, r = lStart, i = state.keys.length - 2; i >= 0; i -= 2) { - var keyL = state.keys[i], - keyR = state.keys[i + 1]; - utils.expand(l, state.tmp, 0), (keyL ^= state.tmp[0]), (keyR ^= state.tmp[1]); - var s = utils.substitute(keyL, keyR), - f = utils.permute(s), - t = l; - (l = (r ^ f) >>> 0), (r = t); - } - utils.rip(l, r, out, off); - }; - }, -}); - -// node_modules/des.js/lib/des/cbc.js -var require_cbc = __commonJS({ - "node_modules/des.js/lib/des/cbc.js"(exports) { - "use strict"; - var assert = require_minimalistic_assert(), - inherits = require_inherits_browser(), - proto = {}; - function CBCState(iv) { - assert.equal(iv.length, 8, "Invalid IV length"), (this.iv = new Array(8)); - for (var i = 0; i < this.iv.length; i++) this.iv[i] = iv[i]; - } - function instantiate(Base) { - function CBC(options) { - Base.call(this, options), this._cbcInit(); - } - inherits(CBC, Base); - for (var keys = Object.keys(proto), i = 0; i < keys.length; i++) { - var key = keys[i]; - CBC.prototype[key] = proto[key]; - } - return ( - (CBC.create = function (options) { - return new CBC(options); - }), - CBC - ); - } - exports.instantiate = instantiate; - proto._cbcInit = function () { - var state = new CBCState(this.options.iv); - this._cbcState = state; - }; - proto._update = function (inp, inOff, out, outOff) { - var state = this._cbcState, - superProto = this.constructor.super_.prototype, - iv = state.iv; - if (this.type === "encrypt") { - for (var i = 0; i < this.blockSize; i++) iv[i] ^= inp[inOff + i]; - superProto._update.call(this, iv, 0, out, outOff); - for (var i = 0; i < this.blockSize; i++) iv[i] = out[outOff + i]; - } else { - superProto._update.call(this, inp, inOff, out, outOff); - for (var i = 0; i < this.blockSize; i++) out[outOff + i] ^= iv[i]; - for (var i = 0; i < this.blockSize; i++) iv[i] = inp[inOff + i]; - } - }; - }, -}); - -// node_modules/des.js/lib/des/ede.js -var require_ede = __commonJS({ - "node_modules/des.js/lib/des/ede.js"(exports, module) { - "use strict"; - var assert = require_minimalistic_assert(), - inherits = require_inherits_browser(), - Cipher = require_cipher(), - DES = require_des(); - function EDEState(type, key) { - assert.equal(key.length, 24, "Invalid key length"); - var k1 = key.slice(0, 8), - k2 = key.slice(8, 16), - k3 = key.slice(16, 24); - type === "encrypt" - ? (this.ciphers = [ - DES.create({ type: "encrypt", key: k1 }), - DES.create({ type: "decrypt", key: k2 }), - DES.create({ type: "encrypt", key: k3 }), - ]) - : (this.ciphers = [ - DES.create({ type: "decrypt", key: k3 }), - DES.create({ type: "encrypt", key: k2 }), - DES.create({ type: "decrypt", key: k1 }), - ]); - } - function EDE(options) { - Cipher.call(this, options); - var state = new EDEState(this.type, this.options.key); - this._edeState = state; - } - inherits(EDE, Cipher); - module.exports = EDE; - EDE.create = function (options) { - return new EDE(options); - }; - EDE.prototype._update = function (inp, inOff, out, outOff) { - var state = this._edeState; - state.ciphers[0]._update(inp, inOff, out, outOff), - state.ciphers[1]._update(out, outOff, out, outOff), - state.ciphers[2]._update(out, outOff, out, outOff); - }; - EDE.prototype._pad = DES.prototype._pad; - EDE.prototype._unpad = DES.prototype._unpad; - }, -}); - -// node_modules/des.js/lib/des.js -var require_des2 = __commonJS({ - "node_modules/des.js/lib/des.js"(exports) { - "use strict"; - exports.utils = require_utils(); - exports.Cipher = require_cipher(); - exports.DES = require_des(); - exports.CBC = require_cbc(); - exports.EDE = require_ede(); - }, -}); - -// node_modules/browserify-des/index.js -var require_browserify_des = __commonJS({ - "node_modules/browserify-des/index.js"(exports, module) { - var CipherBase = require_cipher_base(), - des = require_des2(), - inherits = require_inherits_browser(), - Buffer2 = require_safe_buffer().Buffer, - modes = { - "des-ede3-cbc": des.CBC.instantiate(des.EDE), - "des-ede3": des.EDE, - "des-ede-cbc": des.CBC.instantiate(des.EDE), - "des-ede": des.EDE, - "des-cbc": des.CBC.instantiate(des.DES), - "des-ecb": des.DES, - }; - modes.des = modes["des-cbc"]; - modes.des3 = modes["des-ede3-cbc"]; - module.exports = DES; - inherits(DES, CipherBase); - function DES(opts) { - CipherBase.call(this); - var modeName = opts.mode.toLowerCase(), - mode = modes[modeName], - type; - opts.decrypt ? (type = "decrypt") : (type = "encrypt"); - var key = opts.key; - Buffer2.isBuffer(key) || (key = Buffer2.from(key)), - (modeName === "des-ede" || modeName === "des-ede-cbc") && (key = Buffer2.concat([key, key.slice(0, 8)])); - var iv = opts.iv; - Buffer2.isBuffer(iv) || (iv = Buffer2.from(iv)), - (this._des = mode.create({ - key, - iv, - type, - })); - } - DES.prototype._update = function (data) { - return Buffer2.from(this._des.update(data)); - }; - DES.prototype._final = function () { - return Buffer2.from(this._des.final()); - }; - }, -}); - -// node_modules/browserify-aes/modes/ecb.js -var require_ecb = __commonJS({ - "node_modules/browserify-aes/modes/ecb.js"(exports) { - exports.encrypt = function (self2, block) { - return self2._cipher.encryptBlock(block); - }; - exports.decrypt = function (self2, block) { - return self2._cipher.decryptBlock(block); - }; - }, -}); - -// node_modules/buffer-xor/index.js -var require_buffer_xor = __commonJS({ - "node_modules/buffer-xor/index.js"(exports, module) { - module.exports = function (a, b) { - for (var length = Math.min(a.length, b.length), buffer = new Buffer(length), i = 0; i < length; ++i) - buffer[i] = a[i] ^ b[i]; - return buffer; - }; - }, -}); - -// node_modules/browserify-aes/modes/cbc.js -var require_cbc2 = __commonJS({ - "node_modules/browserify-aes/modes/cbc.js"(exports) { - var xor = require_buffer_xor(); - exports.encrypt = function (self2, block) { - var data = xor(block, self2._prev); - return (self2._prev = self2._cipher.encryptBlock(data)), self2._prev; - }; - exports.decrypt = function (self2, block) { - var pad = self2._prev; - self2._prev = block; - var out = self2._cipher.decryptBlock(block); - return xor(out, pad); - }; - }, -}); - -// node_modules/browserify-aes/modes/cfb.js -var require_cfb = __commonJS({ - "node_modules/browserify-aes/modes/cfb.js"(exports) { - var Buffer2 = require_safe_buffer().Buffer, - xor = require_buffer_xor(); - function encryptStart(self2, data, decrypt) { - var len = data.length, - out = xor(data, self2._cache); - return ( - (self2._cache = self2._cache.slice(len)), - (self2._prev = Buffer2.concat([self2._prev, decrypt ? data : out])), - out - ); - } - exports.encrypt = function (self2, data, decrypt) { - for (var out = Buffer2.allocUnsafe(0), len; data.length; ) - if ( - (self2._cache.length === 0 && - ((self2._cache = self2._cipher.encryptBlock(self2._prev)), (self2._prev = Buffer2.allocUnsafe(0))), - self2._cache.length <= data.length) - ) - (len = self2._cache.length), - (out = Buffer2.concat([out, encryptStart(self2, data.slice(0, len), decrypt)])), - (data = data.slice(len)); - else { - out = Buffer2.concat([out, encryptStart(self2, data, decrypt)]); - break; - } - return out; - }; - }, -}); - -// node_modules/browserify-aes/modes/cfb8.js -var require_cfb8 = __commonJS({ - "node_modules/browserify-aes/modes/cfb8.js"(exports) { - var Buffer2 = require_safe_buffer().Buffer; - function encryptByte(self2, byteParam, decrypt) { - var pad = self2._cipher.encryptBlock(self2._prev), - out = pad[0] ^ byteParam; - return (self2._prev = Buffer2.concat([self2._prev.slice(1), Buffer2.from([decrypt ? byteParam : out])])), out; - } - exports.encrypt = function (self2, chunk, decrypt) { - for (var len = chunk.length, out = Buffer2.allocUnsafe(len), i = -1; ++i < len; ) - out[i] = encryptByte(self2, chunk[i], decrypt); - return out; - }; - }, -}); - -// node_modules/browserify-aes/modes/cfb1.js -var require_cfb1 = __commonJS({ - "node_modules/browserify-aes/modes/cfb1.js"(exports) { - var Buffer2 = require_safe_buffer().Buffer; - function encryptByte(self2, byteParam, decrypt) { - for (var pad, i = -1, len = 8, out = 0, bit, value; ++i < len; ) - (pad = self2._cipher.encryptBlock(self2._prev)), - (bit = byteParam & (1 << (7 - i)) ? 128 : 0), - (value = pad[0] ^ bit), - (out += (value & 128) >> i % 8), - (self2._prev = shiftIn(self2._prev, decrypt ? bit : value)); - return out; - } - function shiftIn(buffer, value) { - var len = buffer.length, - i = -1, - out = Buffer2.allocUnsafe(buffer.length); - for (buffer = Buffer2.concat([buffer, Buffer2.from([value])]); ++i < len; ) - out[i] = (buffer[i] << 1) | (buffer[i + 1] >> 7); - return out; - } - exports.encrypt = function (self2, chunk, decrypt) { - for (var len = chunk.length, out = Buffer2.allocUnsafe(len), i = -1; ++i < len; ) - out[i] = encryptByte(self2, chunk[i], decrypt); - return out; - }; - }, -}); - -// node_modules/browserify-aes/modes/ofb.js -var require_ofb = __commonJS({ - "node_modules/browserify-aes/modes/ofb.js"(exports) { - var xor = require_buffer_xor(); - function getBlock(self2) { - return (self2._prev = self2._cipher.encryptBlock(self2._prev)), self2._prev; - } - exports.encrypt = function (self2, chunk) { - for (; self2._cache.length < chunk.length; ) self2._cache = Buffer.concat([self2._cache, getBlock(self2)]); - var pad = self2._cache.slice(0, chunk.length); - return (self2._cache = self2._cache.slice(chunk.length)), xor(chunk, pad); - }; - }, -}); - -// node_modules/browserify-aes/incr32.js -var require_incr32 = __commonJS({ - "node_modules/browserify-aes/incr32.js"(exports, module) { - function incr32(iv) { - for (var len = iv.length, item; len--; ) - if (((item = iv.readUInt8(len)), item === 255)) iv.writeUInt8(0, len); - else { - item++, iv.writeUInt8(item, len); - break; - } - } - module.exports = incr32; - }, -}); - -// node_modules/browserify-aes/modes/ctr.js -var require_ctr = __commonJS({ - "node_modules/browserify-aes/modes/ctr.js"(exports) { - var xor = require_buffer_xor(), - Buffer2 = require_safe_buffer().Buffer, - incr32 = require_incr32(); - function getBlock(self2) { - var out = self2._cipher.encryptBlockRaw(self2._prev); - return incr32(self2._prev), out; - } - var blockSize = 16; - exports.encrypt = function (self2, chunk) { - var chunkNum = Math.ceil(chunk.length / blockSize), - start = self2._cache.length; - self2._cache = Buffer2.concat([self2._cache, Buffer2.allocUnsafe(chunkNum * blockSize)]); - for (var i = 0; i < chunkNum; i++) { - var out = getBlock(self2), - offset = start + i * blockSize; - self2._cache.writeUInt32BE(out[0], offset + 0), - self2._cache.writeUInt32BE(out[1], offset + 4), - self2._cache.writeUInt32BE(out[2], offset + 8), - self2._cache.writeUInt32BE(out[3], offset + 12); - } - var pad = self2._cache.slice(0, chunk.length); - return (self2._cache = self2._cache.slice(chunk.length)), xor(chunk, pad); - }; - }, -}); - -// node_modules/browserify-aes/modes/list.json -var require_list = __commonJS({ - "node_modules/browserify-aes/modes/list.json"(exports, module) { - module.exports = { - "aes-128-ecb": { - cipher: "AES", - key: 128, - iv: 0, - mode: "ECB", - type: "block", - }, - "aes-192-ecb": { - cipher: "AES", - key: 192, - iv: 0, - mode: "ECB", - type: "block", - }, - "aes-256-ecb": { - cipher: "AES", - key: 256, - iv: 0, - mode: "ECB", - type: "block", - }, - "aes-128-cbc": { - cipher: "AES", - key: 128, - iv: 16, - mode: "CBC", - type: "block", - }, - "aes-192-cbc": { - cipher: "AES", - key: 192, - iv: 16, - mode: "CBC", - type: "block", - }, - "aes-256-cbc": { - cipher: "AES", - key: 256, - iv: 16, - mode: "CBC", - type: "block", - }, - aes128: { - cipher: "AES", - key: 128, - iv: 16, - mode: "CBC", - type: "block", - }, - aes192: { - cipher: "AES", - key: 192, - iv: 16, - mode: "CBC", - type: "block", - }, - aes256: { - cipher: "AES", - key: 256, - iv: 16, - mode: "CBC", - type: "block", - }, - "aes-128-cfb": { - cipher: "AES", - key: 128, - iv: 16, - mode: "CFB", - type: "stream", - }, - "aes-192-cfb": { - cipher: "AES", - key: 192, - iv: 16, - mode: "CFB", - type: "stream", - }, - "aes-256-cfb": { - cipher: "AES", - key: 256, - iv: 16, - mode: "CFB", - type: "stream", - }, - "aes-128-cfb8": { - cipher: "AES", - key: 128, - iv: 16, - mode: "CFB8", - type: "stream", - }, - "aes-192-cfb8": { - cipher: "AES", - key: 192, - iv: 16, - mode: "CFB8", - type: "stream", - }, - "aes-256-cfb8": { - cipher: "AES", - key: 256, - iv: 16, - mode: "CFB8", - type: "stream", - }, - "aes-128-cfb1": { - cipher: "AES", - key: 128, - iv: 16, - mode: "CFB1", - type: "stream", - }, - "aes-192-cfb1": { - cipher: "AES", - key: 192, - iv: 16, - mode: "CFB1", - type: "stream", - }, - "aes-256-cfb1": { - cipher: "AES", - key: 256, - iv: 16, - mode: "CFB1", - type: "stream", - }, - "aes-128-ofb": { - cipher: "AES", - key: 128, - iv: 16, - mode: "OFB", - type: "stream", - }, - "aes-192-ofb": { - cipher: "AES", - key: 192, - iv: 16, - mode: "OFB", - type: "stream", - }, - "aes-256-ofb": { - cipher: "AES", - key: 256, - iv: 16, - mode: "OFB", - type: "stream", - }, - "aes-128-ctr": { - cipher: "AES", - key: 128, - iv: 16, - mode: "CTR", - type: "stream", - }, - "aes-192-ctr": { - cipher: "AES", - key: 192, - iv: 16, - mode: "CTR", - type: "stream", - }, - "aes-256-ctr": { - cipher: "AES", - key: 256, - iv: 16, - mode: "CTR", - type: "stream", - }, - "aes-128-gcm": { - cipher: "AES", - key: 128, - iv: 12, - mode: "GCM", - type: "auth", - }, - "aes-192-gcm": { - cipher: "AES", - key: 192, - iv: 12, - mode: "GCM", - type: "auth", - }, - "aes-256-gcm": { - cipher: "AES", - key: 256, - iv: 12, - mode: "GCM", - type: "auth", - }, - }; - }, -}); - -// node_modules/browserify-aes/modes/index.js -var require_modes = __commonJS({ - "node_modules/browserify-aes/modes/index.js"(exports, module) { - var modeModules = { - ECB: require_ecb(), - CBC: require_cbc2(), - CFB: require_cfb(), - CFB8: require_cfb8(), - CFB1: require_cfb1(), - OFB: require_ofb(), - CTR: require_ctr(), - GCM: require_ctr(), - }, - modes = require_list(); - for (key in modes) modes[key].module = modeModules[modes[key].mode]; - var key; - module.exports = modes; - }, -}); - -// node_modules/browserify-aes/aes.js -var require_aes = __commonJS({ - "node_modules/browserify-aes/aes.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer; - function asUInt32Array(buf) { - Buffer2.isBuffer(buf) || (buf = Buffer2.from(buf)); - for (var len = (buf.length / 4) | 0, out = new Array(len), i = 0; i < len; i++) out[i] = buf.readUInt32BE(i * 4); - return out; - } - function scrubVec(v) { - for (var i = 0; i < v.length; v++) v[i] = 0; - } - function cryptBlock(M, keySchedule, SUB_MIX, SBOX, nRounds) { - for ( - var SUB_MIX0 = SUB_MIX[0], - SUB_MIX1 = SUB_MIX[1], - SUB_MIX2 = SUB_MIX[2], - SUB_MIX3 = SUB_MIX[3], - s0 = M[0] ^ keySchedule[0], - s1 = M[1] ^ keySchedule[1], - s2 = M[2] ^ keySchedule[2], - s3 = M[3] ^ keySchedule[3], - t0, - t1, - t2, - t3, - ksRow = 4, - round = 1; - round < nRounds; - round++ - ) - (t0 = - SUB_MIX0[s0 >>> 24] ^ - SUB_MIX1[(s1 >>> 16) & 255] ^ - SUB_MIX2[(s2 >>> 8) & 255] ^ - SUB_MIX3[s3 & 255] ^ - keySchedule[ksRow++]), - (t1 = - SUB_MIX0[s1 >>> 24] ^ - SUB_MIX1[(s2 >>> 16) & 255] ^ - SUB_MIX2[(s3 >>> 8) & 255] ^ - SUB_MIX3[s0 & 255] ^ - keySchedule[ksRow++]), - (t2 = - SUB_MIX0[s2 >>> 24] ^ - SUB_MIX1[(s3 >>> 16) & 255] ^ - SUB_MIX2[(s0 >>> 8) & 255] ^ - SUB_MIX3[s1 & 255] ^ - keySchedule[ksRow++]), - (t3 = - SUB_MIX0[s3 >>> 24] ^ - SUB_MIX1[(s0 >>> 16) & 255] ^ - SUB_MIX2[(s1 >>> 8) & 255] ^ - SUB_MIX3[s2 & 255] ^ - keySchedule[ksRow++]), - (s0 = t0), - (s1 = t1), - (s2 = t2), - (s3 = t3); - return ( - (t0 = - ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 255] << 16) | (SBOX[(s2 >>> 8) & 255] << 8) | SBOX[s3 & 255]) ^ - keySchedule[ksRow++]), - (t1 = - ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 255] << 16) | (SBOX[(s3 >>> 8) & 255] << 8) | SBOX[s0 & 255]) ^ - keySchedule[ksRow++]), - (t2 = - ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 255] << 16) | (SBOX[(s0 >>> 8) & 255] << 8) | SBOX[s1 & 255]) ^ - keySchedule[ksRow++]), - (t3 = - ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 255] << 16) | (SBOX[(s1 >>> 8) & 255] << 8) | SBOX[s2 & 255]) ^ - keySchedule[ksRow++]), - (t0 = t0 >>> 0), - (t1 = t1 >>> 0), - (t2 = t2 >>> 0), - (t3 = t3 >>> 0), - [t0, t1, t2, t3] - ); - } - var RCON = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], - G = (function () { - for (var d = new Array(256), j = 0; j < 256; j++) j < 128 ? (d[j] = j << 1) : (d[j] = (j << 1) ^ 283); - for ( - var SBOX = [], - INV_SBOX = [], - SUB_MIX = [[], [], [], []], - INV_SUB_MIX = [[], [], [], []], - x = 0, - xi = 0, - i = 0; - i < 256; - ++i - ) { - var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); - (sx = (sx >>> 8) ^ (sx & 255) ^ 99), (SBOX[x] = sx), (INV_SBOX[sx] = x); - var x2 = d[x], - x4 = d[x2], - x8 = d[x4], - t = (d[sx] * 257) ^ (sx * 16843008); - (SUB_MIX[0][x] = (t << 24) | (t >>> 8)), - (SUB_MIX[1][x] = (t << 16) | (t >>> 16)), - (SUB_MIX[2][x] = (t << 8) | (t >>> 24)), - (SUB_MIX[3][x] = t), - (t = (x8 * 16843009) ^ (x4 * 65537) ^ (x2 * 257) ^ (x * 16843008)), - (INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)), - (INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)), - (INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)), - (INV_SUB_MIX[3][sx] = t), - x === 0 ? (x = xi = 1) : ((x = x2 ^ d[d[d[x8 ^ x2]]]), (xi ^= d[d[xi]])); - } - return { - SBOX, - INV_SBOX, - SUB_MIX, - INV_SUB_MIX, - }; - })(); - function AES(key) { - (this._key = asUInt32Array(key)), this._reset(); - } - AES.blockSize = 4 * 4; - AES.keySize = 256 / 8; - AES.prototype.blockSize = AES.blockSize; - AES.prototype.keySize = AES.keySize; - AES.prototype._reset = function () { - for ( - var keyWords = this._key, - keySize = keyWords.length, - nRounds = keySize + 6, - ksRows = (nRounds + 1) * 4, - keySchedule = [], - k = 0; - k < keySize; - k++ - ) - keySchedule[k] = keyWords[k]; - for (k = keySize; k < ksRows; k++) { - var t = keySchedule[k - 1]; - k % keySize === 0 - ? ((t = (t << 8) | (t >>> 24)), - (t = - (G.SBOX[t >>> 24] << 24) | - (G.SBOX[(t >>> 16) & 255] << 16) | - (G.SBOX[(t >>> 8) & 255] << 8) | - G.SBOX[t & 255]), - (t ^= RCON[(k / keySize) | 0] << 24)) - : keySize > 6 && - k % keySize === 4 && - (t = - (G.SBOX[t >>> 24] << 24) | - (G.SBOX[(t >>> 16) & 255] << 16) | - (G.SBOX[(t >>> 8) & 255] << 8) | - G.SBOX[t & 255]), - (keySchedule[k] = keySchedule[k - keySize] ^ t); - } - for (var invKeySchedule = [], ik = 0; ik < ksRows; ik++) { - var ksR = ksRows - ik, - tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]; - ik < 4 || ksR <= 4 - ? (invKeySchedule[ik] = tt) - : (invKeySchedule[ik] = - G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ - G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 255]] ^ - G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 255]] ^ - G.INV_SUB_MIX[3][G.SBOX[tt & 255]]); - } - (this._nRounds = nRounds), (this._keySchedule = keySchedule), (this._invKeySchedule = invKeySchedule); - }; - AES.prototype.encryptBlockRaw = function (M) { - return (M = asUInt32Array(M)), cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds); - }; - AES.prototype.encryptBlock = function (M) { - var out = this.encryptBlockRaw(M), - buf = Buffer2.allocUnsafe(16); - return ( - buf.writeUInt32BE(out[0], 0), - buf.writeUInt32BE(out[1], 4), - buf.writeUInt32BE(out[2], 8), - buf.writeUInt32BE(out[3], 12), - buf - ); - }; - AES.prototype.decryptBlock = function (M) { - M = asUInt32Array(M); - var m1 = M[1]; - (M[1] = M[3]), (M[3] = m1); - var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds), - buf = Buffer2.allocUnsafe(16); - return ( - buf.writeUInt32BE(out[0], 0), - buf.writeUInt32BE(out[3], 4), - buf.writeUInt32BE(out[2], 8), - buf.writeUInt32BE(out[1], 12), - buf - ); - }; - AES.prototype.scrub = function () { - scrubVec(this._keySchedule), scrubVec(this._invKeySchedule), scrubVec(this._key); - }; - module.exports.AES = AES; - }, -}); - -// node_modules/browserify-aes/ghash.js -var require_ghash = __commonJS({ - "node_modules/browserify-aes/ghash.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer, - ZEROES = Buffer2.alloc(16, 0); - function toArray(buf) { - return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)]; - } - function fromArray(out) { - var buf = Buffer2.allocUnsafe(16); - return ( - buf.writeUInt32BE(out[0] >>> 0, 0), - buf.writeUInt32BE(out[1] >>> 0, 4), - buf.writeUInt32BE(out[2] >>> 0, 8), - buf.writeUInt32BE(out[3] >>> 0, 12), - buf - ); - } - function GHASH(key) { - (this.h = key), (this.state = Buffer2.alloc(16, 0)), (this.cache = Buffer2.allocUnsafe(0)); - } - GHASH.prototype.ghash = function (block) { - for (var i = -1; ++i < block.length; ) this.state[i] ^= block[i]; - this._multiply(); - }; - GHASH.prototype._multiply = function () { - for (var Vi = toArray(this.h), Zi = [0, 0, 0, 0], j, xi, lsbVi, i = -1; ++i < 128; ) { - for ( - xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0, - xi && ((Zi[0] ^= Vi[0]), (Zi[1] ^= Vi[1]), (Zi[2] ^= Vi[2]), (Zi[3] ^= Vi[3])), - lsbVi = (Vi[3] & 1) !== 0, - j = 3; - j > 0; - j-- - ) - Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31); - (Vi[0] = Vi[0] >>> 1), lsbVi && (Vi[0] = Vi[0] ^ (225 << 24)); - } - this.state = fromArray(Zi); - }; - GHASH.prototype.update = function (buf) { - this.cache = Buffer2.concat([this.cache, buf]); - for (var chunk; this.cache.length >= 16; ) - (chunk = this.cache.slice(0, 16)), (this.cache = this.cache.slice(16)), this.ghash(chunk); - }; - GHASH.prototype.final = function (abl, bl) { - return ( - this.cache.length && this.ghash(Buffer2.concat([this.cache, ZEROES], 16)), - this.ghash(fromArray([0, abl, 0, bl])), - this.state - ); - }; - module.exports = GHASH; - }, -}); - -// node_modules/browserify-aes/authCipher.js -var require_authCipher = __commonJS({ - "node_modules/browserify-aes/authCipher.js"(exports, module) { - var aes = require_aes(), - Buffer2 = require_safe_buffer().Buffer, - Transform = require_cipher_base(), - inherits = require_inherits_browser(), - GHASH = require_ghash(), - xor = require_buffer_xor(), - incr32 = require_incr32(); - function xorTest(a, b) { - var out = 0; - a.length !== b.length && out++; - for (var len = Math.min(a.length, b.length), i = 0; i < len; ++i) out += a[i] ^ b[i]; - return out; - } - function calcIv(self2, iv, ck) { - if (iv.length === 12) - return ( - (self2._finID = Buffer2.concat([iv, Buffer2.from([0, 0, 0, 1])])), - Buffer2.concat([iv, Buffer2.from([0, 0, 0, 2])]) - ); - var ghash = new GHASH(ck), - len = iv.length, - toPad = len % 16; - ghash.update(iv), - toPad && ((toPad = 16 - toPad), ghash.update(Buffer2.alloc(toPad, 0))), - ghash.update(Buffer2.alloc(8, 0)); - var ivBits = len * 8, - tail = Buffer2.alloc(8); - tail.writeUIntBE(ivBits, 0, 8), ghash.update(tail), (self2._finID = ghash.state); - var out = Buffer2.from(self2._finID); - return incr32(out), out; - } - function StreamCipher(mode, key, iv, decrypt) { - Transform.call(this); - var h = Buffer2.alloc(4, 0); - this._cipher = new aes.AES(key); - var ck = this._cipher.encryptBlock(h); - (this._ghash = new GHASH(ck)), - (iv = calcIv(this, iv, ck)), - (this._prev = Buffer2.from(iv)), - (this._cache = Buffer2.allocUnsafe(0)), - (this._secCache = Buffer2.allocUnsafe(0)), - (this._decrypt = decrypt), - (this._alen = 0), - (this._len = 0), - (this._mode = mode), - (this._authTag = null), - (this._called = !1); - } - inherits(StreamCipher, Transform); - StreamCipher.prototype._update = function (chunk) { - if (!this._called && this._alen) { - var rump = 16 - (this._alen % 16); - rump < 16 && ((rump = Buffer2.alloc(rump, 0)), this._ghash.update(rump)); - } - this._called = !0; - var out = this._mode.encrypt(this, chunk); - return this._decrypt ? this._ghash.update(chunk) : this._ghash.update(out), (this._len += chunk.length), out; - }; - StreamCipher.prototype._final = function () { - if (this._decrypt && !this._authTag) throw new Error("Unsupported state or unable to authenticate data"); - var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID)); - if (this._decrypt && xorTest(tag, this._authTag)) - throw new Error("Unsupported state or unable to authenticate data"); - (this._authTag = tag), this._cipher.scrub(); - }; - StreamCipher.prototype.getAuthTag = function () { - if (this._decrypt || !Buffer2.isBuffer(this._authTag)) - throw new Error("Attempting to get auth tag in unsupported state"); - return this._authTag; - }; - StreamCipher.prototype.setAuthTag = function (tag) { - if (!this._decrypt) throw new Error("Attempting to set auth tag in unsupported state"); - this._authTag = tag; - }; - StreamCipher.prototype.setAAD = function (buf) { - if (this._called) throw new Error("Attempting to set AAD in unsupported state"); - this._ghash.update(buf), (this._alen += buf.length); - }; - module.exports = StreamCipher; - }, -}); - -// node_modules/browserify-aes/streamCipher.js -var require_streamCipher = __commonJS({ - "node_modules/browserify-aes/streamCipher.js"(exports, module) { - var aes = require_aes(), - Buffer2 = require_safe_buffer().Buffer, - Transform = require_cipher_base(), - inherits = require_inherits_browser(); - function StreamCipher(mode, key, iv, decrypt) { - Transform.call(this), - (this._cipher = new aes.AES(key)), - (this._prev = Buffer2.from(iv)), - (this._cache = Buffer2.allocUnsafe(0)), - (this._secCache = Buffer2.allocUnsafe(0)), - (this._decrypt = decrypt), - (this._mode = mode); - } - inherits(StreamCipher, Transform); - StreamCipher.prototype._update = function (chunk) { - return this._mode.encrypt(this, chunk, this._decrypt); - }; - StreamCipher.prototype._final = function () { - this._cipher.scrub(); - }; - module.exports = StreamCipher; - }, -}); - -// node_modules/evp_bytestokey/index.js -var require_evp_bytestokey = __commonJS({ - "node_modules/evp_bytestokey/index.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer, - MD5 = require_md5(); - function EVP_BytesToKey(password, salt, keyBits, ivLen) { - if ( - (Buffer2.isBuffer(password) || (password = Buffer2.from(password, "binary")), - salt && (Buffer2.isBuffer(salt) || (salt = Buffer2.from(salt, "binary")), salt.length !== 8)) - ) - throw new RangeError("salt should be Buffer with 8 byte length"); - for ( - var keyLen = keyBits / 8, key = Buffer2.alloc(keyLen), iv = Buffer2.alloc(ivLen || 0), tmp = Buffer2.alloc(0); - keyLen > 0 || ivLen > 0; - - ) { - var hash = new MD5(); - hash.update(tmp), hash.update(password), salt && hash.update(salt), (tmp = hash.digest()); - var used = 0; - if (keyLen > 0) { - var keyStart = key.length - keyLen; - (used = Math.min(keyLen, tmp.length)), tmp.copy(key, keyStart, 0, used), (keyLen -= used); - } - if (used < tmp.length && ivLen > 0) { - var ivStart = iv.length - ivLen, - length = Math.min(ivLen, tmp.length - used); - tmp.copy(iv, ivStart, used, used + length), (ivLen -= length); - } - } - return tmp.fill(0), { key, iv }; - } - module.exports = EVP_BytesToKey; - }, -}); - -// node_modules/browserify-aes/encrypter.js -var require_encrypter = __commonJS({ - "node_modules/browserify-aes/encrypter.js"(exports) { - var MODES = require_modes(), - AuthCipher = require_authCipher(), - Buffer2 = require_safe_buffer().Buffer, - StreamCipher = require_streamCipher(), - Transform = require_cipher_base(), - aes = require_aes(), - ebtk = require_evp_bytestokey(), - inherits = require_inherits_browser(); - function Cipher(mode, key, iv) { - Transform.call(this), - (this._cache = new Splitter()), - (this._cipher = new aes.AES(key)), - (this._prev = Buffer2.from(iv)), - (this._mode = mode), - (this._autopadding = !0); - } - inherits(Cipher, Transform); - Cipher.prototype._update = function (data) { - this._cache.add(data); - for (var chunk, thing, out = []; (chunk = this._cache.get()); ) - (thing = this._mode.encrypt(this, chunk)), out.push(thing); - return Buffer2.concat(out); - }; - var PADDING = Buffer2.alloc(16, 16); - Cipher.prototype._final = function () { - var chunk = this._cache.flush(); - if (this._autopadding) return (chunk = this._mode.encrypt(this, chunk)), this._cipher.scrub(), chunk; - if (!chunk.equals(PADDING)) throw (this._cipher.scrub(), new Error("data not multiple of block length")); - }; - Cipher.prototype.setAutoPadding = function (setTo) { - return (this._autopadding = !!setTo), this; - }; - function Splitter() { - this.cache = Buffer2.allocUnsafe(0); - } - Splitter.prototype.add = function (data) { - this.cache = Buffer2.concat([this.cache, data]); - }; - Splitter.prototype.get = function () { - if (this.cache.length > 15) { - var out = this.cache.slice(0, 16); - return (this.cache = this.cache.slice(16)), out; - } - return null; - }; - Splitter.prototype.flush = function () { - for (var len = 16 - this.cache.length, padBuff = Buffer2.allocUnsafe(len), i = -1; ++i < len; ) - padBuff.writeUInt8(len, i); - return Buffer2.concat([this.cache, padBuff]); - }; - function createCipheriv(suite, password, iv) { - var config = MODES[suite.toLowerCase()]; - if (!config) throw new TypeError("invalid suite type"); - if ((typeof password == "string" && (password = Buffer2.from(password)), password.length !== config.key / 8)) - throw new TypeError("invalid key length " + password.length); - if ((typeof iv == "string" && (iv = Buffer2.from(iv)), config.mode !== "GCM" && iv.length !== config.iv)) - throw new TypeError("invalid iv length " + iv.length); - return config.type === "stream" - ? new StreamCipher(config.module, password, iv) - : config.type === "auth" - ? new AuthCipher(config.module, password, iv) - : new Cipher(config.module, password, iv); - } - function createCipher(suite, password) { - var config = MODES[suite.toLowerCase()]; - if (!config) throw new TypeError("invalid suite type"); - var keys = ebtk(password, !1, config.key, config.iv); - return createCipheriv(suite, keys.key, keys.iv); - } - exports.createCipheriv = createCipheriv; - exports.createCipher = createCipher; - }, -}); - -// node_modules/browserify-aes/decrypter.js -var require_decrypter = __commonJS({ - "node_modules/browserify-aes/decrypter.js"(exports) { - var AuthCipher = require_authCipher(), - Buffer2 = require_safe_buffer().Buffer, - MODES = require_modes(), - StreamCipher = require_streamCipher(), - Transform = require_cipher_base(), - aes = require_aes(), - ebtk = require_evp_bytestokey(), - inherits = require_inherits_browser(); - function Decipher(mode, key, iv) { - Transform.call(this), - (this._cache = new Splitter()), - (this._last = void 0), - (this._cipher = new aes.AES(key)), - (this._prev = Buffer2.from(iv)), - (this._mode = mode), - (this._autopadding = !0); - } - inherits(Decipher, Transform); - Decipher.prototype._update = function (data) { - this._cache.add(data); - for (var chunk, thing, out = []; (chunk = this._cache.get(this._autopadding)); ) - (thing = this._mode.decrypt(this, chunk)), out.push(thing); - return Buffer2.concat(out); - }; - Decipher.prototype._final = function () { - var chunk = this._cache.flush(); - if (this._autopadding) return unpad(this._mode.decrypt(this, chunk)); - if (chunk) throw new Error("data not multiple of block length"); - }; - Decipher.prototype.setAutoPadding = function (setTo) { - return (this._autopadding = !!setTo), this; - }; - function Splitter() { - this.cache = Buffer2.allocUnsafe(0); - } - Splitter.prototype.add = function (data) { - this.cache = Buffer2.concat([this.cache, data]); - }; - Splitter.prototype.get = function (autoPadding) { - var out; - if (autoPadding) { - if (this.cache.length > 16) return (out = this.cache.slice(0, 16)), (this.cache = this.cache.slice(16)), out; - } else if (this.cache.length >= 16) - return (out = this.cache.slice(0, 16)), (this.cache = this.cache.slice(16)), out; - return null; - }; - Splitter.prototype.flush = function () { - if (this.cache.length) return this.cache; - }; - function unpad(last) { - var padded = last[15]; - if (padded < 1 || padded > 16) throw new Error("unable to decrypt data"); - for (var i = -1; ++i < padded; ) - if (last[i + (16 - padded)] !== padded) throw new Error("unable to decrypt data"); - if (padded !== 16) return last.slice(0, 16 - padded); - } - function createDecipheriv(suite, password, iv) { - var config = MODES[suite.toLowerCase()]; - if (!config) throw new TypeError("invalid suite type"); - if ((typeof iv == "string" && (iv = Buffer2.from(iv)), config.mode !== "GCM" && iv.length !== config.iv)) - throw new TypeError("invalid iv length " + iv.length); - if ((typeof password == "string" && (password = Buffer2.from(password)), password.length !== config.key / 8)) - throw new TypeError("invalid key length " + password.length); - return config.type === "stream" - ? new StreamCipher(config.module, password, iv, !0) - : config.type === "auth" - ? new AuthCipher(config.module, password, iv, !0) - : new Decipher(config.module, password, iv); - } - function createDecipher(suite, password) { - var config = MODES[suite.toLowerCase()]; - if (!config) throw new TypeError("invalid suite type"); - var keys = ebtk(password, !1, config.key, config.iv); - return createDecipheriv(suite, keys.key, keys.iv); - } - exports.createDecipher = createDecipher; - exports.createDecipheriv = createDecipheriv; - }, -}); - -// node_modules/browserify-aes/browser.js -var require_browser5 = __commonJS({ - "node_modules/browserify-aes/browser.js"(exports) { - var ciphers = require_encrypter(), - deciphers = require_decrypter(), - modes = require_list(); - function getCiphers() { - return Object.keys(modes); - } - exports.createCipher = exports.Cipher = ciphers.createCipher; - exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv; - exports.createDecipher = exports.Decipher = deciphers.createDecipher; - exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv; - exports.listCiphers = exports.getCiphers = getCiphers; - }, -}); - -// node_modules/browserify-des/modes.js -var require_modes2 = __commonJS({ - "node_modules/browserify-des/modes.js"(exports) { - exports["des-ecb"] = { - key: 8, - iv: 0, - }; - exports["des-cbc"] = exports.des = { - key: 8, - iv: 8, - }; - exports["des-ede3-cbc"] = exports.des3 = { - key: 24, - iv: 8, - }; - exports["des-ede3"] = { - key: 24, - iv: 0, - }; - exports["des-ede-cbc"] = { - key: 16, - iv: 8, - }; - exports["des-ede"] = { - key: 16, - iv: 0, - }; - }, -}); - -// node_modules/browserify-cipher/browser.js -var require_browser6 = __commonJS({ - "node_modules/browserify-cipher/browser.js"(exports) { - var DES = require_browserify_des(), - aes = require_browser5(), - aesModes = require_modes(), - desModes = require_modes2(), - ebtk = require_evp_bytestokey(); - function createCipher(suite, password) { - suite = suite.toLowerCase(); - var keyLen, ivLen; - if (aesModes[suite]) (keyLen = aesModes[suite].key), (ivLen = aesModes[suite].iv); - else if (desModes[suite]) (keyLen = desModes[suite].key * 8), (ivLen = desModes[suite].iv); - else throw new TypeError("invalid suite type"); - var keys = ebtk(password, !1, keyLen, ivLen); - return createCipheriv(suite, keys.key, keys.iv); - } - function createDecipher(suite, password) { - suite = suite.toLowerCase(); - var keyLen, ivLen; - if (aesModes[suite]) (keyLen = aesModes[suite].key), (ivLen = aesModes[suite].iv); - else if (desModes[suite]) (keyLen = desModes[suite].key * 8), (ivLen = desModes[suite].iv); - else throw new TypeError("invalid suite type"); - var keys = ebtk(password, !1, keyLen, ivLen); - return createDecipheriv(suite, keys.key, keys.iv); - } - function createCipheriv(suite, key, iv) { - if (((suite = suite.toLowerCase()), aesModes[suite])) return aes.createCipheriv(suite, key, iv); - if (desModes[suite]) return new DES({ key, iv, mode: suite }); - throw new TypeError("invalid suite type"); - } - function createDecipheriv(suite, key, iv) { - if (((suite = suite.toLowerCase()), aesModes[suite])) return aes.createDecipheriv(suite, key, iv); - if (desModes[suite]) return new DES({ key, iv, mode: suite, decrypt: !0 }); - throw new TypeError("invalid suite type"); - } - function getCiphers() { - return Object.keys(desModes).concat(aes.getCiphers()); - } - exports.createCipher = exports.Cipher = createCipher; - exports.createCipheriv = exports.Cipheriv = createCipheriv; - exports.createDecipher = exports.Decipher = createDecipher; - exports.createDecipheriv = exports.Decipheriv = createDecipheriv; - exports.listCiphers = exports.getCiphers = getCiphers; - }, -}); - -// node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js -var require_bn = __commonJS({ - "node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js"(exports, module) { - (function (module2, exports2) { - "use strict"; - function assert(val, msg) { - if (!val) throw new Error(msg || "Assertion failed"); - } - function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - (TempCtor.prototype = superCtor.prototype), - (ctor.prototype = new TempCtor()), - (ctor.prototype.constructor = ctor); - } - function BN(number, base, endian) { - if (BN.isBN(number)) return number; - (this.negative = 0), - (this.words = null), - (this.length = 0), - (this.red = null), - number !== null && - ((base === "le" || base === "be") && ((endian = base), (base = 10)), - this._init(number || 0, base || 10, endian || "be")); - } - typeof module2 == "object" ? (module2.exports = BN) : (exports2.BN = BN), (BN.BN = BN), (BN.wordSize = 26); - var Buffer2; - try { - typeof window < "u" && typeof window.Buffer < "u" - ? (Buffer2 = window.Buffer) - : (Buffer2 = __require("buffer").Buffer); - } catch {} - (BN.isBN = function (num) { - return num instanceof BN - ? !0 - : num !== null && - typeof num == "object" && - num.constructor.wordSize === BN.wordSize && - Array.isArray(num.words); - }), - (BN.max = function (left, right) { - return left.cmp(right) > 0 ? left : right; - }), - (BN.min = function (left, right) { - return left.cmp(right) < 0 ? left : right; - }), - (BN.prototype._init = function (number, base, endian) { - if (typeof number == "number") return this._initNumber(number, base, endian); - if (typeof number == "object") return this._initArray(number, base, endian); - base === "hex" && (base = 16), - assert(base === (base | 0) && base >= 2 && base <= 36), - (number = number.toString().replace(/\s+/g, "")); - var start = 0; - number[0] === "-" && (start++, (this.negative = 1)), - start < number.length && - (base === 16 - ? this._parseHex(number, start, endian) - : (this._parseBase(number, base, start), - endian === "le" && this._initArray(this.toArray(), base, endian))); - }), - (BN.prototype._initNumber = function (number, base, endian) { - number < 0 && ((this.negative = 1), (number = -number)), - number < 67108864 - ? ((this.words = [number & 67108863]), (this.length = 1)) - : number < 4503599627370496 - ? ((this.words = [number & 67108863, (number / 67108864) & 67108863]), (this.length = 2)) - : (assert(number < 9007199254740992), - (this.words = [number & 67108863, (number / 67108864) & 67108863, 1]), - (this.length = 3)), - endian === "le" && this._initArray(this.toArray(), base, endian); - }), - (BN.prototype._initArray = function (number, base, endian) { - if ((assert(typeof number.length == "number"), number.length <= 0)) - return (this.words = [0]), (this.length = 1), this; - (this.length = Math.ceil(number.length / 3)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var j, - w, - off = 0; - if (endian === "be") - for (i = number.length - 1, j = 0; i >= 0; i -= 3) - (w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - else if (endian === "le") - for (i = 0, j = 0; i < number.length; i += 3) - (w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - return this.strip(); - }); - function parseHex4Bits(string, index) { - var c = string.charCodeAt(index); - return c >= 65 && c <= 70 ? c - 55 : c >= 97 && c <= 102 ? c - 87 : (c - 48) & 15; - } - function parseHexByte(string, lowerBound, index) { - var r = parseHex4Bits(string, index); - return index - 1 >= lowerBound && (r |= parseHex4Bits(string, index - 1) << 4), r; - } - BN.prototype._parseHex = function (number, start, endian) { - (this.length = Math.ceil((number.length - start) / 6)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var off = 0, - j = 0, - w; - if (endian === "be") - for (i = number.length - 1; i >= start; i -= 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - else { - var parseLength = number.length - start; - for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - } - this.strip(); - }; - function parseBase(str, start, end, mul) { - for (var r = 0, len = Math.min(str.length, end), i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - (r *= mul), c >= 49 ? (r += c - 49 + 10) : c >= 17 ? (r += c - 17 + 10) : (r += c); - } - return r; - } - (BN.prototype._parseBase = function (number, base, start) { - (this.words = [0]), (this.length = 1); - for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) limbLen++; - limbLen--, (limbPow = (limbPow / base) | 0); - for ( - var total = number.length - start, - mod = total % limbLen, - end = Math.min(total, total - mod) + start, - word = 0, - i = start; - i < end; - i += limbLen - ) - (word = parseBase(number, i, i + limbLen, base)), - this.imuln(limbPow), - this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - if (mod !== 0) { - var pow = 1; - for (word = parseBase(number, i, number.length, base), i = 0; i < mod; i++) pow *= base; - this.imuln(pow), this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - } - this.strip(); - }), - (BN.prototype.copy = function (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) dest.words[i] = this.words[i]; - (dest.length = this.length), (dest.negative = this.negative), (dest.red = this.red); - }), - (BN.prototype.clone = function () { - var r = new BN(null); - return this.copy(r), r; - }), - (BN.prototype._expand = function (size) { - for (; this.length < size; ) this.words[this.length++] = 0; - return this; - }), - (BN.prototype.strip = function () { - for (; this.length > 1 && this.words[this.length - 1] === 0; ) this.length--; - return this._normSign(); - }), - (BN.prototype._normSign = function () { - return this.length === 1 && this.words[0] === 0 && (this.negative = 0), this; - }), - (BN.prototype.inspect = function () { - return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">"; - }); - var zeros = [ - "", - "0", - "00", - "000", - "0000", - "00000", - "000000", - "0000000", - "00000000", - "000000000", - "0000000000", - "00000000000", - "000000000000", - "0000000000000", - "00000000000000", - "000000000000000", - "0000000000000000", - "00000000000000000", - "000000000000000000", - "0000000000000000000", - "00000000000000000000", - "000000000000000000000", - "0000000000000000000000", - "00000000000000000000000", - "000000000000000000000000", - "0000000000000000000000000", - ], - groupSizes = [ - 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, - ], - groupBases = [ - 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, - 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, - 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, - 60466176, - ]; - (BN.prototype.toString = function (base, padding) { - (base = base || 10), (padding = padding | 0 || 1); - var out; - if (base === 16 || base === "hex") { - out = ""; - for (var off = 0, carry = 0, i = 0; i < this.length; i++) { - var w = this.words[i], - word = (((w << off) | carry) & 16777215).toString(16); - (carry = (w >>> (24 - off)) & 16777215), - carry !== 0 || i !== this.length - 1 ? (out = zeros[6 - word.length] + word + out) : (out = word + out), - (off += 2), - off >= 26 && ((off -= 26), i--); - } - for (carry !== 0 && (out = carry.toString(16) + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - if (base === (base | 0) && base >= 2 && base <= 36) { - var groupSize = groupSizes[base], - groupBase = groupBases[base]; - out = ""; - var c = this.clone(); - for (c.negative = 0; !c.isZero(); ) { - var r = c.modn(groupBase).toString(base); - (c = c.idivn(groupBase)), c.isZero() ? (out = r + out) : (out = zeros[groupSize - r.length] + r + out); - } - for (this.isZero() && (out = "0" + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - assert(!1, "Base should be between 2 and 36"); - }), - (BN.prototype.toNumber = function () { - var ret = this.words[0]; - return ( - this.length === 2 - ? (ret += this.words[1] * 67108864) - : this.length === 3 && this.words[2] === 1 - ? (ret += 4503599627370496 + this.words[1] * 67108864) - : this.length > 2 && assert(!1, "Number can only safely store up to 53 bits"), - this.negative !== 0 ? -ret : ret - ); - }), - (BN.prototype.toJSON = function () { - return this.toString(16); - }), - (BN.prototype.toBuffer = function (endian, length) { - return assert(typeof Buffer2 < "u"), this.toArrayLike(Buffer2, endian, length); - }), - (BN.prototype.toArray = function (endian, length) { - return this.toArrayLike(Array, endian, length); - }), - (BN.prototype.toArrayLike = function (ArrayType, endian, length) { - var byteLength = this.byteLength(), - reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, "byte array longer than desired length"), - assert(reqLength > 0, "Requested array length <= 0"), - this.strip(); - var littleEndian = endian === "le", - res = new ArrayType(reqLength), - b, - i, - q = this.clone(); - if (littleEndian) { - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[i] = b); - for (; i < reqLength; i++) res[i] = 0; - } else { - for (i = 0; i < reqLength - byteLength; i++) res[i] = 0; - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[reqLength - i - 1] = b); - } - return res; - }), - Math.clz32 - ? (BN.prototype._countBits = function (w) { - return 32 - Math.clz32(w); - }) - : (BN.prototype._countBits = function (w) { - var t = w, - r = 0; - return ( - t >= 4096 && ((r += 13), (t >>>= 13)), - t >= 64 && ((r += 7), (t >>>= 7)), - t >= 8 && ((r += 4), (t >>>= 4)), - t >= 2 && ((r += 2), (t >>>= 2)), - r + t - ); - }), - (BN.prototype._zeroBits = function (w) { - if (w === 0) return 26; - var t = w, - r = 0; - return ( - (t & 8191) === 0 && ((r += 13), (t >>>= 13)), - (t & 127) === 0 && ((r += 7), (t >>>= 7)), - (t & 15) === 0 && ((r += 4), (t >>>= 4)), - (t & 3) === 0 && ((r += 2), (t >>>= 2)), - (t & 1) === 0 && r++, - r - ); - }), - (BN.prototype.bitLength = function () { - var w = this.words[this.length - 1], - hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }); - function toBitArray(num) { - for (var w = new Array(num.bitLength()), bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0, - wbit = bit % 26; - w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; - } - return w; - } - (BN.prototype.zeroBits = function () { - if (this.isZero()) return 0; - for (var r = 0, i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - if (((r += b), b !== 26)) break; - } - return r; - }), - (BN.prototype.byteLength = function () { - return Math.ceil(this.bitLength() / 8); - }), - (BN.prototype.toTwos = function (width) { - return this.negative !== 0 ? this.abs().inotn(width).iaddn(1) : this.clone(); - }), - (BN.prototype.fromTwos = function (width) { - return this.testn(width - 1) ? this.notn(width).iaddn(1).ineg() : this.clone(); - }), - (BN.prototype.isNeg = function () { - return this.negative !== 0; - }), - (BN.prototype.neg = function () { - return this.clone().ineg(); - }), - (BN.prototype.ineg = function () { - return this.isZero() || (this.negative ^= 1), this; - }), - (BN.prototype.iuor = function (num) { - for (; this.length < num.length; ) this.words[this.length++] = 0; - for (var i = 0; i < num.length; i++) this.words[i] = this.words[i] | num.words[i]; - return this.strip(); - }), - (BN.prototype.ior = function (num) { - return assert((this.negative | num.negative) === 0), this.iuor(num); - }), - (BN.prototype.or = function (num) { - return this.length > num.length ? this.clone().ior(num) : num.clone().ior(this); - }), - (BN.prototype.uor = function (num) { - return this.length > num.length ? this.clone().iuor(num) : num.clone().iuor(this); - }), - (BN.prototype.iuand = function (num) { - var b; - this.length > num.length ? (b = num) : (b = this); - for (var i = 0; i < b.length; i++) this.words[i] = this.words[i] & num.words[i]; - return (this.length = b.length), this.strip(); - }), - (BN.prototype.iand = function (num) { - return assert((this.negative | num.negative) === 0), this.iuand(num); - }), - (BN.prototype.and = function (num) { - return this.length > num.length ? this.clone().iand(num) : num.clone().iand(this); - }), - (BN.prototype.uand = function (num) { - return this.length > num.length ? this.clone().iuand(num) : num.clone().iuand(this); - }), - (BN.prototype.iuxor = function (num) { - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var i = 0; i < b.length; i++) this.words[i] = a.words[i] ^ b.words[i]; - if (this !== a) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = a.length), this.strip(); - }), - (BN.prototype.ixor = function (num) { - return assert((this.negative | num.negative) === 0), this.iuxor(num); - }), - (BN.prototype.xor = function (num) { - return this.length > num.length ? this.clone().ixor(num) : num.clone().ixor(this); - }), - (BN.prototype.uxor = function (num) { - return this.length > num.length ? this.clone().iuxor(num) : num.clone().iuxor(this); - }), - (BN.prototype.inotn = function (width) { - assert(typeof width == "number" && width >= 0); - var bytesNeeded = Math.ceil(width / 26) | 0, - bitsLeft = width % 26; - this._expand(bytesNeeded), bitsLeft > 0 && bytesNeeded--; - for (var i = 0; i < bytesNeeded; i++) this.words[i] = ~this.words[i] & 67108863; - return bitsLeft > 0 && (this.words[i] = ~this.words[i] & (67108863 >> (26 - bitsLeft))), this.strip(); - }), - (BN.prototype.notn = function (width) { - return this.clone().inotn(width); - }), - (BN.prototype.setn = function (bit, val) { - assert(typeof bit == "number" && bit >= 0); - var off = (bit / 26) | 0, - wbit = bit % 26; - return ( - this._expand(off + 1), - val - ? (this.words[off] = this.words[off] | (1 << wbit)) - : (this.words[off] = this.words[off] & ~(1 << wbit)), - this.strip() - ); - }), - (BN.prototype.iadd = function (num) { - var r; - if (this.negative !== 0 && num.negative === 0) - return (this.negative = 0), (r = this.isub(num)), (this.negative ^= 1), this._normSign(); - if (this.negative === 0 && num.negative !== 0) - return (num.negative = 0), (r = this.isub(num)), (num.negative = 1), r._normSign(); - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) + (b.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - if (((this.length = a.length), carry !== 0)) (this.words[this.length] = carry), this.length++; - else if (a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return this; - }), - (BN.prototype.add = function (num) { - var res; - return num.negative !== 0 && this.negative === 0 - ? ((num.negative = 0), (res = this.sub(num)), (num.negative ^= 1), res) - : num.negative === 0 && this.negative !== 0 - ? ((this.negative = 0), (res = num.sub(this)), (this.negative = 1), res) - : this.length > num.length - ? this.clone().iadd(num) - : num.clone().iadd(this); - }), - (BN.prototype.isub = function (num) { - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - return (num.negative = 1), r._normSign(); - } else if (this.negative !== 0) - return (this.negative = 0), this.iadd(num), (this.negative = 1), this._normSign(); - var cmp = this.cmp(num); - if (cmp === 0) return (this.negative = 0), (this.length = 1), (this.words[0] = 0), this; - var a, b; - cmp > 0 ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) - (b.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - if (carry === 0 && i < a.length && a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = Math.max(this.length, i)), a !== this && (this.negative = 1), this.strip(); - }), - (BN.prototype.sub = function (num) { - return this.clone().isub(num); - }); - function smallMulTo(self2, num, out) { - out.negative = num.negative ^ self2.negative; - var len = (self2.length + num.length) | 0; - (out.length = len), (len = (len - 1) | 0); - var a = self2.words[0] | 0, - b = num.words[0] | 0, - r = a * b, - lo = r & 67108863, - carry = (r / 67108864) | 0; - out.words[0] = lo; - for (var k = 1; k < len; k++) { - for ( - var ncarry = carry >>> 26, - rword = carry & 67108863, - maxJ = Math.min(k, num.length - 1), - j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = (k - j) | 0; - (a = self2.words[i] | 0), - (b = num.words[j] | 0), - (r = a * b + rword), - (ncarry += (r / 67108864) | 0), - (rword = r & 67108863); - } - (out.words[k] = rword | 0), (carry = ncarry | 0); - } - return carry !== 0 ? (out.words[k] = carry | 0) : out.length--, out.strip(); - } - var comb10MulTo = function (self2, num, out) { - var a = self2.words, - b = num.words, - o = out.words, - c = 0, - lo, - mid, - hi, - a0 = a[0] | 0, - al0 = a0 & 8191, - ah0 = a0 >>> 13, - a1 = a[1] | 0, - al1 = a1 & 8191, - ah1 = a1 >>> 13, - a2 = a[2] | 0, - al2 = a2 & 8191, - ah2 = a2 >>> 13, - a3 = a[3] | 0, - al3 = a3 & 8191, - ah3 = a3 >>> 13, - a4 = a[4] | 0, - al4 = a4 & 8191, - ah4 = a4 >>> 13, - a5 = a[5] | 0, - al5 = a5 & 8191, - ah5 = a5 >>> 13, - a6 = a[6] | 0, - al6 = a6 & 8191, - ah6 = a6 >>> 13, - a7 = a[7] | 0, - al7 = a7 & 8191, - ah7 = a7 >>> 13, - a8 = a[8] | 0, - al8 = a8 & 8191, - ah8 = a8 >>> 13, - a9 = a[9] | 0, - al9 = a9 & 8191, - ah9 = a9 >>> 13, - b0 = b[0] | 0, - bl0 = b0 & 8191, - bh0 = b0 >>> 13, - b1 = b[1] | 0, - bl1 = b1 & 8191, - bh1 = b1 >>> 13, - b2 = b[2] | 0, - bl2 = b2 & 8191, - bh2 = b2 >>> 13, - b3 = b[3] | 0, - bl3 = b3 & 8191, - bh3 = b3 >>> 13, - b4 = b[4] | 0, - bl4 = b4 & 8191, - bh4 = b4 >>> 13, - b5 = b[5] | 0, - bl5 = b5 & 8191, - bh5 = b5 >>> 13, - b6 = b[6] | 0, - bl6 = b6 & 8191, - bh6 = b6 >>> 13, - b7 = b[7] | 0, - bl7 = b7 & 8191, - bh7 = b7 >>> 13, - b8 = b[8] | 0, - bl8 = b8 & 8191, - bh8 = b8 >>> 13, - b9 = b[9] | 0, - bl9 = b9 & 8191, - bh9 = b9 >>> 13; - (out.negative = self2.negative ^ num.negative), - (out.length = 19), - (lo = Math.imul(al0, bl0)), - (mid = Math.imul(al0, bh0)), - (mid = (mid + Math.imul(ah0, bl0)) | 0), - (hi = Math.imul(ah0, bh0)); - var w0 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0), - (w0 &= 67108863), - (lo = Math.imul(al1, bl0)), - (mid = Math.imul(al1, bh0)), - (mid = (mid + Math.imul(ah1, bl0)) | 0), - (hi = Math.imul(ah1, bh0)), - (lo = (lo + Math.imul(al0, bl1)) | 0), - (mid = (mid + Math.imul(al0, bh1)) | 0), - (mid = (mid + Math.imul(ah0, bl1)) | 0), - (hi = (hi + Math.imul(ah0, bh1)) | 0); - var w1 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0), - (w1 &= 67108863), - (lo = Math.imul(al2, bl0)), - (mid = Math.imul(al2, bh0)), - (mid = (mid + Math.imul(ah2, bl0)) | 0), - (hi = Math.imul(ah2, bh0)), - (lo = (lo + Math.imul(al1, bl1)) | 0), - (mid = (mid + Math.imul(al1, bh1)) | 0), - (mid = (mid + Math.imul(ah1, bl1)) | 0), - (hi = (hi + Math.imul(ah1, bh1)) | 0), - (lo = (lo + Math.imul(al0, bl2)) | 0), - (mid = (mid + Math.imul(al0, bh2)) | 0), - (mid = (mid + Math.imul(ah0, bl2)) | 0), - (hi = (hi + Math.imul(ah0, bh2)) | 0); - var w2 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0), - (w2 &= 67108863), - (lo = Math.imul(al3, bl0)), - (mid = Math.imul(al3, bh0)), - (mid = (mid + Math.imul(ah3, bl0)) | 0), - (hi = Math.imul(ah3, bh0)), - (lo = (lo + Math.imul(al2, bl1)) | 0), - (mid = (mid + Math.imul(al2, bh1)) | 0), - (mid = (mid + Math.imul(ah2, bl1)) | 0), - (hi = (hi + Math.imul(ah2, bh1)) | 0), - (lo = (lo + Math.imul(al1, bl2)) | 0), - (mid = (mid + Math.imul(al1, bh2)) | 0), - (mid = (mid + Math.imul(ah1, bl2)) | 0), - (hi = (hi + Math.imul(ah1, bh2)) | 0), - (lo = (lo + Math.imul(al0, bl3)) | 0), - (mid = (mid + Math.imul(al0, bh3)) | 0), - (mid = (mid + Math.imul(ah0, bl3)) | 0), - (hi = (hi + Math.imul(ah0, bh3)) | 0); - var w3 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0), - (w3 &= 67108863), - (lo = Math.imul(al4, bl0)), - (mid = Math.imul(al4, bh0)), - (mid = (mid + Math.imul(ah4, bl0)) | 0), - (hi = Math.imul(ah4, bh0)), - (lo = (lo + Math.imul(al3, bl1)) | 0), - (mid = (mid + Math.imul(al3, bh1)) | 0), - (mid = (mid + Math.imul(ah3, bl1)) | 0), - (hi = (hi + Math.imul(ah3, bh1)) | 0), - (lo = (lo + Math.imul(al2, bl2)) | 0), - (mid = (mid + Math.imul(al2, bh2)) | 0), - (mid = (mid + Math.imul(ah2, bl2)) | 0), - (hi = (hi + Math.imul(ah2, bh2)) | 0), - (lo = (lo + Math.imul(al1, bl3)) | 0), - (mid = (mid + Math.imul(al1, bh3)) | 0), - (mid = (mid + Math.imul(ah1, bl3)) | 0), - (hi = (hi + Math.imul(ah1, bh3)) | 0), - (lo = (lo + Math.imul(al0, bl4)) | 0), - (mid = (mid + Math.imul(al0, bh4)) | 0), - (mid = (mid + Math.imul(ah0, bl4)) | 0), - (hi = (hi + Math.imul(ah0, bh4)) | 0); - var w4 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0), - (w4 &= 67108863), - (lo = Math.imul(al5, bl0)), - (mid = Math.imul(al5, bh0)), - (mid = (mid + Math.imul(ah5, bl0)) | 0), - (hi = Math.imul(ah5, bh0)), - (lo = (lo + Math.imul(al4, bl1)) | 0), - (mid = (mid + Math.imul(al4, bh1)) | 0), - (mid = (mid + Math.imul(ah4, bl1)) | 0), - (hi = (hi + Math.imul(ah4, bh1)) | 0), - (lo = (lo + Math.imul(al3, bl2)) | 0), - (mid = (mid + Math.imul(al3, bh2)) | 0), - (mid = (mid + Math.imul(ah3, bl2)) | 0), - (hi = (hi + Math.imul(ah3, bh2)) | 0), - (lo = (lo + Math.imul(al2, bl3)) | 0), - (mid = (mid + Math.imul(al2, bh3)) | 0), - (mid = (mid + Math.imul(ah2, bl3)) | 0), - (hi = (hi + Math.imul(ah2, bh3)) | 0), - (lo = (lo + Math.imul(al1, bl4)) | 0), - (mid = (mid + Math.imul(al1, bh4)) | 0), - (mid = (mid + Math.imul(ah1, bl4)) | 0), - (hi = (hi + Math.imul(ah1, bh4)) | 0), - (lo = (lo + Math.imul(al0, bl5)) | 0), - (mid = (mid + Math.imul(al0, bh5)) | 0), - (mid = (mid + Math.imul(ah0, bl5)) | 0), - (hi = (hi + Math.imul(ah0, bh5)) | 0); - var w5 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0), - (w5 &= 67108863), - (lo = Math.imul(al6, bl0)), - (mid = Math.imul(al6, bh0)), - (mid = (mid + Math.imul(ah6, bl0)) | 0), - (hi = Math.imul(ah6, bh0)), - (lo = (lo + Math.imul(al5, bl1)) | 0), - (mid = (mid + Math.imul(al5, bh1)) | 0), - (mid = (mid + Math.imul(ah5, bl1)) | 0), - (hi = (hi + Math.imul(ah5, bh1)) | 0), - (lo = (lo + Math.imul(al4, bl2)) | 0), - (mid = (mid + Math.imul(al4, bh2)) | 0), - (mid = (mid + Math.imul(ah4, bl2)) | 0), - (hi = (hi + Math.imul(ah4, bh2)) | 0), - (lo = (lo + Math.imul(al3, bl3)) | 0), - (mid = (mid + Math.imul(al3, bh3)) | 0), - (mid = (mid + Math.imul(ah3, bl3)) | 0), - (hi = (hi + Math.imul(ah3, bh3)) | 0), - (lo = (lo + Math.imul(al2, bl4)) | 0), - (mid = (mid + Math.imul(al2, bh4)) | 0), - (mid = (mid + Math.imul(ah2, bl4)) | 0), - (hi = (hi + Math.imul(ah2, bh4)) | 0), - (lo = (lo + Math.imul(al1, bl5)) | 0), - (mid = (mid + Math.imul(al1, bh5)) | 0), - (mid = (mid + Math.imul(ah1, bl5)) | 0), - (hi = (hi + Math.imul(ah1, bh5)) | 0), - (lo = (lo + Math.imul(al0, bl6)) | 0), - (mid = (mid + Math.imul(al0, bh6)) | 0), - (mid = (mid + Math.imul(ah0, bl6)) | 0), - (hi = (hi + Math.imul(ah0, bh6)) | 0); - var w6 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0), - (w6 &= 67108863), - (lo = Math.imul(al7, bl0)), - (mid = Math.imul(al7, bh0)), - (mid = (mid + Math.imul(ah7, bl0)) | 0), - (hi = Math.imul(ah7, bh0)), - (lo = (lo + Math.imul(al6, bl1)) | 0), - (mid = (mid + Math.imul(al6, bh1)) | 0), - (mid = (mid + Math.imul(ah6, bl1)) | 0), - (hi = (hi + Math.imul(ah6, bh1)) | 0), - (lo = (lo + Math.imul(al5, bl2)) | 0), - (mid = (mid + Math.imul(al5, bh2)) | 0), - (mid = (mid + Math.imul(ah5, bl2)) | 0), - (hi = (hi + Math.imul(ah5, bh2)) | 0), - (lo = (lo + Math.imul(al4, bl3)) | 0), - (mid = (mid + Math.imul(al4, bh3)) | 0), - (mid = (mid + Math.imul(ah4, bl3)) | 0), - (hi = (hi + Math.imul(ah4, bh3)) | 0), - (lo = (lo + Math.imul(al3, bl4)) | 0), - (mid = (mid + Math.imul(al3, bh4)) | 0), - (mid = (mid + Math.imul(ah3, bl4)) | 0), - (hi = (hi + Math.imul(ah3, bh4)) | 0), - (lo = (lo + Math.imul(al2, bl5)) | 0), - (mid = (mid + Math.imul(al2, bh5)) | 0), - (mid = (mid + Math.imul(ah2, bl5)) | 0), - (hi = (hi + Math.imul(ah2, bh5)) | 0), - (lo = (lo + Math.imul(al1, bl6)) | 0), - (mid = (mid + Math.imul(al1, bh6)) | 0), - (mid = (mid + Math.imul(ah1, bl6)) | 0), - (hi = (hi + Math.imul(ah1, bh6)) | 0), - (lo = (lo + Math.imul(al0, bl7)) | 0), - (mid = (mid + Math.imul(al0, bh7)) | 0), - (mid = (mid + Math.imul(ah0, bl7)) | 0), - (hi = (hi + Math.imul(ah0, bh7)) | 0); - var w7 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0), - (w7 &= 67108863), - (lo = Math.imul(al8, bl0)), - (mid = Math.imul(al8, bh0)), - (mid = (mid + Math.imul(ah8, bl0)) | 0), - (hi = Math.imul(ah8, bh0)), - (lo = (lo + Math.imul(al7, bl1)) | 0), - (mid = (mid + Math.imul(al7, bh1)) | 0), - (mid = (mid + Math.imul(ah7, bl1)) | 0), - (hi = (hi + Math.imul(ah7, bh1)) | 0), - (lo = (lo + Math.imul(al6, bl2)) | 0), - (mid = (mid + Math.imul(al6, bh2)) | 0), - (mid = (mid + Math.imul(ah6, bl2)) | 0), - (hi = (hi + Math.imul(ah6, bh2)) | 0), - (lo = (lo + Math.imul(al5, bl3)) | 0), - (mid = (mid + Math.imul(al5, bh3)) | 0), - (mid = (mid + Math.imul(ah5, bl3)) | 0), - (hi = (hi + Math.imul(ah5, bh3)) | 0), - (lo = (lo + Math.imul(al4, bl4)) | 0), - (mid = (mid + Math.imul(al4, bh4)) | 0), - (mid = (mid + Math.imul(ah4, bl4)) | 0), - (hi = (hi + Math.imul(ah4, bh4)) | 0), - (lo = (lo + Math.imul(al3, bl5)) | 0), - (mid = (mid + Math.imul(al3, bh5)) | 0), - (mid = (mid + Math.imul(ah3, bl5)) | 0), - (hi = (hi + Math.imul(ah3, bh5)) | 0), - (lo = (lo + Math.imul(al2, bl6)) | 0), - (mid = (mid + Math.imul(al2, bh6)) | 0), - (mid = (mid + Math.imul(ah2, bl6)) | 0), - (hi = (hi + Math.imul(ah2, bh6)) | 0), - (lo = (lo + Math.imul(al1, bl7)) | 0), - (mid = (mid + Math.imul(al1, bh7)) | 0), - (mid = (mid + Math.imul(ah1, bl7)) | 0), - (hi = (hi + Math.imul(ah1, bh7)) | 0), - (lo = (lo + Math.imul(al0, bl8)) | 0), - (mid = (mid + Math.imul(al0, bh8)) | 0), - (mid = (mid + Math.imul(ah0, bl8)) | 0), - (hi = (hi + Math.imul(ah0, bh8)) | 0); - var w8 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0), - (w8 &= 67108863), - (lo = Math.imul(al9, bl0)), - (mid = Math.imul(al9, bh0)), - (mid = (mid + Math.imul(ah9, bl0)) | 0), - (hi = Math.imul(ah9, bh0)), - (lo = (lo + Math.imul(al8, bl1)) | 0), - (mid = (mid + Math.imul(al8, bh1)) | 0), - (mid = (mid + Math.imul(ah8, bl1)) | 0), - (hi = (hi + Math.imul(ah8, bh1)) | 0), - (lo = (lo + Math.imul(al7, bl2)) | 0), - (mid = (mid + Math.imul(al7, bh2)) | 0), - (mid = (mid + Math.imul(ah7, bl2)) | 0), - (hi = (hi + Math.imul(ah7, bh2)) | 0), - (lo = (lo + Math.imul(al6, bl3)) | 0), - (mid = (mid + Math.imul(al6, bh3)) | 0), - (mid = (mid + Math.imul(ah6, bl3)) | 0), - (hi = (hi + Math.imul(ah6, bh3)) | 0), - (lo = (lo + Math.imul(al5, bl4)) | 0), - (mid = (mid + Math.imul(al5, bh4)) | 0), - (mid = (mid + Math.imul(ah5, bl4)) | 0), - (hi = (hi + Math.imul(ah5, bh4)) | 0), - (lo = (lo + Math.imul(al4, bl5)) | 0), - (mid = (mid + Math.imul(al4, bh5)) | 0), - (mid = (mid + Math.imul(ah4, bl5)) | 0), - (hi = (hi + Math.imul(ah4, bh5)) | 0), - (lo = (lo + Math.imul(al3, bl6)) | 0), - (mid = (mid + Math.imul(al3, bh6)) | 0), - (mid = (mid + Math.imul(ah3, bl6)) | 0), - (hi = (hi + Math.imul(ah3, bh6)) | 0), - (lo = (lo + Math.imul(al2, bl7)) | 0), - (mid = (mid + Math.imul(al2, bh7)) | 0), - (mid = (mid + Math.imul(ah2, bl7)) | 0), - (hi = (hi + Math.imul(ah2, bh7)) | 0), - (lo = (lo + Math.imul(al1, bl8)) | 0), - (mid = (mid + Math.imul(al1, bh8)) | 0), - (mid = (mid + Math.imul(ah1, bl8)) | 0), - (hi = (hi + Math.imul(ah1, bh8)) | 0), - (lo = (lo + Math.imul(al0, bl9)) | 0), - (mid = (mid + Math.imul(al0, bh9)) | 0), - (mid = (mid + Math.imul(ah0, bl9)) | 0), - (hi = (hi + Math.imul(ah0, bh9)) | 0); - var w9 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0), - (w9 &= 67108863), - (lo = Math.imul(al9, bl1)), - (mid = Math.imul(al9, bh1)), - (mid = (mid + Math.imul(ah9, bl1)) | 0), - (hi = Math.imul(ah9, bh1)), - (lo = (lo + Math.imul(al8, bl2)) | 0), - (mid = (mid + Math.imul(al8, bh2)) | 0), - (mid = (mid + Math.imul(ah8, bl2)) | 0), - (hi = (hi + Math.imul(ah8, bh2)) | 0), - (lo = (lo + Math.imul(al7, bl3)) | 0), - (mid = (mid + Math.imul(al7, bh3)) | 0), - (mid = (mid + Math.imul(ah7, bl3)) | 0), - (hi = (hi + Math.imul(ah7, bh3)) | 0), - (lo = (lo + Math.imul(al6, bl4)) | 0), - (mid = (mid + Math.imul(al6, bh4)) | 0), - (mid = (mid + Math.imul(ah6, bl4)) | 0), - (hi = (hi + Math.imul(ah6, bh4)) | 0), - (lo = (lo + Math.imul(al5, bl5)) | 0), - (mid = (mid + Math.imul(al5, bh5)) | 0), - (mid = (mid + Math.imul(ah5, bl5)) | 0), - (hi = (hi + Math.imul(ah5, bh5)) | 0), - (lo = (lo + Math.imul(al4, bl6)) | 0), - (mid = (mid + Math.imul(al4, bh6)) | 0), - (mid = (mid + Math.imul(ah4, bl6)) | 0), - (hi = (hi + Math.imul(ah4, bh6)) | 0), - (lo = (lo + Math.imul(al3, bl7)) | 0), - (mid = (mid + Math.imul(al3, bh7)) | 0), - (mid = (mid + Math.imul(ah3, bl7)) | 0), - (hi = (hi + Math.imul(ah3, bh7)) | 0), - (lo = (lo + Math.imul(al2, bl8)) | 0), - (mid = (mid + Math.imul(al2, bh8)) | 0), - (mid = (mid + Math.imul(ah2, bl8)) | 0), - (hi = (hi + Math.imul(ah2, bh8)) | 0), - (lo = (lo + Math.imul(al1, bl9)) | 0), - (mid = (mid + Math.imul(al1, bh9)) | 0), - (mid = (mid + Math.imul(ah1, bl9)) | 0), - (hi = (hi + Math.imul(ah1, bh9)) | 0); - var w10 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0), - (w10 &= 67108863), - (lo = Math.imul(al9, bl2)), - (mid = Math.imul(al9, bh2)), - (mid = (mid + Math.imul(ah9, bl2)) | 0), - (hi = Math.imul(ah9, bh2)), - (lo = (lo + Math.imul(al8, bl3)) | 0), - (mid = (mid + Math.imul(al8, bh3)) | 0), - (mid = (mid + Math.imul(ah8, bl3)) | 0), - (hi = (hi + Math.imul(ah8, bh3)) | 0), - (lo = (lo + Math.imul(al7, bl4)) | 0), - (mid = (mid + Math.imul(al7, bh4)) | 0), - (mid = (mid + Math.imul(ah7, bl4)) | 0), - (hi = (hi + Math.imul(ah7, bh4)) | 0), - (lo = (lo + Math.imul(al6, bl5)) | 0), - (mid = (mid + Math.imul(al6, bh5)) | 0), - (mid = (mid + Math.imul(ah6, bl5)) | 0), - (hi = (hi + Math.imul(ah6, bh5)) | 0), - (lo = (lo + Math.imul(al5, bl6)) | 0), - (mid = (mid + Math.imul(al5, bh6)) | 0), - (mid = (mid + Math.imul(ah5, bl6)) | 0), - (hi = (hi + Math.imul(ah5, bh6)) | 0), - (lo = (lo + Math.imul(al4, bl7)) | 0), - (mid = (mid + Math.imul(al4, bh7)) | 0), - (mid = (mid + Math.imul(ah4, bl7)) | 0), - (hi = (hi + Math.imul(ah4, bh7)) | 0), - (lo = (lo + Math.imul(al3, bl8)) | 0), - (mid = (mid + Math.imul(al3, bh8)) | 0), - (mid = (mid + Math.imul(ah3, bl8)) | 0), - (hi = (hi + Math.imul(ah3, bh8)) | 0), - (lo = (lo + Math.imul(al2, bl9)) | 0), - (mid = (mid + Math.imul(al2, bh9)) | 0), - (mid = (mid + Math.imul(ah2, bl9)) | 0), - (hi = (hi + Math.imul(ah2, bh9)) | 0); - var w11 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0), - (w11 &= 67108863), - (lo = Math.imul(al9, bl3)), - (mid = Math.imul(al9, bh3)), - (mid = (mid + Math.imul(ah9, bl3)) | 0), - (hi = Math.imul(ah9, bh3)), - (lo = (lo + Math.imul(al8, bl4)) | 0), - (mid = (mid + Math.imul(al8, bh4)) | 0), - (mid = (mid + Math.imul(ah8, bl4)) | 0), - (hi = (hi + Math.imul(ah8, bh4)) | 0), - (lo = (lo + Math.imul(al7, bl5)) | 0), - (mid = (mid + Math.imul(al7, bh5)) | 0), - (mid = (mid + Math.imul(ah7, bl5)) | 0), - (hi = (hi + Math.imul(ah7, bh5)) | 0), - (lo = (lo + Math.imul(al6, bl6)) | 0), - (mid = (mid + Math.imul(al6, bh6)) | 0), - (mid = (mid + Math.imul(ah6, bl6)) | 0), - (hi = (hi + Math.imul(ah6, bh6)) | 0), - (lo = (lo + Math.imul(al5, bl7)) | 0), - (mid = (mid + Math.imul(al5, bh7)) | 0), - (mid = (mid + Math.imul(ah5, bl7)) | 0), - (hi = (hi + Math.imul(ah5, bh7)) | 0), - (lo = (lo + Math.imul(al4, bl8)) | 0), - (mid = (mid + Math.imul(al4, bh8)) | 0), - (mid = (mid + Math.imul(ah4, bl8)) | 0), - (hi = (hi + Math.imul(ah4, bh8)) | 0), - (lo = (lo + Math.imul(al3, bl9)) | 0), - (mid = (mid + Math.imul(al3, bh9)) | 0), - (mid = (mid + Math.imul(ah3, bl9)) | 0), - (hi = (hi + Math.imul(ah3, bh9)) | 0); - var w12 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0), - (w12 &= 67108863), - (lo = Math.imul(al9, bl4)), - (mid = Math.imul(al9, bh4)), - (mid = (mid + Math.imul(ah9, bl4)) | 0), - (hi = Math.imul(ah9, bh4)), - (lo = (lo + Math.imul(al8, bl5)) | 0), - (mid = (mid + Math.imul(al8, bh5)) | 0), - (mid = (mid + Math.imul(ah8, bl5)) | 0), - (hi = (hi + Math.imul(ah8, bh5)) | 0), - (lo = (lo + Math.imul(al7, bl6)) | 0), - (mid = (mid + Math.imul(al7, bh6)) | 0), - (mid = (mid + Math.imul(ah7, bl6)) | 0), - (hi = (hi + Math.imul(ah7, bh6)) | 0), - (lo = (lo + Math.imul(al6, bl7)) | 0), - (mid = (mid + Math.imul(al6, bh7)) | 0), - (mid = (mid + Math.imul(ah6, bl7)) | 0), - (hi = (hi + Math.imul(ah6, bh7)) | 0), - (lo = (lo + Math.imul(al5, bl8)) | 0), - (mid = (mid + Math.imul(al5, bh8)) | 0), - (mid = (mid + Math.imul(ah5, bl8)) | 0), - (hi = (hi + Math.imul(ah5, bh8)) | 0), - (lo = (lo + Math.imul(al4, bl9)) | 0), - (mid = (mid + Math.imul(al4, bh9)) | 0), - (mid = (mid + Math.imul(ah4, bl9)) | 0), - (hi = (hi + Math.imul(ah4, bh9)) | 0); - var w13 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0), - (w13 &= 67108863), - (lo = Math.imul(al9, bl5)), - (mid = Math.imul(al9, bh5)), - (mid = (mid + Math.imul(ah9, bl5)) | 0), - (hi = Math.imul(ah9, bh5)), - (lo = (lo + Math.imul(al8, bl6)) | 0), - (mid = (mid + Math.imul(al8, bh6)) | 0), - (mid = (mid + Math.imul(ah8, bl6)) | 0), - (hi = (hi + Math.imul(ah8, bh6)) | 0), - (lo = (lo + Math.imul(al7, bl7)) | 0), - (mid = (mid + Math.imul(al7, bh7)) | 0), - (mid = (mid + Math.imul(ah7, bl7)) | 0), - (hi = (hi + Math.imul(ah7, bh7)) | 0), - (lo = (lo + Math.imul(al6, bl8)) | 0), - (mid = (mid + Math.imul(al6, bh8)) | 0), - (mid = (mid + Math.imul(ah6, bl8)) | 0), - (hi = (hi + Math.imul(ah6, bh8)) | 0), - (lo = (lo + Math.imul(al5, bl9)) | 0), - (mid = (mid + Math.imul(al5, bh9)) | 0), - (mid = (mid + Math.imul(ah5, bl9)) | 0), - (hi = (hi + Math.imul(ah5, bh9)) | 0); - var w14 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0), - (w14 &= 67108863), - (lo = Math.imul(al9, bl6)), - (mid = Math.imul(al9, bh6)), - (mid = (mid + Math.imul(ah9, bl6)) | 0), - (hi = Math.imul(ah9, bh6)), - (lo = (lo + Math.imul(al8, bl7)) | 0), - (mid = (mid + Math.imul(al8, bh7)) | 0), - (mid = (mid + Math.imul(ah8, bl7)) | 0), - (hi = (hi + Math.imul(ah8, bh7)) | 0), - (lo = (lo + Math.imul(al7, bl8)) | 0), - (mid = (mid + Math.imul(al7, bh8)) | 0), - (mid = (mid + Math.imul(ah7, bl8)) | 0), - (hi = (hi + Math.imul(ah7, bh8)) | 0), - (lo = (lo + Math.imul(al6, bl9)) | 0), - (mid = (mid + Math.imul(al6, bh9)) | 0), - (mid = (mid + Math.imul(ah6, bl9)) | 0), - (hi = (hi + Math.imul(ah6, bh9)) | 0); - var w15 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0), - (w15 &= 67108863), - (lo = Math.imul(al9, bl7)), - (mid = Math.imul(al9, bh7)), - (mid = (mid + Math.imul(ah9, bl7)) | 0), - (hi = Math.imul(ah9, bh7)), - (lo = (lo + Math.imul(al8, bl8)) | 0), - (mid = (mid + Math.imul(al8, bh8)) | 0), - (mid = (mid + Math.imul(ah8, bl8)) | 0), - (hi = (hi + Math.imul(ah8, bh8)) | 0), - (lo = (lo + Math.imul(al7, bl9)) | 0), - (mid = (mid + Math.imul(al7, bh9)) | 0), - (mid = (mid + Math.imul(ah7, bl9)) | 0), - (hi = (hi + Math.imul(ah7, bh9)) | 0); - var w16 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0), - (w16 &= 67108863), - (lo = Math.imul(al9, bl8)), - (mid = Math.imul(al9, bh8)), - (mid = (mid + Math.imul(ah9, bl8)) | 0), - (hi = Math.imul(ah9, bh8)), - (lo = (lo + Math.imul(al8, bl9)) | 0), - (mid = (mid + Math.imul(al8, bh9)) | 0), - (mid = (mid + Math.imul(ah8, bl9)) | 0), - (hi = (hi + Math.imul(ah8, bh9)) | 0); - var w17 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0), - (w17 &= 67108863), - (lo = Math.imul(al9, bl9)), - (mid = Math.imul(al9, bh9)), - (mid = (mid + Math.imul(ah9, bl9)) | 0), - (hi = Math.imul(ah9, bh9)); - var w18 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - return ( - (c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0), - (w18 &= 67108863), - (o[0] = w0), - (o[1] = w1), - (o[2] = w2), - (o[3] = w3), - (o[4] = w4), - (o[5] = w5), - (o[6] = w6), - (o[7] = w7), - (o[8] = w8), - (o[9] = w9), - (o[10] = w10), - (o[11] = w11), - (o[12] = w12), - (o[13] = w13), - (o[14] = w14), - (o[15] = w15), - (o[16] = w16), - (o[17] = w17), - (o[18] = w18), - c !== 0 && ((o[19] = c), out.length++), - out - ); - }; - Math.imul || (comb10MulTo = smallMulTo); - function bigMulTo(self2, num, out) { - (out.negative = num.negative ^ self2.negative), (out.length = self2.length + num.length); - for (var carry = 0, hncarry = 0, k = 0; k < out.length - 1; k++) { - var ncarry = hncarry; - hncarry = 0; - for ( - var rword = carry & 67108863, maxJ = Math.min(k, num.length - 1), j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = k - j, - a = self2.words[i] | 0, - b = num.words[j] | 0, - r = a * b, - lo = r & 67108863; - (ncarry = (ncarry + ((r / 67108864) | 0)) | 0), - (lo = (lo + rword) | 0), - (rword = lo & 67108863), - (ncarry = (ncarry + (lo >>> 26)) | 0), - (hncarry += ncarry >>> 26), - (ncarry &= 67108863); - } - (out.words[k] = rword), (carry = ncarry), (ncarry = hncarry); - } - return carry !== 0 ? (out.words[k] = carry) : out.length--, out.strip(); - } - function jumboMulTo(self2, num, out) { - var fftm = new FFTM(); - return fftm.mulp(self2, num, out); - } - BN.prototype.mulTo = function (num, out) { - var res, - len = this.length + num.length; - return ( - this.length === 10 && num.length === 10 - ? (res = comb10MulTo(this, num, out)) - : len < 63 - ? (res = smallMulTo(this, num, out)) - : len < 1024 - ? (res = bigMulTo(this, num, out)) - : (res = jumboMulTo(this, num, out)), - res - ); - }; - function FFTM(x, y) { - (this.x = x), (this.y = y); - } - (FFTM.prototype.makeRBT = function (N) { - for (var t = new Array(N), l = BN.prototype._countBits(N) - 1, i = 0; i < N; i++) t[i] = this.revBin(i, l, N); - return t; - }), - (FFTM.prototype.revBin = function (x, l, N) { - if (x === 0 || x === N - 1) return x; - for (var rb = 0, i = 0; i < l; i++) (rb |= (x & 1) << (l - i - 1)), (x >>= 1); - return rb; - }), - (FFTM.prototype.permute = function (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) (rtws[i] = rws[rbt[i]]), (itws[i] = iws[rbt[i]]); - }), - (FFTM.prototype.transform = function (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - for (var s = 1; s < N; s <<= 1) - for ( - var l = s << 1, rtwdf = Math.cos((2 * Math.PI) / l), itwdf = Math.sin((2 * Math.PI) / l), p = 0; - p < N; - p += l - ) - for (var rtwdf_ = rtwdf, itwdf_ = itwdf, j = 0; j < s; j++) { - var re = rtws[p + j], - ie = itws[p + j], - ro = rtws[p + j + s], - io = itws[p + j + s], - rx = rtwdf_ * ro - itwdf_ * io; - (io = rtwdf_ * io + itwdf_ * ro), - (ro = rx), - (rtws[p + j] = re + ro), - (itws[p + j] = ie + io), - (rtws[p + j + s] = re - ro), - (itws[p + j + s] = ie - io), - j !== l && - ((rx = rtwdf * rtwdf_ - itwdf * itwdf_), (itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_), (rtwdf_ = rx)); - } - }), - (FFTM.prototype.guessLen13b = function (n, m) { - var N = Math.max(m, n) | 1, - odd = N & 1, - i = 0; - for (N = (N / 2) | 0; N; N = N >>> 1) i++; - return 1 << (i + 1 + odd); - }), - (FFTM.prototype.conjugate = function (rws, iws, N) { - if (!(N <= 1)) - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - (rws[i] = rws[N - i - 1]), - (rws[N - i - 1] = t), - (t = iws[i]), - (iws[i] = -iws[N - i - 1]), - (iws[N - i - 1] = -t); - } - }), - (FFTM.prototype.normalize13b = function (ws, N) { - for (var carry = 0, i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; - (ws[i] = w & 67108863), w < 67108864 ? (carry = 0) : (carry = (w / 67108864) | 0); - } - return ws; - }), - (FFTM.prototype.convert13b = function (ws, len, rws, N) { - for (var carry = 0, i = 0; i < len; i++) - (carry = carry + (ws[i] | 0)), - (rws[2 * i] = carry & 8191), - (carry = carry >>> 13), - (rws[2 * i + 1] = carry & 8191), - (carry = carry >>> 13); - for (i = 2 * len; i < N; ++i) rws[i] = 0; - assert(carry === 0), assert((carry & -8192) === 0); - }), - (FFTM.prototype.stub = function (N) { - for (var ph = new Array(N), i = 0; i < N; i++) ph[i] = 0; - return ph; - }), - (FFTM.prototype.mulp = function (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length), - rbt = this.makeRBT(N), - _ = this.stub(N), - rws = new Array(N), - rwst = new Array(N), - iwst = new Array(N), - nrws = new Array(N), - nrwst = new Array(N), - niwst = new Array(N), - rmws = out.words; - (rmws.length = N), - this.convert13b(x.words, x.length, rws, N), - this.convert13b(y.words, y.length, nrws, N), - this.transform(rws, _, rwst, iwst, N, rbt), - this.transform(nrws, _, nrwst, niwst, N, rbt); - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - (iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]), (rwst[i] = rx); - } - return ( - this.conjugate(rwst, iwst, N), - this.transform(rwst, iwst, rmws, _, N, rbt), - this.conjugate(rmws, _, N), - this.normalize13b(rmws, N), - (out.negative = x.negative ^ y.negative), - (out.length = x.length + y.length), - out.strip() - ); - }), - (BN.prototype.mul = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), this.mulTo(num, out); - }), - (BN.prototype.mulf = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), jumboMulTo(this, num, out); - }), - (BN.prototype.imul = function (num) { - return this.clone().mulTo(num, this); - }), - (BN.prototype.imuln = function (num) { - assert(typeof num == "number"), assert(num < 67108864); - for (var carry = 0, i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num, - lo = (w & 67108863) + (carry & 67108863); - (carry >>= 26), (carry += (w / 67108864) | 0), (carry += lo >>> 26), (this.words[i] = lo & 67108863); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.muln = function (num) { - return this.clone().imuln(num); - }), - (BN.prototype.sqr = function () { - return this.mul(this); - }), - (BN.prototype.isqr = function () { - return this.imul(this.clone()); - }), - (BN.prototype.pow = function (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - for (var res = this, i = 0; i < w.length && w[i] === 0; i++, res = res.sqr()); - if (++i < w.length) for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) w[i] !== 0 && (res = res.mul(q)); - return res; - }), - (BN.prototype.iushln = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26, - carryMask = (67108863 >>> (26 - r)) << (26 - r), - i; - if (r !== 0) { - var carry = 0; - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask, - c = ((this.words[i] | 0) - newCarry) << r; - (this.words[i] = c | carry), (carry = newCarry >>> (26 - r)); - } - carry && ((this.words[i] = carry), this.length++); - } - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) this.words[i + s] = this.words[i]; - for (i = 0; i < s; i++) this.words[i] = 0; - this.length += s; - } - return this.strip(); - }), - (BN.prototype.ishln = function (bits) { - return assert(this.negative === 0), this.iushln(bits); - }), - (BN.prototype.iushrn = function (bits, hint, extended) { - assert(typeof bits == "number" && bits >= 0); - var h; - hint ? (h = (hint - (hint % 26)) / 26) : (h = 0); - var r = bits % 26, - s = Math.min((bits - r) / 26, this.length), - mask = 67108863 ^ ((67108863 >>> r) << r), - maskedWords = extended; - if (((h -= s), (h = Math.max(0, h)), maskedWords)) { - for (var i = 0; i < s; i++) maskedWords.words[i] = this.words[i]; - maskedWords.length = s; - } - if (s !== 0) - if (this.length > s) for (this.length -= s, i = 0; i < this.length; i++) this.words[i] = this.words[i + s]; - else (this.words[0] = 0), (this.length = 1); - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - (this.words[i] = (carry << (26 - r)) | (word >>> r)), (carry = word & mask); - } - return ( - maskedWords && carry !== 0 && (maskedWords.words[maskedWords.length++] = carry), - this.length === 0 && ((this.words[0] = 0), (this.length = 1)), - this.strip() - ); - }), - (BN.prototype.ishrn = function (bits, hint, extended) { - return assert(this.negative === 0), this.iushrn(bits, hint, extended); - }), - (BN.prototype.shln = function (bits) { - return this.clone().ishln(bits); - }), - (BN.prototype.ushln = function (bits) { - return this.clone().iushln(bits); - }), - (BN.prototype.shrn = function (bits) { - return this.clone().ishrn(bits); - }), - (BN.prototype.ushrn = function (bits) { - return this.clone().iushrn(bits); - }), - (BN.prototype.testn = function (bit) { - assert(typeof bit == "number" && bit >= 0); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return !1; - var w = this.words[s]; - return !!(w & q); - }), - (BN.prototype.imaskn = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26; - if ((assert(this.negative === 0, "imaskn works only with positive numbers"), this.length <= s)) return this; - if ((r !== 0 && s++, (this.length = Math.min(s, this.length)), r !== 0)) { - var mask = 67108863 ^ ((67108863 >>> r) << r); - this.words[this.length - 1] &= mask; - } - return this.strip(); - }), - (BN.prototype.maskn = function (bits) { - return this.clone().imaskn(bits); - }), - (BN.prototype.iaddn = function (num) { - return ( - assert(typeof num == "number"), - assert(num < 67108864), - num < 0 - ? this.isubn(-num) - : this.negative !== 0 - ? this.length === 1 && (this.words[0] | 0) < num - ? ((this.words[0] = num - (this.words[0] | 0)), (this.negative = 0), this) - : ((this.negative = 0), this.isubn(num), (this.negative = 1), this) - : this._iaddn(num) - ); - }), - (BN.prototype._iaddn = function (num) { - this.words[0] += num; - for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) - (this.words[i] -= 67108864), i === this.length - 1 ? (this.words[i + 1] = 1) : this.words[i + 1]++; - return (this.length = Math.max(this.length, i + 1)), this; - }), - (BN.prototype.isubn = function (num) { - if ((assert(typeof num == "number"), assert(num < 67108864), num < 0)) return this.iaddn(-num); - if (this.negative !== 0) return (this.negative = 0), this.iaddn(num), (this.negative = 1), this; - if (((this.words[0] -= num), this.length === 1 && this.words[0] < 0)) - (this.words[0] = -this.words[0]), (this.negative = 1); - else - for (var i = 0; i < this.length && this.words[i] < 0; i++) - (this.words[i] += 67108864), (this.words[i + 1] -= 1); - return this.strip(); - }), - (BN.prototype.addn = function (num) { - return this.clone().iaddn(num); - }), - (BN.prototype.subn = function (num) { - return this.clone().isubn(num); - }), - (BN.prototype.iabs = function () { - return (this.negative = 0), this; - }), - (BN.prototype.abs = function () { - return this.clone().iabs(); - }), - (BN.prototype._ishlnsubmul = function (num, mul, shift) { - var len = num.length + shift, - i; - this._expand(len); - var w, - carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - (w -= right & 67108863), - (carry = (w >> 26) - ((right / 67108864) | 0)), - (this.words[i + shift] = w & 67108863); - } - for (; i < this.length - shift; i++) - (w = (this.words[i + shift] | 0) + carry), (carry = w >> 26), (this.words[i + shift] = w & 67108863); - if (carry === 0) return this.strip(); - for (assert(carry === -1), carry = 0, i = 0; i < this.length; i++) - (w = -(this.words[i] | 0) + carry), (carry = w >> 26), (this.words[i] = w & 67108863); - return (this.negative = 1), this.strip(); - }), - (BN.prototype._wordDiv = function (num, mode) { - var shift = this.length - num.length, - a = this.clone(), - b = num, - bhi = b.words[b.length - 1] | 0, - bhiBits = this._countBits(bhi); - (shift = 26 - bhiBits), - shift !== 0 && ((b = b.ushln(shift)), a.iushln(shift), (bhi = b.words[b.length - 1] | 0)); - var m = a.length - b.length, - q; - if (mode !== "mod") { - (q = new BN(null)), (q.length = m + 1), (q.words = new Array(q.length)); - for (var i = 0; i < q.length; i++) q.words[i] = 0; - } - var diff = a.clone()._ishlnsubmul(b, 1, m); - diff.negative === 0 && ((a = diff), q && (q.words[m] = 1)); - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); - for (qj = Math.min((qj / bhi) | 0, 67108863), a._ishlnsubmul(b, qj, j); a.negative !== 0; ) - qj--, (a.negative = 0), a._ishlnsubmul(b, 1, j), a.isZero() || (a.negative ^= 1); - q && (q.words[j] = qj); - } - return ( - q && q.strip(), - a.strip(), - mode !== "div" && shift !== 0 && a.iushrn(shift), - { - div: q || null, - mod: a, - } - ); - }), - (BN.prototype.divmod = function (num, mode, positive) { - if ((assert(!num.isZero()), this.isZero())) - return { - div: new BN(0), - mod: new BN(0), - }; - var div, mod, res; - return this.negative !== 0 && num.negative === 0 - ? ((res = this.neg().divmod(num, mode)), - mode !== "mod" && (div = res.div.neg()), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.iadd(num)), - { - div, - mod, - }) - : this.negative === 0 && num.negative !== 0 - ? ((res = this.divmod(num.neg(), mode)), - mode !== "mod" && (div = res.div.neg()), - { - div, - mod: res.mod, - }) - : (this.negative & num.negative) !== 0 - ? ((res = this.neg().divmod(num.neg(), mode)), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.isub(num)), - { - div: res.div, - mod, - }) - : num.length > this.length || this.cmp(num) < 0 - ? { - div: new BN(0), - mod: this, - } - : num.length === 1 - ? mode === "div" - ? { - div: this.divn(num.words[0]), - mod: null, - } - : mode === "mod" - ? { - div: null, - mod: new BN(this.modn(num.words[0])), - } - : { - div: this.divn(num.words[0]), - mod: new BN(this.modn(num.words[0])), - } - : this._wordDiv(num, mode); - }), - (BN.prototype.div = function (num) { - return this.divmod(num, "div", !1).div; - }), - (BN.prototype.mod = function (num) { - return this.divmod(num, "mod", !1).mod; - }), - (BN.prototype.umod = function (num) { - return this.divmod(num, "mod", !0).mod; - }), - (BN.prototype.divRound = function (num) { - var dm = this.divmod(num); - if (dm.mod.isZero()) return dm.div; - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod, - half = num.ushrn(1), - r2 = num.andln(1), - cmp = mod.cmp(half); - return cmp < 0 || (r2 === 1 && cmp === 0) - ? dm.div - : dm.div.negative !== 0 - ? dm.div.isubn(1) - : dm.div.iaddn(1); - }), - (BN.prototype.modn = function (num) { - assert(num <= 67108863); - for (var p = (1 << 26) % num, acc = 0, i = this.length - 1; i >= 0; i--) - acc = (p * acc + (this.words[i] | 0)) % num; - return acc; - }), - (BN.prototype.idivn = function (num) { - assert(num <= 67108863); - for (var carry = 0, i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 67108864; - (this.words[i] = (w / num) | 0), (carry = w % num); - } - return this.strip(); - }), - (BN.prototype.divn = function (num) { - return this.clone().idivn(num); - }), - (BN.prototype.egcd = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var x = this, - y = p.clone(); - x.negative !== 0 ? (x = x.umod(p)) : (x = x.clone()); - for (var A = new BN(1), B = new BN(0), C = new BN(0), D = new BN(1), g = 0; x.isEven() && y.isEven(); ) - x.iushrn(1), y.iushrn(1), ++g; - for (var yp = y.clone(), xp = x.clone(); !x.isZero(); ) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) - for (x.iushrn(i); i-- > 0; ) - (A.isOdd() || B.isOdd()) && (A.iadd(yp), B.isub(xp)), A.iushrn(1), B.iushrn(1); - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) - for (y.iushrn(j); j-- > 0; ) - (C.isOdd() || D.isOdd()) && (C.iadd(yp), D.isub(xp)), C.iushrn(1), D.iushrn(1); - x.cmp(y) >= 0 ? (x.isub(y), A.isub(C), B.isub(D)) : (y.isub(x), C.isub(A), D.isub(B)); - } - return { - a: C, - b: D, - gcd: y.iushln(g), - }; - }), - (BN.prototype._invmp = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var a = this, - b = p.clone(); - a.negative !== 0 ? (a = a.umod(p)) : (a = a.clone()); - for (var x1 = new BN(1), x2 = new BN(0), delta = b.clone(); a.cmpn(1) > 0 && b.cmpn(1) > 0; ) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) for (a.iushrn(i); i-- > 0; ) x1.isOdd() && x1.iadd(delta), x1.iushrn(1); - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) for (b.iushrn(j); j-- > 0; ) x2.isOdd() && x2.iadd(delta), x2.iushrn(1); - a.cmp(b) >= 0 ? (a.isub(b), x1.isub(x2)) : (b.isub(a), x2.isub(x1)); - } - var res; - return a.cmpn(1) === 0 ? (res = x1) : (res = x2), res.cmpn(0) < 0 && res.iadd(p), res; - }), - (BN.prototype.gcd = function (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - var a = this.clone(), - b = num.clone(); - (a.negative = 0), (b.negative = 0); - for (var shift = 0; a.isEven() && b.isEven(); shift++) a.iushrn(1), b.iushrn(1); - do { - for (; a.isEven(); ) a.iushrn(1); - for (; b.isEven(); ) b.iushrn(1); - var r = a.cmp(b); - if (r < 0) { - var t = a; - (a = b), (b = t); - } else if (r === 0 || b.cmpn(1) === 0) break; - a.isub(b); - } while (!0); - return b.iushln(shift); - }), - (BN.prototype.invm = function (num) { - return this.egcd(num).a.umod(num); - }), - (BN.prototype.isEven = function () { - return (this.words[0] & 1) === 0; - }), - (BN.prototype.isOdd = function () { - return (this.words[0] & 1) === 1; - }), - (BN.prototype.andln = function (num) { - return this.words[0] & num; - }), - (BN.prototype.bincn = function (bit) { - assert(typeof bit == "number"); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return this._expand(s + 1), (this.words[s] |= q), this; - for (var carry = q, i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - (w += carry), (carry = w >>> 26), (w &= 67108863), (this.words[i] = w); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.isZero = function () { - return this.length === 1 && this.words[0] === 0; - }), - (BN.prototype.cmpn = function (num) { - var negative = num < 0; - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - this.strip(); - var res; - if (this.length > 1) res = 1; - else { - negative && (num = -num), assert(num <= 67108863, "Number is too big"); - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.cmp = function (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - var res = this.ucmp(num); - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.ucmp = function (num) { - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - for (var res = 0, i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0, - b = num.words[i] | 0; - if (a !== b) { - a < b ? (res = -1) : a > b && (res = 1); - break; - } - } - return res; - }), - (BN.prototype.gtn = function (num) { - return this.cmpn(num) === 1; - }), - (BN.prototype.gt = function (num) { - return this.cmp(num) === 1; - }), - (BN.prototype.gten = function (num) { - return this.cmpn(num) >= 0; - }), - (BN.prototype.gte = function (num) { - return this.cmp(num) >= 0; - }), - (BN.prototype.ltn = function (num) { - return this.cmpn(num) === -1; - }), - (BN.prototype.lt = function (num) { - return this.cmp(num) === -1; - }), - (BN.prototype.lten = function (num) { - return this.cmpn(num) <= 0; - }), - (BN.prototype.lte = function (num) { - return this.cmp(num) <= 0; - }), - (BN.prototype.eqn = function (num) { - return this.cmpn(num) === 0; - }), - (BN.prototype.eq = function (num) { - return this.cmp(num) === 0; - }), - (BN.red = function (num) { - return new Red(num); - }), - (BN.prototype.toRed = function (ctx) { - return ( - assert(!this.red, "Already a number in reduction context"), - assert(this.negative === 0, "red works only with positives"), - ctx.convertTo(this)._forceRed(ctx) - ); - }), - (BN.prototype.fromRed = function () { - return assert(this.red, "fromRed works only with numbers in reduction context"), this.red.convertFrom(this); - }), - (BN.prototype._forceRed = function (ctx) { - return (this.red = ctx), this; - }), - (BN.prototype.forceRed = function (ctx) { - return assert(!this.red, "Already a number in reduction context"), this._forceRed(ctx); - }), - (BN.prototype.redAdd = function (num) { - return assert(this.red, "redAdd works only with red numbers"), this.red.add(this, num); - }), - (BN.prototype.redIAdd = function (num) { - return assert(this.red, "redIAdd works only with red numbers"), this.red.iadd(this, num); - }), - (BN.prototype.redSub = function (num) { - return assert(this.red, "redSub works only with red numbers"), this.red.sub(this, num); - }), - (BN.prototype.redISub = function (num) { - return assert(this.red, "redISub works only with red numbers"), this.red.isub(this, num); - }), - (BN.prototype.redShl = function (num) { - return assert(this.red, "redShl works only with red numbers"), this.red.shl(this, num); - }), - (BN.prototype.redMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.mul(this, num) - ); - }), - (BN.prototype.redIMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.imul(this, num) - ); - }), - (BN.prototype.redSqr = function () { - return assert(this.red, "redSqr works only with red numbers"), this.red._verify1(this), this.red.sqr(this); - }), - (BN.prototype.redISqr = function () { - return assert(this.red, "redISqr works only with red numbers"), this.red._verify1(this), this.red.isqr(this); - }), - (BN.prototype.redSqrt = function () { - return assert(this.red, "redSqrt works only with red numbers"), this.red._verify1(this), this.red.sqrt(this); - }), - (BN.prototype.redInvm = function () { - return assert(this.red, "redInvm works only with red numbers"), this.red._verify1(this), this.red.invm(this); - }), - (BN.prototype.redNeg = function () { - return assert(this.red, "redNeg works only with red numbers"), this.red._verify1(this), this.red.neg(this); - }), - (BN.prototype.redPow = function (num) { - return assert(this.red && !num.red, "redPow(normalNum)"), this.red._verify1(this), this.red.pow(this, num); - }); - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null, - }; - function MPrime(name, p) { - (this.name = name), - (this.p = new BN(p, 16)), - (this.n = this.p.bitLength()), - (this.k = new BN(1).iushln(this.n).isub(this.p)), - (this.tmp = this._tmp()); - } - (MPrime.prototype._tmp = function () { - var tmp = new BN(null); - return (tmp.words = new Array(Math.ceil(this.n / 13))), tmp; - }), - (MPrime.prototype.ireduce = function (num) { - var r = num, - rlen; - do this.split(r, this.tmp), (r = this.imulK(r)), (r = r.iadd(this.tmp)), (rlen = r.bitLength()); - while (rlen > this.n); - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - return ( - cmp === 0 - ? ((r.words[0] = 0), (r.length = 1)) - : cmp > 0 - ? r.isub(this.p) - : r.strip !== void 0 - ? r.strip() - : r._strip(), - r - ); - }), - (MPrime.prototype.split = function (input, out) { - input.iushrn(this.n, 0, out); - }), - (MPrime.prototype.imulK = function (num) { - return num.imul(this.k); - }); - function K256() { - MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f"); - } - inherits(K256, MPrime), - (K256.prototype.split = function (input, output) { - for (var mask = 4194303, outLen = Math.min(input.length, 9), i = 0; i < outLen; i++) - output.words[i] = input.words[i]; - if (((output.length = outLen), input.length <= 9)) { - (input.words[0] = 0), (input.length = 1); - return; - } - var prev = input.words[9]; - for (output.words[output.length++] = prev & mask, i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - (input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22)), (prev = next); - } - (prev >>>= 22), - (input.words[i - 10] = prev), - prev === 0 && input.length > 10 ? (input.length -= 10) : (input.length -= 9); - }), - (K256.prototype.imulK = function (num) { - (num.words[num.length] = 0), (num.words[num.length + 1] = 0), (num.length += 2); - for (var lo = 0, i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - (lo += w * 977), (num.words[i] = lo & 67108863), (lo = w * 64 + ((lo / 67108864) | 0)); - } - return ( - num.words[num.length - 1] === 0 && (num.length--, num.words[num.length - 1] === 0 && num.length--), num - ); - }); - function P224() { - MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001"); - } - inherits(P224, MPrime); - function P192() { - MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff"); - } - inherits(P192, MPrime); - function P25519() { - MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed"); - } - inherits(P25519, MPrime), - (P25519.prototype.imulK = function (num) { - for (var carry = 0, i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 19 + carry, - lo = hi & 67108863; - (hi >>>= 26), (num.words[i] = lo), (carry = hi); - } - return carry !== 0 && (num.words[num.length++] = carry), num; - }), - (BN._prime = function (name) { - if (primes[name]) return primes[name]; - var prime2; - if (name === "k256") prime2 = new K256(); - else if (name === "p224") prime2 = new P224(); - else if (name === "p192") prime2 = new P192(); - else if (name === "p25519") prime2 = new P25519(); - else throw new Error("Unknown prime " + name); - return (primes[name] = prime2), prime2; - }); - function Red(m) { - if (typeof m == "string") { - var prime = BN._prime(m); - (this.m = prime.p), (this.prime = prime); - } else assert(m.gtn(1), "modulus must be greater than 1"), (this.m = m), (this.prime = null); - } - (Red.prototype._verify1 = function (a) { - assert(a.negative === 0, "red works only with positives"), assert(a.red, "red works only with red numbers"); - }), - (Red.prototype._verify2 = function (a, b) { - assert((a.negative | b.negative) === 0, "red works only with positives"), - assert(a.red && a.red === b.red, "red works only with red numbers"); - }), - (Red.prototype.imod = function (a) { - return this.prime ? this.prime.ireduce(a)._forceRed(this) : a.umod(this.m)._forceRed(this); - }), - (Red.prototype.neg = function (a) { - return a.isZero() ? a.clone() : this.m.sub(a)._forceRed(this); - }), - (Red.prototype.add = function (a, b) { - this._verify2(a, b); - var res = a.add(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res._forceRed(this); - }), - (Red.prototype.iadd = function (a, b) { - this._verify2(a, b); - var res = a.iadd(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res; - }), - (Red.prototype.sub = function (a, b) { - this._verify2(a, b); - var res = a.sub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res._forceRed(this); - }), - (Red.prototype.isub = function (a, b) { - this._verify2(a, b); - var res = a.isub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res; - }), - (Red.prototype.shl = function (a, num) { - return this._verify1(a), this.imod(a.ushln(num)); - }), - (Red.prototype.imul = function (a, b) { - return this._verify2(a, b), this.imod(a.imul(b)); - }), - (Red.prototype.mul = function (a, b) { - return this._verify2(a, b), this.imod(a.mul(b)); - }), - (Red.prototype.isqr = function (a) { - return this.imul(a, a.clone()); - }), - (Red.prototype.sqr = function (a) { - return this.mul(a, a); - }), - (Red.prototype.sqrt = function (a) { - if (a.isZero()) return a.clone(); - var mod3 = this.m.andln(3); - if ((assert(mod3 % 2 === 1), mod3 === 3)) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - for (var q = this.m.subn(1), s = 0; !q.isZero() && q.andln(1) === 0; ) s++, q.iushrn(1); - assert(!q.isZero()); - var one = new BN(1).toRed(this), - nOne = one.redNeg(), - lpow = this.m.subn(1).iushrn(1), - z = this.m.bitLength(); - for (z = new BN(2 * z * z).toRed(this); this.pow(z, lpow).cmp(nOne) !== 0; ) z.redIAdd(nOne); - for ( - var c = this.pow(z, q), r = this.pow(a, q.addn(1).iushrn(1)), t = this.pow(a, q), m = s; - t.cmp(one) !== 0; - - ) { - for (var tmp = t, i = 0; tmp.cmp(one) !== 0; i++) tmp = tmp.redSqr(); - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - (r = r.redMul(b)), (c = b.redSqr()), (t = t.redMul(c)), (m = i); - } - return r; - }), - (Red.prototype.invm = function (a) { - var inv = a._invmp(this.m); - return inv.negative !== 0 ? ((inv.negative = 0), this.imod(inv).redNeg()) : this.imod(inv); - }), - (Red.prototype.pow = function (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - var windowSize = 4, - wnd = new Array(1 << windowSize); - (wnd[0] = new BN(1).toRed(this)), (wnd[1] = a); - for (var i = 2; i < wnd.length; i++) wnd[i] = this.mul(wnd[i - 1], a); - var res = wnd[0], - current = 0, - currentLen = 0, - start = num.bitLength() % 26; - for (start === 0 && (start = 26), i = num.length - 1; i >= 0; i--) { - for (var word = num.words[i], j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if ((res !== wnd[0] && (res = this.sqr(res)), bit === 0 && current === 0)) { - currentLen = 0; - continue; - } - (current <<= 1), - (current |= bit), - currentLen++, - !(currentLen !== windowSize && (i !== 0 || j !== 0)) && - ((res = this.mul(res, wnd[current])), (currentLen = 0), (current = 0)); - } - start = 26; - } - return res; - }), - (Red.prototype.convertTo = function (num) { - var r = num.umod(this.m); - return r === num ? r.clone() : r; - }), - (Red.prototype.convertFrom = function (num) { - var res = num.clone(); - return (res.red = null), res; - }), - (BN.mont = function (num) { - return new Mont(num); - }); - function Mont(m) { - Red.call(this, m), - (this.shift = this.m.bitLength()), - this.shift % 26 !== 0 && (this.shift += 26 - (this.shift % 26)), - (this.r = new BN(1).iushln(this.shift)), - (this.r2 = this.imod(this.r.sqr())), - (this.rinv = this.r._invmp(this.m)), - (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), - (this.minv = this.minv.umod(this.r)), - (this.minv = this.r.sub(this.minv)); - } - inherits(Mont, Red), - (Mont.prototype.convertTo = function (num) { - return this.imod(num.ushln(this.shift)); - }), - (Mont.prototype.convertFrom = function (num) { - var r = this.imod(num.mul(this.rinv)); - return (r.red = null), r; - }), - (Mont.prototype.imul = function (a, b) { - if (a.isZero() || b.isZero()) return (a.words[0] = 0), (a.length = 1), a; - var t = a.imul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.mul = function (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - var t = a.mul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.invm = function (a) { - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }); - })(typeof module > "u" || module, exports); - }, -}); - -// node_modules/miller-rabin/node_modules/bn.js/lib/bn.js -var require_bn2 = __commonJS({ - "node_modules/miller-rabin/node_modules/bn.js/lib/bn.js"(exports, module) { - (function (module2, exports2) { - "use strict"; - function assert(val, msg) { - if (!val) throw new Error(msg || "Assertion failed"); - } - function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - (TempCtor.prototype = superCtor.prototype), - (ctor.prototype = new TempCtor()), - (ctor.prototype.constructor = ctor); - } - function BN(number, base, endian) { - if (BN.isBN(number)) return number; - (this.negative = 0), - (this.words = null), - (this.length = 0), - (this.red = null), - number !== null && - ((base === "le" || base === "be") && ((endian = base), (base = 10)), - this._init(number || 0, base || 10, endian || "be")); - } - typeof module2 == "object" ? (module2.exports = BN) : (exports2.BN = BN), (BN.BN = BN), (BN.wordSize = 26); - var Buffer2; - try { - typeof window < "u" && typeof window.Buffer < "u" - ? (Buffer2 = window.Buffer) - : (Buffer2 = __require("buffer").Buffer); - } catch {} - (BN.isBN = function (num) { - return num instanceof BN - ? !0 - : num !== null && - typeof num == "object" && - num.constructor.wordSize === BN.wordSize && - Array.isArray(num.words); - }), - (BN.max = function (left, right) { - return left.cmp(right) > 0 ? left : right; - }), - (BN.min = function (left, right) { - return left.cmp(right) < 0 ? left : right; - }), - (BN.prototype._init = function (number, base, endian) { - if (typeof number == "number") return this._initNumber(number, base, endian); - if (typeof number == "object") return this._initArray(number, base, endian); - base === "hex" && (base = 16), - assert(base === (base | 0) && base >= 2 && base <= 36), - (number = number.toString().replace(/\s+/g, "")); - var start = 0; - number[0] === "-" && (start++, (this.negative = 1)), - start < number.length && - (base === 16 - ? this._parseHex(number, start, endian) - : (this._parseBase(number, base, start), - endian === "le" && this._initArray(this.toArray(), base, endian))); - }), - (BN.prototype._initNumber = function (number, base, endian) { - number < 0 && ((this.negative = 1), (number = -number)), - number < 67108864 - ? ((this.words = [number & 67108863]), (this.length = 1)) - : number < 4503599627370496 - ? ((this.words = [number & 67108863, (number / 67108864) & 67108863]), (this.length = 2)) - : (assert(number < 9007199254740992), - (this.words = [number & 67108863, (number / 67108864) & 67108863, 1]), - (this.length = 3)), - endian === "le" && this._initArray(this.toArray(), base, endian); - }), - (BN.prototype._initArray = function (number, base, endian) { - if ((assert(typeof number.length == "number"), number.length <= 0)) - return (this.words = [0]), (this.length = 1), this; - (this.length = Math.ceil(number.length / 3)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var j, - w, - off = 0; - if (endian === "be") - for (i = number.length - 1, j = 0; i >= 0; i -= 3) - (w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - else if (endian === "le") - for (i = 0, j = 0; i < number.length; i += 3) - (w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - return this.strip(); - }); - function parseHex4Bits(string, index) { - var c = string.charCodeAt(index); - return c >= 65 && c <= 70 ? c - 55 : c >= 97 && c <= 102 ? c - 87 : (c - 48) & 15; - } - function parseHexByte(string, lowerBound, index) { - var r = parseHex4Bits(string, index); - return index - 1 >= lowerBound && (r |= parseHex4Bits(string, index - 1) << 4), r; - } - BN.prototype._parseHex = function (number, start, endian) { - (this.length = Math.ceil((number.length - start) / 6)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var off = 0, - j = 0, - w; - if (endian === "be") - for (i = number.length - 1; i >= start; i -= 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - else { - var parseLength = number.length - start; - for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - } - this.strip(); - }; - function parseBase(str, start, end, mul) { - for (var r = 0, len = Math.min(str.length, end), i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - (r *= mul), c >= 49 ? (r += c - 49 + 10) : c >= 17 ? (r += c - 17 + 10) : (r += c); - } - return r; - } - (BN.prototype._parseBase = function (number, base, start) { - (this.words = [0]), (this.length = 1); - for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) limbLen++; - limbLen--, (limbPow = (limbPow / base) | 0); - for ( - var total = number.length - start, - mod = total % limbLen, - end = Math.min(total, total - mod) + start, - word = 0, - i = start; - i < end; - i += limbLen - ) - (word = parseBase(number, i, i + limbLen, base)), - this.imuln(limbPow), - this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - if (mod !== 0) { - var pow = 1; - for (word = parseBase(number, i, number.length, base), i = 0; i < mod; i++) pow *= base; - this.imuln(pow), this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - } - this.strip(); - }), - (BN.prototype.copy = function (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) dest.words[i] = this.words[i]; - (dest.length = this.length), (dest.negative = this.negative), (dest.red = this.red); - }), - (BN.prototype.clone = function () { - var r = new BN(null); - return this.copy(r), r; - }), - (BN.prototype._expand = function (size) { - for (; this.length < size; ) this.words[this.length++] = 0; - return this; - }), - (BN.prototype.strip = function () { - for (; this.length > 1 && this.words[this.length - 1] === 0; ) this.length--; - return this._normSign(); - }), - (BN.prototype._normSign = function () { - return this.length === 1 && this.words[0] === 0 && (this.negative = 0), this; - }), - (BN.prototype.inspect = function () { - return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">"; - }); - var zeros = [ - "", - "0", - "00", - "000", - "0000", - "00000", - "000000", - "0000000", - "00000000", - "000000000", - "0000000000", - "00000000000", - "000000000000", - "0000000000000", - "00000000000000", - "000000000000000", - "0000000000000000", - "00000000000000000", - "000000000000000000", - "0000000000000000000", - "00000000000000000000", - "000000000000000000000", - "0000000000000000000000", - "00000000000000000000000", - "000000000000000000000000", - "0000000000000000000000000", - ], - groupSizes = [ - 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, - ], - groupBases = [ - 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, - 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, - 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, - 60466176, - ]; - (BN.prototype.toString = function (base, padding) { - (base = base || 10), (padding = padding | 0 || 1); - var out; - if (base === 16 || base === "hex") { - out = ""; - for (var off = 0, carry = 0, i = 0; i < this.length; i++) { - var w = this.words[i], - word = (((w << off) | carry) & 16777215).toString(16); - (carry = (w >>> (24 - off)) & 16777215), - carry !== 0 || i !== this.length - 1 ? (out = zeros[6 - word.length] + word + out) : (out = word + out), - (off += 2), - off >= 26 && ((off -= 26), i--); - } - for (carry !== 0 && (out = carry.toString(16) + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - if (base === (base | 0) && base >= 2 && base <= 36) { - var groupSize = groupSizes[base], - groupBase = groupBases[base]; - out = ""; - var c = this.clone(); - for (c.negative = 0; !c.isZero(); ) { - var r = c.modn(groupBase).toString(base); - (c = c.idivn(groupBase)), c.isZero() ? (out = r + out) : (out = zeros[groupSize - r.length] + r + out); - } - for (this.isZero() && (out = "0" + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - assert(!1, "Base should be between 2 and 36"); - }), - (BN.prototype.toNumber = function () { - var ret = this.words[0]; - return ( - this.length === 2 - ? (ret += this.words[1] * 67108864) - : this.length === 3 && this.words[2] === 1 - ? (ret += 4503599627370496 + this.words[1] * 67108864) - : this.length > 2 && assert(!1, "Number can only safely store up to 53 bits"), - this.negative !== 0 ? -ret : ret - ); - }), - (BN.prototype.toJSON = function () { - return this.toString(16); - }), - (BN.prototype.toBuffer = function (endian, length) { - return assert(typeof Buffer2 < "u"), this.toArrayLike(Buffer2, endian, length); - }), - (BN.prototype.toArray = function (endian, length) { - return this.toArrayLike(Array, endian, length); - }), - (BN.prototype.toArrayLike = function (ArrayType, endian, length) { - var byteLength = this.byteLength(), - reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, "byte array longer than desired length"), - assert(reqLength > 0, "Requested array length <= 0"), - this.strip(); - var littleEndian = endian === "le", - res = new ArrayType(reqLength), - b, - i, - q = this.clone(); - if (littleEndian) { - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[i] = b); - for (; i < reqLength; i++) res[i] = 0; - } else { - for (i = 0; i < reqLength - byteLength; i++) res[i] = 0; - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[reqLength - i - 1] = b); - } - return res; - }), - Math.clz32 - ? (BN.prototype._countBits = function (w) { - return 32 - Math.clz32(w); - }) - : (BN.prototype._countBits = function (w) { - var t = w, - r = 0; - return ( - t >= 4096 && ((r += 13), (t >>>= 13)), - t >= 64 && ((r += 7), (t >>>= 7)), - t >= 8 && ((r += 4), (t >>>= 4)), - t >= 2 && ((r += 2), (t >>>= 2)), - r + t - ); - }), - (BN.prototype._zeroBits = function (w) { - if (w === 0) return 26; - var t = w, - r = 0; - return ( - (t & 8191) === 0 && ((r += 13), (t >>>= 13)), - (t & 127) === 0 && ((r += 7), (t >>>= 7)), - (t & 15) === 0 && ((r += 4), (t >>>= 4)), - (t & 3) === 0 && ((r += 2), (t >>>= 2)), - (t & 1) === 0 && r++, - r - ); - }), - (BN.prototype.bitLength = function () { - var w = this.words[this.length - 1], - hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }); - function toBitArray(num) { - for (var w = new Array(num.bitLength()), bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0, - wbit = bit % 26; - w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; - } - return w; - } - (BN.prototype.zeroBits = function () { - if (this.isZero()) return 0; - for (var r = 0, i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - if (((r += b), b !== 26)) break; - } - return r; - }), - (BN.prototype.byteLength = function () { - return Math.ceil(this.bitLength() / 8); - }), - (BN.prototype.toTwos = function (width) { - return this.negative !== 0 ? this.abs().inotn(width).iaddn(1) : this.clone(); - }), - (BN.prototype.fromTwos = function (width) { - return this.testn(width - 1) ? this.notn(width).iaddn(1).ineg() : this.clone(); - }), - (BN.prototype.isNeg = function () { - return this.negative !== 0; - }), - (BN.prototype.neg = function () { - return this.clone().ineg(); - }), - (BN.prototype.ineg = function () { - return this.isZero() || (this.negative ^= 1), this; - }), - (BN.prototype.iuor = function (num) { - for (; this.length < num.length; ) this.words[this.length++] = 0; - for (var i = 0; i < num.length; i++) this.words[i] = this.words[i] | num.words[i]; - return this.strip(); - }), - (BN.prototype.ior = function (num) { - return assert((this.negative | num.negative) === 0), this.iuor(num); - }), - (BN.prototype.or = function (num) { - return this.length > num.length ? this.clone().ior(num) : num.clone().ior(this); - }), - (BN.prototype.uor = function (num) { - return this.length > num.length ? this.clone().iuor(num) : num.clone().iuor(this); - }), - (BN.prototype.iuand = function (num) { - var b; - this.length > num.length ? (b = num) : (b = this); - for (var i = 0; i < b.length; i++) this.words[i] = this.words[i] & num.words[i]; - return (this.length = b.length), this.strip(); - }), - (BN.prototype.iand = function (num) { - return assert((this.negative | num.negative) === 0), this.iuand(num); - }), - (BN.prototype.and = function (num) { - return this.length > num.length ? this.clone().iand(num) : num.clone().iand(this); - }), - (BN.prototype.uand = function (num) { - return this.length > num.length ? this.clone().iuand(num) : num.clone().iuand(this); - }), - (BN.prototype.iuxor = function (num) { - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var i = 0; i < b.length; i++) this.words[i] = a.words[i] ^ b.words[i]; - if (this !== a) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = a.length), this.strip(); - }), - (BN.prototype.ixor = function (num) { - return assert((this.negative | num.negative) === 0), this.iuxor(num); - }), - (BN.prototype.xor = function (num) { - return this.length > num.length ? this.clone().ixor(num) : num.clone().ixor(this); - }), - (BN.prototype.uxor = function (num) { - return this.length > num.length ? this.clone().iuxor(num) : num.clone().iuxor(this); - }), - (BN.prototype.inotn = function (width) { - assert(typeof width == "number" && width >= 0); - var bytesNeeded = Math.ceil(width / 26) | 0, - bitsLeft = width % 26; - this._expand(bytesNeeded), bitsLeft > 0 && bytesNeeded--; - for (var i = 0; i < bytesNeeded; i++) this.words[i] = ~this.words[i] & 67108863; - return bitsLeft > 0 && (this.words[i] = ~this.words[i] & (67108863 >> (26 - bitsLeft))), this.strip(); - }), - (BN.prototype.notn = function (width) { - return this.clone().inotn(width); - }), - (BN.prototype.setn = function (bit, val) { - assert(typeof bit == "number" && bit >= 0); - var off = (bit / 26) | 0, - wbit = bit % 26; - return ( - this._expand(off + 1), - val - ? (this.words[off] = this.words[off] | (1 << wbit)) - : (this.words[off] = this.words[off] & ~(1 << wbit)), - this.strip() - ); - }), - (BN.prototype.iadd = function (num) { - var r; - if (this.negative !== 0 && num.negative === 0) - return (this.negative = 0), (r = this.isub(num)), (this.negative ^= 1), this._normSign(); - if (this.negative === 0 && num.negative !== 0) - return (num.negative = 0), (r = this.isub(num)), (num.negative = 1), r._normSign(); - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) + (b.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - if (((this.length = a.length), carry !== 0)) (this.words[this.length] = carry), this.length++; - else if (a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return this; - }), - (BN.prototype.add = function (num) { - var res; - return num.negative !== 0 && this.negative === 0 - ? ((num.negative = 0), (res = this.sub(num)), (num.negative ^= 1), res) - : num.negative === 0 && this.negative !== 0 - ? ((this.negative = 0), (res = num.sub(this)), (this.negative = 1), res) - : this.length > num.length - ? this.clone().iadd(num) - : num.clone().iadd(this); - }), - (BN.prototype.isub = function (num) { - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - return (num.negative = 1), r._normSign(); - } else if (this.negative !== 0) - return (this.negative = 0), this.iadd(num), (this.negative = 1), this._normSign(); - var cmp = this.cmp(num); - if (cmp === 0) return (this.negative = 0), (this.length = 1), (this.words[0] = 0), this; - var a, b; - cmp > 0 ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) - (b.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - if (carry === 0 && i < a.length && a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = Math.max(this.length, i)), a !== this && (this.negative = 1), this.strip(); - }), - (BN.prototype.sub = function (num) { - return this.clone().isub(num); - }); - function smallMulTo(self2, num, out) { - out.negative = num.negative ^ self2.negative; - var len = (self2.length + num.length) | 0; - (out.length = len), (len = (len - 1) | 0); - var a = self2.words[0] | 0, - b = num.words[0] | 0, - r = a * b, - lo = r & 67108863, - carry = (r / 67108864) | 0; - out.words[0] = lo; - for (var k = 1; k < len; k++) { - for ( - var ncarry = carry >>> 26, - rword = carry & 67108863, - maxJ = Math.min(k, num.length - 1), - j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = (k - j) | 0; - (a = self2.words[i] | 0), - (b = num.words[j] | 0), - (r = a * b + rword), - (ncarry += (r / 67108864) | 0), - (rword = r & 67108863); - } - (out.words[k] = rword | 0), (carry = ncarry | 0); - } - return carry !== 0 ? (out.words[k] = carry | 0) : out.length--, out.strip(); - } - var comb10MulTo = function (self2, num, out) { - var a = self2.words, - b = num.words, - o = out.words, - c = 0, - lo, - mid, - hi, - a0 = a[0] | 0, - al0 = a0 & 8191, - ah0 = a0 >>> 13, - a1 = a[1] | 0, - al1 = a1 & 8191, - ah1 = a1 >>> 13, - a2 = a[2] | 0, - al2 = a2 & 8191, - ah2 = a2 >>> 13, - a3 = a[3] | 0, - al3 = a3 & 8191, - ah3 = a3 >>> 13, - a4 = a[4] | 0, - al4 = a4 & 8191, - ah4 = a4 >>> 13, - a5 = a[5] | 0, - al5 = a5 & 8191, - ah5 = a5 >>> 13, - a6 = a[6] | 0, - al6 = a6 & 8191, - ah6 = a6 >>> 13, - a7 = a[7] | 0, - al7 = a7 & 8191, - ah7 = a7 >>> 13, - a8 = a[8] | 0, - al8 = a8 & 8191, - ah8 = a8 >>> 13, - a9 = a[9] | 0, - al9 = a9 & 8191, - ah9 = a9 >>> 13, - b0 = b[0] | 0, - bl0 = b0 & 8191, - bh0 = b0 >>> 13, - b1 = b[1] | 0, - bl1 = b1 & 8191, - bh1 = b1 >>> 13, - b2 = b[2] | 0, - bl2 = b2 & 8191, - bh2 = b2 >>> 13, - b3 = b[3] | 0, - bl3 = b3 & 8191, - bh3 = b3 >>> 13, - b4 = b[4] | 0, - bl4 = b4 & 8191, - bh4 = b4 >>> 13, - b5 = b[5] | 0, - bl5 = b5 & 8191, - bh5 = b5 >>> 13, - b6 = b[6] | 0, - bl6 = b6 & 8191, - bh6 = b6 >>> 13, - b7 = b[7] | 0, - bl7 = b7 & 8191, - bh7 = b7 >>> 13, - b8 = b[8] | 0, - bl8 = b8 & 8191, - bh8 = b8 >>> 13, - b9 = b[9] | 0, - bl9 = b9 & 8191, - bh9 = b9 >>> 13; - (out.negative = self2.negative ^ num.negative), - (out.length = 19), - (lo = Math.imul(al0, bl0)), - (mid = Math.imul(al0, bh0)), - (mid = (mid + Math.imul(ah0, bl0)) | 0), - (hi = Math.imul(ah0, bh0)); - var w0 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0), - (w0 &= 67108863), - (lo = Math.imul(al1, bl0)), - (mid = Math.imul(al1, bh0)), - (mid = (mid + Math.imul(ah1, bl0)) | 0), - (hi = Math.imul(ah1, bh0)), - (lo = (lo + Math.imul(al0, bl1)) | 0), - (mid = (mid + Math.imul(al0, bh1)) | 0), - (mid = (mid + Math.imul(ah0, bl1)) | 0), - (hi = (hi + Math.imul(ah0, bh1)) | 0); - var w1 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0), - (w1 &= 67108863), - (lo = Math.imul(al2, bl0)), - (mid = Math.imul(al2, bh0)), - (mid = (mid + Math.imul(ah2, bl0)) | 0), - (hi = Math.imul(ah2, bh0)), - (lo = (lo + Math.imul(al1, bl1)) | 0), - (mid = (mid + Math.imul(al1, bh1)) | 0), - (mid = (mid + Math.imul(ah1, bl1)) | 0), - (hi = (hi + Math.imul(ah1, bh1)) | 0), - (lo = (lo + Math.imul(al0, bl2)) | 0), - (mid = (mid + Math.imul(al0, bh2)) | 0), - (mid = (mid + Math.imul(ah0, bl2)) | 0), - (hi = (hi + Math.imul(ah0, bh2)) | 0); - var w2 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0), - (w2 &= 67108863), - (lo = Math.imul(al3, bl0)), - (mid = Math.imul(al3, bh0)), - (mid = (mid + Math.imul(ah3, bl0)) | 0), - (hi = Math.imul(ah3, bh0)), - (lo = (lo + Math.imul(al2, bl1)) | 0), - (mid = (mid + Math.imul(al2, bh1)) | 0), - (mid = (mid + Math.imul(ah2, bl1)) | 0), - (hi = (hi + Math.imul(ah2, bh1)) | 0), - (lo = (lo + Math.imul(al1, bl2)) | 0), - (mid = (mid + Math.imul(al1, bh2)) | 0), - (mid = (mid + Math.imul(ah1, bl2)) | 0), - (hi = (hi + Math.imul(ah1, bh2)) | 0), - (lo = (lo + Math.imul(al0, bl3)) | 0), - (mid = (mid + Math.imul(al0, bh3)) | 0), - (mid = (mid + Math.imul(ah0, bl3)) | 0), - (hi = (hi + Math.imul(ah0, bh3)) | 0); - var w3 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0), - (w3 &= 67108863), - (lo = Math.imul(al4, bl0)), - (mid = Math.imul(al4, bh0)), - (mid = (mid + Math.imul(ah4, bl0)) | 0), - (hi = Math.imul(ah4, bh0)), - (lo = (lo + Math.imul(al3, bl1)) | 0), - (mid = (mid + Math.imul(al3, bh1)) | 0), - (mid = (mid + Math.imul(ah3, bl1)) | 0), - (hi = (hi + Math.imul(ah3, bh1)) | 0), - (lo = (lo + Math.imul(al2, bl2)) | 0), - (mid = (mid + Math.imul(al2, bh2)) | 0), - (mid = (mid + Math.imul(ah2, bl2)) | 0), - (hi = (hi + Math.imul(ah2, bh2)) | 0), - (lo = (lo + Math.imul(al1, bl3)) | 0), - (mid = (mid + Math.imul(al1, bh3)) | 0), - (mid = (mid + Math.imul(ah1, bl3)) | 0), - (hi = (hi + Math.imul(ah1, bh3)) | 0), - (lo = (lo + Math.imul(al0, bl4)) | 0), - (mid = (mid + Math.imul(al0, bh4)) | 0), - (mid = (mid + Math.imul(ah0, bl4)) | 0), - (hi = (hi + Math.imul(ah0, bh4)) | 0); - var w4 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0), - (w4 &= 67108863), - (lo = Math.imul(al5, bl0)), - (mid = Math.imul(al5, bh0)), - (mid = (mid + Math.imul(ah5, bl0)) | 0), - (hi = Math.imul(ah5, bh0)), - (lo = (lo + Math.imul(al4, bl1)) | 0), - (mid = (mid + Math.imul(al4, bh1)) | 0), - (mid = (mid + Math.imul(ah4, bl1)) | 0), - (hi = (hi + Math.imul(ah4, bh1)) | 0), - (lo = (lo + Math.imul(al3, bl2)) | 0), - (mid = (mid + Math.imul(al3, bh2)) | 0), - (mid = (mid + Math.imul(ah3, bl2)) | 0), - (hi = (hi + Math.imul(ah3, bh2)) | 0), - (lo = (lo + Math.imul(al2, bl3)) | 0), - (mid = (mid + Math.imul(al2, bh3)) | 0), - (mid = (mid + Math.imul(ah2, bl3)) | 0), - (hi = (hi + Math.imul(ah2, bh3)) | 0), - (lo = (lo + Math.imul(al1, bl4)) | 0), - (mid = (mid + Math.imul(al1, bh4)) | 0), - (mid = (mid + Math.imul(ah1, bl4)) | 0), - (hi = (hi + Math.imul(ah1, bh4)) | 0), - (lo = (lo + Math.imul(al0, bl5)) | 0), - (mid = (mid + Math.imul(al0, bh5)) | 0), - (mid = (mid + Math.imul(ah0, bl5)) | 0), - (hi = (hi + Math.imul(ah0, bh5)) | 0); - var w5 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0), - (w5 &= 67108863), - (lo = Math.imul(al6, bl0)), - (mid = Math.imul(al6, bh0)), - (mid = (mid + Math.imul(ah6, bl0)) | 0), - (hi = Math.imul(ah6, bh0)), - (lo = (lo + Math.imul(al5, bl1)) | 0), - (mid = (mid + Math.imul(al5, bh1)) | 0), - (mid = (mid + Math.imul(ah5, bl1)) | 0), - (hi = (hi + Math.imul(ah5, bh1)) | 0), - (lo = (lo + Math.imul(al4, bl2)) | 0), - (mid = (mid + Math.imul(al4, bh2)) | 0), - (mid = (mid + Math.imul(ah4, bl2)) | 0), - (hi = (hi + Math.imul(ah4, bh2)) | 0), - (lo = (lo + Math.imul(al3, bl3)) | 0), - (mid = (mid + Math.imul(al3, bh3)) | 0), - (mid = (mid + Math.imul(ah3, bl3)) | 0), - (hi = (hi + Math.imul(ah3, bh3)) | 0), - (lo = (lo + Math.imul(al2, bl4)) | 0), - (mid = (mid + Math.imul(al2, bh4)) | 0), - (mid = (mid + Math.imul(ah2, bl4)) | 0), - (hi = (hi + Math.imul(ah2, bh4)) | 0), - (lo = (lo + Math.imul(al1, bl5)) | 0), - (mid = (mid + Math.imul(al1, bh5)) | 0), - (mid = (mid + Math.imul(ah1, bl5)) | 0), - (hi = (hi + Math.imul(ah1, bh5)) | 0), - (lo = (lo + Math.imul(al0, bl6)) | 0), - (mid = (mid + Math.imul(al0, bh6)) | 0), - (mid = (mid + Math.imul(ah0, bl6)) | 0), - (hi = (hi + Math.imul(ah0, bh6)) | 0); - var w6 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0), - (w6 &= 67108863), - (lo = Math.imul(al7, bl0)), - (mid = Math.imul(al7, bh0)), - (mid = (mid + Math.imul(ah7, bl0)) | 0), - (hi = Math.imul(ah7, bh0)), - (lo = (lo + Math.imul(al6, bl1)) | 0), - (mid = (mid + Math.imul(al6, bh1)) | 0), - (mid = (mid + Math.imul(ah6, bl1)) | 0), - (hi = (hi + Math.imul(ah6, bh1)) | 0), - (lo = (lo + Math.imul(al5, bl2)) | 0), - (mid = (mid + Math.imul(al5, bh2)) | 0), - (mid = (mid + Math.imul(ah5, bl2)) | 0), - (hi = (hi + Math.imul(ah5, bh2)) | 0), - (lo = (lo + Math.imul(al4, bl3)) | 0), - (mid = (mid + Math.imul(al4, bh3)) | 0), - (mid = (mid + Math.imul(ah4, bl3)) | 0), - (hi = (hi + Math.imul(ah4, bh3)) | 0), - (lo = (lo + Math.imul(al3, bl4)) | 0), - (mid = (mid + Math.imul(al3, bh4)) | 0), - (mid = (mid + Math.imul(ah3, bl4)) | 0), - (hi = (hi + Math.imul(ah3, bh4)) | 0), - (lo = (lo + Math.imul(al2, bl5)) | 0), - (mid = (mid + Math.imul(al2, bh5)) | 0), - (mid = (mid + Math.imul(ah2, bl5)) | 0), - (hi = (hi + Math.imul(ah2, bh5)) | 0), - (lo = (lo + Math.imul(al1, bl6)) | 0), - (mid = (mid + Math.imul(al1, bh6)) | 0), - (mid = (mid + Math.imul(ah1, bl6)) | 0), - (hi = (hi + Math.imul(ah1, bh6)) | 0), - (lo = (lo + Math.imul(al0, bl7)) | 0), - (mid = (mid + Math.imul(al0, bh7)) | 0), - (mid = (mid + Math.imul(ah0, bl7)) | 0), - (hi = (hi + Math.imul(ah0, bh7)) | 0); - var w7 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0), - (w7 &= 67108863), - (lo = Math.imul(al8, bl0)), - (mid = Math.imul(al8, bh0)), - (mid = (mid + Math.imul(ah8, bl0)) | 0), - (hi = Math.imul(ah8, bh0)), - (lo = (lo + Math.imul(al7, bl1)) | 0), - (mid = (mid + Math.imul(al7, bh1)) | 0), - (mid = (mid + Math.imul(ah7, bl1)) | 0), - (hi = (hi + Math.imul(ah7, bh1)) | 0), - (lo = (lo + Math.imul(al6, bl2)) | 0), - (mid = (mid + Math.imul(al6, bh2)) | 0), - (mid = (mid + Math.imul(ah6, bl2)) | 0), - (hi = (hi + Math.imul(ah6, bh2)) | 0), - (lo = (lo + Math.imul(al5, bl3)) | 0), - (mid = (mid + Math.imul(al5, bh3)) | 0), - (mid = (mid + Math.imul(ah5, bl3)) | 0), - (hi = (hi + Math.imul(ah5, bh3)) | 0), - (lo = (lo + Math.imul(al4, bl4)) | 0), - (mid = (mid + Math.imul(al4, bh4)) | 0), - (mid = (mid + Math.imul(ah4, bl4)) | 0), - (hi = (hi + Math.imul(ah4, bh4)) | 0), - (lo = (lo + Math.imul(al3, bl5)) | 0), - (mid = (mid + Math.imul(al3, bh5)) | 0), - (mid = (mid + Math.imul(ah3, bl5)) | 0), - (hi = (hi + Math.imul(ah3, bh5)) | 0), - (lo = (lo + Math.imul(al2, bl6)) | 0), - (mid = (mid + Math.imul(al2, bh6)) | 0), - (mid = (mid + Math.imul(ah2, bl6)) | 0), - (hi = (hi + Math.imul(ah2, bh6)) | 0), - (lo = (lo + Math.imul(al1, bl7)) | 0), - (mid = (mid + Math.imul(al1, bh7)) | 0), - (mid = (mid + Math.imul(ah1, bl7)) | 0), - (hi = (hi + Math.imul(ah1, bh7)) | 0), - (lo = (lo + Math.imul(al0, bl8)) | 0), - (mid = (mid + Math.imul(al0, bh8)) | 0), - (mid = (mid + Math.imul(ah0, bl8)) | 0), - (hi = (hi + Math.imul(ah0, bh8)) | 0); - var w8 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0), - (w8 &= 67108863), - (lo = Math.imul(al9, bl0)), - (mid = Math.imul(al9, bh0)), - (mid = (mid + Math.imul(ah9, bl0)) | 0), - (hi = Math.imul(ah9, bh0)), - (lo = (lo + Math.imul(al8, bl1)) | 0), - (mid = (mid + Math.imul(al8, bh1)) | 0), - (mid = (mid + Math.imul(ah8, bl1)) | 0), - (hi = (hi + Math.imul(ah8, bh1)) | 0), - (lo = (lo + Math.imul(al7, bl2)) | 0), - (mid = (mid + Math.imul(al7, bh2)) | 0), - (mid = (mid + Math.imul(ah7, bl2)) | 0), - (hi = (hi + Math.imul(ah7, bh2)) | 0), - (lo = (lo + Math.imul(al6, bl3)) | 0), - (mid = (mid + Math.imul(al6, bh3)) | 0), - (mid = (mid + Math.imul(ah6, bl3)) | 0), - (hi = (hi + Math.imul(ah6, bh3)) | 0), - (lo = (lo + Math.imul(al5, bl4)) | 0), - (mid = (mid + Math.imul(al5, bh4)) | 0), - (mid = (mid + Math.imul(ah5, bl4)) | 0), - (hi = (hi + Math.imul(ah5, bh4)) | 0), - (lo = (lo + Math.imul(al4, bl5)) | 0), - (mid = (mid + Math.imul(al4, bh5)) | 0), - (mid = (mid + Math.imul(ah4, bl5)) | 0), - (hi = (hi + Math.imul(ah4, bh5)) | 0), - (lo = (lo + Math.imul(al3, bl6)) | 0), - (mid = (mid + Math.imul(al3, bh6)) | 0), - (mid = (mid + Math.imul(ah3, bl6)) | 0), - (hi = (hi + Math.imul(ah3, bh6)) | 0), - (lo = (lo + Math.imul(al2, bl7)) | 0), - (mid = (mid + Math.imul(al2, bh7)) | 0), - (mid = (mid + Math.imul(ah2, bl7)) | 0), - (hi = (hi + Math.imul(ah2, bh7)) | 0), - (lo = (lo + Math.imul(al1, bl8)) | 0), - (mid = (mid + Math.imul(al1, bh8)) | 0), - (mid = (mid + Math.imul(ah1, bl8)) | 0), - (hi = (hi + Math.imul(ah1, bh8)) | 0), - (lo = (lo + Math.imul(al0, bl9)) | 0), - (mid = (mid + Math.imul(al0, bh9)) | 0), - (mid = (mid + Math.imul(ah0, bl9)) | 0), - (hi = (hi + Math.imul(ah0, bh9)) | 0); - var w9 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0), - (w9 &= 67108863), - (lo = Math.imul(al9, bl1)), - (mid = Math.imul(al9, bh1)), - (mid = (mid + Math.imul(ah9, bl1)) | 0), - (hi = Math.imul(ah9, bh1)), - (lo = (lo + Math.imul(al8, bl2)) | 0), - (mid = (mid + Math.imul(al8, bh2)) | 0), - (mid = (mid + Math.imul(ah8, bl2)) | 0), - (hi = (hi + Math.imul(ah8, bh2)) | 0), - (lo = (lo + Math.imul(al7, bl3)) | 0), - (mid = (mid + Math.imul(al7, bh3)) | 0), - (mid = (mid + Math.imul(ah7, bl3)) | 0), - (hi = (hi + Math.imul(ah7, bh3)) | 0), - (lo = (lo + Math.imul(al6, bl4)) | 0), - (mid = (mid + Math.imul(al6, bh4)) | 0), - (mid = (mid + Math.imul(ah6, bl4)) | 0), - (hi = (hi + Math.imul(ah6, bh4)) | 0), - (lo = (lo + Math.imul(al5, bl5)) | 0), - (mid = (mid + Math.imul(al5, bh5)) | 0), - (mid = (mid + Math.imul(ah5, bl5)) | 0), - (hi = (hi + Math.imul(ah5, bh5)) | 0), - (lo = (lo + Math.imul(al4, bl6)) | 0), - (mid = (mid + Math.imul(al4, bh6)) | 0), - (mid = (mid + Math.imul(ah4, bl6)) | 0), - (hi = (hi + Math.imul(ah4, bh6)) | 0), - (lo = (lo + Math.imul(al3, bl7)) | 0), - (mid = (mid + Math.imul(al3, bh7)) | 0), - (mid = (mid + Math.imul(ah3, bl7)) | 0), - (hi = (hi + Math.imul(ah3, bh7)) | 0), - (lo = (lo + Math.imul(al2, bl8)) | 0), - (mid = (mid + Math.imul(al2, bh8)) | 0), - (mid = (mid + Math.imul(ah2, bl8)) | 0), - (hi = (hi + Math.imul(ah2, bh8)) | 0), - (lo = (lo + Math.imul(al1, bl9)) | 0), - (mid = (mid + Math.imul(al1, bh9)) | 0), - (mid = (mid + Math.imul(ah1, bl9)) | 0), - (hi = (hi + Math.imul(ah1, bh9)) | 0); - var w10 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0), - (w10 &= 67108863), - (lo = Math.imul(al9, bl2)), - (mid = Math.imul(al9, bh2)), - (mid = (mid + Math.imul(ah9, bl2)) | 0), - (hi = Math.imul(ah9, bh2)), - (lo = (lo + Math.imul(al8, bl3)) | 0), - (mid = (mid + Math.imul(al8, bh3)) | 0), - (mid = (mid + Math.imul(ah8, bl3)) | 0), - (hi = (hi + Math.imul(ah8, bh3)) | 0), - (lo = (lo + Math.imul(al7, bl4)) | 0), - (mid = (mid + Math.imul(al7, bh4)) | 0), - (mid = (mid + Math.imul(ah7, bl4)) | 0), - (hi = (hi + Math.imul(ah7, bh4)) | 0), - (lo = (lo + Math.imul(al6, bl5)) | 0), - (mid = (mid + Math.imul(al6, bh5)) | 0), - (mid = (mid + Math.imul(ah6, bl5)) | 0), - (hi = (hi + Math.imul(ah6, bh5)) | 0), - (lo = (lo + Math.imul(al5, bl6)) | 0), - (mid = (mid + Math.imul(al5, bh6)) | 0), - (mid = (mid + Math.imul(ah5, bl6)) | 0), - (hi = (hi + Math.imul(ah5, bh6)) | 0), - (lo = (lo + Math.imul(al4, bl7)) | 0), - (mid = (mid + Math.imul(al4, bh7)) | 0), - (mid = (mid + Math.imul(ah4, bl7)) | 0), - (hi = (hi + Math.imul(ah4, bh7)) | 0), - (lo = (lo + Math.imul(al3, bl8)) | 0), - (mid = (mid + Math.imul(al3, bh8)) | 0), - (mid = (mid + Math.imul(ah3, bl8)) | 0), - (hi = (hi + Math.imul(ah3, bh8)) | 0), - (lo = (lo + Math.imul(al2, bl9)) | 0), - (mid = (mid + Math.imul(al2, bh9)) | 0), - (mid = (mid + Math.imul(ah2, bl9)) | 0), - (hi = (hi + Math.imul(ah2, bh9)) | 0); - var w11 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0), - (w11 &= 67108863), - (lo = Math.imul(al9, bl3)), - (mid = Math.imul(al9, bh3)), - (mid = (mid + Math.imul(ah9, bl3)) | 0), - (hi = Math.imul(ah9, bh3)), - (lo = (lo + Math.imul(al8, bl4)) | 0), - (mid = (mid + Math.imul(al8, bh4)) | 0), - (mid = (mid + Math.imul(ah8, bl4)) | 0), - (hi = (hi + Math.imul(ah8, bh4)) | 0), - (lo = (lo + Math.imul(al7, bl5)) | 0), - (mid = (mid + Math.imul(al7, bh5)) | 0), - (mid = (mid + Math.imul(ah7, bl5)) | 0), - (hi = (hi + Math.imul(ah7, bh5)) | 0), - (lo = (lo + Math.imul(al6, bl6)) | 0), - (mid = (mid + Math.imul(al6, bh6)) | 0), - (mid = (mid + Math.imul(ah6, bl6)) | 0), - (hi = (hi + Math.imul(ah6, bh6)) | 0), - (lo = (lo + Math.imul(al5, bl7)) | 0), - (mid = (mid + Math.imul(al5, bh7)) | 0), - (mid = (mid + Math.imul(ah5, bl7)) | 0), - (hi = (hi + Math.imul(ah5, bh7)) | 0), - (lo = (lo + Math.imul(al4, bl8)) | 0), - (mid = (mid + Math.imul(al4, bh8)) | 0), - (mid = (mid + Math.imul(ah4, bl8)) | 0), - (hi = (hi + Math.imul(ah4, bh8)) | 0), - (lo = (lo + Math.imul(al3, bl9)) | 0), - (mid = (mid + Math.imul(al3, bh9)) | 0), - (mid = (mid + Math.imul(ah3, bl9)) | 0), - (hi = (hi + Math.imul(ah3, bh9)) | 0); - var w12 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0), - (w12 &= 67108863), - (lo = Math.imul(al9, bl4)), - (mid = Math.imul(al9, bh4)), - (mid = (mid + Math.imul(ah9, bl4)) | 0), - (hi = Math.imul(ah9, bh4)), - (lo = (lo + Math.imul(al8, bl5)) | 0), - (mid = (mid + Math.imul(al8, bh5)) | 0), - (mid = (mid + Math.imul(ah8, bl5)) | 0), - (hi = (hi + Math.imul(ah8, bh5)) | 0), - (lo = (lo + Math.imul(al7, bl6)) | 0), - (mid = (mid + Math.imul(al7, bh6)) | 0), - (mid = (mid + Math.imul(ah7, bl6)) | 0), - (hi = (hi + Math.imul(ah7, bh6)) | 0), - (lo = (lo + Math.imul(al6, bl7)) | 0), - (mid = (mid + Math.imul(al6, bh7)) | 0), - (mid = (mid + Math.imul(ah6, bl7)) | 0), - (hi = (hi + Math.imul(ah6, bh7)) | 0), - (lo = (lo + Math.imul(al5, bl8)) | 0), - (mid = (mid + Math.imul(al5, bh8)) | 0), - (mid = (mid + Math.imul(ah5, bl8)) | 0), - (hi = (hi + Math.imul(ah5, bh8)) | 0), - (lo = (lo + Math.imul(al4, bl9)) | 0), - (mid = (mid + Math.imul(al4, bh9)) | 0), - (mid = (mid + Math.imul(ah4, bl9)) | 0), - (hi = (hi + Math.imul(ah4, bh9)) | 0); - var w13 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0), - (w13 &= 67108863), - (lo = Math.imul(al9, bl5)), - (mid = Math.imul(al9, bh5)), - (mid = (mid + Math.imul(ah9, bl5)) | 0), - (hi = Math.imul(ah9, bh5)), - (lo = (lo + Math.imul(al8, bl6)) | 0), - (mid = (mid + Math.imul(al8, bh6)) | 0), - (mid = (mid + Math.imul(ah8, bl6)) | 0), - (hi = (hi + Math.imul(ah8, bh6)) | 0), - (lo = (lo + Math.imul(al7, bl7)) | 0), - (mid = (mid + Math.imul(al7, bh7)) | 0), - (mid = (mid + Math.imul(ah7, bl7)) | 0), - (hi = (hi + Math.imul(ah7, bh7)) | 0), - (lo = (lo + Math.imul(al6, bl8)) | 0), - (mid = (mid + Math.imul(al6, bh8)) | 0), - (mid = (mid + Math.imul(ah6, bl8)) | 0), - (hi = (hi + Math.imul(ah6, bh8)) | 0), - (lo = (lo + Math.imul(al5, bl9)) | 0), - (mid = (mid + Math.imul(al5, bh9)) | 0), - (mid = (mid + Math.imul(ah5, bl9)) | 0), - (hi = (hi + Math.imul(ah5, bh9)) | 0); - var w14 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0), - (w14 &= 67108863), - (lo = Math.imul(al9, bl6)), - (mid = Math.imul(al9, bh6)), - (mid = (mid + Math.imul(ah9, bl6)) | 0), - (hi = Math.imul(ah9, bh6)), - (lo = (lo + Math.imul(al8, bl7)) | 0), - (mid = (mid + Math.imul(al8, bh7)) | 0), - (mid = (mid + Math.imul(ah8, bl7)) | 0), - (hi = (hi + Math.imul(ah8, bh7)) | 0), - (lo = (lo + Math.imul(al7, bl8)) | 0), - (mid = (mid + Math.imul(al7, bh8)) | 0), - (mid = (mid + Math.imul(ah7, bl8)) | 0), - (hi = (hi + Math.imul(ah7, bh8)) | 0), - (lo = (lo + Math.imul(al6, bl9)) | 0), - (mid = (mid + Math.imul(al6, bh9)) | 0), - (mid = (mid + Math.imul(ah6, bl9)) | 0), - (hi = (hi + Math.imul(ah6, bh9)) | 0); - var w15 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0), - (w15 &= 67108863), - (lo = Math.imul(al9, bl7)), - (mid = Math.imul(al9, bh7)), - (mid = (mid + Math.imul(ah9, bl7)) | 0), - (hi = Math.imul(ah9, bh7)), - (lo = (lo + Math.imul(al8, bl8)) | 0), - (mid = (mid + Math.imul(al8, bh8)) | 0), - (mid = (mid + Math.imul(ah8, bl8)) | 0), - (hi = (hi + Math.imul(ah8, bh8)) | 0), - (lo = (lo + Math.imul(al7, bl9)) | 0), - (mid = (mid + Math.imul(al7, bh9)) | 0), - (mid = (mid + Math.imul(ah7, bl9)) | 0), - (hi = (hi + Math.imul(ah7, bh9)) | 0); - var w16 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0), - (w16 &= 67108863), - (lo = Math.imul(al9, bl8)), - (mid = Math.imul(al9, bh8)), - (mid = (mid + Math.imul(ah9, bl8)) | 0), - (hi = Math.imul(ah9, bh8)), - (lo = (lo + Math.imul(al8, bl9)) | 0), - (mid = (mid + Math.imul(al8, bh9)) | 0), - (mid = (mid + Math.imul(ah8, bl9)) | 0), - (hi = (hi + Math.imul(ah8, bh9)) | 0); - var w17 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0), - (w17 &= 67108863), - (lo = Math.imul(al9, bl9)), - (mid = Math.imul(al9, bh9)), - (mid = (mid + Math.imul(ah9, bl9)) | 0), - (hi = Math.imul(ah9, bh9)); - var w18 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - return ( - (c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0), - (w18 &= 67108863), - (o[0] = w0), - (o[1] = w1), - (o[2] = w2), - (o[3] = w3), - (o[4] = w4), - (o[5] = w5), - (o[6] = w6), - (o[7] = w7), - (o[8] = w8), - (o[9] = w9), - (o[10] = w10), - (o[11] = w11), - (o[12] = w12), - (o[13] = w13), - (o[14] = w14), - (o[15] = w15), - (o[16] = w16), - (o[17] = w17), - (o[18] = w18), - c !== 0 && ((o[19] = c), out.length++), - out - ); - }; - Math.imul || (comb10MulTo = smallMulTo); - function bigMulTo(self2, num, out) { - (out.negative = num.negative ^ self2.negative), (out.length = self2.length + num.length); - for (var carry = 0, hncarry = 0, k = 0; k < out.length - 1; k++) { - var ncarry = hncarry; - hncarry = 0; - for ( - var rword = carry & 67108863, maxJ = Math.min(k, num.length - 1), j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = k - j, - a = self2.words[i] | 0, - b = num.words[j] | 0, - r = a * b, - lo = r & 67108863; - (ncarry = (ncarry + ((r / 67108864) | 0)) | 0), - (lo = (lo + rword) | 0), - (rword = lo & 67108863), - (ncarry = (ncarry + (lo >>> 26)) | 0), - (hncarry += ncarry >>> 26), - (ncarry &= 67108863); - } - (out.words[k] = rword), (carry = ncarry), (ncarry = hncarry); - } - return carry !== 0 ? (out.words[k] = carry) : out.length--, out.strip(); - } - function jumboMulTo(self2, num, out) { - var fftm = new FFTM(); - return fftm.mulp(self2, num, out); - } - BN.prototype.mulTo = function (num, out) { - var res, - len = this.length + num.length; - return ( - this.length === 10 && num.length === 10 - ? (res = comb10MulTo(this, num, out)) - : len < 63 - ? (res = smallMulTo(this, num, out)) - : len < 1024 - ? (res = bigMulTo(this, num, out)) - : (res = jumboMulTo(this, num, out)), - res - ); - }; - function FFTM(x, y) { - (this.x = x), (this.y = y); - } - (FFTM.prototype.makeRBT = function (N) { - for (var t = new Array(N), l = BN.prototype._countBits(N) - 1, i = 0; i < N; i++) t[i] = this.revBin(i, l, N); - return t; - }), - (FFTM.prototype.revBin = function (x, l, N) { - if (x === 0 || x === N - 1) return x; - for (var rb = 0, i = 0; i < l; i++) (rb |= (x & 1) << (l - i - 1)), (x >>= 1); - return rb; - }), - (FFTM.prototype.permute = function (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) (rtws[i] = rws[rbt[i]]), (itws[i] = iws[rbt[i]]); - }), - (FFTM.prototype.transform = function (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - for (var s = 1; s < N; s <<= 1) - for ( - var l = s << 1, rtwdf = Math.cos((2 * Math.PI) / l), itwdf = Math.sin((2 * Math.PI) / l), p = 0; - p < N; - p += l - ) - for (var rtwdf_ = rtwdf, itwdf_ = itwdf, j = 0; j < s; j++) { - var re = rtws[p + j], - ie = itws[p + j], - ro = rtws[p + j + s], - io = itws[p + j + s], - rx = rtwdf_ * ro - itwdf_ * io; - (io = rtwdf_ * io + itwdf_ * ro), - (ro = rx), - (rtws[p + j] = re + ro), - (itws[p + j] = ie + io), - (rtws[p + j + s] = re - ro), - (itws[p + j + s] = ie - io), - j !== l && - ((rx = rtwdf * rtwdf_ - itwdf * itwdf_), (itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_), (rtwdf_ = rx)); - } - }), - (FFTM.prototype.guessLen13b = function (n, m) { - var N = Math.max(m, n) | 1, - odd = N & 1, - i = 0; - for (N = (N / 2) | 0; N; N = N >>> 1) i++; - return 1 << (i + 1 + odd); - }), - (FFTM.prototype.conjugate = function (rws, iws, N) { - if (!(N <= 1)) - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - (rws[i] = rws[N - i - 1]), - (rws[N - i - 1] = t), - (t = iws[i]), - (iws[i] = -iws[N - i - 1]), - (iws[N - i - 1] = -t); - } - }), - (FFTM.prototype.normalize13b = function (ws, N) { - for (var carry = 0, i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; - (ws[i] = w & 67108863), w < 67108864 ? (carry = 0) : (carry = (w / 67108864) | 0); - } - return ws; - }), - (FFTM.prototype.convert13b = function (ws, len, rws, N) { - for (var carry = 0, i = 0; i < len; i++) - (carry = carry + (ws[i] | 0)), - (rws[2 * i] = carry & 8191), - (carry = carry >>> 13), - (rws[2 * i + 1] = carry & 8191), - (carry = carry >>> 13); - for (i = 2 * len; i < N; ++i) rws[i] = 0; - assert(carry === 0), assert((carry & -8192) === 0); - }), - (FFTM.prototype.stub = function (N) { - for (var ph = new Array(N), i = 0; i < N; i++) ph[i] = 0; - return ph; - }), - (FFTM.prototype.mulp = function (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length), - rbt = this.makeRBT(N), - _ = this.stub(N), - rws = new Array(N), - rwst = new Array(N), - iwst = new Array(N), - nrws = new Array(N), - nrwst = new Array(N), - niwst = new Array(N), - rmws = out.words; - (rmws.length = N), - this.convert13b(x.words, x.length, rws, N), - this.convert13b(y.words, y.length, nrws, N), - this.transform(rws, _, rwst, iwst, N, rbt), - this.transform(nrws, _, nrwst, niwst, N, rbt); - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - (iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]), (rwst[i] = rx); - } - return ( - this.conjugate(rwst, iwst, N), - this.transform(rwst, iwst, rmws, _, N, rbt), - this.conjugate(rmws, _, N), - this.normalize13b(rmws, N), - (out.negative = x.negative ^ y.negative), - (out.length = x.length + y.length), - out.strip() - ); - }), - (BN.prototype.mul = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), this.mulTo(num, out); - }), - (BN.prototype.mulf = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), jumboMulTo(this, num, out); - }), - (BN.prototype.imul = function (num) { - return this.clone().mulTo(num, this); - }), - (BN.prototype.imuln = function (num) { - assert(typeof num == "number"), assert(num < 67108864); - for (var carry = 0, i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num, - lo = (w & 67108863) + (carry & 67108863); - (carry >>= 26), (carry += (w / 67108864) | 0), (carry += lo >>> 26), (this.words[i] = lo & 67108863); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.muln = function (num) { - return this.clone().imuln(num); - }), - (BN.prototype.sqr = function () { - return this.mul(this); - }), - (BN.prototype.isqr = function () { - return this.imul(this.clone()); - }), - (BN.prototype.pow = function (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - for (var res = this, i = 0; i < w.length && w[i] === 0; i++, res = res.sqr()); - if (++i < w.length) for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) w[i] !== 0 && (res = res.mul(q)); - return res; - }), - (BN.prototype.iushln = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26, - carryMask = (67108863 >>> (26 - r)) << (26 - r), - i; - if (r !== 0) { - var carry = 0; - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask, - c = ((this.words[i] | 0) - newCarry) << r; - (this.words[i] = c | carry), (carry = newCarry >>> (26 - r)); - } - carry && ((this.words[i] = carry), this.length++); - } - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) this.words[i + s] = this.words[i]; - for (i = 0; i < s; i++) this.words[i] = 0; - this.length += s; - } - return this.strip(); - }), - (BN.prototype.ishln = function (bits) { - return assert(this.negative === 0), this.iushln(bits); - }), - (BN.prototype.iushrn = function (bits, hint, extended) { - assert(typeof bits == "number" && bits >= 0); - var h; - hint ? (h = (hint - (hint % 26)) / 26) : (h = 0); - var r = bits % 26, - s = Math.min((bits - r) / 26, this.length), - mask = 67108863 ^ ((67108863 >>> r) << r), - maskedWords = extended; - if (((h -= s), (h = Math.max(0, h)), maskedWords)) { - for (var i = 0; i < s; i++) maskedWords.words[i] = this.words[i]; - maskedWords.length = s; - } - if (s !== 0) - if (this.length > s) for (this.length -= s, i = 0; i < this.length; i++) this.words[i] = this.words[i + s]; - else (this.words[0] = 0), (this.length = 1); - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - (this.words[i] = (carry << (26 - r)) | (word >>> r)), (carry = word & mask); - } - return ( - maskedWords && carry !== 0 && (maskedWords.words[maskedWords.length++] = carry), - this.length === 0 && ((this.words[0] = 0), (this.length = 1)), - this.strip() - ); - }), - (BN.prototype.ishrn = function (bits, hint, extended) { - return assert(this.negative === 0), this.iushrn(bits, hint, extended); - }), - (BN.prototype.shln = function (bits) { - return this.clone().ishln(bits); - }), - (BN.prototype.ushln = function (bits) { - return this.clone().iushln(bits); - }), - (BN.prototype.shrn = function (bits) { - return this.clone().ishrn(bits); - }), - (BN.prototype.ushrn = function (bits) { - return this.clone().iushrn(bits); - }), - (BN.prototype.testn = function (bit) { - assert(typeof bit == "number" && bit >= 0); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return !1; - var w = this.words[s]; - return !!(w & q); - }), - (BN.prototype.imaskn = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26; - if ((assert(this.negative === 0, "imaskn works only with positive numbers"), this.length <= s)) return this; - if ((r !== 0 && s++, (this.length = Math.min(s, this.length)), r !== 0)) { - var mask = 67108863 ^ ((67108863 >>> r) << r); - this.words[this.length - 1] &= mask; - } - return this.strip(); - }), - (BN.prototype.maskn = function (bits) { - return this.clone().imaskn(bits); - }), - (BN.prototype.iaddn = function (num) { - return ( - assert(typeof num == "number"), - assert(num < 67108864), - num < 0 - ? this.isubn(-num) - : this.negative !== 0 - ? this.length === 1 && (this.words[0] | 0) < num - ? ((this.words[0] = num - (this.words[0] | 0)), (this.negative = 0), this) - : ((this.negative = 0), this.isubn(num), (this.negative = 1), this) - : this._iaddn(num) - ); - }), - (BN.prototype._iaddn = function (num) { - this.words[0] += num; - for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) - (this.words[i] -= 67108864), i === this.length - 1 ? (this.words[i + 1] = 1) : this.words[i + 1]++; - return (this.length = Math.max(this.length, i + 1)), this; - }), - (BN.prototype.isubn = function (num) { - if ((assert(typeof num == "number"), assert(num < 67108864), num < 0)) return this.iaddn(-num); - if (this.negative !== 0) return (this.negative = 0), this.iaddn(num), (this.negative = 1), this; - if (((this.words[0] -= num), this.length === 1 && this.words[0] < 0)) - (this.words[0] = -this.words[0]), (this.negative = 1); - else - for (var i = 0; i < this.length && this.words[i] < 0; i++) - (this.words[i] += 67108864), (this.words[i + 1] -= 1); - return this.strip(); - }), - (BN.prototype.addn = function (num) { - return this.clone().iaddn(num); - }), - (BN.prototype.subn = function (num) { - return this.clone().isubn(num); - }), - (BN.prototype.iabs = function () { - return (this.negative = 0), this; - }), - (BN.prototype.abs = function () { - return this.clone().iabs(); - }), - (BN.prototype._ishlnsubmul = function (num, mul, shift) { - var len = num.length + shift, - i; - this._expand(len); - var w, - carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - (w -= right & 67108863), - (carry = (w >> 26) - ((right / 67108864) | 0)), - (this.words[i + shift] = w & 67108863); - } - for (; i < this.length - shift; i++) - (w = (this.words[i + shift] | 0) + carry), (carry = w >> 26), (this.words[i + shift] = w & 67108863); - if (carry === 0) return this.strip(); - for (assert(carry === -1), carry = 0, i = 0; i < this.length; i++) - (w = -(this.words[i] | 0) + carry), (carry = w >> 26), (this.words[i] = w & 67108863); - return (this.negative = 1), this.strip(); - }), - (BN.prototype._wordDiv = function (num, mode) { - var shift = this.length - num.length, - a = this.clone(), - b = num, - bhi = b.words[b.length - 1] | 0, - bhiBits = this._countBits(bhi); - (shift = 26 - bhiBits), - shift !== 0 && ((b = b.ushln(shift)), a.iushln(shift), (bhi = b.words[b.length - 1] | 0)); - var m = a.length - b.length, - q; - if (mode !== "mod") { - (q = new BN(null)), (q.length = m + 1), (q.words = new Array(q.length)); - for (var i = 0; i < q.length; i++) q.words[i] = 0; - } - var diff = a.clone()._ishlnsubmul(b, 1, m); - diff.negative === 0 && ((a = diff), q && (q.words[m] = 1)); - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); - for (qj = Math.min((qj / bhi) | 0, 67108863), a._ishlnsubmul(b, qj, j); a.negative !== 0; ) - qj--, (a.negative = 0), a._ishlnsubmul(b, 1, j), a.isZero() || (a.negative ^= 1); - q && (q.words[j] = qj); - } - return ( - q && q.strip(), - a.strip(), - mode !== "div" && shift !== 0 && a.iushrn(shift), - { - div: q || null, - mod: a, - } - ); - }), - (BN.prototype.divmod = function (num, mode, positive) { - if ((assert(!num.isZero()), this.isZero())) - return { - div: new BN(0), - mod: new BN(0), - }; - var div, mod, res; - return this.negative !== 0 && num.negative === 0 - ? ((res = this.neg().divmod(num, mode)), - mode !== "mod" && (div = res.div.neg()), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.iadd(num)), - { - div, - mod, - }) - : this.negative === 0 && num.negative !== 0 - ? ((res = this.divmod(num.neg(), mode)), - mode !== "mod" && (div = res.div.neg()), - { - div, - mod: res.mod, - }) - : (this.negative & num.negative) !== 0 - ? ((res = this.neg().divmod(num.neg(), mode)), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.isub(num)), - { - div: res.div, - mod, - }) - : num.length > this.length || this.cmp(num) < 0 - ? { - div: new BN(0), - mod: this, - } - : num.length === 1 - ? mode === "div" - ? { - div: this.divn(num.words[0]), - mod: null, - } - : mode === "mod" - ? { - div: null, - mod: new BN(this.modn(num.words[0])), - } - : { - div: this.divn(num.words[0]), - mod: new BN(this.modn(num.words[0])), - } - : this._wordDiv(num, mode); - }), - (BN.prototype.div = function (num) { - return this.divmod(num, "div", !1).div; - }), - (BN.prototype.mod = function (num) { - return this.divmod(num, "mod", !1).mod; - }), - (BN.prototype.umod = function (num) { - return this.divmod(num, "mod", !0).mod; - }), - (BN.prototype.divRound = function (num) { - var dm = this.divmod(num); - if (dm.mod.isZero()) return dm.div; - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod, - half = num.ushrn(1), - r2 = num.andln(1), - cmp = mod.cmp(half); - return cmp < 0 || (r2 === 1 && cmp === 0) - ? dm.div - : dm.div.negative !== 0 - ? dm.div.isubn(1) - : dm.div.iaddn(1); - }), - (BN.prototype.modn = function (num) { - assert(num <= 67108863); - for (var p = (1 << 26) % num, acc = 0, i = this.length - 1; i >= 0; i--) - acc = (p * acc + (this.words[i] | 0)) % num; - return acc; - }), - (BN.prototype.idivn = function (num) { - assert(num <= 67108863); - for (var carry = 0, i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 67108864; - (this.words[i] = (w / num) | 0), (carry = w % num); - } - return this.strip(); - }), - (BN.prototype.divn = function (num) { - return this.clone().idivn(num); - }), - (BN.prototype.egcd = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var x = this, - y = p.clone(); - x.negative !== 0 ? (x = x.umod(p)) : (x = x.clone()); - for (var A = new BN(1), B = new BN(0), C = new BN(0), D = new BN(1), g = 0; x.isEven() && y.isEven(); ) - x.iushrn(1), y.iushrn(1), ++g; - for (var yp = y.clone(), xp = x.clone(); !x.isZero(); ) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) - for (x.iushrn(i); i-- > 0; ) - (A.isOdd() || B.isOdd()) && (A.iadd(yp), B.isub(xp)), A.iushrn(1), B.iushrn(1); - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) - for (y.iushrn(j); j-- > 0; ) - (C.isOdd() || D.isOdd()) && (C.iadd(yp), D.isub(xp)), C.iushrn(1), D.iushrn(1); - x.cmp(y) >= 0 ? (x.isub(y), A.isub(C), B.isub(D)) : (y.isub(x), C.isub(A), D.isub(B)); - } - return { - a: C, - b: D, - gcd: y.iushln(g), - }; - }), - (BN.prototype._invmp = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var a = this, - b = p.clone(); - a.negative !== 0 ? (a = a.umod(p)) : (a = a.clone()); - for (var x1 = new BN(1), x2 = new BN(0), delta = b.clone(); a.cmpn(1) > 0 && b.cmpn(1) > 0; ) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) for (a.iushrn(i); i-- > 0; ) x1.isOdd() && x1.iadd(delta), x1.iushrn(1); - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) for (b.iushrn(j); j-- > 0; ) x2.isOdd() && x2.iadd(delta), x2.iushrn(1); - a.cmp(b) >= 0 ? (a.isub(b), x1.isub(x2)) : (b.isub(a), x2.isub(x1)); - } - var res; - return a.cmpn(1) === 0 ? (res = x1) : (res = x2), res.cmpn(0) < 0 && res.iadd(p), res; - }), - (BN.prototype.gcd = function (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - var a = this.clone(), - b = num.clone(); - (a.negative = 0), (b.negative = 0); - for (var shift = 0; a.isEven() && b.isEven(); shift++) a.iushrn(1), b.iushrn(1); - do { - for (; a.isEven(); ) a.iushrn(1); - for (; b.isEven(); ) b.iushrn(1); - var r = a.cmp(b); - if (r < 0) { - var t = a; - (a = b), (b = t); - } else if (r === 0 || b.cmpn(1) === 0) break; - a.isub(b); - } while (!0); - return b.iushln(shift); - }), - (BN.prototype.invm = function (num) { - return this.egcd(num).a.umod(num); - }), - (BN.prototype.isEven = function () { - return (this.words[0] & 1) === 0; - }), - (BN.prototype.isOdd = function () { - return (this.words[0] & 1) === 1; - }), - (BN.prototype.andln = function (num) { - return this.words[0] & num; - }), - (BN.prototype.bincn = function (bit) { - assert(typeof bit == "number"); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return this._expand(s + 1), (this.words[s] |= q), this; - for (var carry = q, i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - (w += carry), (carry = w >>> 26), (w &= 67108863), (this.words[i] = w); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.isZero = function () { - return this.length === 1 && this.words[0] === 0; - }), - (BN.prototype.cmpn = function (num) { - var negative = num < 0; - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - this.strip(); - var res; - if (this.length > 1) res = 1; - else { - negative && (num = -num), assert(num <= 67108863, "Number is too big"); - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.cmp = function (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - var res = this.ucmp(num); - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.ucmp = function (num) { - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - for (var res = 0, i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0, - b = num.words[i] | 0; - if (a !== b) { - a < b ? (res = -1) : a > b && (res = 1); - break; - } - } - return res; - }), - (BN.prototype.gtn = function (num) { - return this.cmpn(num) === 1; - }), - (BN.prototype.gt = function (num) { - return this.cmp(num) === 1; - }), - (BN.prototype.gten = function (num) { - return this.cmpn(num) >= 0; - }), - (BN.prototype.gte = function (num) { - return this.cmp(num) >= 0; - }), - (BN.prototype.ltn = function (num) { - return this.cmpn(num) === -1; - }), - (BN.prototype.lt = function (num) { - return this.cmp(num) === -1; - }), - (BN.prototype.lten = function (num) { - return this.cmpn(num) <= 0; - }), - (BN.prototype.lte = function (num) { - return this.cmp(num) <= 0; - }), - (BN.prototype.eqn = function (num) { - return this.cmpn(num) === 0; - }), - (BN.prototype.eq = function (num) { - return this.cmp(num) === 0; - }), - (BN.red = function (num) { - return new Red(num); - }), - (BN.prototype.toRed = function (ctx) { - return ( - assert(!this.red, "Already a number in reduction context"), - assert(this.negative === 0, "red works only with positives"), - ctx.convertTo(this)._forceRed(ctx) - ); - }), - (BN.prototype.fromRed = function () { - return assert(this.red, "fromRed works only with numbers in reduction context"), this.red.convertFrom(this); - }), - (BN.prototype._forceRed = function (ctx) { - return (this.red = ctx), this; - }), - (BN.prototype.forceRed = function (ctx) { - return assert(!this.red, "Already a number in reduction context"), this._forceRed(ctx); - }), - (BN.prototype.redAdd = function (num) { - return assert(this.red, "redAdd works only with red numbers"), this.red.add(this, num); - }), - (BN.prototype.redIAdd = function (num) { - return assert(this.red, "redIAdd works only with red numbers"), this.red.iadd(this, num); - }), - (BN.prototype.redSub = function (num) { - return assert(this.red, "redSub works only with red numbers"), this.red.sub(this, num); - }), - (BN.prototype.redISub = function (num) { - return assert(this.red, "redISub works only with red numbers"), this.red.isub(this, num); - }), - (BN.prototype.redShl = function (num) { - return assert(this.red, "redShl works only with red numbers"), this.red.shl(this, num); - }), - (BN.prototype.redMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.mul(this, num) - ); - }), - (BN.prototype.redIMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.imul(this, num) - ); - }), - (BN.prototype.redSqr = function () { - return assert(this.red, "redSqr works only with red numbers"), this.red._verify1(this), this.red.sqr(this); - }), - (BN.prototype.redISqr = function () { - return assert(this.red, "redISqr works only with red numbers"), this.red._verify1(this), this.red.isqr(this); - }), - (BN.prototype.redSqrt = function () { - return assert(this.red, "redSqrt works only with red numbers"), this.red._verify1(this), this.red.sqrt(this); - }), - (BN.prototype.redInvm = function () { - return assert(this.red, "redInvm works only with red numbers"), this.red._verify1(this), this.red.invm(this); - }), - (BN.prototype.redNeg = function () { - return assert(this.red, "redNeg works only with red numbers"), this.red._verify1(this), this.red.neg(this); - }), - (BN.prototype.redPow = function (num) { - return assert(this.red && !num.red, "redPow(normalNum)"), this.red._verify1(this), this.red.pow(this, num); - }); - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null, - }; - function MPrime(name, p) { - (this.name = name), - (this.p = new BN(p, 16)), - (this.n = this.p.bitLength()), - (this.k = new BN(1).iushln(this.n).isub(this.p)), - (this.tmp = this._tmp()); - } - (MPrime.prototype._tmp = function () { - var tmp = new BN(null); - return (tmp.words = new Array(Math.ceil(this.n / 13))), tmp; - }), - (MPrime.prototype.ireduce = function (num) { - var r = num, - rlen; - do this.split(r, this.tmp), (r = this.imulK(r)), (r = r.iadd(this.tmp)), (rlen = r.bitLength()); - while (rlen > this.n); - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - return ( - cmp === 0 - ? ((r.words[0] = 0), (r.length = 1)) - : cmp > 0 - ? r.isub(this.p) - : r.strip !== void 0 - ? r.strip() - : r._strip(), - r - ); - }), - (MPrime.prototype.split = function (input, out) { - input.iushrn(this.n, 0, out); - }), - (MPrime.prototype.imulK = function (num) { - return num.imul(this.k); - }); - function K256() { - MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f"); - } - inherits(K256, MPrime), - (K256.prototype.split = function (input, output) { - for (var mask = 4194303, outLen = Math.min(input.length, 9), i = 0; i < outLen; i++) - output.words[i] = input.words[i]; - if (((output.length = outLen), input.length <= 9)) { - (input.words[0] = 0), (input.length = 1); - return; - } - var prev = input.words[9]; - for (output.words[output.length++] = prev & mask, i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - (input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22)), (prev = next); - } - (prev >>>= 22), - (input.words[i - 10] = prev), - prev === 0 && input.length > 10 ? (input.length -= 10) : (input.length -= 9); - }), - (K256.prototype.imulK = function (num) { - (num.words[num.length] = 0), (num.words[num.length + 1] = 0), (num.length += 2); - for (var lo = 0, i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - (lo += w * 977), (num.words[i] = lo & 67108863), (lo = w * 64 + ((lo / 67108864) | 0)); - } - return ( - num.words[num.length - 1] === 0 && (num.length--, num.words[num.length - 1] === 0 && num.length--), num - ); - }); - function P224() { - MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001"); - } - inherits(P224, MPrime); - function P192() { - MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff"); - } - inherits(P192, MPrime); - function P25519() { - MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed"); - } - inherits(P25519, MPrime), - (P25519.prototype.imulK = function (num) { - for (var carry = 0, i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 19 + carry, - lo = hi & 67108863; - (hi >>>= 26), (num.words[i] = lo), (carry = hi); - } - return carry !== 0 && (num.words[num.length++] = carry), num; - }), - (BN._prime = function (name) { - if (primes[name]) return primes[name]; - var prime2; - if (name === "k256") prime2 = new K256(); - else if (name === "p224") prime2 = new P224(); - else if (name === "p192") prime2 = new P192(); - else if (name === "p25519") prime2 = new P25519(); - else throw new Error("Unknown prime " + name); - return (primes[name] = prime2), prime2; - }); - function Red(m) { - if (typeof m == "string") { - var prime = BN._prime(m); - (this.m = prime.p), (this.prime = prime); - } else assert(m.gtn(1), "modulus must be greater than 1"), (this.m = m), (this.prime = null); - } - (Red.prototype._verify1 = function (a) { - assert(a.negative === 0, "red works only with positives"), assert(a.red, "red works only with red numbers"); - }), - (Red.prototype._verify2 = function (a, b) { - assert((a.negative | b.negative) === 0, "red works only with positives"), - assert(a.red && a.red === b.red, "red works only with red numbers"); - }), - (Red.prototype.imod = function (a) { - return this.prime ? this.prime.ireduce(a)._forceRed(this) : a.umod(this.m)._forceRed(this); - }), - (Red.prototype.neg = function (a) { - return a.isZero() ? a.clone() : this.m.sub(a)._forceRed(this); - }), - (Red.prototype.add = function (a, b) { - this._verify2(a, b); - var res = a.add(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res._forceRed(this); - }), - (Red.prototype.iadd = function (a, b) { - this._verify2(a, b); - var res = a.iadd(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res; - }), - (Red.prototype.sub = function (a, b) { - this._verify2(a, b); - var res = a.sub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res._forceRed(this); - }), - (Red.prototype.isub = function (a, b) { - this._verify2(a, b); - var res = a.isub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res; - }), - (Red.prototype.shl = function (a, num) { - return this._verify1(a), this.imod(a.ushln(num)); - }), - (Red.prototype.imul = function (a, b) { - return this._verify2(a, b), this.imod(a.imul(b)); - }), - (Red.prototype.mul = function (a, b) { - return this._verify2(a, b), this.imod(a.mul(b)); - }), - (Red.prototype.isqr = function (a) { - return this.imul(a, a.clone()); - }), - (Red.prototype.sqr = function (a) { - return this.mul(a, a); - }), - (Red.prototype.sqrt = function (a) { - if (a.isZero()) return a.clone(); - var mod3 = this.m.andln(3); - if ((assert(mod3 % 2 === 1), mod3 === 3)) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - for (var q = this.m.subn(1), s = 0; !q.isZero() && q.andln(1) === 0; ) s++, q.iushrn(1); - assert(!q.isZero()); - var one = new BN(1).toRed(this), - nOne = one.redNeg(), - lpow = this.m.subn(1).iushrn(1), - z = this.m.bitLength(); - for (z = new BN(2 * z * z).toRed(this); this.pow(z, lpow).cmp(nOne) !== 0; ) z.redIAdd(nOne); - for ( - var c = this.pow(z, q), r = this.pow(a, q.addn(1).iushrn(1)), t = this.pow(a, q), m = s; - t.cmp(one) !== 0; - - ) { - for (var tmp = t, i = 0; tmp.cmp(one) !== 0; i++) tmp = tmp.redSqr(); - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - (r = r.redMul(b)), (c = b.redSqr()), (t = t.redMul(c)), (m = i); - } - return r; - }), - (Red.prototype.invm = function (a) { - var inv = a._invmp(this.m); - return inv.negative !== 0 ? ((inv.negative = 0), this.imod(inv).redNeg()) : this.imod(inv); - }), - (Red.prototype.pow = function (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - var windowSize = 4, - wnd = new Array(1 << windowSize); - (wnd[0] = new BN(1).toRed(this)), (wnd[1] = a); - for (var i = 2; i < wnd.length; i++) wnd[i] = this.mul(wnd[i - 1], a); - var res = wnd[0], - current = 0, - currentLen = 0, - start = num.bitLength() % 26; - for (start === 0 && (start = 26), i = num.length - 1; i >= 0; i--) { - for (var word = num.words[i], j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if ((res !== wnd[0] && (res = this.sqr(res)), bit === 0 && current === 0)) { - currentLen = 0; - continue; - } - (current <<= 1), - (current |= bit), - currentLen++, - !(currentLen !== windowSize && (i !== 0 || j !== 0)) && - ((res = this.mul(res, wnd[current])), (currentLen = 0), (current = 0)); - } - start = 26; - } - return res; - }), - (Red.prototype.convertTo = function (num) { - var r = num.umod(this.m); - return r === num ? r.clone() : r; - }), - (Red.prototype.convertFrom = function (num) { - var res = num.clone(); - return (res.red = null), res; - }), - (BN.mont = function (num) { - return new Mont(num); - }); - function Mont(m) { - Red.call(this, m), - (this.shift = this.m.bitLength()), - this.shift % 26 !== 0 && (this.shift += 26 - (this.shift % 26)), - (this.r = new BN(1).iushln(this.shift)), - (this.r2 = this.imod(this.r.sqr())), - (this.rinv = this.r._invmp(this.m)), - (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), - (this.minv = this.minv.umod(this.r)), - (this.minv = this.r.sub(this.minv)); - } - inherits(Mont, Red), - (Mont.prototype.convertTo = function (num) { - return this.imod(num.ushln(this.shift)); - }), - (Mont.prototype.convertFrom = function (num) { - var r = this.imod(num.mul(this.rinv)); - return (r.red = null), r; - }), - (Mont.prototype.imul = function (a, b) { - if (a.isZero() || b.isZero()) return (a.words[0] = 0), (a.length = 1), a; - var t = a.imul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.mul = function (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - var t = a.mul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.invm = function (a) { - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }); - })(typeof module > "u" || module, exports); - }, -}); - -// (disabled):node_modules/crypto-browserify/index.js -var require_crypto_browserify = __commonJS({ - "(disabled):node_modules/crypto-browserify/index.js"() {}, -}); - -// node_modules/brorand/index.js -var require_brorand = __commonJS({ - "node_modules/brorand/index.js"(exports, module) { - var r; - module.exports = function (len) { - return r || (r = new Rand(null)), r.generate(len); - }; - function Rand(rand) { - this.rand = rand; - } - module.exports.Rand = Rand; - Rand.prototype.generate = function (len) { - return this._rand(len); - }; - Rand.prototype._rand = function (n) { - var out = new Buffer(n); - crypto.getRandomValues(out); - return out; - }; - }, -}); - -// node_modules/miller-rabin/lib/mr.js -var require_mr = __commonJS({ - "node_modules/miller-rabin/lib/mr.js"(exports, module) { - var bn = require_bn2(), - brorand = require_brorand(); - function MillerRabin(rand) { - this.rand = rand || new brorand.Rand(); - } - module.exports = MillerRabin; - MillerRabin.create = function (rand) { - return new MillerRabin(rand); - }; - MillerRabin.prototype._randbelow = function (n) { - var len = n.bitLength(), - min_bytes = Math.ceil(len / 8); - do var a = new bn(this.rand.generate(min_bytes)); - while (a.cmp(n) >= 0); - return a; - }; - MillerRabin.prototype._randrange = function (start, stop) { - var size = stop.sub(start); - return start.add(this._randbelow(size)); - }; - MillerRabin.prototype.test = function (n, k, cb) { - var len = n.bitLength(), - red = bn.mont(n), - rone = new bn(1).toRed(red); - k || (k = Math.max(1, (len / 48) | 0)); - for (var n1 = n.subn(1), s = 0; !n1.testn(s); s++); - for (var d = n.shrn(s), rn1 = n1.toRed(red), prime = !0; k > 0; k--) { - var a = this._randrange(new bn(2), n1); - cb && cb(a); - var x = a.toRed(red).redPow(d); - if (!(x.cmp(rone) === 0 || x.cmp(rn1) === 0)) { - for (var i = 1; i < s; i++) { - if (((x = x.redSqr()), x.cmp(rone) === 0)) return !1; - if (x.cmp(rn1) === 0) break; - } - if (i === s) return !1; - } - } - return prime; - }; - MillerRabin.prototype.getDivisor = function (n, k) { - var len = n.bitLength(), - red = bn.mont(n), - rone = new bn(1).toRed(red); - k || (k = Math.max(1, (len / 48) | 0)); - for (var n1 = n.subn(1), s = 0; !n1.testn(s); s++); - for (var d = n.shrn(s), rn1 = n1.toRed(red); k > 0; k--) { - var a = this._randrange(new bn(2), n1), - g = n.gcd(a); - if (g.cmpn(1) !== 0) return g; - var x = a.toRed(red).redPow(d); - if (!(x.cmp(rone) === 0 || x.cmp(rn1) === 0)) { - for (var i = 1; i < s; i++) { - if (((x = x.redSqr()), x.cmp(rone) === 0)) return x.fromRed().subn(1).gcd(n); - if (x.cmp(rn1) === 0) break; - } - if (i === s) return (x = x.redSqr()), x.fromRed().subn(1).gcd(n); - } - } - return !1; - }; - }, -}); - -// node_modules/diffie-hellman/lib/generatePrime.js -var require_generatePrime = __commonJS({ - "node_modules/diffie-hellman/lib/generatePrime.js"(exports, module) { - var randomBytes = require_browser(); - module.exports = findPrime; - findPrime.simpleSieve = simpleSieve; - findPrime.fermatTest = fermatTest; - var BN = require_bn(), - TWENTYFOUR = new BN(24), - MillerRabin = require_mr(), - millerRabin = new MillerRabin(), - ONE = new BN(1), - TWO = new BN(2), - FIVE = new BN(5), - SIXTEEN = new BN(16), - EIGHT = new BN(8), - TEN = new BN(10), - THREE = new BN(3), - SEVEN = new BN(7), - ELEVEN = new BN(11), - FOUR = new BN(4), - TWELVE = new BN(12), - primes = null; - function _getPrimes() { - if (primes !== null) return primes; - var limit = 1048576, - res = []; - res[0] = 2; - for (var i = 1, k = 3; k < limit; k += 2) { - for (var sqrt = Math.ceil(Math.sqrt(k)), j = 0; j < i && res[j] <= sqrt && k % res[j] !== 0; j++); - (i !== j && res[j] <= sqrt) || (res[i++] = k); - } - return (primes = res), res; - } - function simpleSieve(p) { - for (var primes2 = _getPrimes(), i = 0; i < primes2.length; i++) - if (p.modn(primes2[i]) === 0) return p.cmpn(primes2[i]) === 0; - return !0; - } - function fermatTest(p) { - var red = BN.mont(p); - return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0; - } - function findPrime(bits, gen) { - if (bits < 16) return gen === 2 || gen === 5 ? new BN([140, 123]) : new BN([140, 39]); - gen = new BN(gen); - for (var num, n2; ; ) { - for (num = new BN(randomBytes(Math.ceil(bits / 8))); num.bitLength() > bits; ) num.ishrn(1); - if ((num.isEven() && num.iadd(ONE), num.testn(1) || num.iadd(TWO), gen.cmp(TWO))) { - if (!gen.cmp(FIVE)) for (; num.mod(TEN).cmp(THREE); ) num.iadd(FOUR); - } else for (; num.mod(TWENTYFOUR).cmp(ELEVEN); ) num.iadd(FOUR); - if ( - ((n2 = num.shrn(1)), - simpleSieve(n2) && - simpleSieve(num) && - fermatTest(n2) && - fermatTest(num) && - millerRabin.test(n2) && - millerRabin.test(num)) - ) - return num; - } - } - }, -}); - -// node_modules/diffie-hellman/lib/primes.json -var require_primes = __commonJS({ - "node_modules/diffie-hellman/lib/primes.json"(exports, module) { - module.exports = { - modp1: { - gen: "02", - prime: - "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff", - }, - modp2: { - gen: "02", - prime: - "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff", - }, - modp5: { - gen: "02", - prime: - "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff", - }, - modp14: { - gen: "02", - prime: - "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff", - }, - modp15: { - gen: "02", - prime: - "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff", - }, - modp16: { - gen: "02", - prime: - "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff", - }, - modp17: { - gen: "02", - prime: - "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff", - }, - modp18: { - gen: "02", - prime: - "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff", - }, - }; - }, -}); - -// node_modules/diffie-hellman/lib/dh.js -var require_dh = __commonJS({ - "node_modules/diffie-hellman/lib/dh.js"(exports, module) { - var BN = require_bn(), - MillerRabin = require_mr(), - millerRabin = new MillerRabin(), - TWENTYFOUR = new BN(24), - ELEVEN = new BN(11), - TEN = new BN(10), - THREE = new BN(3), - SEVEN = new BN(7), - primes = require_generatePrime(), - randomBytes = require_browser(); - module.exports = DH; - function setPublicKey(pub, enc) { - return ( - (enc = enc || "utf8"), Buffer.isBuffer(pub) || (pub = new Buffer(pub, enc)), (this._pub = new BN(pub)), this - ); - } - function setPrivateKey(priv, enc) { - return ( - (enc = enc || "utf8"), - Buffer.isBuffer(priv) || (priv = new Buffer(priv, enc)), - (this._priv = new BN(priv)), - this - ); - } - var primeCache = {}; - function checkPrime(prime, generator) { - var gen = generator.toString("hex"), - hex = [gen, prime.toString(16)].join("_"); - if (hex in primeCache) return primeCache[hex]; - var error = 0; - if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) - return ( - (error += 1), gen === "02" || gen === "05" ? (error += 8) : (error += 4), (primeCache[hex] = error), error - ); - millerRabin.test(prime.shrn(1)) || (error += 2); - var rem; - switch (gen) { - case "02": - prime.mod(TWENTYFOUR).cmp(ELEVEN) && (error += 8); - break; - case "05": - (rem = prime.mod(TEN)), rem.cmp(THREE) && rem.cmp(SEVEN) && (error += 8); - break; - default: - error += 4; - } - return (primeCache[hex] = error), error; - } - function DH(prime, generator, malleable) { - this.setGenerator(generator), - (this.__prime = new BN(prime)), - (this._prime = BN.mont(this.__prime)), - (this._primeLen = prime.length), - (this._pub = void 0), - (this._priv = void 0), - (this._primeCode = void 0), - malleable ? ((this.setPublicKey = setPublicKey), (this.setPrivateKey = setPrivateKey)) : (this._primeCode = 8); - } - Object.defineProperty(DH.prototype, "verifyError", { - enumerable: !0, - get: function () { - return ( - typeof this._primeCode != "number" && (this._primeCode = checkPrime(this.__prime, this.__gen)), - this._primeCode - ); - }, - }); - DH.prototype.generateKeys = function () { - return ( - this._priv || (this._priv = new BN(randomBytes(this._primeLen))), - (this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed()), - this.getPublicKey() - ); - }; - DH.prototype.computeSecret = function (other) { - (other = new BN(other)), (other = other.toRed(this._prime)); - var secret = other.redPow(this._priv).fromRed(), - out = new Buffer(secret.toArray()), - prime = this.getPrime(); - if (out.length < prime.length) { - var front = new Buffer(prime.length - out.length); - front.fill(0), (out = Buffer.concat([front, out])); - } - return out; - }; - DH.prototype.getPublicKey = function (enc) { - return formatReturnValue(this._pub, enc); - }; - DH.prototype.getPrivateKey = function (enc) { - return formatReturnValue(this._priv, enc); - }; - DH.prototype.getPrime = function (enc) { - return formatReturnValue(this.__prime, enc); - }; - DH.prototype.getGenerator = function (enc) { - return formatReturnValue(this._gen, enc); - }; - DH.prototype.setGenerator = function (gen, enc) { - return ( - (enc = enc || "utf8"), - Buffer.isBuffer(gen) || (gen = new Buffer(gen, enc)), - (this.__gen = gen), - (this._gen = new BN(gen)), - this - ); - }; - function formatReturnValue(bn, enc) { - var buf = new Buffer(bn.toArray()); - return enc ? buf.toString(enc) : buf; - } - }, -}); - -// node_modules/diffie-hellman/browser.js -var require_browser7 = __commonJS({ - "node_modules/diffie-hellman/browser.js"(exports) { - var generatePrime = require_generatePrime(), - primes = require_primes(), - DH = require_dh(); - function getDiffieHellman(mod) { - var prime = new Buffer(primes[mod].prime, "hex"), - gen = new Buffer(primes[mod].gen, "hex"); - return new DH(prime, gen); - } - var ENCODINGS = { - binary: !0, - hex: !0, - base64: !0, - }; - function createDiffieHellman(prime, enc, generator, genc) { - return Buffer.isBuffer(enc) || ENCODINGS[enc] === void 0 - ? createDiffieHellman(prime, "binary", enc, generator) - : ((enc = enc || "binary"), - (genc = genc || "binary"), - (generator = generator || new Buffer([2])), - Buffer.isBuffer(generator) || (generator = new Buffer(generator, genc)), - typeof prime == "number" - ? new DH(generatePrime(prime, generator), generator, !0) - : (Buffer.isBuffer(prime) || (prime = new Buffer(prime, enc)), new DH(prime, generator, !0))); - } - exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman; - exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman; - }, -}); - -// node_modules/bn.js/lib/bn.js -var require_bn3 = __commonJS({ - "node_modules/bn.js/lib/bn.js"(exports, module) { - (function (module2, exports2) { - "use strict"; - function assert(val, msg) { - if (!val) throw new Error(msg || "Assertion failed"); - } - function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - (TempCtor.prototype = superCtor.prototype), - (ctor.prototype = new TempCtor()), - (ctor.prototype.constructor = ctor); - } - function BN(number, base, endian) { - if (BN.isBN(number)) return number; - (this.negative = 0), - (this.words = null), - (this.length = 0), - (this.red = null), - number !== null && - ((base === "le" || base === "be") && ((endian = base), (base = 10)), - this._init(number || 0, base || 10, endian || "be")); - } - typeof module2 == "object" ? (module2.exports = BN) : (exports2.BN = BN), (BN.BN = BN), (BN.wordSize = 26); - var Buffer2; - try { - typeof window < "u" && typeof window.Buffer < "u" - ? (Buffer2 = window.Buffer) - : (Buffer2 = __require("buffer").Buffer); - } catch {} - (BN.isBN = function (num) { - return num instanceof BN - ? !0 - : num !== null && - typeof num == "object" && - num.constructor.wordSize === BN.wordSize && - Array.isArray(num.words); - }), - (BN.max = function (left, right) { - return left.cmp(right) > 0 ? left : right; - }), - (BN.min = function (left, right) { - return left.cmp(right) < 0 ? left : right; - }), - (BN.prototype._init = function (number, base, endian) { - if (typeof number == "number") return this._initNumber(number, base, endian); - if (typeof number == "object") return this._initArray(number, base, endian); - base === "hex" && (base = 16), - assert(base === (base | 0) && base >= 2 && base <= 36), - (number = number.toString().replace(/\s+/g, "")); - var start = 0; - number[0] === "-" && (start++, (this.negative = 1)), - start < number.length && - (base === 16 - ? this._parseHex(number, start, endian) - : (this._parseBase(number, base, start), - endian === "le" && this._initArray(this.toArray(), base, endian))); - }), - (BN.prototype._initNumber = function (number, base, endian) { - number < 0 && ((this.negative = 1), (number = -number)), - number < 67108864 - ? ((this.words = [number & 67108863]), (this.length = 1)) - : number < 4503599627370496 - ? ((this.words = [number & 67108863, (number / 67108864) & 67108863]), (this.length = 2)) - : (assert(number < 9007199254740992), - (this.words = [number & 67108863, (number / 67108864) & 67108863, 1]), - (this.length = 3)), - endian === "le" && this._initArray(this.toArray(), base, endian); - }), - (BN.prototype._initArray = function (number, base, endian) { - if ((assert(typeof number.length == "number"), number.length <= 0)) - return (this.words = [0]), (this.length = 1), this; - (this.length = Math.ceil(number.length / 3)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var j, - w, - off = 0; - if (endian === "be") - for (i = number.length - 1, j = 0; i >= 0; i -= 3) - (w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - else if (endian === "le") - for (i = 0, j = 0; i < number.length; i += 3) - (w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - return this._strip(); - }); - function parseHex4Bits(string, index) { - var c = string.charCodeAt(index); - if (c >= 48 && c <= 57) return c - 48; - if (c >= 65 && c <= 70) return c - 55; - if (c >= 97 && c <= 102) return c - 87; - assert(!1, "Invalid character in " + string); - } - function parseHexByte(string, lowerBound, index) { - var r = parseHex4Bits(string, index); - return index - 1 >= lowerBound && (r |= parseHex4Bits(string, index - 1) << 4), r; - } - BN.prototype._parseHex = function (number, start, endian) { - (this.length = Math.ceil((number.length - start) / 6)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var off = 0, - j = 0, - w; - if (endian === "be") - for (i = number.length - 1; i >= start; i -= 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - else { - var parseLength = number.length - start; - for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - } - this._strip(); - }; - function parseBase(str, start, end, mul) { - for (var r = 0, b = 0, len = Math.min(str.length, end), i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - (r *= mul), - c >= 49 ? (b = c - 49 + 10) : c >= 17 ? (b = c - 17 + 10) : (b = c), - assert(c >= 0 && b < mul, "Invalid character"), - (r += b); - } - return r; - } - (BN.prototype._parseBase = function (number, base, start) { - (this.words = [0]), (this.length = 1); - for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) limbLen++; - limbLen--, (limbPow = (limbPow / base) | 0); - for ( - var total = number.length - start, - mod = total % limbLen, - end = Math.min(total, total - mod) + start, - word = 0, - i = start; - i < end; - i += limbLen - ) - (word = parseBase(number, i, i + limbLen, base)), - this.imuln(limbPow), - this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - if (mod !== 0) { - var pow = 1; - for (word = parseBase(number, i, number.length, base), i = 0; i < mod; i++) pow *= base; - this.imuln(pow), this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - } - this._strip(); - }), - (BN.prototype.copy = function (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) dest.words[i] = this.words[i]; - (dest.length = this.length), (dest.negative = this.negative), (dest.red = this.red); - }); - function move(dest, src) { - (dest.words = src.words), (dest.length = src.length), (dest.negative = src.negative), (dest.red = src.red); - } - if ( - ((BN.prototype._move = function (dest) { - move(dest, this); - }), - (BN.prototype.clone = function () { - var r = new BN(null); - return this.copy(r), r; - }), - (BN.prototype._expand = function (size) { - for (; this.length < size; ) this.words[this.length++] = 0; - return this; - }), - (BN.prototype._strip = function () { - for (; this.length > 1 && this.words[this.length - 1] === 0; ) this.length--; - return this._normSign(); - }), - (BN.prototype._normSign = function () { - return this.length === 1 && this.words[0] === 0 && (this.negative = 0), this; - }), - typeof Symbol < "u" && typeof Symbol.for == "function") - ) - try { - BN.prototype[Symbol.for("nodejs.util.inspect.custom")] = inspect; - } catch { - BN.prototype.inspect = inspect; - } - else BN.prototype.inspect = inspect; - function inspect() { - return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">"; - } - var zeros = [ - "", - "0", - "00", - "000", - "0000", - "00000", - "000000", - "0000000", - "00000000", - "000000000", - "0000000000", - "00000000000", - "000000000000", - "0000000000000", - "00000000000000", - "000000000000000", - "0000000000000000", - "00000000000000000", - "000000000000000000", - "0000000000000000000", - "00000000000000000000", - "000000000000000000000", - "0000000000000000000000", - "00000000000000000000000", - "000000000000000000000000", - "0000000000000000000000000", - ], - groupSizes = [ - 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, - ], - groupBases = [ - 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, - 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, - 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, - 60466176, - ]; - (BN.prototype.toString = function (base, padding) { - (base = base || 10), (padding = padding | 0 || 1); - var out; - if (base === 16 || base === "hex") { - out = ""; - for (var off = 0, carry = 0, i = 0; i < this.length; i++) { - var w = this.words[i], - word = (((w << off) | carry) & 16777215).toString(16); - (carry = (w >>> (24 - off)) & 16777215), - (off += 2), - off >= 26 && ((off -= 26), i--), - carry !== 0 || i !== this.length - 1 ? (out = zeros[6 - word.length] + word + out) : (out = word + out); - } - for (carry !== 0 && (out = carry.toString(16) + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - if (base === (base | 0) && base >= 2 && base <= 36) { - var groupSize = groupSizes[base], - groupBase = groupBases[base]; - out = ""; - var c = this.clone(); - for (c.negative = 0; !c.isZero(); ) { - var r = c.modrn(groupBase).toString(base); - (c = c.idivn(groupBase)), c.isZero() ? (out = r + out) : (out = zeros[groupSize - r.length] + r + out); - } - for (this.isZero() && (out = "0" + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - assert(!1, "Base should be between 2 and 36"); - }), - (BN.prototype.toNumber = function () { - var ret = this.words[0]; - return ( - this.length === 2 - ? (ret += this.words[1] * 67108864) - : this.length === 3 && this.words[2] === 1 - ? (ret += 4503599627370496 + this.words[1] * 67108864) - : this.length > 2 && assert(!1, "Number can only safely store up to 53 bits"), - this.negative !== 0 ? -ret : ret - ); - }), - (BN.prototype.toJSON = function () { - return this.toString(16, 2); - }), - Buffer2 && - (BN.prototype.toBuffer = function (endian, length) { - return this.toArrayLike(Buffer2, endian, length); - }), - (BN.prototype.toArray = function (endian, length) { - return this.toArrayLike(Array, endian, length); - }); - var allocate = function (ArrayType, size) { - return ArrayType.allocUnsafe ? ArrayType.allocUnsafe(size) : new ArrayType(size); - }; - (BN.prototype.toArrayLike = function (ArrayType, endian, length) { - this._strip(); - var byteLength = this.byteLength(), - reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, "byte array longer than desired length"), - assert(reqLength > 0, "Requested array length <= 0"); - var res = allocate(ArrayType, reqLength), - postfix = endian === "le" ? "LE" : "BE"; - return this["_toArrayLike" + postfix](res, byteLength), res; - }), - (BN.prototype._toArrayLikeLE = function (res, byteLength) { - for (var position = 0, carry = 0, i = 0, shift = 0; i < this.length; i++) { - var word = (this.words[i] << shift) | carry; - (res[position++] = word & 255), - position < res.length && (res[position++] = (word >> 8) & 255), - position < res.length && (res[position++] = (word >> 16) & 255), - shift === 6 - ? (position < res.length && (res[position++] = (word >> 24) & 255), (carry = 0), (shift = 0)) - : ((carry = word >>> 24), (shift += 2)); - } - if (position < res.length) for (res[position++] = carry; position < res.length; ) res[position++] = 0; - }), - (BN.prototype._toArrayLikeBE = function (res, byteLength) { - for (var position = res.length - 1, carry = 0, i = 0, shift = 0; i < this.length; i++) { - var word = (this.words[i] << shift) | carry; - (res[position--] = word & 255), - position >= 0 && (res[position--] = (word >> 8) & 255), - position >= 0 && (res[position--] = (word >> 16) & 255), - shift === 6 - ? (position >= 0 && (res[position--] = (word >> 24) & 255), (carry = 0), (shift = 0)) - : ((carry = word >>> 24), (shift += 2)); - } - if (position >= 0) for (res[position--] = carry; position >= 0; ) res[position--] = 0; - }), - Math.clz32 - ? (BN.prototype._countBits = function (w) { - return 32 - Math.clz32(w); - }) - : (BN.prototype._countBits = function (w) { - var t = w, - r = 0; - return ( - t >= 4096 && ((r += 13), (t >>>= 13)), - t >= 64 && ((r += 7), (t >>>= 7)), - t >= 8 && ((r += 4), (t >>>= 4)), - t >= 2 && ((r += 2), (t >>>= 2)), - r + t - ); - }), - (BN.prototype._zeroBits = function (w) { - if (w === 0) return 26; - var t = w, - r = 0; - return ( - (t & 8191) === 0 && ((r += 13), (t >>>= 13)), - (t & 127) === 0 && ((r += 7), (t >>>= 7)), - (t & 15) === 0 && ((r += 4), (t >>>= 4)), - (t & 3) === 0 && ((r += 2), (t >>>= 2)), - (t & 1) === 0 && r++, - r - ); - }), - (BN.prototype.bitLength = function () { - var w = this.words[this.length - 1], - hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }); - function toBitArray(num) { - for (var w = new Array(num.bitLength()), bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0, - wbit = bit % 26; - w[bit] = (num.words[off] >>> wbit) & 1; - } - return w; - } - (BN.prototype.zeroBits = function () { - if (this.isZero()) return 0; - for (var r = 0, i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - if (((r += b), b !== 26)) break; - } - return r; - }), - (BN.prototype.byteLength = function () { - return Math.ceil(this.bitLength() / 8); - }), - (BN.prototype.toTwos = function (width) { - return this.negative !== 0 ? this.abs().inotn(width).iaddn(1) : this.clone(); - }), - (BN.prototype.fromTwos = function (width) { - return this.testn(width - 1) ? this.notn(width).iaddn(1).ineg() : this.clone(); - }), - (BN.prototype.isNeg = function () { - return this.negative !== 0; - }), - (BN.prototype.neg = function () { - return this.clone().ineg(); - }), - (BN.prototype.ineg = function () { - return this.isZero() || (this.negative ^= 1), this; - }), - (BN.prototype.iuor = function (num) { - for (; this.length < num.length; ) this.words[this.length++] = 0; - for (var i = 0; i < num.length; i++) this.words[i] = this.words[i] | num.words[i]; - return this._strip(); - }), - (BN.prototype.ior = function (num) { - return assert((this.negative | num.negative) === 0), this.iuor(num); - }), - (BN.prototype.or = function (num) { - return this.length > num.length ? this.clone().ior(num) : num.clone().ior(this); - }), - (BN.prototype.uor = function (num) { - return this.length > num.length ? this.clone().iuor(num) : num.clone().iuor(this); - }), - (BN.prototype.iuand = function (num) { - var b; - this.length > num.length ? (b = num) : (b = this); - for (var i = 0; i < b.length; i++) this.words[i] = this.words[i] & num.words[i]; - return (this.length = b.length), this._strip(); - }), - (BN.prototype.iand = function (num) { - return assert((this.negative | num.negative) === 0), this.iuand(num); - }), - (BN.prototype.and = function (num) { - return this.length > num.length ? this.clone().iand(num) : num.clone().iand(this); - }), - (BN.prototype.uand = function (num) { - return this.length > num.length ? this.clone().iuand(num) : num.clone().iuand(this); - }), - (BN.prototype.iuxor = function (num) { - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var i = 0; i < b.length; i++) this.words[i] = a.words[i] ^ b.words[i]; - if (this !== a) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = a.length), this._strip(); - }), - (BN.prototype.ixor = function (num) { - return assert((this.negative | num.negative) === 0), this.iuxor(num); - }), - (BN.prototype.xor = function (num) { - return this.length > num.length ? this.clone().ixor(num) : num.clone().ixor(this); - }), - (BN.prototype.uxor = function (num) { - return this.length > num.length ? this.clone().iuxor(num) : num.clone().iuxor(this); - }), - (BN.prototype.inotn = function (width) { - assert(typeof width == "number" && width >= 0); - var bytesNeeded = Math.ceil(width / 26) | 0, - bitsLeft = width % 26; - this._expand(bytesNeeded), bitsLeft > 0 && bytesNeeded--; - for (var i = 0; i < bytesNeeded; i++) this.words[i] = ~this.words[i] & 67108863; - return bitsLeft > 0 && (this.words[i] = ~this.words[i] & (67108863 >> (26 - bitsLeft))), this._strip(); - }), - (BN.prototype.notn = function (width) { - return this.clone().inotn(width); - }), - (BN.prototype.setn = function (bit, val) { - assert(typeof bit == "number" && bit >= 0); - var off = (bit / 26) | 0, - wbit = bit % 26; - return ( - this._expand(off + 1), - val - ? (this.words[off] = this.words[off] | (1 << wbit)) - : (this.words[off] = this.words[off] & ~(1 << wbit)), - this._strip() - ); - }), - (BN.prototype.iadd = function (num) { - var r; - if (this.negative !== 0 && num.negative === 0) - return (this.negative = 0), (r = this.isub(num)), (this.negative ^= 1), this._normSign(); - if (this.negative === 0 && num.negative !== 0) - return (num.negative = 0), (r = this.isub(num)), (num.negative = 1), r._normSign(); - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) + (b.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - if (((this.length = a.length), carry !== 0)) (this.words[this.length] = carry), this.length++; - else if (a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return this; - }), - (BN.prototype.add = function (num) { - var res; - return num.negative !== 0 && this.negative === 0 - ? ((num.negative = 0), (res = this.sub(num)), (num.negative ^= 1), res) - : num.negative === 0 && this.negative !== 0 - ? ((this.negative = 0), (res = num.sub(this)), (this.negative = 1), res) - : this.length > num.length - ? this.clone().iadd(num) - : num.clone().iadd(this); - }), - (BN.prototype.isub = function (num) { - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - return (num.negative = 1), r._normSign(); - } else if (this.negative !== 0) - return (this.negative = 0), this.iadd(num), (this.negative = 1), this._normSign(); - var cmp = this.cmp(num); - if (cmp === 0) return (this.negative = 0), (this.length = 1), (this.words[0] = 0), this; - var a, b; - cmp > 0 ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) - (b.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - if (carry === 0 && i < a.length && a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = Math.max(this.length, i)), a !== this && (this.negative = 1), this._strip(); - }), - (BN.prototype.sub = function (num) { - return this.clone().isub(num); - }); - function smallMulTo(self2, num, out) { - out.negative = num.negative ^ self2.negative; - var len = (self2.length + num.length) | 0; - (out.length = len), (len = (len - 1) | 0); - var a = self2.words[0] | 0, - b = num.words[0] | 0, - r = a * b, - lo = r & 67108863, - carry = (r / 67108864) | 0; - out.words[0] = lo; - for (var k = 1; k < len; k++) { - for ( - var ncarry = carry >>> 26, - rword = carry & 67108863, - maxJ = Math.min(k, num.length - 1), - j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = (k - j) | 0; - (a = self2.words[i] | 0), - (b = num.words[j] | 0), - (r = a * b + rword), - (ncarry += (r / 67108864) | 0), - (rword = r & 67108863); - } - (out.words[k] = rword | 0), (carry = ncarry | 0); - } - return carry !== 0 ? (out.words[k] = carry | 0) : out.length--, out._strip(); - } - var comb10MulTo = function (self2, num, out) { - var a = self2.words, - b = num.words, - o = out.words, - c = 0, - lo, - mid, - hi, - a0 = a[0] | 0, - al0 = a0 & 8191, - ah0 = a0 >>> 13, - a1 = a[1] | 0, - al1 = a1 & 8191, - ah1 = a1 >>> 13, - a2 = a[2] | 0, - al2 = a2 & 8191, - ah2 = a2 >>> 13, - a3 = a[3] | 0, - al3 = a3 & 8191, - ah3 = a3 >>> 13, - a4 = a[4] | 0, - al4 = a4 & 8191, - ah4 = a4 >>> 13, - a5 = a[5] | 0, - al5 = a5 & 8191, - ah5 = a5 >>> 13, - a6 = a[6] | 0, - al6 = a6 & 8191, - ah6 = a6 >>> 13, - a7 = a[7] | 0, - al7 = a7 & 8191, - ah7 = a7 >>> 13, - a8 = a[8] | 0, - al8 = a8 & 8191, - ah8 = a8 >>> 13, - a9 = a[9] | 0, - al9 = a9 & 8191, - ah9 = a9 >>> 13, - b0 = b[0] | 0, - bl0 = b0 & 8191, - bh0 = b0 >>> 13, - b1 = b[1] | 0, - bl1 = b1 & 8191, - bh1 = b1 >>> 13, - b2 = b[2] | 0, - bl2 = b2 & 8191, - bh2 = b2 >>> 13, - b3 = b[3] | 0, - bl3 = b3 & 8191, - bh3 = b3 >>> 13, - b4 = b[4] | 0, - bl4 = b4 & 8191, - bh4 = b4 >>> 13, - b5 = b[5] | 0, - bl5 = b5 & 8191, - bh5 = b5 >>> 13, - b6 = b[6] | 0, - bl6 = b6 & 8191, - bh6 = b6 >>> 13, - b7 = b[7] | 0, - bl7 = b7 & 8191, - bh7 = b7 >>> 13, - b8 = b[8] | 0, - bl8 = b8 & 8191, - bh8 = b8 >>> 13, - b9 = b[9] | 0, - bl9 = b9 & 8191, - bh9 = b9 >>> 13; - (out.negative = self2.negative ^ num.negative), - (out.length = 19), - (lo = Math.imul(al0, bl0)), - (mid = Math.imul(al0, bh0)), - (mid = (mid + Math.imul(ah0, bl0)) | 0), - (hi = Math.imul(ah0, bh0)); - var w0 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0), - (w0 &= 67108863), - (lo = Math.imul(al1, bl0)), - (mid = Math.imul(al1, bh0)), - (mid = (mid + Math.imul(ah1, bl0)) | 0), - (hi = Math.imul(ah1, bh0)), - (lo = (lo + Math.imul(al0, bl1)) | 0), - (mid = (mid + Math.imul(al0, bh1)) | 0), - (mid = (mid + Math.imul(ah0, bl1)) | 0), - (hi = (hi + Math.imul(ah0, bh1)) | 0); - var w1 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0), - (w1 &= 67108863), - (lo = Math.imul(al2, bl0)), - (mid = Math.imul(al2, bh0)), - (mid = (mid + Math.imul(ah2, bl0)) | 0), - (hi = Math.imul(ah2, bh0)), - (lo = (lo + Math.imul(al1, bl1)) | 0), - (mid = (mid + Math.imul(al1, bh1)) | 0), - (mid = (mid + Math.imul(ah1, bl1)) | 0), - (hi = (hi + Math.imul(ah1, bh1)) | 0), - (lo = (lo + Math.imul(al0, bl2)) | 0), - (mid = (mid + Math.imul(al0, bh2)) | 0), - (mid = (mid + Math.imul(ah0, bl2)) | 0), - (hi = (hi + Math.imul(ah0, bh2)) | 0); - var w2 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0), - (w2 &= 67108863), - (lo = Math.imul(al3, bl0)), - (mid = Math.imul(al3, bh0)), - (mid = (mid + Math.imul(ah3, bl0)) | 0), - (hi = Math.imul(ah3, bh0)), - (lo = (lo + Math.imul(al2, bl1)) | 0), - (mid = (mid + Math.imul(al2, bh1)) | 0), - (mid = (mid + Math.imul(ah2, bl1)) | 0), - (hi = (hi + Math.imul(ah2, bh1)) | 0), - (lo = (lo + Math.imul(al1, bl2)) | 0), - (mid = (mid + Math.imul(al1, bh2)) | 0), - (mid = (mid + Math.imul(ah1, bl2)) | 0), - (hi = (hi + Math.imul(ah1, bh2)) | 0), - (lo = (lo + Math.imul(al0, bl3)) | 0), - (mid = (mid + Math.imul(al0, bh3)) | 0), - (mid = (mid + Math.imul(ah0, bl3)) | 0), - (hi = (hi + Math.imul(ah0, bh3)) | 0); - var w3 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0), - (w3 &= 67108863), - (lo = Math.imul(al4, bl0)), - (mid = Math.imul(al4, bh0)), - (mid = (mid + Math.imul(ah4, bl0)) | 0), - (hi = Math.imul(ah4, bh0)), - (lo = (lo + Math.imul(al3, bl1)) | 0), - (mid = (mid + Math.imul(al3, bh1)) | 0), - (mid = (mid + Math.imul(ah3, bl1)) | 0), - (hi = (hi + Math.imul(ah3, bh1)) | 0), - (lo = (lo + Math.imul(al2, bl2)) | 0), - (mid = (mid + Math.imul(al2, bh2)) | 0), - (mid = (mid + Math.imul(ah2, bl2)) | 0), - (hi = (hi + Math.imul(ah2, bh2)) | 0), - (lo = (lo + Math.imul(al1, bl3)) | 0), - (mid = (mid + Math.imul(al1, bh3)) | 0), - (mid = (mid + Math.imul(ah1, bl3)) | 0), - (hi = (hi + Math.imul(ah1, bh3)) | 0), - (lo = (lo + Math.imul(al0, bl4)) | 0), - (mid = (mid + Math.imul(al0, bh4)) | 0), - (mid = (mid + Math.imul(ah0, bl4)) | 0), - (hi = (hi + Math.imul(ah0, bh4)) | 0); - var w4 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0), - (w4 &= 67108863), - (lo = Math.imul(al5, bl0)), - (mid = Math.imul(al5, bh0)), - (mid = (mid + Math.imul(ah5, bl0)) | 0), - (hi = Math.imul(ah5, bh0)), - (lo = (lo + Math.imul(al4, bl1)) | 0), - (mid = (mid + Math.imul(al4, bh1)) | 0), - (mid = (mid + Math.imul(ah4, bl1)) | 0), - (hi = (hi + Math.imul(ah4, bh1)) | 0), - (lo = (lo + Math.imul(al3, bl2)) | 0), - (mid = (mid + Math.imul(al3, bh2)) | 0), - (mid = (mid + Math.imul(ah3, bl2)) | 0), - (hi = (hi + Math.imul(ah3, bh2)) | 0), - (lo = (lo + Math.imul(al2, bl3)) | 0), - (mid = (mid + Math.imul(al2, bh3)) | 0), - (mid = (mid + Math.imul(ah2, bl3)) | 0), - (hi = (hi + Math.imul(ah2, bh3)) | 0), - (lo = (lo + Math.imul(al1, bl4)) | 0), - (mid = (mid + Math.imul(al1, bh4)) | 0), - (mid = (mid + Math.imul(ah1, bl4)) | 0), - (hi = (hi + Math.imul(ah1, bh4)) | 0), - (lo = (lo + Math.imul(al0, bl5)) | 0), - (mid = (mid + Math.imul(al0, bh5)) | 0), - (mid = (mid + Math.imul(ah0, bl5)) | 0), - (hi = (hi + Math.imul(ah0, bh5)) | 0); - var w5 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0), - (w5 &= 67108863), - (lo = Math.imul(al6, bl0)), - (mid = Math.imul(al6, bh0)), - (mid = (mid + Math.imul(ah6, bl0)) | 0), - (hi = Math.imul(ah6, bh0)), - (lo = (lo + Math.imul(al5, bl1)) | 0), - (mid = (mid + Math.imul(al5, bh1)) | 0), - (mid = (mid + Math.imul(ah5, bl1)) | 0), - (hi = (hi + Math.imul(ah5, bh1)) | 0), - (lo = (lo + Math.imul(al4, bl2)) | 0), - (mid = (mid + Math.imul(al4, bh2)) | 0), - (mid = (mid + Math.imul(ah4, bl2)) | 0), - (hi = (hi + Math.imul(ah4, bh2)) | 0), - (lo = (lo + Math.imul(al3, bl3)) | 0), - (mid = (mid + Math.imul(al3, bh3)) | 0), - (mid = (mid + Math.imul(ah3, bl3)) | 0), - (hi = (hi + Math.imul(ah3, bh3)) | 0), - (lo = (lo + Math.imul(al2, bl4)) | 0), - (mid = (mid + Math.imul(al2, bh4)) | 0), - (mid = (mid + Math.imul(ah2, bl4)) | 0), - (hi = (hi + Math.imul(ah2, bh4)) | 0), - (lo = (lo + Math.imul(al1, bl5)) | 0), - (mid = (mid + Math.imul(al1, bh5)) | 0), - (mid = (mid + Math.imul(ah1, bl5)) | 0), - (hi = (hi + Math.imul(ah1, bh5)) | 0), - (lo = (lo + Math.imul(al0, bl6)) | 0), - (mid = (mid + Math.imul(al0, bh6)) | 0), - (mid = (mid + Math.imul(ah0, bl6)) | 0), - (hi = (hi + Math.imul(ah0, bh6)) | 0); - var w6 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0), - (w6 &= 67108863), - (lo = Math.imul(al7, bl0)), - (mid = Math.imul(al7, bh0)), - (mid = (mid + Math.imul(ah7, bl0)) | 0), - (hi = Math.imul(ah7, bh0)), - (lo = (lo + Math.imul(al6, bl1)) | 0), - (mid = (mid + Math.imul(al6, bh1)) | 0), - (mid = (mid + Math.imul(ah6, bl1)) | 0), - (hi = (hi + Math.imul(ah6, bh1)) | 0), - (lo = (lo + Math.imul(al5, bl2)) | 0), - (mid = (mid + Math.imul(al5, bh2)) | 0), - (mid = (mid + Math.imul(ah5, bl2)) | 0), - (hi = (hi + Math.imul(ah5, bh2)) | 0), - (lo = (lo + Math.imul(al4, bl3)) | 0), - (mid = (mid + Math.imul(al4, bh3)) | 0), - (mid = (mid + Math.imul(ah4, bl3)) | 0), - (hi = (hi + Math.imul(ah4, bh3)) | 0), - (lo = (lo + Math.imul(al3, bl4)) | 0), - (mid = (mid + Math.imul(al3, bh4)) | 0), - (mid = (mid + Math.imul(ah3, bl4)) | 0), - (hi = (hi + Math.imul(ah3, bh4)) | 0), - (lo = (lo + Math.imul(al2, bl5)) | 0), - (mid = (mid + Math.imul(al2, bh5)) | 0), - (mid = (mid + Math.imul(ah2, bl5)) | 0), - (hi = (hi + Math.imul(ah2, bh5)) | 0), - (lo = (lo + Math.imul(al1, bl6)) | 0), - (mid = (mid + Math.imul(al1, bh6)) | 0), - (mid = (mid + Math.imul(ah1, bl6)) | 0), - (hi = (hi + Math.imul(ah1, bh6)) | 0), - (lo = (lo + Math.imul(al0, bl7)) | 0), - (mid = (mid + Math.imul(al0, bh7)) | 0), - (mid = (mid + Math.imul(ah0, bl7)) | 0), - (hi = (hi + Math.imul(ah0, bh7)) | 0); - var w7 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0), - (w7 &= 67108863), - (lo = Math.imul(al8, bl0)), - (mid = Math.imul(al8, bh0)), - (mid = (mid + Math.imul(ah8, bl0)) | 0), - (hi = Math.imul(ah8, bh0)), - (lo = (lo + Math.imul(al7, bl1)) | 0), - (mid = (mid + Math.imul(al7, bh1)) | 0), - (mid = (mid + Math.imul(ah7, bl1)) | 0), - (hi = (hi + Math.imul(ah7, bh1)) | 0), - (lo = (lo + Math.imul(al6, bl2)) | 0), - (mid = (mid + Math.imul(al6, bh2)) | 0), - (mid = (mid + Math.imul(ah6, bl2)) | 0), - (hi = (hi + Math.imul(ah6, bh2)) | 0), - (lo = (lo + Math.imul(al5, bl3)) | 0), - (mid = (mid + Math.imul(al5, bh3)) | 0), - (mid = (mid + Math.imul(ah5, bl3)) | 0), - (hi = (hi + Math.imul(ah5, bh3)) | 0), - (lo = (lo + Math.imul(al4, bl4)) | 0), - (mid = (mid + Math.imul(al4, bh4)) | 0), - (mid = (mid + Math.imul(ah4, bl4)) | 0), - (hi = (hi + Math.imul(ah4, bh4)) | 0), - (lo = (lo + Math.imul(al3, bl5)) | 0), - (mid = (mid + Math.imul(al3, bh5)) | 0), - (mid = (mid + Math.imul(ah3, bl5)) | 0), - (hi = (hi + Math.imul(ah3, bh5)) | 0), - (lo = (lo + Math.imul(al2, bl6)) | 0), - (mid = (mid + Math.imul(al2, bh6)) | 0), - (mid = (mid + Math.imul(ah2, bl6)) | 0), - (hi = (hi + Math.imul(ah2, bh6)) | 0), - (lo = (lo + Math.imul(al1, bl7)) | 0), - (mid = (mid + Math.imul(al1, bh7)) | 0), - (mid = (mid + Math.imul(ah1, bl7)) | 0), - (hi = (hi + Math.imul(ah1, bh7)) | 0), - (lo = (lo + Math.imul(al0, bl8)) | 0), - (mid = (mid + Math.imul(al0, bh8)) | 0), - (mid = (mid + Math.imul(ah0, bl8)) | 0), - (hi = (hi + Math.imul(ah0, bh8)) | 0); - var w8 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0), - (w8 &= 67108863), - (lo = Math.imul(al9, bl0)), - (mid = Math.imul(al9, bh0)), - (mid = (mid + Math.imul(ah9, bl0)) | 0), - (hi = Math.imul(ah9, bh0)), - (lo = (lo + Math.imul(al8, bl1)) | 0), - (mid = (mid + Math.imul(al8, bh1)) | 0), - (mid = (mid + Math.imul(ah8, bl1)) | 0), - (hi = (hi + Math.imul(ah8, bh1)) | 0), - (lo = (lo + Math.imul(al7, bl2)) | 0), - (mid = (mid + Math.imul(al7, bh2)) | 0), - (mid = (mid + Math.imul(ah7, bl2)) | 0), - (hi = (hi + Math.imul(ah7, bh2)) | 0), - (lo = (lo + Math.imul(al6, bl3)) | 0), - (mid = (mid + Math.imul(al6, bh3)) | 0), - (mid = (mid + Math.imul(ah6, bl3)) | 0), - (hi = (hi + Math.imul(ah6, bh3)) | 0), - (lo = (lo + Math.imul(al5, bl4)) | 0), - (mid = (mid + Math.imul(al5, bh4)) | 0), - (mid = (mid + Math.imul(ah5, bl4)) | 0), - (hi = (hi + Math.imul(ah5, bh4)) | 0), - (lo = (lo + Math.imul(al4, bl5)) | 0), - (mid = (mid + Math.imul(al4, bh5)) | 0), - (mid = (mid + Math.imul(ah4, bl5)) | 0), - (hi = (hi + Math.imul(ah4, bh5)) | 0), - (lo = (lo + Math.imul(al3, bl6)) | 0), - (mid = (mid + Math.imul(al3, bh6)) | 0), - (mid = (mid + Math.imul(ah3, bl6)) | 0), - (hi = (hi + Math.imul(ah3, bh6)) | 0), - (lo = (lo + Math.imul(al2, bl7)) | 0), - (mid = (mid + Math.imul(al2, bh7)) | 0), - (mid = (mid + Math.imul(ah2, bl7)) | 0), - (hi = (hi + Math.imul(ah2, bh7)) | 0), - (lo = (lo + Math.imul(al1, bl8)) | 0), - (mid = (mid + Math.imul(al1, bh8)) | 0), - (mid = (mid + Math.imul(ah1, bl8)) | 0), - (hi = (hi + Math.imul(ah1, bh8)) | 0), - (lo = (lo + Math.imul(al0, bl9)) | 0), - (mid = (mid + Math.imul(al0, bh9)) | 0), - (mid = (mid + Math.imul(ah0, bl9)) | 0), - (hi = (hi + Math.imul(ah0, bh9)) | 0); - var w9 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0), - (w9 &= 67108863), - (lo = Math.imul(al9, bl1)), - (mid = Math.imul(al9, bh1)), - (mid = (mid + Math.imul(ah9, bl1)) | 0), - (hi = Math.imul(ah9, bh1)), - (lo = (lo + Math.imul(al8, bl2)) | 0), - (mid = (mid + Math.imul(al8, bh2)) | 0), - (mid = (mid + Math.imul(ah8, bl2)) | 0), - (hi = (hi + Math.imul(ah8, bh2)) | 0), - (lo = (lo + Math.imul(al7, bl3)) | 0), - (mid = (mid + Math.imul(al7, bh3)) | 0), - (mid = (mid + Math.imul(ah7, bl3)) | 0), - (hi = (hi + Math.imul(ah7, bh3)) | 0), - (lo = (lo + Math.imul(al6, bl4)) | 0), - (mid = (mid + Math.imul(al6, bh4)) | 0), - (mid = (mid + Math.imul(ah6, bl4)) | 0), - (hi = (hi + Math.imul(ah6, bh4)) | 0), - (lo = (lo + Math.imul(al5, bl5)) | 0), - (mid = (mid + Math.imul(al5, bh5)) | 0), - (mid = (mid + Math.imul(ah5, bl5)) | 0), - (hi = (hi + Math.imul(ah5, bh5)) | 0), - (lo = (lo + Math.imul(al4, bl6)) | 0), - (mid = (mid + Math.imul(al4, bh6)) | 0), - (mid = (mid + Math.imul(ah4, bl6)) | 0), - (hi = (hi + Math.imul(ah4, bh6)) | 0), - (lo = (lo + Math.imul(al3, bl7)) | 0), - (mid = (mid + Math.imul(al3, bh7)) | 0), - (mid = (mid + Math.imul(ah3, bl7)) | 0), - (hi = (hi + Math.imul(ah3, bh7)) | 0), - (lo = (lo + Math.imul(al2, bl8)) | 0), - (mid = (mid + Math.imul(al2, bh8)) | 0), - (mid = (mid + Math.imul(ah2, bl8)) | 0), - (hi = (hi + Math.imul(ah2, bh8)) | 0), - (lo = (lo + Math.imul(al1, bl9)) | 0), - (mid = (mid + Math.imul(al1, bh9)) | 0), - (mid = (mid + Math.imul(ah1, bl9)) | 0), - (hi = (hi + Math.imul(ah1, bh9)) | 0); - var w10 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0), - (w10 &= 67108863), - (lo = Math.imul(al9, bl2)), - (mid = Math.imul(al9, bh2)), - (mid = (mid + Math.imul(ah9, bl2)) | 0), - (hi = Math.imul(ah9, bh2)), - (lo = (lo + Math.imul(al8, bl3)) | 0), - (mid = (mid + Math.imul(al8, bh3)) | 0), - (mid = (mid + Math.imul(ah8, bl3)) | 0), - (hi = (hi + Math.imul(ah8, bh3)) | 0), - (lo = (lo + Math.imul(al7, bl4)) | 0), - (mid = (mid + Math.imul(al7, bh4)) | 0), - (mid = (mid + Math.imul(ah7, bl4)) | 0), - (hi = (hi + Math.imul(ah7, bh4)) | 0), - (lo = (lo + Math.imul(al6, bl5)) | 0), - (mid = (mid + Math.imul(al6, bh5)) | 0), - (mid = (mid + Math.imul(ah6, bl5)) | 0), - (hi = (hi + Math.imul(ah6, bh5)) | 0), - (lo = (lo + Math.imul(al5, bl6)) | 0), - (mid = (mid + Math.imul(al5, bh6)) | 0), - (mid = (mid + Math.imul(ah5, bl6)) | 0), - (hi = (hi + Math.imul(ah5, bh6)) | 0), - (lo = (lo + Math.imul(al4, bl7)) | 0), - (mid = (mid + Math.imul(al4, bh7)) | 0), - (mid = (mid + Math.imul(ah4, bl7)) | 0), - (hi = (hi + Math.imul(ah4, bh7)) | 0), - (lo = (lo + Math.imul(al3, bl8)) | 0), - (mid = (mid + Math.imul(al3, bh8)) | 0), - (mid = (mid + Math.imul(ah3, bl8)) | 0), - (hi = (hi + Math.imul(ah3, bh8)) | 0), - (lo = (lo + Math.imul(al2, bl9)) | 0), - (mid = (mid + Math.imul(al2, bh9)) | 0), - (mid = (mid + Math.imul(ah2, bl9)) | 0), - (hi = (hi + Math.imul(ah2, bh9)) | 0); - var w11 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0), - (w11 &= 67108863), - (lo = Math.imul(al9, bl3)), - (mid = Math.imul(al9, bh3)), - (mid = (mid + Math.imul(ah9, bl3)) | 0), - (hi = Math.imul(ah9, bh3)), - (lo = (lo + Math.imul(al8, bl4)) | 0), - (mid = (mid + Math.imul(al8, bh4)) | 0), - (mid = (mid + Math.imul(ah8, bl4)) | 0), - (hi = (hi + Math.imul(ah8, bh4)) | 0), - (lo = (lo + Math.imul(al7, bl5)) | 0), - (mid = (mid + Math.imul(al7, bh5)) | 0), - (mid = (mid + Math.imul(ah7, bl5)) | 0), - (hi = (hi + Math.imul(ah7, bh5)) | 0), - (lo = (lo + Math.imul(al6, bl6)) | 0), - (mid = (mid + Math.imul(al6, bh6)) | 0), - (mid = (mid + Math.imul(ah6, bl6)) | 0), - (hi = (hi + Math.imul(ah6, bh6)) | 0), - (lo = (lo + Math.imul(al5, bl7)) | 0), - (mid = (mid + Math.imul(al5, bh7)) | 0), - (mid = (mid + Math.imul(ah5, bl7)) | 0), - (hi = (hi + Math.imul(ah5, bh7)) | 0), - (lo = (lo + Math.imul(al4, bl8)) | 0), - (mid = (mid + Math.imul(al4, bh8)) | 0), - (mid = (mid + Math.imul(ah4, bl8)) | 0), - (hi = (hi + Math.imul(ah4, bh8)) | 0), - (lo = (lo + Math.imul(al3, bl9)) | 0), - (mid = (mid + Math.imul(al3, bh9)) | 0), - (mid = (mid + Math.imul(ah3, bl9)) | 0), - (hi = (hi + Math.imul(ah3, bh9)) | 0); - var w12 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0), - (w12 &= 67108863), - (lo = Math.imul(al9, bl4)), - (mid = Math.imul(al9, bh4)), - (mid = (mid + Math.imul(ah9, bl4)) | 0), - (hi = Math.imul(ah9, bh4)), - (lo = (lo + Math.imul(al8, bl5)) | 0), - (mid = (mid + Math.imul(al8, bh5)) | 0), - (mid = (mid + Math.imul(ah8, bl5)) | 0), - (hi = (hi + Math.imul(ah8, bh5)) | 0), - (lo = (lo + Math.imul(al7, bl6)) | 0), - (mid = (mid + Math.imul(al7, bh6)) | 0), - (mid = (mid + Math.imul(ah7, bl6)) | 0), - (hi = (hi + Math.imul(ah7, bh6)) | 0), - (lo = (lo + Math.imul(al6, bl7)) | 0), - (mid = (mid + Math.imul(al6, bh7)) | 0), - (mid = (mid + Math.imul(ah6, bl7)) | 0), - (hi = (hi + Math.imul(ah6, bh7)) | 0), - (lo = (lo + Math.imul(al5, bl8)) | 0), - (mid = (mid + Math.imul(al5, bh8)) | 0), - (mid = (mid + Math.imul(ah5, bl8)) | 0), - (hi = (hi + Math.imul(ah5, bh8)) | 0), - (lo = (lo + Math.imul(al4, bl9)) | 0), - (mid = (mid + Math.imul(al4, bh9)) | 0), - (mid = (mid + Math.imul(ah4, bl9)) | 0), - (hi = (hi + Math.imul(ah4, bh9)) | 0); - var w13 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0), - (w13 &= 67108863), - (lo = Math.imul(al9, bl5)), - (mid = Math.imul(al9, bh5)), - (mid = (mid + Math.imul(ah9, bl5)) | 0), - (hi = Math.imul(ah9, bh5)), - (lo = (lo + Math.imul(al8, bl6)) | 0), - (mid = (mid + Math.imul(al8, bh6)) | 0), - (mid = (mid + Math.imul(ah8, bl6)) | 0), - (hi = (hi + Math.imul(ah8, bh6)) | 0), - (lo = (lo + Math.imul(al7, bl7)) | 0), - (mid = (mid + Math.imul(al7, bh7)) | 0), - (mid = (mid + Math.imul(ah7, bl7)) | 0), - (hi = (hi + Math.imul(ah7, bh7)) | 0), - (lo = (lo + Math.imul(al6, bl8)) | 0), - (mid = (mid + Math.imul(al6, bh8)) | 0), - (mid = (mid + Math.imul(ah6, bl8)) | 0), - (hi = (hi + Math.imul(ah6, bh8)) | 0), - (lo = (lo + Math.imul(al5, bl9)) | 0), - (mid = (mid + Math.imul(al5, bh9)) | 0), - (mid = (mid + Math.imul(ah5, bl9)) | 0), - (hi = (hi + Math.imul(ah5, bh9)) | 0); - var w14 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0), - (w14 &= 67108863), - (lo = Math.imul(al9, bl6)), - (mid = Math.imul(al9, bh6)), - (mid = (mid + Math.imul(ah9, bl6)) | 0), - (hi = Math.imul(ah9, bh6)), - (lo = (lo + Math.imul(al8, bl7)) | 0), - (mid = (mid + Math.imul(al8, bh7)) | 0), - (mid = (mid + Math.imul(ah8, bl7)) | 0), - (hi = (hi + Math.imul(ah8, bh7)) | 0), - (lo = (lo + Math.imul(al7, bl8)) | 0), - (mid = (mid + Math.imul(al7, bh8)) | 0), - (mid = (mid + Math.imul(ah7, bl8)) | 0), - (hi = (hi + Math.imul(ah7, bh8)) | 0), - (lo = (lo + Math.imul(al6, bl9)) | 0), - (mid = (mid + Math.imul(al6, bh9)) | 0), - (mid = (mid + Math.imul(ah6, bl9)) | 0), - (hi = (hi + Math.imul(ah6, bh9)) | 0); - var w15 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0), - (w15 &= 67108863), - (lo = Math.imul(al9, bl7)), - (mid = Math.imul(al9, bh7)), - (mid = (mid + Math.imul(ah9, bl7)) | 0), - (hi = Math.imul(ah9, bh7)), - (lo = (lo + Math.imul(al8, bl8)) | 0), - (mid = (mid + Math.imul(al8, bh8)) | 0), - (mid = (mid + Math.imul(ah8, bl8)) | 0), - (hi = (hi + Math.imul(ah8, bh8)) | 0), - (lo = (lo + Math.imul(al7, bl9)) | 0), - (mid = (mid + Math.imul(al7, bh9)) | 0), - (mid = (mid + Math.imul(ah7, bl9)) | 0), - (hi = (hi + Math.imul(ah7, bh9)) | 0); - var w16 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0), - (w16 &= 67108863), - (lo = Math.imul(al9, bl8)), - (mid = Math.imul(al9, bh8)), - (mid = (mid + Math.imul(ah9, bl8)) | 0), - (hi = Math.imul(ah9, bh8)), - (lo = (lo + Math.imul(al8, bl9)) | 0), - (mid = (mid + Math.imul(al8, bh9)) | 0), - (mid = (mid + Math.imul(ah8, bl9)) | 0), - (hi = (hi + Math.imul(ah8, bh9)) | 0); - var w17 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0), - (w17 &= 67108863), - (lo = Math.imul(al9, bl9)), - (mid = Math.imul(al9, bh9)), - (mid = (mid + Math.imul(ah9, bl9)) | 0), - (hi = Math.imul(ah9, bh9)); - var w18 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - return ( - (c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0), - (w18 &= 67108863), - (o[0] = w0), - (o[1] = w1), - (o[2] = w2), - (o[3] = w3), - (o[4] = w4), - (o[5] = w5), - (o[6] = w6), - (o[7] = w7), - (o[8] = w8), - (o[9] = w9), - (o[10] = w10), - (o[11] = w11), - (o[12] = w12), - (o[13] = w13), - (o[14] = w14), - (o[15] = w15), - (o[16] = w16), - (o[17] = w17), - (o[18] = w18), - c !== 0 && ((o[19] = c), out.length++), - out - ); - }; - Math.imul || (comb10MulTo = smallMulTo); - function bigMulTo(self2, num, out) { - (out.negative = num.negative ^ self2.negative), (out.length = self2.length + num.length); - for (var carry = 0, hncarry = 0, k = 0; k < out.length - 1; k++) { - var ncarry = hncarry; - hncarry = 0; - for ( - var rword = carry & 67108863, maxJ = Math.min(k, num.length - 1), j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = k - j, - a = self2.words[i] | 0, - b = num.words[j] | 0, - r = a * b, - lo = r & 67108863; - (ncarry = (ncarry + ((r / 67108864) | 0)) | 0), - (lo = (lo + rword) | 0), - (rword = lo & 67108863), - (ncarry = (ncarry + (lo >>> 26)) | 0), - (hncarry += ncarry >>> 26), - (ncarry &= 67108863); - } - (out.words[k] = rword), (carry = ncarry), (ncarry = hncarry); - } - return carry !== 0 ? (out.words[k] = carry) : out.length--, out._strip(); - } - function jumboMulTo(self2, num, out) { - return bigMulTo(self2, num, out); - } - BN.prototype.mulTo = function (num, out) { - var res, - len = this.length + num.length; - return ( - this.length === 10 && num.length === 10 - ? (res = comb10MulTo(this, num, out)) - : len < 63 - ? (res = smallMulTo(this, num, out)) - : len < 1024 - ? (res = bigMulTo(this, num, out)) - : (res = jumboMulTo(this, num, out)), - res - ); - }; - function FFTM(x, y) { - (this.x = x), (this.y = y); - } - (FFTM.prototype.makeRBT = function (N) { - for (var t = new Array(N), l = BN.prototype._countBits(N) - 1, i = 0; i < N; i++) t[i] = this.revBin(i, l, N); - return t; - }), - (FFTM.prototype.revBin = function (x, l, N) { - if (x === 0 || x === N - 1) return x; - for (var rb = 0, i = 0; i < l; i++) (rb |= (x & 1) << (l - i - 1)), (x >>= 1); - return rb; - }), - (FFTM.prototype.permute = function (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) (rtws[i] = rws[rbt[i]]), (itws[i] = iws[rbt[i]]); - }), - (FFTM.prototype.transform = function (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - for (var s = 1; s < N; s <<= 1) - for ( - var l = s << 1, rtwdf = Math.cos((2 * Math.PI) / l), itwdf = Math.sin((2 * Math.PI) / l), p = 0; - p < N; - p += l - ) - for (var rtwdf_ = rtwdf, itwdf_ = itwdf, j = 0; j < s; j++) { - var re = rtws[p + j], - ie = itws[p + j], - ro = rtws[p + j + s], - io = itws[p + j + s], - rx = rtwdf_ * ro - itwdf_ * io; - (io = rtwdf_ * io + itwdf_ * ro), - (ro = rx), - (rtws[p + j] = re + ro), - (itws[p + j] = ie + io), - (rtws[p + j + s] = re - ro), - (itws[p + j + s] = ie - io), - j !== l && - ((rx = rtwdf * rtwdf_ - itwdf * itwdf_), (itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_), (rtwdf_ = rx)); - } - }), - (FFTM.prototype.guessLen13b = function (n, m) { - var N = Math.max(m, n) | 1, - odd = N & 1, - i = 0; - for (N = (N / 2) | 0; N; N = N >>> 1) i++; - return 1 << (i + 1 + odd); - }), - (FFTM.prototype.conjugate = function (rws, iws, N) { - if (!(N <= 1)) - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - (rws[i] = rws[N - i - 1]), - (rws[N - i - 1] = t), - (t = iws[i]), - (iws[i] = -iws[N - i - 1]), - (iws[N - i - 1] = -t); - } - }), - (FFTM.prototype.normalize13b = function (ws, N) { - for (var carry = 0, i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; - (ws[i] = w & 67108863), w < 67108864 ? (carry = 0) : (carry = (w / 67108864) | 0); - } - return ws; - }), - (FFTM.prototype.convert13b = function (ws, len, rws, N) { - for (var carry = 0, i = 0; i < len; i++) - (carry = carry + (ws[i] | 0)), - (rws[2 * i] = carry & 8191), - (carry = carry >>> 13), - (rws[2 * i + 1] = carry & 8191), - (carry = carry >>> 13); - for (i = 2 * len; i < N; ++i) rws[i] = 0; - assert(carry === 0), assert((carry & -8192) === 0); - }), - (FFTM.prototype.stub = function (N) { - for (var ph = new Array(N), i = 0; i < N; i++) ph[i] = 0; - return ph; - }), - (FFTM.prototype.mulp = function (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length), - rbt = this.makeRBT(N), - _ = this.stub(N), - rws = new Array(N), - rwst = new Array(N), - iwst = new Array(N), - nrws = new Array(N), - nrwst = new Array(N), - niwst = new Array(N), - rmws = out.words; - (rmws.length = N), - this.convert13b(x.words, x.length, rws, N), - this.convert13b(y.words, y.length, nrws, N), - this.transform(rws, _, rwst, iwst, N, rbt), - this.transform(nrws, _, nrwst, niwst, N, rbt); - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - (iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]), (rwst[i] = rx); - } - return ( - this.conjugate(rwst, iwst, N), - this.transform(rwst, iwst, rmws, _, N, rbt), - this.conjugate(rmws, _, N), - this.normalize13b(rmws, N), - (out.negative = x.negative ^ y.negative), - (out.length = x.length + y.length), - out._strip() - ); - }), - (BN.prototype.mul = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), this.mulTo(num, out); - }), - (BN.prototype.mulf = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), jumboMulTo(this, num, out); - }), - (BN.prototype.imul = function (num) { - return this.clone().mulTo(num, this); - }), - (BN.prototype.imuln = function (num) { - var isNegNum = num < 0; - isNegNum && (num = -num), assert(typeof num == "number"), assert(num < 67108864); - for (var carry = 0, i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num, - lo = (w & 67108863) + (carry & 67108863); - (carry >>= 26), (carry += (w / 67108864) | 0), (carry += lo >>> 26), (this.words[i] = lo & 67108863); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), isNegNum ? this.ineg() : this; - }), - (BN.prototype.muln = function (num) { - return this.clone().imuln(num); - }), - (BN.prototype.sqr = function () { - return this.mul(this); - }), - (BN.prototype.isqr = function () { - return this.imul(this.clone()); - }), - (BN.prototype.pow = function (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - for (var res = this, i = 0; i < w.length && w[i] === 0; i++, res = res.sqr()); - if (++i < w.length) for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) w[i] !== 0 && (res = res.mul(q)); - return res; - }), - (BN.prototype.iushln = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26, - carryMask = (67108863 >>> (26 - r)) << (26 - r), - i; - if (r !== 0) { - var carry = 0; - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask, - c = ((this.words[i] | 0) - newCarry) << r; - (this.words[i] = c | carry), (carry = newCarry >>> (26 - r)); - } - carry && ((this.words[i] = carry), this.length++); - } - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) this.words[i + s] = this.words[i]; - for (i = 0; i < s; i++) this.words[i] = 0; - this.length += s; - } - return this._strip(); - }), - (BN.prototype.ishln = function (bits) { - return assert(this.negative === 0), this.iushln(bits); - }), - (BN.prototype.iushrn = function (bits, hint, extended) { - assert(typeof bits == "number" && bits >= 0); - var h; - hint ? (h = (hint - (hint % 26)) / 26) : (h = 0); - var r = bits % 26, - s = Math.min((bits - r) / 26, this.length), - mask = 67108863 ^ ((67108863 >>> r) << r), - maskedWords = extended; - if (((h -= s), (h = Math.max(0, h)), maskedWords)) { - for (var i = 0; i < s; i++) maskedWords.words[i] = this.words[i]; - maskedWords.length = s; - } - if (s !== 0) - if (this.length > s) for (this.length -= s, i = 0; i < this.length; i++) this.words[i] = this.words[i + s]; - else (this.words[0] = 0), (this.length = 1); - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - (this.words[i] = (carry << (26 - r)) | (word >>> r)), (carry = word & mask); - } - return ( - maskedWords && carry !== 0 && (maskedWords.words[maskedWords.length++] = carry), - this.length === 0 && ((this.words[0] = 0), (this.length = 1)), - this._strip() - ); - }), - (BN.prototype.ishrn = function (bits, hint, extended) { - return assert(this.negative === 0), this.iushrn(bits, hint, extended); - }), - (BN.prototype.shln = function (bits) { - return this.clone().ishln(bits); - }), - (BN.prototype.ushln = function (bits) { - return this.clone().iushln(bits); - }), - (BN.prototype.shrn = function (bits) { - return this.clone().ishrn(bits); - }), - (BN.prototype.ushrn = function (bits) { - return this.clone().iushrn(bits); - }), - (BN.prototype.testn = function (bit) { - assert(typeof bit == "number" && bit >= 0); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return !1; - var w = this.words[s]; - return !!(w & q); - }), - (BN.prototype.imaskn = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26; - if ((assert(this.negative === 0, "imaskn works only with positive numbers"), this.length <= s)) return this; - if ((r !== 0 && s++, (this.length = Math.min(s, this.length)), r !== 0)) { - var mask = 67108863 ^ ((67108863 >>> r) << r); - this.words[this.length - 1] &= mask; - } - return this._strip(); - }), - (BN.prototype.maskn = function (bits) { - return this.clone().imaskn(bits); - }), - (BN.prototype.iaddn = function (num) { - return ( - assert(typeof num == "number"), - assert(num < 67108864), - num < 0 - ? this.isubn(-num) - : this.negative !== 0 - ? this.length === 1 && (this.words[0] | 0) <= num - ? ((this.words[0] = num - (this.words[0] | 0)), (this.negative = 0), this) - : ((this.negative = 0), this.isubn(num), (this.negative = 1), this) - : this._iaddn(num) - ); - }), - (BN.prototype._iaddn = function (num) { - this.words[0] += num; - for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) - (this.words[i] -= 67108864), i === this.length - 1 ? (this.words[i + 1] = 1) : this.words[i + 1]++; - return (this.length = Math.max(this.length, i + 1)), this; - }), - (BN.prototype.isubn = function (num) { - if ((assert(typeof num == "number"), assert(num < 67108864), num < 0)) return this.iaddn(-num); - if (this.negative !== 0) return (this.negative = 0), this.iaddn(num), (this.negative = 1), this; - if (((this.words[0] -= num), this.length === 1 && this.words[0] < 0)) - (this.words[0] = -this.words[0]), (this.negative = 1); - else - for (var i = 0; i < this.length && this.words[i] < 0; i++) - (this.words[i] += 67108864), (this.words[i + 1] -= 1); - return this._strip(); - }), - (BN.prototype.addn = function (num) { - return this.clone().iaddn(num); - }), - (BN.prototype.subn = function (num) { - return this.clone().isubn(num); - }), - (BN.prototype.iabs = function () { - return (this.negative = 0), this; - }), - (BN.prototype.abs = function () { - return this.clone().iabs(); - }), - (BN.prototype._ishlnsubmul = function (num, mul, shift) { - var len = num.length + shift, - i; - this._expand(len); - var w, - carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - (w -= right & 67108863), - (carry = (w >> 26) - ((right / 67108864) | 0)), - (this.words[i + shift] = w & 67108863); - } - for (; i < this.length - shift; i++) - (w = (this.words[i + shift] | 0) + carry), (carry = w >> 26), (this.words[i + shift] = w & 67108863); - if (carry === 0) return this._strip(); - for (assert(carry === -1), carry = 0, i = 0; i < this.length; i++) - (w = -(this.words[i] | 0) + carry), (carry = w >> 26), (this.words[i] = w & 67108863); - return (this.negative = 1), this._strip(); - }), - (BN.prototype._wordDiv = function (num, mode) { - var shift = this.length - num.length, - a = this.clone(), - b = num, - bhi = b.words[b.length - 1] | 0, - bhiBits = this._countBits(bhi); - (shift = 26 - bhiBits), - shift !== 0 && ((b = b.ushln(shift)), a.iushln(shift), (bhi = b.words[b.length - 1] | 0)); - var m = a.length - b.length, - q; - if (mode !== "mod") { - (q = new BN(null)), (q.length = m + 1), (q.words = new Array(q.length)); - for (var i = 0; i < q.length; i++) q.words[i] = 0; - } - var diff = a.clone()._ishlnsubmul(b, 1, m); - diff.negative === 0 && ((a = diff), q && (q.words[m] = 1)); - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); - for (qj = Math.min((qj / bhi) | 0, 67108863), a._ishlnsubmul(b, qj, j); a.negative !== 0; ) - qj--, (a.negative = 0), a._ishlnsubmul(b, 1, j), a.isZero() || (a.negative ^= 1); - q && (q.words[j] = qj); - } - return ( - q && q._strip(), - a._strip(), - mode !== "div" && shift !== 0 && a.iushrn(shift), - { - div: q || null, - mod: a, - } - ); - }), - (BN.prototype.divmod = function (num, mode, positive) { - if ((assert(!num.isZero()), this.isZero())) - return { - div: new BN(0), - mod: new BN(0), - }; - var div, mod, res; - return this.negative !== 0 && num.negative === 0 - ? ((res = this.neg().divmod(num, mode)), - mode !== "mod" && (div = res.div.neg()), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.iadd(num)), - { - div, - mod, - }) - : this.negative === 0 && num.negative !== 0 - ? ((res = this.divmod(num.neg(), mode)), - mode !== "mod" && (div = res.div.neg()), - { - div, - mod: res.mod, - }) - : (this.negative & num.negative) !== 0 - ? ((res = this.neg().divmod(num.neg(), mode)), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.isub(num)), - { - div: res.div, - mod, - }) - : num.length > this.length || this.cmp(num) < 0 - ? { - div: new BN(0), - mod: this, - } - : num.length === 1 - ? mode === "div" - ? { - div: this.divn(num.words[0]), - mod: null, - } - : mode === "mod" - ? { - div: null, - mod: new BN(this.modrn(num.words[0])), - } - : { - div: this.divn(num.words[0]), - mod: new BN(this.modrn(num.words[0])), - } - : this._wordDiv(num, mode); - }), - (BN.prototype.div = function (num) { - return this.divmod(num, "div", !1).div; - }), - (BN.prototype.mod = function (num) { - return this.divmod(num, "mod", !1).mod; - }), - (BN.prototype.umod = function (num) { - return this.divmod(num, "mod", !0).mod; - }), - (BN.prototype.divRound = function (num) { - var dm = this.divmod(num); - if (dm.mod.isZero()) return dm.div; - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod, - half = num.ushrn(1), - r2 = num.andln(1), - cmp = mod.cmp(half); - return cmp < 0 || (r2 === 1 && cmp === 0) - ? dm.div - : dm.div.negative !== 0 - ? dm.div.isubn(1) - : dm.div.iaddn(1); - }), - (BN.prototype.modrn = function (num) { - var isNegNum = num < 0; - isNegNum && (num = -num), assert(num <= 67108863); - for (var p = (1 << 26) % num, acc = 0, i = this.length - 1; i >= 0; i--) - acc = (p * acc + (this.words[i] | 0)) % num; - return isNegNum ? -acc : acc; - }), - (BN.prototype.modn = function (num) { - return this.modrn(num); - }), - (BN.prototype.idivn = function (num) { - var isNegNum = num < 0; - isNegNum && (num = -num), assert(num <= 67108863); - for (var carry = 0, i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 67108864; - (this.words[i] = (w / num) | 0), (carry = w % num); - } - return this._strip(), isNegNum ? this.ineg() : this; - }), - (BN.prototype.divn = function (num) { - return this.clone().idivn(num); - }), - (BN.prototype.egcd = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var x = this, - y = p.clone(); - x.negative !== 0 ? (x = x.umod(p)) : (x = x.clone()); - for (var A = new BN(1), B = new BN(0), C = new BN(0), D = new BN(1), g = 0; x.isEven() && y.isEven(); ) - x.iushrn(1), y.iushrn(1), ++g; - for (var yp = y.clone(), xp = x.clone(); !x.isZero(); ) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) - for (x.iushrn(i); i-- > 0; ) - (A.isOdd() || B.isOdd()) && (A.iadd(yp), B.isub(xp)), A.iushrn(1), B.iushrn(1); - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) - for (y.iushrn(j); j-- > 0; ) - (C.isOdd() || D.isOdd()) && (C.iadd(yp), D.isub(xp)), C.iushrn(1), D.iushrn(1); - x.cmp(y) >= 0 ? (x.isub(y), A.isub(C), B.isub(D)) : (y.isub(x), C.isub(A), D.isub(B)); - } - return { - a: C, - b: D, - gcd: y.iushln(g), - }; - }), - (BN.prototype._invmp = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var a = this, - b = p.clone(); - a.negative !== 0 ? (a = a.umod(p)) : (a = a.clone()); - for (var x1 = new BN(1), x2 = new BN(0), delta = b.clone(); a.cmpn(1) > 0 && b.cmpn(1) > 0; ) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) for (a.iushrn(i); i-- > 0; ) x1.isOdd() && x1.iadd(delta), x1.iushrn(1); - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) for (b.iushrn(j); j-- > 0; ) x2.isOdd() && x2.iadd(delta), x2.iushrn(1); - a.cmp(b) >= 0 ? (a.isub(b), x1.isub(x2)) : (b.isub(a), x2.isub(x1)); - } - var res; - return a.cmpn(1) === 0 ? (res = x1) : (res = x2), res.cmpn(0) < 0 && res.iadd(p), res; - }), - (BN.prototype.gcd = function (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - var a = this.clone(), - b = num.clone(); - (a.negative = 0), (b.negative = 0); - for (var shift = 0; a.isEven() && b.isEven(); shift++) a.iushrn(1), b.iushrn(1); - do { - for (; a.isEven(); ) a.iushrn(1); - for (; b.isEven(); ) b.iushrn(1); - var r = a.cmp(b); - if (r < 0) { - var t = a; - (a = b), (b = t); - } else if (r === 0 || b.cmpn(1) === 0) break; - a.isub(b); - } while (!0); - return b.iushln(shift); - }), - (BN.prototype.invm = function (num) { - return this.egcd(num).a.umod(num); - }), - (BN.prototype.isEven = function () { - return (this.words[0] & 1) === 0; - }), - (BN.prototype.isOdd = function () { - return (this.words[0] & 1) === 1; - }), - (BN.prototype.andln = function (num) { - return this.words[0] & num; - }), - (BN.prototype.bincn = function (bit) { - assert(typeof bit == "number"); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return this._expand(s + 1), (this.words[s] |= q), this; - for (var carry = q, i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - (w += carry), (carry = w >>> 26), (w &= 67108863), (this.words[i] = w); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.isZero = function () { - return this.length === 1 && this.words[0] === 0; - }), - (BN.prototype.cmpn = function (num) { - var negative = num < 0; - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - this._strip(); - var res; - if (this.length > 1) res = 1; - else { - negative && (num = -num), assert(num <= 67108863, "Number is too big"); - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.cmp = function (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - var res = this.ucmp(num); - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.ucmp = function (num) { - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - for (var res = 0, i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0, - b = num.words[i] | 0; - if (a !== b) { - a < b ? (res = -1) : a > b && (res = 1); - break; - } - } - return res; - }), - (BN.prototype.gtn = function (num) { - return this.cmpn(num) === 1; - }), - (BN.prototype.gt = function (num) { - return this.cmp(num) === 1; - }), - (BN.prototype.gten = function (num) { - return this.cmpn(num) >= 0; - }), - (BN.prototype.gte = function (num) { - return this.cmp(num) >= 0; - }), - (BN.prototype.ltn = function (num) { - return this.cmpn(num) === -1; - }), - (BN.prototype.lt = function (num) { - return this.cmp(num) === -1; - }), - (BN.prototype.lten = function (num) { - return this.cmpn(num) <= 0; - }), - (BN.prototype.lte = function (num) { - return this.cmp(num) <= 0; - }), - (BN.prototype.eqn = function (num) { - return this.cmpn(num) === 0; - }), - (BN.prototype.eq = function (num) { - return this.cmp(num) === 0; - }), - (BN.red = function (num) { - return new Red(num); - }), - (BN.prototype.toRed = function (ctx) { - return ( - assert(!this.red, "Already a number in reduction context"), - assert(this.negative === 0, "red works only with positives"), - ctx.convertTo(this)._forceRed(ctx) - ); - }), - (BN.prototype.fromRed = function () { - return assert(this.red, "fromRed works only with numbers in reduction context"), this.red.convertFrom(this); - }), - (BN.prototype._forceRed = function (ctx) { - return (this.red = ctx), this; - }), - (BN.prototype.forceRed = function (ctx) { - return assert(!this.red, "Already a number in reduction context"), this._forceRed(ctx); - }), - (BN.prototype.redAdd = function (num) { - return assert(this.red, "redAdd works only with red numbers"), this.red.add(this, num); - }), - (BN.prototype.redIAdd = function (num) { - return assert(this.red, "redIAdd works only with red numbers"), this.red.iadd(this, num); - }), - (BN.prototype.redSub = function (num) { - return assert(this.red, "redSub works only with red numbers"), this.red.sub(this, num); - }), - (BN.prototype.redISub = function (num) { - return assert(this.red, "redISub works only with red numbers"), this.red.isub(this, num); - }), - (BN.prototype.redShl = function (num) { - return assert(this.red, "redShl works only with red numbers"), this.red.shl(this, num); - }), - (BN.prototype.redMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.mul(this, num) - ); - }), - (BN.prototype.redIMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.imul(this, num) - ); - }), - (BN.prototype.redSqr = function () { - return assert(this.red, "redSqr works only with red numbers"), this.red._verify1(this), this.red.sqr(this); - }), - (BN.prototype.redISqr = function () { - return assert(this.red, "redISqr works only with red numbers"), this.red._verify1(this), this.red.isqr(this); - }), - (BN.prototype.redSqrt = function () { - return assert(this.red, "redSqrt works only with red numbers"), this.red._verify1(this), this.red.sqrt(this); - }), - (BN.prototype.redInvm = function () { - return assert(this.red, "redInvm works only with red numbers"), this.red._verify1(this), this.red.invm(this); - }), - (BN.prototype.redNeg = function () { - return assert(this.red, "redNeg works only with red numbers"), this.red._verify1(this), this.red.neg(this); - }), - (BN.prototype.redPow = function (num) { - return assert(this.red && !num.red, "redPow(normalNum)"), this.red._verify1(this), this.red.pow(this, num); - }); - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null, - }; - function MPrime(name, p) { - (this.name = name), - (this.p = new BN(p, 16)), - (this.n = this.p.bitLength()), - (this.k = new BN(1).iushln(this.n).isub(this.p)), - (this.tmp = this._tmp()); - } - (MPrime.prototype._tmp = function () { - var tmp = new BN(null); - return (tmp.words = new Array(Math.ceil(this.n / 13))), tmp; - }), - (MPrime.prototype.ireduce = function (num) { - var r = num, - rlen; - do this.split(r, this.tmp), (r = this.imulK(r)), (r = r.iadd(this.tmp)), (rlen = r.bitLength()); - while (rlen > this.n); - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - return ( - cmp === 0 - ? ((r.words[0] = 0), (r.length = 1)) - : cmp > 0 - ? r.isub(this.p) - : r.strip !== void 0 - ? r.strip() - : r._strip(), - r - ); - }), - (MPrime.prototype.split = function (input, out) { - input.iushrn(this.n, 0, out); - }), - (MPrime.prototype.imulK = function (num) { - return num.imul(this.k); - }); - function K256() { - MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f"); - } - inherits(K256, MPrime), - (K256.prototype.split = function (input, output) { - for (var mask = 4194303, outLen = Math.min(input.length, 9), i = 0; i < outLen; i++) - output.words[i] = input.words[i]; - if (((output.length = outLen), input.length <= 9)) { - (input.words[0] = 0), (input.length = 1); - return; - } - var prev = input.words[9]; - for (output.words[output.length++] = prev & mask, i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - (input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22)), (prev = next); - } - (prev >>>= 22), - (input.words[i - 10] = prev), - prev === 0 && input.length > 10 ? (input.length -= 10) : (input.length -= 9); - }), - (K256.prototype.imulK = function (num) { - (num.words[num.length] = 0), (num.words[num.length + 1] = 0), (num.length += 2); - for (var lo = 0, i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - (lo += w * 977), (num.words[i] = lo & 67108863), (lo = w * 64 + ((lo / 67108864) | 0)); - } - return ( - num.words[num.length - 1] === 0 && (num.length--, num.words[num.length - 1] === 0 && num.length--), num - ); - }); - function P224() { - MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001"); - } - inherits(P224, MPrime); - function P192() { - MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff"); - } - inherits(P192, MPrime); - function P25519() { - MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed"); - } - inherits(P25519, MPrime), - (P25519.prototype.imulK = function (num) { - for (var carry = 0, i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 19 + carry, - lo = hi & 67108863; - (hi >>>= 26), (num.words[i] = lo), (carry = hi); - } - return carry !== 0 && (num.words[num.length++] = carry), num; - }), - (BN._prime = function (name) { - if (primes[name]) return primes[name]; - var prime2; - if (name === "k256") prime2 = new K256(); - else if (name === "p224") prime2 = new P224(); - else if (name === "p192") prime2 = new P192(); - else if (name === "p25519") prime2 = new P25519(); - else throw new Error("Unknown prime " + name); - return (primes[name] = prime2), prime2; - }); - function Red(m) { - if (typeof m == "string") { - var prime = BN._prime(m); - (this.m = prime.p), (this.prime = prime); - } else assert(m.gtn(1), "modulus must be greater than 1"), (this.m = m), (this.prime = null); - } - (Red.prototype._verify1 = function (a) { - assert(a.negative === 0, "red works only with positives"), assert(a.red, "red works only with red numbers"); - }), - (Red.prototype._verify2 = function (a, b) { - assert((a.negative | b.negative) === 0, "red works only with positives"), - assert(a.red && a.red === b.red, "red works only with red numbers"); - }), - (Red.prototype.imod = function (a) { - return this.prime ? this.prime.ireduce(a)._forceRed(this) : (move(a, a.umod(this.m)._forceRed(this)), a); - }), - (Red.prototype.neg = function (a) { - return a.isZero() ? a.clone() : this.m.sub(a)._forceRed(this); - }), - (Red.prototype.add = function (a, b) { - this._verify2(a, b); - var res = a.add(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res._forceRed(this); - }), - (Red.prototype.iadd = function (a, b) { - this._verify2(a, b); - var res = a.iadd(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res; - }), - (Red.prototype.sub = function (a, b) { - this._verify2(a, b); - var res = a.sub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res._forceRed(this); - }), - (Red.prototype.isub = function (a, b) { - this._verify2(a, b); - var res = a.isub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res; - }), - (Red.prototype.shl = function (a, num) { - return this._verify1(a), this.imod(a.ushln(num)); - }), - (Red.prototype.imul = function (a, b) { - return this._verify2(a, b), this.imod(a.imul(b)); - }), - (Red.prototype.mul = function (a, b) { - return this._verify2(a, b), this.imod(a.mul(b)); - }), - (Red.prototype.isqr = function (a) { - return this.imul(a, a.clone()); - }), - (Red.prototype.sqr = function (a) { - return this.mul(a, a); - }), - (Red.prototype.sqrt = function (a) { - if (a.isZero()) return a.clone(); - var mod3 = this.m.andln(3); - if ((assert(mod3 % 2 === 1), mod3 === 3)) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - for (var q = this.m.subn(1), s = 0; !q.isZero() && q.andln(1) === 0; ) s++, q.iushrn(1); - assert(!q.isZero()); - var one = new BN(1).toRed(this), - nOne = one.redNeg(), - lpow = this.m.subn(1).iushrn(1), - z = this.m.bitLength(); - for (z = new BN(2 * z * z).toRed(this); this.pow(z, lpow).cmp(nOne) !== 0; ) z.redIAdd(nOne); - for ( - var c = this.pow(z, q), r = this.pow(a, q.addn(1).iushrn(1)), t = this.pow(a, q), m = s; - t.cmp(one) !== 0; - - ) { - for (var tmp = t, i = 0; tmp.cmp(one) !== 0; i++) tmp = tmp.redSqr(); - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - (r = r.redMul(b)), (c = b.redSqr()), (t = t.redMul(c)), (m = i); - } - return r; - }), - (Red.prototype.invm = function (a) { - var inv = a._invmp(this.m); - return inv.negative !== 0 ? ((inv.negative = 0), this.imod(inv).redNeg()) : this.imod(inv); - }), - (Red.prototype.pow = function (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - var windowSize = 4, - wnd = new Array(1 << windowSize); - (wnd[0] = new BN(1).toRed(this)), (wnd[1] = a); - for (var i = 2; i < wnd.length; i++) wnd[i] = this.mul(wnd[i - 1], a); - var res = wnd[0], - current = 0, - currentLen = 0, - start = num.bitLength() % 26; - for (start === 0 && (start = 26), i = num.length - 1; i >= 0; i--) { - for (var word = num.words[i], j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if ((res !== wnd[0] && (res = this.sqr(res)), bit === 0 && current === 0)) { - currentLen = 0; - continue; - } - (current <<= 1), - (current |= bit), - currentLen++, - !(currentLen !== windowSize && (i !== 0 || j !== 0)) && - ((res = this.mul(res, wnd[current])), (currentLen = 0), (current = 0)); - } - start = 26; - } - return res; - }), - (Red.prototype.convertTo = function (num) { - var r = num.umod(this.m); - return r === num ? r.clone() : r; - }), - (Red.prototype.convertFrom = function (num) { - var res = num.clone(); - return (res.red = null), res; - }), - (BN.mont = function (num) { - return new Mont(num); - }); - function Mont(m) { - Red.call(this, m), - (this.shift = this.m.bitLength()), - this.shift % 26 !== 0 && (this.shift += 26 - (this.shift % 26)), - (this.r = new BN(1).iushln(this.shift)), - (this.r2 = this.imod(this.r.sqr())), - (this.rinv = this.r._invmp(this.m)), - (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), - (this.minv = this.minv.umod(this.r)), - (this.minv = this.r.sub(this.minv)); - } - inherits(Mont, Red), - (Mont.prototype.convertTo = function (num) { - return this.imod(num.ushln(this.shift)); - }), - (Mont.prototype.convertFrom = function (num) { - var r = this.imod(num.mul(this.rinv)); - return (r.red = null), r; - }), - (Mont.prototype.imul = function (a, b) { - if (a.isZero() || b.isZero()) return (a.words[0] = 0), (a.length = 1), a; - var t = a.imul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.mul = function (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - var t = a.mul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.invm = function (a) { - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }); - })(typeof module > "u" || module, exports); - }, -}); - -// node_modules/browserify-rsa/index.js -var require_browserify_rsa = __commonJS({ - "node_modules/browserify-rsa/index.js"(exports, module) { - var BN = require_bn3(), - randomBytes = require_browser(); - function blind(priv) { - var r = getr(priv), - blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed(); - return { blinder, unblinder: r.invm(priv.modulus) }; - } - function getr(priv) { - var len = priv.modulus.byteLength(), - r; - do r = new BN(randomBytes(len)); - while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)); - return r; - } - function crt(msg, priv) { - var blinds = blind(priv), - len = priv.modulus.byteLength(), - blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus), - c1 = blinded.toRed(BN.mont(priv.prime1)), - c2 = blinded.toRed(BN.mont(priv.prime2)), - qinv = priv.coefficient, - p = priv.prime1, - q = priv.prime2, - m1 = c1.redPow(priv.exponent1).fromRed(), - m2 = c2.redPow(priv.exponent2).fromRed(), - h = m1.isub(m2).imul(qinv).umod(p).imul(q); - return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, "be", len); - } - crt.getr = getr; - module.exports = crt; - }, -}); - -// node_modules/elliptic/package.json -var require_package = __commonJS({ - "node_modules/elliptic/package.json"(exports, module) { - module.exports = { - name: "elliptic", - version: "6.5.4", - description: "EC cryptography", - main: "lib/elliptic.js", - files: ["lib"], - scripts: { - lint: "eslint lib test", - "lint:fix": "npm run lint -- --fix", - unit: "istanbul test _mocha --reporter=spec test/index.js", - test: "npm run lint && npm run unit", - version: "grunt dist && git add dist/", - }, - repository: { - type: "git", - url: "git@github.com:indutny/elliptic", - }, - keywords: ["EC", "Elliptic", "curve", "Cryptography"], - author: "Fedor Indutny <fedor@indutny.com>", - license: "MIT", - bugs: { - url: "https://github.com/indutny/elliptic/issues", - }, - homepage: "https://github.com/indutny/elliptic", - devDependencies: { - brfs: "^2.0.2", - coveralls: "^3.1.0", - eslint: "^7.6.0", - grunt: "^1.2.1", - "grunt-browserify": "^5.3.0", - "grunt-cli": "^1.3.2", - "grunt-contrib-connect": "^3.0.0", - "grunt-contrib-copy": "^1.0.0", - "grunt-contrib-uglify": "^5.0.0", - "grunt-mocha-istanbul": "^5.0.2", - "grunt-saucelabs": "^9.0.1", - istanbul: "^0.4.5", - mocha: "^8.0.1", - }, - dependencies: { - "bn.js": "^4.11.9", - brorand: "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - inherits: "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1", - }, - }; - }, -}); - -// node_modules/elliptic/node_modules/bn.js/lib/bn.js -var require_bn4 = __commonJS({ - "node_modules/elliptic/node_modules/bn.js/lib/bn.js"(exports, module) { - (function (module2, exports2) { - "use strict"; - function assert(val, msg) { - if (!val) throw new Error(msg || "Assertion failed"); - } - function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - (TempCtor.prototype = superCtor.prototype), - (ctor.prototype = new TempCtor()), - (ctor.prototype.constructor = ctor); - } - function BN(number, base, endian) { - if (BN.isBN(number)) return number; - (this.negative = 0), - (this.words = null), - (this.length = 0), - (this.red = null), - number !== null && - ((base === "le" || base === "be") && ((endian = base), (base = 10)), - this._init(number || 0, base || 10, endian || "be")); - } - typeof module2 == "object" ? (module2.exports = BN) : (exports2.BN = BN), (BN.BN = BN), (BN.wordSize = 26); - var Buffer2; - try { - typeof window < "u" && typeof window.Buffer < "u" - ? (Buffer2 = window.Buffer) - : (Buffer2 = __require("buffer").Buffer); - } catch {} - (BN.isBN = function (num) { - return num instanceof BN - ? !0 - : num !== null && - typeof num == "object" && - num.constructor.wordSize === BN.wordSize && - Array.isArray(num.words); - }), - (BN.max = function (left, right) { - return left.cmp(right) > 0 ? left : right; - }), - (BN.min = function (left, right) { - return left.cmp(right) < 0 ? left : right; - }), - (BN.prototype._init = function (number, base, endian) { - if (typeof number == "number") return this._initNumber(number, base, endian); - if (typeof number == "object") return this._initArray(number, base, endian); - base === "hex" && (base = 16), - assert(base === (base | 0) && base >= 2 && base <= 36), - (number = number.toString().replace(/\s+/g, "")); - var start = 0; - number[0] === "-" && (start++, (this.negative = 1)), - start < number.length && - (base === 16 - ? this._parseHex(number, start, endian) - : (this._parseBase(number, base, start), - endian === "le" && this._initArray(this.toArray(), base, endian))); - }), - (BN.prototype._initNumber = function (number, base, endian) { - number < 0 && ((this.negative = 1), (number = -number)), - number < 67108864 - ? ((this.words = [number & 67108863]), (this.length = 1)) - : number < 4503599627370496 - ? ((this.words = [number & 67108863, (number / 67108864) & 67108863]), (this.length = 2)) - : (assert(number < 9007199254740992), - (this.words = [number & 67108863, (number / 67108864) & 67108863, 1]), - (this.length = 3)), - endian === "le" && this._initArray(this.toArray(), base, endian); - }), - (BN.prototype._initArray = function (number, base, endian) { - if ((assert(typeof number.length == "number"), number.length <= 0)) - return (this.words = [0]), (this.length = 1), this; - (this.length = Math.ceil(number.length / 3)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var j, - w, - off = 0; - if (endian === "be") - for (i = number.length - 1, j = 0; i >= 0; i -= 3) - (w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - else if (endian === "le") - for (i = 0, j = 0; i < number.length; i += 3) - (w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - return this.strip(); - }); - function parseHex4Bits(string, index) { - var c = string.charCodeAt(index); - return c >= 65 && c <= 70 ? c - 55 : c >= 97 && c <= 102 ? c - 87 : (c - 48) & 15; - } - function parseHexByte(string, lowerBound, index) { - var r = parseHex4Bits(string, index); - return index - 1 >= lowerBound && (r |= parseHex4Bits(string, index - 1) << 4), r; - } - BN.prototype._parseHex = function (number, start, endian) { - (this.length = Math.ceil((number.length - start) / 6)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var off = 0, - j = 0, - w; - if (endian === "be") - for (i = number.length - 1; i >= start; i -= 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - else { - var parseLength = number.length - start; - for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - } - this.strip(); - }; - function parseBase(str, start, end, mul) { - for (var r = 0, len = Math.min(str.length, end), i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - (r *= mul), c >= 49 ? (r += c - 49 + 10) : c >= 17 ? (r += c - 17 + 10) : (r += c); - } - return r; - } - (BN.prototype._parseBase = function (number, base, start) { - (this.words = [0]), (this.length = 1); - for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) limbLen++; - limbLen--, (limbPow = (limbPow / base) | 0); - for ( - var total = number.length - start, - mod = total % limbLen, - end = Math.min(total, total - mod) + start, - word = 0, - i = start; - i < end; - i += limbLen - ) - (word = parseBase(number, i, i + limbLen, base)), - this.imuln(limbPow), - this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - if (mod !== 0) { - var pow = 1; - for (word = parseBase(number, i, number.length, base), i = 0; i < mod; i++) pow *= base; - this.imuln(pow), this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - } - this.strip(); - }), - (BN.prototype.copy = function (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) dest.words[i] = this.words[i]; - (dest.length = this.length), (dest.negative = this.negative), (dest.red = this.red); - }), - (BN.prototype.clone = function () { - var r = new BN(null); - return this.copy(r), r; - }), - (BN.prototype._expand = function (size) { - for (; this.length < size; ) this.words[this.length++] = 0; - return this; - }), - (BN.prototype.strip = function () { - for (; this.length > 1 && this.words[this.length - 1] === 0; ) this.length--; - return this._normSign(); - }), - (BN.prototype._normSign = function () { - return this.length === 1 && this.words[0] === 0 && (this.negative = 0), this; - }), - (BN.prototype.inspect = function () { - return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">"; - }); - var zeros = [ - "", - "0", - "00", - "000", - "0000", - "00000", - "000000", - "0000000", - "00000000", - "000000000", - "0000000000", - "00000000000", - "000000000000", - "0000000000000", - "00000000000000", - "000000000000000", - "0000000000000000", - "00000000000000000", - "000000000000000000", - "0000000000000000000", - "00000000000000000000", - "000000000000000000000", - "0000000000000000000000", - "00000000000000000000000", - "000000000000000000000000", - "0000000000000000000000000", - ], - groupSizes = [ - 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, - ], - groupBases = [ - 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, - 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, - 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, - 60466176, - ]; - (BN.prototype.toString = function (base, padding) { - (base = base || 10), (padding = padding | 0 || 1); - var out; - if (base === 16 || base === "hex") { - out = ""; - for (var off = 0, carry = 0, i = 0; i < this.length; i++) { - var w = this.words[i], - word = (((w << off) | carry) & 16777215).toString(16); - (carry = (w >>> (24 - off)) & 16777215), - carry !== 0 || i !== this.length - 1 ? (out = zeros[6 - word.length] + word + out) : (out = word + out), - (off += 2), - off >= 26 && ((off -= 26), i--); - } - for (carry !== 0 && (out = carry.toString(16) + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - if (base === (base | 0) && base >= 2 && base <= 36) { - var groupSize = groupSizes[base], - groupBase = groupBases[base]; - out = ""; - var c = this.clone(); - for (c.negative = 0; !c.isZero(); ) { - var r = c.modn(groupBase).toString(base); - (c = c.idivn(groupBase)), c.isZero() ? (out = r + out) : (out = zeros[groupSize - r.length] + r + out); - } - for (this.isZero() && (out = "0" + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - assert(!1, "Base should be between 2 and 36"); - }), - (BN.prototype.toNumber = function () { - var ret = this.words[0]; - return ( - this.length === 2 - ? (ret += this.words[1] * 67108864) - : this.length === 3 && this.words[2] === 1 - ? (ret += 4503599627370496 + this.words[1] * 67108864) - : this.length > 2 && assert(!1, "Number can only safely store up to 53 bits"), - this.negative !== 0 ? -ret : ret - ); - }), - (BN.prototype.toJSON = function () { - return this.toString(16); - }), - (BN.prototype.toBuffer = function (endian, length) { - return assert(typeof Buffer2 < "u"), this.toArrayLike(Buffer2, endian, length); - }), - (BN.prototype.toArray = function (endian, length) { - return this.toArrayLike(Array, endian, length); - }), - (BN.prototype.toArrayLike = function (ArrayType, endian, length) { - var byteLength = this.byteLength(), - reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, "byte array longer than desired length"), - assert(reqLength > 0, "Requested array length <= 0"), - this.strip(); - var littleEndian = endian === "le", - res = new ArrayType(reqLength), - b, - i, - q = this.clone(); - if (littleEndian) { - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[i] = b); - for (; i < reqLength; i++) res[i] = 0; - } else { - for (i = 0; i < reqLength - byteLength; i++) res[i] = 0; - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[reqLength - i - 1] = b); - } - return res; - }), - Math.clz32 - ? (BN.prototype._countBits = function (w) { - return 32 - Math.clz32(w); - }) - : (BN.prototype._countBits = function (w) { - var t = w, - r = 0; - return ( - t >= 4096 && ((r += 13), (t >>>= 13)), - t >= 64 && ((r += 7), (t >>>= 7)), - t >= 8 && ((r += 4), (t >>>= 4)), - t >= 2 && ((r += 2), (t >>>= 2)), - r + t - ); - }), - (BN.prototype._zeroBits = function (w) { - if (w === 0) return 26; - var t = w, - r = 0; - return ( - (t & 8191) === 0 && ((r += 13), (t >>>= 13)), - (t & 127) === 0 && ((r += 7), (t >>>= 7)), - (t & 15) === 0 && ((r += 4), (t >>>= 4)), - (t & 3) === 0 && ((r += 2), (t >>>= 2)), - (t & 1) === 0 && r++, - r - ); - }), - (BN.prototype.bitLength = function () { - var w = this.words[this.length - 1], - hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }); - function toBitArray(num) { - for (var w = new Array(num.bitLength()), bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0, - wbit = bit % 26; - w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; - } - return w; - } - (BN.prototype.zeroBits = function () { - if (this.isZero()) return 0; - for (var r = 0, i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - if (((r += b), b !== 26)) break; - } - return r; - }), - (BN.prototype.byteLength = function () { - return Math.ceil(this.bitLength() / 8); - }), - (BN.prototype.toTwos = function (width) { - return this.negative !== 0 ? this.abs().inotn(width).iaddn(1) : this.clone(); - }), - (BN.prototype.fromTwos = function (width) { - return this.testn(width - 1) ? this.notn(width).iaddn(1).ineg() : this.clone(); - }), - (BN.prototype.isNeg = function () { - return this.negative !== 0; - }), - (BN.prototype.neg = function () { - return this.clone().ineg(); - }), - (BN.prototype.ineg = function () { - return this.isZero() || (this.negative ^= 1), this; - }), - (BN.prototype.iuor = function (num) { - for (; this.length < num.length; ) this.words[this.length++] = 0; - for (var i = 0; i < num.length; i++) this.words[i] = this.words[i] | num.words[i]; - return this.strip(); - }), - (BN.prototype.ior = function (num) { - return assert((this.negative | num.negative) === 0), this.iuor(num); - }), - (BN.prototype.or = function (num) { - return this.length > num.length ? this.clone().ior(num) : num.clone().ior(this); - }), - (BN.prototype.uor = function (num) { - return this.length > num.length ? this.clone().iuor(num) : num.clone().iuor(this); - }), - (BN.prototype.iuand = function (num) { - var b; - this.length > num.length ? (b = num) : (b = this); - for (var i = 0; i < b.length; i++) this.words[i] = this.words[i] & num.words[i]; - return (this.length = b.length), this.strip(); - }), - (BN.prototype.iand = function (num) { - return assert((this.negative | num.negative) === 0), this.iuand(num); - }), - (BN.prototype.and = function (num) { - return this.length > num.length ? this.clone().iand(num) : num.clone().iand(this); - }), - (BN.prototype.uand = function (num) { - return this.length > num.length ? this.clone().iuand(num) : num.clone().iuand(this); - }), - (BN.prototype.iuxor = function (num) { - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var i = 0; i < b.length; i++) this.words[i] = a.words[i] ^ b.words[i]; - if (this !== a) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = a.length), this.strip(); - }), - (BN.prototype.ixor = function (num) { - return assert((this.negative | num.negative) === 0), this.iuxor(num); - }), - (BN.prototype.xor = function (num) { - return this.length > num.length ? this.clone().ixor(num) : num.clone().ixor(this); - }), - (BN.prototype.uxor = function (num) { - return this.length > num.length ? this.clone().iuxor(num) : num.clone().iuxor(this); - }), - (BN.prototype.inotn = function (width) { - assert(typeof width == "number" && width >= 0); - var bytesNeeded = Math.ceil(width / 26) | 0, - bitsLeft = width % 26; - this._expand(bytesNeeded), bitsLeft > 0 && bytesNeeded--; - for (var i = 0; i < bytesNeeded; i++) this.words[i] = ~this.words[i] & 67108863; - return bitsLeft > 0 && (this.words[i] = ~this.words[i] & (67108863 >> (26 - bitsLeft))), this.strip(); - }), - (BN.prototype.notn = function (width) { - return this.clone().inotn(width); - }), - (BN.prototype.setn = function (bit, val) { - assert(typeof bit == "number" && bit >= 0); - var off = (bit / 26) | 0, - wbit = bit % 26; - return ( - this._expand(off + 1), - val - ? (this.words[off] = this.words[off] | (1 << wbit)) - : (this.words[off] = this.words[off] & ~(1 << wbit)), - this.strip() - ); - }), - (BN.prototype.iadd = function (num) { - var r; - if (this.negative !== 0 && num.negative === 0) - return (this.negative = 0), (r = this.isub(num)), (this.negative ^= 1), this._normSign(); - if (this.negative === 0 && num.negative !== 0) - return (num.negative = 0), (r = this.isub(num)), (num.negative = 1), r._normSign(); - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) + (b.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - if (((this.length = a.length), carry !== 0)) (this.words[this.length] = carry), this.length++; - else if (a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return this; - }), - (BN.prototype.add = function (num) { - var res; - return num.negative !== 0 && this.negative === 0 - ? ((num.negative = 0), (res = this.sub(num)), (num.negative ^= 1), res) - : num.negative === 0 && this.negative !== 0 - ? ((this.negative = 0), (res = num.sub(this)), (this.negative = 1), res) - : this.length > num.length - ? this.clone().iadd(num) - : num.clone().iadd(this); - }), - (BN.prototype.isub = function (num) { - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - return (num.negative = 1), r._normSign(); - } else if (this.negative !== 0) - return (this.negative = 0), this.iadd(num), (this.negative = 1), this._normSign(); - var cmp = this.cmp(num); - if (cmp === 0) return (this.negative = 0), (this.length = 1), (this.words[0] = 0), this; - var a, b; - cmp > 0 ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) - (b.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - if (carry === 0 && i < a.length && a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = Math.max(this.length, i)), a !== this && (this.negative = 1), this.strip(); - }), - (BN.prototype.sub = function (num) { - return this.clone().isub(num); - }); - function smallMulTo(self2, num, out) { - out.negative = num.negative ^ self2.negative; - var len = (self2.length + num.length) | 0; - (out.length = len), (len = (len - 1) | 0); - var a = self2.words[0] | 0, - b = num.words[0] | 0, - r = a * b, - lo = r & 67108863, - carry = (r / 67108864) | 0; - out.words[0] = lo; - for (var k = 1; k < len; k++) { - for ( - var ncarry = carry >>> 26, - rword = carry & 67108863, - maxJ = Math.min(k, num.length - 1), - j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = (k - j) | 0; - (a = self2.words[i] | 0), - (b = num.words[j] | 0), - (r = a * b + rword), - (ncarry += (r / 67108864) | 0), - (rword = r & 67108863); - } - (out.words[k] = rword | 0), (carry = ncarry | 0); - } - return carry !== 0 ? (out.words[k] = carry | 0) : out.length--, out.strip(); - } - var comb10MulTo = function (self2, num, out) { - var a = self2.words, - b = num.words, - o = out.words, - c = 0, - lo, - mid, - hi, - a0 = a[0] | 0, - al0 = a0 & 8191, - ah0 = a0 >>> 13, - a1 = a[1] | 0, - al1 = a1 & 8191, - ah1 = a1 >>> 13, - a2 = a[2] | 0, - al2 = a2 & 8191, - ah2 = a2 >>> 13, - a3 = a[3] | 0, - al3 = a3 & 8191, - ah3 = a3 >>> 13, - a4 = a[4] | 0, - al4 = a4 & 8191, - ah4 = a4 >>> 13, - a5 = a[5] | 0, - al5 = a5 & 8191, - ah5 = a5 >>> 13, - a6 = a[6] | 0, - al6 = a6 & 8191, - ah6 = a6 >>> 13, - a7 = a[7] | 0, - al7 = a7 & 8191, - ah7 = a7 >>> 13, - a8 = a[8] | 0, - al8 = a8 & 8191, - ah8 = a8 >>> 13, - a9 = a[9] | 0, - al9 = a9 & 8191, - ah9 = a9 >>> 13, - b0 = b[0] | 0, - bl0 = b0 & 8191, - bh0 = b0 >>> 13, - b1 = b[1] | 0, - bl1 = b1 & 8191, - bh1 = b1 >>> 13, - b2 = b[2] | 0, - bl2 = b2 & 8191, - bh2 = b2 >>> 13, - b3 = b[3] | 0, - bl3 = b3 & 8191, - bh3 = b3 >>> 13, - b4 = b[4] | 0, - bl4 = b4 & 8191, - bh4 = b4 >>> 13, - b5 = b[5] | 0, - bl5 = b5 & 8191, - bh5 = b5 >>> 13, - b6 = b[6] | 0, - bl6 = b6 & 8191, - bh6 = b6 >>> 13, - b7 = b[7] | 0, - bl7 = b7 & 8191, - bh7 = b7 >>> 13, - b8 = b[8] | 0, - bl8 = b8 & 8191, - bh8 = b8 >>> 13, - b9 = b[9] | 0, - bl9 = b9 & 8191, - bh9 = b9 >>> 13; - (out.negative = self2.negative ^ num.negative), - (out.length = 19), - (lo = Math.imul(al0, bl0)), - (mid = Math.imul(al0, bh0)), - (mid = (mid + Math.imul(ah0, bl0)) | 0), - (hi = Math.imul(ah0, bh0)); - var w0 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0), - (w0 &= 67108863), - (lo = Math.imul(al1, bl0)), - (mid = Math.imul(al1, bh0)), - (mid = (mid + Math.imul(ah1, bl0)) | 0), - (hi = Math.imul(ah1, bh0)), - (lo = (lo + Math.imul(al0, bl1)) | 0), - (mid = (mid + Math.imul(al0, bh1)) | 0), - (mid = (mid + Math.imul(ah0, bl1)) | 0), - (hi = (hi + Math.imul(ah0, bh1)) | 0); - var w1 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0), - (w1 &= 67108863), - (lo = Math.imul(al2, bl0)), - (mid = Math.imul(al2, bh0)), - (mid = (mid + Math.imul(ah2, bl0)) | 0), - (hi = Math.imul(ah2, bh0)), - (lo = (lo + Math.imul(al1, bl1)) | 0), - (mid = (mid + Math.imul(al1, bh1)) | 0), - (mid = (mid + Math.imul(ah1, bl1)) | 0), - (hi = (hi + Math.imul(ah1, bh1)) | 0), - (lo = (lo + Math.imul(al0, bl2)) | 0), - (mid = (mid + Math.imul(al0, bh2)) | 0), - (mid = (mid + Math.imul(ah0, bl2)) | 0), - (hi = (hi + Math.imul(ah0, bh2)) | 0); - var w2 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0), - (w2 &= 67108863), - (lo = Math.imul(al3, bl0)), - (mid = Math.imul(al3, bh0)), - (mid = (mid + Math.imul(ah3, bl0)) | 0), - (hi = Math.imul(ah3, bh0)), - (lo = (lo + Math.imul(al2, bl1)) | 0), - (mid = (mid + Math.imul(al2, bh1)) | 0), - (mid = (mid + Math.imul(ah2, bl1)) | 0), - (hi = (hi + Math.imul(ah2, bh1)) | 0), - (lo = (lo + Math.imul(al1, bl2)) | 0), - (mid = (mid + Math.imul(al1, bh2)) | 0), - (mid = (mid + Math.imul(ah1, bl2)) | 0), - (hi = (hi + Math.imul(ah1, bh2)) | 0), - (lo = (lo + Math.imul(al0, bl3)) | 0), - (mid = (mid + Math.imul(al0, bh3)) | 0), - (mid = (mid + Math.imul(ah0, bl3)) | 0), - (hi = (hi + Math.imul(ah0, bh3)) | 0); - var w3 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0), - (w3 &= 67108863), - (lo = Math.imul(al4, bl0)), - (mid = Math.imul(al4, bh0)), - (mid = (mid + Math.imul(ah4, bl0)) | 0), - (hi = Math.imul(ah4, bh0)), - (lo = (lo + Math.imul(al3, bl1)) | 0), - (mid = (mid + Math.imul(al3, bh1)) | 0), - (mid = (mid + Math.imul(ah3, bl1)) | 0), - (hi = (hi + Math.imul(ah3, bh1)) | 0), - (lo = (lo + Math.imul(al2, bl2)) | 0), - (mid = (mid + Math.imul(al2, bh2)) | 0), - (mid = (mid + Math.imul(ah2, bl2)) | 0), - (hi = (hi + Math.imul(ah2, bh2)) | 0), - (lo = (lo + Math.imul(al1, bl3)) | 0), - (mid = (mid + Math.imul(al1, bh3)) | 0), - (mid = (mid + Math.imul(ah1, bl3)) | 0), - (hi = (hi + Math.imul(ah1, bh3)) | 0), - (lo = (lo + Math.imul(al0, bl4)) | 0), - (mid = (mid + Math.imul(al0, bh4)) | 0), - (mid = (mid + Math.imul(ah0, bl4)) | 0), - (hi = (hi + Math.imul(ah0, bh4)) | 0); - var w4 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0), - (w4 &= 67108863), - (lo = Math.imul(al5, bl0)), - (mid = Math.imul(al5, bh0)), - (mid = (mid + Math.imul(ah5, bl0)) | 0), - (hi = Math.imul(ah5, bh0)), - (lo = (lo + Math.imul(al4, bl1)) | 0), - (mid = (mid + Math.imul(al4, bh1)) | 0), - (mid = (mid + Math.imul(ah4, bl1)) | 0), - (hi = (hi + Math.imul(ah4, bh1)) | 0), - (lo = (lo + Math.imul(al3, bl2)) | 0), - (mid = (mid + Math.imul(al3, bh2)) | 0), - (mid = (mid + Math.imul(ah3, bl2)) | 0), - (hi = (hi + Math.imul(ah3, bh2)) | 0), - (lo = (lo + Math.imul(al2, bl3)) | 0), - (mid = (mid + Math.imul(al2, bh3)) | 0), - (mid = (mid + Math.imul(ah2, bl3)) | 0), - (hi = (hi + Math.imul(ah2, bh3)) | 0), - (lo = (lo + Math.imul(al1, bl4)) | 0), - (mid = (mid + Math.imul(al1, bh4)) | 0), - (mid = (mid + Math.imul(ah1, bl4)) | 0), - (hi = (hi + Math.imul(ah1, bh4)) | 0), - (lo = (lo + Math.imul(al0, bl5)) | 0), - (mid = (mid + Math.imul(al0, bh5)) | 0), - (mid = (mid + Math.imul(ah0, bl5)) | 0), - (hi = (hi + Math.imul(ah0, bh5)) | 0); - var w5 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0), - (w5 &= 67108863), - (lo = Math.imul(al6, bl0)), - (mid = Math.imul(al6, bh0)), - (mid = (mid + Math.imul(ah6, bl0)) | 0), - (hi = Math.imul(ah6, bh0)), - (lo = (lo + Math.imul(al5, bl1)) | 0), - (mid = (mid + Math.imul(al5, bh1)) | 0), - (mid = (mid + Math.imul(ah5, bl1)) | 0), - (hi = (hi + Math.imul(ah5, bh1)) | 0), - (lo = (lo + Math.imul(al4, bl2)) | 0), - (mid = (mid + Math.imul(al4, bh2)) | 0), - (mid = (mid + Math.imul(ah4, bl2)) | 0), - (hi = (hi + Math.imul(ah4, bh2)) | 0), - (lo = (lo + Math.imul(al3, bl3)) | 0), - (mid = (mid + Math.imul(al3, bh3)) | 0), - (mid = (mid + Math.imul(ah3, bl3)) | 0), - (hi = (hi + Math.imul(ah3, bh3)) | 0), - (lo = (lo + Math.imul(al2, bl4)) | 0), - (mid = (mid + Math.imul(al2, bh4)) | 0), - (mid = (mid + Math.imul(ah2, bl4)) | 0), - (hi = (hi + Math.imul(ah2, bh4)) | 0), - (lo = (lo + Math.imul(al1, bl5)) | 0), - (mid = (mid + Math.imul(al1, bh5)) | 0), - (mid = (mid + Math.imul(ah1, bl5)) | 0), - (hi = (hi + Math.imul(ah1, bh5)) | 0), - (lo = (lo + Math.imul(al0, bl6)) | 0), - (mid = (mid + Math.imul(al0, bh6)) | 0), - (mid = (mid + Math.imul(ah0, bl6)) | 0), - (hi = (hi + Math.imul(ah0, bh6)) | 0); - var w6 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0), - (w6 &= 67108863), - (lo = Math.imul(al7, bl0)), - (mid = Math.imul(al7, bh0)), - (mid = (mid + Math.imul(ah7, bl0)) | 0), - (hi = Math.imul(ah7, bh0)), - (lo = (lo + Math.imul(al6, bl1)) | 0), - (mid = (mid + Math.imul(al6, bh1)) | 0), - (mid = (mid + Math.imul(ah6, bl1)) | 0), - (hi = (hi + Math.imul(ah6, bh1)) | 0), - (lo = (lo + Math.imul(al5, bl2)) | 0), - (mid = (mid + Math.imul(al5, bh2)) | 0), - (mid = (mid + Math.imul(ah5, bl2)) | 0), - (hi = (hi + Math.imul(ah5, bh2)) | 0), - (lo = (lo + Math.imul(al4, bl3)) | 0), - (mid = (mid + Math.imul(al4, bh3)) | 0), - (mid = (mid + Math.imul(ah4, bl3)) | 0), - (hi = (hi + Math.imul(ah4, bh3)) | 0), - (lo = (lo + Math.imul(al3, bl4)) | 0), - (mid = (mid + Math.imul(al3, bh4)) | 0), - (mid = (mid + Math.imul(ah3, bl4)) | 0), - (hi = (hi + Math.imul(ah3, bh4)) | 0), - (lo = (lo + Math.imul(al2, bl5)) | 0), - (mid = (mid + Math.imul(al2, bh5)) | 0), - (mid = (mid + Math.imul(ah2, bl5)) | 0), - (hi = (hi + Math.imul(ah2, bh5)) | 0), - (lo = (lo + Math.imul(al1, bl6)) | 0), - (mid = (mid + Math.imul(al1, bh6)) | 0), - (mid = (mid + Math.imul(ah1, bl6)) | 0), - (hi = (hi + Math.imul(ah1, bh6)) | 0), - (lo = (lo + Math.imul(al0, bl7)) | 0), - (mid = (mid + Math.imul(al0, bh7)) | 0), - (mid = (mid + Math.imul(ah0, bl7)) | 0), - (hi = (hi + Math.imul(ah0, bh7)) | 0); - var w7 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0), - (w7 &= 67108863), - (lo = Math.imul(al8, bl0)), - (mid = Math.imul(al8, bh0)), - (mid = (mid + Math.imul(ah8, bl0)) | 0), - (hi = Math.imul(ah8, bh0)), - (lo = (lo + Math.imul(al7, bl1)) | 0), - (mid = (mid + Math.imul(al7, bh1)) | 0), - (mid = (mid + Math.imul(ah7, bl1)) | 0), - (hi = (hi + Math.imul(ah7, bh1)) | 0), - (lo = (lo + Math.imul(al6, bl2)) | 0), - (mid = (mid + Math.imul(al6, bh2)) | 0), - (mid = (mid + Math.imul(ah6, bl2)) | 0), - (hi = (hi + Math.imul(ah6, bh2)) | 0), - (lo = (lo + Math.imul(al5, bl3)) | 0), - (mid = (mid + Math.imul(al5, bh3)) | 0), - (mid = (mid + Math.imul(ah5, bl3)) | 0), - (hi = (hi + Math.imul(ah5, bh3)) | 0), - (lo = (lo + Math.imul(al4, bl4)) | 0), - (mid = (mid + Math.imul(al4, bh4)) | 0), - (mid = (mid + Math.imul(ah4, bl4)) | 0), - (hi = (hi + Math.imul(ah4, bh4)) | 0), - (lo = (lo + Math.imul(al3, bl5)) | 0), - (mid = (mid + Math.imul(al3, bh5)) | 0), - (mid = (mid + Math.imul(ah3, bl5)) | 0), - (hi = (hi + Math.imul(ah3, bh5)) | 0), - (lo = (lo + Math.imul(al2, bl6)) | 0), - (mid = (mid + Math.imul(al2, bh6)) | 0), - (mid = (mid + Math.imul(ah2, bl6)) | 0), - (hi = (hi + Math.imul(ah2, bh6)) | 0), - (lo = (lo + Math.imul(al1, bl7)) | 0), - (mid = (mid + Math.imul(al1, bh7)) | 0), - (mid = (mid + Math.imul(ah1, bl7)) | 0), - (hi = (hi + Math.imul(ah1, bh7)) | 0), - (lo = (lo + Math.imul(al0, bl8)) | 0), - (mid = (mid + Math.imul(al0, bh8)) | 0), - (mid = (mid + Math.imul(ah0, bl8)) | 0), - (hi = (hi + Math.imul(ah0, bh8)) | 0); - var w8 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0), - (w8 &= 67108863), - (lo = Math.imul(al9, bl0)), - (mid = Math.imul(al9, bh0)), - (mid = (mid + Math.imul(ah9, bl0)) | 0), - (hi = Math.imul(ah9, bh0)), - (lo = (lo + Math.imul(al8, bl1)) | 0), - (mid = (mid + Math.imul(al8, bh1)) | 0), - (mid = (mid + Math.imul(ah8, bl1)) | 0), - (hi = (hi + Math.imul(ah8, bh1)) | 0), - (lo = (lo + Math.imul(al7, bl2)) | 0), - (mid = (mid + Math.imul(al7, bh2)) | 0), - (mid = (mid + Math.imul(ah7, bl2)) | 0), - (hi = (hi + Math.imul(ah7, bh2)) | 0), - (lo = (lo + Math.imul(al6, bl3)) | 0), - (mid = (mid + Math.imul(al6, bh3)) | 0), - (mid = (mid + Math.imul(ah6, bl3)) | 0), - (hi = (hi + Math.imul(ah6, bh3)) | 0), - (lo = (lo + Math.imul(al5, bl4)) | 0), - (mid = (mid + Math.imul(al5, bh4)) | 0), - (mid = (mid + Math.imul(ah5, bl4)) | 0), - (hi = (hi + Math.imul(ah5, bh4)) | 0), - (lo = (lo + Math.imul(al4, bl5)) | 0), - (mid = (mid + Math.imul(al4, bh5)) | 0), - (mid = (mid + Math.imul(ah4, bl5)) | 0), - (hi = (hi + Math.imul(ah4, bh5)) | 0), - (lo = (lo + Math.imul(al3, bl6)) | 0), - (mid = (mid + Math.imul(al3, bh6)) | 0), - (mid = (mid + Math.imul(ah3, bl6)) | 0), - (hi = (hi + Math.imul(ah3, bh6)) | 0), - (lo = (lo + Math.imul(al2, bl7)) | 0), - (mid = (mid + Math.imul(al2, bh7)) | 0), - (mid = (mid + Math.imul(ah2, bl7)) | 0), - (hi = (hi + Math.imul(ah2, bh7)) | 0), - (lo = (lo + Math.imul(al1, bl8)) | 0), - (mid = (mid + Math.imul(al1, bh8)) | 0), - (mid = (mid + Math.imul(ah1, bl8)) | 0), - (hi = (hi + Math.imul(ah1, bh8)) | 0), - (lo = (lo + Math.imul(al0, bl9)) | 0), - (mid = (mid + Math.imul(al0, bh9)) | 0), - (mid = (mid + Math.imul(ah0, bl9)) | 0), - (hi = (hi + Math.imul(ah0, bh9)) | 0); - var w9 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0), - (w9 &= 67108863), - (lo = Math.imul(al9, bl1)), - (mid = Math.imul(al9, bh1)), - (mid = (mid + Math.imul(ah9, bl1)) | 0), - (hi = Math.imul(ah9, bh1)), - (lo = (lo + Math.imul(al8, bl2)) | 0), - (mid = (mid + Math.imul(al8, bh2)) | 0), - (mid = (mid + Math.imul(ah8, bl2)) | 0), - (hi = (hi + Math.imul(ah8, bh2)) | 0), - (lo = (lo + Math.imul(al7, bl3)) | 0), - (mid = (mid + Math.imul(al7, bh3)) | 0), - (mid = (mid + Math.imul(ah7, bl3)) | 0), - (hi = (hi + Math.imul(ah7, bh3)) | 0), - (lo = (lo + Math.imul(al6, bl4)) | 0), - (mid = (mid + Math.imul(al6, bh4)) | 0), - (mid = (mid + Math.imul(ah6, bl4)) | 0), - (hi = (hi + Math.imul(ah6, bh4)) | 0), - (lo = (lo + Math.imul(al5, bl5)) | 0), - (mid = (mid + Math.imul(al5, bh5)) | 0), - (mid = (mid + Math.imul(ah5, bl5)) | 0), - (hi = (hi + Math.imul(ah5, bh5)) | 0), - (lo = (lo + Math.imul(al4, bl6)) | 0), - (mid = (mid + Math.imul(al4, bh6)) | 0), - (mid = (mid + Math.imul(ah4, bl6)) | 0), - (hi = (hi + Math.imul(ah4, bh6)) | 0), - (lo = (lo + Math.imul(al3, bl7)) | 0), - (mid = (mid + Math.imul(al3, bh7)) | 0), - (mid = (mid + Math.imul(ah3, bl7)) | 0), - (hi = (hi + Math.imul(ah3, bh7)) | 0), - (lo = (lo + Math.imul(al2, bl8)) | 0), - (mid = (mid + Math.imul(al2, bh8)) | 0), - (mid = (mid + Math.imul(ah2, bl8)) | 0), - (hi = (hi + Math.imul(ah2, bh8)) | 0), - (lo = (lo + Math.imul(al1, bl9)) | 0), - (mid = (mid + Math.imul(al1, bh9)) | 0), - (mid = (mid + Math.imul(ah1, bl9)) | 0), - (hi = (hi + Math.imul(ah1, bh9)) | 0); - var w10 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0), - (w10 &= 67108863), - (lo = Math.imul(al9, bl2)), - (mid = Math.imul(al9, bh2)), - (mid = (mid + Math.imul(ah9, bl2)) | 0), - (hi = Math.imul(ah9, bh2)), - (lo = (lo + Math.imul(al8, bl3)) | 0), - (mid = (mid + Math.imul(al8, bh3)) | 0), - (mid = (mid + Math.imul(ah8, bl3)) | 0), - (hi = (hi + Math.imul(ah8, bh3)) | 0), - (lo = (lo + Math.imul(al7, bl4)) | 0), - (mid = (mid + Math.imul(al7, bh4)) | 0), - (mid = (mid + Math.imul(ah7, bl4)) | 0), - (hi = (hi + Math.imul(ah7, bh4)) | 0), - (lo = (lo + Math.imul(al6, bl5)) | 0), - (mid = (mid + Math.imul(al6, bh5)) | 0), - (mid = (mid + Math.imul(ah6, bl5)) | 0), - (hi = (hi + Math.imul(ah6, bh5)) | 0), - (lo = (lo + Math.imul(al5, bl6)) | 0), - (mid = (mid + Math.imul(al5, bh6)) | 0), - (mid = (mid + Math.imul(ah5, bl6)) | 0), - (hi = (hi + Math.imul(ah5, bh6)) | 0), - (lo = (lo + Math.imul(al4, bl7)) | 0), - (mid = (mid + Math.imul(al4, bh7)) | 0), - (mid = (mid + Math.imul(ah4, bl7)) | 0), - (hi = (hi + Math.imul(ah4, bh7)) | 0), - (lo = (lo + Math.imul(al3, bl8)) | 0), - (mid = (mid + Math.imul(al3, bh8)) | 0), - (mid = (mid + Math.imul(ah3, bl8)) | 0), - (hi = (hi + Math.imul(ah3, bh8)) | 0), - (lo = (lo + Math.imul(al2, bl9)) | 0), - (mid = (mid + Math.imul(al2, bh9)) | 0), - (mid = (mid + Math.imul(ah2, bl9)) | 0), - (hi = (hi + Math.imul(ah2, bh9)) | 0); - var w11 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0), - (w11 &= 67108863), - (lo = Math.imul(al9, bl3)), - (mid = Math.imul(al9, bh3)), - (mid = (mid + Math.imul(ah9, bl3)) | 0), - (hi = Math.imul(ah9, bh3)), - (lo = (lo + Math.imul(al8, bl4)) | 0), - (mid = (mid + Math.imul(al8, bh4)) | 0), - (mid = (mid + Math.imul(ah8, bl4)) | 0), - (hi = (hi + Math.imul(ah8, bh4)) | 0), - (lo = (lo + Math.imul(al7, bl5)) | 0), - (mid = (mid + Math.imul(al7, bh5)) | 0), - (mid = (mid + Math.imul(ah7, bl5)) | 0), - (hi = (hi + Math.imul(ah7, bh5)) | 0), - (lo = (lo + Math.imul(al6, bl6)) | 0), - (mid = (mid + Math.imul(al6, bh6)) | 0), - (mid = (mid + Math.imul(ah6, bl6)) | 0), - (hi = (hi + Math.imul(ah6, bh6)) | 0), - (lo = (lo + Math.imul(al5, bl7)) | 0), - (mid = (mid + Math.imul(al5, bh7)) | 0), - (mid = (mid + Math.imul(ah5, bl7)) | 0), - (hi = (hi + Math.imul(ah5, bh7)) | 0), - (lo = (lo + Math.imul(al4, bl8)) | 0), - (mid = (mid + Math.imul(al4, bh8)) | 0), - (mid = (mid + Math.imul(ah4, bl8)) | 0), - (hi = (hi + Math.imul(ah4, bh8)) | 0), - (lo = (lo + Math.imul(al3, bl9)) | 0), - (mid = (mid + Math.imul(al3, bh9)) | 0), - (mid = (mid + Math.imul(ah3, bl9)) | 0), - (hi = (hi + Math.imul(ah3, bh9)) | 0); - var w12 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0), - (w12 &= 67108863), - (lo = Math.imul(al9, bl4)), - (mid = Math.imul(al9, bh4)), - (mid = (mid + Math.imul(ah9, bl4)) | 0), - (hi = Math.imul(ah9, bh4)), - (lo = (lo + Math.imul(al8, bl5)) | 0), - (mid = (mid + Math.imul(al8, bh5)) | 0), - (mid = (mid + Math.imul(ah8, bl5)) | 0), - (hi = (hi + Math.imul(ah8, bh5)) | 0), - (lo = (lo + Math.imul(al7, bl6)) | 0), - (mid = (mid + Math.imul(al7, bh6)) | 0), - (mid = (mid + Math.imul(ah7, bl6)) | 0), - (hi = (hi + Math.imul(ah7, bh6)) | 0), - (lo = (lo + Math.imul(al6, bl7)) | 0), - (mid = (mid + Math.imul(al6, bh7)) | 0), - (mid = (mid + Math.imul(ah6, bl7)) | 0), - (hi = (hi + Math.imul(ah6, bh7)) | 0), - (lo = (lo + Math.imul(al5, bl8)) | 0), - (mid = (mid + Math.imul(al5, bh8)) | 0), - (mid = (mid + Math.imul(ah5, bl8)) | 0), - (hi = (hi + Math.imul(ah5, bh8)) | 0), - (lo = (lo + Math.imul(al4, bl9)) | 0), - (mid = (mid + Math.imul(al4, bh9)) | 0), - (mid = (mid + Math.imul(ah4, bl9)) | 0), - (hi = (hi + Math.imul(ah4, bh9)) | 0); - var w13 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0), - (w13 &= 67108863), - (lo = Math.imul(al9, bl5)), - (mid = Math.imul(al9, bh5)), - (mid = (mid + Math.imul(ah9, bl5)) | 0), - (hi = Math.imul(ah9, bh5)), - (lo = (lo + Math.imul(al8, bl6)) | 0), - (mid = (mid + Math.imul(al8, bh6)) | 0), - (mid = (mid + Math.imul(ah8, bl6)) | 0), - (hi = (hi + Math.imul(ah8, bh6)) | 0), - (lo = (lo + Math.imul(al7, bl7)) | 0), - (mid = (mid + Math.imul(al7, bh7)) | 0), - (mid = (mid + Math.imul(ah7, bl7)) | 0), - (hi = (hi + Math.imul(ah7, bh7)) | 0), - (lo = (lo + Math.imul(al6, bl8)) | 0), - (mid = (mid + Math.imul(al6, bh8)) | 0), - (mid = (mid + Math.imul(ah6, bl8)) | 0), - (hi = (hi + Math.imul(ah6, bh8)) | 0), - (lo = (lo + Math.imul(al5, bl9)) | 0), - (mid = (mid + Math.imul(al5, bh9)) | 0), - (mid = (mid + Math.imul(ah5, bl9)) | 0), - (hi = (hi + Math.imul(ah5, bh9)) | 0); - var w14 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0), - (w14 &= 67108863), - (lo = Math.imul(al9, bl6)), - (mid = Math.imul(al9, bh6)), - (mid = (mid + Math.imul(ah9, bl6)) | 0), - (hi = Math.imul(ah9, bh6)), - (lo = (lo + Math.imul(al8, bl7)) | 0), - (mid = (mid + Math.imul(al8, bh7)) | 0), - (mid = (mid + Math.imul(ah8, bl7)) | 0), - (hi = (hi + Math.imul(ah8, bh7)) | 0), - (lo = (lo + Math.imul(al7, bl8)) | 0), - (mid = (mid + Math.imul(al7, bh8)) | 0), - (mid = (mid + Math.imul(ah7, bl8)) | 0), - (hi = (hi + Math.imul(ah7, bh8)) | 0), - (lo = (lo + Math.imul(al6, bl9)) | 0), - (mid = (mid + Math.imul(al6, bh9)) | 0), - (mid = (mid + Math.imul(ah6, bl9)) | 0), - (hi = (hi + Math.imul(ah6, bh9)) | 0); - var w15 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0), - (w15 &= 67108863), - (lo = Math.imul(al9, bl7)), - (mid = Math.imul(al9, bh7)), - (mid = (mid + Math.imul(ah9, bl7)) | 0), - (hi = Math.imul(ah9, bh7)), - (lo = (lo + Math.imul(al8, bl8)) | 0), - (mid = (mid + Math.imul(al8, bh8)) | 0), - (mid = (mid + Math.imul(ah8, bl8)) | 0), - (hi = (hi + Math.imul(ah8, bh8)) | 0), - (lo = (lo + Math.imul(al7, bl9)) | 0), - (mid = (mid + Math.imul(al7, bh9)) | 0), - (mid = (mid + Math.imul(ah7, bl9)) | 0), - (hi = (hi + Math.imul(ah7, bh9)) | 0); - var w16 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0), - (w16 &= 67108863), - (lo = Math.imul(al9, bl8)), - (mid = Math.imul(al9, bh8)), - (mid = (mid + Math.imul(ah9, bl8)) | 0), - (hi = Math.imul(ah9, bh8)), - (lo = (lo + Math.imul(al8, bl9)) | 0), - (mid = (mid + Math.imul(al8, bh9)) | 0), - (mid = (mid + Math.imul(ah8, bl9)) | 0), - (hi = (hi + Math.imul(ah8, bh9)) | 0); - var w17 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0), - (w17 &= 67108863), - (lo = Math.imul(al9, bl9)), - (mid = Math.imul(al9, bh9)), - (mid = (mid + Math.imul(ah9, bl9)) | 0), - (hi = Math.imul(ah9, bh9)); - var w18 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - return ( - (c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0), - (w18 &= 67108863), - (o[0] = w0), - (o[1] = w1), - (o[2] = w2), - (o[3] = w3), - (o[4] = w4), - (o[5] = w5), - (o[6] = w6), - (o[7] = w7), - (o[8] = w8), - (o[9] = w9), - (o[10] = w10), - (o[11] = w11), - (o[12] = w12), - (o[13] = w13), - (o[14] = w14), - (o[15] = w15), - (o[16] = w16), - (o[17] = w17), - (o[18] = w18), - c !== 0 && ((o[19] = c), out.length++), - out - ); - }; - Math.imul || (comb10MulTo = smallMulTo); - function bigMulTo(self2, num, out) { - (out.negative = num.negative ^ self2.negative), (out.length = self2.length + num.length); - for (var carry = 0, hncarry = 0, k = 0; k < out.length - 1; k++) { - var ncarry = hncarry; - hncarry = 0; - for ( - var rword = carry & 67108863, maxJ = Math.min(k, num.length - 1), j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = k - j, - a = self2.words[i] | 0, - b = num.words[j] | 0, - r = a * b, - lo = r & 67108863; - (ncarry = (ncarry + ((r / 67108864) | 0)) | 0), - (lo = (lo + rword) | 0), - (rword = lo & 67108863), - (ncarry = (ncarry + (lo >>> 26)) | 0), - (hncarry += ncarry >>> 26), - (ncarry &= 67108863); - } - (out.words[k] = rword), (carry = ncarry), (ncarry = hncarry); - } - return carry !== 0 ? (out.words[k] = carry) : out.length--, out.strip(); - } - function jumboMulTo(self2, num, out) { - var fftm = new FFTM(); - return fftm.mulp(self2, num, out); - } - BN.prototype.mulTo = function (num, out) { - var res, - len = this.length + num.length; - return ( - this.length === 10 && num.length === 10 - ? (res = comb10MulTo(this, num, out)) - : len < 63 - ? (res = smallMulTo(this, num, out)) - : len < 1024 - ? (res = bigMulTo(this, num, out)) - : (res = jumboMulTo(this, num, out)), - res - ); - }; - function FFTM(x, y) { - (this.x = x), (this.y = y); - } - (FFTM.prototype.makeRBT = function (N) { - for (var t = new Array(N), l = BN.prototype._countBits(N) - 1, i = 0; i < N; i++) t[i] = this.revBin(i, l, N); - return t; - }), - (FFTM.prototype.revBin = function (x, l, N) { - if (x === 0 || x === N - 1) return x; - for (var rb = 0, i = 0; i < l; i++) (rb |= (x & 1) << (l - i - 1)), (x >>= 1); - return rb; - }), - (FFTM.prototype.permute = function (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) (rtws[i] = rws[rbt[i]]), (itws[i] = iws[rbt[i]]); - }), - (FFTM.prototype.transform = function (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - for (var s = 1; s < N; s <<= 1) - for ( - var l = s << 1, rtwdf = Math.cos((2 * Math.PI) / l), itwdf = Math.sin((2 * Math.PI) / l), p = 0; - p < N; - p += l - ) - for (var rtwdf_ = rtwdf, itwdf_ = itwdf, j = 0; j < s; j++) { - var re = rtws[p + j], - ie = itws[p + j], - ro = rtws[p + j + s], - io = itws[p + j + s], - rx = rtwdf_ * ro - itwdf_ * io; - (io = rtwdf_ * io + itwdf_ * ro), - (ro = rx), - (rtws[p + j] = re + ro), - (itws[p + j] = ie + io), - (rtws[p + j + s] = re - ro), - (itws[p + j + s] = ie - io), - j !== l && - ((rx = rtwdf * rtwdf_ - itwdf * itwdf_), (itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_), (rtwdf_ = rx)); - } - }), - (FFTM.prototype.guessLen13b = function (n, m) { - var N = Math.max(m, n) | 1, - odd = N & 1, - i = 0; - for (N = (N / 2) | 0; N; N = N >>> 1) i++; - return 1 << (i + 1 + odd); - }), - (FFTM.prototype.conjugate = function (rws, iws, N) { - if (!(N <= 1)) - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - (rws[i] = rws[N - i - 1]), - (rws[N - i - 1] = t), - (t = iws[i]), - (iws[i] = -iws[N - i - 1]), - (iws[N - i - 1] = -t); - } - }), - (FFTM.prototype.normalize13b = function (ws, N) { - for (var carry = 0, i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; - (ws[i] = w & 67108863), w < 67108864 ? (carry = 0) : (carry = (w / 67108864) | 0); - } - return ws; - }), - (FFTM.prototype.convert13b = function (ws, len, rws, N) { - for (var carry = 0, i = 0; i < len; i++) - (carry = carry + (ws[i] | 0)), - (rws[2 * i] = carry & 8191), - (carry = carry >>> 13), - (rws[2 * i + 1] = carry & 8191), - (carry = carry >>> 13); - for (i = 2 * len; i < N; ++i) rws[i] = 0; - assert(carry === 0), assert((carry & -8192) === 0); - }), - (FFTM.prototype.stub = function (N) { - for (var ph = new Array(N), i = 0; i < N; i++) ph[i] = 0; - return ph; - }), - (FFTM.prototype.mulp = function (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length), - rbt = this.makeRBT(N), - _ = this.stub(N), - rws = new Array(N), - rwst = new Array(N), - iwst = new Array(N), - nrws = new Array(N), - nrwst = new Array(N), - niwst = new Array(N), - rmws = out.words; - (rmws.length = N), - this.convert13b(x.words, x.length, rws, N), - this.convert13b(y.words, y.length, nrws, N), - this.transform(rws, _, rwst, iwst, N, rbt), - this.transform(nrws, _, nrwst, niwst, N, rbt); - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - (iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]), (rwst[i] = rx); - } - return ( - this.conjugate(rwst, iwst, N), - this.transform(rwst, iwst, rmws, _, N, rbt), - this.conjugate(rmws, _, N), - this.normalize13b(rmws, N), - (out.negative = x.negative ^ y.negative), - (out.length = x.length + y.length), - out.strip() - ); - }), - (BN.prototype.mul = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), this.mulTo(num, out); - }), - (BN.prototype.mulf = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), jumboMulTo(this, num, out); - }), - (BN.prototype.imul = function (num) { - return this.clone().mulTo(num, this); - }), - (BN.prototype.imuln = function (num) { - assert(typeof num == "number"), assert(num < 67108864); - for (var carry = 0, i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num, - lo = (w & 67108863) + (carry & 67108863); - (carry >>= 26), (carry += (w / 67108864) | 0), (carry += lo >>> 26), (this.words[i] = lo & 67108863); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.muln = function (num) { - return this.clone().imuln(num); - }), - (BN.prototype.sqr = function () { - return this.mul(this); - }), - (BN.prototype.isqr = function () { - return this.imul(this.clone()); - }), - (BN.prototype.pow = function (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - for (var res = this, i = 0; i < w.length && w[i] === 0; i++, res = res.sqr()); - if (++i < w.length) for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) w[i] !== 0 && (res = res.mul(q)); - return res; - }), - (BN.prototype.iushln = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26, - carryMask = (67108863 >>> (26 - r)) << (26 - r), - i; - if (r !== 0) { - var carry = 0; - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask, - c = ((this.words[i] | 0) - newCarry) << r; - (this.words[i] = c | carry), (carry = newCarry >>> (26 - r)); - } - carry && ((this.words[i] = carry), this.length++); - } - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) this.words[i + s] = this.words[i]; - for (i = 0; i < s; i++) this.words[i] = 0; - this.length += s; - } - return this.strip(); - }), - (BN.prototype.ishln = function (bits) { - return assert(this.negative === 0), this.iushln(bits); - }), - (BN.prototype.iushrn = function (bits, hint, extended) { - assert(typeof bits == "number" && bits >= 0); - var h; - hint ? (h = (hint - (hint % 26)) / 26) : (h = 0); - var r = bits % 26, - s = Math.min((bits - r) / 26, this.length), - mask = 67108863 ^ ((67108863 >>> r) << r), - maskedWords = extended; - if (((h -= s), (h = Math.max(0, h)), maskedWords)) { - for (var i = 0; i < s; i++) maskedWords.words[i] = this.words[i]; - maskedWords.length = s; - } - if (s !== 0) - if (this.length > s) for (this.length -= s, i = 0; i < this.length; i++) this.words[i] = this.words[i + s]; - else (this.words[0] = 0), (this.length = 1); - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - (this.words[i] = (carry << (26 - r)) | (word >>> r)), (carry = word & mask); - } - return ( - maskedWords && carry !== 0 && (maskedWords.words[maskedWords.length++] = carry), - this.length === 0 && ((this.words[0] = 0), (this.length = 1)), - this.strip() - ); - }), - (BN.prototype.ishrn = function (bits, hint, extended) { - return assert(this.negative === 0), this.iushrn(bits, hint, extended); - }), - (BN.prototype.shln = function (bits) { - return this.clone().ishln(bits); - }), - (BN.prototype.ushln = function (bits) { - return this.clone().iushln(bits); - }), - (BN.prototype.shrn = function (bits) { - return this.clone().ishrn(bits); - }), - (BN.prototype.ushrn = function (bits) { - return this.clone().iushrn(bits); - }), - (BN.prototype.testn = function (bit) { - assert(typeof bit == "number" && bit >= 0); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return !1; - var w = this.words[s]; - return !!(w & q); - }), - (BN.prototype.imaskn = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26; - if ((assert(this.negative === 0, "imaskn works only with positive numbers"), this.length <= s)) return this; - if ((r !== 0 && s++, (this.length = Math.min(s, this.length)), r !== 0)) { - var mask = 67108863 ^ ((67108863 >>> r) << r); - this.words[this.length - 1] &= mask; - } - return this.strip(); - }), - (BN.prototype.maskn = function (bits) { - return this.clone().imaskn(bits); - }), - (BN.prototype.iaddn = function (num) { - return ( - assert(typeof num == "number"), - assert(num < 67108864), - num < 0 - ? this.isubn(-num) - : this.negative !== 0 - ? this.length === 1 && (this.words[0] | 0) < num - ? ((this.words[0] = num - (this.words[0] | 0)), (this.negative = 0), this) - : ((this.negative = 0), this.isubn(num), (this.negative = 1), this) - : this._iaddn(num) - ); - }), - (BN.prototype._iaddn = function (num) { - this.words[0] += num; - for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) - (this.words[i] -= 67108864), i === this.length - 1 ? (this.words[i + 1] = 1) : this.words[i + 1]++; - return (this.length = Math.max(this.length, i + 1)), this; - }), - (BN.prototype.isubn = function (num) { - if ((assert(typeof num == "number"), assert(num < 67108864), num < 0)) return this.iaddn(-num); - if (this.negative !== 0) return (this.negative = 0), this.iaddn(num), (this.negative = 1), this; - if (((this.words[0] -= num), this.length === 1 && this.words[0] < 0)) - (this.words[0] = -this.words[0]), (this.negative = 1); - else - for (var i = 0; i < this.length && this.words[i] < 0; i++) - (this.words[i] += 67108864), (this.words[i + 1] -= 1); - return this.strip(); - }), - (BN.prototype.addn = function (num) { - return this.clone().iaddn(num); - }), - (BN.prototype.subn = function (num) { - return this.clone().isubn(num); - }), - (BN.prototype.iabs = function () { - return (this.negative = 0), this; - }), - (BN.prototype.abs = function () { - return this.clone().iabs(); - }), - (BN.prototype._ishlnsubmul = function (num, mul, shift) { - var len = num.length + shift, - i; - this._expand(len); - var w, - carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - (w -= right & 67108863), - (carry = (w >> 26) - ((right / 67108864) | 0)), - (this.words[i + shift] = w & 67108863); - } - for (; i < this.length - shift; i++) - (w = (this.words[i + shift] | 0) + carry), (carry = w >> 26), (this.words[i + shift] = w & 67108863); - if (carry === 0) return this.strip(); - for (assert(carry === -1), carry = 0, i = 0; i < this.length; i++) - (w = -(this.words[i] | 0) + carry), (carry = w >> 26), (this.words[i] = w & 67108863); - return (this.negative = 1), this.strip(); - }), - (BN.prototype._wordDiv = function (num, mode) { - var shift = this.length - num.length, - a = this.clone(), - b = num, - bhi = b.words[b.length - 1] | 0, - bhiBits = this._countBits(bhi); - (shift = 26 - bhiBits), - shift !== 0 && ((b = b.ushln(shift)), a.iushln(shift), (bhi = b.words[b.length - 1] | 0)); - var m = a.length - b.length, - q; - if (mode !== "mod") { - (q = new BN(null)), (q.length = m + 1), (q.words = new Array(q.length)); - for (var i = 0; i < q.length; i++) q.words[i] = 0; - } - var diff = a.clone()._ishlnsubmul(b, 1, m); - diff.negative === 0 && ((a = diff), q && (q.words[m] = 1)); - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); - for (qj = Math.min((qj / bhi) | 0, 67108863), a._ishlnsubmul(b, qj, j); a.negative !== 0; ) - qj--, (a.negative = 0), a._ishlnsubmul(b, 1, j), a.isZero() || (a.negative ^= 1); - q && (q.words[j] = qj); - } - return ( - q && q.strip(), - a.strip(), - mode !== "div" && shift !== 0 && a.iushrn(shift), - { - div: q || null, - mod: a, - } - ); - }), - (BN.prototype.divmod = function (num, mode, positive) { - if ((assert(!num.isZero()), this.isZero())) - return { - div: new BN(0), - mod: new BN(0), - }; - var div, mod, res; - return this.negative !== 0 && num.negative === 0 - ? ((res = this.neg().divmod(num, mode)), - mode !== "mod" && (div = res.div.neg()), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.iadd(num)), - { - div, - mod, - }) - : this.negative === 0 && num.negative !== 0 - ? ((res = this.divmod(num.neg(), mode)), - mode !== "mod" && (div = res.div.neg()), - { - div, - mod: res.mod, - }) - : (this.negative & num.negative) !== 0 - ? ((res = this.neg().divmod(num.neg(), mode)), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.isub(num)), - { - div: res.div, - mod, - }) - : num.length > this.length || this.cmp(num) < 0 - ? { - div: new BN(0), - mod: this, - } - : num.length === 1 - ? mode === "div" - ? { - div: this.divn(num.words[0]), - mod: null, - } - : mode === "mod" - ? { - div: null, - mod: new BN(this.modn(num.words[0])), - } - : { - div: this.divn(num.words[0]), - mod: new BN(this.modn(num.words[0])), - } - : this._wordDiv(num, mode); - }), - (BN.prototype.div = function (num) { - return this.divmod(num, "div", !1).div; - }), - (BN.prototype.mod = function (num) { - return this.divmod(num, "mod", !1).mod; - }), - (BN.prototype.umod = function (num) { - return this.divmod(num, "mod", !0).mod; - }), - (BN.prototype.divRound = function (num) { - var dm = this.divmod(num); - if (dm.mod.isZero()) return dm.div; - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod, - half = num.ushrn(1), - r2 = num.andln(1), - cmp = mod.cmp(half); - return cmp < 0 || (r2 === 1 && cmp === 0) - ? dm.div - : dm.div.negative !== 0 - ? dm.div.isubn(1) - : dm.div.iaddn(1); - }), - (BN.prototype.modn = function (num) { - assert(num <= 67108863); - for (var p = (1 << 26) % num, acc = 0, i = this.length - 1; i >= 0; i--) - acc = (p * acc + (this.words[i] | 0)) % num; - return acc; - }), - (BN.prototype.idivn = function (num) { - assert(num <= 67108863); - for (var carry = 0, i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 67108864; - (this.words[i] = (w / num) | 0), (carry = w % num); - } - return this.strip(); - }), - (BN.prototype.divn = function (num) { - return this.clone().idivn(num); - }), - (BN.prototype.egcd = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var x = this, - y = p.clone(); - x.negative !== 0 ? (x = x.umod(p)) : (x = x.clone()); - for (var A = new BN(1), B = new BN(0), C = new BN(0), D = new BN(1), g = 0; x.isEven() && y.isEven(); ) - x.iushrn(1), y.iushrn(1), ++g; - for (var yp = y.clone(), xp = x.clone(); !x.isZero(); ) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) - for (x.iushrn(i); i-- > 0; ) - (A.isOdd() || B.isOdd()) && (A.iadd(yp), B.isub(xp)), A.iushrn(1), B.iushrn(1); - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) - for (y.iushrn(j); j-- > 0; ) - (C.isOdd() || D.isOdd()) && (C.iadd(yp), D.isub(xp)), C.iushrn(1), D.iushrn(1); - x.cmp(y) >= 0 ? (x.isub(y), A.isub(C), B.isub(D)) : (y.isub(x), C.isub(A), D.isub(B)); - } - return { - a: C, - b: D, - gcd: y.iushln(g), - }; - }), - (BN.prototype._invmp = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var a = this, - b = p.clone(); - a.negative !== 0 ? (a = a.umod(p)) : (a = a.clone()); - for (var x1 = new BN(1), x2 = new BN(0), delta = b.clone(); a.cmpn(1) > 0 && b.cmpn(1) > 0; ) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) for (a.iushrn(i); i-- > 0; ) x1.isOdd() && x1.iadd(delta), x1.iushrn(1); - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) for (b.iushrn(j); j-- > 0; ) x2.isOdd() && x2.iadd(delta), x2.iushrn(1); - a.cmp(b) >= 0 ? (a.isub(b), x1.isub(x2)) : (b.isub(a), x2.isub(x1)); - } - var res; - return a.cmpn(1) === 0 ? (res = x1) : (res = x2), res.cmpn(0) < 0 && res.iadd(p), res; - }), - (BN.prototype.gcd = function (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - var a = this.clone(), - b = num.clone(); - (a.negative = 0), (b.negative = 0); - for (var shift = 0; a.isEven() && b.isEven(); shift++) a.iushrn(1), b.iushrn(1); - do { - for (; a.isEven(); ) a.iushrn(1); - for (; b.isEven(); ) b.iushrn(1); - var r = a.cmp(b); - if (r < 0) { - var t = a; - (a = b), (b = t); - } else if (r === 0 || b.cmpn(1) === 0) break; - a.isub(b); - } while (!0); - return b.iushln(shift); - }), - (BN.prototype.invm = function (num) { - return this.egcd(num).a.umod(num); - }), - (BN.prototype.isEven = function () { - return (this.words[0] & 1) === 0; - }), - (BN.prototype.isOdd = function () { - return (this.words[0] & 1) === 1; - }), - (BN.prototype.andln = function (num) { - return this.words[0] & num; - }), - (BN.prototype.bincn = function (bit) { - assert(typeof bit == "number"); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return this._expand(s + 1), (this.words[s] |= q), this; - for (var carry = q, i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - (w += carry), (carry = w >>> 26), (w &= 67108863), (this.words[i] = w); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.isZero = function () { - return this.length === 1 && this.words[0] === 0; - }), - (BN.prototype.cmpn = function (num) { - var negative = num < 0; - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - this.strip(); - var res; - if (this.length > 1) res = 1; - else { - negative && (num = -num), assert(num <= 67108863, "Number is too big"); - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.cmp = function (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - var res = this.ucmp(num); - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.ucmp = function (num) { - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - for (var res = 0, i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0, - b = num.words[i] | 0; - if (a !== b) { - a < b ? (res = -1) : a > b && (res = 1); - break; - } - } - return res; - }), - (BN.prototype.gtn = function (num) { - return this.cmpn(num) === 1; - }), - (BN.prototype.gt = function (num) { - return this.cmp(num) === 1; - }), - (BN.prototype.gten = function (num) { - return this.cmpn(num) >= 0; - }), - (BN.prototype.gte = function (num) { - return this.cmp(num) >= 0; - }), - (BN.prototype.ltn = function (num) { - return this.cmpn(num) === -1; - }), - (BN.prototype.lt = function (num) { - return this.cmp(num) === -1; - }), - (BN.prototype.lten = function (num) { - return this.cmpn(num) <= 0; - }), - (BN.prototype.lte = function (num) { - return this.cmp(num) <= 0; - }), - (BN.prototype.eqn = function (num) { - return this.cmpn(num) === 0; - }), - (BN.prototype.eq = function (num) { - return this.cmp(num) === 0; - }), - (BN.red = function (num) { - return new Red(num); - }), - (BN.prototype.toRed = function (ctx) { - return ( - assert(!this.red, "Already a number in reduction context"), - assert(this.negative === 0, "red works only with positives"), - ctx.convertTo(this)._forceRed(ctx) - ); - }), - (BN.prototype.fromRed = function () { - return assert(this.red, "fromRed works only with numbers in reduction context"), this.red.convertFrom(this); - }), - (BN.prototype._forceRed = function (ctx) { - return (this.red = ctx), this; - }), - (BN.prototype.forceRed = function (ctx) { - return assert(!this.red, "Already a number in reduction context"), this._forceRed(ctx); - }), - (BN.prototype.redAdd = function (num) { - return assert(this.red, "redAdd works only with red numbers"), this.red.add(this, num); - }), - (BN.prototype.redIAdd = function (num) { - return assert(this.red, "redIAdd works only with red numbers"), this.red.iadd(this, num); - }), - (BN.prototype.redSub = function (num) { - return assert(this.red, "redSub works only with red numbers"), this.red.sub(this, num); - }), - (BN.prototype.redISub = function (num) { - return assert(this.red, "redISub works only with red numbers"), this.red.isub(this, num); - }), - (BN.prototype.redShl = function (num) { - return assert(this.red, "redShl works only with red numbers"), this.red.shl(this, num); - }), - (BN.prototype.redMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.mul(this, num) - ); - }), - (BN.prototype.redIMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.imul(this, num) - ); - }), - (BN.prototype.redSqr = function () { - return assert(this.red, "redSqr works only with red numbers"), this.red._verify1(this), this.red.sqr(this); - }), - (BN.prototype.redISqr = function () { - return assert(this.red, "redISqr works only with red numbers"), this.red._verify1(this), this.red.isqr(this); - }), - (BN.prototype.redSqrt = function () { - return assert(this.red, "redSqrt works only with red numbers"), this.red._verify1(this), this.red.sqrt(this); - }), - (BN.prototype.redInvm = function () { - return assert(this.red, "redInvm works only with red numbers"), this.red._verify1(this), this.red.invm(this); - }), - (BN.prototype.redNeg = function () { - return assert(this.red, "redNeg works only with red numbers"), this.red._verify1(this), this.red.neg(this); - }), - (BN.prototype.redPow = function (num) { - return assert(this.red && !num.red, "redPow(normalNum)"), this.red._verify1(this), this.red.pow(this, num); - }); - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null, - }; - function MPrime(name, p) { - (this.name = name), - (this.p = new BN(p, 16)), - (this.n = this.p.bitLength()), - (this.k = new BN(1).iushln(this.n).isub(this.p)), - (this.tmp = this._tmp()); - } - (MPrime.prototype._tmp = function () { - var tmp = new BN(null); - return (tmp.words = new Array(Math.ceil(this.n / 13))), tmp; - }), - (MPrime.prototype.ireduce = function (num) { - var r = num, - rlen; - do this.split(r, this.tmp), (r = this.imulK(r)), (r = r.iadd(this.tmp)), (rlen = r.bitLength()); - while (rlen > this.n); - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - return ( - cmp === 0 - ? ((r.words[0] = 0), (r.length = 1)) - : cmp > 0 - ? r.isub(this.p) - : r.strip !== void 0 - ? r.strip() - : r._strip(), - r - ); - }), - (MPrime.prototype.split = function (input, out) { - input.iushrn(this.n, 0, out); - }), - (MPrime.prototype.imulK = function (num) { - return num.imul(this.k); - }); - function K256() { - MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f"); - } - inherits(K256, MPrime), - (K256.prototype.split = function (input, output) { - for (var mask = 4194303, outLen = Math.min(input.length, 9), i = 0; i < outLen; i++) - output.words[i] = input.words[i]; - if (((output.length = outLen), input.length <= 9)) { - (input.words[0] = 0), (input.length = 1); - return; - } - var prev = input.words[9]; - for (output.words[output.length++] = prev & mask, i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - (input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22)), (prev = next); - } - (prev >>>= 22), - (input.words[i - 10] = prev), - prev === 0 && input.length > 10 ? (input.length -= 10) : (input.length -= 9); - }), - (K256.prototype.imulK = function (num) { - (num.words[num.length] = 0), (num.words[num.length + 1] = 0), (num.length += 2); - for (var lo = 0, i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - (lo += w * 977), (num.words[i] = lo & 67108863), (lo = w * 64 + ((lo / 67108864) | 0)); - } - return ( - num.words[num.length - 1] === 0 && (num.length--, num.words[num.length - 1] === 0 && num.length--), num - ); - }); - function P224() { - MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001"); - } - inherits(P224, MPrime); - function P192() { - MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff"); - } - inherits(P192, MPrime); - function P25519() { - MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed"); - } - inherits(P25519, MPrime), - (P25519.prototype.imulK = function (num) { - for (var carry = 0, i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 19 + carry, - lo = hi & 67108863; - (hi >>>= 26), (num.words[i] = lo), (carry = hi); - } - return carry !== 0 && (num.words[num.length++] = carry), num; - }), - (BN._prime = function (name) { - if (primes[name]) return primes[name]; - var prime2; - if (name === "k256") prime2 = new K256(); - else if (name === "p224") prime2 = new P224(); - else if (name === "p192") prime2 = new P192(); - else if (name === "p25519") prime2 = new P25519(); - else throw new Error("Unknown prime " + name); - return (primes[name] = prime2), prime2; - }); - function Red(m) { - if (typeof m == "string") { - var prime = BN._prime(m); - (this.m = prime.p), (this.prime = prime); - } else assert(m.gtn(1), "modulus must be greater than 1"), (this.m = m), (this.prime = null); - } - (Red.prototype._verify1 = function (a) { - assert(a.negative === 0, "red works only with positives"), assert(a.red, "red works only with red numbers"); - }), - (Red.prototype._verify2 = function (a, b) { - assert((a.negative | b.negative) === 0, "red works only with positives"), - assert(a.red && a.red === b.red, "red works only with red numbers"); - }), - (Red.prototype.imod = function (a) { - return this.prime ? this.prime.ireduce(a)._forceRed(this) : a.umod(this.m)._forceRed(this); - }), - (Red.prototype.neg = function (a) { - return a.isZero() ? a.clone() : this.m.sub(a)._forceRed(this); - }), - (Red.prototype.add = function (a, b) { - this._verify2(a, b); - var res = a.add(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res._forceRed(this); - }), - (Red.prototype.iadd = function (a, b) { - this._verify2(a, b); - var res = a.iadd(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res; - }), - (Red.prototype.sub = function (a, b) { - this._verify2(a, b); - var res = a.sub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res._forceRed(this); - }), - (Red.prototype.isub = function (a, b) { - this._verify2(a, b); - var res = a.isub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res; - }), - (Red.prototype.shl = function (a, num) { - return this._verify1(a), this.imod(a.ushln(num)); - }), - (Red.prototype.imul = function (a, b) { - return this._verify2(a, b), this.imod(a.imul(b)); - }), - (Red.prototype.mul = function (a, b) { - return this._verify2(a, b), this.imod(a.mul(b)); - }), - (Red.prototype.isqr = function (a) { - return this.imul(a, a.clone()); - }), - (Red.prototype.sqr = function (a) { - return this.mul(a, a); - }), - (Red.prototype.sqrt = function (a) { - if (a.isZero()) return a.clone(); - var mod3 = this.m.andln(3); - if ((assert(mod3 % 2 === 1), mod3 === 3)) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - for (var q = this.m.subn(1), s = 0; !q.isZero() && q.andln(1) === 0; ) s++, q.iushrn(1); - assert(!q.isZero()); - var one = new BN(1).toRed(this), - nOne = one.redNeg(), - lpow = this.m.subn(1).iushrn(1), - z = this.m.bitLength(); - for (z = new BN(2 * z * z).toRed(this); this.pow(z, lpow).cmp(nOne) !== 0; ) z.redIAdd(nOne); - for ( - var c = this.pow(z, q), r = this.pow(a, q.addn(1).iushrn(1)), t = this.pow(a, q), m = s; - t.cmp(one) !== 0; - - ) { - for (var tmp = t, i = 0; tmp.cmp(one) !== 0; i++) tmp = tmp.redSqr(); - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - (r = r.redMul(b)), (c = b.redSqr()), (t = t.redMul(c)), (m = i); - } - return r; - }), - (Red.prototype.invm = function (a) { - var inv = a._invmp(this.m); - return inv.negative !== 0 ? ((inv.negative = 0), this.imod(inv).redNeg()) : this.imod(inv); - }), - (Red.prototype.pow = function (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - var windowSize = 4, - wnd = new Array(1 << windowSize); - (wnd[0] = new BN(1).toRed(this)), (wnd[1] = a); - for (var i = 2; i < wnd.length; i++) wnd[i] = this.mul(wnd[i - 1], a); - var res = wnd[0], - current = 0, - currentLen = 0, - start = num.bitLength() % 26; - for (start === 0 && (start = 26), i = num.length - 1; i >= 0; i--) { - for (var word = num.words[i], j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if ((res !== wnd[0] && (res = this.sqr(res)), bit === 0 && current === 0)) { - currentLen = 0; - continue; - } - (current <<= 1), - (current |= bit), - currentLen++, - !(currentLen !== windowSize && (i !== 0 || j !== 0)) && - ((res = this.mul(res, wnd[current])), (currentLen = 0), (current = 0)); - } - start = 26; - } - return res; - }), - (Red.prototype.convertTo = function (num) { - var r = num.umod(this.m); - return r === num ? r.clone() : r; - }), - (Red.prototype.convertFrom = function (num) { - var res = num.clone(); - return (res.red = null), res; - }), - (BN.mont = function (num) { - return new Mont(num); - }); - function Mont(m) { - Red.call(this, m), - (this.shift = this.m.bitLength()), - this.shift % 26 !== 0 && (this.shift += 26 - (this.shift % 26)), - (this.r = new BN(1).iushln(this.shift)), - (this.r2 = this.imod(this.r.sqr())), - (this.rinv = this.r._invmp(this.m)), - (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), - (this.minv = this.minv.umod(this.r)), - (this.minv = this.r.sub(this.minv)); - } - inherits(Mont, Red), - (Mont.prototype.convertTo = function (num) { - return this.imod(num.ushln(this.shift)); - }), - (Mont.prototype.convertFrom = function (num) { - var r = this.imod(num.mul(this.rinv)); - return (r.red = null), r; - }), - (Mont.prototype.imul = function (a, b) { - if (a.isZero() || b.isZero()) return (a.words[0] = 0), (a.length = 1), a; - var t = a.imul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.mul = function (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - var t = a.mul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.invm = function (a) { - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }); - })(typeof module > "u" || module, exports); - }, -}); - -// node_modules/minimalistic-crypto-utils/lib/utils.js -var require_utils2 = __commonJS({ - "node_modules/minimalistic-crypto-utils/lib/utils.js"(exports) { - "use strict"; - var utils = exports; - function toArray(msg, enc) { - if (Array.isArray(msg)) return msg.slice(); - if (!msg) return []; - var res = []; - if (typeof msg != "string") { - for (var i = 0; i < msg.length; i++) res[i] = msg[i] | 0; - return res; - } - if (enc === "hex") { - (msg = msg.replace(/[^a-z0-9]+/gi, "")), msg.length % 2 !== 0 && (msg = "0" + msg); - for (var i = 0; i < msg.length; i += 2) res.push(parseInt(msg[i] + msg[i + 1], 16)); - } else - for (var i = 0; i < msg.length; i++) { - var c = msg.charCodeAt(i), - hi = c >> 8, - lo = c & 255; - hi ? res.push(hi, lo) : res.push(lo); - } - return res; - } - utils.toArray = toArray; - function zero2(word) { - return word.length === 1 ? "0" + word : word; - } - utils.zero2 = zero2; - function toHex(msg) { - for (var res = "", i = 0; i < msg.length; i++) res += zero2(msg[i].toString(16)); - return res; - } - utils.toHex = toHex; - utils.encode = function (arr, enc) { - return enc === "hex" ? toHex(arr) : arr; - }; - }, -}); - -// node_modules/elliptic/lib/elliptic/utils.js -var require_utils3 = __commonJS({ - "node_modules/elliptic/lib/elliptic/utils.js"(exports) { - "use strict"; - var utils = exports, - BN = require_bn4(), - minAssert = require_minimalistic_assert(), - minUtils = require_utils2(); - utils.assert = minAssert; - utils.toArray = minUtils.toArray; - utils.zero2 = minUtils.zero2; - utils.toHex = minUtils.toHex; - utils.encode = minUtils.encode; - function getNAF(num, w, bits) { - var naf = new Array(Math.max(num.bitLength(), bits) + 1); - naf.fill(0); - for (var ws = 1 << (w + 1), k = num.clone(), i = 0; i < naf.length; i++) { - var z, - mod = k.andln(ws - 1); - k.isOdd() ? (mod > (ws >> 1) - 1 ? (z = (ws >> 1) - mod) : (z = mod), k.isubn(z)) : (z = 0), - (naf[i] = z), - k.iushrn(1); - } - return naf; - } - utils.getNAF = getNAF; - function getJSF(k1, k2) { - var jsf = [[], []]; - (k1 = k1.clone()), (k2 = k2.clone()); - for (var d1 = 0, d2 = 0, m8; k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0; ) { - var m14 = (k1.andln(3) + d1) & 3, - m24 = (k2.andln(3) + d2) & 3; - m14 === 3 && (m14 = -1), m24 === 3 && (m24 = -1); - var u1; - (m14 & 1) === 0 - ? (u1 = 0) - : ((m8 = (k1.andln(7) + d1) & 7), (m8 === 3 || m8 === 5) && m24 === 2 ? (u1 = -m14) : (u1 = m14)), - jsf[0].push(u1); - var u2; - (m24 & 1) === 0 - ? (u2 = 0) - : ((m8 = (k2.andln(7) + d2) & 7), (m8 === 3 || m8 === 5) && m14 === 2 ? (u2 = -m24) : (u2 = m24)), - jsf[1].push(u2), - 2 * d1 === u1 + 1 && (d1 = 1 - d1), - 2 * d2 === u2 + 1 && (d2 = 1 - d2), - k1.iushrn(1), - k2.iushrn(1); - } - return jsf; - } - utils.getJSF = getJSF; - function cachedProperty(obj, name, computer) { - var key = "_" + name; - obj.prototype[name] = function () { - return this[key] !== void 0 ? this[key] : (this[key] = computer.call(this)); - }; - } - utils.cachedProperty = cachedProperty; - function parseBytes(bytes) { - return typeof bytes == "string" ? utils.toArray(bytes, "hex") : bytes; - } - utils.parseBytes = parseBytes; - function intFromLE(bytes) { - return new BN(bytes, "hex", "le"); - } - utils.intFromLE = intFromLE; - }, -}); - -// node_modules/elliptic/lib/elliptic/curve/base.js -var require_base = __commonJS({ - "node_modules/elliptic/lib/elliptic/curve/base.js"(exports, module) { - "use strict"; - var BN = require_bn4(), - utils = require_utils3(), - getNAF = utils.getNAF, - getJSF = utils.getJSF, - assert = utils.assert; - function BaseCurve(type, conf) { - (this.type = type), - (this.p = new BN(conf.p, 16)), - (this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p)), - (this.zero = new BN(0).toRed(this.red)), - (this.one = new BN(1).toRed(this.red)), - (this.two = new BN(2).toRed(this.red)), - (this.n = conf.n && new BN(conf.n, 16)), - (this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed)), - (this._wnafT1 = new Array(4)), - (this._wnafT2 = new Array(4)), - (this._wnafT3 = new Array(4)), - (this._wnafT4 = new Array(4)), - (this._bitLength = this.n ? this.n.bitLength() : 0); - var adjustCount = this.n && this.p.div(this.n); - !adjustCount || adjustCount.cmpn(100) > 0 - ? (this.redN = null) - : ((this._maxwellTrick = !0), (this.redN = this.n.toRed(this.red))); - } - module.exports = BaseCurve; - BaseCurve.prototype.point = function () { - throw new Error("Not implemented"); - }; - BaseCurve.prototype.validate = function () { - throw new Error("Not implemented"); - }; - BaseCurve.prototype._fixedNafMul = function (p, k) { - assert(p.precomputed); - var doubles = p._getDoubles(), - naf = getNAF(k, 1, this._bitLength), - I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1); - I /= 3; - var repr = [], - j, - nafW; - for (j = 0; j < naf.length; j += doubles.step) { - nafW = 0; - for (var l = j + doubles.step - 1; l >= j; l--) nafW = (nafW << 1) + naf[l]; - repr.push(nafW); - } - for (var a = this.jpoint(null, null, null), b = this.jpoint(null, null, null), i = I; i > 0; i--) { - for (j = 0; j < repr.length; j++) - (nafW = repr[j]), - nafW === i ? (b = b.mixedAdd(doubles.points[j])) : nafW === -i && (b = b.mixedAdd(doubles.points[j].neg())); - a = a.add(b); - } - return a.toP(); - }; - BaseCurve.prototype._wnafMul = function (p, k) { - var w = 4, - nafPoints = p._getNAFPoints(w); - w = nafPoints.wnd; - for ( - var wnd = nafPoints.points, - naf = getNAF(k, w, this._bitLength), - acc = this.jpoint(null, null, null), - i = naf.length - 1; - i >= 0; - i-- - ) { - for (var l = 0; i >= 0 && naf[i] === 0; i--) l++; - if ((i >= 0 && l++, (acc = acc.dblp(l)), i < 0)) break; - var z = naf[i]; - assert(z !== 0), - p.type === "affine" - ? z > 0 - ? (acc = acc.mixedAdd(wnd[(z - 1) >> 1])) - : (acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg())) - : z > 0 - ? (acc = acc.add(wnd[(z - 1) >> 1])) - : (acc = acc.add(wnd[(-z - 1) >> 1].neg())); - } - return p.type === "affine" ? acc.toP() : acc; - }; - BaseCurve.prototype._wnafMulAdd = function (defW, points, coeffs, len, jacobianResult) { - var wndWidth = this._wnafT1, - wnd = this._wnafT2, - naf = this._wnafT3, - max = 0, - i, - j, - p; - for (i = 0; i < len; i++) { - p = points[i]; - var nafPoints = p._getNAFPoints(defW); - (wndWidth[i] = nafPoints.wnd), (wnd[i] = nafPoints.points); - } - for (i = len - 1; i >= 1; i -= 2) { - var a = i - 1, - b = i; - if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { - (naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength)), - (naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength)), - (max = Math.max(naf[a].length, max)), - (max = Math.max(naf[b].length, max)); - continue; - } - var comb = [points[a], null, null, points[b]]; - points[a].y.cmp(points[b].y) === 0 - ? ((comb[1] = points[a].add(points[b])), (comb[2] = points[a].toJ().mixedAdd(points[b].neg()))) - : points[a].y.cmp(points[b].y.redNeg()) === 0 - ? ((comb[1] = points[a].toJ().mixedAdd(points[b])), (comb[2] = points[a].add(points[b].neg()))) - : ((comb[1] = points[a].toJ().mixedAdd(points[b])), (comb[2] = points[a].toJ().mixedAdd(points[b].neg()))); - var index = [-3, -1, -5, -7, 0, 7, 5, 1, 3], - jsf = getJSF(coeffs[a], coeffs[b]); - for ( - max = Math.max(jsf[0].length, max), naf[a] = new Array(max), naf[b] = new Array(max), j = 0; - j < max; - j++ - ) { - var ja = jsf[0][j] | 0, - jb = jsf[1][j] | 0; - (naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]), (naf[b][j] = 0), (wnd[a] = comb); - } - } - var acc = this.jpoint(null, null, null), - tmp = this._wnafT4; - for (i = max; i >= 0; i--) { - for (var k = 0; i >= 0; ) { - var zero = !0; - for (j = 0; j < len; j++) (tmp[j] = naf[j][i] | 0), tmp[j] !== 0 && (zero = !1); - if (!zero) break; - k++, i--; - } - if ((i >= 0 && k++, (acc = acc.dblp(k)), i < 0)) break; - for (j = 0; j < len; j++) { - var z = tmp[j]; - z !== 0 && - (z > 0 ? (p = wnd[j][(z - 1) >> 1]) : z < 0 && (p = wnd[j][(-z - 1) >> 1].neg()), - p.type === "affine" ? (acc = acc.mixedAdd(p)) : (acc = acc.add(p))); - } - } - for (i = 0; i < len; i++) wnd[i] = null; - return jacobianResult ? acc : acc.toP(); - }; - function BasePoint(curve, type) { - (this.curve = curve), (this.type = type), (this.precomputed = null); - } - BaseCurve.BasePoint = BasePoint; - BasePoint.prototype.eq = function () { - throw new Error("Not implemented"); - }; - BasePoint.prototype.validate = function () { - return this.curve.validate(this); - }; - BaseCurve.prototype.decodePoint = function (bytes, enc) { - bytes = utils.toArray(bytes, enc); - var len = this.p.byteLength(); - if ((bytes[0] === 4 || bytes[0] === 6 || bytes[0] === 7) && bytes.length - 1 === 2 * len) { - bytes[0] === 6 - ? assert(bytes[bytes.length - 1] % 2 === 0) - : bytes[0] === 7 && assert(bytes[bytes.length - 1] % 2 === 1); - var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len)); - return res; - } else if ((bytes[0] === 2 || bytes[0] === 3) && bytes.length - 1 === len) - return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 3); - throw new Error("Unknown point format"); - }; - BasePoint.prototype.encodeCompressed = function (enc) { - return this.encode(enc, !0); - }; - BasePoint.prototype._encode = function (compact) { - var len = this.curve.p.byteLength(), - x = this.getX().toArray("be", len); - return compact ? [this.getY().isEven() ? 2 : 3].concat(x) : [4].concat(x, this.getY().toArray("be", len)); - }; - BasePoint.prototype.encode = function (enc, compact) { - return utils.encode(this._encode(compact), enc); - }; - BasePoint.prototype.precompute = function (power) { - if (this.precomputed) return this; - var precomputed = { - doubles: null, - naf: null, - beta: null, - }; - return ( - (precomputed.naf = this._getNAFPoints(8)), - (precomputed.doubles = this._getDoubles(4, power)), - (precomputed.beta = this._getBeta()), - (this.precomputed = precomputed), - this - ); - }; - BasePoint.prototype._hasDoubles = function (k) { - if (!this.precomputed) return !1; - var doubles = this.precomputed.doubles; - return doubles ? doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step) : !1; - }; - BasePoint.prototype._getDoubles = function (step, power) { - if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles; - for (var doubles = [this], acc = this, i = 0; i < power; i += step) { - for (var j = 0; j < step; j++) acc = acc.dbl(); - doubles.push(acc); - } - return { - step, - points: doubles, - }; - }; - BasePoint.prototype._getNAFPoints = function (wnd) { - if (this.precomputed && this.precomputed.naf) return this.precomputed.naf; - for (var res = [this], max = (1 << wnd) - 1, dbl = max === 1 ? null : this.dbl(), i = 1; i < max; i++) - res[i] = res[i - 1].add(dbl); - return { - wnd, - points: res, - }; - }; - BasePoint.prototype._getBeta = function () { - return null; - }; - BasePoint.prototype.dblp = function (k) { - for (var r = this, i = 0; i < k; i++) r = r.dbl(); - return r; - }; - }, -}); - -// node_modules/elliptic/lib/elliptic/curve/short.js -var require_short = __commonJS({ - "node_modules/elliptic/lib/elliptic/curve/short.js"(exports, module) { - "use strict"; - var utils = require_utils3(), - BN = require_bn4(), - inherits = require_inherits_browser(), - Base = require_base(), - assert = utils.assert; - function ShortCurve(conf) { - Base.call(this, "short", conf), - (this.a = new BN(conf.a, 16).toRed(this.red)), - (this.b = new BN(conf.b, 16).toRed(this.red)), - (this.tinv = this.two.redInvm()), - (this.zeroA = this.a.fromRed().cmpn(0) === 0), - (this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0), - (this.endo = this._getEndomorphism(conf)), - (this._endoWnafT1 = new Array(4)), - (this._endoWnafT2 = new Array(4)); - } - inherits(ShortCurve, Base); - module.exports = ShortCurve; - ShortCurve.prototype._getEndomorphism = function (conf) { - if (!(!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)) { - var beta, lambda; - if (conf.beta) beta = new BN(conf.beta, 16).toRed(this.red); - else { - var betas = this._getEndoRoots(this.p); - (beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]), (beta = beta.toRed(this.red)); - } - if (conf.lambda) lambda = new BN(conf.lambda, 16); - else { - var lambdas = this._getEndoRoots(this.n); - this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0 - ? (lambda = lambdas[0]) - : ((lambda = lambdas[1]), assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0)); - } - var basis; - return ( - conf.basis - ? (basis = conf.basis.map(function (vec) { - return { - a: new BN(vec.a, 16), - b: new BN(vec.b, 16), - }; - })) - : (basis = this._getEndoBasis(lambda)), - { - beta, - lambda, - basis, - } - ); - } - }; - ShortCurve.prototype._getEndoRoots = function (num) { - var red = num === this.p ? this.red : BN.mont(num), - tinv = new BN(2).toRed(red).redInvm(), - ntinv = tinv.redNeg(), - s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv), - l1 = ntinv.redAdd(s).fromRed(), - l2 = ntinv.redSub(s).fromRed(); - return [l1, l2]; - }; - ShortCurve.prototype._getEndoBasis = function (lambda) { - for ( - var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)), - u = lambda, - v = this.n.clone(), - x1 = new BN(1), - y1 = new BN(0), - x2 = new BN(0), - y2 = new BN(1), - a0, - b0, - a1, - b1, - a2, - b2, - prevR, - i = 0, - r, - x; - u.cmpn(0) !== 0; - - ) { - var q = v.div(u); - (r = v.sub(q.mul(u))), (x = x2.sub(q.mul(x1))); - var y = y2.sub(q.mul(y1)); - if (!a1 && r.cmp(aprxSqrt) < 0) (a0 = prevR.neg()), (b0 = x1), (a1 = r.neg()), (b1 = x); - else if (a1 && ++i === 2) break; - (prevR = r), (v = u), (u = r), (x2 = x1), (x1 = x), (y2 = y1), (y1 = y); - } - (a2 = r.neg()), (b2 = x); - var len1 = a1.sqr().add(b1.sqr()), - len2 = a2.sqr().add(b2.sqr()); - return ( - len2.cmp(len1) >= 0 && ((a2 = a0), (b2 = b0)), - a1.negative && ((a1 = a1.neg()), (b1 = b1.neg())), - a2.negative && ((a2 = a2.neg()), (b2 = b2.neg())), - [ - { a: a1, b: b1 }, - { a: a2, b: b2 }, - ] - ); - }; - ShortCurve.prototype._endoSplit = function (k) { - var basis = this.endo.basis, - v1 = basis[0], - v2 = basis[1], - c1 = v2.b.mul(k).divRound(this.n), - c2 = v1.b.neg().mul(k).divRound(this.n), - p1 = c1.mul(v1.a), - p2 = c2.mul(v2.a), - q1 = c1.mul(v1.b), - q2 = c2.mul(v2.b), - k1 = k.sub(p1).sub(p2), - k2 = q1.add(q2).neg(); - return { k1, k2 }; - }; - ShortCurve.prototype.pointFromX = function (x, odd) { - (x = new BN(x, 16)), x.red || (x = x.toRed(this.red)); - var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b), - y = y2.redSqrt(); - if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error("invalid point"); - var isOdd = y.fromRed().isOdd(); - return ((odd && !isOdd) || (!odd && isOdd)) && (y = y.redNeg()), this.point(x, y); - }; - ShortCurve.prototype.validate = function (point) { - if (point.inf) return !0; - var x = point.x, - y = point.y, - ax = this.a.redMul(x), - rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); - return y.redSqr().redISub(rhs).cmpn(0) === 0; - }; - ShortCurve.prototype._endoWnafMulAdd = function (points, coeffs, jacobianResult) { - for (var npoints = this._endoWnafT1, ncoeffs = this._endoWnafT2, i = 0; i < points.length; i++) { - var split = this._endoSplit(coeffs[i]), - p = points[i], - beta = p._getBeta(); - split.k1.negative && (split.k1.ineg(), (p = p.neg(!0))), - split.k2.negative && (split.k2.ineg(), (beta = beta.neg(!0))), - (npoints[i * 2] = p), - (npoints[i * 2 + 1] = beta), - (ncoeffs[i * 2] = split.k1), - (ncoeffs[i * 2 + 1] = split.k2); - } - for (var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult), j = 0; j < i * 2; j++) - (npoints[j] = null), (ncoeffs[j] = null); - return res; - }; - function Point(curve, x, y, isRed) { - Base.BasePoint.call(this, curve, "affine"), - x === null && y === null - ? ((this.x = null), (this.y = null), (this.inf = !0)) - : ((this.x = new BN(x, 16)), - (this.y = new BN(y, 16)), - isRed && (this.x.forceRed(this.curve.red), this.y.forceRed(this.curve.red)), - this.x.red || (this.x = this.x.toRed(this.curve.red)), - this.y.red || (this.y = this.y.toRed(this.curve.red)), - (this.inf = !1)); - } - inherits(Point, Base.BasePoint); - ShortCurve.prototype.point = function (x, y, isRed) { - return new Point(this, x, y, isRed); - }; - ShortCurve.prototype.pointFromJSON = function (obj, red) { - return Point.fromJSON(this, obj, red); - }; - Point.prototype._getBeta = function () { - if (!!this.curve.endo) { - var pre = this.precomputed; - if (pre && pre.beta) return pre.beta; - var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); - if (pre) { - var curve = this.curve, - endoMul = function (p) { - return curve.point(p.x.redMul(curve.endo.beta), p.y); - }; - (pre.beta = beta), - (beta.precomputed = { - beta: null, - naf: pre.naf && { - wnd: pre.naf.wnd, - points: pre.naf.points.map(endoMul), - }, - doubles: pre.doubles && { - step: pre.doubles.step, - points: pre.doubles.points.map(endoMul), - }, - }); - } - return beta; - } - }; - Point.prototype.toJSON = function () { - return this.precomputed - ? [ - this.x, - this.y, - this.precomputed && { - doubles: this.precomputed.doubles && { - step: this.precomputed.doubles.step, - points: this.precomputed.doubles.points.slice(1), - }, - naf: this.precomputed.naf && { - wnd: this.precomputed.naf.wnd, - points: this.precomputed.naf.points.slice(1), - }, - }, - ] - : [this.x, this.y]; - }; - Point.fromJSON = function (curve, obj, red) { - typeof obj == "string" && (obj = JSON.parse(obj)); - var res = curve.point(obj[0], obj[1], red); - if (!obj[2]) return res; - function obj2point(obj2) { - return curve.point(obj2[0], obj2[1], red); - } - var pre = obj[2]; - return ( - (res.precomputed = { - beta: null, - doubles: pre.doubles && { - step: pre.doubles.step, - points: [res].concat(pre.doubles.points.map(obj2point)), - }, - naf: pre.naf && { - wnd: pre.naf.wnd, - points: [res].concat(pre.naf.points.map(obj2point)), - }, - }), - res - ); - }; - Point.prototype.inspect = function () { - return this.isInfinity() - ? "<EC Point Infinity>" - : "<EC Point x: " + this.x.fromRed().toString(16, 2) + " y: " + this.y.fromRed().toString(16, 2) + ">"; - }; - Point.prototype.isInfinity = function () { - return this.inf; - }; - Point.prototype.add = function (p) { - if (this.inf) return p; - if (p.inf) return this; - if (this.eq(p)) return this.dbl(); - if (this.neg().eq(p)) return this.curve.point(null, null); - if (this.x.cmp(p.x) === 0) return this.curve.point(null, null); - var c = this.y.redSub(p.y); - c.cmpn(0) !== 0 && (c = c.redMul(this.x.redSub(p.x).redInvm())); - var nx = c.redSqr().redISub(this.x).redISub(p.x), - ny = c.redMul(this.x.redSub(nx)).redISub(this.y); - return this.curve.point(nx, ny); - }; - Point.prototype.dbl = function () { - if (this.inf) return this; - var ys1 = this.y.redAdd(this.y); - if (ys1.cmpn(0) === 0) return this.curve.point(null, null); - var a = this.curve.a, - x2 = this.x.redSqr(), - dyinv = ys1.redInvm(), - c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv), - nx = c.redSqr().redISub(this.x.redAdd(this.x)), - ny = c.redMul(this.x.redSub(nx)).redISub(this.y); - return this.curve.point(nx, ny); - }; - Point.prototype.getX = function () { - return this.x.fromRed(); - }; - Point.prototype.getY = function () { - return this.y.fromRed(); - }; - Point.prototype.mul = function (k) { - return ( - (k = new BN(k, 16)), - this.isInfinity() - ? this - : this._hasDoubles(k) - ? this.curve._fixedNafMul(this, k) - : this.curve.endo - ? this.curve._endoWnafMulAdd([this], [k]) - : this.curve._wnafMul(this, k) - ); - }; - Point.prototype.mulAdd = function (k1, p2, k2) { - var points = [this, p2], - coeffs = [k1, k2]; - return this.curve.endo - ? this.curve._endoWnafMulAdd(points, coeffs) - : this.curve._wnafMulAdd(1, points, coeffs, 2); - }; - Point.prototype.jmulAdd = function (k1, p2, k2) { - var points = [this, p2], - coeffs = [k1, k2]; - return this.curve.endo - ? this.curve._endoWnafMulAdd(points, coeffs, !0) - : this.curve._wnafMulAdd(1, points, coeffs, 2, !0); - }; - Point.prototype.eq = function (p) { - return this === p || (this.inf === p.inf && (this.inf || (this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0))); - }; - Point.prototype.neg = function (_precompute) { - if (this.inf) return this; - var res = this.curve.point(this.x, this.y.redNeg()); - if (_precompute && this.precomputed) { - var pre = this.precomputed, - negate = function (p) { - return p.neg(); - }; - res.precomputed = { - naf: pre.naf && { - wnd: pre.naf.wnd, - points: pre.naf.points.map(negate), - }, - doubles: pre.doubles && { - step: pre.doubles.step, - points: pre.doubles.points.map(negate), - }, - }; - } - return res; - }; - Point.prototype.toJ = function () { - if (this.inf) return this.curve.jpoint(null, null, null); - var res = this.curve.jpoint(this.x, this.y, this.curve.one); - return res; - }; - function JPoint(curve, x, y, z) { - Base.BasePoint.call(this, curve, "jacobian"), - x === null && y === null && z === null - ? ((this.x = this.curve.one), (this.y = this.curve.one), (this.z = new BN(0))) - : ((this.x = new BN(x, 16)), (this.y = new BN(y, 16)), (this.z = new BN(z, 16))), - this.x.red || (this.x = this.x.toRed(this.curve.red)), - this.y.red || (this.y = this.y.toRed(this.curve.red)), - this.z.red || (this.z = this.z.toRed(this.curve.red)), - (this.zOne = this.z === this.curve.one); - } - inherits(JPoint, Base.BasePoint); - ShortCurve.prototype.jpoint = function (x, y, z) { - return new JPoint(this, x, y, z); - }; - JPoint.prototype.toP = function () { - if (this.isInfinity()) return this.curve.point(null, null); - var zinv = this.z.redInvm(), - zinv2 = zinv.redSqr(), - ax = this.x.redMul(zinv2), - ay = this.y.redMul(zinv2).redMul(zinv); - return this.curve.point(ax, ay); - }; - JPoint.prototype.neg = function () { - return this.curve.jpoint(this.x, this.y.redNeg(), this.z); - }; - JPoint.prototype.add = function (p) { - if (this.isInfinity()) return p; - if (p.isInfinity()) return this; - var pz2 = p.z.redSqr(), - z2 = this.z.redSqr(), - u1 = this.x.redMul(pz2), - u2 = p.x.redMul(z2), - s1 = this.y.redMul(pz2.redMul(p.z)), - s2 = p.y.redMul(z2.redMul(this.z)), - h = u1.redSub(u2), - r = s1.redSub(s2); - if (h.cmpn(0) === 0) return r.cmpn(0) !== 0 ? this.curve.jpoint(null, null, null) : this.dbl(); - var h2 = h.redSqr(), - h3 = h2.redMul(h), - v = u1.redMul(h2), - nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v), - ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)), - nz = this.z.redMul(p.z).redMul(h); - return this.curve.jpoint(nx, ny, nz); - }; - JPoint.prototype.mixedAdd = function (p) { - if (this.isInfinity()) return p.toJ(); - if (p.isInfinity()) return this; - var z2 = this.z.redSqr(), - u1 = this.x, - u2 = p.x.redMul(z2), - s1 = this.y, - s2 = p.y.redMul(z2).redMul(this.z), - h = u1.redSub(u2), - r = s1.redSub(s2); - if (h.cmpn(0) === 0) return r.cmpn(0) !== 0 ? this.curve.jpoint(null, null, null) : this.dbl(); - var h2 = h.redSqr(), - h3 = h2.redMul(h), - v = u1.redMul(h2), - nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v), - ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)), - nz = this.z.redMul(h); - return this.curve.jpoint(nx, ny, nz); - }; - JPoint.prototype.dblp = function (pow) { - if (pow === 0) return this; - if (this.isInfinity()) return this; - if (!pow) return this.dbl(); - var i; - if (this.curve.zeroA || this.curve.threeA) { - var r = this; - for (i = 0; i < pow; i++) r = r.dbl(); - return r; - } - var a = this.curve.a, - tinv = this.curve.tinv, - jx = this.x, - jy = this.y, - jz = this.z, - jz4 = jz.redSqr().redSqr(), - jyd = jy.redAdd(jy); - for (i = 0; i < pow; i++) { - var jx2 = jx.redSqr(), - jyd2 = jyd.redSqr(), - jyd4 = jyd2.redSqr(), - c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)), - t1 = jx.redMul(jyd2), - nx = c.redSqr().redISub(t1.redAdd(t1)), - t2 = t1.redISub(nx), - dny = c.redMul(t2); - dny = dny.redIAdd(dny).redISub(jyd4); - var nz = jyd.redMul(jz); - i + 1 < pow && (jz4 = jz4.redMul(jyd4)), (jx = nx), (jz = nz), (jyd = dny); - } - return this.curve.jpoint(jx, jyd.redMul(tinv), jz); - }; - JPoint.prototype.dbl = function () { - return this.isInfinity() - ? this - : this.curve.zeroA - ? this._zeroDbl() - : this.curve.threeA - ? this._threeDbl() - : this._dbl(); - }; - JPoint.prototype._zeroDbl = function () { - var nx, ny, nz; - if (this.zOne) { - var xx = this.x.redSqr(), - yy = this.y.redSqr(), - yyyy = yy.redSqr(), - s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - s = s.redIAdd(s); - var m = xx.redAdd(xx).redIAdd(xx), - t = m.redSqr().redISub(s).redISub(s), - yyyy8 = yyyy.redIAdd(yyyy); - (yyyy8 = yyyy8.redIAdd(yyyy8)), - (yyyy8 = yyyy8.redIAdd(yyyy8)), - (nx = t), - (ny = m.redMul(s.redISub(t)).redISub(yyyy8)), - (nz = this.y.redAdd(this.y)); - } else { - var a = this.x.redSqr(), - b = this.y.redSqr(), - c = b.redSqr(), - d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); - d = d.redIAdd(d); - var e = a.redAdd(a).redIAdd(a), - f = e.redSqr(), - c8 = c.redIAdd(c); - (c8 = c8.redIAdd(c8)), - (c8 = c8.redIAdd(c8)), - (nx = f.redISub(d).redISub(d)), - (ny = e.redMul(d.redISub(nx)).redISub(c8)), - (nz = this.y.redMul(this.z)), - (nz = nz.redIAdd(nz)); - } - return this.curve.jpoint(nx, ny, nz); - }; - JPoint.prototype._threeDbl = function () { - var nx, ny, nz; - if (this.zOne) { - var xx = this.x.redSqr(), - yy = this.y.redSqr(), - yyyy = yy.redSqr(), - s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - s = s.redIAdd(s); - var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a), - t = m.redSqr().redISub(s).redISub(s); - nx = t; - var yyyy8 = yyyy.redIAdd(yyyy); - (yyyy8 = yyyy8.redIAdd(yyyy8)), - (yyyy8 = yyyy8.redIAdd(yyyy8)), - (ny = m.redMul(s.redISub(t)).redISub(yyyy8)), - (nz = this.y.redAdd(this.y)); - } else { - var delta = this.z.redSqr(), - gamma = this.y.redSqr(), - beta = this.x.redMul(gamma), - alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); - alpha = alpha.redAdd(alpha).redIAdd(alpha); - var beta4 = beta.redIAdd(beta); - beta4 = beta4.redIAdd(beta4); - var beta8 = beta4.redAdd(beta4); - (nx = alpha.redSqr().redISub(beta8)), (nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta)); - var ggamma8 = gamma.redSqr(); - (ggamma8 = ggamma8.redIAdd(ggamma8)), - (ggamma8 = ggamma8.redIAdd(ggamma8)), - (ggamma8 = ggamma8.redIAdd(ggamma8)), - (ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8)); - } - return this.curve.jpoint(nx, ny, nz); - }; - JPoint.prototype._dbl = function () { - var a = this.curve.a, - jx = this.x, - jy = this.y, - jz = this.z, - jz4 = jz.redSqr().redSqr(), - jx2 = jx.redSqr(), - jy2 = jy.redSqr(), - c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)), - jxd4 = jx.redAdd(jx); - jxd4 = jxd4.redIAdd(jxd4); - var t1 = jxd4.redMul(jy2), - nx = c.redSqr().redISub(t1.redAdd(t1)), - t2 = t1.redISub(nx), - jyd8 = jy2.redSqr(); - (jyd8 = jyd8.redIAdd(jyd8)), (jyd8 = jyd8.redIAdd(jyd8)), (jyd8 = jyd8.redIAdd(jyd8)); - var ny = c.redMul(t2).redISub(jyd8), - nz = jy.redAdd(jy).redMul(jz); - return this.curve.jpoint(nx, ny, nz); - }; - JPoint.prototype.trpl = function () { - if (!this.curve.zeroA) return this.dbl().add(this); - var xx = this.x.redSqr(), - yy = this.y.redSqr(), - zz = this.z.redSqr(), - yyyy = yy.redSqr(), - m = xx.redAdd(xx).redIAdd(xx), - mm = m.redSqr(), - e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); - (e = e.redIAdd(e)), (e = e.redAdd(e).redIAdd(e)), (e = e.redISub(mm)); - var ee = e.redSqr(), - t = yyyy.redIAdd(yyyy); - (t = t.redIAdd(t)), (t = t.redIAdd(t)), (t = t.redIAdd(t)); - var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t), - yyu4 = yy.redMul(u); - (yyu4 = yyu4.redIAdd(yyu4)), (yyu4 = yyu4.redIAdd(yyu4)); - var nx = this.x.redMul(ee).redISub(yyu4); - (nx = nx.redIAdd(nx)), (nx = nx.redIAdd(nx)); - var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); - (ny = ny.redIAdd(ny)), (ny = ny.redIAdd(ny)), (ny = ny.redIAdd(ny)); - var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); - return this.curve.jpoint(nx, ny, nz); - }; - JPoint.prototype.mul = function (k, kbase) { - return (k = new BN(k, kbase)), this.curve._wnafMul(this, k); - }; - JPoint.prototype.eq = function (p) { - if (p.type === "affine") return this.eq(p.toJ()); - if (this === p) return !0; - var z2 = this.z.redSqr(), - pz2 = p.z.redSqr(); - if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) return !1; - var z3 = z2.redMul(this.z), - pz3 = pz2.redMul(p.z); - return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; - }; - JPoint.prototype.eqXToP = function (x) { - var zs = this.z.redSqr(), - rx = x.toRed(this.curve.red).redMul(zs); - if (this.x.cmp(rx) === 0) return !0; - for (var xc = x.clone(), t = this.curve.redN.redMul(zs); ; ) { - if ((xc.iadd(this.curve.n), xc.cmp(this.curve.p) >= 0)) return !1; - if ((rx.redIAdd(t), this.x.cmp(rx) === 0)) return !0; - } - }; - JPoint.prototype.inspect = function () { - return this.isInfinity() - ? "<EC JPoint Infinity>" - : "<EC JPoint x: " + - this.x.toString(16, 2) + - " y: " + - this.y.toString(16, 2) + - " z: " + - this.z.toString(16, 2) + - ">"; - }; - JPoint.prototype.isInfinity = function () { - return this.z.cmpn(0) === 0; - }; - }, -}); - -// node_modules/elliptic/lib/elliptic/curve/mont.js -var require_mont = __commonJS({ - "node_modules/elliptic/lib/elliptic/curve/mont.js"(exports, module) { - "use strict"; - var BN = require_bn4(), - inherits = require_inherits_browser(), - Base = require_base(), - utils = require_utils3(); - function MontCurve(conf) { - Base.call(this, "mont", conf), - (this.a = new BN(conf.a, 16).toRed(this.red)), - (this.b = new BN(conf.b, 16).toRed(this.red)), - (this.i4 = new BN(4).toRed(this.red).redInvm()), - (this.two = new BN(2).toRed(this.red)), - (this.a24 = this.i4.redMul(this.a.redAdd(this.two))); - } - inherits(MontCurve, Base); - module.exports = MontCurve; - MontCurve.prototype.validate = function (point) { - var x = point.normalize().x, - x2 = x.redSqr(), - rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x), - y = rhs.redSqrt(); - return y.redSqr().cmp(rhs) === 0; - }; - function Point(curve, x, z) { - Base.BasePoint.call(this, curve, "projective"), - x === null && z === null - ? ((this.x = this.curve.one), (this.z = this.curve.zero)) - : ((this.x = new BN(x, 16)), - (this.z = new BN(z, 16)), - this.x.red || (this.x = this.x.toRed(this.curve.red)), - this.z.red || (this.z = this.z.toRed(this.curve.red))); - } - inherits(Point, Base.BasePoint); - MontCurve.prototype.decodePoint = function (bytes, enc) { - return this.point(utils.toArray(bytes, enc), 1); - }; - MontCurve.prototype.point = function (x, z) { - return new Point(this, x, z); - }; - MontCurve.prototype.pointFromJSON = function (obj) { - return Point.fromJSON(this, obj); - }; - Point.prototype.precompute = function () {}; - Point.prototype._encode = function () { - return this.getX().toArray("be", this.curve.p.byteLength()); - }; - Point.fromJSON = function (curve, obj) { - return new Point(curve, obj[0], obj[1] || curve.one); - }; - Point.prototype.inspect = function () { - return this.isInfinity() - ? "<EC Point Infinity>" - : "<EC Point x: " + this.x.fromRed().toString(16, 2) + " z: " + this.z.fromRed().toString(16, 2) + ">"; - }; - Point.prototype.isInfinity = function () { - return this.z.cmpn(0) === 0; - }; - Point.prototype.dbl = function () { - var a = this.x.redAdd(this.z), - aa = a.redSqr(), - b = this.x.redSub(this.z), - bb = b.redSqr(), - c = aa.redSub(bb), - nx = aa.redMul(bb), - nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); - return this.curve.point(nx, nz); - }; - Point.prototype.add = function () { - throw new Error("Not supported on Montgomery curve"); - }; - Point.prototype.diffAdd = function (p, diff) { - var a = this.x.redAdd(this.z), - b = this.x.redSub(this.z), - c = p.x.redAdd(p.z), - d = p.x.redSub(p.z), - da = d.redMul(a), - cb = c.redMul(b), - nx = diff.z.redMul(da.redAdd(cb).redSqr()), - nz = diff.x.redMul(da.redISub(cb).redSqr()); - return this.curve.point(nx, nz); - }; - Point.prototype.mul = function (k) { - for ( - var t = k.clone(), a = this, b = this.curve.point(null, null), c = this, bits = []; - t.cmpn(0) !== 0; - t.iushrn(1) - ) - bits.push(t.andln(1)); - for (var i = bits.length - 1; i >= 0; i--) - bits[i] === 0 ? ((a = a.diffAdd(b, c)), (b = b.dbl())) : ((b = a.diffAdd(b, c)), (a = a.dbl())); - return b; - }; - Point.prototype.mulAdd = function () { - throw new Error("Not supported on Montgomery curve"); - }; - Point.prototype.jumlAdd = function () { - throw new Error("Not supported on Montgomery curve"); - }; - Point.prototype.eq = function (other) { - return this.getX().cmp(other.getX()) === 0; - }; - Point.prototype.normalize = function () { - return (this.x = this.x.redMul(this.z.redInvm())), (this.z = this.curve.one), this; - }; - Point.prototype.getX = function () { - return this.normalize(), this.x.fromRed(); - }; - }, -}); - -// node_modules/elliptic/lib/elliptic/curve/edwards.js -var require_edwards = __commonJS({ - "node_modules/elliptic/lib/elliptic/curve/edwards.js"(exports, module) { - "use strict"; - var utils = require_utils3(), - BN = require_bn4(), - inherits = require_inherits_browser(), - Base = require_base(), - assert = utils.assert; - function EdwardsCurve(conf) { - (this.twisted = (conf.a | 0) !== 1), - (this.mOneA = this.twisted && (conf.a | 0) === -1), - (this.extended = this.mOneA), - Base.call(this, "edwards", conf), - (this.a = new BN(conf.a, 16).umod(this.red.m)), - (this.a = this.a.toRed(this.red)), - (this.c = new BN(conf.c, 16).toRed(this.red)), - (this.c2 = this.c.redSqr()), - (this.d = new BN(conf.d, 16).toRed(this.red)), - (this.dd = this.d.redAdd(this.d)), - assert(!this.twisted || this.c.fromRed().cmpn(1) === 0), - (this.oneC = (conf.c | 0) === 1); - } - inherits(EdwardsCurve, Base); - module.exports = EdwardsCurve; - EdwardsCurve.prototype._mulA = function (num) { - return this.mOneA ? num.redNeg() : this.a.redMul(num); - }; - EdwardsCurve.prototype._mulC = function (num) { - return this.oneC ? num : this.c.redMul(num); - }; - EdwardsCurve.prototype.jpoint = function (x, y, z, t) { - return this.point(x, y, z, t); - }; - EdwardsCurve.prototype.pointFromX = function (x, odd) { - (x = new BN(x, 16)), x.red || (x = x.toRed(this.red)); - var x2 = x.redSqr(), - rhs = this.c2.redSub(this.a.redMul(x2)), - lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)), - y2 = rhs.redMul(lhs.redInvm()), - y = y2.redSqrt(); - if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error("invalid point"); - var isOdd = y.fromRed().isOdd(); - return ((odd && !isOdd) || (!odd && isOdd)) && (y = y.redNeg()), this.point(x, y); - }; - EdwardsCurve.prototype.pointFromY = function (y, odd) { - (y = new BN(y, 16)), y.red || (y = y.toRed(this.red)); - var y2 = y.redSqr(), - lhs = y2.redSub(this.c2), - rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a), - x2 = lhs.redMul(rhs.redInvm()); - if (x2.cmp(this.zero) === 0) { - if (odd) throw new Error("invalid point"); - return this.point(this.zero, y); - } - var x = x2.redSqrt(); - if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error("invalid point"); - return x.fromRed().isOdd() !== odd && (x = x.redNeg()), this.point(x, y); - }; - EdwardsCurve.prototype.validate = function (point) { - if (point.isInfinity()) return !0; - point.normalize(); - var x2 = point.x.redSqr(), - y2 = point.y.redSqr(), - lhs = x2.redMul(this.a).redAdd(y2), - rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); - return lhs.cmp(rhs) === 0; - }; - function Point(curve, x, y, z, t) { - Base.BasePoint.call(this, curve, "projective"), - x === null && y === null && z === null - ? ((this.x = this.curve.zero), - (this.y = this.curve.one), - (this.z = this.curve.one), - (this.t = this.curve.zero), - (this.zOne = !0)) - : ((this.x = new BN(x, 16)), - (this.y = new BN(y, 16)), - (this.z = z ? new BN(z, 16) : this.curve.one), - (this.t = t && new BN(t, 16)), - this.x.red || (this.x = this.x.toRed(this.curve.red)), - this.y.red || (this.y = this.y.toRed(this.curve.red)), - this.z.red || (this.z = this.z.toRed(this.curve.red)), - this.t && !this.t.red && (this.t = this.t.toRed(this.curve.red)), - (this.zOne = this.z === this.curve.one), - this.curve.extended && - !this.t && - ((this.t = this.x.redMul(this.y)), this.zOne || (this.t = this.t.redMul(this.z.redInvm())))); - } - inherits(Point, Base.BasePoint); - EdwardsCurve.prototype.pointFromJSON = function (obj) { - return Point.fromJSON(this, obj); - }; - EdwardsCurve.prototype.point = function (x, y, z, t) { - return new Point(this, x, y, z, t); - }; - Point.fromJSON = function (curve, obj) { - return new Point(curve, obj[0], obj[1], obj[2]); - }; - Point.prototype.inspect = function () { - return this.isInfinity() - ? "<EC Point Infinity>" - : "<EC Point x: " + - this.x.fromRed().toString(16, 2) + - " y: " + - this.y.fromRed().toString(16, 2) + - " z: " + - this.z.fromRed().toString(16, 2) + - ">"; - }; - Point.prototype.isInfinity = function () { - return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || (this.zOne && this.y.cmp(this.curve.c) === 0)); - }; - Point.prototype._extDbl = function () { - var a = this.x.redSqr(), - b = this.y.redSqr(), - c = this.z.redSqr(); - c = c.redIAdd(c); - var d = this.curve._mulA(a), - e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b), - g = d.redAdd(b), - f = g.redSub(c), - h = d.redSub(b), - nx = e.redMul(f), - ny = g.redMul(h), - nt = e.redMul(h), - nz = f.redMul(g); - return this.curve.point(nx, ny, nz, nt); - }; - Point.prototype._projDbl = function () { - var b = this.x.redAdd(this.y).redSqr(), - c = this.x.redSqr(), - d = this.y.redSqr(), - nx, - ny, - nz, - e, - h, - j; - if (this.curve.twisted) { - e = this.curve._mulA(c); - var f = e.redAdd(d); - this.zOne - ? ((nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two))), - (ny = f.redMul(e.redSub(d))), - (nz = f.redSqr().redSub(f).redSub(f))) - : ((h = this.z.redSqr()), - (j = f.redSub(h).redISub(h)), - (nx = b.redSub(c).redISub(d).redMul(j)), - (ny = f.redMul(e.redSub(d))), - (nz = f.redMul(j))); - } else - (e = c.redAdd(d)), - (h = this.curve._mulC(this.z).redSqr()), - (j = e.redSub(h).redSub(h)), - (nx = this.curve._mulC(b.redISub(e)).redMul(j)), - (ny = this.curve._mulC(e).redMul(c.redISub(d))), - (nz = e.redMul(j)); - return this.curve.point(nx, ny, nz); - }; - Point.prototype.dbl = function () { - return this.isInfinity() ? this : this.curve.extended ? this._extDbl() : this._projDbl(); - }; - Point.prototype._extAdd = function (p) { - var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)), - b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)), - c = this.t.redMul(this.curve.dd).redMul(p.t), - d = this.z.redMul(p.z.redAdd(p.z)), - e = b.redSub(a), - f = d.redSub(c), - g = d.redAdd(c), - h = b.redAdd(a), - nx = e.redMul(f), - ny = g.redMul(h), - nt = e.redMul(h), - nz = f.redMul(g); - return this.curve.point(nx, ny, nz, nt); - }; - Point.prototype._projAdd = function (p) { - var a = this.z.redMul(p.z), - b = a.redSqr(), - c = this.x.redMul(p.x), - d = this.y.redMul(p.y), - e = this.curve.d.redMul(c).redMul(d), - f = b.redSub(e), - g = b.redAdd(e), - tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d), - nx = a.redMul(f).redMul(tmp), - ny, - nz; - return ( - this.curve.twisted - ? ((ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)))), (nz = f.redMul(g))) - : ((ny = a.redMul(g).redMul(d.redSub(c))), (nz = this.curve._mulC(f).redMul(g))), - this.curve.point(nx, ny, nz) - ); - }; - Point.prototype.add = function (p) { - return this.isInfinity() ? p : p.isInfinity() ? this : this.curve.extended ? this._extAdd(p) : this._projAdd(p); - }; - Point.prototype.mul = function (k) { - return this._hasDoubles(k) ? this.curve._fixedNafMul(this, k) : this.curve._wnafMul(this, k); - }; - Point.prototype.mulAdd = function (k1, p, k2) { - return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, !1); - }; - Point.prototype.jmulAdd = function (k1, p, k2) { - return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, !0); - }; - Point.prototype.normalize = function () { - if (this.zOne) return this; - var zi = this.z.redInvm(); - return ( - (this.x = this.x.redMul(zi)), - (this.y = this.y.redMul(zi)), - this.t && (this.t = this.t.redMul(zi)), - (this.z = this.curve.one), - (this.zOne = !0), - this - ); - }; - Point.prototype.neg = function () { - return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg()); - }; - Point.prototype.getX = function () { - return this.normalize(), this.x.fromRed(); - }; - Point.prototype.getY = function () { - return this.normalize(), this.y.fromRed(); - }; - Point.prototype.eq = function (other) { - return this === other || (this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0); - }; - Point.prototype.eqXToP = function (x) { - var rx = x.toRed(this.curve.red).redMul(this.z); - if (this.x.cmp(rx) === 0) return !0; - for (var xc = x.clone(), t = this.curve.redN.redMul(this.z); ; ) { - if ((xc.iadd(this.curve.n), xc.cmp(this.curve.p) >= 0)) return !1; - if ((rx.redIAdd(t), this.x.cmp(rx) === 0)) return !0; - } - }; - Point.prototype.toP = Point.prototype.normalize; - Point.prototype.mixedAdd = Point.prototype.add; - }, -}); - -// node_modules/elliptic/lib/elliptic/curve/index.js -var require_curve = __commonJS({ - "node_modules/elliptic/lib/elliptic/curve/index.js"(exports) { - "use strict"; - var curve = exports; - curve.base = require_base(); - curve.short = require_short(); - curve.mont = require_mont(); - curve.edwards = require_edwards(); - }, -}); - -// node_modules/hash.js/lib/hash/utils.js -var require_utils4 = __commonJS({ - "node_modules/hash.js/lib/hash/utils.js"(exports) { - "use strict"; - var assert = require_minimalistic_assert(), - inherits = require_inherits_browser(); - exports.inherits = inherits; - function isSurrogatePair(msg, i) { - return (msg.charCodeAt(i) & 64512) !== 55296 || i < 0 || i + 1 >= msg.length - ? !1 - : (msg.charCodeAt(i + 1) & 64512) === 56320; - } - function toArray(msg, enc) { - if (Array.isArray(msg)) return msg.slice(); - if (!msg) return []; - var res = []; - if (typeof msg == "string") - if (enc) { - if (enc === "hex") - for ( - msg = msg.replace(/[^a-z0-9]+/gi, ""), msg.length % 2 !== 0 && (msg = "0" + msg), i = 0; - i < msg.length; - i += 2 - ) - res.push(parseInt(msg[i] + msg[i + 1], 16)); - } else - for (var p = 0, i = 0; i < msg.length; i++) { - var c = msg.charCodeAt(i); - c < 128 - ? (res[p++] = c) - : c < 2048 - ? ((res[p++] = (c >> 6) | 192), (res[p++] = (c & 63) | 128)) - : isSurrogatePair(msg, i) - ? ((c = 65536 + ((c & 1023) << 10) + (msg.charCodeAt(++i) & 1023)), - (res[p++] = (c >> 18) | 240), - (res[p++] = ((c >> 12) & 63) | 128), - (res[p++] = ((c >> 6) & 63) | 128), - (res[p++] = (c & 63) | 128)) - : ((res[p++] = (c >> 12) | 224), (res[p++] = ((c >> 6) & 63) | 128), (res[p++] = (c & 63) | 128)); - } - else for (i = 0; i < msg.length; i++) res[i] = msg[i] | 0; - return res; - } - exports.toArray = toArray; - function toHex(msg) { - for (var res = "", i = 0; i < msg.length; i++) res += zero2(msg[i].toString(16)); - return res; - } - exports.toHex = toHex; - function htonl(w) { - var res = (w >>> 24) | ((w >>> 8) & 65280) | ((w << 8) & 16711680) | ((w & 255) << 24); - return res >>> 0; - } - exports.htonl = htonl; - function toHex32(msg, endian) { - for (var res = "", i = 0; i < msg.length; i++) { - var w = msg[i]; - endian === "little" && (w = htonl(w)), (res += zero8(w.toString(16))); - } - return res; - } - exports.toHex32 = toHex32; - function zero2(word) { - return word.length === 1 ? "0" + word : word; - } - exports.zero2 = zero2; - function zero8(word) { - return word.length === 7 - ? "0" + word - : word.length === 6 - ? "00" + word - : word.length === 5 - ? "000" + word - : word.length === 4 - ? "0000" + word - : word.length === 3 - ? "00000" + word - : word.length === 2 - ? "000000" + word - : word.length === 1 - ? "0000000" + word - : word; - } - exports.zero8 = zero8; - function join32(msg, start, end, endian) { - var len = end - start; - assert(len % 4 === 0); - for (var res = new Array(len / 4), i = 0, k = start; i < res.length; i++, k += 4) { - var w; - endian === "big" - ? (w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3]) - : (w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k]), - (res[i] = w >>> 0); - } - return res; - } - exports.join32 = join32; - function split32(msg, endian) { - for (var res = new Array(msg.length * 4), i = 0, k = 0; i < msg.length; i++, k += 4) { - var m = msg[i]; - endian === "big" - ? ((res[k] = m >>> 24), - (res[k + 1] = (m >>> 16) & 255), - (res[k + 2] = (m >>> 8) & 255), - (res[k + 3] = m & 255)) - : ((res[k + 3] = m >>> 24), - (res[k + 2] = (m >>> 16) & 255), - (res[k + 1] = (m >>> 8) & 255), - (res[k] = m & 255)); - } - return res; - } - exports.split32 = split32; - function rotr32(w, b) { - return (w >>> b) | (w << (32 - b)); - } - exports.rotr32 = rotr32; - function rotl32(w, b) { - return (w << b) | (w >>> (32 - b)); - } - exports.rotl32 = rotl32; - function sum32(a, b) { - return (a + b) >>> 0; - } - exports.sum32 = sum32; - function sum32_3(a, b, c) { - return (a + b + c) >>> 0; - } - exports.sum32_3 = sum32_3; - function sum32_4(a, b, c, d) { - return (a + b + c + d) >>> 0; - } - exports.sum32_4 = sum32_4; - function sum32_5(a, b, c, d, e) { - return (a + b + c + d + e) >>> 0; - } - exports.sum32_5 = sum32_5; - function sum64(buf, pos, ah, al) { - var bh = buf[pos], - bl = buf[pos + 1], - lo = (al + bl) >>> 0, - hi = (lo < al ? 1 : 0) + ah + bh; - (buf[pos] = hi >>> 0), (buf[pos + 1] = lo); - } - exports.sum64 = sum64; - function sum64_hi(ah, al, bh, bl) { - var lo = (al + bl) >>> 0, - hi = (lo < al ? 1 : 0) + ah + bh; - return hi >>> 0; - } - exports.sum64_hi = sum64_hi; - function sum64_lo(ah, al, bh, bl) { - var lo = al + bl; - return lo >>> 0; - } - exports.sum64_lo = sum64_lo; - function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) { - var carry = 0, - lo = al; - (lo = (lo + bl) >>> 0), - (carry += lo < al ? 1 : 0), - (lo = (lo + cl) >>> 0), - (carry += lo < cl ? 1 : 0), - (lo = (lo + dl) >>> 0), - (carry += lo < dl ? 1 : 0); - var hi = ah + bh + ch + dh + carry; - return hi >>> 0; - } - exports.sum64_4_hi = sum64_4_hi; - function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) { - var lo = al + bl + cl + dl; - return lo >>> 0; - } - exports.sum64_4_lo = sum64_4_lo; - function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { - var carry = 0, - lo = al; - (lo = (lo + bl) >>> 0), - (carry += lo < al ? 1 : 0), - (lo = (lo + cl) >>> 0), - (carry += lo < cl ? 1 : 0), - (lo = (lo + dl) >>> 0), - (carry += lo < dl ? 1 : 0), - (lo = (lo + el) >>> 0), - (carry += lo < el ? 1 : 0); - var hi = ah + bh + ch + dh + eh + carry; - return hi >>> 0; - } - exports.sum64_5_hi = sum64_5_hi; - function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { - var lo = al + bl + cl + dl + el; - return lo >>> 0; - } - exports.sum64_5_lo = sum64_5_lo; - function rotr64_hi(ah, al, num) { - var r = (al << (32 - num)) | (ah >>> num); - return r >>> 0; - } - exports.rotr64_hi = rotr64_hi; - function rotr64_lo(ah, al, num) { - var r = (ah << (32 - num)) | (al >>> num); - return r >>> 0; - } - exports.rotr64_lo = rotr64_lo; - function shr64_hi(ah, al, num) { - return ah >>> num; - } - exports.shr64_hi = shr64_hi; - function shr64_lo(ah, al, num) { - var r = (ah << (32 - num)) | (al >>> num); - return r >>> 0; - } - exports.shr64_lo = shr64_lo; - }, -}); - -// node_modules/hash.js/lib/hash/common.js -var require_common = __commonJS({ - "node_modules/hash.js/lib/hash/common.js"(exports) { - "use strict"; - var utils = require_utils4(), - assert = require_minimalistic_assert(); - function BlockHash() { - (this.pending = null), - (this.pendingTotal = 0), - (this.blockSize = this.constructor.blockSize), - (this.outSize = this.constructor.outSize), - (this.hmacStrength = this.constructor.hmacStrength), - (this.padLength = this.constructor.padLength / 8), - (this.endian = "big"), - (this._delta8 = this.blockSize / 8), - (this._delta32 = this.blockSize / 32); - } - exports.BlockHash = BlockHash; - BlockHash.prototype.update = function (msg, enc) { - if ( - ((msg = utils.toArray(msg, enc)), - this.pending ? (this.pending = this.pending.concat(msg)) : (this.pending = msg), - (this.pendingTotal += msg.length), - this.pending.length >= this._delta8) - ) { - msg = this.pending; - var r = msg.length % this._delta8; - (this.pending = msg.slice(msg.length - r, msg.length)), - this.pending.length === 0 && (this.pending = null), - (msg = utils.join32(msg, 0, msg.length - r, this.endian)); - for (var i = 0; i < msg.length; i += this._delta32) this._update(msg, i, i + this._delta32); - } - return this; - }; - BlockHash.prototype.digest = function (enc) { - return this.update(this._pad()), assert(this.pending === null), this._digest(enc); - }; - BlockHash.prototype._pad = function () { - var len = this.pendingTotal, - bytes = this._delta8, - k = bytes - ((len + this.padLength) % bytes), - res = new Array(k + this.padLength); - res[0] = 128; - for (var i = 1; i < k; i++) res[i] = 0; - if (((len <<= 3), this.endian === "big")) { - for (var t = 8; t < this.padLength; t++) res[i++] = 0; - (res[i++] = 0), - (res[i++] = 0), - (res[i++] = 0), - (res[i++] = 0), - (res[i++] = (len >>> 24) & 255), - (res[i++] = (len >>> 16) & 255), - (res[i++] = (len >>> 8) & 255), - (res[i++] = len & 255); - } else - for ( - res[i++] = len & 255, - res[i++] = (len >>> 8) & 255, - res[i++] = (len >>> 16) & 255, - res[i++] = (len >>> 24) & 255, - res[i++] = 0, - res[i++] = 0, - res[i++] = 0, - res[i++] = 0, - t = 8; - t < this.padLength; - t++ - ) - res[i++] = 0; - return res; - }; - }, -}); - -// node_modules/hash.js/lib/hash/sha/common.js -var require_common2 = __commonJS({ - "node_modules/hash.js/lib/hash/sha/common.js"(exports) { - "use strict"; - var utils = require_utils4(), - rotr32 = utils.rotr32; - function ft_1(s, x, y, z) { - if (s === 0) return ch32(x, y, z); - if (s === 1 || s === 3) return p32(x, y, z); - if (s === 2) return maj32(x, y, z); - } - exports.ft_1 = ft_1; - function ch32(x, y, z) { - return (x & y) ^ (~x & z); - } - exports.ch32 = ch32; - function maj32(x, y, z) { - return (x & y) ^ (x & z) ^ (y & z); - } - exports.maj32 = maj32; - function p32(x, y, z) { - return x ^ y ^ z; - } - exports.p32 = p32; - function s0_256(x) { - return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22); - } - exports.s0_256 = s0_256; - function s1_256(x) { - return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25); - } - exports.s1_256 = s1_256; - function g0_256(x) { - return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3); - } - exports.g0_256 = g0_256; - function g1_256(x) { - return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10); - } - exports.g1_256 = g1_256; - }, -}); - -// node_modules/hash.js/lib/hash/sha/1.js -var require__ = __commonJS({ - "node_modules/hash.js/lib/hash/sha/1.js"(exports, module) { - "use strict"; - var utils = require_utils4(), - common = require_common(), - shaCommon = require_common2(), - rotl32 = utils.rotl32, - sum32 = utils.sum32, - sum32_5 = utils.sum32_5, - ft_1 = shaCommon.ft_1, - BlockHash = common.BlockHash, - sha1_K = [1518500249, 1859775393, 2400959708, 3395469782]; - function SHA1() { - if (!(this instanceof SHA1)) return new SHA1(); - BlockHash.call(this), - (this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]), - (this.W = new Array(80)); - } - utils.inherits(SHA1, BlockHash); - module.exports = SHA1; - SHA1.blockSize = 512; - SHA1.outSize = 160; - SHA1.hmacStrength = 80; - SHA1.padLength = 64; - SHA1.prototype._update = function (msg, start) { - for (var W = this.W, i = 0; i < 16; i++) W[i] = msg[start + i]; - for (; i < W.length; i++) W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); - var a = this.h[0], - b = this.h[1], - c = this.h[2], - d = this.h[3], - e = this.h[4]; - for (i = 0; i < W.length; i++) { - var s = ~~(i / 20), - t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]); - (e = d), (d = c), (c = rotl32(b, 30)), (b = a), (a = t); - } - (this.h[0] = sum32(this.h[0], a)), - (this.h[1] = sum32(this.h[1], b)), - (this.h[2] = sum32(this.h[2], c)), - (this.h[3] = sum32(this.h[3], d)), - (this.h[4] = sum32(this.h[4], e)); - }; - SHA1.prototype._digest = function (enc) { - return enc === "hex" ? utils.toHex32(this.h, "big") : utils.split32(this.h, "big"); - }; - }, -}); - -// node_modules/hash.js/lib/hash/sha/256.js -var require__2 = __commonJS({ - "node_modules/hash.js/lib/hash/sha/256.js"(exports, module) { - "use strict"; - var utils = require_utils4(), - common = require_common(), - shaCommon = require_common2(), - assert = require_minimalistic_assert(), - sum32 = utils.sum32, - sum32_4 = utils.sum32_4, - sum32_5 = utils.sum32_5, - ch32 = shaCommon.ch32, - maj32 = shaCommon.maj32, - s0_256 = shaCommon.s0_256, - s1_256 = shaCommon.s1_256, - g0_256 = shaCommon.g0_256, - g1_256 = shaCommon.g1_256, - BlockHash = common.BlockHash, - sha256_K = [ - 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, - 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, - 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, - 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, - 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, - 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, - 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, - 3329325298, - ]; - function SHA256() { - if (!(this instanceof SHA256)) return new SHA256(); - BlockHash.call(this), - (this.h = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]), - (this.k = sha256_K), - (this.W = new Array(64)); - } - utils.inherits(SHA256, BlockHash); - module.exports = SHA256; - SHA256.blockSize = 512; - SHA256.outSize = 256; - SHA256.hmacStrength = 192; - SHA256.padLength = 64; - SHA256.prototype._update = function (msg, start) { - for (var W = this.W, i = 0; i < 16; i++) W[i] = msg[start + i]; - for (; i < W.length; i++) W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]); - var a = this.h[0], - b = this.h[1], - c = this.h[2], - d = this.h[3], - e = this.h[4], - f = this.h[5], - g = this.h[6], - h = this.h[7]; - for (assert(this.k.length === W.length), i = 0; i < W.length; i++) { - var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]), - T2 = sum32(s0_256(a), maj32(a, b, c)); - (h = g), (g = f), (f = e), (e = sum32(d, T1)), (d = c), (c = b), (b = a), (a = sum32(T1, T2)); - } - (this.h[0] = sum32(this.h[0], a)), - (this.h[1] = sum32(this.h[1], b)), - (this.h[2] = sum32(this.h[2], c)), - (this.h[3] = sum32(this.h[3], d)), - (this.h[4] = sum32(this.h[4], e)), - (this.h[5] = sum32(this.h[5], f)), - (this.h[6] = sum32(this.h[6], g)), - (this.h[7] = sum32(this.h[7], h)); - }; - SHA256.prototype._digest = function (enc) { - return enc === "hex" ? utils.toHex32(this.h, "big") : utils.split32(this.h, "big"); - }; - }, -}); - -// node_modules/hash.js/lib/hash/sha/224.js -var require__3 = __commonJS({ - "node_modules/hash.js/lib/hash/sha/224.js"(exports, module) { - "use strict"; - var utils = require_utils4(), - SHA256 = require__2(); - function SHA224() { - if (!(this instanceof SHA224)) return new SHA224(); - SHA256.call(this), - (this.h = [3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); - } - utils.inherits(SHA224, SHA256); - module.exports = SHA224; - SHA224.blockSize = 512; - SHA224.outSize = 224; - SHA224.hmacStrength = 192; - SHA224.padLength = 64; - SHA224.prototype._digest = function (enc) { - return enc === "hex" ? utils.toHex32(this.h.slice(0, 7), "big") : utils.split32(this.h.slice(0, 7), "big"); - }; - }, -}); - -// node_modules/hash.js/lib/hash/sha/512.js -var require__4 = __commonJS({ - "node_modules/hash.js/lib/hash/sha/512.js"(exports, module) { - "use strict"; - var utils = require_utils4(), - common = require_common(), - assert = require_minimalistic_assert(), - rotr64_hi = utils.rotr64_hi, - rotr64_lo = utils.rotr64_lo, - shr64_hi = utils.shr64_hi, - shr64_lo = utils.shr64_lo, - sum64 = utils.sum64, - sum64_hi = utils.sum64_hi, - sum64_lo = utils.sum64_lo, - sum64_4_hi = utils.sum64_4_hi, - sum64_4_lo = utils.sum64_4_lo, - sum64_5_hi = utils.sum64_5_hi, - sum64_5_lo = utils.sum64_5_lo, - BlockHash = common.BlockHash, - sha512_K = [ - 1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, - 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, - 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, - 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, - 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, - 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, - 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, - 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, - 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, - 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, - 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, - 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, - 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, - 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, - 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, - 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, - 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, - 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591, - ]; - function SHA512() { - if (!(this instanceof SHA512)) return new SHA512(); - BlockHash.call(this), - (this.h = [ - 1779033703, 4089235720, 3144134277, 2227873595, 1013904242, 4271175723, 2773480762, 1595750129, 1359893119, - 2917565137, 2600822924, 725511199, 528734635, 4215389547, 1541459225, 327033209, - ]), - (this.k = sha512_K), - (this.W = new Array(160)); - } - utils.inherits(SHA512, BlockHash); - module.exports = SHA512; - SHA512.blockSize = 1024; - SHA512.outSize = 512; - SHA512.hmacStrength = 192; - SHA512.padLength = 128; - SHA512.prototype._prepareBlock = function (msg, start) { - for (var W = this.W, i = 0; i < 32; i++) W[i] = msg[start + i]; - for (; i < W.length; i += 2) { - var c0_hi = g1_512_hi(W[i - 4], W[i - 3]), - c0_lo = g1_512_lo(W[i - 4], W[i - 3]), - c1_hi = W[i - 14], - c1_lo = W[i - 13], - c2_hi = g0_512_hi(W[i - 30], W[i - 29]), - c2_lo = g0_512_lo(W[i - 30], W[i - 29]), - c3_hi = W[i - 32], - c3_lo = W[i - 31]; - (W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo)), - (W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo)); - } - }; - SHA512.prototype._update = function (msg, start) { - this._prepareBlock(msg, start); - var W = this.W, - ah = this.h[0], - al = this.h[1], - bh = this.h[2], - bl = this.h[3], - ch = this.h[4], - cl = this.h[5], - dh = this.h[6], - dl = this.h[7], - eh = this.h[8], - el = this.h[9], - fh = this.h[10], - fl = this.h[11], - gh = this.h[12], - gl = this.h[13], - hh = this.h[14], - hl = this.h[15]; - assert(this.k.length === W.length); - for (var i = 0; i < W.length; i += 2) { - var c0_hi = hh, - c0_lo = hl, - c1_hi = s1_512_hi(eh, el), - c1_lo = s1_512_lo(eh, el), - c2_hi = ch64_hi(eh, el, fh, fl, gh, gl), - c2_lo = ch64_lo(eh, el, fh, fl, gh, gl), - c3_hi = this.k[i], - c3_lo = this.k[i + 1], - c4_hi = W[i], - c4_lo = W[i + 1], - T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo), - T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo); - (c0_hi = s0_512_hi(ah, al)), - (c0_lo = s0_512_lo(ah, al)), - (c1_hi = maj64_hi(ah, al, bh, bl, ch, cl)), - (c1_lo = maj64_lo(ah, al, bh, bl, ch, cl)); - var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo), - T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo); - (hh = gh), - (hl = gl), - (gh = fh), - (gl = fl), - (fh = eh), - (fl = el), - (eh = sum64_hi(dh, dl, T1_hi, T1_lo)), - (el = sum64_lo(dl, dl, T1_hi, T1_lo)), - (dh = ch), - (dl = cl), - (ch = bh), - (cl = bl), - (bh = ah), - (bl = al), - (ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo)), - (al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo)); - } - sum64(this.h, 0, ah, al), - sum64(this.h, 2, bh, bl), - sum64(this.h, 4, ch, cl), - sum64(this.h, 6, dh, dl), - sum64(this.h, 8, eh, el), - sum64(this.h, 10, fh, fl), - sum64(this.h, 12, gh, gl), - sum64(this.h, 14, hh, hl); - }; - SHA512.prototype._digest = function (enc) { - return enc === "hex" ? utils.toHex32(this.h, "big") : utils.split32(this.h, "big"); - }; - function ch64_hi(xh, xl, yh, yl, zh) { - var r = (xh & yh) ^ (~xh & zh); - return r < 0 && (r += 4294967296), r; - } - function ch64_lo(xh, xl, yh, yl, zh, zl) { - var r = (xl & yl) ^ (~xl & zl); - return r < 0 && (r += 4294967296), r; - } - function maj64_hi(xh, xl, yh, yl, zh) { - var r = (xh & yh) ^ (xh & zh) ^ (yh & zh); - return r < 0 && (r += 4294967296), r; - } - function maj64_lo(xh, xl, yh, yl, zh, zl) { - var r = (xl & yl) ^ (xl & zl) ^ (yl & zl); - return r < 0 && (r += 4294967296), r; - } - function s0_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 28), - c1_hi = rotr64_hi(xl, xh, 2), - c2_hi = rotr64_hi(xl, xh, 7), - r = c0_hi ^ c1_hi ^ c2_hi; - return r < 0 && (r += 4294967296), r; - } - function s0_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 28), - c1_lo = rotr64_lo(xl, xh, 2), - c2_lo = rotr64_lo(xl, xh, 7), - r = c0_lo ^ c1_lo ^ c2_lo; - return r < 0 && (r += 4294967296), r; - } - function s1_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 14), - c1_hi = rotr64_hi(xh, xl, 18), - c2_hi = rotr64_hi(xl, xh, 9), - r = c0_hi ^ c1_hi ^ c2_hi; - return r < 0 && (r += 4294967296), r; - } - function s1_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 14), - c1_lo = rotr64_lo(xh, xl, 18), - c2_lo = rotr64_lo(xl, xh, 9), - r = c0_lo ^ c1_lo ^ c2_lo; - return r < 0 && (r += 4294967296), r; - } - function g0_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 1), - c1_hi = rotr64_hi(xh, xl, 8), - c2_hi = shr64_hi(xh, xl, 7), - r = c0_hi ^ c1_hi ^ c2_hi; - return r < 0 && (r += 4294967296), r; - } - function g0_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 1), - c1_lo = rotr64_lo(xh, xl, 8), - c2_lo = shr64_lo(xh, xl, 7), - r = c0_lo ^ c1_lo ^ c2_lo; - return r < 0 && (r += 4294967296), r; - } - function g1_512_hi(xh, xl) { - var c0_hi = rotr64_hi(xh, xl, 19), - c1_hi = rotr64_hi(xl, xh, 29), - c2_hi = shr64_hi(xh, xl, 6), - r = c0_hi ^ c1_hi ^ c2_hi; - return r < 0 && (r += 4294967296), r; - } - function g1_512_lo(xh, xl) { - var c0_lo = rotr64_lo(xh, xl, 19), - c1_lo = rotr64_lo(xl, xh, 29), - c2_lo = shr64_lo(xh, xl, 6), - r = c0_lo ^ c1_lo ^ c2_lo; - return r < 0 && (r += 4294967296), r; - } - }, -}); - -// node_modules/hash.js/lib/hash/sha/384.js -var require__5 = __commonJS({ - "node_modules/hash.js/lib/hash/sha/384.js"(exports, module) { - "use strict"; - var utils = require_utils4(), - SHA512 = require__4(); - function SHA384() { - if (!(this instanceof SHA384)) return new SHA384(); - SHA512.call(this), - (this.h = [ - 3418070365, 3238371032, 1654270250, 914150663, 2438529370, 812702999, 355462360, 4144912697, 1731405415, - 4290775857, 2394180231, 1750603025, 3675008525, 1694076839, 1203062813, 3204075428, - ]); - } - utils.inherits(SHA384, SHA512); - module.exports = SHA384; - SHA384.blockSize = 1024; - SHA384.outSize = 384; - SHA384.hmacStrength = 192; - SHA384.padLength = 128; - SHA384.prototype._digest = function (enc) { - return enc === "hex" ? utils.toHex32(this.h.slice(0, 12), "big") : utils.split32(this.h.slice(0, 12), "big"); - }; - }, -}); - -// node_modules/hash.js/lib/hash/sha.js -var require_sha3 = __commonJS({ - "node_modules/hash.js/lib/hash/sha.js"(exports) { - "use strict"; - exports.sha1 = require__(); - exports.sha224 = require__3(); - exports.sha256 = require__2(); - exports.sha384 = require__5(); - exports.sha512 = require__4(); - }, -}); - -// node_modules/hash.js/lib/hash/ripemd.js -var require_ripemd = __commonJS({ - "node_modules/hash.js/lib/hash/ripemd.js"(exports) { - "use strict"; - var utils = require_utils4(), - common = require_common(), - rotl32 = utils.rotl32, - sum32 = utils.sum32, - sum32_3 = utils.sum32_3, - sum32_4 = utils.sum32_4, - BlockHash = common.BlockHash; - function RIPEMD160() { - if (!(this instanceof RIPEMD160)) return new RIPEMD160(); - BlockHash.call(this), - (this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]), - (this.endian = "little"); - } - utils.inherits(RIPEMD160, BlockHash); - exports.ripemd160 = RIPEMD160; - RIPEMD160.blockSize = 512; - RIPEMD160.outSize = 160; - RIPEMD160.hmacStrength = 192; - RIPEMD160.padLength = 64; - RIPEMD160.prototype._update = function (msg, start) { - for ( - var A = this.h[0], - B = this.h[1], - C = this.h[2], - D = this.h[3], - E = this.h[4], - Ah = A, - Bh = B, - Ch = C, - Dh = D, - Eh = E, - j = 0; - j < 80; - j++ - ) { - var T = sum32(rotl32(sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]), E); - (A = E), - (E = D), - (D = rotl32(C, 10)), - (C = B), - (B = T), - (T = sum32(rotl32(sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), sh[j]), Eh)), - (Ah = Eh), - (Eh = Dh), - (Dh = rotl32(Ch, 10)), - (Ch = Bh), - (Bh = T); - } - (T = sum32_3(this.h[1], C, Dh)), - (this.h[1] = sum32_3(this.h[2], D, Eh)), - (this.h[2] = sum32_3(this.h[3], E, Ah)), - (this.h[3] = sum32_3(this.h[4], A, Bh)), - (this.h[4] = sum32_3(this.h[0], B, Ch)), - (this.h[0] = T); - }; - RIPEMD160.prototype._digest = function (enc) { - return enc === "hex" ? utils.toHex32(this.h, "little") : utils.split32(this.h, "little"); - }; - function f(j, x, y, z) { - return j <= 15 - ? x ^ y ^ z - : j <= 31 - ? (x & y) | (~x & z) - : j <= 47 - ? (x | ~y) ^ z - : j <= 63 - ? (x & z) | (y & ~z) - : x ^ (y | ~z); - } - function K(j) { - return j <= 15 ? 0 : j <= 31 ? 1518500249 : j <= 47 ? 1859775393 : j <= 63 ? 2400959708 : 2840853838; - } - function Kh(j) { - return j <= 15 ? 1352829926 : j <= 31 ? 1548603684 : j <= 47 ? 1836072691 : j <= 63 ? 2053994217 : 0; - } - var r = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, - 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, - 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13, - ], - rh = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, - 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, - 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11, - ], - s = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6, - ], - sh = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11, - ]; - }, -}); - -// node_modules/hash.js/lib/hash/hmac.js -var require_hmac = __commonJS({ - "node_modules/hash.js/lib/hash/hmac.js"(exports, module) { - "use strict"; - var utils = require_utils4(), - assert = require_minimalistic_assert(); - function Hmac(hash, key, enc) { - if (!(this instanceof Hmac)) return new Hmac(hash, key, enc); - (this.Hash = hash), - (this.blockSize = hash.blockSize / 8), - (this.outSize = hash.outSize / 8), - (this.inner = null), - (this.outer = null), - this._init(utils.toArray(key, enc)); - } - module.exports = Hmac; - Hmac.prototype._init = function (key) { - key.length > this.blockSize && (key = new this.Hash().update(key).digest()), assert(key.length <= this.blockSize); - for (var i = key.length; i < this.blockSize; i++) key.push(0); - for (i = 0; i < key.length; i++) key[i] ^= 54; - for (this.inner = new this.Hash().update(key), i = 0; i < key.length; i++) key[i] ^= 106; - this.outer = new this.Hash().update(key); - }; - Hmac.prototype.update = function (msg, enc) { - return this.inner.update(msg, enc), this; - }; - Hmac.prototype.digest = function (enc) { - return this.outer.update(this.inner.digest()), this.outer.digest(enc); - }; - }, -}); - -// node_modules/hash.js/lib/hash.js -var require_hash2 = __commonJS({ - "node_modules/hash.js/lib/hash.js"(exports) { - var hash = exports; - hash.utils = require_utils4(); - hash.common = require_common(); - hash.sha = require_sha3(); - hash.ripemd = require_ripemd(); - hash.hmac = require_hmac(); - hash.sha1 = hash.sha.sha1; - hash.sha256 = hash.sha.sha256; - hash.sha224 = hash.sha.sha224; - hash.sha384 = hash.sha.sha384; - hash.sha512 = hash.sha.sha512; - hash.ripemd160 = hash.ripemd.ripemd160; - }, -}); - -// node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js -var require_secp256k1 = __commonJS({ - "node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js"(exports, module) { - module.exports = { - doubles: { - step: 4, - points: [ - [ - "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a", - "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821", - ], - [ - "8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508", - "11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf", - ], - [ - "175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739", - "d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695", - ], - [ - "363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640", - "4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9", - ], - [ - "8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c", - "4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36", - ], - [ - "723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda", - "96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f", - ], - [ - "eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa", - "5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999", - ], - [ - "100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0", - "cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09", - ], - [ - "e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d", - "9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d", - ], - [ - "feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d", - "e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088", - ], - [ - "da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1", - "9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d", - ], - [ - "53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0", - "5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8", - ], - [ - "8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047", - "10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a", - ], - [ - "385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862", - "283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453", - ], - [ - "6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7", - "7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160", - ], - [ - "3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd", - "56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0", - ], - [ - "85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83", - "7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6", - ], - [ - "948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a", - "53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589", - ], - [ - "6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8", - "bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17", - ], - [ - "e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d", - "4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda", - ], - [ - "e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725", - "7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd", - ], - [ - "213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754", - "4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2", - ], - [ - "4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c", - "17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6", - ], - [ - "fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6", - "6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f", - ], - [ - "76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39", - "c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01", - ], - [ - "c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891", - "893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3", - ], - [ - "d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b", - "febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f", - ], - [ - "b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03", - "2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7", - ], - [ - "e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d", - "eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78", - ], - [ - "a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070", - "7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1", - ], - [ - "90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4", - "e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150", - ], - [ - "8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da", - "662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82", - ], - [ - "e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11", - "1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc", - ], - [ - "8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e", - "efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b", - ], - [ - "e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41", - "2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51", - ], - [ - "b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef", - "67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45", - ], - [ - "d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8", - "db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120", - ], - [ - "324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d", - "648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84", - ], - [ - "4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96", - "35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d", - ], - [ - "9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd", - "ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d", - ], - [ - "6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5", - "9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8", - ], - [ - "a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266", - "40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8", - ], - [ - "7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71", - "34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac", - ], - [ - "928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac", - "c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f", - ], - [ - "85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751", - "1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962", - ], - [ - "ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e", - "493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907", - ], - [ - "827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241", - "c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec", - ], - [ - "eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3", - "be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d", - ], - [ - "e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f", - "4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414", - ], - [ - "1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19", - "aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd", - ], - [ - "146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be", - "b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0", - ], - [ - "fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9", - "6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811", - ], - [ - "da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2", - "8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1", - ], - [ - "a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13", - "7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c", - ], - [ - "174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c", - "ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73", - ], - [ - "959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba", - "2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd", - ], - [ - "d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151", - "e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405", - ], - [ - "64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073", - "d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589", - ], - [ - "8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458", - "38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e", - ], - [ - "13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b", - "69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27", - ], - [ - "bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366", - "d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1", - ], - [ - "8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa", - "40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482", - ], - [ - "8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0", - "620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945", - ], - [ - "dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787", - "7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573", - ], - [ - "f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e", - "ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82", - ], - ], - }, - naf: { - wnd: 7, - points: [ - [ - "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9", - "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672", - ], - [ - "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4", - "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6", - ], - [ - "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc", - "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da", - ], - [ - "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe", - "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37", - ], - [ - "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb", - "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b", - ], - [ - "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8", - "ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81", - ], - [ - "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e", - "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58", - ], - [ - "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34", - "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77", - ], - [ - "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c", - "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a", - ], - [ - "352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5", - "321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c", - ], - [ - "2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f", - "2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67", - ], - [ - "9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714", - "73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402", - ], - [ - "daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729", - "a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55", - ], - [ - "c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db", - "2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482", - ], - [ - "6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4", - "e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82", - ], - [ - "1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5", - "b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396", - ], - [ - "605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479", - "2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49", - ], - [ - "62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d", - "80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf", - ], - [ - "80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f", - "1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a", - ], - [ - "7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb", - "d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7", - ], - [ - "d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9", - "eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933", - ], - [ - "49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963", - "758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a", - ], - [ - "77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74", - "958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6", - ], - [ - "f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530", - "e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37", - ], - [ - "463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b", - "5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e", - ], - [ - "f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247", - "cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6", - ], - [ - "caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1", - "cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476", - ], - [ - "2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120", - "4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40", - ], - [ - "7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435", - "91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61", - ], - [ - "754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18", - "673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683", - ], - [ - "e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8", - "59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5", - ], - [ - "186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb", - "3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b", - ], - [ - "df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f", - "55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417", - ], - [ - "5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143", - "efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868", - ], - [ - "290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba", - "e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a", - ], - [ - "af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45", - "f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6", - ], - [ - "766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a", - "744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996", - ], - [ - "59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e", - "c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e", - ], - [ - "f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8", - "e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d", - ], - [ - "7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c", - "30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2", - ], - [ - "948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519", - "e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e", - ], - [ - "7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab", - "100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437", - ], - [ - "3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca", - "ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311", - ], - [ - "d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf", - "8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4", - ], - [ - "1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610", - "68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575", - ], - [ - "733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4", - "f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d", - ], - [ - "15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c", - "d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d", - ], - [ - "a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940", - "edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629", - ], - [ - "e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980", - "a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06", - ], - [ - "311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3", - "66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374", - ], - [ - "34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf", - "9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee", - ], - [ - "f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63", - "4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1", - ], - [ - "d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448", - "fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b", - ], - [ - "32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf", - "5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661", - ], - [ - "7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5", - "8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6", - ], - [ - "ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6", - "8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e", - ], - [ - "16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5", - "5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d", - ], - [ - "eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99", - "f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc", - ], - [ - "78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51", - "f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4", - ], - [ - "494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5", - "42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c", - ], - [ - "a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5", - "204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b", - ], - [ - "c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997", - "4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913", - ], - [ - "841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881", - "73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154", - ], - [ - "5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5", - "39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865", - ], - [ - "36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66", - "d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc", - ], - [ - "336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726", - "ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224", - ], - [ - "8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede", - "6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e", - ], - [ - "1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94", - "60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6", - ], - [ - "85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31", - "3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511", - ], - [ - "29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51", - "b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b", - ], - [ - "a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252", - "ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2", - ], - [ - "4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5", - "cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c", - ], - [ - "d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b", - "6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3", - ], - [ - "ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4", - "322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d", - ], - [ - "af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f", - "6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700", - ], - [ - "e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889", - "2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4", - ], - [ - "591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246", - "b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196", - ], - [ - "11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984", - "998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4", - ], - [ - "3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a", - "b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257", - ], - [ - "cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030", - "bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13", - ], - [ - "c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197", - "6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096", - ], - [ - "c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593", - "c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38", - ], - [ - "a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef", - "21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f", - ], - [ - "347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38", - "60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448", - ], - [ - "da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a", - "49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a", - ], - [ - "c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111", - "5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4", - ], - [ - "4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502", - "7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437", - ], - [ - "3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea", - "be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7", - ], - [ - "cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26", - "8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d", - ], - [ - "b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986", - "39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a", - ], - [ - "d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e", - "62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54", - ], - [ - "48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4", - "25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77", - ], - [ - "dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda", - "ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517", - ], - [ - "6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859", - "cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10", - ], - [ - "e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f", - "f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125", - ], - [ - "eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c", - "6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e", - ], - [ - "13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942", - "fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1", - ], - [ - "ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a", - "1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2", - ], - [ - "b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80", - "5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423", - ], - [ - "ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d", - "438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8", - ], - [ - "8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1", - "cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758", - ], - [ - "52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63", - "c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375", - ], - [ - "e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352", - "6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d", - ], - [ - "7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193", - "ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec", - ], - [ - "5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00", - "9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0", - ], - [ - "32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58", - "ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c", - ], - [ - "e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7", - "d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4", - ], - [ - "8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8", - "c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f", - ], - [ - "4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e", - "67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649", - ], - [ - "3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d", - "cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826", - ], - [ - "674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b", - "299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5", - ], - [ - "d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f", - "f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87", - ], - [ - "30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6", - "462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b", - ], - [ - "be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297", - "62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc", - ], - [ - "93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a", - "7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c", - ], - [ - "b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c", - "ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f", - ], - [ - "d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52", - "4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a", - ], - [ - "d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb", - "bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46", - ], - [ - "463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065", - "bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f", - ], - [ - "7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917", - "603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03", - ], - [ - "74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9", - "cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08", - ], - [ - "30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3", - "553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8", - ], - [ - "9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57", - "712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373", - ], - [ - "176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66", - "ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3", - ], - [ - "75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8", - "9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8", - ], - [ - "809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721", - "9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1", - ], - [ - "1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180", - "4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9", - ], - ], - }, - }; - }, -}); - -// node_modules/elliptic/lib/elliptic/curves.js -var require_curves = __commonJS({ - "node_modules/elliptic/lib/elliptic/curves.js"(exports) { - "use strict"; - var curves = exports, - hash = require_hash2(), - curve = require_curve(), - utils = require_utils3(), - assert = utils.assert; - function PresetCurve(options) { - options.type === "short" - ? (this.curve = new curve.short(options)) - : options.type === "edwards" - ? (this.curve = new curve.edwards(options)) - : (this.curve = new curve.mont(options)), - (this.g = this.curve.g), - (this.n = this.curve.n), - (this.hash = options.hash), - assert(this.g.validate(), "Invalid curve"), - assert(this.g.mul(this.n).isInfinity(), "Invalid curve, G*N != O"); - } - curves.PresetCurve = PresetCurve; - function defineCurve(name, options) { - Object.defineProperty(curves, name, { - configurable: !0, - enumerable: !0, - get: function () { - var curve2 = new PresetCurve(options); - return ( - Object.defineProperty(curves, name, { - configurable: !0, - enumerable: !0, - value: curve2, - }), - curve2 - ); - }, - }); - } - defineCurve("p192", { - type: "short", - prime: "p192", - p: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff", - a: "ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc", - b: "64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1", - n: "ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831", - hash: hash.sha256, - gRed: !1, - g: [ - "188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012", - "07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811", - ], - }); - defineCurve("p224", { - type: "short", - prime: "p224", - p: "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001", - a: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe", - b: "b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4", - n: "ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d", - hash: hash.sha256, - gRed: !1, - g: [ - "b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21", - "bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34", - ], - }); - defineCurve("p256", { - type: "short", - prime: null, - p: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff", - a: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc", - b: "5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b", - n: "ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551", - hash: hash.sha256, - gRed: !1, - g: [ - "6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296", - "4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5", - ], - }); - defineCurve("p384", { - type: "short", - prime: null, - p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff", - a: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc", - b: "b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef", - n: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973", - hash: hash.sha384, - gRed: !1, - g: [ - "aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7", - "3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f", - ], - }); - defineCurve("p521", { - type: "short", - prime: null, - p: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff", - a: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc", - b: "00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00", - n: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409", - hash: hash.sha512, - gRed: !1, - g: [ - "000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66", - "00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650", - ], - }); - defineCurve("curve25519", { - type: "mont", - prime: "p25519", - p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed", - a: "76d06", - b: "1", - n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed", - hash: hash.sha256, - gRed: !1, - g: ["9"], - }); - defineCurve("ed25519", { - type: "edwards", - prime: "p25519", - p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed", - a: "-1", - c: "1", - d: "52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3", - n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed", - hash: hash.sha256, - gRed: !1, - g: [ - "216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a", - "6666666666666666666666666666666666666666666666666666666666666658", - ], - }); - var pre; - try { - pre = require_secp256k1(); - } catch { - pre = void 0; - } - defineCurve("secp256k1", { - type: "short", - prime: "k256", - p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f", - a: "0", - b: "7", - n: "ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141", - h: "1", - hash: hash.sha256, - beta: "7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee", - lambda: "5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72", - basis: [ - { - a: "3086d221a7d46bcde86c90e49284eb15", - b: "-e4437ed6010e88286f547fa90abfe4c3", - }, - { - a: "114ca50f7a8e2f3f657c1108d9d44cfd8", - b: "3086d221a7d46bcde86c90e49284eb15", - }, - ], - gRed: !1, - g: [ - "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", - "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8", - pre, - ], - }); - }, -}); - -// node_modules/hmac-drbg/lib/hmac-drbg.js -var require_hmac_drbg = __commonJS({ - "node_modules/hmac-drbg/lib/hmac-drbg.js"(exports, module) { - "use strict"; - var hash = require_hash2(), - utils = require_utils2(), - assert = require_minimalistic_assert(); - function HmacDRBG(options) { - if (!(this instanceof HmacDRBG)) return new HmacDRBG(options); - (this.hash = options.hash), - (this.predResist = !!options.predResist), - (this.outLen = this.hash.outSize), - (this.minEntropy = options.minEntropy || this.hash.hmacStrength), - (this._reseed = null), - (this.reseedInterval = null), - (this.K = null), - (this.V = null); - var entropy = utils.toArray(options.entropy, options.entropyEnc || "hex"), - nonce = utils.toArray(options.nonce, options.nonceEnc || "hex"), - pers = utils.toArray(options.pers, options.persEnc || "hex"); - assert(entropy.length >= this.minEntropy / 8, "Not enough entropy. Minimum is: " + this.minEntropy + " bits"), - this._init(entropy, nonce, pers); - } - module.exports = HmacDRBG; - HmacDRBG.prototype._init = function (entropy, nonce, pers) { - var seed = entropy.concat(nonce).concat(pers); - (this.K = new Array(this.outLen / 8)), (this.V = new Array(this.outLen / 8)); - for (var i = 0; i < this.V.length; i++) (this.K[i] = 0), (this.V[i] = 1); - this._update(seed), (this._reseed = 1), (this.reseedInterval = 281474976710656); - }; - HmacDRBG.prototype._hmac = function () { - return new hash.hmac(this.hash, this.K); - }; - HmacDRBG.prototype._update = function (seed) { - var kmac = this._hmac().update(this.V).update([0]); - seed && (kmac = kmac.update(seed)), - (this.K = kmac.digest()), - (this.V = this._hmac().update(this.V).digest()), - seed && - ((this.K = this._hmac().update(this.V).update([1]).update(seed).digest()), - (this.V = this._hmac().update(this.V).digest())); - }; - HmacDRBG.prototype.reseed = function (entropy, entropyEnc, add, addEnc) { - typeof entropyEnc != "string" && ((addEnc = add), (add = entropyEnc), (entropyEnc = null)), - (entropy = utils.toArray(entropy, entropyEnc)), - (add = utils.toArray(add, addEnc)), - assert(entropy.length >= this.minEntropy / 8, "Not enough entropy. Minimum is: " + this.minEntropy + " bits"), - this._update(entropy.concat(add || [])), - (this._reseed = 1); - }; - HmacDRBG.prototype.generate = function (len, enc, add, addEnc) { - if (this._reseed > this.reseedInterval) throw new Error("Reseed is required"); - typeof enc != "string" && ((addEnc = add), (add = enc), (enc = null)), - add && ((add = utils.toArray(add, addEnc || "hex")), this._update(add)); - for (var temp = []; temp.length < len; ) - (this.V = this._hmac().update(this.V).digest()), (temp = temp.concat(this.V)); - var res = temp.slice(0, len); - return this._update(add), this._reseed++, utils.encode(res, enc); - }; - }, -}); - -// node_modules/elliptic/lib/elliptic/ec/key.js -var require_key = __commonJS({ - "node_modules/elliptic/lib/elliptic/ec/key.js"(exports, module) { - "use strict"; - var BN = require_bn4(), - utils = require_utils3(), - assert = utils.assert; - function KeyPair(ec, options) { - (this.ec = ec), - (this.priv = null), - (this.pub = null), - options.priv && this._importPrivate(options.priv, options.privEnc), - options.pub && this._importPublic(options.pub, options.pubEnc); - } - module.exports = KeyPair; - KeyPair.fromPublic = function (ec, pub, enc) { - return pub instanceof KeyPair - ? pub - : new KeyPair(ec, { - pub, - pubEnc: enc, - }); - }; - KeyPair.fromPrivate = function (ec, priv, enc) { - return priv instanceof KeyPair - ? priv - : new KeyPair(ec, { - priv, - privEnc: enc, - }); - }; - KeyPair.prototype.validate = function () { - var pub = this.getPublic(); - return pub.isInfinity() - ? { result: !1, reason: "Invalid public key" } - : pub.validate() - ? pub.mul(this.ec.curve.n).isInfinity() - ? { result: !0, reason: null } - : { result: !1, reason: "Public key * N != O" } - : { result: !1, reason: "Public key is not a point" }; - }; - KeyPair.prototype.getPublic = function (compact, enc) { - return ( - typeof compact == "string" && ((enc = compact), (compact = null)), - this.pub || (this.pub = this.ec.g.mul(this.priv)), - enc ? this.pub.encode(enc, compact) : this.pub - ); - }; - KeyPair.prototype.getPrivate = function (enc) { - return enc === "hex" ? this.priv.toString(16, 2) : this.priv; - }; - KeyPair.prototype._importPrivate = function (key, enc) { - (this.priv = new BN(key, enc || 16)), (this.priv = this.priv.umod(this.ec.curve.n)); - }; - KeyPair.prototype._importPublic = function (key, enc) { - if (key.x || key.y) { - this.ec.curve.type === "mont" - ? assert(key.x, "Need x coordinate") - : (this.ec.curve.type === "short" || this.ec.curve.type === "edwards") && - assert(key.x && key.y, "Need both x and y coordinate"), - (this.pub = this.ec.curve.point(key.x, key.y)); - return; - } - this.pub = this.ec.curve.decodePoint(key, enc); - }; - KeyPair.prototype.derive = function (pub) { - return pub.validate() || assert(pub.validate(), "public point not validated"), pub.mul(this.priv).getX(); - }; - KeyPair.prototype.sign = function (msg, enc, options) { - return this.ec.sign(msg, this, enc, options); - }; - KeyPair.prototype.verify = function (msg, signature) { - return this.ec.verify(msg, signature, this); - }; - KeyPair.prototype.inspect = function () { - return ( - "<Key priv: " + (this.priv && this.priv.toString(16, 2)) + " pub: " + (this.pub && this.pub.inspect()) + " >" - ); - }; - }, -}); - -// node_modules/elliptic/lib/elliptic/ec/signature.js -var require_signature = __commonJS({ - "node_modules/elliptic/lib/elliptic/ec/signature.js"(exports, module) { - "use strict"; - var BN = require_bn4(), - utils = require_utils3(), - assert = utils.assert; - function Signature(options, enc) { - if (options instanceof Signature) return options; - this._importDER(options, enc) || - (assert(options.r && options.s, "Signature without r or s"), - (this.r = new BN(options.r, 16)), - (this.s = new BN(options.s, 16)), - options.recoveryParam === void 0 ? (this.recoveryParam = null) : (this.recoveryParam = options.recoveryParam)); - } - module.exports = Signature; - function Position() { - this.place = 0; - } - function getLength(buf, p) { - var initial = buf[p.place++]; - if (!(initial & 128)) return initial; - var octetLen = initial & 15; - if (octetLen === 0 || octetLen > 4) return !1; - for (var val = 0, i = 0, off = p.place; i < octetLen; i++, off++) (val <<= 8), (val |= buf[off]), (val >>>= 0); - return val <= 127 ? !1 : ((p.place = off), val); - } - function rmPadding(buf) { - for (var i = 0, len = buf.length - 1; !buf[i] && !(buf[i + 1] & 128) && i < len; ) i++; - return i === 0 ? buf : buf.slice(i); - } - Signature.prototype._importDER = function (data, enc) { - data = utils.toArray(data, enc); - var p = new Position(); - if (data[p.place++] !== 48) return !1; - var len = getLength(data, p); - if (len === !1 || len + p.place !== data.length || data[p.place++] !== 2) return !1; - var rlen = getLength(data, p); - if (rlen === !1) return !1; - var r = data.slice(p.place, rlen + p.place); - if (((p.place += rlen), data[p.place++] !== 2)) return !1; - var slen = getLength(data, p); - if (slen === !1 || data.length !== slen + p.place) return !1; - var s = data.slice(p.place, slen + p.place); - if (r[0] === 0) - if (r[1] & 128) r = r.slice(1); - else return !1; - if (s[0] === 0) - if (s[1] & 128) s = s.slice(1); - else return !1; - return (this.r = new BN(r)), (this.s = new BN(s)), (this.recoveryParam = null), !0; - }; - function constructLength(arr, len) { - if (len < 128) { - arr.push(len); - return; - } - var octets = 1 + ((Math.log(len) / Math.LN2) >>> 3); - for (arr.push(octets | 128); --octets; ) arr.push((len >>> (octets << 3)) & 255); - arr.push(len); - } - Signature.prototype.toDER = function (enc) { - var r = this.r.toArray(), - s = this.s.toArray(); - for ( - r[0] & 128 && (r = [0].concat(r)), s[0] & 128 && (s = [0].concat(s)), r = rmPadding(r), s = rmPadding(s); - !s[0] && !(s[1] & 128); - - ) - s = s.slice(1); - var arr = [2]; - constructLength(arr, r.length), (arr = arr.concat(r)), arr.push(2), constructLength(arr, s.length); - var backHalf = arr.concat(s), - res = [48]; - return constructLength(res, backHalf.length), (res = res.concat(backHalf)), utils.encode(res, enc); - }; - }, -}); - -// node_modules/elliptic/lib/elliptic/ec/index.js -var require_ec = __commonJS({ - "node_modules/elliptic/lib/elliptic/ec/index.js"(exports, module) { - "use strict"; - var BN = require_bn4(), - HmacDRBG = require_hmac_drbg(), - utils = require_utils3(), - curves = require_curves(), - rand = require_brorand(), - assert = utils.assert, - KeyPair = require_key(), - Signature = require_signature(); - function EC(options) { - if (!(this instanceof EC)) return new EC(options); - typeof options == "string" && - (assert(Object.prototype.hasOwnProperty.call(curves, options), "Unknown curve " + options), - (options = curves[options])), - options instanceof curves.PresetCurve && (options = { curve: options }), - (this.curve = options.curve.curve), - (this.n = this.curve.n), - (this.nh = this.n.ushrn(1)), - (this.g = this.curve.g), - (this.g = options.curve.g), - this.g.precompute(options.curve.n.bitLength() + 1), - (this.hash = options.hash || options.curve.hash); - } - module.exports = EC; - EC.prototype.keyPair = function (options) { - return new KeyPair(this, options); - }; - EC.prototype.keyFromPrivate = function (priv, enc) { - return KeyPair.fromPrivate(this, priv, enc); - }; - EC.prototype.keyFromPublic = function (pub, enc) { - return KeyPair.fromPublic(this, pub, enc); - }; - EC.prototype.genKeyPair = function (options) { - options || (options = {}); - for ( - var drbg = new HmacDRBG({ - hash: this.hash, - pers: options.pers, - persEnc: options.persEnc || "utf8", - entropy: options.entropy || rand(this.hash.hmacStrength), - entropyEnc: (options.entropy && options.entropyEnc) || "utf8", - nonce: this.n.toArray(), - }), - bytes = this.n.byteLength(), - ns2 = this.n.sub(new BN(2)); - ; - - ) { - var priv = new BN(drbg.generate(bytes)); - if (!(priv.cmp(ns2) > 0)) return priv.iaddn(1), this.keyFromPrivate(priv); - } - }; - EC.prototype._truncateToN = function (msg, truncOnly) { - var delta = msg.byteLength() * 8 - this.n.bitLength(); - return delta > 0 && (msg = msg.ushrn(delta)), !truncOnly && msg.cmp(this.n) >= 0 ? msg.sub(this.n) : msg; - }; - EC.prototype.sign = function (msg, key, enc, options) { - typeof enc == "object" && ((options = enc), (enc = null)), - options || (options = {}), - (key = this.keyFromPrivate(key, enc)), - (msg = this._truncateToN(new BN(msg, 16))); - for ( - var bytes = this.n.byteLength(), - bkey = key.getPrivate().toArray("be", bytes), - nonce = msg.toArray("be", bytes), - drbg = new HmacDRBG({ - hash: this.hash, - entropy: bkey, - nonce, - pers: options.pers, - persEnc: options.persEnc || "utf8", - }), - ns1 = this.n.sub(new BN(1)), - iter = 0; - ; - iter++ - ) { - var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength())); - if (((k = this._truncateToN(k, !0)), !(k.cmpn(1) <= 0 || k.cmp(ns1) >= 0))) { - var kp = this.g.mul(k); - if (!kp.isInfinity()) { - var kpX = kp.getX(), - r = kpX.umod(this.n); - if (r.cmpn(0) !== 0) { - var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); - if (((s = s.umod(this.n)), s.cmpn(0) !== 0)) { - var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0); - return ( - options.canonical && s.cmp(this.nh) > 0 && ((s = this.n.sub(s)), (recoveryParam ^= 1)), - new Signature({ r, s, recoveryParam }) - ); - } - } - } - } - } - }; - EC.prototype.verify = function (msg, signature, key, enc) { - (msg = this._truncateToN(new BN(msg, 16))), - (key = this.keyFromPublic(key, enc)), - (signature = new Signature(signature, "hex")); - var r = signature.r, - s = signature.s; - if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0 || s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return !1; - var sinv = s.invm(this.n), - u1 = sinv.mul(msg).umod(this.n), - u2 = sinv.mul(r).umod(this.n), - p; - return this.curve._maxwellTrick - ? ((p = this.g.jmulAdd(u1, key.getPublic(), u2)), p.isInfinity() ? !1 : p.eqXToP(r)) - : ((p = this.g.mulAdd(u1, key.getPublic(), u2)), p.isInfinity() ? !1 : p.getX().umod(this.n).cmp(r) === 0); - }; - EC.prototype.recoverPubKey = function (msg, signature, j, enc) { - assert((3 & j) === j, "The recovery param is more than two bits"), (signature = new Signature(signature, enc)); - var n = this.n, - e = new BN(msg), - r = signature.r, - s = signature.s, - isYOdd = j & 1, - isSecondKey = j >> 1; - if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) - throw new Error("Unable to find sencond key candinate"); - isSecondKey ? (r = this.curve.pointFromX(r.add(this.curve.n), isYOdd)) : (r = this.curve.pointFromX(r, isYOdd)); - var rInv = signature.r.invm(n), - s1 = n.sub(e).mul(rInv).umod(n), - s2 = s.mul(rInv).umod(n); - return this.g.mulAdd(s1, r, s2); - }; - EC.prototype.getKeyRecoveryParam = function (e, signature, Q, enc) { - if (((signature = new Signature(signature, enc)), signature.recoveryParam !== null)) - return signature.recoveryParam; - for (var i = 0; i < 4; i++) { - var Qprime; - try { - Qprime = this.recoverPubKey(e, signature, i); - } catch { - continue; - } - if (Qprime.eq(Q)) return i; - } - throw new Error("Unable to find valid recovery factor"); - }; - }, -}); - -// node_modules/elliptic/lib/elliptic/eddsa/key.js -var require_key2 = __commonJS({ - "node_modules/elliptic/lib/elliptic/eddsa/key.js"(exports, module) { - "use strict"; - var utils = require_utils3(), - assert = utils.assert, - parseBytes = utils.parseBytes, - cachedProperty = utils.cachedProperty; - function KeyPair(eddsa, params) { - (this.eddsa = eddsa), - (this._secret = parseBytes(params.secret)), - eddsa.isPoint(params.pub) ? (this._pub = params.pub) : (this._pubBytes = parseBytes(params.pub)); - } - KeyPair.fromPublic = function (eddsa, pub) { - return pub instanceof KeyPair ? pub : new KeyPair(eddsa, { pub }); - }; - KeyPair.fromSecret = function (eddsa, secret) { - return secret instanceof KeyPair ? secret : new KeyPair(eddsa, { secret }); - }; - KeyPair.prototype.secret = function () { - return this._secret; - }; - cachedProperty(KeyPair, "pubBytes", function () { - return this.eddsa.encodePoint(this.pub()); - }); - cachedProperty(KeyPair, "pub", function () { - return this._pubBytes ? this.eddsa.decodePoint(this._pubBytes) : this.eddsa.g.mul(this.priv()); - }); - cachedProperty(KeyPair, "privBytes", function () { - var eddsa = this.eddsa, - hash = this.hash(), - lastIx = eddsa.encodingLength - 1, - a = hash.slice(0, eddsa.encodingLength); - return (a[0] &= 248), (a[lastIx] &= 127), (a[lastIx] |= 64), a; - }); - cachedProperty(KeyPair, "priv", function () { - return this.eddsa.decodeInt(this.privBytes()); - }); - cachedProperty(KeyPair, "hash", function () { - return this.eddsa.hash().update(this.secret()).digest(); - }); - cachedProperty(KeyPair, "messagePrefix", function () { - return this.hash().slice(this.eddsa.encodingLength); - }); - KeyPair.prototype.sign = function (message) { - return assert(this._secret, "KeyPair can only verify"), this.eddsa.sign(message, this); - }; - KeyPair.prototype.verify = function (message, sig) { - return this.eddsa.verify(message, sig, this); - }; - KeyPair.prototype.getSecret = function (enc) { - return assert(this._secret, "KeyPair is public only"), utils.encode(this.secret(), enc); - }; - KeyPair.prototype.getPublic = function (enc) { - return utils.encode(this.pubBytes(), enc); - }; - module.exports = KeyPair; - }, -}); - -// node_modules/elliptic/lib/elliptic/eddsa/signature.js -var require_signature2 = __commonJS({ - "node_modules/elliptic/lib/elliptic/eddsa/signature.js"(exports, module) { - "use strict"; - var BN = require_bn4(), - utils = require_utils3(), - assert = utils.assert, - cachedProperty = utils.cachedProperty, - parseBytes = utils.parseBytes; - function Signature(eddsa, sig) { - (this.eddsa = eddsa), - typeof sig != "object" && (sig = parseBytes(sig)), - Array.isArray(sig) && - (sig = { - R: sig.slice(0, eddsa.encodingLength), - S: sig.slice(eddsa.encodingLength), - }), - assert(sig.R && sig.S, "Signature without R or S"), - eddsa.isPoint(sig.R) && (this._R = sig.R), - sig.S instanceof BN && (this._S = sig.S), - (this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded), - (this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded); - } - cachedProperty(Signature, "S", function () { - return this.eddsa.decodeInt(this.Sencoded()); - }); - cachedProperty(Signature, "R", function () { - return this.eddsa.decodePoint(this.Rencoded()); - }); - cachedProperty(Signature, "Rencoded", function () { - return this.eddsa.encodePoint(this.R()); - }); - cachedProperty(Signature, "Sencoded", function () { - return this.eddsa.encodeInt(this.S()); - }); - Signature.prototype.toBytes = function () { - return this.Rencoded().concat(this.Sencoded()); - }; - Signature.prototype.toHex = function () { - return utils.encode(this.toBytes(), "hex").toUpperCase(); - }; - module.exports = Signature; - }, -}); - -// node_modules/elliptic/lib/elliptic/eddsa/index.js -var require_eddsa = __commonJS({ - "node_modules/elliptic/lib/elliptic/eddsa/index.js"(exports, module) { - "use strict"; - var hash = require_hash2(), - curves = require_curves(), - utils = require_utils3(), - assert = utils.assert, - parseBytes = utils.parseBytes, - KeyPair = require_key2(), - Signature = require_signature2(); - function EDDSA(curve) { - if ((assert(curve === "ed25519", "only tested with ed25519 so far"), !(this instanceof EDDSA))) - return new EDDSA(curve); - (curve = curves[curve].curve), - (this.curve = curve), - (this.g = curve.g), - this.g.precompute(curve.n.bitLength() + 1), - (this.pointClass = curve.point().constructor), - (this.encodingLength = Math.ceil(curve.n.bitLength() / 8)), - (this.hash = hash.sha512); - } - module.exports = EDDSA; - EDDSA.prototype.sign = function (message, secret) { - message = parseBytes(message); - var key = this.keyFromSecret(secret), - r = this.hashInt(key.messagePrefix(), message), - R = this.g.mul(r), - Rencoded = this.encodePoint(R), - s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv()), - S = r.add(s_).umod(this.curve.n); - return this.makeSignature({ R, S, Rencoded }); - }; - EDDSA.prototype.verify = function (message, sig, pub) { - (message = parseBytes(message)), (sig = this.makeSignature(sig)); - var key = this.keyFromPublic(pub), - h = this.hashInt(sig.Rencoded(), key.pubBytes(), message), - SG = this.g.mul(sig.S()), - RplusAh = sig.R().add(key.pub().mul(h)); - return RplusAh.eq(SG); - }; - EDDSA.prototype.hashInt = function () { - for (var hash2 = this.hash(), i = 0; i < arguments.length; i++) hash2.update(arguments[i]); - return utils.intFromLE(hash2.digest()).umod(this.curve.n); - }; - EDDSA.prototype.keyFromPublic = function (pub) { - return KeyPair.fromPublic(this, pub); - }; - EDDSA.prototype.keyFromSecret = function (secret) { - return KeyPair.fromSecret(this, secret); - }; - EDDSA.prototype.makeSignature = function (sig) { - return sig instanceof Signature ? sig : new Signature(this, sig); - }; - EDDSA.prototype.encodePoint = function (point) { - var enc = point.getY().toArray("le", this.encodingLength); - return (enc[this.encodingLength - 1] |= point.getX().isOdd() ? 128 : 0), enc; - }; - EDDSA.prototype.decodePoint = function (bytes) { - bytes = utils.parseBytes(bytes); - var lastIx = bytes.length - 1, - normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & -129), - xIsOdd = (bytes[lastIx] & 128) !== 0, - y = utils.intFromLE(normed); - return this.curve.pointFromY(y, xIsOdd); - }; - EDDSA.prototype.encodeInt = function (num) { - return num.toArray("le", this.encodingLength); - }; - EDDSA.prototype.decodeInt = function (bytes) { - return utils.intFromLE(bytes); - }; - EDDSA.prototype.isPoint = function (val) { - return val instanceof this.pointClass; - }; - }, -}); - -// node_modules/elliptic/lib/elliptic.js -var require_elliptic = __commonJS({ - "node_modules/elliptic/lib/elliptic.js"(exports) { - "use strict"; - var elliptic = exports; - elliptic.version = require_package().version; - elliptic.utils = require_utils3(); - elliptic.rand = require_brorand(); - elliptic.curve = require_curve(); - elliptic.curves = require_curves(); - elliptic.ec = require_ec(); - elliptic.eddsa = require_eddsa(); - }, -}); - -// node_modules/asn1.js/node_modules/bn.js/lib/bn.js -var require_bn5 = __commonJS({ - "node_modules/asn1.js/node_modules/bn.js/lib/bn.js"(exports, module) { - (function (module2, exports2) { - "use strict"; - function assert(val, msg) { - if (!val) throw new Error(msg || "Assertion failed"); - } - function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - (TempCtor.prototype = superCtor.prototype), - (ctor.prototype = new TempCtor()), - (ctor.prototype.constructor = ctor); - } - function BN(number, base, endian) { - if (BN.isBN(number)) return number; - (this.negative = 0), - (this.words = null), - (this.length = 0), - (this.red = null), - number !== null && - ((base === "le" || base === "be") && ((endian = base), (base = 10)), - this._init(number || 0, base || 10, endian || "be")); - } - typeof module2 == "object" ? (module2.exports = BN) : (exports2.BN = BN), (BN.BN = BN), (BN.wordSize = 26); - var Buffer2; - try { - typeof window < "u" && typeof window.Buffer < "u" - ? (Buffer2 = window.Buffer) - : (Buffer2 = __require("buffer").Buffer); - } catch {} - (BN.isBN = function (num) { - return num instanceof BN - ? !0 - : num !== null && - typeof num == "object" && - num.constructor.wordSize === BN.wordSize && - Array.isArray(num.words); - }), - (BN.max = function (left, right) { - return left.cmp(right) > 0 ? left : right; - }), - (BN.min = function (left, right) { - return left.cmp(right) < 0 ? left : right; - }), - (BN.prototype._init = function (number, base, endian) { - if (typeof number == "number") return this._initNumber(number, base, endian); - if (typeof number == "object") return this._initArray(number, base, endian); - base === "hex" && (base = 16), - assert(base === (base | 0) && base >= 2 && base <= 36), - (number = number.toString().replace(/\s+/g, "")); - var start = 0; - number[0] === "-" && (start++, (this.negative = 1)), - start < number.length && - (base === 16 - ? this._parseHex(number, start, endian) - : (this._parseBase(number, base, start), - endian === "le" && this._initArray(this.toArray(), base, endian))); - }), - (BN.prototype._initNumber = function (number, base, endian) { - number < 0 && ((this.negative = 1), (number = -number)), - number < 67108864 - ? ((this.words = [number & 67108863]), (this.length = 1)) - : number < 4503599627370496 - ? ((this.words = [number & 67108863, (number / 67108864) & 67108863]), (this.length = 2)) - : (assert(number < 9007199254740992), - (this.words = [number & 67108863, (number / 67108864) & 67108863, 1]), - (this.length = 3)), - endian === "le" && this._initArray(this.toArray(), base, endian); - }), - (BN.prototype._initArray = function (number, base, endian) { - if ((assert(typeof number.length == "number"), number.length <= 0)) - return (this.words = [0]), (this.length = 1), this; - (this.length = Math.ceil(number.length / 3)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var j, - w, - off = 0; - if (endian === "be") - for (i = number.length - 1, j = 0; i >= 0; i -= 3) - (w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - else if (endian === "le") - for (i = 0, j = 0; i < number.length; i += 3) - (w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - return this.strip(); - }); - function parseHex4Bits(string, index) { - var c = string.charCodeAt(index); - return c >= 65 && c <= 70 ? c - 55 : c >= 97 && c <= 102 ? c - 87 : (c - 48) & 15; - } - function parseHexByte(string, lowerBound, index) { - var r = parseHex4Bits(string, index); - return index - 1 >= lowerBound && (r |= parseHex4Bits(string, index - 1) << 4), r; - } - BN.prototype._parseHex = function (number, start, endian) { - (this.length = Math.ceil((number.length - start) / 6)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var off = 0, - j = 0, - w; - if (endian === "be") - for (i = number.length - 1; i >= start; i -= 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - else { - var parseLength = number.length - start; - for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - } - this.strip(); - }; - function parseBase(str, start, end, mul) { - for (var r = 0, len = Math.min(str.length, end), i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - (r *= mul), c >= 49 ? (r += c - 49 + 10) : c >= 17 ? (r += c - 17 + 10) : (r += c); - } - return r; - } - (BN.prototype._parseBase = function (number, base, start) { - (this.words = [0]), (this.length = 1); - for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) limbLen++; - limbLen--, (limbPow = (limbPow / base) | 0); - for ( - var total = number.length - start, - mod = total % limbLen, - end = Math.min(total, total - mod) + start, - word = 0, - i = start; - i < end; - i += limbLen - ) - (word = parseBase(number, i, i + limbLen, base)), - this.imuln(limbPow), - this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - if (mod !== 0) { - var pow = 1; - for (word = parseBase(number, i, number.length, base), i = 0; i < mod; i++) pow *= base; - this.imuln(pow), this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - } - this.strip(); - }), - (BN.prototype.copy = function (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) dest.words[i] = this.words[i]; - (dest.length = this.length), (dest.negative = this.negative), (dest.red = this.red); - }), - (BN.prototype.clone = function () { - var r = new BN(null); - return this.copy(r), r; - }), - (BN.prototype._expand = function (size) { - for (; this.length < size; ) this.words[this.length++] = 0; - return this; - }), - (BN.prototype.strip = function () { - for (; this.length > 1 && this.words[this.length - 1] === 0; ) this.length--; - return this._normSign(); - }), - (BN.prototype._normSign = function () { - return this.length === 1 && this.words[0] === 0 && (this.negative = 0), this; - }), - (BN.prototype.inspect = function () { - return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">"; - }); - var zeros = [ - "", - "0", - "00", - "000", - "0000", - "00000", - "000000", - "0000000", - "00000000", - "000000000", - "0000000000", - "00000000000", - "000000000000", - "0000000000000", - "00000000000000", - "000000000000000", - "0000000000000000", - "00000000000000000", - "000000000000000000", - "0000000000000000000", - "00000000000000000000", - "000000000000000000000", - "0000000000000000000000", - "00000000000000000000000", - "000000000000000000000000", - "0000000000000000000000000", - ], - groupSizes = [ - 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, - ], - groupBases = [ - 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, - 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, - 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, - 60466176, - ]; - (BN.prototype.toString = function (base, padding) { - (base = base || 10), (padding = padding | 0 || 1); - var out; - if (base === 16 || base === "hex") { - out = ""; - for (var off = 0, carry = 0, i = 0; i < this.length; i++) { - var w = this.words[i], - word = (((w << off) | carry) & 16777215).toString(16); - (carry = (w >>> (24 - off)) & 16777215), - carry !== 0 || i !== this.length - 1 ? (out = zeros[6 - word.length] + word + out) : (out = word + out), - (off += 2), - off >= 26 && ((off -= 26), i--); - } - for (carry !== 0 && (out = carry.toString(16) + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - if (base === (base | 0) && base >= 2 && base <= 36) { - var groupSize = groupSizes[base], - groupBase = groupBases[base]; - out = ""; - var c = this.clone(); - for (c.negative = 0; !c.isZero(); ) { - var r = c.modn(groupBase).toString(base); - (c = c.idivn(groupBase)), c.isZero() ? (out = r + out) : (out = zeros[groupSize - r.length] + r + out); - } - for (this.isZero() && (out = "0" + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - assert(!1, "Base should be between 2 and 36"); - }), - (BN.prototype.toNumber = function () { - var ret = this.words[0]; - return ( - this.length === 2 - ? (ret += this.words[1] * 67108864) - : this.length === 3 && this.words[2] === 1 - ? (ret += 4503599627370496 + this.words[1] * 67108864) - : this.length > 2 && assert(!1, "Number can only safely store up to 53 bits"), - this.negative !== 0 ? -ret : ret - ); - }), - (BN.prototype.toJSON = function () { - return this.toString(16); - }), - (BN.prototype.toBuffer = function (endian, length) { - return assert(typeof Buffer2 < "u"), this.toArrayLike(Buffer2, endian, length); - }), - (BN.prototype.toArray = function (endian, length) { - return this.toArrayLike(Array, endian, length); - }), - (BN.prototype.toArrayLike = function (ArrayType, endian, length) { - var byteLength = this.byteLength(), - reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, "byte array longer than desired length"), - assert(reqLength > 0, "Requested array length <= 0"), - this.strip(); - var littleEndian = endian === "le", - res = new ArrayType(reqLength), - b, - i, - q = this.clone(); - if (littleEndian) { - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[i] = b); - for (; i < reqLength; i++) res[i] = 0; - } else { - for (i = 0; i < reqLength - byteLength; i++) res[i] = 0; - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[reqLength - i - 1] = b); - } - return res; - }), - Math.clz32 - ? (BN.prototype._countBits = function (w) { - return 32 - Math.clz32(w); - }) - : (BN.prototype._countBits = function (w) { - var t = w, - r = 0; - return ( - t >= 4096 && ((r += 13), (t >>>= 13)), - t >= 64 && ((r += 7), (t >>>= 7)), - t >= 8 && ((r += 4), (t >>>= 4)), - t >= 2 && ((r += 2), (t >>>= 2)), - r + t - ); - }), - (BN.prototype._zeroBits = function (w) { - if (w === 0) return 26; - var t = w, - r = 0; - return ( - (t & 8191) === 0 && ((r += 13), (t >>>= 13)), - (t & 127) === 0 && ((r += 7), (t >>>= 7)), - (t & 15) === 0 && ((r += 4), (t >>>= 4)), - (t & 3) === 0 && ((r += 2), (t >>>= 2)), - (t & 1) === 0 && r++, - r - ); - }), - (BN.prototype.bitLength = function () { - var w = this.words[this.length - 1], - hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }); - function toBitArray(num) { - for (var w = new Array(num.bitLength()), bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0, - wbit = bit % 26; - w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; - } - return w; - } - (BN.prototype.zeroBits = function () { - if (this.isZero()) return 0; - for (var r = 0, i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - if (((r += b), b !== 26)) break; - } - return r; - }), - (BN.prototype.byteLength = function () { - return Math.ceil(this.bitLength() / 8); - }), - (BN.prototype.toTwos = function (width) { - return this.negative !== 0 ? this.abs().inotn(width).iaddn(1) : this.clone(); - }), - (BN.prototype.fromTwos = function (width) { - return this.testn(width - 1) ? this.notn(width).iaddn(1).ineg() : this.clone(); - }), - (BN.prototype.isNeg = function () { - return this.negative !== 0; - }), - (BN.prototype.neg = function () { - return this.clone().ineg(); - }), - (BN.prototype.ineg = function () { - return this.isZero() || (this.negative ^= 1), this; - }), - (BN.prototype.iuor = function (num) { - for (; this.length < num.length; ) this.words[this.length++] = 0; - for (var i = 0; i < num.length; i++) this.words[i] = this.words[i] | num.words[i]; - return this.strip(); - }), - (BN.prototype.ior = function (num) { - return assert((this.negative | num.negative) === 0), this.iuor(num); - }), - (BN.prototype.or = function (num) { - return this.length > num.length ? this.clone().ior(num) : num.clone().ior(this); - }), - (BN.prototype.uor = function (num) { - return this.length > num.length ? this.clone().iuor(num) : num.clone().iuor(this); - }), - (BN.prototype.iuand = function (num) { - var b; - this.length > num.length ? (b = num) : (b = this); - for (var i = 0; i < b.length; i++) this.words[i] = this.words[i] & num.words[i]; - return (this.length = b.length), this.strip(); - }), - (BN.prototype.iand = function (num) { - return assert((this.negative | num.negative) === 0), this.iuand(num); - }), - (BN.prototype.and = function (num) { - return this.length > num.length ? this.clone().iand(num) : num.clone().iand(this); - }), - (BN.prototype.uand = function (num) { - return this.length > num.length ? this.clone().iuand(num) : num.clone().iuand(this); - }), - (BN.prototype.iuxor = function (num) { - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var i = 0; i < b.length; i++) this.words[i] = a.words[i] ^ b.words[i]; - if (this !== a) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = a.length), this.strip(); - }), - (BN.prototype.ixor = function (num) { - return assert((this.negative | num.negative) === 0), this.iuxor(num); - }), - (BN.prototype.xor = function (num) { - return this.length > num.length ? this.clone().ixor(num) : num.clone().ixor(this); - }), - (BN.prototype.uxor = function (num) { - return this.length > num.length ? this.clone().iuxor(num) : num.clone().iuxor(this); - }), - (BN.prototype.inotn = function (width) { - assert(typeof width == "number" && width >= 0); - var bytesNeeded = Math.ceil(width / 26) | 0, - bitsLeft = width % 26; - this._expand(bytesNeeded), bitsLeft > 0 && bytesNeeded--; - for (var i = 0; i < bytesNeeded; i++) this.words[i] = ~this.words[i] & 67108863; - return bitsLeft > 0 && (this.words[i] = ~this.words[i] & (67108863 >> (26 - bitsLeft))), this.strip(); - }), - (BN.prototype.notn = function (width) { - return this.clone().inotn(width); - }), - (BN.prototype.setn = function (bit, val) { - assert(typeof bit == "number" && bit >= 0); - var off = (bit / 26) | 0, - wbit = bit % 26; - return ( - this._expand(off + 1), - val - ? (this.words[off] = this.words[off] | (1 << wbit)) - : (this.words[off] = this.words[off] & ~(1 << wbit)), - this.strip() - ); - }), - (BN.prototype.iadd = function (num) { - var r; - if (this.negative !== 0 && num.negative === 0) - return (this.negative = 0), (r = this.isub(num)), (this.negative ^= 1), this._normSign(); - if (this.negative === 0 && num.negative !== 0) - return (num.negative = 0), (r = this.isub(num)), (num.negative = 1), r._normSign(); - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) + (b.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - if (((this.length = a.length), carry !== 0)) (this.words[this.length] = carry), this.length++; - else if (a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return this; - }), - (BN.prototype.add = function (num) { - var res; - return num.negative !== 0 && this.negative === 0 - ? ((num.negative = 0), (res = this.sub(num)), (num.negative ^= 1), res) - : num.negative === 0 && this.negative !== 0 - ? ((this.negative = 0), (res = num.sub(this)), (this.negative = 1), res) - : this.length > num.length - ? this.clone().iadd(num) - : num.clone().iadd(this); - }), - (BN.prototype.isub = function (num) { - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - return (num.negative = 1), r._normSign(); - } else if (this.negative !== 0) - return (this.negative = 0), this.iadd(num), (this.negative = 1), this._normSign(); - var cmp = this.cmp(num); - if (cmp === 0) return (this.negative = 0), (this.length = 1), (this.words[0] = 0), this; - var a, b; - cmp > 0 ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) - (b.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - if (carry === 0 && i < a.length && a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = Math.max(this.length, i)), a !== this && (this.negative = 1), this.strip(); - }), - (BN.prototype.sub = function (num) { - return this.clone().isub(num); - }); - function smallMulTo(self2, num, out) { - out.negative = num.negative ^ self2.negative; - var len = (self2.length + num.length) | 0; - (out.length = len), (len = (len - 1) | 0); - var a = self2.words[0] | 0, - b = num.words[0] | 0, - r = a * b, - lo = r & 67108863, - carry = (r / 67108864) | 0; - out.words[0] = lo; - for (var k = 1; k < len; k++) { - for ( - var ncarry = carry >>> 26, - rword = carry & 67108863, - maxJ = Math.min(k, num.length - 1), - j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = (k - j) | 0; - (a = self2.words[i] | 0), - (b = num.words[j] | 0), - (r = a * b + rword), - (ncarry += (r / 67108864) | 0), - (rword = r & 67108863); - } - (out.words[k] = rword | 0), (carry = ncarry | 0); - } - return carry !== 0 ? (out.words[k] = carry | 0) : out.length--, out.strip(); - } - var comb10MulTo = function (self2, num, out) { - var a = self2.words, - b = num.words, - o = out.words, - c = 0, - lo, - mid, - hi, - a0 = a[0] | 0, - al0 = a0 & 8191, - ah0 = a0 >>> 13, - a1 = a[1] | 0, - al1 = a1 & 8191, - ah1 = a1 >>> 13, - a2 = a[2] | 0, - al2 = a2 & 8191, - ah2 = a2 >>> 13, - a3 = a[3] | 0, - al3 = a3 & 8191, - ah3 = a3 >>> 13, - a4 = a[4] | 0, - al4 = a4 & 8191, - ah4 = a4 >>> 13, - a5 = a[5] | 0, - al5 = a5 & 8191, - ah5 = a5 >>> 13, - a6 = a[6] | 0, - al6 = a6 & 8191, - ah6 = a6 >>> 13, - a7 = a[7] | 0, - al7 = a7 & 8191, - ah7 = a7 >>> 13, - a8 = a[8] | 0, - al8 = a8 & 8191, - ah8 = a8 >>> 13, - a9 = a[9] | 0, - al9 = a9 & 8191, - ah9 = a9 >>> 13, - b0 = b[0] | 0, - bl0 = b0 & 8191, - bh0 = b0 >>> 13, - b1 = b[1] | 0, - bl1 = b1 & 8191, - bh1 = b1 >>> 13, - b2 = b[2] | 0, - bl2 = b2 & 8191, - bh2 = b2 >>> 13, - b3 = b[3] | 0, - bl3 = b3 & 8191, - bh3 = b3 >>> 13, - b4 = b[4] | 0, - bl4 = b4 & 8191, - bh4 = b4 >>> 13, - b5 = b[5] | 0, - bl5 = b5 & 8191, - bh5 = b5 >>> 13, - b6 = b[6] | 0, - bl6 = b6 & 8191, - bh6 = b6 >>> 13, - b7 = b[7] | 0, - bl7 = b7 & 8191, - bh7 = b7 >>> 13, - b8 = b[8] | 0, - bl8 = b8 & 8191, - bh8 = b8 >>> 13, - b9 = b[9] | 0, - bl9 = b9 & 8191, - bh9 = b9 >>> 13; - (out.negative = self2.negative ^ num.negative), - (out.length = 19), - (lo = Math.imul(al0, bl0)), - (mid = Math.imul(al0, bh0)), - (mid = (mid + Math.imul(ah0, bl0)) | 0), - (hi = Math.imul(ah0, bh0)); - var w0 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0), - (w0 &= 67108863), - (lo = Math.imul(al1, bl0)), - (mid = Math.imul(al1, bh0)), - (mid = (mid + Math.imul(ah1, bl0)) | 0), - (hi = Math.imul(ah1, bh0)), - (lo = (lo + Math.imul(al0, bl1)) | 0), - (mid = (mid + Math.imul(al0, bh1)) | 0), - (mid = (mid + Math.imul(ah0, bl1)) | 0), - (hi = (hi + Math.imul(ah0, bh1)) | 0); - var w1 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0), - (w1 &= 67108863), - (lo = Math.imul(al2, bl0)), - (mid = Math.imul(al2, bh0)), - (mid = (mid + Math.imul(ah2, bl0)) | 0), - (hi = Math.imul(ah2, bh0)), - (lo = (lo + Math.imul(al1, bl1)) | 0), - (mid = (mid + Math.imul(al1, bh1)) | 0), - (mid = (mid + Math.imul(ah1, bl1)) | 0), - (hi = (hi + Math.imul(ah1, bh1)) | 0), - (lo = (lo + Math.imul(al0, bl2)) | 0), - (mid = (mid + Math.imul(al0, bh2)) | 0), - (mid = (mid + Math.imul(ah0, bl2)) | 0), - (hi = (hi + Math.imul(ah0, bh2)) | 0); - var w2 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0), - (w2 &= 67108863), - (lo = Math.imul(al3, bl0)), - (mid = Math.imul(al3, bh0)), - (mid = (mid + Math.imul(ah3, bl0)) | 0), - (hi = Math.imul(ah3, bh0)), - (lo = (lo + Math.imul(al2, bl1)) | 0), - (mid = (mid + Math.imul(al2, bh1)) | 0), - (mid = (mid + Math.imul(ah2, bl1)) | 0), - (hi = (hi + Math.imul(ah2, bh1)) | 0), - (lo = (lo + Math.imul(al1, bl2)) | 0), - (mid = (mid + Math.imul(al1, bh2)) | 0), - (mid = (mid + Math.imul(ah1, bl2)) | 0), - (hi = (hi + Math.imul(ah1, bh2)) | 0), - (lo = (lo + Math.imul(al0, bl3)) | 0), - (mid = (mid + Math.imul(al0, bh3)) | 0), - (mid = (mid + Math.imul(ah0, bl3)) | 0), - (hi = (hi + Math.imul(ah0, bh3)) | 0); - var w3 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0), - (w3 &= 67108863), - (lo = Math.imul(al4, bl0)), - (mid = Math.imul(al4, bh0)), - (mid = (mid + Math.imul(ah4, bl0)) | 0), - (hi = Math.imul(ah4, bh0)), - (lo = (lo + Math.imul(al3, bl1)) | 0), - (mid = (mid + Math.imul(al3, bh1)) | 0), - (mid = (mid + Math.imul(ah3, bl1)) | 0), - (hi = (hi + Math.imul(ah3, bh1)) | 0), - (lo = (lo + Math.imul(al2, bl2)) | 0), - (mid = (mid + Math.imul(al2, bh2)) | 0), - (mid = (mid + Math.imul(ah2, bl2)) | 0), - (hi = (hi + Math.imul(ah2, bh2)) | 0), - (lo = (lo + Math.imul(al1, bl3)) | 0), - (mid = (mid + Math.imul(al1, bh3)) | 0), - (mid = (mid + Math.imul(ah1, bl3)) | 0), - (hi = (hi + Math.imul(ah1, bh3)) | 0), - (lo = (lo + Math.imul(al0, bl4)) | 0), - (mid = (mid + Math.imul(al0, bh4)) | 0), - (mid = (mid + Math.imul(ah0, bl4)) | 0), - (hi = (hi + Math.imul(ah0, bh4)) | 0); - var w4 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0), - (w4 &= 67108863), - (lo = Math.imul(al5, bl0)), - (mid = Math.imul(al5, bh0)), - (mid = (mid + Math.imul(ah5, bl0)) | 0), - (hi = Math.imul(ah5, bh0)), - (lo = (lo + Math.imul(al4, bl1)) | 0), - (mid = (mid + Math.imul(al4, bh1)) | 0), - (mid = (mid + Math.imul(ah4, bl1)) | 0), - (hi = (hi + Math.imul(ah4, bh1)) | 0), - (lo = (lo + Math.imul(al3, bl2)) | 0), - (mid = (mid + Math.imul(al3, bh2)) | 0), - (mid = (mid + Math.imul(ah3, bl2)) | 0), - (hi = (hi + Math.imul(ah3, bh2)) | 0), - (lo = (lo + Math.imul(al2, bl3)) | 0), - (mid = (mid + Math.imul(al2, bh3)) | 0), - (mid = (mid + Math.imul(ah2, bl3)) | 0), - (hi = (hi + Math.imul(ah2, bh3)) | 0), - (lo = (lo + Math.imul(al1, bl4)) | 0), - (mid = (mid + Math.imul(al1, bh4)) | 0), - (mid = (mid + Math.imul(ah1, bl4)) | 0), - (hi = (hi + Math.imul(ah1, bh4)) | 0), - (lo = (lo + Math.imul(al0, bl5)) | 0), - (mid = (mid + Math.imul(al0, bh5)) | 0), - (mid = (mid + Math.imul(ah0, bl5)) | 0), - (hi = (hi + Math.imul(ah0, bh5)) | 0); - var w5 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0), - (w5 &= 67108863), - (lo = Math.imul(al6, bl0)), - (mid = Math.imul(al6, bh0)), - (mid = (mid + Math.imul(ah6, bl0)) | 0), - (hi = Math.imul(ah6, bh0)), - (lo = (lo + Math.imul(al5, bl1)) | 0), - (mid = (mid + Math.imul(al5, bh1)) | 0), - (mid = (mid + Math.imul(ah5, bl1)) | 0), - (hi = (hi + Math.imul(ah5, bh1)) | 0), - (lo = (lo + Math.imul(al4, bl2)) | 0), - (mid = (mid + Math.imul(al4, bh2)) | 0), - (mid = (mid + Math.imul(ah4, bl2)) | 0), - (hi = (hi + Math.imul(ah4, bh2)) | 0), - (lo = (lo + Math.imul(al3, bl3)) | 0), - (mid = (mid + Math.imul(al3, bh3)) | 0), - (mid = (mid + Math.imul(ah3, bl3)) | 0), - (hi = (hi + Math.imul(ah3, bh3)) | 0), - (lo = (lo + Math.imul(al2, bl4)) | 0), - (mid = (mid + Math.imul(al2, bh4)) | 0), - (mid = (mid + Math.imul(ah2, bl4)) | 0), - (hi = (hi + Math.imul(ah2, bh4)) | 0), - (lo = (lo + Math.imul(al1, bl5)) | 0), - (mid = (mid + Math.imul(al1, bh5)) | 0), - (mid = (mid + Math.imul(ah1, bl5)) | 0), - (hi = (hi + Math.imul(ah1, bh5)) | 0), - (lo = (lo + Math.imul(al0, bl6)) | 0), - (mid = (mid + Math.imul(al0, bh6)) | 0), - (mid = (mid + Math.imul(ah0, bl6)) | 0), - (hi = (hi + Math.imul(ah0, bh6)) | 0); - var w6 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0), - (w6 &= 67108863), - (lo = Math.imul(al7, bl0)), - (mid = Math.imul(al7, bh0)), - (mid = (mid + Math.imul(ah7, bl0)) | 0), - (hi = Math.imul(ah7, bh0)), - (lo = (lo + Math.imul(al6, bl1)) | 0), - (mid = (mid + Math.imul(al6, bh1)) | 0), - (mid = (mid + Math.imul(ah6, bl1)) | 0), - (hi = (hi + Math.imul(ah6, bh1)) | 0), - (lo = (lo + Math.imul(al5, bl2)) | 0), - (mid = (mid + Math.imul(al5, bh2)) | 0), - (mid = (mid + Math.imul(ah5, bl2)) | 0), - (hi = (hi + Math.imul(ah5, bh2)) | 0), - (lo = (lo + Math.imul(al4, bl3)) | 0), - (mid = (mid + Math.imul(al4, bh3)) | 0), - (mid = (mid + Math.imul(ah4, bl3)) | 0), - (hi = (hi + Math.imul(ah4, bh3)) | 0), - (lo = (lo + Math.imul(al3, bl4)) | 0), - (mid = (mid + Math.imul(al3, bh4)) | 0), - (mid = (mid + Math.imul(ah3, bl4)) | 0), - (hi = (hi + Math.imul(ah3, bh4)) | 0), - (lo = (lo + Math.imul(al2, bl5)) | 0), - (mid = (mid + Math.imul(al2, bh5)) | 0), - (mid = (mid + Math.imul(ah2, bl5)) | 0), - (hi = (hi + Math.imul(ah2, bh5)) | 0), - (lo = (lo + Math.imul(al1, bl6)) | 0), - (mid = (mid + Math.imul(al1, bh6)) | 0), - (mid = (mid + Math.imul(ah1, bl6)) | 0), - (hi = (hi + Math.imul(ah1, bh6)) | 0), - (lo = (lo + Math.imul(al0, bl7)) | 0), - (mid = (mid + Math.imul(al0, bh7)) | 0), - (mid = (mid + Math.imul(ah0, bl7)) | 0), - (hi = (hi + Math.imul(ah0, bh7)) | 0); - var w7 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0), - (w7 &= 67108863), - (lo = Math.imul(al8, bl0)), - (mid = Math.imul(al8, bh0)), - (mid = (mid + Math.imul(ah8, bl0)) | 0), - (hi = Math.imul(ah8, bh0)), - (lo = (lo + Math.imul(al7, bl1)) | 0), - (mid = (mid + Math.imul(al7, bh1)) | 0), - (mid = (mid + Math.imul(ah7, bl1)) | 0), - (hi = (hi + Math.imul(ah7, bh1)) | 0), - (lo = (lo + Math.imul(al6, bl2)) | 0), - (mid = (mid + Math.imul(al6, bh2)) | 0), - (mid = (mid + Math.imul(ah6, bl2)) | 0), - (hi = (hi + Math.imul(ah6, bh2)) | 0), - (lo = (lo + Math.imul(al5, bl3)) | 0), - (mid = (mid + Math.imul(al5, bh3)) | 0), - (mid = (mid + Math.imul(ah5, bl3)) | 0), - (hi = (hi + Math.imul(ah5, bh3)) | 0), - (lo = (lo + Math.imul(al4, bl4)) | 0), - (mid = (mid + Math.imul(al4, bh4)) | 0), - (mid = (mid + Math.imul(ah4, bl4)) | 0), - (hi = (hi + Math.imul(ah4, bh4)) | 0), - (lo = (lo + Math.imul(al3, bl5)) | 0), - (mid = (mid + Math.imul(al3, bh5)) | 0), - (mid = (mid + Math.imul(ah3, bl5)) | 0), - (hi = (hi + Math.imul(ah3, bh5)) | 0), - (lo = (lo + Math.imul(al2, bl6)) | 0), - (mid = (mid + Math.imul(al2, bh6)) | 0), - (mid = (mid + Math.imul(ah2, bl6)) | 0), - (hi = (hi + Math.imul(ah2, bh6)) | 0), - (lo = (lo + Math.imul(al1, bl7)) | 0), - (mid = (mid + Math.imul(al1, bh7)) | 0), - (mid = (mid + Math.imul(ah1, bl7)) | 0), - (hi = (hi + Math.imul(ah1, bh7)) | 0), - (lo = (lo + Math.imul(al0, bl8)) | 0), - (mid = (mid + Math.imul(al0, bh8)) | 0), - (mid = (mid + Math.imul(ah0, bl8)) | 0), - (hi = (hi + Math.imul(ah0, bh8)) | 0); - var w8 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0), - (w8 &= 67108863), - (lo = Math.imul(al9, bl0)), - (mid = Math.imul(al9, bh0)), - (mid = (mid + Math.imul(ah9, bl0)) | 0), - (hi = Math.imul(ah9, bh0)), - (lo = (lo + Math.imul(al8, bl1)) | 0), - (mid = (mid + Math.imul(al8, bh1)) | 0), - (mid = (mid + Math.imul(ah8, bl1)) | 0), - (hi = (hi + Math.imul(ah8, bh1)) | 0), - (lo = (lo + Math.imul(al7, bl2)) | 0), - (mid = (mid + Math.imul(al7, bh2)) | 0), - (mid = (mid + Math.imul(ah7, bl2)) | 0), - (hi = (hi + Math.imul(ah7, bh2)) | 0), - (lo = (lo + Math.imul(al6, bl3)) | 0), - (mid = (mid + Math.imul(al6, bh3)) | 0), - (mid = (mid + Math.imul(ah6, bl3)) | 0), - (hi = (hi + Math.imul(ah6, bh3)) | 0), - (lo = (lo + Math.imul(al5, bl4)) | 0), - (mid = (mid + Math.imul(al5, bh4)) | 0), - (mid = (mid + Math.imul(ah5, bl4)) | 0), - (hi = (hi + Math.imul(ah5, bh4)) | 0), - (lo = (lo + Math.imul(al4, bl5)) | 0), - (mid = (mid + Math.imul(al4, bh5)) | 0), - (mid = (mid + Math.imul(ah4, bl5)) | 0), - (hi = (hi + Math.imul(ah4, bh5)) | 0), - (lo = (lo + Math.imul(al3, bl6)) | 0), - (mid = (mid + Math.imul(al3, bh6)) | 0), - (mid = (mid + Math.imul(ah3, bl6)) | 0), - (hi = (hi + Math.imul(ah3, bh6)) | 0), - (lo = (lo + Math.imul(al2, bl7)) | 0), - (mid = (mid + Math.imul(al2, bh7)) | 0), - (mid = (mid + Math.imul(ah2, bl7)) | 0), - (hi = (hi + Math.imul(ah2, bh7)) | 0), - (lo = (lo + Math.imul(al1, bl8)) | 0), - (mid = (mid + Math.imul(al1, bh8)) | 0), - (mid = (mid + Math.imul(ah1, bl8)) | 0), - (hi = (hi + Math.imul(ah1, bh8)) | 0), - (lo = (lo + Math.imul(al0, bl9)) | 0), - (mid = (mid + Math.imul(al0, bh9)) | 0), - (mid = (mid + Math.imul(ah0, bl9)) | 0), - (hi = (hi + Math.imul(ah0, bh9)) | 0); - var w9 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0), - (w9 &= 67108863), - (lo = Math.imul(al9, bl1)), - (mid = Math.imul(al9, bh1)), - (mid = (mid + Math.imul(ah9, bl1)) | 0), - (hi = Math.imul(ah9, bh1)), - (lo = (lo + Math.imul(al8, bl2)) | 0), - (mid = (mid + Math.imul(al8, bh2)) | 0), - (mid = (mid + Math.imul(ah8, bl2)) | 0), - (hi = (hi + Math.imul(ah8, bh2)) | 0), - (lo = (lo + Math.imul(al7, bl3)) | 0), - (mid = (mid + Math.imul(al7, bh3)) | 0), - (mid = (mid + Math.imul(ah7, bl3)) | 0), - (hi = (hi + Math.imul(ah7, bh3)) | 0), - (lo = (lo + Math.imul(al6, bl4)) | 0), - (mid = (mid + Math.imul(al6, bh4)) | 0), - (mid = (mid + Math.imul(ah6, bl4)) | 0), - (hi = (hi + Math.imul(ah6, bh4)) | 0), - (lo = (lo + Math.imul(al5, bl5)) | 0), - (mid = (mid + Math.imul(al5, bh5)) | 0), - (mid = (mid + Math.imul(ah5, bl5)) | 0), - (hi = (hi + Math.imul(ah5, bh5)) | 0), - (lo = (lo + Math.imul(al4, bl6)) | 0), - (mid = (mid + Math.imul(al4, bh6)) | 0), - (mid = (mid + Math.imul(ah4, bl6)) | 0), - (hi = (hi + Math.imul(ah4, bh6)) | 0), - (lo = (lo + Math.imul(al3, bl7)) | 0), - (mid = (mid + Math.imul(al3, bh7)) | 0), - (mid = (mid + Math.imul(ah3, bl7)) | 0), - (hi = (hi + Math.imul(ah3, bh7)) | 0), - (lo = (lo + Math.imul(al2, bl8)) | 0), - (mid = (mid + Math.imul(al2, bh8)) | 0), - (mid = (mid + Math.imul(ah2, bl8)) | 0), - (hi = (hi + Math.imul(ah2, bh8)) | 0), - (lo = (lo + Math.imul(al1, bl9)) | 0), - (mid = (mid + Math.imul(al1, bh9)) | 0), - (mid = (mid + Math.imul(ah1, bl9)) | 0), - (hi = (hi + Math.imul(ah1, bh9)) | 0); - var w10 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0), - (w10 &= 67108863), - (lo = Math.imul(al9, bl2)), - (mid = Math.imul(al9, bh2)), - (mid = (mid + Math.imul(ah9, bl2)) | 0), - (hi = Math.imul(ah9, bh2)), - (lo = (lo + Math.imul(al8, bl3)) | 0), - (mid = (mid + Math.imul(al8, bh3)) | 0), - (mid = (mid + Math.imul(ah8, bl3)) | 0), - (hi = (hi + Math.imul(ah8, bh3)) | 0), - (lo = (lo + Math.imul(al7, bl4)) | 0), - (mid = (mid + Math.imul(al7, bh4)) | 0), - (mid = (mid + Math.imul(ah7, bl4)) | 0), - (hi = (hi + Math.imul(ah7, bh4)) | 0), - (lo = (lo + Math.imul(al6, bl5)) | 0), - (mid = (mid + Math.imul(al6, bh5)) | 0), - (mid = (mid + Math.imul(ah6, bl5)) | 0), - (hi = (hi + Math.imul(ah6, bh5)) | 0), - (lo = (lo + Math.imul(al5, bl6)) | 0), - (mid = (mid + Math.imul(al5, bh6)) | 0), - (mid = (mid + Math.imul(ah5, bl6)) | 0), - (hi = (hi + Math.imul(ah5, bh6)) | 0), - (lo = (lo + Math.imul(al4, bl7)) | 0), - (mid = (mid + Math.imul(al4, bh7)) | 0), - (mid = (mid + Math.imul(ah4, bl7)) | 0), - (hi = (hi + Math.imul(ah4, bh7)) | 0), - (lo = (lo + Math.imul(al3, bl8)) | 0), - (mid = (mid + Math.imul(al3, bh8)) | 0), - (mid = (mid + Math.imul(ah3, bl8)) | 0), - (hi = (hi + Math.imul(ah3, bh8)) | 0), - (lo = (lo + Math.imul(al2, bl9)) | 0), - (mid = (mid + Math.imul(al2, bh9)) | 0), - (mid = (mid + Math.imul(ah2, bl9)) | 0), - (hi = (hi + Math.imul(ah2, bh9)) | 0); - var w11 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0), - (w11 &= 67108863), - (lo = Math.imul(al9, bl3)), - (mid = Math.imul(al9, bh3)), - (mid = (mid + Math.imul(ah9, bl3)) | 0), - (hi = Math.imul(ah9, bh3)), - (lo = (lo + Math.imul(al8, bl4)) | 0), - (mid = (mid + Math.imul(al8, bh4)) | 0), - (mid = (mid + Math.imul(ah8, bl4)) | 0), - (hi = (hi + Math.imul(ah8, bh4)) | 0), - (lo = (lo + Math.imul(al7, bl5)) | 0), - (mid = (mid + Math.imul(al7, bh5)) | 0), - (mid = (mid + Math.imul(ah7, bl5)) | 0), - (hi = (hi + Math.imul(ah7, bh5)) | 0), - (lo = (lo + Math.imul(al6, bl6)) | 0), - (mid = (mid + Math.imul(al6, bh6)) | 0), - (mid = (mid + Math.imul(ah6, bl6)) | 0), - (hi = (hi + Math.imul(ah6, bh6)) | 0), - (lo = (lo + Math.imul(al5, bl7)) | 0), - (mid = (mid + Math.imul(al5, bh7)) | 0), - (mid = (mid + Math.imul(ah5, bl7)) | 0), - (hi = (hi + Math.imul(ah5, bh7)) | 0), - (lo = (lo + Math.imul(al4, bl8)) | 0), - (mid = (mid + Math.imul(al4, bh8)) | 0), - (mid = (mid + Math.imul(ah4, bl8)) | 0), - (hi = (hi + Math.imul(ah4, bh8)) | 0), - (lo = (lo + Math.imul(al3, bl9)) | 0), - (mid = (mid + Math.imul(al3, bh9)) | 0), - (mid = (mid + Math.imul(ah3, bl9)) | 0), - (hi = (hi + Math.imul(ah3, bh9)) | 0); - var w12 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0), - (w12 &= 67108863), - (lo = Math.imul(al9, bl4)), - (mid = Math.imul(al9, bh4)), - (mid = (mid + Math.imul(ah9, bl4)) | 0), - (hi = Math.imul(ah9, bh4)), - (lo = (lo + Math.imul(al8, bl5)) | 0), - (mid = (mid + Math.imul(al8, bh5)) | 0), - (mid = (mid + Math.imul(ah8, bl5)) | 0), - (hi = (hi + Math.imul(ah8, bh5)) | 0), - (lo = (lo + Math.imul(al7, bl6)) | 0), - (mid = (mid + Math.imul(al7, bh6)) | 0), - (mid = (mid + Math.imul(ah7, bl6)) | 0), - (hi = (hi + Math.imul(ah7, bh6)) | 0), - (lo = (lo + Math.imul(al6, bl7)) | 0), - (mid = (mid + Math.imul(al6, bh7)) | 0), - (mid = (mid + Math.imul(ah6, bl7)) | 0), - (hi = (hi + Math.imul(ah6, bh7)) | 0), - (lo = (lo + Math.imul(al5, bl8)) | 0), - (mid = (mid + Math.imul(al5, bh8)) | 0), - (mid = (mid + Math.imul(ah5, bl8)) | 0), - (hi = (hi + Math.imul(ah5, bh8)) | 0), - (lo = (lo + Math.imul(al4, bl9)) | 0), - (mid = (mid + Math.imul(al4, bh9)) | 0), - (mid = (mid + Math.imul(ah4, bl9)) | 0), - (hi = (hi + Math.imul(ah4, bh9)) | 0); - var w13 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0), - (w13 &= 67108863), - (lo = Math.imul(al9, bl5)), - (mid = Math.imul(al9, bh5)), - (mid = (mid + Math.imul(ah9, bl5)) | 0), - (hi = Math.imul(ah9, bh5)), - (lo = (lo + Math.imul(al8, bl6)) | 0), - (mid = (mid + Math.imul(al8, bh6)) | 0), - (mid = (mid + Math.imul(ah8, bl6)) | 0), - (hi = (hi + Math.imul(ah8, bh6)) | 0), - (lo = (lo + Math.imul(al7, bl7)) | 0), - (mid = (mid + Math.imul(al7, bh7)) | 0), - (mid = (mid + Math.imul(ah7, bl7)) | 0), - (hi = (hi + Math.imul(ah7, bh7)) | 0), - (lo = (lo + Math.imul(al6, bl8)) | 0), - (mid = (mid + Math.imul(al6, bh8)) | 0), - (mid = (mid + Math.imul(ah6, bl8)) | 0), - (hi = (hi + Math.imul(ah6, bh8)) | 0), - (lo = (lo + Math.imul(al5, bl9)) | 0), - (mid = (mid + Math.imul(al5, bh9)) | 0), - (mid = (mid + Math.imul(ah5, bl9)) | 0), - (hi = (hi + Math.imul(ah5, bh9)) | 0); - var w14 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0), - (w14 &= 67108863), - (lo = Math.imul(al9, bl6)), - (mid = Math.imul(al9, bh6)), - (mid = (mid + Math.imul(ah9, bl6)) | 0), - (hi = Math.imul(ah9, bh6)), - (lo = (lo + Math.imul(al8, bl7)) | 0), - (mid = (mid + Math.imul(al8, bh7)) | 0), - (mid = (mid + Math.imul(ah8, bl7)) | 0), - (hi = (hi + Math.imul(ah8, bh7)) | 0), - (lo = (lo + Math.imul(al7, bl8)) | 0), - (mid = (mid + Math.imul(al7, bh8)) | 0), - (mid = (mid + Math.imul(ah7, bl8)) | 0), - (hi = (hi + Math.imul(ah7, bh8)) | 0), - (lo = (lo + Math.imul(al6, bl9)) | 0), - (mid = (mid + Math.imul(al6, bh9)) | 0), - (mid = (mid + Math.imul(ah6, bl9)) | 0), - (hi = (hi + Math.imul(ah6, bh9)) | 0); - var w15 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0), - (w15 &= 67108863), - (lo = Math.imul(al9, bl7)), - (mid = Math.imul(al9, bh7)), - (mid = (mid + Math.imul(ah9, bl7)) | 0), - (hi = Math.imul(ah9, bh7)), - (lo = (lo + Math.imul(al8, bl8)) | 0), - (mid = (mid + Math.imul(al8, bh8)) | 0), - (mid = (mid + Math.imul(ah8, bl8)) | 0), - (hi = (hi + Math.imul(ah8, bh8)) | 0), - (lo = (lo + Math.imul(al7, bl9)) | 0), - (mid = (mid + Math.imul(al7, bh9)) | 0), - (mid = (mid + Math.imul(ah7, bl9)) | 0), - (hi = (hi + Math.imul(ah7, bh9)) | 0); - var w16 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0), - (w16 &= 67108863), - (lo = Math.imul(al9, bl8)), - (mid = Math.imul(al9, bh8)), - (mid = (mid + Math.imul(ah9, bl8)) | 0), - (hi = Math.imul(ah9, bh8)), - (lo = (lo + Math.imul(al8, bl9)) | 0), - (mid = (mid + Math.imul(al8, bh9)) | 0), - (mid = (mid + Math.imul(ah8, bl9)) | 0), - (hi = (hi + Math.imul(ah8, bh9)) | 0); - var w17 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0), - (w17 &= 67108863), - (lo = Math.imul(al9, bl9)), - (mid = Math.imul(al9, bh9)), - (mid = (mid + Math.imul(ah9, bl9)) | 0), - (hi = Math.imul(ah9, bh9)); - var w18 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - return ( - (c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0), - (w18 &= 67108863), - (o[0] = w0), - (o[1] = w1), - (o[2] = w2), - (o[3] = w3), - (o[4] = w4), - (o[5] = w5), - (o[6] = w6), - (o[7] = w7), - (o[8] = w8), - (o[9] = w9), - (o[10] = w10), - (o[11] = w11), - (o[12] = w12), - (o[13] = w13), - (o[14] = w14), - (o[15] = w15), - (o[16] = w16), - (o[17] = w17), - (o[18] = w18), - c !== 0 && ((o[19] = c), out.length++), - out - ); - }; - Math.imul || (comb10MulTo = smallMulTo); - function bigMulTo(self2, num, out) { - (out.negative = num.negative ^ self2.negative), (out.length = self2.length + num.length); - for (var carry = 0, hncarry = 0, k = 0; k < out.length - 1; k++) { - var ncarry = hncarry; - hncarry = 0; - for ( - var rword = carry & 67108863, maxJ = Math.min(k, num.length - 1), j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = k - j, - a = self2.words[i] | 0, - b = num.words[j] | 0, - r = a * b, - lo = r & 67108863; - (ncarry = (ncarry + ((r / 67108864) | 0)) | 0), - (lo = (lo + rword) | 0), - (rword = lo & 67108863), - (ncarry = (ncarry + (lo >>> 26)) | 0), - (hncarry += ncarry >>> 26), - (ncarry &= 67108863); - } - (out.words[k] = rword), (carry = ncarry), (ncarry = hncarry); - } - return carry !== 0 ? (out.words[k] = carry) : out.length--, out.strip(); - } - function jumboMulTo(self2, num, out) { - var fftm = new FFTM(); - return fftm.mulp(self2, num, out); - } - BN.prototype.mulTo = function (num, out) { - var res, - len = this.length + num.length; - return ( - this.length === 10 && num.length === 10 - ? (res = comb10MulTo(this, num, out)) - : len < 63 - ? (res = smallMulTo(this, num, out)) - : len < 1024 - ? (res = bigMulTo(this, num, out)) - : (res = jumboMulTo(this, num, out)), - res - ); - }; - function FFTM(x, y) { - (this.x = x), (this.y = y); - } - (FFTM.prototype.makeRBT = function (N) { - for (var t = new Array(N), l = BN.prototype._countBits(N) - 1, i = 0; i < N; i++) t[i] = this.revBin(i, l, N); - return t; - }), - (FFTM.prototype.revBin = function (x, l, N) { - if (x === 0 || x === N - 1) return x; - for (var rb = 0, i = 0; i < l; i++) (rb |= (x & 1) << (l - i - 1)), (x >>= 1); - return rb; - }), - (FFTM.prototype.permute = function (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) (rtws[i] = rws[rbt[i]]), (itws[i] = iws[rbt[i]]); - }), - (FFTM.prototype.transform = function (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - for (var s = 1; s < N; s <<= 1) - for ( - var l = s << 1, rtwdf = Math.cos((2 * Math.PI) / l), itwdf = Math.sin((2 * Math.PI) / l), p = 0; - p < N; - p += l - ) - for (var rtwdf_ = rtwdf, itwdf_ = itwdf, j = 0; j < s; j++) { - var re = rtws[p + j], - ie = itws[p + j], - ro = rtws[p + j + s], - io = itws[p + j + s], - rx = rtwdf_ * ro - itwdf_ * io; - (io = rtwdf_ * io + itwdf_ * ro), - (ro = rx), - (rtws[p + j] = re + ro), - (itws[p + j] = ie + io), - (rtws[p + j + s] = re - ro), - (itws[p + j + s] = ie - io), - j !== l && - ((rx = rtwdf * rtwdf_ - itwdf * itwdf_), (itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_), (rtwdf_ = rx)); - } - }), - (FFTM.prototype.guessLen13b = function (n, m) { - var N = Math.max(m, n) | 1, - odd = N & 1, - i = 0; - for (N = (N / 2) | 0; N; N = N >>> 1) i++; - return 1 << (i + 1 + odd); - }), - (FFTM.prototype.conjugate = function (rws, iws, N) { - if (!(N <= 1)) - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - (rws[i] = rws[N - i - 1]), - (rws[N - i - 1] = t), - (t = iws[i]), - (iws[i] = -iws[N - i - 1]), - (iws[N - i - 1] = -t); - } - }), - (FFTM.prototype.normalize13b = function (ws, N) { - for (var carry = 0, i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; - (ws[i] = w & 67108863), w < 67108864 ? (carry = 0) : (carry = (w / 67108864) | 0); - } - return ws; - }), - (FFTM.prototype.convert13b = function (ws, len, rws, N) { - for (var carry = 0, i = 0; i < len; i++) - (carry = carry + (ws[i] | 0)), - (rws[2 * i] = carry & 8191), - (carry = carry >>> 13), - (rws[2 * i + 1] = carry & 8191), - (carry = carry >>> 13); - for (i = 2 * len; i < N; ++i) rws[i] = 0; - assert(carry === 0), assert((carry & -8192) === 0); - }), - (FFTM.prototype.stub = function (N) { - for (var ph = new Array(N), i = 0; i < N; i++) ph[i] = 0; - return ph; - }), - (FFTM.prototype.mulp = function (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length), - rbt = this.makeRBT(N), - _ = this.stub(N), - rws = new Array(N), - rwst = new Array(N), - iwst = new Array(N), - nrws = new Array(N), - nrwst = new Array(N), - niwst = new Array(N), - rmws = out.words; - (rmws.length = N), - this.convert13b(x.words, x.length, rws, N), - this.convert13b(y.words, y.length, nrws, N), - this.transform(rws, _, rwst, iwst, N, rbt), - this.transform(nrws, _, nrwst, niwst, N, rbt); - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - (iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]), (rwst[i] = rx); - } - return ( - this.conjugate(rwst, iwst, N), - this.transform(rwst, iwst, rmws, _, N, rbt), - this.conjugate(rmws, _, N), - this.normalize13b(rmws, N), - (out.negative = x.negative ^ y.negative), - (out.length = x.length + y.length), - out.strip() - ); - }), - (BN.prototype.mul = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), this.mulTo(num, out); - }), - (BN.prototype.mulf = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), jumboMulTo(this, num, out); - }), - (BN.prototype.imul = function (num) { - return this.clone().mulTo(num, this); - }), - (BN.prototype.imuln = function (num) { - assert(typeof num == "number"), assert(num < 67108864); - for (var carry = 0, i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num, - lo = (w & 67108863) + (carry & 67108863); - (carry >>= 26), (carry += (w / 67108864) | 0), (carry += lo >>> 26), (this.words[i] = lo & 67108863); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.muln = function (num) { - return this.clone().imuln(num); - }), - (BN.prototype.sqr = function () { - return this.mul(this); - }), - (BN.prototype.isqr = function () { - return this.imul(this.clone()); - }), - (BN.prototype.pow = function (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - for (var res = this, i = 0; i < w.length && w[i] === 0; i++, res = res.sqr()); - if (++i < w.length) for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) w[i] !== 0 && (res = res.mul(q)); - return res; - }), - (BN.prototype.iushln = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26, - carryMask = (67108863 >>> (26 - r)) << (26 - r), - i; - if (r !== 0) { - var carry = 0; - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask, - c = ((this.words[i] | 0) - newCarry) << r; - (this.words[i] = c | carry), (carry = newCarry >>> (26 - r)); - } - carry && ((this.words[i] = carry), this.length++); - } - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) this.words[i + s] = this.words[i]; - for (i = 0; i < s; i++) this.words[i] = 0; - this.length += s; - } - return this.strip(); - }), - (BN.prototype.ishln = function (bits) { - return assert(this.negative === 0), this.iushln(bits); - }), - (BN.prototype.iushrn = function (bits, hint, extended) { - assert(typeof bits == "number" && bits >= 0); - var h; - hint ? (h = (hint - (hint % 26)) / 26) : (h = 0); - var r = bits % 26, - s = Math.min((bits - r) / 26, this.length), - mask = 67108863 ^ ((67108863 >>> r) << r), - maskedWords = extended; - if (((h -= s), (h = Math.max(0, h)), maskedWords)) { - for (var i = 0; i < s; i++) maskedWords.words[i] = this.words[i]; - maskedWords.length = s; - } - if (s !== 0) - if (this.length > s) for (this.length -= s, i = 0; i < this.length; i++) this.words[i] = this.words[i + s]; - else (this.words[0] = 0), (this.length = 1); - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - (this.words[i] = (carry << (26 - r)) | (word >>> r)), (carry = word & mask); - } - return ( - maskedWords && carry !== 0 && (maskedWords.words[maskedWords.length++] = carry), - this.length === 0 && ((this.words[0] = 0), (this.length = 1)), - this.strip() - ); - }), - (BN.prototype.ishrn = function (bits, hint, extended) { - return assert(this.negative === 0), this.iushrn(bits, hint, extended); - }), - (BN.prototype.shln = function (bits) { - return this.clone().ishln(bits); - }), - (BN.prototype.ushln = function (bits) { - return this.clone().iushln(bits); - }), - (BN.prototype.shrn = function (bits) { - return this.clone().ishrn(bits); - }), - (BN.prototype.ushrn = function (bits) { - return this.clone().iushrn(bits); - }), - (BN.prototype.testn = function (bit) { - assert(typeof bit == "number" && bit >= 0); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return !1; - var w = this.words[s]; - return !!(w & q); - }), - (BN.prototype.imaskn = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26; - if ((assert(this.negative === 0, "imaskn works only with positive numbers"), this.length <= s)) return this; - if ((r !== 0 && s++, (this.length = Math.min(s, this.length)), r !== 0)) { - var mask = 67108863 ^ ((67108863 >>> r) << r); - this.words[this.length - 1] &= mask; - } - return this.strip(); - }), - (BN.prototype.maskn = function (bits) { - return this.clone().imaskn(bits); - }), - (BN.prototype.iaddn = function (num) { - return ( - assert(typeof num == "number"), - assert(num < 67108864), - num < 0 - ? this.isubn(-num) - : this.negative !== 0 - ? this.length === 1 && (this.words[0] | 0) < num - ? ((this.words[0] = num - (this.words[0] | 0)), (this.negative = 0), this) - : ((this.negative = 0), this.isubn(num), (this.negative = 1), this) - : this._iaddn(num) - ); - }), - (BN.prototype._iaddn = function (num) { - this.words[0] += num; - for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) - (this.words[i] -= 67108864), i === this.length - 1 ? (this.words[i + 1] = 1) : this.words[i + 1]++; - return (this.length = Math.max(this.length, i + 1)), this; - }), - (BN.prototype.isubn = function (num) { - if ((assert(typeof num == "number"), assert(num < 67108864), num < 0)) return this.iaddn(-num); - if (this.negative !== 0) return (this.negative = 0), this.iaddn(num), (this.negative = 1), this; - if (((this.words[0] -= num), this.length === 1 && this.words[0] < 0)) - (this.words[0] = -this.words[0]), (this.negative = 1); - else - for (var i = 0; i < this.length && this.words[i] < 0; i++) - (this.words[i] += 67108864), (this.words[i + 1] -= 1); - return this.strip(); - }), - (BN.prototype.addn = function (num) { - return this.clone().iaddn(num); - }), - (BN.prototype.subn = function (num) { - return this.clone().isubn(num); - }), - (BN.prototype.iabs = function () { - return (this.negative = 0), this; - }), - (BN.prototype.abs = function () { - return this.clone().iabs(); - }), - (BN.prototype._ishlnsubmul = function (num, mul, shift) { - var len = num.length + shift, - i; - this._expand(len); - var w, - carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - (w -= right & 67108863), - (carry = (w >> 26) - ((right / 67108864) | 0)), - (this.words[i + shift] = w & 67108863); - } - for (; i < this.length - shift; i++) - (w = (this.words[i + shift] | 0) + carry), (carry = w >> 26), (this.words[i + shift] = w & 67108863); - if (carry === 0) return this.strip(); - for (assert(carry === -1), carry = 0, i = 0; i < this.length; i++) - (w = -(this.words[i] | 0) + carry), (carry = w >> 26), (this.words[i] = w & 67108863); - return (this.negative = 1), this.strip(); - }), - (BN.prototype._wordDiv = function (num, mode) { - var shift = this.length - num.length, - a = this.clone(), - b = num, - bhi = b.words[b.length - 1] | 0, - bhiBits = this._countBits(bhi); - (shift = 26 - bhiBits), - shift !== 0 && ((b = b.ushln(shift)), a.iushln(shift), (bhi = b.words[b.length - 1] | 0)); - var m = a.length - b.length, - q; - if (mode !== "mod") { - (q = new BN(null)), (q.length = m + 1), (q.words = new Array(q.length)); - for (var i = 0; i < q.length; i++) q.words[i] = 0; - } - var diff = a.clone()._ishlnsubmul(b, 1, m); - diff.negative === 0 && ((a = diff), q && (q.words[m] = 1)); - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); - for (qj = Math.min((qj / bhi) | 0, 67108863), a._ishlnsubmul(b, qj, j); a.negative !== 0; ) - qj--, (a.negative = 0), a._ishlnsubmul(b, 1, j), a.isZero() || (a.negative ^= 1); - q && (q.words[j] = qj); - } - return ( - q && q.strip(), - a.strip(), - mode !== "div" && shift !== 0 && a.iushrn(shift), - { - div: q || null, - mod: a, - } - ); - }), - (BN.prototype.divmod = function (num, mode, positive) { - if ((assert(!num.isZero()), this.isZero())) - return { - div: new BN(0), - mod: new BN(0), - }; - var div, mod, res; - return this.negative !== 0 && num.negative === 0 - ? ((res = this.neg().divmod(num, mode)), - mode !== "mod" && (div = res.div.neg()), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.iadd(num)), - { - div, - mod, - }) - : this.negative === 0 && num.negative !== 0 - ? ((res = this.divmod(num.neg(), mode)), - mode !== "mod" && (div = res.div.neg()), - { - div, - mod: res.mod, - }) - : (this.negative & num.negative) !== 0 - ? ((res = this.neg().divmod(num.neg(), mode)), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.isub(num)), - { - div: res.div, - mod, - }) - : num.length > this.length || this.cmp(num) < 0 - ? { - div: new BN(0), - mod: this, - } - : num.length === 1 - ? mode === "div" - ? { - div: this.divn(num.words[0]), - mod: null, - } - : mode === "mod" - ? { - div: null, - mod: new BN(this.modn(num.words[0])), - } - : { - div: this.divn(num.words[0]), - mod: new BN(this.modn(num.words[0])), - } - : this._wordDiv(num, mode); - }), - (BN.prototype.div = function (num) { - return this.divmod(num, "div", !1).div; - }), - (BN.prototype.mod = function (num) { - return this.divmod(num, "mod", !1).mod; - }), - (BN.prototype.umod = function (num) { - return this.divmod(num, "mod", !0).mod; - }), - (BN.prototype.divRound = function (num) { - var dm = this.divmod(num); - if (dm.mod.isZero()) return dm.div; - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod, - half = num.ushrn(1), - r2 = num.andln(1), - cmp = mod.cmp(half); - return cmp < 0 || (r2 === 1 && cmp === 0) - ? dm.div - : dm.div.negative !== 0 - ? dm.div.isubn(1) - : dm.div.iaddn(1); - }), - (BN.prototype.modn = function (num) { - assert(num <= 67108863); - for (var p = (1 << 26) % num, acc = 0, i = this.length - 1; i >= 0; i--) - acc = (p * acc + (this.words[i] | 0)) % num; - return acc; - }), - (BN.prototype.idivn = function (num) { - assert(num <= 67108863); - for (var carry = 0, i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 67108864; - (this.words[i] = (w / num) | 0), (carry = w % num); - } - return this.strip(); - }), - (BN.prototype.divn = function (num) { - return this.clone().idivn(num); - }), - (BN.prototype.egcd = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var x = this, - y = p.clone(); - x.negative !== 0 ? (x = x.umod(p)) : (x = x.clone()); - for (var A = new BN(1), B = new BN(0), C = new BN(0), D = new BN(1), g = 0; x.isEven() && y.isEven(); ) - x.iushrn(1), y.iushrn(1), ++g; - for (var yp = y.clone(), xp = x.clone(); !x.isZero(); ) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) - for (x.iushrn(i); i-- > 0; ) - (A.isOdd() || B.isOdd()) && (A.iadd(yp), B.isub(xp)), A.iushrn(1), B.iushrn(1); - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) - for (y.iushrn(j); j-- > 0; ) - (C.isOdd() || D.isOdd()) && (C.iadd(yp), D.isub(xp)), C.iushrn(1), D.iushrn(1); - x.cmp(y) >= 0 ? (x.isub(y), A.isub(C), B.isub(D)) : (y.isub(x), C.isub(A), D.isub(B)); - } - return { - a: C, - b: D, - gcd: y.iushln(g), - }; - }), - (BN.prototype._invmp = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var a = this, - b = p.clone(); - a.negative !== 0 ? (a = a.umod(p)) : (a = a.clone()); - for (var x1 = new BN(1), x2 = new BN(0), delta = b.clone(); a.cmpn(1) > 0 && b.cmpn(1) > 0; ) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) for (a.iushrn(i); i-- > 0; ) x1.isOdd() && x1.iadd(delta), x1.iushrn(1); - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) for (b.iushrn(j); j-- > 0; ) x2.isOdd() && x2.iadd(delta), x2.iushrn(1); - a.cmp(b) >= 0 ? (a.isub(b), x1.isub(x2)) : (b.isub(a), x2.isub(x1)); - } - var res; - return a.cmpn(1) === 0 ? (res = x1) : (res = x2), res.cmpn(0) < 0 && res.iadd(p), res; - }), - (BN.prototype.gcd = function (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - var a = this.clone(), - b = num.clone(); - (a.negative = 0), (b.negative = 0); - for (var shift = 0; a.isEven() && b.isEven(); shift++) a.iushrn(1), b.iushrn(1); - do { - for (; a.isEven(); ) a.iushrn(1); - for (; b.isEven(); ) b.iushrn(1); - var r = a.cmp(b); - if (r < 0) { - var t = a; - (a = b), (b = t); - } else if (r === 0 || b.cmpn(1) === 0) break; - a.isub(b); - } while (!0); - return b.iushln(shift); - }), - (BN.prototype.invm = function (num) { - return this.egcd(num).a.umod(num); - }), - (BN.prototype.isEven = function () { - return (this.words[0] & 1) === 0; - }), - (BN.prototype.isOdd = function () { - return (this.words[0] & 1) === 1; - }), - (BN.prototype.andln = function (num) { - return this.words[0] & num; - }), - (BN.prototype.bincn = function (bit) { - assert(typeof bit == "number"); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return this._expand(s + 1), (this.words[s] |= q), this; - for (var carry = q, i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - (w += carry), (carry = w >>> 26), (w &= 67108863), (this.words[i] = w); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.isZero = function () { - return this.length === 1 && this.words[0] === 0; - }), - (BN.prototype.cmpn = function (num) { - var negative = num < 0; - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - this.strip(); - var res; - if (this.length > 1) res = 1; - else { - negative && (num = -num), assert(num <= 67108863, "Number is too big"); - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.cmp = function (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - var res = this.ucmp(num); - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.ucmp = function (num) { - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - for (var res = 0, i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0, - b = num.words[i] | 0; - if (a !== b) { - a < b ? (res = -1) : a > b && (res = 1); - break; - } - } - return res; - }), - (BN.prototype.gtn = function (num) { - return this.cmpn(num) === 1; - }), - (BN.prototype.gt = function (num) { - return this.cmp(num) === 1; - }), - (BN.prototype.gten = function (num) { - return this.cmpn(num) >= 0; - }), - (BN.prototype.gte = function (num) { - return this.cmp(num) >= 0; - }), - (BN.prototype.ltn = function (num) { - return this.cmpn(num) === -1; - }), - (BN.prototype.lt = function (num) { - return this.cmp(num) === -1; - }), - (BN.prototype.lten = function (num) { - return this.cmpn(num) <= 0; - }), - (BN.prototype.lte = function (num) { - return this.cmp(num) <= 0; - }), - (BN.prototype.eqn = function (num) { - return this.cmpn(num) === 0; - }), - (BN.prototype.eq = function (num) { - return this.cmp(num) === 0; - }), - (BN.red = function (num) { - return new Red(num); - }), - (BN.prototype.toRed = function (ctx) { - return ( - assert(!this.red, "Already a number in reduction context"), - assert(this.negative === 0, "red works only with positives"), - ctx.convertTo(this)._forceRed(ctx) - ); - }), - (BN.prototype.fromRed = function () { - return assert(this.red, "fromRed works only with numbers in reduction context"), this.red.convertFrom(this); - }), - (BN.prototype._forceRed = function (ctx) { - return (this.red = ctx), this; - }), - (BN.prototype.forceRed = function (ctx) { - return assert(!this.red, "Already a number in reduction context"), this._forceRed(ctx); - }), - (BN.prototype.redAdd = function (num) { - return assert(this.red, "redAdd works only with red numbers"), this.red.add(this, num); - }), - (BN.prototype.redIAdd = function (num) { - return assert(this.red, "redIAdd works only with red numbers"), this.red.iadd(this, num); - }), - (BN.prototype.redSub = function (num) { - return assert(this.red, "redSub works only with red numbers"), this.red.sub(this, num); - }), - (BN.prototype.redISub = function (num) { - return assert(this.red, "redISub works only with red numbers"), this.red.isub(this, num); - }), - (BN.prototype.redShl = function (num) { - return assert(this.red, "redShl works only with red numbers"), this.red.shl(this, num); - }), - (BN.prototype.redMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.mul(this, num) - ); - }), - (BN.prototype.redIMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.imul(this, num) - ); - }), - (BN.prototype.redSqr = function () { - return assert(this.red, "redSqr works only with red numbers"), this.red._verify1(this), this.red.sqr(this); - }), - (BN.prototype.redISqr = function () { - return assert(this.red, "redISqr works only with red numbers"), this.red._verify1(this), this.red.isqr(this); - }), - (BN.prototype.redSqrt = function () { - return assert(this.red, "redSqrt works only with red numbers"), this.red._verify1(this), this.red.sqrt(this); - }), - (BN.prototype.redInvm = function () { - return assert(this.red, "redInvm works only with red numbers"), this.red._verify1(this), this.red.invm(this); - }), - (BN.prototype.redNeg = function () { - return assert(this.red, "redNeg works only with red numbers"), this.red._verify1(this), this.red.neg(this); - }), - (BN.prototype.redPow = function (num) { - return assert(this.red && !num.red, "redPow(normalNum)"), this.red._verify1(this), this.red.pow(this, num); - }); - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null, - }; - function MPrime(name, p) { - (this.name = name), - (this.p = new BN(p, 16)), - (this.n = this.p.bitLength()), - (this.k = new BN(1).iushln(this.n).isub(this.p)), - (this.tmp = this._tmp()); - } - (MPrime.prototype._tmp = function () { - var tmp = new BN(null); - return (tmp.words = new Array(Math.ceil(this.n / 13))), tmp; - }), - (MPrime.prototype.ireduce = function (num) { - var r = num, - rlen; - do this.split(r, this.tmp), (r = this.imulK(r)), (r = r.iadd(this.tmp)), (rlen = r.bitLength()); - while (rlen > this.n); - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - return ( - cmp === 0 - ? ((r.words[0] = 0), (r.length = 1)) - : cmp > 0 - ? r.isub(this.p) - : r.strip !== void 0 - ? r.strip() - : r._strip(), - r - ); - }), - (MPrime.prototype.split = function (input, out) { - input.iushrn(this.n, 0, out); - }), - (MPrime.prototype.imulK = function (num) { - return num.imul(this.k); - }); - function K256() { - MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f"); - } - inherits(K256, MPrime), - (K256.prototype.split = function (input, output) { - for (var mask = 4194303, outLen = Math.min(input.length, 9), i = 0; i < outLen; i++) - output.words[i] = input.words[i]; - if (((output.length = outLen), input.length <= 9)) { - (input.words[0] = 0), (input.length = 1); - return; - } - var prev = input.words[9]; - for (output.words[output.length++] = prev & mask, i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - (input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22)), (prev = next); - } - (prev >>>= 22), - (input.words[i - 10] = prev), - prev === 0 && input.length > 10 ? (input.length -= 10) : (input.length -= 9); - }), - (K256.prototype.imulK = function (num) { - (num.words[num.length] = 0), (num.words[num.length + 1] = 0), (num.length += 2); - for (var lo = 0, i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - (lo += w * 977), (num.words[i] = lo & 67108863), (lo = w * 64 + ((lo / 67108864) | 0)); - } - return ( - num.words[num.length - 1] === 0 && (num.length--, num.words[num.length - 1] === 0 && num.length--), num - ); - }); - function P224() { - MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001"); - } - inherits(P224, MPrime); - function P192() { - MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff"); - } - inherits(P192, MPrime); - function P25519() { - MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed"); - } - inherits(P25519, MPrime), - (P25519.prototype.imulK = function (num) { - for (var carry = 0, i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 19 + carry, - lo = hi & 67108863; - (hi >>>= 26), (num.words[i] = lo), (carry = hi); - } - return carry !== 0 && (num.words[num.length++] = carry), num; - }), - (BN._prime = function (name) { - if (primes[name]) return primes[name]; - var prime2; - if (name === "k256") prime2 = new K256(); - else if (name === "p224") prime2 = new P224(); - else if (name === "p192") prime2 = new P192(); - else if (name === "p25519") prime2 = new P25519(); - else throw new Error("Unknown prime " + name); - return (primes[name] = prime2), prime2; - }); - function Red(m) { - if (typeof m == "string") { - var prime = BN._prime(m); - (this.m = prime.p), (this.prime = prime); - } else assert(m.gtn(1), "modulus must be greater than 1"), (this.m = m), (this.prime = null); - } - (Red.prototype._verify1 = function (a) { - assert(a.negative === 0, "red works only with positives"), assert(a.red, "red works only with red numbers"); - }), - (Red.prototype._verify2 = function (a, b) { - assert((a.negative | b.negative) === 0, "red works only with positives"), - assert(a.red && a.red === b.red, "red works only with red numbers"); - }), - (Red.prototype.imod = function (a) { - return this.prime ? this.prime.ireduce(a)._forceRed(this) : a.umod(this.m)._forceRed(this); - }), - (Red.prototype.neg = function (a) { - return a.isZero() ? a.clone() : this.m.sub(a)._forceRed(this); - }), - (Red.prototype.add = function (a, b) { - this._verify2(a, b); - var res = a.add(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res._forceRed(this); - }), - (Red.prototype.iadd = function (a, b) { - this._verify2(a, b); - var res = a.iadd(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res; - }), - (Red.prototype.sub = function (a, b) { - this._verify2(a, b); - var res = a.sub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res._forceRed(this); - }), - (Red.prototype.isub = function (a, b) { - this._verify2(a, b); - var res = a.isub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res; - }), - (Red.prototype.shl = function (a, num) { - return this._verify1(a), this.imod(a.ushln(num)); - }), - (Red.prototype.imul = function (a, b) { - return this._verify2(a, b), this.imod(a.imul(b)); - }), - (Red.prototype.mul = function (a, b) { - return this._verify2(a, b), this.imod(a.mul(b)); - }), - (Red.prototype.isqr = function (a) { - return this.imul(a, a.clone()); - }), - (Red.prototype.sqr = function (a) { - return this.mul(a, a); - }), - (Red.prototype.sqrt = function (a) { - if (a.isZero()) return a.clone(); - var mod3 = this.m.andln(3); - if ((assert(mod3 % 2 === 1), mod3 === 3)) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - for (var q = this.m.subn(1), s = 0; !q.isZero() && q.andln(1) === 0; ) s++, q.iushrn(1); - assert(!q.isZero()); - var one = new BN(1).toRed(this), - nOne = one.redNeg(), - lpow = this.m.subn(1).iushrn(1), - z = this.m.bitLength(); - for (z = new BN(2 * z * z).toRed(this); this.pow(z, lpow).cmp(nOne) !== 0; ) z.redIAdd(nOne); - for ( - var c = this.pow(z, q), r = this.pow(a, q.addn(1).iushrn(1)), t = this.pow(a, q), m = s; - t.cmp(one) !== 0; - - ) { - for (var tmp = t, i = 0; tmp.cmp(one) !== 0; i++) tmp = tmp.redSqr(); - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - (r = r.redMul(b)), (c = b.redSqr()), (t = t.redMul(c)), (m = i); - } - return r; - }), - (Red.prototype.invm = function (a) { - var inv = a._invmp(this.m); - return inv.negative !== 0 ? ((inv.negative = 0), this.imod(inv).redNeg()) : this.imod(inv); - }), - (Red.prototype.pow = function (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - var windowSize = 4, - wnd = new Array(1 << windowSize); - (wnd[0] = new BN(1).toRed(this)), (wnd[1] = a); - for (var i = 2; i < wnd.length; i++) wnd[i] = this.mul(wnd[i - 1], a); - var res = wnd[0], - current = 0, - currentLen = 0, - start = num.bitLength() % 26; - for (start === 0 && (start = 26), i = num.length - 1; i >= 0; i--) { - for (var word = num.words[i], j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if ((res !== wnd[0] && (res = this.sqr(res)), bit === 0 && current === 0)) { - currentLen = 0; - continue; - } - (current <<= 1), - (current |= bit), - currentLen++, - !(currentLen !== windowSize && (i !== 0 || j !== 0)) && - ((res = this.mul(res, wnd[current])), (currentLen = 0), (current = 0)); - } - start = 26; - } - return res; - }), - (Red.prototype.convertTo = function (num) { - var r = num.umod(this.m); - return r === num ? r.clone() : r; - }), - (Red.prototype.convertFrom = function (num) { - var res = num.clone(); - return (res.red = null), res; - }), - (BN.mont = function (num) { - return new Mont(num); - }); - function Mont(m) { - Red.call(this, m), - (this.shift = this.m.bitLength()), - this.shift % 26 !== 0 && (this.shift += 26 - (this.shift % 26)), - (this.r = new BN(1).iushln(this.shift)), - (this.r2 = this.imod(this.r.sqr())), - (this.rinv = this.r._invmp(this.m)), - (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), - (this.minv = this.minv.umod(this.r)), - (this.minv = this.r.sub(this.minv)); - } - inherits(Mont, Red), - (Mont.prototype.convertTo = function (num) { - return this.imod(num.ushln(this.shift)); - }), - (Mont.prototype.convertFrom = function (num) { - var r = this.imod(num.mul(this.rinv)); - return (r.red = null), r; - }), - (Mont.prototype.imul = function (a, b) { - if (a.isZero() || b.isZero()) return (a.words[0] = 0), (a.length = 1), a; - var t = a.imul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.mul = function (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - var t = a.mul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.invm = function (a) { - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }); - })(typeof module > "u" || module, exports); - }, -}); - -// node_modules/safer-buffer/safer.js -var require_safer = __commonJS({ - "node_modules/safer-buffer/safer.js"(exports, module) { - "use strict"; - var buffer = __require("buffer"), - Buffer2 = buffer.Buffer, - safer = {}, - key; - for (key in buffer) - !buffer.hasOwnProperty(key) || key === "SlowBuffer" || key === "Buffer" || (safer[key] = buffer[key]); - var Safer = (safer.Buffer = {}); - for (key in Buffer2) - !Buffer2.hasOwnProperty(key) || key === "allocUnsafe" || key === "allocUnsafeSlow" || (Safer[key] = Buffer2[key]); - safer.Buffer.prototype = Buffer2.prototype; - (!Safer.from || Safer.from === Uint8Array.from) && - (Safer.from = function (value, encodingOrOffset, length) { - if (typeof value == "number") - throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value); - if (value && typeof value.length > "u") - throw new TypeError( - "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + - typeof value, - ); - return Buffer2(value, encodingOrOffset, length); - }); - Safer.alloc || - (Safer.alloc = function (size, fill, encoding) { - if (typeof size != "number") - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size); - if (size < 0 || size >= 2 * (1 << 30)) - throw new RangeError('The value "' + size + '" is invalid for option "size"'); - var buf = Buffer2(size); - return ( - !fill || fill.length === 0 - ? buf.fill(0) - : typeof encoding == "string" - ? buf.fill(fill, encoding) - : buf.fill(fill), - buf - ); - }); - if (!safer.kStringMaxLength) - try { - safer.kStringMaxLength = MAX_STRING_LENGTH; - } catch {} - safer.constants || - ((safer.constants = { - MAX_LENGTH: safer.kMaxLength, - }), - safer.kStringMaxLength && (safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength)); - module.exports = safer; - }, -}); - -// node_modules/asn1.js/lib/asn1/base/reporter.js -var require_reporter = __commonJS({ - "node_modules/asn1.js/lib/asn1/base/reporter.js"(exports) { - "use strict"; - var inherits = require_inherits_browser(); - function Reporter(options) { - this._reporterState = { - obj: null, - path: [], - options: options || {}, - errors: [], - }; - } - exports.Reporter = Reporter; - Reporter.prototype.isError = function (obj) { - return obj instanceof ReporterError; - }; - Reporter.prototype.save = function () { - let state = this._reporterState; - return { obj: state.obj, pathLen: state.path.length }; - }; - Reporter.prototype.restore = function (data) { - let state = this._reporterState; - (state.obj = data.obj), (state.path = state.path.slice(0, data.pathLen)); - }; - Reporter.prototype.enterKey = function (key) { - return this._reporterState.path.push(key); - }; - Reporter.prototype.exitKey = function (index) { - let state = this._reporterState; - state.path = state.path.slice(0, index - 1); - }; - Reporter.prototype.leaveKey = function (index, key, value) { - let state = this._reporterState; - this.exitKey(index), state.obj !== null && (state.obj[key] = value); - }; - Reporter.prototype.path = function () { - return this._reporterState.path.join("/"); - }; - Reporter.prototype.enterObject = function () { - let state = this._reporterState, - prev = state.obj; - return (state.obj = {}), prev; - }; - Reporter.prototype.leaveObject = function (prev) { - let state = this._reporterState, - now = state.obj; - return (state.obj = prev), now; - }; - Reporter.prototype.error = function (msg) { - let err, - state = this._reporterState, - inherited = msg instanceof ReporterError; - if ( - (inherited - ? (err = msg) - : (err = new ReporterError( - state.path - .map(function (elem) { - return "[" + JSON.stringify(elem) + "]"; - }) - .join(""), - msg.message || msg, - msg.stack, - )), - !state.options.partial) - ) - throw err; - return inherited || state.errors.push(err), err; - }; - Reporter.prototype.wrapResult = function (result) { - let state = this._reporterState; - return state.options.partial - ? { - result: this.isError(result) ? null : result, - errors: state.errors, - } - : result; - }; - function ReporterError(path, msg) { - (this.path = path), this.rethrow(msg); - } - inherits(ReporterError, Error); - ReporterError.prototype.rethrow = function (msg) { - if ( - ((this.message = msg + " at: " + (this.path || "(shallow)")), - Error.captureStackTrace && Error.captureStackTrace(this, ReporterError), - !this.stack) - ) - try { - throw new Error(this.message); - } catch (e) { - this.stack = e.stack; - } - return this; - }; - }, -}); - -// node_modules/asn1.js/lib/asn1/base/buffer.js -var require_buffer = __commonJS({ - "node_modules/asn1.js/lib/asn1/base/buffer.js"(exports) { - "use strict"; - var inherits = require_inherits_browser(), - Reporter = require_reporter().Reporter, - Buffer2 = require_safer().Buffer; - function DecoderBuffer(base, options) { - if ((Reporter.call(this, options), !Buffer2.isBuffer(base))) { - this.error("Input not Buffer"); - return; - } - (this.base = base), (this.offset = 0), (this.length = base.length); - } - inherits(DecoderBuffer, Reporter); - exports.DecoderBuffer = DecoderBuffer; - DecoderBuffer.isDecoderBuffer = function (data) { - return data instanceof DecoderBuffer - ? !0 - : typeof data == "object" && - Buffer2.isBuffer(data.base) && - data.constructor.name === "DecoderBuffer" && - typeof data.offset == "number" && - typeof data.length == "number" && - typeof data.save == "function" && - typeof data.restore == "function" && - typeof data.isEmpty == "function" && - typeof data.readUInt8 == "function" && - typeof data.skip == "function" && - typeof data.raw == "function"; - }; - DecoderBuffer.prototype.save = function () { - return { - offset: this.offset, - reporter: Reporter.prototype.save.call(this), - }; - }; - DecoderBuffer.prototype.restore = function (save) { - let res = new DecoderBuffer(this.base); - return ( - (res.offset = save.offset), - (res.length = this.offset), - (this.offset = save.offset), - Reporter.prototype.restore.call(this, save.reporter), - res - ); - }; - DecoderBuffer.prototype.isEmpty = function () { - return this.offset === this.length; - }; - DecoderBuffer.prototype.readUInt8 = function (fail) { - return this.offset + 1 <= this.length - ? this.base.readUInt8(this.offset++, !0) - : this.error(fail || "DecoderBuffer overrun"); - }; - DecoderBuffer.prototype.skip = function (bytes, fail) { - if (!(this.offset + bytes <= this.length)) return this.error(fail || "DecoderBuffer overrun"); - let res = new DecoderBuffer(this.base); - return ( - (res._reporterState = this._reporterState), - (res.offset = this.offset), - (res.length = this.offset + bytes), - (this.offset += bytes), - res - ); - }; - DecoderBuffer.prototype.raw = function (save) { - return this.base.slice(save ? save.offset : this.offset, this.length); - }; - function EncoderBuffer(value, reporter) { - if (Array.isArray(value)) - (this.length = 0), - (this.value = value.map(function (item) { - return ( - EncoderBuffer.isEncoderBuffer(item) || (item = new EncoderBuffer(item, reporter)), - (this.length += item.length), - item - ); - }, this)); - else if (typeof value == "number") { - if (!(0 <= value && value <= 255)) return reporter.error("non-byte EncoderBuffer value"); - (this.value = value), (this.length = 1); - } else if (typeof value == "string") (this.value = value), (this.length = Buffer2.byteLength(value)); - else if (Buffer2.isBuffer(value)) (this.value = value), (this.length = value.length); - else return reporter.error("Unsupported type: " + typeof value); - } - exports.EncoderBuffer = EncoderBuffer; - EncoderBuffer.isEncoderBuffer = function (data) { - return data instanceof EncoderBuffer - ? !0 - : typeof data == "object" && - data.constructor.name === "EncoderBuffer" && - typeof data.length == "number" && - typeof data.join == "function"; - }; - EncoderBuffer.prototype.join = function (out, offset) { - return ( - out || (out = Buffer2.alloc(this.length)), - offset || (offset = 0), - this.length === 0 || - (Array.isArray(this.value) - ? this.value.forEach(function (item) { - item.join(out, offset), (offset += item.length); - }) - : (typeof this.value == "number" - ? (out[offset] = this.value) - : typeof this.value == "string" - ? out.write(this.value, offset) - : Buffer2.isBuffer(this.value) && this.value.copy(out, offset), - (offset += this.length))), - out - ); - }; - }, -}); - -// node_modules/asn1.js/lib/asn1/base/node.js -var require_node = __commonJS({ - "node_modules/asn1.js/lib/asn1/base/node.js"(exports, module) { - "use strict"; - var Reporter = require_reporter().Reporter, - EncoderBuffer = require_buffer().EncoderBuffer, - DecoderBuffer = require_buffer().DecoderBuffer, - assert = require_minimalistic_assert(), - tags = [ - "seq", - "seqof", - "set", - "setof", - "objid", - "bool", - "gentime", - "utctime", - "null_", - "enum", - "int", - "objDesc", - "bitstr", - "bmpstr", - "charstr", - "genstr", - "graphstr", - "ia5str", - "iso646str", - "numstr", - "octstr", - "printstr", - "t61str", - "unistr", - "utf8str", - "videostr", - ], - methods = ["key", "obj", "use", "optional", "explicit", "implicit", "def", "choice", "any", "contains"].concat( - tags, - ), - overrided = [ - "_peekTag", - "_decodeTag", - "_use", - "_decodeStr", - "_decodeObjid", - "_decodeTime", - "_decodeNull", - "_decodeInt", - "_decodeBool", - "_decodeList", - "_encodeComposite", - "_encodeStr", - "_encodeObjid", - "_encodeTime", - "_encodeNull", - "_encodeInt", - "_encodeBool", - ]; - function Node(enc, parent, name) { - let state = {}; - (this._baseState = state), - (state.name = name), - (state.enc = enc), - (state.parent = parent || null), - (state.children = null), - (state.tag = null), - (state.args = null), - (state.reverseArgs = null), - (state.choice = null), - (state.optional = !1), - (state.any = !1), - (state.obj = !1), - (state.use = null), - (state.useDecoder = null), - (state.key = null), - (state.default = null), - (state.explicit = null), - (state.implicit = null), - (state.contains = null), - state.parent || ((state.children = []), this._wrap()); - } - module.exports = Node; - var stateProps = [ - "enc", - "parent", - "children", - "tag", - "args", - "reverseArgs", - "choice", - "optional", - "any", - "obj", - "use", - "alteredUse", - "key", - "default", - "explicit", - "implicit", - "contains", - ]; - Node.prototype.clone = function () { - let state = this._baseState, - cstate = {}; - stateProps.forEach(function (prop) { - cstate[prop] = state[prop]; - }); - let res = new this.constructor(cstate.parent); - return (res._baseState = cstate), res; - }; - Node.prototype._wrap = function () { - let state = this._baseState; - methods.forEach(function (method) { - this[method] = function () { - let clone = new this.constructor(this); - return state.children.push(clone), clone[method].apply(clone, arguments); - }; - }, this); - }; - Node.prototype._init = function (body) { - let state = this._baseState; - assert(state.parent === null), - body.call(this), - (state.children = state.children.filter(function (child) { - return child._baseState.parent === this; - }, this)), - assert.equal(state.children.length, 1, "Root node can have only one child"); - }; - Node.prototype._useArgs = function (args) { - let state = this._baseState, - children = args.filter(function (arg) { - return arg instanceof this.constructor; - }, this); - (args = args.filter(function (arg) { - return !(arg instanceof this.constructor); - }, this)), - children.length !== 0 && - (assert(state.children === null), - (state.children = children), - children.forEach(function (child) { - child._baseState.parent = this; - }, this)), - args.length !== 0 && - (assert(state.args === null), - (state.args = args), - (state.reverseArgs = args.map(function (arg) { - if (typeof arg != "object" || arg.constructor !== Object) return arg; - let res = {}; - return ( - Object.keys(arg).forEach(function (key) { - key == (key | 0) && (key |= 0); - let value = arg[key]; - res[value] = key; - }), - res - ); - }))); - }; - overrided.forEach(function (method) { - Node.prototype[method] = function () { - let state = this._baseState; - throw new Error(method + " not implemented for encoding: " + state.enc); - }; - }); - tags.forEach(function (tag) { - Node.prototype[tag] = function () { - let state = this._baseState, - args = Array.prototype.slice.call(arguments); - return assert(state.tag === null), (state.tag = tag), this._useArgs(args), this; - }; - }); - Node.prototype.use = function (item) { - assert(item); - let state = this._baseState; - return assert(state.use === null), (state.use = item), this; - }; - Node.prototype.optional = function () { - let state = this._baseState; - return (state.optional = !0), this; - }; - Node.prototype.def = function (val) { - let state = this._baseState; - return assert(state.default === null), (state.default = val), (state.optional = !0), this; - }; - Node.prototype.explicit = function (num) { - let state = this._baseState; - return assert(state.explicit === null && state.implicit === null), (state.explicit = num), this; - }; - Node.prototype.implicit = function (num) { - let state = this._baseState; - return assert(state.explicit === null && state.implicit === null), (state.implicit = num), this; - }; - Node.prototype.obj = function () { - let state = this._baseState, - args = Array.prototype.slice.call(arguments); - return (state.obj = !0), args.length !== 0 && this._useArgs(args), this; - }; - Node.prototype.key = function (newKey) { - let state = this._baseState; - return assert(state.key === null), (state.key = newKey), this; - }; - Node.prototype.any = function () { - let state = this._baseState; - return (state.any = !0), this; - }; - Node.prototype.choice = function (obj) { - let state = this._baseState; - return ( - assert(state.choice === null), - (state.choice = obj), - this._useArgs( - Object.keys(obj).map(function (key) { - return obj[key]; - }), - ), - this - ); - }; - Node.prototype.contains = function (item) { - let state = this._baseState; - return assert(state.use === null), (state.contains = item), this; - }; - Node.prototype._decode = function (input, options) { - let state = this._baseState; - if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options)); - let result = state.default, - present = !0, - prevKey = null; - if ((state.key !== null && (prevKey = input.enterKey(state.key)), state.optional)) { - let tag = null; - if ( - (state.explicit !== null - ? (tag = state.explicit) - : state.implicit !== null - ? (tag = state.implicit) - : state.tag !== null && (tag = state.tag), - tag === null && !state.any) - ) { - let save = input.save(); - try { - state.choice === null ? this._decodeGeneric(state.tag, input, options) : this._decodeChoice(input, options), - (present = !0); - } catch { - present = !1; - } - input.restore(save); - } else if (((present = this._peekTag(input, tag, state.any)), input.isError(present))) return present; - } - let prevObj; - if ((state.obj && present && (prevObj = input.enterObject()), present)) { - if (state.explicit !== null) { - let explicit = this._decodeTag(input, state.explicit); - if (input.isError(explicit)) return explicit; - input = explicit; - } - let start = input.offset; - if (state.use === null && state.choice === null) { - let save; - state.any && (save = input.save()); - let body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any); - if (input.isError(body)) return body; - state.any ? (result = input.raw(save)) : (input = body); - } - if ( - (options && options.track && state.tag !== null && options.track(input.path(), start, input.length, "tagged"), - options && - options.track && - state.tag !== null && - options.track(input.path(), input.offset, input.length, "content"), - state.any || - (state.choice === null - ? (result = this._decodeGeneric(state.tag, input, options)) - : (result = this._decodeChoice(input, options))), - input.isError(result)) - ) - return result; - if ( - (!state.any && - state.choice === null && - state.children !== null && - state.children.forEach(function (child) { - child._decode(input, options); - }), - state.contains && (state.tag === "octstr" || state.tag === "bitstr")) - ) { - let data = new DecoderBuffer(result); - result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options); - } - } - return ( - state.obj && present && (result = input.leaveObject(prevObj)), - state.key !== null && (result !== null || present === !0) - ? input.leaveKey(prevKey, state.key, result) - : prevKey !== null && input.exitKey(prevKey), - result - ); - }; - Node.prototype._decodeGeneric = function (tag, input, options) { - let state = this._baseState; - return tag === "seq" || tag === "set" - ? null - : tag === "seqof" || tag === "setof" - ? this._decodeList(input, tag, state.args[0], options) - : /str$/.test(tag) - ? this._decodeStr(input, tag, options) - : tag === "objid" && state.args - ? this._decodeObjid(input, state.args[0], state.args[1], options) - : tag === "objid" - ? this._decodeObjid(input, null, null, options) - : tag === "gentime" || tag === "utctime" - ? this._decodeTime(input, tag, options) - : tag === "null_" - ? this._decodeNull(input, options) - : tag === "bool" - ? this._decodeBool(input, options) - : tag === "objDesc" - ? this._decodeStr(input, tag, options) - : tag === "int" || tag === "enum" - ? this._decodeInt(input, state.args && state.args[0], options) - : state.use !== null - ? this._getUse(state.use, input._reporterState.obj)._decode(input, options) - : input.error("unknown tag: " + tag); - }; - Node.prototype._getUse = function (entity, obj) { - let state = this._baseState; - return ( - (state.useDecoder = this._use(entity, obj)), - assert(state.useDecoder._baseState.parent === null), - (state.useDecoder = state.useDecoder._baseState.children[0]), - state.implicit !== state.useDecoder._baseState.implicit && - ((state.useDecoder = state.useDecoder.clone()), (state.useDecoder._baseState.implicit = state.implicit)), - state.useDecoder - ); - }; - Node.prototype._decodeChoice = function (input, options) { - let state = this._baseState, - result = null, - match = !1; - return ( - Object.keys(state.choice).some(function (key) { - let save = input.save(), - node = state.choice[key]; - try { - let value = node._decode(input, options); - if (input.isError(value)) return !1; - (result = { type: key, value }), (match = !0); - } catch { - return input.restore(save), !1; - } - return !0; - }, this), - match ? result : input.error("Choice not matched") - ); - }; - Node.prototype._createEncoderBuffer = function (data) { - return new EncoderBuffer(data, this.reporter); - }; - Node.prototype._encode = function (data, reporter, parent) { - let state = this._baseState; - if (state.default !== null && state.default === data) return; - let result = this._encodeValue(data, reporter, parent); - if (result !== void 0 && !this._skipDefault(result, reporter, parent)) return result; - }; - Node.prototype._encodeValue = function (data, reporter, parent) { - let state = this._baseState; - if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter()); - let result = null; - if (((this.reporter = reporter), state.optional && data === void 0)) - if (state.default !== null) data = state.default; - else return; - let content = null, - primitive = !1; - if (state.any) result = this._createEncoderBuffer(data); - else if (state.choice) result = this._encodeChoice(data, reporter); - else if (state.contains) - (content = this._getUse(state.contains, parent)._encode(data, reporter)), (primitive = !0); - else if (state.children) - (content = state.children - .map(function (child) { - if (child._baseState.tag === "null_") return child._encode(null, reporter, data); - if (child._baseState.key === null) return reporter.error("Child should have a key"); - let prevKey = reporter.enterKey(child._baseState.key); - if (typeof data != "object") return reporter.error("Child expected, but input is not object"); - let res = child._encode(data[child._baseState.key], reporter, data); - return reporter.leaveKey(prevKey), res; - }, this) - .filter(function (child) { - return child; - })), - (content = this._createEncoderBuffer(content)); - else if (state.tag === "seqof" || state.tag === "setof") { - if (!(state.args && state.args.length === 1)) return reporter.error("Too many args for : " + state.tag); - if (!Array.isArray(data)) return reporter.error("seqof/setof, but data is not Array"); - let child = this.clone(); - (child._baseState.implicit = null), - (content = this._createEncoderBuffer( - data.map(function (item) { - let state2 = this._baseState; - return this._getUse(state2.args[0], data)._encode(item, reporter); - }, child), - )); - } else - state.use !== null - ? (result = this._getUse(state.use, parent)._encode(data, reporter)) - : ((content = this._encodePrimitive(state.tag, data)), (primitive = !0)); - if (!state.any && state.choice === null) { - let tag = state.implicit !== null ? state.implicit : state.tag, - cls = state.implicit === null ? "universal" : "context"; - tag === null - ? state.use === null && reporter.error("Tag could be omitted only for .use()") - : state.use === null && (result = this._encodeComposite(tag, primitive, cls, content)); - } - return state.explicit !== null && (result = this._encodeComposite(state.explicit, !1, "context", result)), result; - }; - Node.prototype._encodeChoice = function (data, reporter) { - let state = this._baseState, - node = state.choice[data.type]; - return ( - node || assert(!1, data.type + " not found in " + JSON.stringify(Object.keys(state.choice))), - node._encode(data.value, reporter) - ); - }; - Node.prototype._encodePrimitive = function (tag, data) { - let state = this._baseState; - if (/str$/.test(tag)) return this._encodeStr(data, tag); - if (tag === "objid" && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]); - if (tag === "objid") return this._encodeObjid(data, null, null); - if (tag === "gentime" || tag === "utctime") return this._encodeTime(data, tag); - if (tag === "null_") return this._encodeNull(); - if (tag === "int" || tag === "enum") return this._encodeInt(data, state.args && state.reverseArgs[0]); - if (tag === "bool") return this._encodeBool(data); - if (tag === "objDesc") return this._encodeStr(data, tag); - throw new Error("Unsupported tag: " + tag); - }; - Node.prototype._isNumstr = function (str) { - return /^[0-9 ]*$/.test(str); - }; - Node.prototype._isPrintstr = function (str) { - return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str); - }; - }, -}); - -// node_modules/asn1.js/lib/asn1/constants/der.js -var require_der = __commonJS({ - "node_modules/asn1.js/lib/asn1/constants/der.js"(exports) { - "use strict"; - function reverse(map) { - let res = {}; - return ( - Object.keys(map).forEach(function (key) { - (key | 0) == key && (key = key | 0); - let value = map[key]; - res[value] = key; - }), - res - ); - } - exports.tagClass = { - 0: "universal", - 1: "application", - 2: "context", - 3: "private", - }; - exports.tagClassByName = reverse(exports.tagClass); - exports.tag = { - 0: "end", - 1: "bool", - 2: "int", - 3: "bitstr", - 4: "octstr", - 5: "null_", - 6: "objid", - 7: "objDesc", - 8: "external", - 9: "real", - 10: "enum", - 11: "embed", - 12: "utf8str", - 13: "relativeOid", - 16: "seq", - 17: "set", - 18: "numstr", - 19: "printstr", - 20: "t61str", - 21: "videostr", - 22: "ia5str", - 23: "utctime", - 24: "gentime", - 25: "graphstr", - 26: "iso646str", - 27: "genstr", - 28: "unistr", - 29: "charstr", - 30: "bmpstr", - }; - exports.tagByName = reverse(exports.tag); - }, -}); - -// node_modules/asn1.js/lib/asn1/encoders/der.js -var require_der2 = __commonJS({ - "node_modules/asn1.js/lib/asn1/encoders/der.js"(exports, module) { - "use strict"; - var inherits = require_inherits_browser(), - Buffer2 = require_safer().Buffer, - Node = require_node(), - der = require_der(); - function DEREncoder(entity) { - (this.enc = "der"), - (this.name = entity.name), - (this.entity = entity), - (this.tree = new DERNode()), - this.tree._init(entity.body); - } - module.exports = DEREncoder; - DEREncoder.prototype.encode = function (data, reporter) { - return this.tree._encode(data, reporter).join(); - }; - function DERNode(parent) { - Node.call(this, "der", parent); - } - inherits(DERNode, Node); - DERNode.prototype._encodeComposite = function (tag, primitive, cls, content) { - let encodedTag = encodeTag(tag, primitive, cls, this.reporter); - if (content.length < 128) { - let header2 = Buffer2.alloc(2); - return (header2[0] = encodedTag), (header2[1] = content.length), this._createEncoderBuffer([header2, content]); - } - let lenOctets = 1; - for (let i = content.length; i >= 256; i >>= 8) lenOctets++; - let header = Buffer2.alloc(1 + 1 + lenOctets); - (header[0] = encodedTag), (header[1] = 128 | lenOctets); - for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) header[i] = j & 255; - return this._createEncoderBuffer([header, content]); - }; - DERNode.prototype._encodeStr = function (str, tag) { - if (tag === "bitstr") return this._createEncoderBuffer([str.unused | 0, str.data]); - if (tag === "bmpstr") { - let buf = Buffer2.alloc(str.length * 2); - for (let i = 0; i < str.length; i++) buf.writeUInt16BE(str.charCodeAt(i), i * 2); - return this._createEncoderBuffer(buf); - } else - return tag === "numstr" - ? this._isNumstr(str) - ? this._createEncoderBuffer(str) - : this.reporter.error("Encoding of string type: numstr supports only digits and space") - : tag === "printstr" - ? this._isPrintstr(str) - ? this._createEncoderBuffer(str) - : this.reporter.error( - "Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark", - ) - : /str$/.test(tag) - ? this._createEncoderBuffer(str) - : tag === "objDesc" - ? this._createEncoderBuffer(str) - : this.reporter.error("Encoding of string type: " + tag + " unsupported"); - }; - DERNode.prototype._encodeObjid = function (id, values, relative) { - if (typeof id == "string") { - if (!values) return this.reporter.error("string objid given, but no values map found"); - if (!values.hasOwnProperty(id)) return this.reporter.error("objid not found in values map"); - id = values[id].split(/[\s.]+/g); - for (let i = 0; i < id.length; i++) id[i] |= 0; - } else if (Array.isArray(id)) { - id = id.slice(); - for (let i = 0; i < id.length; i++) id[i] |= 0; - } - if (!Array.isArray(id)) - return this.reporter.error("objid() should be either array or string, got: " + JSON.stringify(id)); - if (!relative) { - if (id[1] >= 40) return this.reporter.error("Second objid identifier OOB"); - id.splice(0, 2, id[0] * 40 + id[1]); - } - let size = 0; - for (let i = 0; i < id.length; i++) { - let ident = id[i]; - for (size++; ident >= 128; ident >>= 7) size++; - } - let objid = Buffer2.alloc(size), - offset = objid.length - 1; - for (let i = id.length - 1; i >= 0; i--) { - let ident = id[i]; - for (objid[offset--] = ident & 127; (ident >>= 7) > 0; ) objid[offset--] = 128 | (ident & 127); - } - return this._createEncoderBuffer(objid); - }; - function two(num) { - return num < 10 ? "0" + num : num; - } - DERNode.prototype._encodeTime = function (time, tag) { - let str, - date = new Date(time); - return ( - tag === "gentime" - ? (str = [ - two(date.getUTCFullYear()), - two(date.getUTCMonth() + 1), - two(date.getUTCDate()), - two(date.getUTCHours()), - two(date.getUTCMinutes()), - two(date.getUTCSeconds()), - "Z", - ].join("")) - : tag === "utctime" - ? (str = [ - two(date.getUTCFullYear() % 100), - two(date.getUTCMonth() + 1), - two(date.getUTCDate()), - two(date.getUTCHours()), - two(date.getUTCMinutes()), - two(date.getUTCSeconds()), - "Z", - ].join("")) - : this.reporter.error("Encoding " + tag + " time is not supported yet"), - this._encodeStr(str, "octstr") - ); - }; - DERNode.prototype._encodeNull = function () { - return this._createEncoderBuffer(""); - }; - DERNode.prototype._encodeInt = function (num, values) { - if (typeof num == "string") { - if (!values) return this.reporter.error("String int or enum given, but no values map"); - if (!values.hasOwnProperty(num)) - return this.reporter.error("Values map doesn't contain: " + JSON.stringify(num)); - num = values[num]; - } - if (typeof num != "number" && !Buffer2.isBuffer(num)) { - let numArray = num.toArray(); - !num.sign && numArray[0] & 128 && numArray.unshift(0), (num = Buffer2.from(numArray)); - } - if (Buffer2.isBuffer(num)) { - let size2 = num.length; - num.length === 0 && size2++; - let out2 = Buffer2.alloc(size2); - return num.copy(out2), num.length === 0 && (out2[0] = 0), this._createEncoderBuffer(out2); - } - if (num < 128) return this._createEncoderBuffer(num); - if (num < 256) return this._createEncoderBuffer([0, num]); - let size = 1; - for (let i = num; i >= 256; i >>= 8) size++; - let out = new Array(size); - for (let i = out.length - 1; i >= 0; i--) (out[i] = num & 255), (num >>= 8); - return out[0] & 128 && out.unshift(0), this._createEncoderBuffer(Buffer2.from(out)); - }; - DERNode.prototype._encodeBool = function (value) { - return this._createEncoderBuffer(value ? 255 : 0); - }; - DERNode.prototype._use = function (entity, obj) { - return typeof entity == "function" && (entity = entity(obj)), entity._getEncoder("der").tree; - }; - DERNode.prototype._skipDefault = function (dataBuffer, reporter, parent) { - let state = this._baseState, - i; - if (state.default === null) return !1; - let data = dataBuffer.join(); - if ( - (state.defaultBuffer === void 0 && - (state.defaultBuffer = this._encodeValue(state.default, reporter, parent).join()), - data.length !== state.defaultBuffer.length) - ) - return !1; - for (i = 0; i < data.length; i++) if (data[i] !== state.defaultBuffer[i]) return !1; - return !0; - }; - function encodeTag(tag, primitive, cls, reporter) { - let res; - if ((tag === "seqof" ? (tag = "seq") : tag === "setof" && (tag = "set"), der.tagByName.hasOwnProperty(tag))) - res = der.tagByName[tag]; - else if (typeof tag == "number" && (tag | 0) === tag) res = tag; - else return reporter.error("Unknown tag: " + tag); - return res >= 31 - ? reporter.error("Multi-octet tag encoding unsupported") - : (primitive || (res |= 32), (res |= der.tagClassByName[cls || "universal"] << 6), res); - } - }, -}); - -// node_modules/asn1.js/lib/asn1/encoders/pem.js -var require_pem = __commonJS({ - "node_modules/asn1.js/lib/asn1/encoders/pem.js"(exports, module) { - "use strict"; - var inherits = require_inherits_browser(), - DEREncoder = require_der2(); - function PEMEncoder(entity) { - DEREncoder.call(this, entity), (this.enc = "pem"); - } - inherits(PEMEncoder, DEREncoder); - module.exports = PEMEncoder; - PEMEncoder.prototype.encode = function (data, options) { - let p = DEREncoder.prototype.encode.call(this, data).toString("base64"), - out = ["-----BEGIN " + options.label + "-----"]; - for (let i = 0; i < p.length; i += 64) out.push(p.slice(i, i + 64)); - return ( - out.push("-----END " + options.label + "-----"), - out.join(` -`) - ); - }; - }, -}); - -// node_modules/asn1.js/lib/asn1/encoders/index.js -var require_encoders = __commonJS({ - "node_modules/asn1.js/lib/asn1/encoders/index.js"(exports) { - "use strict"; - var encoders = exports; - encoders.der = require_der2(); - encoders.pem = require_pem(); - }, -}); - -// node_modules/asn1.js/lib/asn1/decoders/der.js -var require_der3 = __commonJS({ - "node_modules/asn1.js/lib/asn1/decoders/der.js"(exports, module) { - "use strict"; - var inherits = require_inherits_browser(), - bignum = require_bn5(), - DecoderBuffer = require_buffer().DecoderBuffer, - Node = require_node(), - der = require_der(); - function DERDecoder(entity) { - (this.enc = "der"), - (this.name = entity.name), - (this.entity = entity), - (this.tree = new DERNode()), - this.tree._init(entity.body); - } - module.exports = DERDecoder; - DERDecoder.prototype.decode = function (data, options) { - return ( - DecoderBuffer.isDecoderBuffer(data) || (data = new DecoderBuffer(data, options)), - this.tree._decode(data, options) - ); - }; - function DERNode(parent) { - Node.call(this, "der", parent); - } - inherits(DERNode, Node); - DERNode.prototype._peekTag = function (buffer, tag, any) { - if (buffer.isEmpty()) return !1; - let state = buffer.save(), - decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"'); - return buffer.isError(decodedTag) - ? decodedTag - : (buffer.restore(state), - decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + "of" === tag || any); - }; - DERNode.prototype._decodeTag = function (buffer, tag, any) { - let decodedTag = derDecodeTag(buffer, 'Failed to decode tag of "' + tag + '"'); - if (buffer.isError(decodedTag)) return decodedTag; - let len = derDecodeLen(buffer, decodedTag.primitive, 'Failed to get length of "' + tag + '"'); - if (buffer.isError(len)) return len; - if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + "of" !== tag) - return buffer.error('Failed to match tag: "' + tag + '"'); - if (decodedTag.primitive || len !== null) return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); - let state = buffer.save(), - res = this._skipUntilEnd(buffer, 'Failed to skip indefinite length body: "' + this.tag + '"'); - return buffer.isError(res) - ? res - : ((len = buffer.offset - state.offset), - buffer.restore(state), - buffer.skip(len, 'Failed to match body of: "' + tag + '"')); - }; - DERNode.prototype._skipUntilEnd = function (buffer, fail) { - for (;;) { - let tag = derDecodeTag(buffer, fail); - if (buffer.isError(tag)) return tag; - let len = derDecodeLen(buffer, tag.primitive, fail); - if (buffer.isError(len)) return len; - let res; - if ( - (tag.primitive || len !== null ? (res = buffer.skip(len)) : (res = this._skipUntilEnd(buffer, fail)), - buffer.isError(res)) - ) - return res; - if (tag.tagStr === "end") break; - } - }; - DERNode.prototype._decodeList = function (buffer, tag, decoder, options) { - let result = []; - for (; !buffer.isEmpty(); ) { - let possibleEnd = this._peekTag(buffer, "end"); - if (buffer.isError(possibleEnd)) return possibleEnd; - let res = decoder.decode(buffer, "der", options); - if (buffer.isError(res) && possibleEnd) break; - result.push(res); - } - return result; - }; - DERNode.prototype._decodeStr = function (buffer, tag) { - if (tag === "bitstr") { - let unused = buffer.readUInt8(); - return buffer.isError(unused) ? unused : { unused, data: buffer.raw() }; - } else if (tag === "bmpstr") { - let raw = buffer.raw(); - if (raw.length % 2 === 1) return buffer.error("Decoding of string type: bmpstr length mismatch"); - let str = ""; - for (let i = 0; i < raw.length / 2; i++) str += String.fromCharCode(raw.readUInt16BE(i * 2)); - return str; - } else if (tag === "numstr") { - let numstr = buffer.raw().toString("ascii"); - return this._isNumstr(numstr) ? numstr : buffer.error("Decoding of string type: numstr unsupported characters"); - } else { - if (tag === "octstr") return buffer.raw(); - if (tag === "objDesc") return buffer.raw(); - if (tag === "printstr") { - let printstr = buffer.raw().toString("ascii"); - return this._isPrintstr(printstr) - ? printstr - : buffer.error("Decoding of string type: printstr unsupported characters"); - } else - return /str$/.test(tag) - ? buffer.raw().toString() - : buffer.error("Decoding of string type: " + tag + " unsupported"); - } - }; - DERNode.prototype._decodeObjid = function (buffer, values, relative) { - let result, - identifiers = [], - ident = 0, - subident = 0; - for (; !buffer.isEmpty(); ) - (subident = buffer.readUInt8()), - (ident <<= 7), - (ident |= subident & 127), - (subident & 128) === 0 && (identifiers.push(ident), (ident = 0)); - subident & 128 && identifiers.push(ident); - let first = (identifiers[0] / 40) | 0, - second = identifiers[0] % 40; - if ((relative ? (result = identifiers) : (result = [first, second].concat(identifiers.slice(1))), values)) { - let tmp = values[result.join(" ")]; - tmp === void 0 && (tmp = values[result.join(".")]), tmp !== void 0 && (result = tmp); - } - return result; - }; - DERNode.prototype._decodeTime = function (buffer, tag) { - let str = buffer.raw().toString(), - year, - mon, - day, - hour, - min, - sec; - if (tag === "gentime") - (year = str.slice(0, 4) | 0), - (mon = str.slice(4, 6) | 0), - (day = str.slice(6, 8) | 0), - (hour = str.slice(8, 10) | 0), - (min = str.slice(10, 12) | 0), - (sec = str.slice(12, 14) | 0); - else if (tag === "utctime") - (year = str.slice(0, 2) | 0), - (mon = str.slice(2, 4) | 0), - (day = str.slice(4, 6) | 0), - (hour = str.slice(6, 8) | 0), - (min = str.slice(8, 10) | 0), - (sec = str.slice(10, 12) | 0), - year < 70 ? (year = 2e3 + year) : (year = 1900 + year); - else return buffer.error("Decoding " + tag + " time is not supported yet"); - return Date.UTC(year, mon - 1, day, hour, min, sec, 0); - }; - DERNode.prototype._decodeNull = function () { - return null; - }; - DERNode.prototype._decodeBool = function (buffer) { - let res = buffer.readUInt8(); - return buffer.isError(res) ? res : res !== 0; - }; - DERNode.prototype._decodeInt = function (buffer, values) { - let raw = buffer.raw(), - res = new bignum(raw); - return values && (res = values[res.toString(10)] || res), res; - }; - DERNode.prototype._use = function (entity, obj) { - return typeof entity == "function" && (entity = entity(obj)), entity._getDecoder("der").tree; - }; - function derDecodeTag(buf, fail) { - let tag = buf.readUInt8(fail); - if (buf.isError(tag)) return tag; - let cls = der.tagClass[tag >> 6], - primitive = (tag & 32) === 0; - if ((tag & 31) === 31) { - let oct = tag; - for (tag = 0; (oct & 128) === 128; ) { - if (((oct = buf.readUInt8(fail)), buf.isError(oct))) return oct; - (tag <<= 7), (tag |= oct & 127); - } - } else tag &= 31; - let tagStr = der.tag[tag]; - return { - cls, - primitive, - tag, - tagStr, - }; - } - function derDecodeLen(buf, primitive, fail) { - let len = buf.readUInt8(fail); - if (buf.isError(len)) return len; - if (!primitive && len === 128) return null; - if ((len & 128) === 0) return len; - let num = len & 127; - if (num > 4) return buf.error("length octect is too long"); - len = 0; - for (let i = 0; i < num; i++) { - len <<= 8; - let j = buf.readUInt8(fail); - if (buf.isError(j)) return j; - len |= j; - } - return len; - } - }, -}); - -// node_modules/asn1.js/lib/asn1/decoders/pem.js -var require_pem2 = __commonJS({ - "node_modules/asn1.js/lib/asn1/decoders/pem.js"(exports, module) { - "use strict"; - var inherits = require_inherits_browser(), - Buffer2 = require_safer().Buffer, - DERDecoder = require_der3(); - function PEMDecoder(entity) { - DERDecoder.call(this, entity), (this.enc = "pem"); - } - inherits(PEMDecoder, DERDecoder); - module.exports = PEMDecoder; - PEMDecoder.prototype.decode = function (data, options) { - let lines = data.toString().split(/[\r\n]+/g), - label = options.label.toUpperCase(), - re = /^-----(BEGIN|END) ([^-]+)-----$/, - start = -1, - end = -1; - for (let i = 0; i < lines.length; i++) { - let match = lines[i].match(re); - if (match !== null && match[2] === label) - if (start === -1) { - if (match[1] !== "BEGIN") break; - start = i; - } else { - if (match[1] !== "END") break; - end = i; - break; - } - } - if (start === -1 || end === -1) throw new Error("PEM section not found for: " + label); - let base64 = lines.slice(start + 1, end).join(""); - base64.replace(/[^a-z0-9+/=]+/gi, ""); - let input = Buffer2.from(base64, "base64"); - return DERDecoder.prototype.decode.call(this, input, options); - }; - }, -}); - -// node_modules/asn1.js/lib/asn1/decoders/index.js -var require_decoders = __commonJS({ - "node_modules/asn1.js/lib/asn1/decoders/index.js"(exports) { - "use strict"; - var decoders = exports; - decoders.der = require_der3(); - decoders.pem = require_pem2(); - }, -}); - -// node_modules/asn1.js/lib/asn1/api.js -var require_api = __commonJS({ - "node_modules/asn1.js/lib/asn1/api.js"(exports) { - "use strict"; - var encoders = require_encoders(), - decoders = require_decoders(), - inherits = require_inherits_browser(), - api = exports; - api.define = function (name, body) { - return new Entity(name, body); - }; - function Entity(name, body) { - (this.name = name), (this.body = body), (this.decoders = {}), (this.encoders = {}); - } - Entity.prototype._createNamed = function (Base) { - let name = this.name; - function Generated(entity) { - this._initNamed(entity, name); - } - return ( - inherits(Generated, Base), - (Generated.prototype._initNamed = function (entity, name2) { - Base.call(this, entity, name2); - }), - new Generated(this) - ); - }; - Entity.prototype._getDecoder = function (enc) { - return ( - (enc = enc || "der"), - this.decoders.hasOwnProperty(enc) || (this.decoders[enc] = this._createNamed(decoders[enc])), - this.decoders[enc] - ); - }; - Entity.prototype.decode = function (data, enc, options) { - return this._getDecoder(enc).decode(data, options); - }; - Entity.prototype._getEncoder = function (enc) { - return ( - (enc = enc || "der"), - this.encoders.hasOwnProperty(enc) || (this.encoders[enc] = this._createNamed(encoders[enc])), - this.encoders[enc] - ); - }; - Entity.prototype.encode = function (data, enc, reporter) { - return this._getEncoder(enc).encode(data, reporter); - }; - }, -}); - -// node_modules/asn1.js/lib/asn1/base/index.js -var require_base2 = __commonJS({ - "node_modules/asn1.js/lib/asn1/base/index.js"(exports) { - "use strict"; - var base = exports; - base.Reporter = require_reporter().Reporter; - base.DecoderBuffer = require_buffer().DecoderBuffer; - base.EncoderBuffer = require_buffer().EncoderBuffer; - base.Node = require_node(); - }, -}); - -// node_modules/asn1.js/lib/asn1/constants/index.js -var require_constants = __commonJS({ - "node_modules/asn1.js/lib/asn1/constants/index.js"(exports) { - "use strict"; - var constants = exports; - constants._reverse = function (map) { - let res = {}; - return ( - Object.keys(map).forEach(function (key) { - (key | 0) == key && (key = key | 0); - let value = map[key]; - res[value] = key; - }), - res - ); - }; - constants.der = require_der(); - }, -}); - -// node_modules/asn1.js/lib/asn1.js -var require_asn1 = __commonJS({ - "node_modules/asn1.js/lib/asn1.js"(exports) { - "use strict"; - var asn1 = exports; - asn1.bignum = require_bn5(); - asn1.define = require_api().define; - asn1.base = require_base2(); - asn1.constants = require_constants(); - asn1.decoders = require_decoders(); - asn1.encoders = require_encoders(); - }, -}); - -// node_modules/parse-asn1/certificate.js -var require_certificate = __commonJS({ - "node_modules/parse-asn1/certificate.js"(exports, module) { - "use strict"; - var asn = require_asn1(), - Time = asn.define("Time", function () { - this.choice({ - utcTime: this.utctime(), - generalTime: this.gentime(), - }); - }), - AttributeTypeValue = asn.define("AttributeTypeValue", function () { - this.seq().obj(this.key("type").objid(), this.key("value").any()); - }), - AlgorithmIdentifier = asn.define("AlgorithmIdentifier", function () { - this.seq().obj( - this.key("algorithm").objid(), - this.key("parameters").optional(), - this.key("curve").objid().optional(), - ); - }), - SubjectPublicKeyInfo = asn.define("SubjectPublicKeyInfo", function () { - this.seq().obj(this.key("algorithm").use(AlgorithmIdentifier), this.key("subjectPublicKey").bitstr()); - }), - RelativeDistinguishedName = asn.define("RelativeDistinguishedName", function () { - this.setof(AttributeTypeValue); - }), - RDNSequence = asn.define("RDNSequence", function () { - this.seqof(RelativeDistinguishedName); - }), - Name = asn.define("Name", function () { - this.choice({ - rdnSequence: this.use(RDNSequence), - }); - }), - Validity = asn.define("Validity", function () { - this.seq().obj(this.key("notBefore").use(Time), this.key("notAfter").use(Time)); - }), - Extension = asn.define("Extension", function () { - this.seq().obj(this.key("extnID").objid(), this.key("critical").bool().def(!1), this.key("extnValue").octstr()); - }), - TBSCertificate = asn.define("TBSCertificate", function () { - this.seq().obj( - this.key("version").explicit(0).int().optional(), - this.key("serialNumber").int(), - this.key("signature").use(AlgorithmIdentifier), - this.key("issuer").use(Name), - this.key("validity").use(Validity), - this.key("subject").use(Name), - this.key("subjectPublicKeyInfo").use(SubjectPublicKeyInfo), - this.key("issuerUniqueID").implicit(1).bitstr().optional(), - this.key("subjectUniqueID").implicit(2).bitstr().optional(), - this.key("extensions").explicit(3).seqof(Extension).optional(), - ); - }), - X509Certificate = asn.define("X509Certificate", function () { - this.seq().obj( - this.key("tbsCertificate").use(TBSCertificate), - this.key("signatureAlgorithm").use(AlgorithmIdentifier), - this.key("signatureValue").bitstr(), - ); - }); - module.exports = X509Certificate; - }, -}); - -// node_modules/parse-asn1/asn1.js -var require_asn12 = __commonJS({ - "node_modules/parse-asn1/asn1.js"(exports) { - "use strict"; - var asn1 = require_asn1(); - exports.certificate = require_certificate(); - var RSAPrivateKey = asn1.define("RSAPrivateKey", function () { - this.seq().obj( - this.key("version").int(), - this.key("modulus").int(), - this.key("publicExponent").int(), - this.key("privateExponent").int(), - this.key("prime1").int(), - this.key("prime2").int(), - this.key("exponent1").int(), - this.key("exponent2").int(), - this.key("coefficient").int(), - ); - }); - exports.RSAPrivateKey = RSAPrivateKey; - var RSAPublicKey = asn1.define("RSAPublicKey", function () { - this.seq().obj(this.key("modulus").int(), this.key("publicExponent").int()); - }); - exports.RSAPublicKey = RSAPublicKey; - var PublicKey = asn1.define("SubjectPublicKeyInfo", function () { - this.seq().obj(this.key("algorithm").use(AlgorithmIdentifier), this.key("subjectPublicKey").bitstr()); - }); - exports.PublicKey = PublicKey; - var AlgorithmIdentifier = asn1.define("AlgorithmIdentifier", function () { - this.seq().obj( - this.key("algorithm").objid(), - this.key("none").null_().optional(), - this.key("curve").objid().optional(), - this.key("params").seq().obj(this.key("p").int(), this.key("q").int(), this.key("g").int()).optional(), - ); - }), - PrivateKeyInfo = asn1.define("PrivateKeyInfo", function () { - this.seq().obj( - this.key("version").int(), - this.key("algorithm").use(AlgorithmIdentifier), - this.key("subjectPrivateKey").octstr(), - ); - }); - exports.PrivateKey = PrivateKeyInfo; - var EncryptedPrivateKeyInfo = asn1.define("EncryptedPrivateKeyInfo", function () { - this.seq().obj( - this.key("algorithm") - .seq() - .obj( - this.key("id").objid(), - this.key("decrypt") - .seq() - .obj( - this.key("kde") - .seq() - .obj( - this.key("id").objid(), - this.key("kdeparams").seq().obj(this.key("salt").octstr(), this.key("iters").int()), - ), - this.key("cipher").seq().obj(this.key("algo").objid(), this.key("iv").octstr()), - ), - ), - this.key("subjectPrivateKey").octstr(), - ); - }); - exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo; - var DSAPrivateKey = asn1.define("DSAPrivateKey", function () { - this.seq().obj( - this.key("version").int(), - this.key("p").int(), - this.key("q").int(), - this.key("g").int(), - this.key("pub_key").int(), - this.key("priv_key").int(), - ); - }); - exports.DSAPrivateKey = DSAPrivateKey; - exports.DSAparam = asn1.define("DSAparam", function () { - this.int(); - }); - var ECPrivateKey = asn1.define("ECPrivateKey", function () { - this.seq().obj( - this.key("version").int(), - this.key("privateKey").octstr(), - this.key("parameters").optional().explicit(0).use(ECParameters), - this.key("publicKey").optional().explicit(1).bitstr(), - ); - }); - exports.ECPrivateKey = ECPrivateKey; - var ECParameters = asn1.define("ECParameters", function () { - this.choice({ - namedCurve: this.objid(), - }); - }); - exports.signature = asn1.define("signature", function () { - this.seq().obj(this.key("r").int(), this.key("s").int()); - }); - }, -}); - -// node_modules/parse-asn1/aesid.json -var require_aesid = __commonJS({ - "node_modules/parse-asn1/aesid.json"(exports, module) { - module.exports = { - "2.16.840.1.101.3.4.1.1": "aes-128-ecb", - "2.16.840.1.101.3.4.1.2": "aes-128-cbc", - "2.16.840.1.101.3.4.1.3": "aes-128-ofb", - "2.16.840.1.101.3.4.1.4": "aes-128-cfb", - "2.16.840.1.101.3.4.1.21": "aes-192-ecb", - "2.16.840.1.101.3.4.1.22": "aes-192-cbc", - "2.16.840.1.101.3.4.1.23": "aes-192-ofb", - "2.16.840.1.101.3.4.1.24": "aes-192-cfb", - "2.16.840.1.101.3.4.1.41": "aes-256-ecb", - "2.16.840.1.101.3.4.1.42": "aes-256-cbc", - "2.16.840.1.101.3.4.1.43": "aes-256-ofb", - "2.16.840.1.101.3.4.1.44": "aes-256-cfb", - }; - }, -}); - -// node_modules/parse-asn1/fixProc.js -var require_fixProc = __commonJS({ - "node_modules/parse-asn1/fixProc.js"(exports, module) { - var findProc = - /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m, - startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m, - fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m, - evp = require_evp_bytestokey(), - ciphers = require_browser5(), - Buffer2 = require_safe_buffer().Buffer; - module.exports = function (okey, password) { - var key = okey.toString(), - match = key.match(findProc), - decrypted; - if (match) { - var suite = "aes" + match[1], - iv = Buffer2.from(match[2], "hex"), - cipherText = Buffer2.from(match[3].replace(/[\r\n]/g, ""), "base64"), - cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key, - out = [], - cipher = ciphers.createDecipheriv(suite, cipherKey, iv); - out.push(cipher.update(cipherText)), out.push(cipher.final()), (decrypted = Buffer2.concat(out)); - } else { - var match2 = key.match(fullRegex); - decrypted = Buffer2.from(match2[2].replace(/[\r\n]/g, ""), "base64"); - } - var tag = key.match(startRegex)[1]; - return { - tag, - data: decrypted, - }; - }; - }, -}); - -// node_modules/parse-asn1/index.js -var require_parse_asn1 = __commonJS({ - "node_modules/parse-asn1/index.js"(exports, module) { - var asn1 = require_asn12(), - aesid = require_aesid(), - fixProc = require_fixProc(), - ciphers = require_browser5(), - compat = require_browser4(), - Buffer2 = require_safe_buffer().Buffer; - module.exports = parseKeys; - function parseKeys(buffer) { - var password; - typeof buffer == "object" && !Buffer2.isBuffer(buffer) && ((password = buffer.passphrase), (buffer = buffer.key)), - typeof buffer == "string" && (buffer = Buffer2.from(buffer)); - var stripped = fixProc(buffer, password), - type = stripped.tag, - data = stripped.data, - subtype, - ndata; - switch (type) { - case "CERTIFICATE": - ndata = asn1.certificate.decode(data, "der").tbsCertificate.subjectPublicKeyInfo; - case "PUBLIC KEY": - switch ( - (ndata || (ndata = asn1.PublicKey.decode(data, "der")), - (subtype = ndata.algorithm.algorithm.join(".")), - subtype) - ) { - case "1.2.840.113549.1.1.1": - return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, "der"); - case "1.2.840.10045.2.1": - return ( - (ndata.subjectPrivateKey = ndata.subjectPublicKey), - { - type: "ec", - data: ndata, - } - ); - case "1.2.840.10040.4.1": - return ( - (ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, "der")), - { - type: "dsa", - data: ndata.algorithm.params, - } - ); - default: - throw new Error("unknown key id " + subtype); - } - case "ENCRYPTED PRIVATE KEY": - (data = asn1.EncryptedPrivateKey.decode(data, "der")), (data = decrypt(data, password)); - case "PRIVATE KEY": - switch ( - ((ndata = asn1.PrivateKey.decode(data, "der")), (subtype = ndata.algorithm.algorithm.join(".")), subtype) - ) { - case "1.2.840.113549.1.1.1": - return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, "der"); - case "1.2.840.10045.2.1": - return { - curve: ndata.algorithm.curve, - privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, "der").privateKey, - }; - case "1.2.840.10040.4.1": - return ( - (ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, "der")), - { - type: "dsa", - params: ndata.algorithm.params, - } - ); - default: - throw new Error("unknown key id " + subtype); - } - case "RSA PUBLIC KEY": - return asn1.RSAPublicKey.decode(data, "der"); - case "RSA PRIVATE KEY": - return asn1.RSAPrivateKey.decode(data, "der"); - case "DSA PRIVATE KEY": - return { - type: "dsa", - params: asn1.DSAPrivateKey.decode(data, "der"), - }; - case "EC PRIVATE KEY": - return ( - (data = asn1.ECPrivateKey.decode(data, "der")), - { - curve: data.parameters.value, - privateKey: data.privateKey, - } - ); - default: - throw new Error("unknown key type " + type); - } - } - parseKeys.signature = asn1.signature; - function decrypt(data, password) { - var salt = data.algorithm.decrypt.kde.kdeparams.salt, - iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10), - algo = aesid[data.algorithm.decrypt.cipher.algo.join(".")], - iv = data.algorithm.decrypt.cipher.iv, - cipherText = data.subjectPrivateKey, - keylen = parseInt(algo.split("-")[1], 10) / 8, - key = compat.pbkdf2Sync(password, salt, iters, keylen, "sha1"), - cipher = ciphers.createDecipheriv(algo, key, iv), - out = []; - return out.push(cipher.update(cipherText)), out.push(cipher.final()), Buffer2.concat(out); - } - }, -}); - -// node_modules/browserify-sign/browser/curves.json -var require_curves2 = __commonJS({ - "node_modules/browserify-sign/browser/curves.json"(exports, module) { - module.exports = { - "1.3.132.0.10": "secp256k1", - "1.3.132.0.33": "p224", - "1.2.840.10045.3.1.1": "p192", - "1.2.840.10045.3.1.7": "p256", - "1.3.132.0.34": "p384", - "1.3.132.0.35": "p521", - }; - }, -}); - -// node_modules/browserify-sign/browser/sign.js -var require_sign = __commonJS({ - "node_modules/browserify-sign/browser/sign.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer, - createHmac = require_browser3(), - crt = require_browserify_rsa(), - EC = require_elliptic().ec, - BN = require_bn3(), - parseKeys = require_parse_asn1(), - curves = require_curves2(); - function sign(hash, key, hashType, signType, tag) { - var priv = parseKeys(key); - if (priv.curve) { - if (signType !== "ecdsa" && signType !== "ecdsa/rsa") throw new Error("wrong private key type"); - return ecSign(hash, priv); - } else if (priv.type === "dsa") { - if (signType !== "dsa") throw new Error("wrong private key type"); - return dsaSign(hash, priv, hashType); - } else if (signType !== "rsa" && signType !== "ecdsa/rsa") throw new Error("wrong private key type"); - hash = Buffer2.concat([tag, hash]); - for (var len = priv.modulus.byteLength(), pad = [0, 1]; hash.length + pad.length + 1 < len; ) pad.push(255); - pad.push(0); - for (var i = -1; ++i < hash.length; ) pad.push(hash[i]); - var out = crt(pad, priv); - return out; - } - function ecSign(hash, priv) { - var curveId = curves[priv.curve.join(".")]; - if (!curveId) throw new Error("unknown curve " + priv.curve.join(".")); - var curve = new EC(curveId), - key = curve.keyFromPrivate(priv.privateKey), - out = key.sign(hash); - return Buffer2.from(out.toDER()); - } - function dsaSign(hash, priv, algo) { - for ( - var x = priv.params.priv_key, - p = priv.params.p, - q = priv.params.q, - g = priv.params.g, - r = new BN(0), - k, - H = bits2int(hash, q).mod(q), - s = !1, - kv = getKey(x, q, hash, algo); - s === !1; - - ) - (k = makeKey(q, kv, algo)), - (r = makeR(g, k, p, q)), - (s = k - .invm(q) - .imul(H.add(x.mul(r))) - .mod(q)), - s.cmpn(0) === 0 && ((s = !1), (r = new BN(0))); - return toDER(r, s); - } - function toDER(r, s) { - (r = r.toArray()), (s = s.toArray()), r[0] & 128 && (r = [0].concat(r)), s[0] & 128 && (s = [0].concat(s)); - var total = r.length + s.length + 4, - res = [48, total, 2, r.length]; - return (res = res.concat(r, [2, s.length], s)), Buffer2.from(res); - } - function getKey(x, q, hash, algo) { - if (((x = Buffer2.from(x.toArray())), x.length < q.byteLength())) { - var zeros = Buffer2.alloc(q.byteLength() - x.length); - x = Buffer2.concat([zeros, x]); - } - var hlen = hash.length, - hbits = bits2octets(hash, q), - v = Buffer2.alloc(hlen); - v.fill(1); - var k = Buffer2.alloc(hlen); - return ( - (k = createHmac(algo, k) - .update(v) - .update(Buffer2.from([0])) - .update(x) - .update(hbits) - .digest()), - (v = createHmac(algo, k).update(v).digest()), - (k = createHmac(algo, k) - .update(v) - .update(Buffer2.from([1])) - .update(x) - .update(hbits) - .digest()), - (v = createHmac(algo, k).update(v).digest()), - { k, v } - ); - } - function bits2int(obits, q) { - var bits = new BN(obits), - shift = (obits.length << 3) - q.bitLength(); - return shift > 0 && bits.ishrn(shift), bits; - } - function bits2octets(bits, q) { - (bits = bits2int(bits, q)), (bits = bits.mod(q)); - var out = Buffer2.from(bits.toArray()); - if (out.length < q.byteLength()) { - var zeros = Buffer2.alloc(q.byteLength() - out.length); - out = Buffer2.concat([zeros, out]); - } - return out; - } - function makeKey(q, kv, algo) { - var t, k; - do { - for (t = Buffer2.alloc(0); t.length * 8 < q.bitLength(); ) - (kv.v = createHmac(algo, kv.k).update(kv.v).digest()), (t = Buffer2.concat([t, kv.v])); - (k = bits2int(t, q)), - (kv.k = createHmac(algo, kv.k) - .update(kv.v) - .update(Buffer2.from([0])) - .digest()), - (kv.v = createHmac(algo, kv.k).update(kv.v).digest()); - } while (k.cmp(q) !== -1); - return k; - } - function makeR(g, k, p, q) { - return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q); - } - module.exports = sign; - module.exports.getKey = getKey; - module.exports.makeKey = makeKey; - }, -}); - -// node_modules/browserify-sign/browser/verify.js -var require_verify = __commonJS({ - "node_modules/browserify-sign/browser/verify.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer, - BN = require_bn3(), - EC = require_elliptic().ec, - parseKeys = require_parse_asn1(), - curves = require_curves2(); - function verify(sig, hash, key, signType, tag) { - var pub = parseKeys(key); - if (pub.type === "ec") { - if (signType !== "ecdsa" && signType !== "ecdsa/rsa") throw new Error("wrong public key type"); - return ecVerify(sig, hash, pub); - } else if (pub.type === "dsa") { - if (signType !== "dsa") throw new Error("wrong public key type"); - return dsaVerify(sig, hash, pub); - } else if (signType !== "rsa" && signType !== "ecdsa/rsa") throw new Error("wrong public key type"); - hash = Buffer2.concat([tag, hash]); - for (var len = pub.modulus.byteLength(), pad = [1], padNum = 0; hash.length + pad.length + 2 < len; ) - pad.push(255), padNum++; - pad.push(0); - for (var i = -1; ++i < hash.length; ) pad.push(hash[i]); - pad = Buffer2.from(pad); - var red = BN.mont(pub.modulus); - (sig = new BN(sig).toRed(red)), - (sig = sig.redPow(new BN(pub.publicExponent))), - (sig = Buffer2.from(sig.fromRed().toArray())); - var out = padNum < 8 ? 1 : 0; - for (len = Math.min(sig.length, pad.length), sig.length !== pad.length && (out = 1), i = -1; ++i < len; ) - out |= sig[i] ^ pad[i]; - return out === 0; - } - function ecVerify(sig, hash, pub) { - var curveId = curves[pub.data.algorithm.curve.join(".")]; - if (!curveId) throw new Error("unknown curve " + pub.data.algorithm.curve.join(".")); - var curve = new EC(curveId), - pubkey = pub.data.subjectPrivateKey.data; - return curve.verify(hash, sig, pubkey); - } - function dsaVerify(sig, hash, pub) { - var p = pub.data.p, - q = pub.data.q, - g = pub.data.g, - y = pub.data.pub_key, - unpacked = parseKeys.signature.decode(sig, "der"), - s = unpacked.s, - r = unpacked.r; - checkValue(s, q), checkValue(r, q); - var montp = BN.mont(p), - w = s.invm(q), - v = g - .toRed(montp) - .redPow(new BN(hash).mul(w).mod(q)) - .fromRed() - .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()) - .mod(p) - .mod(q); - return v.cmp(r) === 0; - } - function checkValue(b, q) { - if (b.cmpn(0) <= 0) throw new Error("invalid sig"); - if (b.cmp(q) >= q) throw new Error("invalid sig"); - } - module.exports = verify; - }, -}); - -// node_modules/browserify-sign/browser/index.js -var require_browser8 = __commonJS({ - "node_modules/browserify-sign/browser/index.js"(exports, module) { - var Buffer2 = require_safe_buffer().Buffer, - createHash = require_browser2(), - stream = __require("readable-stream"), - inherits = require_inherits_browser(), - sign = require_sign(), - verify = require_verify(), - algorithms = require_algorithms(); - Object.keys(algorithms).forEach(function (key) { - (algorithms[key].id = Buffer2.from(algorithms[key].id, "hex")), (algorithms[key.toLowerCase()] = algorithms[key]); - }); - function Sign(algorithm) { - stream.Writable.call(this); - var data = algorithms[algorithm]; - if (!data) throw new Error("Unknown message digest"); - (this._hashType = data.hash), - (this._hash = createHash(data.hash)), - (this._tag = data.id), - (this._signType = data.sign); - } - inherits(Sign, stream.Writable); - Sign.prototype._write = function (data, _, done) { - this._hash.update(data), done(); - }; - Sign.prototype.update = function (data, enc) { - return typeof data == "string" && (data = Buffer2.from(data, enc)), this._hash.update(data), this; - }; - Sign.prototype.sign = function (key, enc) { - this.end(); - var hash = this._hash.digest(), - sig = sign(hash, key, this._hashType, this._signType, this._tag); - return enc ? sig.toString(enc) : sig; - }; - function Verify(algorithm) { - stream.Writable.call(this); - var data = algorithms[algorithm]; - if (!data) throw new Error("Unknown message digest"); - (this._hash = createHash(data.hash)), (this._tag = data.id), (this._signType = data.sign); - } - inherits(Verify, stream.Writable); - Verify.prototype._write = function (data, _, done) { - this._hash.update(data), done(); - }; - Verify.prototype.update = function (data, enc) { - return typeof data == "string" && (data = Buffer2.from(data, enc)), this._hash.update(data), this; - }; - Verify.prototype.verify = function (key, sig, enc) { - typeof sig == "string" && (sig = Buffer2.from(sig, enc)), this.end(); - var hash = this._hash.digest(); - return verify(sig, hash, key, this._signType, this._tag); - }; - function createSign(algorithm) { - return new Sign(algorithm); - } - function createVerify(algorithm) { - return new Verify(algorithm); - } - module.exports = { - Sign: createSign, - Verify: createVerify, - createSign, - createVerify, - }; - }, -}); - -// node_modules/create-ecdh/node_modules/bn.js/lib/bn.js -var require_bn6 = __commonJS({ - "node_modules/create-ecdh/node_modules/bn.js/lib/bn.js"(exports, module) { - (function (module2, exports2) { - "use strict"; - function assert(val, msg) { - if (!val) throw new Error(msg || "Assertion failed"); - } - function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - (TempCtor.prototype = superCtor.prototype), - (ctor.prototype = new TempCtor()), - (ctor.prototype.constructor = ctor); - } - function BN(number, base, endian) { - if (BN.isBN(number)) return number; - (this.negative = 0), - (this.words = null), - (this.length = 0), - (this.red = null), - number !== null && - ((base === "le" || base === "be") && ((endian = base), (base = 10)), - this._init(number || 0, base || 10, endian || "be")); - } - typeof module2 == "object" ? (module2.exports = BN) : (exports2.BN = BN), (BN.BN = BN), (BN.wordSize = 26); - var Buffer2; - try { - typeof window < "u" && typeof window.Buffer < "u" - ? (Buffer2 = window.Buffer) - : (Buffer2 = __require("buffer").Buffer); - } catch {} - (BN.isBN = function (num) { - return num instanceof BN - ? !0 - : num !== null && - typeof num == "object" && - num.constructor.wordSize === BN.wordSize && - Array.isArray(num.words); - }), - (BN.max = function (left, right) { - return left.cmp(right) > 0 ? left : right; - }), - (BN.min = function (left, right) { - return left.cmp(right) < 0 ? left : right; - }), - (BN.prototype._init = function (number, base, endian) { - if (typeof number == "number") return this._initNumber(number, base, endian); - if (typeof number == "object") return this._initArray(number, base, endian); - base === "hex" && (base = 16), - assert(base === (base | 0) && base >= 2 && base <= 36), - (number = number.toString().replace(/\s+/g, "")); - var start = 0; - number[0] === "-" && (start++, (this.negative = 1)), - start < number.length && - (base === 16 - ? this._parseHex(number, start, endian) - : (this._parseBase(number, base, start), - endian === "le" && this._initArray(this.toArray(), base, endian))); - }), - (BN.prototype._initNumber = function (number, base, endian) { - number < 0 && ((this.negative = 1), (number = -number)), - number < 67108864 - ? ((this.words = [number & 67108863]), (this.length = 1)) - : number < 4503599627370496 - ? ((this.words = [number & 67108863, (number / 67108864) & 67108863]), (this.length = 2)) - : (assert(number < 9007199254740992), - (this.words = [number & 67108863, (number / 67108864) & 67108863, 1]), - (this.length = 3)), - endian === "le" && this._initArray(this.toArray(), base, endian); - }), - (BN.prototype._initArray = function (number, base, endian) { - if ((assert(typeof number.length == "number"), number.length <= 0)) - return (this.words = [0]), (this.length = 1), this; - (this.length = Math.ceil(number.length / 3)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var j, - w, - off = 0; - if (endian === "be") - for (i = number.length - 1, j = 0; i >= 0; i -= 3) - (w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - else if (endian === "le") - for (i = 0, j = 0; i < number.length; i += 3) - (w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - return this.strip(); - }); - function parseHex4Bits(string, index) { - var c = string.charCodeAt(index); - return c >= 65 && c <= 70 ? c - 55 : c >= 97 && c <= 102 ? c - 87 : (c - 48) & 15; - } - function parseHexByte(string, lowerBound, index) { - var r = parseHex4Bits(string, index); - return index - 1 >= lowerBound && (r |= parseHex4Bits(string, index - 1) << 4), r; - } - BN.prototype._parseHex = function (number, start, endian) { - (this.length = Math.ceil((number.length - start) / 6)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var off = 0, - j = 0, - w; - if (endian === "be") - for (i = number.length - 1; i >= start; i -= 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - else { - var parseLength = number.length - start; - for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - } - this.strip(); - }; - function parseBase(str, start, end, mul) { - for (var r = 0, len = Math.min(str.length, end), i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - (r *= mul), c >= 49 ? (r += c - 49 + 10) : c >= 17 ? (r += c - 17 + 10) : (r += c); - } - return r; - } - (BN.prototype._parseBase = function (number, base, start) { - (this.words = [0]), (this.length = 1); - for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) limbLen++; - limbLen--, (limbPow = (limbPow / base) | 0); - for ( - var total = number.length - start, - mod = total % limbLen, - end = Math.min(total, total - mod) + start, - word = 0, - i = start; - i < end; - i += limbLen - ) - (word = parseBase(number, i, i + limbLen, base)), - this.imuln(limbPow), - this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - if (mod !== 0) { - var pow = 1; - for (word = parseBase(number, i, number.length, base), i = 0; i < mod; i++) pow *= base; - this.imuln(pow), this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - } - this.strip(); - }), - (BN.prototype.copy = function (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) dest.words[i] = this.words[i]; - (dest.length = this.length), (dest.negative = this.negative), (dest.red = this.red); - }), - (BN.prototype.clone = function () { - var r = new BN(null); - return this.copy(r), r; - }), - (BN.prototype._expand = function (size) { - for (; this.length < size; ) this.words[this.length++] = 0; - return this; - }), - (BN.prototype.strip = function () { - for (; this.length > 1 && this.words[this.length - 1] === 0; ) this.length--; - return this._normSign(); - }), - (BN.prototype._normSign = function () { - return this.length === 1 && this.words[0] === 0 && (this.negative = 0), this; - }), - (BN.prototype.inspect = function () { - return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">"; - }); - var zeros = [ - "", - "0", - "00", - "000", - "0000", - "00000", - "000000", - "0000000", - "00000000", - "000000000", - "0000000000", - "00000000000", - "000000000000", - "0000000000000", - "00000000000000", - "000000000000000", - "0000000000000000", - "00000000000000000", - "000000000000000000", - "0000000000000000000", - "00000000000000000000", - "000000000000000000000", - "0000000000000000000000", - "00000000000000000000000", - "000000000000000000000000", - "0000000000000000000000000", - ], - groupSizes = [ - 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, - ], - groupBases = [ - 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, - 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, - 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, - 60466176, - ]; - (BN.prototype.toString = function (base, padding) { - (base = base || 10), (padding = padding | 0 || 1); - var out; - if (base === 16 || base === "hex") { - out = ""; - for (var off = 0, carry = 0, i = 0; i < this.length; i++) { - var w = this.words[i], - word = (((w << off) | carry) & 16777215).toString(16); - (carry = (w >>> (24 - off)) & 16777215), - carry !== 0 || i !== this.length - 1 ? (out = zeros[6 - word.length] + word + out) : (out = word + out), - (off += 2), - off >= 26 && ((off -= 26), i--); - } - for (carry !== 0 && (out = carry.toString(16) + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - if (base === (base | 0) && base >= 2 && base <= 36) { - var groupSize = groupSizes[base], - groupBase = groupBases[base]; - out = ""; - var c = this.clone(); - for (c.negative = 0; !c.isZero(); ) { - var r = c.modn(groupBase).toString(base); - (c = c.idivn(groupBase)), c.isZero() ? (out = r + out) : (out = zeros[groupSize - r.length] + r + out); - } - for (this.isZero() && (out = "0" + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - assert(!1, "Base should be between 2 and 36"); - }), - (BN.prototype.toNumber = function () { - var ret = this.words[0]; - return ( - this.length === 2 - ? (ret += this.words[1] * 67108864) - : this.length === 3 && this.words[2] === 1 - ? (ret += 4503599627370496 + this.words[1] * 67108864) - : this.length > 2 && assert(!1, "Number can only safely store up to 53 bits"), - this.negative !== 0 ? -ret : ret - ); - }), - (BN.prototype.toJSON = function () { - return this.toString(16); - }), - (BN.prototype.toBuffer = function (endian, length) { - return assert(typeof Buffer2 < "u"), this.toArrayLike(Buffer2, endian, length); - }), - (BN.prototype.toArray = function (endian, length) { - return this.toArrayLike(Array, endian, length); - }), - (BN.prototype.toArrayLike = function (ArrayType, endian, length) { - var byteLength = this.byteLength(), - reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, "byte array longer than desired length"), - assert(reqLength > 0, "Requested array length <= 0"), - this.strip(); - var littleEndian = endian === "le", - res = new ArrayType(reqLength), - b, - i, - q = this.clone(); - if (littleEndian) { - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[i] = b); - for (; i < reqLength; i++) res[i] = 0; - } else { - for (i = 0; i < reqLength - byteLength; i++) res[i] = 0; - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[reqLength - i - 1] = b); - } - return res; - }), - Math.clz32 - ? (BN.prototype._countBits = function (w) { - return 32 - Math.clz32(w); - }) - : (BN.prototype._countBits = function (w) { - var t = w, - r = 0; - return ( - t >= 4096 && ((r += 13), (t >>>= 13)), - t >= 64 && ((r += 7), (t >>>= 7)), - t >= 8 && ((r += 4), (t >>>= 4)), - t >= 2 && ((r += 2), (t >>>= 2)), - r + t - ); - }), - (BN.prototype._zeroBits = function (w) { - if (w === 0) return 26; - var t = w, - r = 0; - return ( - (t & 8191) === 0 && ((r += 13), (t >>>= 13)), - (t & 127) === 0 && ((r += 7), (t >>>= 7)), - (t & 15) === 0 && ((r += 4), (t >>>= 4)), - (t & 3) === 0 && ((r += 2), (t >>>= 2)), - (t & 1) === 0 && r++, - r - ); - }), - (BN.prototype.bitLength = function () { - var w = this.words[this.length - 1], - hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }); - function toBitArray(num) { - for (var w = new Array(num.bitLength()), bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0, - wbit = bit % 26; - w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; - } - return w; - } - (BN.prototype.zeroBits = function () { - if (this.isZero()) return 0; - for (var r = 0, i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - if (((r += b), b !== 26)) break; - } - return r; - }), - (BN.prototype.byteLength = function () { - return Math.ceil(this.bitLength() / 8); - }), - (BN.prototype.toTwos = function (width) { - return this.negative !== 0 ? this.abs().inotn(width).iaddn(1) : this.clone(); - }), - (BN.prototype.fromTwos = function (width) { - return this.testn(width - 1) ? this.notn(width).iaddn(1).ineg() : this.clone(); - }), - (BN.prototype.isNeg = function () { - return this.negative !== 0; - }), - (BN.prototype.neg = function () { - return this.clone().ineg(); - }), - (BN.prototype.ineg = function () { - return this.isZero() || (this.negative ^= 1), this; - }), - (BN.prototype.iuor = function (num) { - for (; this.length < num.length; ) this.words[this.length++] = 0; - for (var i = 0; i < num.length; i++) this.words[i] = this.words[i] | num.words[i]; - return this.strip(); - }), - (BN.prototype.ior = function (num) { - return assert((this.negative | num.negative) === 0), this.iuor(num); - }), - (BN.prototype.or = function (num) { - return this.length > num.length ? this.clone().ior(num) : num.clone().ior(this); - }), - (BN.prototype.uor = function (num) { - return this.length > num.length ? this.clone().iuor(num) : num.clone().iuor(this); - }), - (BN.prototype.iuand = function (num) { - var b; - this.length > num.length ? (b = num) : (b = this); - for (var i = 0; i < b.length; i++) this.words[i] = this.words[i] & num.words[i]; - return (this.length = b.length), this.strip(); - }), - (BN.prototype.iand = function (num) { - return assert((this.negative | num.negative) === 0), this.iuand(num); - }), - (BN.prototype.and = function (num) { - return this.length > num.length ? this.clone().iand(num) : num.clone().iand(this); - }), - (BN.prototype.uand = function (num) { - return this.length > num.length ? this.clone().iuand(num) : num.clone().iuand(this); - }), - (BN.prototype.iuxor = function (num) { - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var i = 0; i < b.length; i++) this.words[i] = a.words[i] ^ b.words[i]; - if (this !== a) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = a.length), this.strip(); - }), - (BN.prototype.ixor = function (num) { - return assert((this.negative | num.negative) === 0), this.iuxor(num); - }), - (BN.prototype.xor = function (num) { - return this.length > num.length ? this.clone().ixor(num) : num.clone().ixor(this); - }), - (BN.prototype.uxor = function (num) { - return this.length > num.length ? this.clone().iuxor(num) : num.clone().iuxor(this); - }), - (BN.prototype.inotn = function (width) { - assert(typeof width == "number" && width >= 0); - var bytesNeeded = Math.ceil(width / 26) | 0, - bitsLeft = width % 26; - this._expand(bytesNeeded), bitsLeft > 0 && bytesNeeded--; - for (var i = 0; i < bytesNeeded; i++) this.words[i] = ~this.words[i] & 67108863; - return bitsLeft > 0 && (this.words[i] = ~this.words[i] & (67108863 >> (26 - bitsLeft))), this.strip(); - }), - (BN.prototype.notn = function (width) { - return this.clone().inotn(width); - }), - (BN.prototype.setn = function (bit, val) { - assert(typeof bit == "number" && bit >= 0); - var off = (bit / 26) | 0, - wbit = bit % 26; - return ( - this._expand(off + 1), - val - ? (this.words[off] = this.words[off] | (1 << wbit)) - : (this.words[off] = this.words[off] & ~(1 << wbit)), - this.strip() - ); - }), - (BN.prototype.iadd = function (num) { - var r; - if (this.negative !== 0 && num.negative === 0) - return (this.negative = 0), (r = this.isub(num)), (this.negative ^= 1), this._normSign(); - if (this.negative === 0 && num.negative !== 0) - return (num.negative = 0), (r = this.isub(num)), (num.negative = 1), r._normSign(); - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) + (b.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - if (((this.length = a.length), carry !== 0)) (this.words[this.length] = carry), this.length++; - else if (a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return this; - }), - (BN.prototype.add = function (num) { - var res; - return num.negative !== 0 && this.negative === 0 - ? ((num.negative = 0), (res = this.sub(num)), (num.negative ^= 1), res) - : num.negative === 0 && this.negative !== 0 - ? ((this.negative = 0), (res = num.sub(this)), (this.negative = 1), res) - : this.length > num.length - ? this.clone().iadd(num) - : num.clone().iadd(this); - }), - (BN.prototype.isub = function (num) { - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - return (num.negative = 1), r._normSign(); - } else if (this.negative !== 0) - return (this.negative = 0), this.iadd(num), (this.negative = 1), this._normSign(); - var cmp = this.cmp(num); - if (cmp === 0) return (this.negative = 0), (this.length = 1), (this.words[0] = 0), this; - var a, b; - cmp > 0 ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) - (b.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - if (carry === 0 && i < a.length && a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = Math.max(this.length, i)), a !== this && (this.negative = 1), this.strip(); - }), - (BN.prototype.sub = function (num) { - return this.clone().isub(num); - }); - function smallMulTo(self2, num, out) { - out.negative = num.negative ^ self2.negative; - var len = (self2.length + num.length) | 0; - (out.length = len), (len = (len - 1) | 0); - var a = self2.words[0] | 0, - b = num.words[0] | 0, - r = a * b, - lo = r & 67108863, - carry = (r / 67108864) | 0; - out.words[0] = lo; - for (var k = 1; k < len; k++) { - for ( - var ncarry = carry >>> 26, - rword = carry & 67108863, - maxJ = Math.min(k, num.length - 1), - j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = (k - j) | 0; - (a = self2.words[i] | 0), - (b = num.words[j] | 0), - (r = a * b + rword), - (ncarry += (r / 67108864) | 0), - (rword = r & 67108863); - } - (out.words[k] = rword | 0), (carry = ncarry | 0); - } - return carry !== 0 ? (out.words[k] = carry | 0) : out.length--, out.strip(); - } - var comb10MulTo = function (self2, num, out) { - var a = self2.words, - b = num.words, - o = out.words, - c = 0, - lo, - mid, - hi, - a0 = a[0] | 0, - al0 = a0 & 8191, - ah0 = a0 >>> 13, - a1 = a[1] | 0, - al1 = a1 & 8191, - ah1 = a1 >>> 13, - a2 = a[2] | 0, - al2 = a2 & 8191, - ah2 = a2 >>> 13, - a3 = a[3] | 0, - al3 = a3 & 8191, - ah3 = a3 >>> 13, - a4 = a[4] | 0, - al4 = a4 & 8191, - ah4 = a4 >>> 13, - a5 = a[5] | 0, - al5 = a5 & 8191, - ah5 = a5 >>> 13, - a6 = a[6] | 0, - al6 = a6 & 8191, - ah6 = a6 >>> 13, - a7 = a[7] | 0, - al7 = a7 & 8191, - ah7 = a7 >>> 13, - a8 = a[8] | 0, - al8 = a8 & 8191, - ah8 = a8 >>> 13, - a9 = a[9] | 0, - al9 = a9 & 8191, - ah9 = a9 >>> 13, - b0 = b[0] | 0, - bl0 = b0 & 8191, - bh0 = b0 >>> 13, - b1 = b[1] | 0, - bl1 = b1 & 8191, - bh1 = b1 >>> 13, - b2 = b[2] | 0, - bl2 = b2 & 8191, - bh2 = b2 >>> 13, - b3 = b[3] | 0, - bl3 = b3 & 8191, - bh3 = b3 >>> 13, - b4 = b[4] | 0, - bl4 = b4 & 8191, - bh4 = b4 >>> 13, - b5 = b[5] | 0, - bl5 = b5 & 8191, - bh5 = b5 >>> 13, - b6 = b[6] | 0, - bl6 = b6 & 8191, - bh6 = b6 >>> 13, - b7 = b[7] | 0, - bl7 = b7 & 8191, - bh7 = b7 >>> 13, - b8 = b[8] | 0, - bl8 = b8 & 8191, - bh8 = b8 >>> 13, - b9 = b[9] | 0, - bl9 = b9 & 8191, - bh9 = b9 >>> 13; - (out.negative = self2.negative ^ num.negative), - (out.length = 19), - (lo = Math.imul(al0, bl0)), - (mid = Math.imul(al0, bh0)), - (mid = (mid + Math.imul(ah0, bl0)) | 0), - (hi = Math.imul(ah0, bh0)); - var w0 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0), - (w0 &= 67108863), - (lo = Math.imul(al1, bl0)), - (mid = Math.imul(al1, bh0)), - (mid = (mid + Math.imul(ah1, bl0)) | 0), - (hi = Math.imul(ah1, bh0)), - (lo = (lo + Math.imul(al0, bl1)) | 0), - (mid = (mid + Math.imul(al0, bh1)) | 0), - (mid = (mid + Math.imul(ah0, bl1)) | 0), - (hi = (hi + Math.imul(ah0, bh1)) | 0); - var w1 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0), - (w1 &= 67108863), - (lo = Math.imul(al2, bl0)), - (mid = Math.imul(al2, bh0)), - (mid = (mid + Math.imul(ah2, bl0)) | 0), - (hi = Math.imul(ah2, bh0)), - (lo = (lo + Math.imul(al1, bl1)) | 0), - (mid = (mid + Math.imul(al1, bh1)) | 0), - (mid = (mid + Math.imul(ah1, bl1)) | 0), - (hi = (hi + Math.imul(ah1, bh1)) | 0), - (lo = (lo + Math.imul(al0, bl2)) | 0), - (mid = (mid + Math.imul(al0, bh2)) | 0), - (mid = (mid + Math.imul(ah0, bl2)) | 0), - (hi = (hi + Math.imul(ah0, bh2)) | 0); - var w2 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0), - (w2 &= 67108863), - (lo = Math.imul(al3, bl0)), - (mid = Math.imul(al3, bh0)), - (mid = (mid + Math.imul(ah3, bl0)) | 0), - (hi = Math.imul(ah3, bh0)), - (lo = (lo + Math.imul(al2, bl1)) | 0), - (mid = (mid + Math.imul(al2, bh1)) | 0), - (mid = (mid + Math.imul(ah2, bl1)) | 0), - (hi = (hi + Math.imul(ah2, bh1)) | 0), - (lo = (lo + Math.imul(al1, bl2)) | 0), - (mid = (mid + Math.imul(al1, bh2)) | 0), - (mid = (mid + Math.imul(ah1, bl2)) | 0), - (hi = (hi + Math.imul(ah1, bh2)) | 0), - (lo = (lo + Math.imul(al0, bl3)) | 0), - (mid = (mid + Math.imul(al0, bh3)) | 0), - (mid = (mid + Math.imul(ah0, bl3)) | 0), - (hi = (hi + Math.imul(ah0, bh3)) | 0); - var w3 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0), - (w3 &= 67108863), - (lo = Math.imul(al4, bl0)), - (mid = Math.imul(al4, bh0)), - (mid = (mid + Math.imul(ah4, bl0)) | 0), - (hi = Math.imul(ah4, bh0)), - (lo = (lo + Math.imul(al3, bl1)) | 0), - (mid = (mid + Math.imul(al3, bh1)) | 0), - (mid = (mid + Math.imul(ah3, bl1)) | 0), - (hi = (hi + Math.imul(ah3, bh1)) | 0), - (lo = (lo + Math.imul(al2, bl2)) | 0), - (mid = (mid + Math.imul(al2, bh2)) | 0), - (mid = (mid + Math.imul(ah2, bl2)) | 0), - (hi = (hi + Math.imul(ah2, bh2)) | 0), - (lo = (lo + Math.imul(al1, bl3)) | 0), - (mid = (mid + Math.imul(al1, bh3)) | 0), - (mid = (mid + Math.imul(ah1, bl3)) | 0), - (hi = (hi + Math.imul(ah1, bh3)) | 0), - (lo = (lo + Math.imul(al0, bl4)) | 0), - (mid = (mid + Math.imul(al0, bh4)) | 0), - (mid = (mid + Math.imul(ah0, bl4)) | 0), - (hi = (hi + Math.imul(ah0, bh4)) | 0); - var w4 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0), - (w4 &= 67108863), - (lo = Math.imul(al5, bl0)), - (mid = Math.imul(al5, bh0)), - (mid = (mid + Math.imul(ah5, bl0)) | 0), - (hi = Math.imul(ah5, bh0)), - (lo = (lo + Math.imul(al4, bl1)) | 0), - (mid = (mid + Math.imul(al4, bh1)) | 0), - (mid = (mid + Math.imul(ah4, bl1)) | 0), - (hi = (hi + Math.imul(ah4, bh1)) | 0), - (lo = (lo + Math.imul(al3, bl2)) | 0), - (mid = (mid + Math.imul(al3, bh2)) | 0), - (mid = (mid + Math.imul(ah3, bl2)) | 0), - (hi = (hi + Math.imul(ah3, bh2)) | 0), - (lo = (lo + Math.imul(al2, bl3)) | 0), - (mid = (mid + Math.imul(al2, bh3)) | 0), - (mid = (mid + Math.imul(ah2, bl3)) | 0), - (hi = (hi + Math.imul(ah2, bh3)) | 0), - (lo = (lo + Math.imul(al1, bl4)) | 0), - (mid = (mid + Math.imul(al1, bh4)) | 0), - (mid = (mid + Math.imul(ah1, bl4)) | 0), - (hi = (hi + Math.imul(ah1, bh4)) | 0), - (lo = (lo + Math.imul(al0, bl5)) | 0), - (mid = (mid + Math.imul(al0, bh5)) | 0), - (mid = (mid + Math.imul(ah0, bl5)) | 0), - (hi = (hi + Math.imul(ah0, bh5)) | 0); - var w5 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0), - (w5 &= 67108863), - (lo = Math.imul(al6, bl0)), - (mid = Math.imul(al6, bh0)), - (mid = (mid + Math.imul(ah6, bl0)) | 0), - (hi = Math.imul(ah6, bh0)), - (lo = (lo + Math.imul(al5, bl1)) | 0), - (mid = (mid + Math.imul(al5, bh1)) | 0), - (mid = (mid + Math.imul(ah5, bl1)) | 0), - (hi = (hi + Math.imul(ah5, bh1)) | 0), - (lo = (lo + Math.imul(al4, bl2)) | 0), - (mid = (mid + Math.imul(al4, bh2)) | 0), - (mid = (mid + Math.imul(ah4, bl2)) | 0), - (hi = (hi + Math.imul(ah4, bh2)) | 0), - (lo = (lo + Math.imul(al3, bl3)) | 0), - (mid = (mid + Math.imul(al3, bh3)) | 0), - (mid = (mid + Math.imul(ah3, bl3)) | 0), - (hi = (hi + Math.imul(ah3, bh3)) | 0), - (lo = (lo + Math.imul(al2, bl4)) | 0), - (mid = (mid + Math.imul(al2, bh4)) | 0), - (mid = (mid + Math.imul(ah2, bl4)) | 0), - (hi = (hi + Math.imul(ah2, bh4)) | 0), - (lo = (lo + Math.imul(al1, bl5)) | 0), - (mid = (mid + Math.imul(al1, bh5)) | 0), - (mid = (mid + Math.imul(ah1, bl5)) | 0), - (hi = (hi + Math.imul(ah1, bh5)) | 0), - (lo = (lo + Math.imul(al0, bl6)) | 0), - (mid = (mid + Math.imul(al0, bh6)) | 0), - (mid = (mid + Math.imul(ah0, bl6)) | 0), - (hi = (hi + Math.imul(ah0, bh6)) | 0); - var w6 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0), - (w6 &= 67108863), - (lo = Math.imul(al7, bl0)), - (mid = Math.imul(al7, bh0)), - (mid = (mid + Math.imul(ah7, bl0)) | 0), - (hi = Math.imul(ah7, bh0)), - (lo = (lo + Math.imul(al6, bl1)) | 0), - (mid = (mid + Math.imul(al6, bh1)) | 0), - (mid = (mid + Math.imul(ah6, bl1)) | 0), - (hi = (hi + Math.imul(ah6, bh1)) | 0), - (lo = (lo + Math.imul(al5, bl2)) | 0), - (mid = (mid + Math.imul(al5, bh2)) | 0), - (mid = (mid + Math.imul(ah5, bl2)) | 0), - (hi = (hi + Math.imul(ah5, bh2)) | 0), - (lo = (lo + Math.imul(al4, bl3)) | 0), - (mid = (mid + Math.imul(al4, bh3)) | 0), - (mid = (mid + Math.imul(ah4, bl3)) | 0), - (hi = (hi + Math.imul(ah4, bh3)) | 0), - (lo = (lo + Math.imul(al3, bl4)) | 0), - (mid = (mid + Math.imul(al3, bh4)) | 0), - (mid = (mid + Math.imul(ah3, bl4)) | 0), - (hi = (hi + Math.imul(ah3, bh4)) | 0), - (lo = (lo + Math.imul(al2, bl5)) | 0), - (mid = (mid + Math.imul(al2, bh5)) | 0), - (mid = (mid + Math.imul(ah2, bl5)) | 0), - (hi = (hi + Math.imul(ah2, bh5)) | 0), - (lo = (lo + Math.imul(al1, bl6)) | 0), - (mid = (mid + Math.imul(al1, bh6)) | 0), - (mid = (mid + Math.imul(ah1, bl6)) | 0), - (hi = (hi + Math.imul(ah1, bh6)) | 0), - (lo = (lo + Math.imul(al0, bl7)) | 0), - (mid = (mid + Math.imul(al0, bh7)) | 0), - (mid = (mid + Math.imul(ah0, bl7)) | 0), - (hi = (hi + Math.imul(ah0, bh7)) | 0); - var w7 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0), - (w7 &= 67108863), - (lo = Math.imul(al8, bl0)), - (mid = Math.imul(al8, bh0)), - (mid = (mid + Math.imul(ah8, bl0)) | 0), - (hi = Math.imul(ah8, bh0)), - (lo = (lo + Math.imul(al7, bl1)) | 0), - (mid = (mid + Math.imul(al7, bh1)) | 0), - (mid = (mid + Math.imul(ah7, bl1)) | 0), - (hi = (hi + Math.imul(ah7, bh1)) | 0), - (lo = (lo + Math.imul(al6, bl2)) | 0), - (mid = (mid + Math.imul(al6, bh2)) | 0), - (mid = (mid + Math.imul(ah6, bl2)) | 0), - (hi = (hi + Math.imul(ah6, bh2)) | 0), - (lo = (lo + Math.imul(al5, bl3)) | 0), - (mid = (mid + Math.imul(al5, bh3)) | 0), - (mid = (mid + Math.imul(ah5, bl3)) | 0), - (hi = (hi + Math.imul(ah5, bh3)) | 0), - (lo = (lo + Math.imul(al4, bl4)) | 0), - (mid = (mid + Math.imul(al4, bh4)) | 0), - (mid = (mid + Math.imul(ah4, bl4)) | 0), - (hi = (hi + Math.imul(ah4, bh4)) | 0), - (lo = (lo + Math.imul(al3, bl5)) | 0), - (mid = (mid + Math.imul(al3, bh5)) | 0), - (mid = (mid + Math.imul(ah3, bl5)) | 0), - (hi = (hi + Math.imul(ah3, bh5)) | 0), - (lo = (lo + Math.imul(al2, bl6)) | 0), - (mid = (mid + Math.imul(al2, bh6)) | 0), - (mid = (mid + Math.imul(ah2, bl6)) | 0), - (hi = (hi + Math.imul(ah2, bh6)) | 0), - (lo = (lo + Math.imul(al1, bl7)) | 0), - (mid = (mid + Math.imul(al1, bh7)) | 0), - (mid = (mid + Math.imul(ah1, bl7)) | 0), - (hi = (hi + Math.imul(ah1, bh7)) | 0), - (lo = (lo + Math.imul(al0, bl8)) | 0), - (mid = (mid + Math.imul(al0, bh8)) | 0), - (mid = (mid + Math.imul(ah0, bl8)) | 0), - (hi = (hi + Math.imul(ah0, bh8)) | 0); - var w8 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0), - (w8 &= 67108863), - (lo = Math.imul(al9, bl0)), - (mid = Math.imul(al9, bh0)), - (mid = (mid + Math.imul(ah9, bl0)) | 0), - (hi = Math.imul(ah9, bh0)), - (lo = (lo + Math.imul(al8, bl1)) | 0), - (mid = (mid + Math.imul(al8, bh1)) | 0), - (mid = (mid + Math.imul(ah8, bl1)) | 0), - (hi = (hi + Math.imul(ah8, bh1)) | 0), - (lo = (lo + Math.imul(al7, bl2)) | 0), - (mid = (mid + Math.imul(al7, bh2)) | 0), - (mid = (mid + Math.imul(ah7, bl2)) | 0), - (hi = (hi + Math.imul(ah7, bh2)) | 0), - (lo = (lo + Math.imul(al6, bl3)) | 0), - (mid = (mid + Math.imul(al6, bh3)) | 0), - (mid = (mid + Math.imul(ah6, bl3)) | 0), - (hi = (hi + Math.imul(ah6, bh3)) | 0), - (lo = (lo + Math.imul(al5, bl4)) | 0), - (mid = (mid + Math.imul(al5, bh4)) | 0), - (mid = (mid + Math.imul(ah5, bl4)) | 0), - (hi = (hi + Math.imul(ah5, bh4)) | 0), - (lo = (lo + Math.imul(al4, bl5)) | 0), - (mid = (mid + Math.imul(al4, bh5)) | 0), - (mid = (mid + Math.imul(ah4, bl5)) | 0), - (hi = (hi + Math.imul(ah4, bh5)) | 0), - (lo = (lo + Math.imul(al3, bl6)) | 0), - (mid = (mid + Math.imul(al3, bh6)) | 0), - (mid = (mid + Math.imul(ah3, bl6)) | 0), - (hi = (hi + Math.imul(ah3, bh6)) | 0), - (lo = (lo + Math.imul(al2, bl7)) | 0), - (mid = (mid + Math.imul(al2, bh7)) | 0), - (mid = (mid + Math.imul(ah2, bl7)) | 0), - (hi = (hi + Math.imul(ah2, bh7)) | 0), - (lo = (lo + Math.imul(al1, bl8)) | 0), - (mid = (mid + Math.imul(al1, bh8)) | 0), - (mid = (mid + Math.imul(ah1, bl8)) | 0), - (hi = (hi + Math.imul(ah1, bh8)) | 0), - (lo = (lo + Math.imul(al0, bl9)) | 0), - (mid = (mid + Math.imul(al0, bh9)) | 0), - (mid = (mid + Math.imul(ah0, bl9)) | 0), - (hi = (hi + Math.imul(ah0, bh9)) | 0); - var w9 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0), - (w9 &= 67108863), - (lo = Math.imul(al9, bl1)), - (mid = Math.imul(al9, bh1)), - (mid = (mid + Math.imul(ah9, bl1)) | 0), - (hi = Math.imul(ah9, bh1)), - (lo = (lo + Math.imul(al8, bl2)) | 0), - (mid = (mid + Math.imul(al8, bh2)) | 0), - (mid = (mid + Math.imul(ah8, bl2)) | 0), - (hi = (hi + Math.imul(ah8, bh2)) | 0), - (lo = (lo + Math.imul(al7, bl3)) | 0), - (mid = (mid + Math.imul(al7, bh3)) | 0), - (mid = (mid + Math.imul(ah7, bl3)) | 0), - (hi = (hi + Math.imul(ah7, bh3)) | 0), - (lo = (lo + Math.imul(al6, bl4)) | 0), - (mid = (mid + Math.imul(al6, bh4)) | 0), - (mid = (mid + Math.imul(ah6, bl4)) | 0), - (hi = (hi + Math.imul(ah6, bh4)) | 0), - (lo = (lo + Math.imul(al5, bl5)) | 0), - (mid = (mid + Math.imul(al5, bh5)) | 0), - (mid = (mid + Math.imul(ah5, bl5)) | 0), - (hi = (hi + Math.imul(ah5, bh5)) | 0), - (lo = (lo + Math.imul(al4, bl6)) | 0), - (mid = (mid + Math.imul(al4, bh6)) | 0), - (mid = (mid + Math.imul(ah4, bl6)) | 0), - (hi = (hi + Math.imul(ah4, bh6)) | 0), - (lo = (lo + Math.imul(al3, bl7)) | 0), - (mid = (mid + Math.imul(al3, bh7)) | 0), - (mid = (mid + Math.imul(ah3, bl7)) | 0), - (hi = (hi + Math.imul(ah3, bh7)) | 0), - (lo = (lo + Math.imul(al2, bl8)) | 0), - (mid = (mid + Math.imul(al2, bh8)) | 0), - (mid = (mid + Math.imul(ah2, bl8)) | 0), - (hi = (hi + Math.imul(ah2, bh8)) | 0), - (lo = (lo + Math.imul(al1, bl9)) | 0), - (mid = (mid + Math.imul(al1, bh9)) | 0), - (mid = (mid + Math.imul(ah1, bl9)) | 0), - (hi = (hi + Math.imul(ah1, bh9)) | 0); - var w10 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0), - (w10 &= 67108863), - (lo = Math.imul(al9, bl2)), - (mid = Math.imul(al9, bh2)), - (mid = (mid + Math.imul(ah9, bl2)) | 0), - (hi = Math.imul(ah9, bh2)), - (lo = (lo + Math.imul(al8, bl3)) | 0), - (mid = (mid + Math.imul(al8, bh3)) | 0), - (mid = (mid + Math.imul(ah8, bl3)) | 0), - (hi = (hi + Math.imul(ah8, bh3)) | 0), - (lo = (lo + Math.imul(al7, bl4)) | 0), - (mid = (mid + Math.imul(al7, bh4)) | 0), - (mid = (mid + Math.imul(ah7, bl4)) | 0), - (hi = (hi + Math.imul(ah7, bh4)) | 0), - (lo = (lo + Math.imul(al6, bl5)) | 0), - (mid = (mid + Math.imul(al6, bh5)) | 0), - (mid = (mid + Math.imul(ah6, bl5)) | 0), - (hi = (hi + Math.imul(ah6, bh5)) | 0), - (lo = (lo + Math.imul(al5, bl6)) | 0), - (mid = (mid + Math.imul(al5, bh6)) | 0), - (mid = (mid + Math.imul(ah5, bl6)) | 0), - (hi = (hi + Math.imul(ah5, bh6)) | 0), - (lo = (lo + Math.imul(al4, bl7)) | 0), - (mid = (mid + Math.imul(al4, bh7)) | 0), - (mid = (mid + Math.imul(ah4, bl7)) | 0), - (hi = (hi + Math.imul(ah4, bh7)) | 0), - (lo = (lo + Math.imul(al3, bl8)) | 0), - (mid = (mid + Math.imul(al3, bh8)) | 0), - (mid = (mid + Math.imul(ah3, bl8)) | 0), - (hi = (hi + Math.imul(ah3, bh8)) | 0), - (lo = (lo + Math.imul(al2, bl9)) | 0), - (mid = (mid + Math.imul(al2, bh9)) | 0), - (mid = (mid + Math.imul(ah2, bl9)) | 0), - (hi = (hi + Math.imul(ah2, bh9)) | 0); - var w11 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0), - (w11 &= 67108863), - (lo = Math.imul(al9, bl3)), - (mid = Math.imul(al9, bh3)), - (mid = (mid + Math.imul(ah9, bl3)) | 0), - (hi = Math.imul(ah9, bh3)), - (lo = (lo + Math.imul(al8, bl4)) | 0), - (mid = (mid + Math.imul(al8, bh4)) | 0), - (mid = (mid + Math.imul(ah8, bl4)) | 0), - (hi = (hi + Math.imul(ah8, bh4)) | 0), - (lo = (lo + Math.imul(al7, bl5)) | 0), - (mid = (mid + Math.imul(al7, bh5)) | 0), - (mid = (mid + Math.imul(ah7, bl5)) | 0), - (hi = (hi + Math.imul(ah7, bh5)) | 0), - (lo = (lo + Math.imul(al6, bl6)) | 0), - (mid = (mid + Math.imul(al6, bh6)) | 0), - (mid = (mid + Math.imul(ah6, bl6)) | 0), - (hi = (hi + Math.imul(ah6, bh6)) | 0), - (lo = (lo + Math.imul(al5, bl7)) | 0), - (mid = (mid + Math.imul(al5, bh7)) | 0), - (mid = (mid + Math.imul(ah5, bl7)) | 0), - (hi = (hi + Math.imul(ah5, bh7)) | 0), - (lo = (lo + Math.imul(al4, bl8)) | 0), - (mid = (mid + Math.imul(al4, bh8)) | 0), - (mid = (mid + Math.imul(ah4, bl8)) | 0), - (hi = (hi + Math.imul(ah4, bh8)) | 0), - (lo = (lo + Math.imul(al3, bl9)) | 0), - (mid = (mid + Math.imul(al3, bh9)) | 0), - (mid = (mid + Math.imul(ah3, bl9)) | 0), - (hi = (hi + Math.imul(ah3, bh9)) | 0); - var w12 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0), - (w12 &= 67108863), - (lo = Math.imul(al9, bl4)), - (mid = Math.imul(al9, bh4)), - (mid = (mid + Math.imul(ah9, bl4)) | 0), - (hi = Math.imul(ah9, bh4)), - (lo = (lo + Math.imul(al8, bl5)) | 0), - (mid = (mid + Math.imul(al8, bh5)) | 0), - (mid = (mid + Math.imul(ah8, bl5)) | 0), - (hi = (hi + Math.imul(ah8, bh5)) | 0), - (lo = (lo + Math.imul(al7, bl6)) | 0), - (mid = (mid + Math.imul(al7, bh6)) | 0), - (mid = (mid + Math.imul(ah7, bl6)) | 0), - (hi = (hi + Math.imul(ah7, bh6)) | 0), - (lo = (lo + Math.imul(al6, bl7)) | 0), - (mid = (mid + Math.imul(al6, bh7)) | 0), - (mid = (mid + Math.imul(ah6, bl7)) | 0), - (hi = (hi + Math.imul(ah6, bh7)) | 0), - (lo = (lo + Math.imul(al5, bl8)) | 0), - (mid = (mid + Math.imul(al5, bh8)) | 0), - (mid = (mid + Math.imul(ah5, bl8)) | 0), - (hi = (hi + Math.imul(ah5, bh8)) | 0), - (lo = (lo + Math.imul(al4, bl9)) | 0), - (mid = (mid + Math.imul(al4, bh9)) | 0), - (mid = (mid + Math.imul(ah4, bl9)) | 0), - (hi = (hi + Math.imul(ah4, bh9)) | 0); - var w13 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0), - (w13 &= 67108863), - (lo = Math.imul(al9, bl5)), - (mid = Math.imul(al9, bh5)), - (mid = (mid + Math.imul(ah9, bl5)) | 0), - (hi = Math.imul(ah9, bh5)), - (lo = (lo + Math.imul(al8, bl6)) | 0), - (mid = (mid + Math.imul(al8, bh6)) | 0), - (mid = (mid + Math.imul(ah8, bl6)) | 0), - (hi = (hi + Math.imul(ah8, bh6)) | 0), - (lo = (lo + Math.imul(al7, bl7)) | 0), - (mid = (mid + Math.imul(al7, bh7)) | 0), - (mid = (mid + Math.imul(ah7, bl7)) | 0), - (hi = (hi + Math.imul(ah7, bh7)) | 0), - (lo = (lo + Math.imul(al6, bl8)) | 0), - (mid = (mid + Math.imul(al6, bh8)) | 0), - (mid = (mid + Math.imul(ah6, bl8)) | 0), - (hi = (hi + Math.imul(ah6, bh8)) | 0), - (lo = (lo + Math.imul(al5, bl9)) | 0), - (mid = (mid + Math.imul(al5, bh9)) | 0), - (mid = (mid + Math.imul(ah5, bl9)) | 0), - (hi = (hi + Math.imul(ah5, bh9)) | 0); - var w14 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0), - (w14 &= 67108863), - (lo = Math.imul(al9, bl6)), - (mid = Math.imul(al9, bh6)), - (mid = (mid + Math.imul(ah9, bl6)) | 0), - (hi = Math.imul(ah9, bh6)), - (lo = (lo + Math.imul(al8, bl7)) | 0), - (mid = (mid + Math.imul(al8, bh7)) | 0), - (mid = (mid + Math.imul(ah8, bl7)) | 0), - (hi = (hi + Math.imul(ah8, bh7)) | 0), - (lo = (lo + Math.imul(al7, bl8)) | 0), - (mid = (mid + Math.imul(al7, bh8)) | 0), - (mid = (mid + Math.imul(ah7, bl8)) | 0), - (hi = (hi + Math.imul(ah7, bh8)) | 0), - (lo = (lo + Math.imul(al6, bl9)) | 0), - (mid = (mid + Math.imul(al6, bh9)) | 0), - (mid = (mid + Math.imul(ah6, bl9)) | 0), - (hi = (hi + Math.imul(ah6, bh9)) | 0); - var w15 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0), - (w15 &= 67108863), - (lo = Math.imul(al9, bl7)), - (mid = Math.imul(al9, bh7)), - (mid = (mid + Math.imul(ah9, bl7)) | 0), - (hi = Math.imul(ah9, bh7)), - (lo = (lo + Math.imul(al8, bl8)) | 0), - (mid = (mid + Math.imul(al8, bh8)) | 0), - (mid = (mid + Math.imul(ah8, bl8)) | 0), - (hi = (hi + Math.imul(ah8, bh8)) | 0), - (lo = (lo + Math.imul(al7, bl9)) | 0), - (mid = (mid + Math.imul(al7, bh9)) | 0), - (mid = (mid + Math.imul(ah7, bl9)) | 0), - (hi = (hi + Math.imul(ah7, bh9)) | 0); - var w16 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0), - (w16 &= 67108863), - (lo = Math.imul(al9, bl8)), - (mid = Math.imul(al9, bh8)), - (mid = (mid + Math.imul(ah9, bl8)) | 0), - (hi = Math.imul(ah9, bh8)), - (lo = (lo + Math.imul(al8, bl9)) | 0), - (mid = (mid + Math.imul(al8, bh9)) | 0), - (mid = (mid + Math.imul(ah8, bl9)) | 0), - (hi = (hi + Math.imul(ah8, bh9)) | 0); - var w17 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0), - (w17 &= 67108863), - (lo = Math.imul(al9, bl9)), - (mid = Math.imul(al9, bh9)), - (mid = (mid + Math.imul(ah9, bl9)) | 0), - (hi = Math.imul(ah9, bh9)); - var w18 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - return ( - (c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0), - (w18 &= 67108863), - (o[0] = w0), - (o[1] = w1), - (o[2] = w2), - (o[3] = w3), - (o[4] = w4), - (o[5] = w5), - (o[6] = w6), - (o[7] = w7), - (o[8] = w8), - (o[9] = w9), - (o[10] = w10), - (o[11] = w11), - (o[12] = w12), - (o[13] = w13), - (o[14] = w14), - (o[15] = w15), - (o[16] = w16), - (o[17] = w17), - (o[18] = w18), - c !== 0 && ((o[19] = c), out.length++), - out - ); - }; - Math.imul || (comb10MulTo = smallMulTo); - function bigMulTo(self2, num, out) { - (out.negative = num.negative ^ self2.negative), (out.length = self2.length + num.length); - for (var carry = 0, hncarry = 0, k = 0; k < out.length - 1; k++) { - var ncarry = hncarry; - hncarry = 0; - for ( - var rword = carry & 67108863, maxJ = Math.min(k, num.length - 1), j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = k - j, - a = self2.words[i] | 0, - b = num.words[j] | 0, - r = a * b, - lo = r & 67108863; - (ncarry = (ncarry + ((r / 67108864) | 0)) | 0), - (lo = (lo + rword) | 0), - (rword = lo & 67108863), - (ncarry = (ncarry + (lo >>> 26)) | 0), - (hncarry += ncarry >>> 26), - (ncarry &= 67108863); - } - (out.words[k] = rword), (carry = ncarry), (ncarry = hncarry); - } - return carry !== 0 ? (out.words[k] = carry) : out.length--, out.strip(); - } - function jumboMulTo(self2, num, out) { - var fftm = new FFTM(); - return fftm.mulp(self2, num, out); - } - BN.prototype.mulTo = function (num, out) { - var res, - len = this.length + num.length; - return ( - this.length === 10 && num.length === 10 - ? (res = comb10MulTo(this, num, out)) - : len < 63 - ? (res = smallMulTo(this, num, out)) - : len < 1024 - ? (res = bigMulTo(this, num, out)) - : (res = jumboMulTo(this, num, out)), - res - ); - }; - function FFTM(x, y) { - (this.x = x), (this.y = y); - } - (FFTM.prototype.makeRBT = function (N) { - for (var t = new Array(N), l = BN.prototype._countBits(N) - 1, i = 0; i < N; i++) t[i] = this.revBin(i, l, N); - return t; - }), - (FFTM.prototype.revBin = function (x, l, N) { - if (x === 0 || x === N - 1) return x; - for (var rb = 0, i = 0; i < l; i++) (rb |= (x & 1) << (l - i - 1)), (x >>= 1); - return rb; - }), - (FFTM.prototype.permute = function (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) (rtws[i] = rws[rbt[i]]), (itws[i] = iws[rbt[i]]); - }), - (FFTM.prototype.transform = function (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - for (var s = 1; s < N; s <<= 1) - for ( - var l = s << 1, rtwdf = Math.cos((2 * Math.PI) / l), itwdf = Math.sin((2 * Math.PI) / l), p = 0; - p < N; - p += l - ) - for (var rtwdf_ = rtwdf, itwdf_ = itwdf, j = 0; j < s; j++) { - var re = rtws[p + j], - ie = itws[p + j], - ro = rtws[p + j + s], - io = itws[p + j + s], - rx = rtwdf_ * ro - itwdf_ * io; - (io = rtwdf_ * io + itwdf_ * ro), - (ro = rx), - (rtws[p + j] = re + ro), - (itws[p + j] = ie + io), - (rtws[p + j + s] = re - ro), - (itws[p + j + s] = ie - io), - j !== l && - ((rx = rtwdf * rtwdf_ - itwdf * itwdf_), (itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_), (rtwdf_ = rx)); - } - }), - (FFTM.prototype.guessLen13b = function (n, m) { - var N = Math.max(m, n) | 1, - odd = N & 1, - i = 0; - for (N = (N / 2) | 0; N; N = N >>> 1) i++; - return 1 << (i + 1 + odd); - }), - (FFTM.prototype.conjugate = function (rws, iws, N) { - if (!(N <= 1)) - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - (rws[i] = rws[N - i - 1]), - (rws[N - i - 1] = t), - (t = iws[i]), - (iws[i] = -iws[N - i - 1]), - (iws[N - i - 1] = -t); - } - }), - (FFTM.prototype.normalize13b = function (ws, N) { - for (var carry = 0, i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; - (ws[i] = w & 67108863), w < 67108864 ? (carry = 0) : (carry = (w / 67108864) | 0); - } - return ws; - }), - (FFTM.prototype.convert13b = function (ws, len, rws, N) { - for (var carry = 0, i = 0; i < len; i++) - (carry = carry + (ws[i] | 0)), - (rws[2 * i] = carry & 8191), - (carry = carry >>> 13), - (rws[2 * i + 1] = carry & 8191), - (carry = carry >>> 13); - for (i = 2 * len; i < N; ++i) rws[i] = 0; - assert(carry === 0), assert((carry & -8192) === 0); - }), - (FFTM.prototype.stub = function (N) { - for (var ph = new Array(N), i = 0; i < N; i++) ph[i] = 0; - return ph; - }), - (FFTM.prototype.mulp = function (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length), - rbt = this.makeRBT(N), - _ = this.stub(N), - rws = new Array(N), - rwst = new Array(N), - iwst = new Array(N), - nrws = new Array(N), - nrwst = new Array(N), - niwst = new Array(N), - rmws = out.words; - (rmws.length = N), - this.convert13b(x.words, x.length, rws, N), - this.convert13b(y.words, y.length, nrws, N), - this.transform(rws, _, rwst, iwst, N, rbt), - this.transform(nrws, _, nrwst, niwst, N, rbt); - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - (iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]), (rwst[i] = rx); - } - return ( - this.conjugate(rwst, iwst, N), - this.transform(rwst, iwst, rmws, _, N, rbt), - this.conjugate(rmws, _, N), - this.normalize13b(rmws, N), - (out.negative = x.negative ^ y.negative), - (out.length = x.length + y.length), - out.strip() - ); - }), - (BN.prototype.mul = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), this.mulTo(num, out); - }), - (BN.prototype.mulf = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), jumboMulTo(this, num, out); - }), - (BN.prototype.imul = function (num) { - return this.clone().mulTo(num, this); - }), - (BN.prototype.imuln = function (num) { - assert(typeof num == "number"), assert(num < 67108864); - for (var carry = 0, i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num, - lo = (w & 67108863) + (carry & 67108863); - (carry >>= 26), (carry += (w / 67108864) | 0), (carry += lo >>> 26), (this.words[i] = lo & 67108863); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.muln = function (num) { - return this.clone().imuln(num); - }), - (BN.prototype.sqr = function () { - return this.mul(this); - }), - (BN.prototype.isqr = function () { - return this.imul(this.clone()); - }), - (BN.prototype.pow = function (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - for (var res = this, i = 0; i < w.length && w[i] === 0; i++, res = res.sqr()); - if (++i < w.length) for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) w[i] !== 0 && (res = res.mul(q)); - return res; - }), - (BN.prototype.iushln = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26, - carryMask = (67108863 >>> (26 - r)) << (26 - r), - i; - if (r !== 0) { - var carry = 0; - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask, - c = ((this.words[i] | 0) - newCarry) << r; - (this.words[i] = c | carry), (carry = newCarry >>> (26 - r)); - } - carry && ((this.words[i] = carry), this.length++); - } - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) this.words[i + s] = this.words[i]; - for (i = 0; i < s; i++) this.words[i] = 0; - this.length += s; - } - return this.strip(); - }), - (BN.prototype.ishln = function (bits) { - return assert(this.negative === 0), this.iushln(bits); - }), - (BN.prototype.iushrn = function (bits, hint, extended) { - assert(typeof bits == "number" && bits >= 0); - var h; - hint ? (h = (hint - (hint % 26)) / 26) : (h = 0); - var r = bits % 26, - s = Math.min((bits - r) / 26, this.length), - mask = 67108863 ^ ((67108863 >>> r) << r), - maskedWords = extended; - if (((h -= s), (h = Math.max(0, h)), maskedWords)) { - for (var i = 0; i < s; i++) maskedWords.words[i] = this.words[i]; - maskedWords.length = s; - } - if (s !== 0) - if (this.length > s) for (this.length -= s, i = 0; i < this.length; i++) this.words[i] = this.words[i + s]; - else (this.words[0] = 0), (this.length = 1); - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - (this.words[i] = (carry << (26 - r)) | (word >>> r)), (carry = word & mask); - } - return ( - maskedWords && carry !== 0 && (maskedWords.words[maskedWords.length++] = carry), - this.length === 0 && ((this.words[0] = 0), (this.length = 1)), - this.strip() - ); - }), - (BN.prototype.ishrn = function (bits, hint, extended) { - return assert(this.negative === 0), this.iushrn(bits, hint, extended); - }), - (BN.prototype.shln = function (bits) { - return this.clone().ishln(bits); - }), - (BN.prototype.ushln = function (bits) { - return this.clone().iushln(bits); - }), - (BN.prototype.shrn = function (bits) { - return this.clone().ishrn(bits); - }), - (BN.prototype.ushrn = function (bits) { - return this.clone().iushrn(bits); - }), - (BN.prototype.testn = function (bit) { - assert(typeof bit == "number" && bit >= 0); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return !1; - var w = this.words[s]; - return !!(w & q); - }), - (BN.prototype.imaskn = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26; - if ((assert(this.negative === 0, "imaskn works only with positive numbers"), this.length <= s)) return this; - if ((r !== 0 && s++, (this.length = Math.min(s, this.length)), r !== 0)) { - var mask = 67108863 ^ ((67108863 >>> r) << r); - this.words[this.length - 1] &= mask; - } - return this.strip(); - }), - (BN.prototype.maskn = function (bits) { - return this.clone().imaskn(bits); - }), - (BN.prototype.iaddn = function (num) { - return ( - assert(typeof num == "number"), - assert(num < 67108864), - num < 0 - ? this.isubn(-num) - : this.negative !== 0 - ? this.length === 1 && (this.words[0] | 0) < num - ? ((this.words[0] = num - (this.words[0] | 0)), (this.negative = 0), this) - : ((this.negative = 0), this.isubn(num), (this.negative = 1), this) - : this._iaddn(num) - ); - }), - (BN.prototype._iaddn = function (num) { - this.words[0] += num; - for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) - (this.words[i] -= 67108864), i === this.length - 1 ? (this.words[i + 1] = 1) : this.words[i + 1]++; - return (this.length = Math.max(this.length, i + 1)), this; - }), - (BN.prototype.isubn = function (num) { - if ((assert(typeof num == "number"), assert(num < 67108864), num < 0)) return this.iaddn(-num); - if (this.negative !== 0) return (this.negative = 0), this.iaddn(num), (this.negative = 1), this; - if (((this.words[0] -= num), this.length === 1 && this.words[0] < 0)) - (this.words[0] = -this.words[0]), (this.negative = 1); - else - for (var i = 0; i < this.length && this.words[i] < 0; i++) - (this.words[i] += 67108864), (this.words[i + 1] -= 1); - return this.strip(); - }), - (BN.prototype.addn = function (num) { - return this.clone().iaddn(num); - }), - (BN.prototype.subn = function (num) { - return this.clone().isubn(num); - }), - (BN.prototype.iabs = function () { - return (this.negative = 0), this; - }), - (BN.prototype.abs = function () { - return this.clone().iabs(); - }), - (BN.prototype._ishlnsubmul = function (num, mul, shift) { - var len = num.length + shift, - i; - this._expand(len); - var w, - carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - (w -= right & 67108863), - (carry = (w >> 26) - ((right / 67108864) | 0)), - (this.words[i + shift] = w & 67108863); - } - for (; i < this.length - shift; i++) - (w = (this.words[i + shift] | 0) + carry), (carry = w >> 26), (this.words[i + shift] = w & 67108863); - if (carry === 0) return this.strip(); - for (assert(carry === -1), carry = 0, i = 0; i < this.length; i++) - (w = -(this.words[i] | 0) + carry), (carry = w >> 26), (this.words[i] = w & 67108863); - return (this.negative = 1), this.strip(); - }), - (BN.prototype._wordDiv = function (num, mode) { - var shift = this.length - num.length, - a = this.clone(), - b = num, - bhi = b.words[b.length - 1] | 0, - bhiBits = this._countBits(bhi); - (shift = 26 - bhiBits), - shift !== 0 && ((b = b.ushln(shift)), a.iushln(shift), (bhi = b.words[b.length - 1] | 0)); - var m = a.length - b.length, - q; - if (mode !== "mod") { - (q = new BN(null)), (q.length = m + 1), (q.words = new Array(q.length)); - for (var i = 0; i < q.length; i++) q.words[i] = 0; - } - var diff = a.clone()._ishlnsubmul(b, 1, m); - diff.negative === 0 && ((a = diff), q && (q.words[m] = 1)); - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); - for (qj = Math.min((qj / bhi) | 0, 67108863), a._ishlnsubmul(b, qj, j); a.negative !== 0; ) - qj--, (a.negative = 0), a._ishlnsubmul(b, 1, j), a.isZero() || (a.negative ^= 1); - q && (q.words[j] = qj); - } - return ( - q && q.strip(), - a.strip(), - mode !== "div" && shift !== 0 && a.iushrn(shift), - { - div: q || null, - mod: a, - } - ); - }), - (BN.prototype.divmod = function (num, mode, positive) { - if ((assert(!num.isZero()), this.isZero())) - return { - div: new BN(0), - mod: new BN(0), - }; - var div, mod, res; - return this.negative !== 0 && num.negative === 0 - ? ((res = this.neg().divmod(num, mode)), - mode !== "mod" && (div = res.div.neg()), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.iadd(num)), - { - div, - mod, - }) - : this.negative === 0 && num.negative !== 0 - ? ((res = this.divmod(num.neg(), mode)), - mode !== "mod" && (div = res.div.neg()), - { - div, - mod: res.mod, - }) - : (this.negative & num.negative) !== 0 - ? ((res = this.neg().divmod(num.neg(), mode)), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.isub(num)), - { - div: res.div, - mod, - }) - : num.length > this.length || this.cmp(num) < 0 - ? { - div: new BN(0), - mod: this, - } - : num.length === 1 - ? mode === "div" - ? { - div: this.divn(num.words[0]), - mod: null, - } - : mode === "mod" - ? { - div: null, - mod: new BN(this.modn(num.words[0])), - } - : { - div: this.divn(num.words[0]), - mod: new BN(this.modn(num.words[0])), - } - : this._wordDiv(num, mode); - }), - (BN.prototype.div = function (num) { - return this.divmod(num, "div", !1).div; - }), - (BN.prototype.mod = function (num) { - return this.divmod(num, "mod", !1).mod; - }), - (BN.prototype.umod = function (num) { - return this.divmod(num, "mod", !0).mod; - }), - (BN.prototype.divRound = function (num) { - var dm = this.divmod(num); - if (dm.mod.isZero()) return dm.div; - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod, - half = num.ushrn(1), - r2 = num.andln(1), - cmp = mod.cmp(half); - return cmp < 0 || (r2 === 1 && cmp === 0) - ? dm.div - : dm.div.negative !== 0 - ? dm.div.isubn(1) - : dm.div.iaddn(1); - }), - (BN.prototype.modn = function (num) { - assert(num <= 67108863); - for (var p = (1 << 26) % num, acc = 0, i = this.length - 1; i >= 0; i--) - acc = (p * acc + (this.words[i] | 0)) % num; - return acc; - }), - (BN.prototype.idivn = function (num) { - assert(num <= 67108863); - for (var carry = 0, i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 67108864; - (this.words[i] = (w / num) | 0), (carry = w % num); - } - return this.strip(); - }), - (BN.prototype.divn = function (num) { - return this.clone().idivn(num); - }), - (BN.prototype.egcd = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var x = this, - y = p.clone(); - x.negative !== 0 ? (x = x.umod(p)) : (x = x.clone()); - for (var A = new BN(1), B = new BN(0), C = new BN(0), D = new BN(1), g = 0; x.isEven() && y.isEven(); ) - x.iushrn(1), y.iushrn(1), ++g; - for (var yp = y.clone(), xp = x.clone(); !x.isZero(); ) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) - for (x.iushrn(i); i-- > 0; ) - (A.isOdd() || B.isOdd()) && (A.iadd(yp), B.isub(xp)), A.iushrn(1), B.iushrn(1); - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) - for (y.iushrn(j); j-- > 0; ) - (C.isOdd() || D.isOdd()) && (C.iadd(yp), D.isub(xp)), C.iushrn(1), D.iushrn(1); - x.cmp(y) >= 0 ? (x.isub(y), A.isub(C), B.isub(D)) : (y.isub(x), C.isub(A), D.isub(B)); - } - return { - a: C, - b: D, - gcd: y.iushln(g), - }; - }), - (BN.prototype._invmp = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var a = this, - b = p.clone(); - a.negative !== 0 ? (a = a.umod(p)) : (a = a.clone()); - for (var x1 = new BN(1), x2 = new BN(0), delta = b.clone(); a.cmpn(1) > 0 && b.cmpn(1) > 0; ) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) for (a.iushrn(i); i-- > 0; ) x1.isOdd() && x1.iadd(delta), x1.iushrn(1); - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) for (b.iushrn(j); j-- > 0; ) x2.isOdd() && x2.iadd(delta), x2.iushrn(1); - a.cmp(b) >= 0 ? (a.isub(b), x1.isub(x2)) : (b.isub(a), x2.isub(x1)); - } - var res; - return a.cmpn(1) === 0 ? (res = x1) : (res = x2), res.cmpn(0) < 0 && res.iadd(p), res; - }), - (BN.prototype.gcd = function (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - var a = this.clone(), - b = num.clone(); - (a.negative = 0), (b.negative = 0); - for (var shift = 0; a.isEven() && b.isEven(); shift++) a.iushrn(1), b.iushrn(1); - do { - for (; a.isEven(); ) a.iushrn(1); - for (; b.isEven(); ) b.iushrn(1); - var r = a.cmp(b); - if (r < 0) { - var t = a; - (a = b), (b = t); - } else if (r === 0 || b.cmpn(1) === 0) break; - a.isub(b); - } while (!0); - return b.iushln(shift); - }), - (BN.prototype.invm = function (num) { - return this.egcd(num).a.umod(num); - }), - (BN.prototype.isEven = function () { - return (this.words[0] & 1) === 0; - }), - (BN.prototype.isOdd = function () { - return (this.words[0] & 1) === 1; - }), - (BN.prototype.andln = function (num) { - return this.words[0] & num; - }), - (BN.prototype.bincn = function (bit) { - assert(typeof bit == "number"); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return this._expand(s + 1), (this.words[s] |= q), this; - for (var carry = q, i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - (w += carry), (carry = w >>> 26), (w &= 67108863), (this.words[i] = w); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.isZero = function () { - return this.length === 1 && this.words[0] === 0; - }), - (BN.prototype.cmpn = function (num) { - var negative = num < 0; - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - this.strip(); - var res; - if (this.length > 1) res = 1; - else { - negative && (num = -num), assert(num <= 67108863, "Number is too big"); - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.cmp = function (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - var res = this.ucmp(num); - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.ucmp = function (num) { - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - for (var res = 0, i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0, - b = num.words[i] | 0; - if (a !== b) { - a < b ? (res = -1) : a > b && (res = 1); - break; - } - } - return res; - }), - (BN.prototype.gtn = function (num) { - return this.cmpn(num) === 1; - }), - (BN.prototype.gt = function (num) { - return this.cmp(num) === 1; - }), - (BN.prototype.gten = function (num) { - return this.cmpn(num) >= 0; - }), - (BN.prototype.gte = function (num) { - return this.cmp(num) >= 0; - }), - (BN.prototype.ltn = function (num) { - return this.cmpn(num) === -1; - }), - (BN.prototype.lt = function (num) { - return this.cmp(num) === -1; - }), - (BN.prototype.lten = function (num) { - return this.cmpn(num) <= 0; - }), - (BN.prototype.lte = function (num) { - return this.cmp(num) <= 0; - }), - (BN.prototype.eqn = function (num) { - return this.cmpn(num) === 0; - }), - (BN.prototype.eq = function (num) { - return this.cmp(num) === 0; - }), - (BN.red = function (num) { - return new Red(num); - }), - (BN.prototype.toRed = function (ctx) { - return ( - assert(!this.red, "Already a number in reduction context"), - assert(this.negative === 0, "red works only with positives"), - ctx.convertTo(this)._forceRed(ctx) - ); - }), - (BN.prototype.fromRed = function () { - return assert(this.red, "fromRed works only with numbers in reduction context"), this.red.convertFrom(this); - }), - (BN.prototype._forceRed = function (ctx) { - return (this.red = ctx), this; - }), - (BN.prototype.forceRed = function (ctx) { - return assert(!this.red, "Already a number in reduction context"), this._forceRed(ctx); - }), - (BN.prototype.redAdd = function (num) { - return assert(this.red, "redAdd works only with red numbers"), this.red.add(this, num); - }), - (BN.prototype.redIAdd = function (num) { - return assert(this.red, "redIAdd works only with red numbers"), this.red.iadd(this, num); - }), - (BN.prototype.redSub = function (num) { - return assert(this.red, "redSub works only with red numbers"), this.red.sub(this, num); - }), - (BN.prototype.redISub = function (num) { - return assert(this.red, "redISub works only with red numbers"), this.red.isub(this, num); - }), - (BN.prototype.redShl = function (num) { - return assert(this.red, "redShl works only with red numbers"), this.red.shl(this, num); - }), - (BN.prototype.redMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.mul(this, num) - ); - }), - (BN.prototype.redIMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.imul(this, num) - ); - }), - (BN.prototype.redSqr = function () { - return assert(this.red, "redSqr works only with red numbers"), this.red._verify1(this), this.red.sqr(this); - }), - (BN.prototype.redISqr = function () { - return assert(this.red, "redISqr works only with red numbers"), this.red._verify1(this), this.red.isqr(this); - }), - (BN.prototype.redSqrt = function () { - return assert(this.red, "redSqrt works only with red numbers"), this.red._verify1(this), this.red.sqrt(this); - }), - (BN.prototype.redInvm = function () { - return assert(this.red, "redInvm works only with red numbers"), this.red._verify1(this), this.red.invm(this); - }), - (BN.prototype.redNeg = function () { - return assert(this.red, "redNeg works only with red numbers"), this.red._verify1(this), this.red.neg(this); - }), - (BN.prototype.redPow = function (num) { - return assert(this.red && !num.red, "redPow(normalNum)"), this.red._verify1(this), this.red.pow(this, num); - }); - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null, - }; - function MPrime(name, p) { - (this.name = name), - (this.p = new BN(p, 16)), - (this.n = this.p.bitLength()), - (this.k = new BN(1).iushln(this.n).isub(this.p)), - (this.tmp = this._tmp()); - } - (MPrime.prototype._tmp = function () { - var tmp = new BN(null); - return (tmp.words = new Array(Math.ceil(this.n / 13))), tmp; - }), - (MPrime.prototype.ireduce = function (num) { - var r = num, - rlen; - do this.split(r, this.tmp), (r = this.imulK(r)), (r = r.iadd(this.tmp)), (rlen = r.bitLength()); - while (rlen > this.n); - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - return ( - cmp === 0 - ? ((r.words[0] = 0), (r.length = 1)) - : cmp > 0 - ? r.isub(this.p) - : r.strip !== void 0 - ? r.strip() - : r._strip(), - r - ); - }), - (MPrime.prototype.split = function (input, out) { - input.iushrn(this.n, 0, out); - }), - (MPrime.prototype.imulK = function (num) { - return num.imul(this.k); - }); - function K256() { - MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f"); - } - inherits(K256, MPrime), - (K256.prototype.split = function (input, output) { - for (var mask = 4194303, outLen = Math.min(input.length, 9), i = 0; i < outLen; i++) - output.words[i] = input.words[i]; - if (((output.length = outLen), input.length <= 9)) { - (input.words[0] = 0), (input.length = 1); - return; - } - var prev = input.words[9]; - for (output.words[output.length++] = prev & mask, i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - (input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22)), (prev = next); - } - (prev >>>= 22), - (input.words[i - 10] = prev), - prev === 0 && input.length > 10 ? (input.length -= 10) : (input.length -= 9); - }), - (K256.prototype.imulK = function (num) { - (num.words[num.length] = 0), (num.words[num.length + 1] = 0), (num.length += 2); - for (var lo = 0, i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - (lo += w * 977), (num.words[i] = lo & 67108863), (lo = w * 64 + ((lo / 67108864) | 0)); - } - return ( - num.words[num.length - 1] === 0 && (num.length--, num.words[num.length - 1] === 0 && num.length--), num - ); - }); - function P224() { - MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001"); - } - inherits(P224, MPrime); - function P192() { - MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff"); - } - inherits(P192, MPrime); - function P25519() { - MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed"); - } - inherits(P25519, MPrime), - (P25519.prototype.imulK = function (num) { - for (var carry = 0, i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 19 + carry, - lo = hi & 67108863; - (hi >>>= 26), (num.words[i] = lo), (carry = hi); - } - return carry !== 0 && (num.words[num.length++] = carry), num; - }), - (BN._prime = function (name) { - if (primes[name]) return primes[name]; - var prime2; - if (name === "k256") prime2 = new K256(); - else if (name === "p224") prime2 = new P224(); - else if (name === "p192") prime2 = new P192(); - else if (name === "p25519") prime2 = new P25519(); - else throw new Error("Unknown prime " + name); - return (primes[name] = prime2), prime2; - }); - function Red(m) { - if (typeof m == "string") { - var prime = BN._prime(m); - (this.m = prime.p), (this.prime = prime); - } else assert(m.gtn(1), "modulus must be greater than 1"), (this.m = m), (this.prime = null); - } - (Red.prototype._verify1 = function (a) { - assert(a.negative === 0, "red works only with positives"), assert(a.red, "red works only with red numbers"); - }), - (Red.prototype._verify2 = function (a, b) { - assert((a.negative | b.negative) === 0, "red works only with positives"), - assert(a.red && a.red === b.red, "red works only with red numbers"); - }), - (Red.prototype.imod = function (a) { - return this.prime ? this.prime.ireduce(a)._forceRed(this) : a.umod(this.m)._forceRed(this); - }), - (Red.prototype.neg = function (a) { - return a.isZero() ? a.clone() : this.m.sub(a)._forceRed(this); - }), - (Red.prototype.add = function (a, b) { - this._verify2(a, b); - var res = a.add(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res._forceRed(this); - }), - (Red.prototype.iadd = function (a, b) { - this._verify2(a, b); - var res = a.iadd(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res; - }), - (Red.prototype.sub = function (a, b) { - this._verify2(a, b); - var res = a.sub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res._forceRed(this); - }), - (Red.prototype.isub = function (a, b) { - this._verify2(a, b); - var res = a.isub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res; - }), - (Red.prototype.shl = function (a, num) { - return this._verify1(a), this.imod(a.ushln(num)); - }), - (Red.prototype.imul = function (a, b) { - return this._verify2(a, b), this.imod(a.imul(b)); - }), - (Red.prototype.mul = function (a, b) { - return this._verify2(a, b), this.imod(a.mul(b)); - }), - (Red.prototype.isqr = function (a) { - return this.imul(a, a.clone()); - }), - (Red.prototype.sqr = function (a) { - return this.mul(a, a); - }), - (Red.prototype.sqrt = function (a) { - if (a.isZero()) return a.clone(); - var mod3 = this.m.andln(3); - if ((assert(mod3 % 2 === 1), mod3 === 3)) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - for (var q = this.m.subn(1), s = 0; !q.isZero() && q.andln(1) === 0; ) s++, q.iushrn(1); - assert(!q.isZero()); - var one = new BN(1).toRed(this), - nOne = one.redNeg(), - lpow = this.m.subn(1).iushrn(1), - z = this.m.bitLength(); - for (z = new BN(2 * z * z).toRed(this); this.pow(z, lpow).cmp(nOne) !== 0; ) z.redIAdd(nOne); - for ( - var c = this.pow(z, q), r = this.pow(a, q.addn(1).iushrn(1)), t = this.pow(a, q), m = s; - t.cmp(one) !== 0; - - ) { - for (var tmp = t, i = 0; tmp.cmp(one) !== 0; i++) tmp = tmp.redSqr(); - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - (r = r.redMul(b)), (c = b.redSqr()), (t = t.redMul(c)), (m = i); - } - return r; - }), - (Red.prototype.invm = function (a) { - var inv = a._invmp(this.m); - return inv.negative !== 0 ? ((inv.negative = 0), this.imod(inv).redNeg()) : this.imod(inv); - }), - (Red.prototype.pow = function (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - var windowSize = 4, - wnd = new Array(1 << windowSize); - (wnd[0] = new BN(1).toRed(this)), (wnd[1] = a); - for (var i = 2; i < wnd.length; i++) wnd[i] = this.mul(wnd[i - 1], a); - var res = wnd[0], - current = 0, - currentLen = 0, - start = num.bitLength() % 26; - for (start === 0 && (start = 26), i = num.length - 1; i >= 0; i--) { - for (var word = num.words[i], j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if ((res !== wnd[0] && (res = this.sqr(res)), bit === 0 && current === 0)) { - currentLen = 0; - continue; - } - (current <<= 1), - (current |= bit), - currentLen++, - !(currentLen !== windowSize && (i !== 0 || j !== 0)) && - ((res = this.mul(res, wnd[current])), (currentLen = 0), (current = 0)); - } - start = 26; - } - return res; - }), - (Red.prototype.convertTo = function (num) { - var r = num.umod(this.m); - return r === num ? r.clone() : r; - }), - (Red.prototype.convertFrom = function (num) { - var res = num.clone(); - return (res.red = null), res; - }), - (BN.mont = function (num) { - return new Mont(num); - }); - function Mont(m) { - Red.call(this, m), - (this.shift = this.m.bitLength()), - this.shift % 26 !== 0 && (this.shift += 26 - (this.shift % 26)), - (this.r = new BN(1).iushln(this.shift)), - (this.r2 = this.imod(this.r.sqr())), - (this.rinv = this.r._invmp(this.m)), - (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), - (this.minv = this.minv.umod(this.r)), - (this.minv = this.r.sub(this.minv)); - } - inherits(Mont, Red), - (Mont.prototype.convertTo = function (num) { - return this.imod(num.ushln(this.shift)); - }), - (Mont.prototype.convertFrom = function (num) { - var r = this.imod(num.mul(this.rinv)); - return (r.red = null), r; - }), - (Mont.prototype.imul = function (a, b) { - if (a.isZero() || b.isZero()) return (a.words[0] = 0), (a.length = 1), a; - var t = a.imul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.mul = function (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - var t = a.mul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.invm = function (a) { - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }); - })(typeof module > "u" || module, exports); - }, -}); - -// node_modules/create-ecdh/browser.js -var require_browser9 = __commonJS({ - "node_modules/create-ecdh/browser.js"(exports, module) { - var elliptic = require_elliptic(), - BN = require_bn6(); - module.exports = function (curve) { - return new ECDH(curve); - }; - var aliases = { - secp256k1: { - name: "secp256k1", - byteLength: 32, - }, - secp224r1: { - name: "p224", - byteLength: 28, - }, - prime256v1: { - name: "p256", - byteLength: 32, - }, - prime192v1: { - name: "p192", - byteLength: 24, - }, - ed25519: { - name: "ed25519", - byteLength: 32, - }, - secp384r1: { - name: "p384", - byteLength: 48, - }, - secp521r1: { - name: "p521", - byteLength: 66, - }, - }; - aliases.p224 = aliases.secp224r1; - aliases.p256 = aliases.secp256r1 = aliases.prime256v1; - aliases.p192 = aliases.secp192r1 = aliases.prime192v1; - aliases.p384 = aliases.secp384r1; - aliases.p521 = aliases.secp521r1; - function ECDH(curve) { - (this.curveType = aliases[curve]), - this.curveType || - (this.curveType = { - name: curve, - }), - (this.curve = new elliptic.ec(this.curveType.name)), - (this.keys = void 0); - } - ECDH.prototype.generateKeys = function (enc, format) { - return (this.keys = this.curve.genKeyPair()), this.getPublicKey(enc, format); - }; - ECDH.prototype.computeSecret = function (other, inenc, enc) { - (inenc = inenc || "utf8"), Buffer.isBuffer(other) || (other = new Buffer(other, inenc)); - var otherPub = this.curve.keyFromPublic(other).getPublic(), - out = otherPub.mul(this.keys.getPrivate()).getX(); - return formatReturnValue(out, enc, this.curveType.byteLength); - }; - ECDH.prototype.getPublicKey = function (enc, format) { - var key = this.keys.getPublic(format === "compressed", !0); - return ( - format === "hybrid" && (key[key.length - 1] % 2 ? (key[0] = 7) : (key[0] = 6)), formatReturnValue(key, enc) - ); - }; - ECDH.prototype.getPrivateKey = function (enc) { - return formatReturnValue(this.keys.getPrivate(), enc); - }; - ECDH.prototype.setPublicKey = function (pub, enc) { - return ( - (enc = enc || "utf8"), Buffer.isBuffer(pub) || (pub = new Buffer(pub, enc)), this.keys._importPublic(pub), this - ); - }; - ECDH.prototype.setPrivateKey = function (priv, enc) { - (enc = enc || "utf8"), Buffer.isBuffer(priv) || (priv = new Buffer(priv, enc)); - var _priv = new BN(priv); - return (_priv = _priv.toString(16)), (this.keys = this.curve.genKeyPair()), this.keys._importPrivate(_priv), this; - }; - function formatReturnValue(bn, enc, len) { - Array.isArray(bn) || (bn = bn.toArray()); - var buf = new Buffer(bn); - if (len && buf.length < len) { - var zeros = new Buffer(len - buf.length); - zeros.fill(0), (buf = Buffer.concat([zeros, buf])); - } - return enc ? buf.toString(enc) : buf; - } - }, -}); - -// node_modules/public-encrypt/mgf.js -var require_mgf = __commonJS({ - "node_modules/public-encrypt/mgf.js"(exports, module) { - var createHash = require_browser2(), - Buffer2 = require_safe_buffer().Buffer; - module.exports = function (seed, len) { - for (var t = Buffer2.alloc(0), i = 0, c; t.length < len; ) - (c = i2ops(i++)), (t = Buffer2.concat([t, createHash("sha1").update(seed).update(c).digest()])); - return t.slice(0, len); - }; - function i2ops(c) { - var out = Buffer2.allocUnsafe(4); - return out.writeUInt32BE(c, 0), out; - } - }, -}); - -// node_modules/public-encrypt/xor.js -var require_xor = __commonJS({ - "node_modules/public-encrypt/xor.js"(exports, module) { - module.exports = function (a, b) { - for (var len = a.length, i = -1; ++i < len; ) a[i] ^= b[i]; - return a; - }; - }, -}); - -// node_modules/public-encrypt/node_modules/bn.js/lib/bn.js -var require_bn7 = __commonJS({ - "node_modules/public-encrypt/node_modules/bn.js/lib/bn.js"(exports, module) { - (function (module2, exports2) { - "use strict"; - function assert(val, msg) { - if (!val) throw new Error(msg || "Assertion failed"); - } - function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - (TempCtor.prototype = superCtor.prototype), - (ctor.prototype = new TempCtor()), - (ctor.prototype.constructor = ctor); - } - function BN(number, base, endian) { - if (BN.isBN(number)) return number; - (this.negative = 0), - (this.words = null), - (this.length = 0), - (this.red = null), - number !== null && - ((base === "le" || base === "be") && ((endian = base), (base = 10)), - this._init(number || 0, base || 10, endian || "be")); - } - typeof module2 == "object" ? (module2.exports = BN) : (exports2.BN = BN), (BN.BN = BN), (BN.wordSize = 26); - var Buffer2 = globalThis.Buffer; - (BN.isBN = function (num) { - return num instanceof BN - ? !0 - : num !== null && - typeof num == "object" && - num.constructor.wordSize === BN.wordSize && - Array.isArray(num.words); - }), - (BN.max = function (left, right) { - return left.cmp(right) > 0 ? left : right; - }), - (BN.min = function (left, right) { - return left.cmp(right) < 0 ? left : right; - }), - (BN.prototype._init = function (number, base, endian) { - if (typeof number == "number") return this._initNumber(number, base, endian); - if (typeof number == "object") return this._initArray(number, base, endian); - base === "hex" && (base = 16), - assert(base === (base | 0) && base >= 2 && base <= 36), - (number = number.toString().replace(/\s+/g, "")); - var start = 0; - number[0] === "-" && (start++, (this.negative = 1)), - start < number.length && - (base === 16 - ? this._parseHex(number, start, endian) - : (this._parseBase(number, base, start), - endian === "le" && this._initArray(this.toArray(), base, endian))); - }), - (BN.prototype._initNumber = function (number, base, endian) { - number < 0 && ((this.negative = 1), (number = -number)), - number < 67108864 - ? ((this.words = [number & 67108863]), (this.length = 1)) - : number < 4503599627370496 - ? ((this.words = [number & 67108863, (number / 67108864) & 67108863]), (this.length = 2)) - : (assert(number < 9007199254740992), - (this.words = [number & 67108863, (number / 67108864) & 67108863, 1]), - (this.length = 3)), - endian === "le" && this._initArray(this.toArray(), base, endian); - }), - (BN.prototype._initArray = function (number, base, endian) { - if ((assert(typeof number.length == "number"), number.length <= 0)) - return (this.words = [0]), (this.length = 1), this; - (this.length = Math.ceil(number.length / 3)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var j, - w, - off = 0; - if (endian === "be") - for (i = number.length - 1, j = 0; i >= 0; i -= 3) - (w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - else if (endian === "le") - for (i = 0, j = 0; i < number.length; i += 3) - (w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16)), - (this.words[j] |= (w << off) & 67108863), - (this.words[j + 1] = (w >>> (26 - off)) & 67108863), - (off += 24), - off >= 26 && ((off -= 26), j++); - return this.strip(); - }); - function parseHex4Bits(string, index) { - var c = string.charCodeAt(index); - return c >= 65 && c <= 70 ? c - 55 : c >= 97 && c <= 102 ? c - 87 : (c - 48) & 15; - } - function parseHexByte(string, lowerBound, index) { - var r = parseHex4Bits(string, index); - return index - 1 >= lowerBound && (r |= parseHex4Bits(string, index - 1) << 4), r; - } - BN.prototype._parseHex = function (number, start, endian) { - (this.length = Math.ceil((number.length - start) / 6)), (this.words = new Array(this.length)); - for (var i = 0; i < this.length; i++) this.words[i] = 0; - var off = 0, - j = 0, - w; - if (endian === "be") - for (i = number.length - 1; i >= start; i -= 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - else { - var parseLength = number.length - start; - for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) - (w = parseHexByte(number, start, i) << off), - (this.words[j] |= w & 67108863), - off >= 18 ? ((off -= 18), (j += 1), (this.words[j] |= w >>> 26)) : (off += 8); - } - this.strip(); - }; - function parseBase(str, start, end, mul) { - for (var r = 0, len = Math.min(str.length, end), i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - (r *= mul), c >= 49 ? (r += c - 49 + 10) : c >= 17 ? (r += c - 17 + 10) : (r += c); - } - return r; - } - (BN.prototype._parseBase = function (number, base, start) { - (this.words = [0]), (this.length = 1); - for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) limbLen++; - limbLen--, (limbPow = (limbPow / base) | 0); - for ( - var total = number.length - start, - mod = total % limbLen, - end = Math.min(total, total - mod) + start, - word = 0, - i = start; - i < end; - i += limbLen - ) - (word = parseBase(number, i, i + limbLen, base)), - this.imuln(limbPow), - this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - if (mod !== 0) { - var pow = 1; - for (word = parseBase(number, i, number.length, base), i = 0; i < mod; i++) pow *= base; - this.imuln(pow), this.words[0] + word < 67108864 ? (this.words[0] += word) : this._iaddn(word); - } - this.strip(); - }), - (BN.prototype.copy = function (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) dest.words[i] = this.words[i]; - (dest.length = this.length), (dest.negative = this.negative), (dest.red = this.red); - }), - (BN.prototype.clone = function () { - var r = new BN(null); - return this.copy(r), r; - }), - (BN.prototype._expand = function (size) { - for (; this.length < size; ) this.words[this.length++] = 0; - return this; - }), - (BN.prototype.strip = function () { - for (; this.length > 1 && this.words[this.length - 1] === 0; ) this.length--; - return this._normSign(); - }), - (BN.prototype._normSign = function () { - return this.length === 1 && this.words[0] === 0 && (this.negative = 0), this; - }), - (BN.prototype.inspect = function () { - return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">"; - }); - var zeros = [ - "", - "0", - "00", - "000", - "0000", - "00000", - "000000", - "0000000", - "00000000", - "000000000", - "0000000000", - "00000000000", - "000000000000", - "0000000000000", - "00000000000000", - "000000000000000", - "0000000000000000", - "00000000000000000", - "000000000000000000", - "0000000000000000000", - "00000000000000000000", - "000000000000000000000", - "0000000000000000000000", - "00000000000000000000000", - "000000000000000000000000", - "0000000000000000000000000", - ], - groupSizes = [ - 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, - ], - groupBases = [ - 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, - 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, - 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, - 60466176, - ]; - (BN.prototype.toString = function (base, padding) { - (base = base || 10), (padding = padding | 0 || 1); - var out; - if (base === 16 || base === "hex") { - out = ""; - for (var off = 0, carry = 0, i = 0; i < this.length; i++) { - var w = this.words[i], - word = (((w << off) | carry) & 16777215).toString(16); - (carry = (w >>> (24 - off)) & 16777215), - carry !== 0 || i !== this.length - 1 ? (out = zeros[6 - word.length] + word + out) : (out = word + out), - (off += 2), - off >= 26 && ((off -= 26), i--); - } - for (carry !== 0 && (out = carry.toString(16) + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - if (base === (base | 0) && base >= 2 && base <= 36) { - var groupSize = groupSizes[base], - groupBase = groupBases[base]; - out = ""; - var c = this.clone(); - for (c.negative = 0; !c.isZero(); ) { - var r = c.modn(groupBase).toString(base); - (c = c.idivn(groupBase)), c.isZero() ? (out = r + out) : (out = zeros[groupSize - r.length] + r + out); - } - for (this.isZero() && (out = "0" + out); out.length % padding !== 0; ) out = "0" + out; - return this.negative !== 0 && (out = "-" + out), out; - } - assert(!1, "Base should be between 2 and 36"); - }), - (BN.prototype.toNumber = function () { - var ret = this.words[0]; - return ( - this.length === 2 - ? (ret += this.words[1] * 67108864) - : this.length === 3 && this.words[2] === 1 - ? (ret += 4503599627370496 + this.words[1] * 67108864) - : this.length > 2 && assert(!1, "Number can only safely store up to 53 bits"), - this.negative !== 0 ? -ret : ret - ); - }), - (BN.prototype.toJSON = function () { - return this.toString(16); - }), - (BN.prototype.toBuffer = function (endian, length) { - return assert(typeof Buffer2 < "u"), this.toArrayLike(Buffer2, endian, length); - }), - (BN.prototype.toArray = function (endian, length) { - return this.toArrayLike(Array, endian, length); - }), - (BN.prototype.toArrayLike = function (ArrayType, endian, length) { - var byteLength = this.byteLength(), - reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, "byte array longer than desired length"), - assert(reqLength > 0, "Requested array length <= 0"), - this.strip(); - var littleEndian = endian === "le", - res = new ArrayType(reqLength), - b, - i, - q = this.clone(); - if (littleEndian) { - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[i] = b); - for (; i < reqLength; i++) res[i] = 0; - } else { - for (i = 0; i < reqLength - byteLength; i++) res[i] = 0; - for (i = 0; !q.isZero(); i++) (b = q.andln(255)), q.iushrn(8), (res[reqLength - i - 1] = b); - } - return res; - }), - Math.clz32 - ? (BN.prototype._countBits = function (w) { - return 32 - Math.clz32(w); - }) - : (BN.prototype._countBits = function (w) { - var t = w, - r = 0; - return ( - t >= 4096 && ((r += 13), (t >>>= 13)), - t >= 64 && ((r += 7), (t >>>= 7)), - t >= 8 && ((r += 4), (t >>>= 4)), - t >= 2 && ((r += 2), (t >>>= 2)), - r + t - ); - }), - (BN.prototype._zeroBits = function (w) { - if (w === 0) return 26; - var t = w, - r = 0; - return ( - (t & 8191) === 0 && ((r += 13), (t >>>= 13)), - (t & 127) === 0 && ((r += 7), (t >>>= 7)), - (t & 15) === 0 && ((r += 4), (t >>>= 4)), - (t & 3) === 0 && ((r += 2), (t >>>= 2)), - (t & 1) === 0 && r++, - r - ); - }), - (BN.prototype.bitLength = function () { - var w = this.words[this.length - 1], - hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }); - function toBitArray(num) { - for (var w = new Array(num.bitLength()), bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0, - wbit = bit % 26; - w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; - } - return w; - } - (BN.prototype.zeroBits = function () { - if (this.isZero()) return 0; - for (var r = 0, i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - if (((r += b), b !== 26)) break; - } - return r; - }), - (BN.prototype.byteLength = function () { - return Math.ceil(this.bitLength() / 8); - }), - (BN.prototype.toTwos = function (width) { - return this.negative !== 0 ? this.abs().inotn(width).iaddn(1) : this.clone(); - }), - (BN.prototype.fromTwos = function (width) { - return this.testn(width - 1) ? this.notn(width).iaddn(1).ineg() : this.clone(); - }), - (BN.prototype.isNeg = function () { - return this.negative !== 0; - }), - (BN.prototype.neg = function () { - return this.clone().ineg(); - }), - (BN.prototype.ineg = function () { - return this.isZero() || (this.negative ^= 1), this; - }), - (BN.prototype.iuor = function (num) { - for (; this.length < num.length; ) this.words[this.length++] = 0; - for (var i = 0; i < num.length; i++) this.words[i] = this.words[i] | num.words[i]; - return this.strip(); - }), - (BN.prototype.ior = function (num) { - return assert((this.negative | num.negative) === 0), this.iuor(num); - }), - (BN.prototype.or = function (num) { - return this.length > num.length ? this.clone().ior(num) : num.clone().ior(this); - }), - (BN.prototype.uor = function (num) { - return this.length > num.length ? this.clone().iuor(num) : num.clone().iuor(this); - }), - (BN.prototype.iuand = function (num) { - var b; - this.length > num.length ? (b = num) : (b = this); - for (var i = 0; i < b.length; i++) this.words[i] = this.words[i] & num.words[i]; - return (this.length = b.length), this.strip(); - }), - (BN.prototype.iand = function (num) { - return assert((this.negative | num.negative) === 0), this.iuand(num); - }), - (BN.prototype.and = function (num) { - return this.length > num.length ? this.clone().iand(num) : num.clone().iand(this); - }), - (BN.prototype.uand = function (num) { - return this.length > num.length ? this.clone().iuand(num) : num.clone().iuand(this); - }), - (BN.prototype.iuxor = function (num) { - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var i = 0; i < b.length; i++) this.words[i] = a.words[i] ^ b.words[i]; - if (this !== a) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = a.length), this.strip(); - }), - (BN.prototype.ixor = function (num) { - return assert((this.negative | num.negative) === 0), this.iuxor(num); - }), - (BN.prototype.xor = function (num) { - return this.length > num.length ? this.clone().ixor(num) : num.clone().ixor(this); - }), - (BN.prototype.uxor = function (num) { - return this.length > num.length ? this.clone().iuxor(num) : num.clone().iuxor(this); - }), - (BN.prototype.inotn = function (width) { - assert(typeof width == "number" && width >= 0); - var bytesNeeded = Math.ceil(width / 26) | 0, - bitsLeft = width % 26; - this._expand(bytesNeeded), bitsLeft > 0 && bytesNeeded--; - for (var i = 0; i < bytesNeeded; i++) this.words[i] = ~this.words[i] & 67108863; - return bitsLeft > 0 && (this.words[i] = ~this.words[i] & (67108863 >> (26 - bitsLeft))), this.strip(); - }), - (BN.prototype.notn = function (width) { - return this.clone().inotn(width); - }), - (BN.prototype.setn = function (bit, val) { - assert(typeof bit == "number" && bit >= 0); - var off = (bit / 26) | 0, - wbit = bit % 26; - return ( - this._expand(off + 1), - val - ? (this.words[off] = this.words[off] | (1 << wbit)) - : (this.words[off] = this.words[off] & ~(1 << wbit)), - this.strip() - ); - }), - (BN.prototype.iadd = function (num) { - var r; - if (this.negative !== 0 && num.negative === 0) - return (this.negative = 0), (r = this.isub(num)), (this.negative ^= 1), this._normSign(); - if (this.negative === 0 && num.negative !== 0) - return (num.negative = 0), (r = this.isub(num)), (num.negative = 1), r._normSign(); - var a, b; - this.length > num.length ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) + (b.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (this.words[i] = r & 67108863), (carry = r >>> 26); - if (((this.length = a.length), carry !== 0)) (this.words[this.length] = carry), this.length++; - else if (a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return this; - }), - (BN.prototype.add = function (num) { - var res; - return num.negative !== 0 && this.negative === 0 - ? ((num.negative = 0), (res = this.sub(num)), (num.negative ^= 1), res) - : num.negative === 0 && this.negative !== 0 - ? ((this.negative = 0), (res = num.sub(this)), (this.negative = 1), res) - : this.length > num.length - ? this.clone().iadd(num) - : num.clone().iadd(this); - }), - (BN.prototype.isub = function (num) { - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - return (num.negative = 1), r._normSign(); - } else if (this.negative !== 0) - return (this.negative = 0), this.iadd(num), (this.negative = 1), this._normSign(); - var cmp = this.cmp(num); - if (cmp === 0) return (this.negative = 0), (this.length = 1), (this.words[0] = 0), this; - var a, b; - cmp > 0 ? ((a = this), (b = num)) : ((a = num), (b = this)); - for (var carry = 0, i = 0; i < b.length; i++) - (r = (a.words[i] | 0) - (b.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - for (; carry !== 0 && i < a.length; i++) - (r = (a.words[i] | 0) + carry), (carry = r >> 26), (this.words[i] = r & 67108863); - if (carry === 0 && i < a.length && a !== this) for (; i < a.length; i++) this.words[i] = a.words[i]; - return (this.length = Math.max(this.length, i)), a !== this && (this.negative = 1), this.strip(); - }), - (BN.prototype.sub = function (num) { - return this.clone().isub(num); - }); - function smallMulTo(self2, num, out) { - out.negative = num.negative ^ self2.negative; - var len = (self2.length + num.length) | 0; - (out.length = len), (len = (len - 1) | 0); - var a = self2.words[0] | 0, - b = num.words[0] | 0, - r = a * b, - lo = r & 67108863, - carry = (r / 67108864) | 0; - out.words[0] = lo; - for (var k = 1; k < len; k++) { - for ( - var ncarry = carry >>> 26, - rword = carry & 67108863, - maxJ = Math.min(k, num.length - 1), - j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = (k - j) | 0; - (a = self2.words[i] | 0), - (b = num.words[j] | 0), - (r = a * b + rword), - (ncarry += (r / 67108864) | 0), - (rword = r & 67108863); - } - (out.words[k] = rword | 0), (carry = ncarry | 0); - } - return carry !== 0 ? (out.words[k] = carry | 0) : out.length--, out.strip(); - } - var comb10MulTo = function (self2, num, out) { - var a = self2.words, - b = num.words, - o = out.words, - c = 0, - lo, - mid, - hi, - a0 = a[0] | 0, - al0 = a0 & 8191, - ah0 = a0 >>> 13, - a1 = a[1] | 0, - al1 = a1 & 8191, - ah1 = a1 >>> 13, - a2 = a[2] | 0, - al2 = a2 & 8191, - ah2 = a2 >>> 13, - a3 = a[3] | 0, - al3 = a3 & 8191, - ah3 = a3 >>> 13, - a4 = a[4] | 0, - al4 = a4 & 8191, - ah4 = a4 >>> 13, - a5 = a[5] | 0, - al5 = a5 & 8191, - ah5 = a5 >>> 13, - a6 = a[6] | 0, - al6 = a6 & 8191, - ah6 = a6 >>> 13, - a7 = a[7] | 0, - al7 = a7 & 8191, - ah7 = a7 >>> 13, - a8 = a[8] | 0, - al8 = a8 & 8191, - ah8 = a8 >>> 13, - a9 = a[9] | 0, - al9 = a9 & 8191, - ah9 = a9 >>> 13, - b0 = b[0] | 0, - bl0 = b0 & 8191, - bh0 = b0 >>> 13, - b1 = b[1] | 0, - bl1 = b1 & 8191, - bh1 = b1 >>> 13, - b2 = b[2] | 0, - bl2 = b2 & 8191, - bh2 = b2 >>> 13, - b3 = b[3] | 0, - bl3 = b3 & 8191, - bh3 = b3 >>> 13, - b4 = b[4] | 0, - bl4 = b4 & 8191, - bh4 = b4 >>> 13, - b5 = b[5] | 0, - bl5 = b5 & 8191, - bh5 = b5 >>> 13, - b6 = b[6] | 0, - bl6 = b6 & 8191, - bh6 = b6 >>> 13, - b7 = b[7] | 0, - bl7 = b7 & 8191, - bh7 = b7 >>> 13, - b8 = b[8] | 0, - bl8 = b8 & 8191, - bh8 = b8 >>> 13, - b9 = b[9] | 0, - bl9 = b9 & 8191, - bh9 = b9 >>> 13; - (out.negative = self2.negative ^ num.negative), - (out.length = 19), - (lo = Math.imul(al0, bl0)), - (mid = Math.imul(al0, bh0)), - (mid = (mid + Math.imul(ah0, bl0)) | 0), - (hi = Math.imul(ah0, bh0)); - var w0 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0), - (w0 &= 67108863), - (lo = Math.imul(al1, bl0)), - (mid = Math.imul(al1, bh0)), - (mid = (mid + Math.imul(ah1, bl0)) | 0), - (hi = Math.imul(ah1, bh0)), - (lo = (lo + Math.imul(al0, bl1)) | 0), - (mid = (mid + Math.imul(al0, bh1)) | 0), - (mid = (mid + Math.imul(ah0, bl1)) | 0), - (hi = (hi + Math.imul(ah0, bh1)) | 0); - var w1 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0), - (w1 &= 67108863), - (lo = Math.imul(al2, bl0)), - (mid = Math.imul(al2, bh0)), - (mid = (mid + Math.imul(ah2, bl0)) | 0), - (hi = Math.imul(ah2, bh0)), - (lo = (lo + Math.imul(al1, bl1)) | 0), - (mid = (mid + Math.imul(al1, bh1)) | 0), - (mid = (mid + Math.imul(ah1, bl1)) | 0), - (hi = (hi + Math.imul(ah1, bh1)) | 0), - (lo = (lo + Math.imul(al0, bl2)) | 0), - (mid = (mid + Math.imul(al0, bh2)) | 0), - (mid = (mid + Math.imul(ah0, bl2)) | 0), - (hi = (hi + Math.imul(ah0, bh2)) | 0); - var w2 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0), - (w2 &= 67108863), - (lo = Math.imul(al3, bl0)), - (mid = Math.imul(al3, bh0)), - (mid = (mid + Math.imul(ah3, bl0)) | 0), - (hi = Math.imul(ah3, bh0)), - (lo = (lo + Math.imul(al2, bl1)) | 0), - (mid = (mid + Math.imul(al2, bh1)) | 0), - (mid = (mid + Math.imul(ah2, bl1)) | 0), - (hi = (hi + Math.imul(ah2, bh1)) | 0), - (lo = (lo + Math.imul(al1, bl2)) | 0), - (mid = (mid + Math.imul(al1, bh2)) | 0), - (mid = (mid + Math.imul(ah1, bl2)) | 0), - (hi = (hi + Math.imul(ah1, bh2)) | 0), - (lo = (lo + Math.imul(al0, bl3)) | 0), - (mid = (mid + Math.imul(al0, bh3)) | 0), - (mid = (mid + Math.imul(ah0, bl3)) | 0), - (hi = (hi + Math.imul(ah0, bh3)) | 0); - var w3 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0), - (w3 &= 67108863), - (lo = Math.imul(al4, bl0)), - (mid = Math.imul(al4, bh0)), - (mid = (mid + Math.imul(ah4, bl0)) | 0), - (hi = Math.imul(ah4, bh0)), - (lo = (lo + Math.imul(al3, bl1)) | 0), - (mid = (mid + Math.imul(al3, bh1)) | 0), - (mid = (mid + Math.imul(ah3, bl1)) | 0), - (hi = (hi + Math.imul(ah3, bh1)) | 0), - (lo = (lo + Math.imul(al2, bl2)) | 0), - (mid = (mid + Math.imul(al2, bh2)) | 0), - (mid = (mid + Math.imul(ah2, bl2)) | 0), - (hi = (hi + Math.imul(ah2, bh2)) | 0), - (lo = (lo + Math.imul(al1, bl3)) | 0), - (mid = (mid + Math.imul(al1, bh3)) | 0), - (mid = (mid + Math.imul(ah1, bl3)) | 0), - (hi = (hi + Math.imul(ah1, bh3)) | 0), - (lo = (lo + Math.imul(al0, bl4)) | 0), - (mid = (mid + Math.imul(al0, bh4)) | 0), - (mid = (mid + Math.imul(ah0, bl4)) | 0), - (hi = (hi + Math.imul(ah0, bh4)) | 0); - var w4 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0), - (w4 &= 67108863), - (lo = Math.imul(al5, bl0)), - (mid = Math.imul(al5, bh0)), - (mid = (mid + Math.imul(ah5, bl0)) | 0), - (hi = Math.imul(ah5, bh0)), - (lo = (lo + Math.imul(al4, bl1)) | 0), - (mid = (mid + Math.imul(al4, bh1)) | 0), - (mid = (mid + Math.imul(ah4, bl1)) | 0), - (hi = (hi + Math.imul(ah4, bh1)) | 0), - (lo = (lo + Math.imul(al3, bl2)) | 0), - (mid = (mid + Math.imul(al3, bh2)) | 0), - (mid = (mid + Math.imul(ah3, bl2)) | 0), - (hi = (hi + Math.imul(ah3, bh2)) | 0), - (lo = (lo + Math.imul(al2, bl3)) | 0), - (mid = (mid + Math.imul(al2, bh3)) | 0), - (mid = (mid + Math.imul(ah2, bl3)) | 0), - (hi = (hi + Math.imul(ah2, bh3)) | 0), - (lo = (lo + Math.imul(al1, bl4)) | 0), - (mid = (mid + Math.imul(al1, bh4)) | 0), - (mid = (mid + Math.imul(ah1, bl4)) | 0), - (hi = (hi + Math.imul(ah1, bh4)) | 0), - (lo = (lo + Math.imul(al0, bl5)) | 0), - (mid = (mid + Math.imul(al0, bh5)) | 0), - (mid = (mid + Math.imul(ah0, bl5)) | 0), - (hi = (hi + Math.imul(ah0, bh5)) | 0); - var w5 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0), - (w5 &= 67108863), - (lo = Math.imul(al6, bl0)), - (mid = Math.imul(al6, bh0)), - (mid = (mid + Math.imul(ah6, bl0)) | 0), - (hi = Math.imul(ah6, bh0)), - (lo = (lo + Math.imul(al5, bl1)) | 0), - (mid = (mid + Math.imul(al5, bh1)) | 0), - (mid = (mid + Math.imul(ah5, bl1)) | 0), - (hi = (hi + Math.imul(ah5, bh1)) | 0), - (lo = (lo + Math.imul(al4, bl2)) | 0), - (mid = (mid + Math.imul(al4, bh2)) | 0), - (mid = (mid + Math.imul(ah4, bl2)) | 0), - (hi = (hi + Math.imul(ah4, bh2)) | 0), - (lo = (lo + Math.imul(al3, bl3)) | 0), - (mid = (mid + Math.imul(al3, bh3)) | 0), - (mid = (mid + Math.imul(ah3, bl3)) | 0), - (hi = (hi + Math.imul(ah3, bh3)) | 0), - (lo = (lo + Math.imul(al2, bl4)) | 0), - (mid = (mid + Math.imul(al2, bh4)) | 0), - (mid = (mid + Math.imul(ah2, bl4)) | 0), - (hi = (hi + Math.imul(ah2, bh4)) | 0), - (lo = (lo + Math.imul(al1, bl5)) | 0), - (mid = (mid + Math.imul(al1, bh5)) | 0), - (mid = (mid + Math.imul(ah1, bl5)) | 0), - (hi = (hi + Math.imul(ah1, bh5)) | 0), - (lo = (lo + Math.imul(al0, bl6)) | 0), - (mid = (mid + Math.imul(al0, bh6)) | 0), - (mid = (mid + Math.imul(ah0, bl6)) | 0), - (hi = (hi + Math.imul(ah0, bh6)) | 0); - var w6 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0), - (w6 &= 67108863), - (lo = Math.imul(al7, bl0)), - (mid = Math.imul(al7, bh0)), - (mid = (mid + Math.imul(ah7, bl0)) | 0), - (hi = Math.imul(ah7, bh0)), - (lo = (lo + Math.imul(al6, bl1)) | 0), - (mid = (mid + Math.imul(al6, bh1)) | 0), - (mid = (mid + Math.imul(ah6, bl1)) | 0), - (hi = (hi + Math.imul(ah6, bh1)) | 0), - (lo = (lo + Math.imul(al5, bl2)) | 0), - (mid = (mid + Math.imul(al5, bh2)) | 0), - (mid = (mid + Math.imul(ah5, bl2)) | 0), - (hi = (hi + Math.imul(ah5, bh2)) | 0), - (lo = (lo + Math.imul(al4, bl3)) | 0), - (mid = (mid + Math.imul(al4, bh3)) | 0), - (mid = (mid + Math.imul(ah4, bl3)) | 0), - (hi = (hi + Math.imul(ah4, bh3)) | 0), - (lo = (lo + Math.imul(al3, bl4)) | 0), - (mid = (mid + Math.imul(al3, bh4)) | 0), - (mid = (mid + Math.imul(ah3, bl4)) | 0), - (hi = (hi + Math.imul(ah3, bh4)) | 0), - (lo = (lo + Math.imul(al2, bl5)) | 0), - (mid = (mid + Math.imul(al2, bh5)) | 0), - (mid = (mid + Math.imul(ah2, bl5)) | 0), - (hi = (hi + Math.imul(ah2, bh5)) | 0), - (lo = (lo + Math.imul(al1, bl6)) | 0), - (mid = (mid + Math.imul(al1, bh6)) | 0), - (mid = (mid + Math.imul(ah1, bl6)) | 0), - (hi = (hi + Math.imul(ah1, bh6)) | 0), - (lo = (lo + Math.imul(al0, bl7)) | 0), - (mid = (mid + Math.imul(al0, bh7)) | 0), - (mid = (mid + Math.imul(ah0, bl7)) | 0), - (hi = (hi + Math.imul(ah0, bh7)) | 0); - var w7 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0), - (w7 &= 67108863), - (lo = Math.imul(al8, bl0)), - (mid = Math.imul(al8, bh0)), - (mid = (mid + Math.imul(ah8, bl0)) | 0), - (hi = Math.imul(ah8, bh0)), - (lo = (lo + Math.imul(al7, bl1)) | 0), - (mid = (mid + Math.imul(al7, bh1)) | 0), - (mid = (mid + Math.imul(ah7, bl1)) | 0), - (hi = (hi + Math.imul(ah7, bh1)) | 0), - (lo = (lo + Math.imul(al6, bl2)) | 0), - (mid = (mid + Math.imul(al6, bh2)) | 0), - (mid = (mid + Math.imul(ah6, bl2)) | 0), - (hi = (hi + Math.imul(ah6, bh2)) | 0), - (lo = (lo + Math.imul(al5, bl3)) | 0), - (mid = (mid + Math.imul(al5, bh3)) | 0), - (mid = (mid + Math.imul(ah5, bl3)) | 0), - (hi = (hi + Math.imul(ah5, bh3)) | 0), - (lo = (lo + Math.imul(al4, bl4)) | 0), - (mid = (mid + Math.imul(al4, bh4)) | 0), - (mid = (mid + Math.imul(ah4, bl4)) | 0), - (hi = (hi + Math.imul(ah4, bh4)) | 0), - (lo = (lo + Math.imul(al3, bl5)) | 0), - (mid = (mid + Math.imul(al3, bh5)) | 0), - (mid = (mid + Math.imul(ah3, bl5)) | 0), - (hi = (hi + Math.imul(ah3, bh5)) | 0), - (lo = (lo + Math.imul(al2, bl6)) | 0), - (mid = (mid + Math.imul(al2, bh6)) | 0), - (mid = (mid + Math.imul(ah2, bl6)) | 0), - (hi = (hi + Math.imul(ah2, bh6)) | 0), - (lo = (lo + Math.imul(al1, bl7)) | 0), - (mid = (mid + Math.imul(al1, bh7)) | 0), - (mid = (mid + Math.imul(ah1, bl7)) | 0), - (hi = (hi + Math.imul(ah1, bh7)) | 0), - (lo = (lo + Math.imul(al0, bl8)) | 0), - (mid = (mid + Math.imul(al0, bh8)) | 0), - (mid = (mid + Math.imul(ah0, bl8)) | 0), - (hi = (hi + Math.imul(ah0, bh8)) | 0); - var w8 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0), - (w8 &= 67108863), - (lo = Math.imul(al9, bl0)), - (mid = Math.imul(al9, bh0)), - (mid = (mid + Math.imul(ah9, bl0)) | 0), - (hi = Math.imul(ah9, bh0)), - (lo = (lo + Math.imul(al8, bl1)) | 0), - (mid = (mid + Math.imul(al8, bh1)) | 0), - (mid = (mid + Math.imul(ah8, bl1)) | 0), - (hi = (hi + Math.imul(ah8, bh1)) | 0), - (lo = (lo + Math.imul(al7, bl2)) | 0), - (mid = (mid + Math.imul(al7, bh2)) | 0), - (mid = (mid + Math.imul(ah7, bl2)) | 0), - (hi = (hi + Math.imul(ah7, bh2)) | 0), - (lo = (lo + Math.imul(al6, bl3)) | 0), - (mid = (mid + Math.imul(al6, bh3)) | 0), - (mid = (mid + Math.imul(ah6, bl3)) | 0), - (hi = (hi + Math.imul(ah6, bh3)) | 0), - (lo = (lo + Math.imul(al5, bl4)) | 0), - (mid = (mid + Math.imul(al5, bh4)) | 0), - (mid = (mid + Math.imul(ah5, bl4)) | 0), - (hi = (hi + Math.imul(ah5, bh4)) | 0), - (lo = (lo + Math.imul(al4, bl5)) | 0), - (mid = (mid + Math.imul(al4, bh5)) | 0), - (mid = (mid + Math.imul(ah4, bl5)) | 0), - (hi = (hi + Math.imul(ah4, bh5)) | 0), - (lo = (lo + Math.imul(al3, bl6)) | 0), - (mid = (mid + Math.imul(al3, bh6)) | 0), - (mid = (mid + Math.imul(ah3, bl6)) | 0), - (hi = (hi + Math.imul(ah3, bh6)) | 0), - (lo = (lo + Math.imul(al2, bl7)) | 0), - (mid = (mid + Math.imul(al2, bh7)) | 0), - (mid = (mid + Math.imul(ah2, bl7)) | 0), - (hi = (hi + Math.imul(ah2, bh7)) | 0), - (lo = (lo + Math.imul(al1, bl8)) | 0), - (mid = (mid + Math.imul(al1, bh8)) | 0), - (mid = (mid + Math.imul(ah1, bl8)) | 0), - (hi = (hi + Math.imul(ah1, bh8)) | 0), - (lo = (lo + Math.imul(al0, bl9)) | 0), - (mid = (mid + Math.imul(al0, bh9)) | 0), - (mid = (mid + Math.imul(ah0, bl9)) | 0), - (hi = (hi + Math.imul(ah0, bh9)) | 0); - var w9 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0), - (w9 &= 67108863), - (lo = Math.imul(al9, bl1)), - (mid = Math.imul(al9, bh1)), - (mid = (mid + Math.imul(ah9, bl1)) | 0), - (hi = Math.imul(ah9, bh1)), - (lo = (lo + Math.imul(al8, bl2)) | 0), - (mid = (mid + Math.imul(al8, bh2)) | 0), - (mid = (mid + Math.imul(ah8, bl2)) | 0), - (hi = (hi + Math.imul(ah8, bh2)) | 0), - (lo = (lo + Math.imul(al7, bl3)) | 0), - (mid = (mid + Math.imul(al7, bh3)) | 0), - (mid = (mid + Math.imul(ah7, bl3)) | 0), - (hi = (hi + Math.imul(ah7, bh3)) | 0), - (lo = (lo + Math.imul(al6, bl4)) | 0), - (mid = (mid + Math.imul(al6, bh4)) | 0), - (mid = (mid + Math.imul(ah6, bl4)) | 0), - (hi = (hi + Math.imul(ah6, bh4)) | 0), - (lo = (lo + Math.imul(al5, bl5)) | 0), - (mid = (mid + Math.imul(al5, bh5)) | 0), - (mid = (mid + Math.imul(ah5, bl5)) | 0), - (hi = (hi + Math.imul(ah5, bh5)) | 0), - (lo = (lo + Math.imul(al4, bl6)) | 0), - (mid = (mid + Math.imul(al4, bh6)) | 0), - (mid = (mid + Math.imul(ah4, bl6)) | 0), - (hi = (hi + Math.imul(ah4, bh6)) | 0), - (lo = (lo + Math.imul(al3, bl7)) | 0), - (mid = (mid + Math.imul(al3, bh7)) | 0), - (mid = (mid + Math.imul(ah3, bl7)) | 0), - (hi = (hi + Math.imul(ah3, bh7)) | 0), - (lo = (lo + Math.imul(al2, bl8)) | 0), - (mid = (mid + Math.imul(al2, bh8)) | 0), - (mid = (mid + Math.imul(ah2, bl8)) | 0), - (hi = (hi + Math.imul(ah2, bh8)) | 0), - (lo = (lo + Math.imul(al1, bl9)) | 0), - (mid = (mid + Math.imul(al1, bh9)) | 0), - (mid = (mid + Math.imul(ah1, bl9)) | 0), - (hi = (hi + Math.imul(ah1, bh9)) | 0); - var w10 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0), - (w10 &= 67108863), - (lo = Math.imul(al9, bl2)), - (mid = Math.imul(al9, bh2)), - (mid = (mid + Math.imul(ah9, bl2)) | 0), - (hi = Math.imul(ah9, bh2)), - (lo = (lo + Math.imul(al8, bl3)) | 0), - (mid = (mid + Math.imul(al8, bh3)) | 0), - (mid = (mid + Math.imul(ah8, bl3)) | 0), - (hi = (hi + Math.imul(ah8, bh3)) | 0), - (lo = (lo + Math.imul(al7, bl4)) | 0), - (mid = (mid + Math.imul(al7, bh4)) | 0), - (mid = (mid + Math.imul(ah7, bl4)) | 0), - (hi = (hi + Math.imul(ah7, bh4)) | 0), - (lo = (lo + Math.imul(al6, bl5)) | 0), - (mid = (mid + Math.imul(al6, bh5)) | 0), - (mid = (mid + Math.imul(ah6, bl5)) | 0), - (hi = (hi + Math.imul(ah6, bh5)) | 0), - (lo = (lo + Math.imul(al5, bl6)) | 0), - (mid = (mid + Math.imul(al5, bh6)) | 0), - (mid = (mid + Math.imul(ah5, bl6)) | 0), - (hi = (hi + Math.imul(ah5, bh6)) | 0), - (lo = (lo + Math.imul(al4, bl7)) | 0), - (mid = (mid + Math.imul(al4, bh7)) | 0), - (mid = (mid + Math.imul(ah4, bl7)) | 0), - (hi = (hi + Math.imul(ah4, bh7)) | 0), - (lo = (lo + Math.imul(al3, bl8)) | 0), - (mid = (mid + Math.imul(al3, bh8)) | 0), - (mid = (mid + Math.imul(ah3, bl8)) | 0), - (hi = (hi + Math.imul(ah3, bh8)) | 0), - (lo = (lo + Math.imul(al2, bl9)) | 0), - (mid = (mid + Math.imul(al2, bh9)) | 0), - (mid = (mid + Math.imul(ah2, bl9)) | 0), - (hi = (hi + Math.imul(ah2, bh9)) | 0); - var w11 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0), - (w11 &= 67108863), - (lo = Math.imul(al9, bl3)), - (mid = Math.imul(al9, bh3)), - (mid = (mid + Math.imul(ah9, bl3)) | 0), - (hi = Math.imul(ah9, bh3)), - (lo = (lo + Math.imul(al8, bl4)) | 0), - (mid = (mid + Math.imul(al8, bh4)) | 0), - (mid = (mid + Math.imul(ah8, bl4)) | 0), - (hi = (hi + Math.imul(ah8, bh4)) | 0), - (lo = (lo + Math.imul(al7, bl5)) | 0), - (mid = (mid + Math.imul(al7, bh5)) | 0), - (mid = (mid + Math.imul(ah7, bl5)) | 0), - (hi = (hi + Math.imul(ah7, bh5)) | 0), - (lo = (lo + Math.imul(al6, bl6)) | 0), - (mid = (mid + Math.imul(al6, bh6)) | 0), - (mid = (mid + Math.imul(ah6, bl6)) | 0), - (hi = (hi + Math.imul(ah6, bh6)) | 0), - (lo = (lo + Math.imul(al5, bl7)) | 0), - (mid = (mid + Math.imul(al5, bh7)) | 0), - (mid = (mid + Math.imul(ah5, bl7)) | 0), - (hi = (hi + Math.imul(ah5, bh7)) | 0), - (lo = (lo + Math.imul(al4, bl8)) | 0), - (mid = (mid + Math.imul(al4, bh8)) | 0), - (mid = (mid + Math.imul(ah4, bl8)) | 0), - (hi = (hi + Math.imul(ah4, bh8)) | 0), - (lo = (lo + Math.imul(al3, bl9)) | 0), - (mid = (mid + Math.imul(al3, bh9)) | 0), - (mid = (mid + Math.imul(ah3, bl9)) | 0), - (hi = (hi + Math.imul(ah3, bh9)) | 0); - var w12 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0), - (w12 &= 67108863), - (lo = Math.imul(al9, bl4)), - (mid = Math.imul(al9, bh4)), - (mid = (mid + Math.imul(ah9, bl4)) | 0), - (hi = Math.imul(ah9, bh4)), - (lo = (lo + Math.imul(al8, bl5)) | 0), - (mid = (mid + Math.imul(al8, bh5)) | 0), - (mid = (mid + Math.imul(ah8, bl5)) | 0), - (hi = (hi + Math.imul(ah8, bh5)) | 0), - (lo = (lo + Math.imul(al7, bl6)) | 0), - (mid = (mid + Math.imul(al7, bh6)) | 0), - (mid = (mid + Math.imul(ah7, bl6)) | 0), - (hi = (hi + Math.imul(ah7, bh6)) | 0), - (lo = (lo + Math.imul(al6, bl7)) | 0), - (mid = (mid + Math.imul(al6, bh7)) | 0), - (mid = (mid + Math.imul(ah6, bl7)) | 0), - (hi = (hi + Math.imul(ah6, bh7)) | 0), - (lo = (lo + Math.imul(al5, bl8)) | 0), - (mid = (mid + Math.imul(al5, bh8)) | 0), - (mid = (mid + Math.imul(ah5, bl8)) | 0), - (hi = (hi + Math.imul(ah5, bh8)) | 0), - (lo = (lo + Math.imul(al4, bl9)) | 0), - (mid = (mid + Math.imul(al4, bh9)) | 0), - (mid = (mid + Math.imul(ah4, bl9)) | 0), - (hi = (hi + Math.imul(ah4, bh9)) | 0); - var w13 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0), - (w13 &= 67108863), - (lo = Math.imul(al9, bl5)), - (mid = Math.imul(al9, bh5)), - (mid = (mid + Math.imul(ah9, bl5)) | 0), - (hi = Math.imul(ah9, bh5)), - (lo = (lo + Math.imul(al8, bl6)) | 0), - (mid = (mid + Math.imul(al8, bh6)) | 0), - (mid = (mid + Math.imul(ah8, bl6)) | 0), - (hi = (hi + Math.imul(ah8, bh6)) | 0), - (lo = (lo + Math.imul(al7, bl7)) | 0), - (mid = (mid + Math.imul(al7, bh7)) | 0), - (mid = (mid + Math.imul(ah7, bl7)) | 0), - (hi = (hi + Math.imul(ah7, bh7)) | 0), - (lo = (lo + Math.imul(al6, bl8)) | 0), - (mid = (mid + Math.imul(al6, bh8)) | 0), - (mid = (mid + Math.imul(ah6, bl8)) | 0), - (hi = (hi + Math.imul(ah6, bh8)) | 0), - (lo = (lo + Math.imul(al5, bl9)) | 0), - (mid = (mid + Math.imul(al5, bh9)) | 0), - (mid = (mid + Math.imul(ah5, bl9)) | 0), - (hi = (hi + Math.imul(ah5, bh9)) | 0); - var w14 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0), - (w14 &= 67108863), - (lo = Math.imul(al9, bl6)), - (mid = Math.imul(al9, bh6)), - (mid = (mid + Math.imul(ah9, bl6)) | 0), - (hi = Math.imul(ah9, bh6)), - (lo = (lo + Math.imul(al8, bl7)) | 0), - (mid = (mid + Math.imul(al8, bh7)) | 0), - (mid = (mid + Math.imul(ah8, bl7)) | 0), - (hi = (hi + Math.imul(ah8, bh7)) | 0), - (lo = (lo + Math.imul(al7, bl8)) | 0), - (mid = (mid + Math.imul(al7, bh8)) | 0), - (mid = (mid + Math.imul(ah7, bl8)) | 0), - (hi = (hi + Math.imul(ah7, bh8)) | 0), - (lo = (lo + Math.imul(al6, bl9)) | 0), - (mid = (mid + Math.imul(al6, bh9)) | 0), - (mid = (mid + Math.imul(ah6, bl9)) | 0), - (hi = (hi + Math.imul(ah6, bh9)) | 0); - var w15 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0), - (w15 &= 67108863), - (lo = Math.imul(al9, bl7)), - (mid = Math.imul(al9, bh7)), - (mid = (mid + Math.imul(ah9, bl7)) | 0), - (hi = Math.imul(ah9, bh7)), - (lo = (lo + Math.imul(al8, bl8)) | 0), - (mid = (mid + Math.imul(al8, bh8)) | 0), - (mid = (mid + Math.imul(ah8, bl8)) | 0), - (hi = (hi + Math.imul(ah8, bh8)) | 0), - (lo = (lo + Math.imul(al7, bl9)) | 0), - (mid = (mid + Math.imul(al7, bh9)) | 0), - (mid = (mid + Math.imul(ah7, bl9)) | 0), - (hi = (hi + Math.imul(ah7, bh9)) | 0); - var w16 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0), - (w16 &= 67108863), - (lo = Math.imul(al9, bl8)), - (mid = Math.imul(al9, bh8)), - (mid = (mid + Math.imul(ah9, bl8)) | 0), - (hi = Math.imul(ah9, bh8)), - (lo = (lo + Math.imul(al8, bl9)) | 0), - (mid = (mid + Math.imul(al8, bh9)) | 0), - (mid = (mid + Math.imul(ah8, bl9)) | 0), - (hi = (hi + Math.imul(ah8, bh9)) | 0); - var w17 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - (c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0), - (w17 &= 67108863), - (lo = Math.imul(al9, bl9)), - (mid = Math.imul(al9, bh9)), - (mid = (mid + Math.imul(ah9, bl9)) | 0), - (hi = Math.imul(ah9, bh9)); - var w18 = (((c + lo) | 0) + ((mid & 8191) << 13)) | 0; - return ( - (c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0), - (w18 &= 67108863), - (o[0] = w0), - (o[1] = w1), - (o[2] = w2), - (o[3] = w3), - (o[4] = w4), - (o[5] = w5), - (o[6] = w6), - (o[7] = w7), - (o[8] = w8), - (o[9] = w9), - (o[10] = w10), - (o[11] = w11), - (o[12] = w12), - (o[13] = w13), - (o[14] = w14), - (o[15] = w15), - (o[16] = w16), - (o[17] = w17), - (o[18] = w18), - c !== 0 && ((o[19] = c), out.length++), - out - ); - }; - Math.imul || (comb10MulTo = smallMulTo); - function bigMulTo(self2, num, out) { - (out.negative = num.negative ^ self2.negative), (out.length = self2.length + num.length); - for (var carry = 0, hncarry = 0, k = 0; k < out.length - 1; k++) { - var ncarry = hncarry; - hncarry = 0; - for ( - var rword = carry & 67108863, maxJ = Math.min(k, num.length - 1), j = Math.max(0, k - self2.length + 1); - j <= maxJ; - j++ - ) { - var i = k - j, - a = self2.words[i] | 0, - b = num.words[j] | 0, - r = a * b, - lo = r & 67108863; - (ncarry = (ncarry + ((r / 67108864) | 0)) | 0), - (lo = (lo + rword) | 0), - (rword = lo & 67108863), - (ncarry = (ncarry + (lo >>> 26)) | 0), - (hncarry += ncarry >>> 26), - (ncarry &= 67108863); - } - (out.words[k] = rword), (carry = ncarry), (ncarry = hncarry); - } - return carry !== 0 ? (out.words[k] = carry) : out.length--, out.strip(); - } - function jumboMulTo(self2, num, out) { - var fftm = new FFTM(); - return fftm.mulp(self2, num, out); - } - BN.prototype.mulTo = function (num, out) { - var res, - len = this.length + num.length; - return ( - this.length === 10 && num.length === 10 - ? (res = comb10MulTo(this, num, out)) - : len < 63 - ? (res = smallMulTo(this, num, out)) - : len < 1024 - ? (res = bigMulTo(this, num, out)) - : (res = jumboMulTo(this, num, out)), - res - ); - }; - function FFTM(x, y) { - (this.x = x), (this.y = y); - } - (FFTM.prototype.makeRBT = function (N) { - for (var t = new Array(N), l = BN.prototype._countBits(N) - 1, i = 0; i < N; i++) t[i] = this.revBin(i, l, N); - return t; - }), - (FFTM.prototype.revBin = function (x, l, N) { - if (x === 0 || x === N - 1) return x; - for (var rb = 0, i = 0; i < l; i++) (rb |= (x & 1) << (l - i - 1)), (x >>= 1); - return rb; - }), - (FFTM.prototype.permute = function (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) (rtws[i] = rws[rbt[i]]), (itws[i] = iws[rbt[i]]); - }), - (FFTM.prototype.transform = function (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - for (var s = 1; s < N; s <<= 1) - for ( - var l = s << 1, rtwdf = Math.cos((2 * Math.PI) / l), itwdf = Math.sin((2 * Math.PI) / l), p = 0; - p < N; - p += l - ) - for (var rtwdf_ = rtwdf, itwdf_ = itwdf, j = 0; j < s; j++) { - var re = rtws[p + j], - ie = itws[p + j], - ro = rtws[p + j + s], - io = itws[p + j + s], - rx = rtwdf_ * ro - itwdf_ * io; - (io = rtwdf_ * io + itwdf_ * ro), - (ro = rx), - (rtws[p + j] = re + ro), - (itws[p + j] = ie + io), - (rtws[p + j + s] = re - ro), - (itws[p + j + s] = ie - io), - j !== l && - ((rx = rtwdf * rtwdf_ - itwdf * itwdf_), (itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_), (rtwdf_ = rx)); - } - }), - (FFTM.prototype.guessLen13b = function (n, m) { - var N = Math.max(m, n) | 1, - odd = N & 1, - i = 0; - for (N = (N / 2) | 0; N; N = N >>> 1) i++; - return 1 << (i + 1 + odd); - }), - (FFTM.prototype.conjugate = function (rws, iws, N) { - if (!(N <= 1)) - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - (rws[i] = rws[N - i - 1]), - (rws[N - i - 1] = t), - (t = iws[i]), - (iws[i] = -iws[N - i - 1]), - (iws[N - i - 1] = -t); - } - }), - (FFTM.prototype.normalize13b = function (ws, N) { - for (var carry = 0, i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; - (ws[i] = w & 67108863), w < 67108864 ? (carry = 0) : (carry = (w / 67108864) | 0); - } - return ws; - }), - (FFTM.prototype.convert13b = function (ws, len, rws, N) { - for (var carry = 0, i = 0; i < len; i++) - (carry = carry + (ws[i] | 0)), - (rws[2 * i] = carry & 8191), - (carry = carry >>> 13), - (rws[2 * i + 1] = carry & 8191), - (carry = carry >>> 13); - for (i = 2 * len; i < N; ++i) rws[i] = 0; - assert(carry === 0), assert((carry & -8192) === 0); - }), - (FFTM.prototype.stub = function (N) { - for (var ph = new Array(N), i = 0; i < N; i++) ph[i] = 0; - return ph; - }), - (FFTM.prototype.mulp = function (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length), - rbt = this.makeRBT(N), - _ = this.stub(N), - rws = new Array(N), - rwst = new Array(N), - iwst = new Array(N), - nrws = new Array(N), - nrwst = new Array(N), - niwst = new Array(N), - rmws = out.words; - (rmws.length = N), - this.convert13b(x.words, x.length, rws, N), - this.convert13b(y.words, y.length, nrws, N), - this.transform(rws, _, rwst, iwst, N, rbt), - this.transform(nrws, _, nrwst, niwst, N, rbt); - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - (iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]), (rwst[i] = rx); - } - return ( - this.conjugate(rwst, iwst, N), - this.transform(rwst, iwst, rmws, _, N, rbt), - this.conjugate(rmws, _, N), - this.normalize13b(rmws, N), - (out.negative = x.negative ^ y.negative), - (out.length = x.length + y.length), - out.strip() - ); - }), - (BN.prototype.mul = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), this.mulTo(num, out); - }), - (BN.prototype.mulf = function (num) { - var out = new BN(null); - return (out.words = new Array(this.length + num.length)), jumboMulTo(this, num, out); - }), - (BN.prototype.imul = function (num) { - return this.clone().mulTo(num, this); - }), - (BN.prototype.imuln = function (num) { - assert(typeof num == "number"), assert(num < 67108864); - for (var carry = 0, i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num, - lo = (w & 67108863) + (carry & 67108863); - (carry >>= 26), (carry += (w / 67108864) | 0), (carry += lo >>> 26), (this.words[i] = lo & 67108863); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.muln = function (num) { - return this.clone().imuln(num); - }), - (BN.prototype.sqr = function () { - return this.mul(this); - }), - (BN.prototype.isqr = function () { - return this.imul(this.clone()); - }), - (BN.prototype.pow = function (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - for (var res = this, i = 0; i < w.length && w[i] === 0; i++, res = res.sqr()); - if (++i < w.length) for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) w[i] !== 0 && (res = res.mul(q)); - return res; - }), - (BN.prototype.iushln = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26, - carryMask = (67108863 >>> (26 - r)) << (26 - r), - i; - if (r !== 0) { - var carry = 0; - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask, - c = ((this.words[i] | 0) - newCarry) << r; - (this.words[i] = c | carry), (carry = newCarry >>> (26 - r)); - } - carry && ((this.words[i] = carry), this.length++); - } - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) this.words[i + s] = this.words[i]; - for (i = 0; i < s; i++) this.words[i] = 0; - this.length += s; - } - return this.strip(); - }), - (BN.prototype.ishln = function (bits) { - return assert(this.negative === 0), this.iushln(bits); - }), - (BN.prototype.iushrn = function (bits, hint, extended) { - assert(typeof bits == "number" && bits >= 0); - var h; - hint ? (h = (hint - (hint % 26)) / 26) : (h = 0); - var r = bits % 26, - s = Math.min((bits - r) / 26, this.length), - mask = 67108863 ^ ((67108863 >>> r) << r), - maskedWords = extended; - if (((h -= s), (h = Math.max(0, h)), maskedWords)) { - for (var i = 0; i < s; i++) maskedWords.words[i] = this.words[i]; - maskedWords.length = s; - } - if (s !== 0) - if (this.length > s) for (this.length -= s, i = 0; i < this.length; i++) this.words[i] = this.words[i + s]; - else (this.words[0] = 0), (this.length = 1); - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - (this.words[i] = (carry << (26 - r)) | (word >>> r)), (carry = word & mask); - } - return ( - maskedWords && carry !== 0 && (maskedWords.words[maskedWords.length++] = carry), - this.length === 0 && ((this.words[0] = 0), (this.length = 1)), - this.strip() - ); - }), - (BN.prototype.ishrn = function (bits, hint, extended) { - return assert(this.negative === 0), this.iushrn(bits, hint, extended); - }), - (BN.prototype.shln = function (bits) { - return this.clone().ishln(bits); - }), - (BN.prototype.ushln = function (bits) { - return this.clone().iushln(bits); - }), - (BN.prototype.shrn = function (bits) { - return this.clone().ishrn(bits); - }), - (BN.prototype.ushrn = function (bits) { - return this.clone().iushrn(bits); - }), - (BN.prototype.testn = function (bit) { - assert(typeof bit == "number" && bit >= 0); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return !1; - var w = this.words[s]; - return !!(w & q); - }), - (BN.prototype.imaskn = function (bits) { - assert(typeof bits == "number" && bits >= 0); - var r = bits % 26, - s = (bits - r) / 26; - if ((assert(this.negative === 0, "imaskn works only with positive numbers"), this.length <= s)) return this; - if ((r !== 0 && s++, (this.length = Math.min(s, this.length)), r !== 0)) { - var mask = 67108863 ^ ((67108863 >>> r) << r); - this.words[this.length - 1] &= mask; - } - return this.strip(); - }), - (BN.prototype.maskn = function (bits) { - return this.clone().imaskn(bits); - }), - (BN.prototype.iaddn = function (num) { - return ( - assert(typeof num == "number"), - assert(num < 67108864), - num < 0 - ? this.isubn(-num) - : this.negative !== 0 - ? this.length === 1 && (this.words[0] | 0) < num - ? ((this.words[0] = num - (this.words[0] | 0)), (this.negative = 0), this) - : ((this.negative = 0), this.isubn(num), (this.negative = 1), this) - : this._iaddn(num) - ); - }), - (BN.prototype._iaddn = function (num) { - this.words[0] += num; - for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) - (this.words[i] -= 67108864), i === this.length - 1 ? (this.words[i + 1] = 1) : this.words[i + 1]++; - return (this.length = Math.max(this.length, i + 1)), this; - }), - (BN.prototype.isubn = function (num) { - if ((assert(typeof num == "number"), assert(num < 67108864), num < 0)) return this.iaddn(-num); - if (this.negative !== 0) return (this.negative = 0), this.iaddn(num), (this.negative = 1), this; - if (((this.words[0] -= num), this.length === 1 && this.words[0] < 0)) - (this.words[0] = -this.words[0]), (this.negative = 1); - else - for (var i = 0; i < this.length && this.words[i] < 0; i++) - (this.words[i] += 67108864), (this.words[i + 1] -= 1); - return this.strip(); - }), - (BN.prototype.addn = function (num) { - return this.clone().iaddn(num); - }), - (BN.prototype.subn = function (num) { - return this.clone().isubn(num); - }), - (BN.prototype.iabs = function () { - return (this.negative = 0), this; - }), - (BN.prototype.abs = function () { - return this.clone().iabs(); - }), - (BN.prototype._ishlnsubmul = function (num, mul, shift) { - var len = num.length + shift, - i; - this._expand(len); - var w, - carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - (w -= right & 67108863), - (carry = (w >> 26) - ((right / 67108864) | 0)), - (this.words[i + shift] = w & 67108863); - } - for (; i < this.length - shift; i++) - (w = (this.words[i + shift] | 0) + carry), (carry = w >> 26), (this.words[i + shift] = w & 67108863); - if (carry === 0) return this.strip(); - for (assert(carry === -1), carry = 0, i = 0; i < this.length; i++) - (w = -(this.words[i] | 0) + carry), (carry = w >> 26), (this.words[i] = w & 67108863); - return (this.negative = 1), this.strip(); - }), - (BN.prototype._wordDiv = function (num, mode) { - var shift = this.length - num.length, - a = this.clone(), - b = num, - bhi = b.words[b.length - 1] | 0, - bhiBits = this._countBits(bhi); - (shift = 26 - bhiBits), - shift !== 0 && ((b = b.ushln(shift)), a.iushln(shift), (bhi = b.words[b.length - 1] | 0)); - var m = a.length - b.length, - q; - if (mode !== "mod") { - (q = new BN(null)), (q.length = m + 1), (q.words = new Array(q.length)); - for (var i = 0; i < q.length; i++) q.words[i] = 0; - } - var diff = a.clone()._ishlnsubmul(b, 1, m); - diff.negative === 0 && ((a = diff), q && (q.words[m] = 1)); - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); - for (qj = Math.min((qj / bhi) | 0, 67108863), a._ishlnsubmul(b, qj, j); a.negative !== 0; ) - qj--, (a.negative = 0), a._ishlnsubmul(b, 1, j), a.isZero() || (a.negative ^= 1); - q && (q.words[j] = qj); - } - return ( - q && q.strip(), - a.strip(), - mode !== "div" && shift !== 0 && a.iushrn(shift), - { - div: q || null, - mod: a, - } - ); - }), - (BN.prototype.divmod = function (num, mode, positive) { - if ((assert(!num.isZero()), this.isZero())) - return { - div: new BN(0), - mod: new BN(0), - }; - var div, mod, res; - return this.negative !== 0 && num.negative === 0 - ? ((res = this.neg().divmod(num, mode)), - mode !== "mod" && (div = res.div.neg()), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.iadd(num)), - { - div, - mod, - }) - : this.negative === 0 && num.negative !== 0 - ? ((res = this.divmod(num.neg(), mode)), - mode !== "mod" && (div = res.div.neg()), - { - div, - mod: res.mod, - }) - : (this.negative & num.negative) !== 0 - ? ((res = this.neg().divmod(num.neg(), mode)), - mode !== "div" && ((mod = res.mod.neg()), positive && mod.negative !== 0 && mod.isub(num)), - { - div: res.div, - mod, - }) - : num.length > this.length || this.cmp(num) < 0 - ? { - div: new BN(0), - mod: this, - } - : num.length === 1 - ? mode === "div" - ? { - div: this.divn(num.words[0]), - mod: null, - } - : mode === "mod" - ? { - div: null, - mod: new BN(this.modn(num.words[0])), - } - : { - div: this.divn(num.words[0]), - mod: new BN(this.modn(num.words[0])), - } - : this._wordDiv(num, mode); - }), - (BN.prototype.div = function (num) { - return this.divmod(num, "div", !1).div; - }), - (BN.prototype.mod = function (num) { - return this.divmod(num, "mod", !1).mod; - }), - (BN.prototype.umod = function (num) { - return this.divmod(num, "mod", !0).mod; - }), - (BN.prototype.divRound = function (num) { - var dm = this.divmod(num); - if (dm.mod.isZero()) return dm.div; - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod, - half = num.ushrn(1), - r2 = num.andln(1), - cmp = mod.cmp(half); - return cmp < 0 || (r2 === 1 && cmp === 0) - ? dm.div - : dm.div.negative !== 0 - ? dm.div.isubn(1) - : dm.div.iaddn(1); - }), - (BN.prototype.modn = function (num) { - assert(num <= 67108863); - for (var p = (1 << 26) % num, acc = 0, i = this.length - 1; i >= 0; i--) - acc = (p * acc + (this.words[i] | 0)) % num; - return acc; - }), - (BN.prototype.idivn = function (num) { - assert(num <= 67108863); - for (var carry = 0, i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 67108864; - (this.words[i] = (w / num) | 0), (carry = w % num); - } - return this.strip(); - }), - (BN.prototype.divn = function (num) { - return this.clone().idivn(num); - }), - (BN.prototype.egcd = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var x = this, - y = p.clone(); - x.negative !== 0 ? (x = x.umod(p)) : (x = x.clone()); - for (var A = new BN(1), B = new BN(0), C = new BN(0), D = new BN(1), g = 0; x.isEven() && y.isEven(); ) - x.iushrn(1), y.iushrn(1), ++g; - for (var yp = y.clone(), xp = x.clone(); !x.isZero(); ) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) - for (x.iushrn(i); i-- > 0; ) - (A.isOdd() || B.isOdd()) && (A.iadd(yp), B.isub(xp)), A.iushrn(1), B.iushrn(1); - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) - for (y.iushrn(j); j-- > 0; ) - (C.isOdd() || D.isOdd()) && (C.iadd(yp), D.isub(xp)), C.iushrn(1), D.iushrn(1); - x.cmp(y) >= 0 ? (x.isub(y), A.isub(C), B.isub(D)) : (y.isub(x), C.isub(A), D.isub(B)); - } - return { - a: C, - b: D, - gcd: y.iushln(g), - }; - }), - (BN.prototype._invmp = function (p) { - assert(p.negative === 0), assert(!p.isZero()); - var a = this, - b = p.clone(); - a.negative !== 0 ? (a = a.umod(p)) : (a = a.clone()); - for (var x1 = new BN(1), x2 = new BN(0), delta = b.clone(); a.cmpn(1) > 0 && b.cmpn(1) > 0; ) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) for (a.iushrn(i); i-- > 0; ) x1.isOdd() && x1.iadd(delta), x1.iushrn(1); - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) for (b.iushrn(j); j-- > 0; ) x2.isOdd() && x2.iadd(delta), x2.iushrn(1); - a.cmp(b) >= 0 ? (a.isub(b), x1.isub(x2)) : (b.isub(a), x2.isub(x1)); - } - var res; - return a.cmpn(1) === 0 ? (res = x1) : (res = x2), res.cmpn(0) < 0 && res.iadd(p), res; - }), - (BN.prototype.gcd = function (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - var a = this.clone(), - b = num.clone(); - (a.negative = 0), (b.negative = 0); - for (var shift = 0; a.isEven() && b.isEven(); shift++) a.iushrn(1), b.iushrn(1); - do { - for (; a.isEven(); ) a.iushrn(1); - for (; b.isEven(); ) b.iushrn(1); - var r = a.cmp(b); - if (r < 0) { - var t = a; - (a = b), (b = t); - } else if (r === 0 || b.cmpn(1) === 0) break; - a.isub(b); - } while (!0); - return b.iushln(shift); - }), - (BN.prototype.invm = function (num) { - return this.egcd(num).a.umod(num); - }), - (BN.prototype.isEven = function () { - return (this.words[0] & 1) === 0; - }), - (BN.prototype.isOdd = function () { - return (this.words[0] & 1) === 1; - }), - (BN.prototype.andln = function (num) { - return this.words[0] & num; - }), - (BN.prototype.bincn = function (bit) { - assert(typeof bit == "number"); - var r = bit % 26, - s = (bit - r) / 26, - q = 1 << r; - if (this.length <= s) return this._expand(s + 1), (this.words[s] |= q), this; - for (var carry = q, i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - (w += carry), (carry = w >>> 26), (w &= 67108863), (this.words[i] = w); - } - return carry !== 0 && ((this.words[i] = carry), this.length++), this; - }), - (BN.prototype.isZero = function () { - return this.length === 1 && this.words[0] === 0; - }), - (BN.prototype.cmpn = function (num) { - var negative = num < 0; - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - this.strip(); - var res; - if (this.length > 1) res = 1; - else { - negative && (num = -num), assert(num <= 67108863, "Number is too big"); - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.cmp = function (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - var res = this.ucmp(num); - return this.negative !== 0 ? -res | 0 : res; - }), - (BN.prototype.ucmp = function (num) { - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - for (var res = 0, i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0, - b = num.words[i] | 0; - if (a !== b) { - a < b ? (res = -1) : a > b && (res = 1); - break; - } - } - return res; - }), - (BN.prototype.gtn = function (num) { - return this.cmpn(num) === 1; - }), - (BN.prototype.gt = function (num) { - return this.cmp(num) === 1; - }), - (BN.prototype.gten = function (num) { - return this.cmpn(num) >= 0; - }), - (BN.prototype.gte = function (num) { - return this.cmp(num) >= 0; - }), - (BN.prototype.ltn = function (num) { - return this.cmpn(num) === -1; - }), - (BN.prototype.lt = function (num) { - return this.cmp(num) === -1; - }), - (BN.prototype.lten = function (num) { - return this.cmpn(num) <= 0; - }), - (BN.prototype.lte = function (num) { - return this.cmp(num) <= 0; - }), - (BN.prototype.eqn = function (num) { - return this.cmpn(num) === 0; - }), - (BN.prototype.eq = function (num) { - return this.cmp(num) === 0; - }), - (BN.red = function (num) { - return new Red(num); - }), - (BN.prototype.toRed = function (ctx) { - return ( - assert(!this.red, "Already a number in reduction context"), - assert(this.negative === 0, "red works only with positives"), - ctx.convertTo(this)._forceRed(ctx) - ); - }), - (BN.prototype.fromRed = function () { - return assert(this.red, "fromRed works only with numbers in reduction context"), this.red.convertFrom(this); - }), - (BN.prototype._forceRed = function (ctx) { - return (this.red = ctx), this; - }), - (BN.prototype.forceRed = function (ctx) { - return assert(!this.red, "Already a number in reduction context"), this._forceRed(ctx); - }), - (BN.prototype.redAdd = function (num) { - return assert(this.red, "redAdd works only with red numbers"), this.red.add(this, num); - }), - (BN.prototype.redIAdd = function (num) { - return assert(this.red, "redIAdd works only with red numbers"), this.red.iadd(this, num); - }), - (BN.prototype.redSub = function (num) { - return assert(this.red, "redSub works only with red numbers"), this.red.sub(this, num); - }), - (BN.prototype.redISub = function (num) { - return assert(this.red, "redISub works only with red numbers"), this.red.isub(this, num); - }), - (BN.prototype.redShl = function (num) { - return assert(this.red, "redShl works only with red numbers"), this.red.shl(this, num); - }), - (BN.prototype.redMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.mul(this, num) - ); - }), - (BN.prototype.redIMul = function (num) { - return ( - assert(this.red, "redMul works only with red numbers"), - this.red._verify2(this, num), - this.red.imul(this, num) - ); - }), - (BN.prototype.redSqr = function () { - return assert(this.red, "redSqr works only with red numbers"), this.red._verify1(this), this.red.sqr(this); - }), - (BN.prototype.redISqr = function () { - return assert(this.red, "redISqr works only with red numbers"), this.red._verify1(this), this.red.isqr(this); - }), - (BN.prototype.redSqrt = function () { - return assert(this.red, "redSqrt works only with red numbers"), this.red._verify1(this), this.red.sqrt(this); - }), - (BN.prototype.redInvm = function () { - return assert(this.red, "redInvm works only with red numbers"), this.red._verify1(this), this.red.invm(this); - }), - (BN.prototype.redNeg = function () { - return assert(this.red, "redNeg works only with red numbers"), this.red._verify1(this), this.red.neg(this); - }), - (BN.prototype.redPow = function (num) { - return assert(this.red && !num.red, "redPow(normalNum)"), this.red._verify1(this), this.red.pow(this, num); - }); - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null, - }; - function MPrime(name, p) { - (this.name = name), - (this.p = new BN(p, 16)), - (this.n = this.p.bitLength()), - (this.k = new BN(1).iushln(this.n).isub(this.p)), - (this.tmp = this._tmp()); - } - (MPrime.prototype._tmp = function () { - var tmp = new BN(null); - return (tmp.words = new Array(Math.ceil(this.n / 13))), tmp; - }), - (MPrime.prototype.ireduce = function (num) { - var r = num, - rlen; - do this.split(r, this.tmp), (r = this.imulK(r)), (r = r.iadd(this.tmp)), (rlen = r.bitLength()); - while (rlen > this.n); - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - return ( - cmp === 0 - ? ((r.words[0] = 0), (r.length = 1)) - : cmp > 0 - ? r.isub(this.p) - : r.strip !== void 0 - ? r.strip() - : r._strip(), - r - ); - }), - (MPrime.prototype.split = function (input, out) { - input.iushrn(this.n, 0, out); - }), - (MPrime.prototype.imulK = function (num) { - return num.imul(this.k); - }); - function K256() { - MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f"); - } - inherits(K256, MPrime), - (K256.prototype.split = function (input, output) { - for (var mask = 4194303, outLen = Math.min(input.length, 9), i = 0; i < outLen; i++) - output.words[i] = input.words[i]; - if (((output.length = outLen), input.length <= 9)) { - (input.words[0] = 0), (input.length = 1); - return; - } - var prev = input.words[9]; - for (output.words[output.length++] = prev & mask, i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - (input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22)), (prev = next); - } - (prev >>>= 22), - (input.words[i - 10] = prev), - prev === 0 && input.length > 10 ? (input.length -= 10) : (input.length -= 9); - }), - (K256.prototype.imulK = function (num) { - (num.words[num.length] = 0), (num.words[num.length + 1] = 0), (num.length += 2); - for (var lo = 0, i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - (lo += w * 977), (num.words[i] = lo & 67108863), (lo = w * 64 + ((lo / 67108864) | 0)); - } - return ( - num.words[num.length - 1] === 0 && (num.length--, num.words[num.length - 1] === 0 && num.length--), num - ); - }); - function P224() { - MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001"); - } - inherits(P224, MPrime); - function P192() { - MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff"); - } - inherits(P192, MPrime); - function P25519() { - MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed"); - } - inherits(P25519, MPrime), - (P25519.prototype.imulK = function (num) { - for (var carry = 0, i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 19 + carry, - lo = hi & 67108863; - (hi >>>= 26), (num.words[i] = lo), (carry = hi); - } - return carry !== 0 && (num.words[num.length++] = carry), num; - }), - (BN._prime = function (name) { - if (primes[name]) return primes[name]; - var prime2; - if (name === "k256") prime2 = new K256(); - else if (name === "p224") prime2 = new P224(); - else if (name === "p192") prime2 = new P192(); - else if (name === "p25519") prime2 = new P25519(); - else throw new Error("Unknown prime " + name); - return (primes[name] = prime2), prime2; - }); - function Red(m) { - if (typeof m == "string") { - var prime = BN._prime(m); - (this.m = prime.p), (this.prime = prime); - } else assert(m.gtn(1), "modulus must be greater than 1"), (this.m = m), (this.prime = null); - } - (Red.prototype._verify1 = function (a) { - assert(a.negative === 0, "red works only with positives"), assert(a.red, "red works only with red numbers"); - }), - (Red.prototype._verify2 = function (a, b) { - assert((a.negative | b.negative) === 0, "red works only with positives"), - assert(a.red && a.red === b.red, "red works only with red numbers"); - }), - (Red.prototype.imod = function (a) { - return this.prime ? this.prime.ireduce(a)._forceRed(this) : a.umod(this.m)._forceRed(this); - }), - (Red.prototype.neg = function (a) { - return a.isZero() ? a.clone() : this.m.sub(a)._forceRed(this); - }), - (Red.prototype.add = function (a, b) { - this._verify2(a, b); - var res = a.add(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res._forceRed(this); - }), - (Red.prototype.iadd = function (a, b) { - this._verify2(a, b); - var res = a.iadd(b); - return res.cmp(this.m) >= 0 && res.isub(this.m), res; - }), - (Red.prototype.sub = function (a, b) { - this._verify2(a, b); - var res = a.sub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res._forceRed(this); - }), - (Red.prototype.isub = function (a, b) { - this._verify2(a, b); - var res = a.isub(b); - return res.cmpn(0) < 0 && res.iadd(this.m), res; - }), - (Red.prototype.shl = function (a, num) { - return this._verify1(a), this.imod(a.ushln(num)); - }), - (Red.prototype.imul = function (a, b) { - return this._verify2(a, b), this.imod(a.imul(b)); - }), - (Red.prototype.mul = function (a, b) { - return this._verify2(a, b), this.imod(a.mul(b)); - }), - (Red.prototype.isqr = function (a) { - return this.imul(a, a.clone()); - }), - (Red.prototype.sqr = function (a) { - return this.mul(a, a); - }), - (Red.prototype.sqrt = function (a) { - if (a.isZero()) return a.clone(); - var mod3 = this.m.andln(3); - if ((assert(mod3 % 2 === 1), mod3 === 3)) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - for (var q = this.m.subn(1), s = 0; !q.isZero() && q.andln(1) === 0; ) s++, q.iushrn(1); - assert(!q.isZero()); - var one = new BN(1).toRed(this), - nOne = one.redNeg(), - lpow = this.m.subn(1).iushrn(1), - z = this.m.bitLength(); - for (z = new BN(2 * z * z).toRed(this); this.pow(z, lpow).cmp(nOne) !== 0; ) z.redIAdd(nOne); - for ( - var c = this.pow(z, q), r = this.pow(a, q.addn(1).iushrn(1)), t = this.pow(a, q), m = s; - t.cmp(one) !== 0; - - ) { - for (var tmp = t, i = 0; tmp.cmp(one) !== 0; i++) tmp = tmp.redSqr(); - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - (r = r.redMul(b)), (c = b.redSqr()), (t = t.redMul(c)), (m = i); - } - return r; - }), - (Red.prototype.invm = function (a) { - var inv = a._invmp(this.m); - return inv.negative !== 0 ? ((inv.negative = 0), this.imod(inv).redNeg()) : this.imod(inv); - }), - (Red.prototype.pow = function (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - var windowSize = 4, - wnd = new Array(1 << windowSize); - (wnd[0] = new BN(1).toRed(this)), (wnd[1] = a); - for (var i = 2; i < wnd.length; i++) wnd[i] = this.mul(wnd[i - 1], a); - var res = wnd[0], - current = 0, - currentLen = 0, - start = num.bitLength() % 26; - for (start === 0 && (start = 26), i = num.length - 1; i >= 0; i--) { - for (var word = num.words[i], j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if ((res !== wnd[0] && (res = this.sqr(res)), bit === 0 && current === 0)) { - currentLen = 0; - continue; - } - (current <<= 1), - (current |= bit), - currentLen++, - !(currentLen !== windowSize && (i !== 0 || j !== 0)) && - ((res = this.mul(res, wnd[current])), (currentLen = 0), (current = 0)); - } - start = 26; - } - return res; - }), - (Red.prototype.convertTo = function (num) { - var r = num.umod(this.m); - return r === num ? r.clone() : r; - }), - (Red.prototype.convertFrom = function (num) { - var res = num.clone(); - return (res.red = null), res; - }), - (BN.mont = function (num) { - return new Mont(num); - }); - function Mont(m) { - Red.call(this, m), - (this.shift = this.m.bitLength()), - this.shift % 26 !== 0 && (this.shift += 26 - (this.shift % 26)), - (this.r = new BN(1).iushln(this.shift)), - (this.r2 = this.imod(this.r.sqr())), - (this.rinv = this.r._invmp(this.m)), - (this.minv = this.rinv.mul(this.r).isubn(1).div(this.m)), - (this.minv = this.minv.umod(this.r)), - (this.minv = this.r.sub(this.minv)); - } - inherits(Mont, Red), - (Mont.prototype.convertTo = function (num) { - return this.imod(num.ushln(this.shift)); - }), - (Mont.prototype.convertFrom = function (num) { - var r = this.imod(num.mul(this.rinv)); - return (r.red = null), r; - }), - (Mont.prototype.imul = function (a, b) { - if (a.isZero() || b.isZero()) return (a.words[0] = 0), (a.length = 1), a; - var t = a.imul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.mul = function (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - var t = a.mul(b), - c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m), - u = t.isub(c).iushrn(this.shift), - res = u; - return ( - u.cmp(this.m) >= 0 ? (res = u.isub(this.m)) : u.cmpn(0) < 0 && (res = u.iadd(this.m)), res._forceRed(this) - ); - }), - (Mont.prototype.invm = function (a) { - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }); - })(typeof module > "u" || module, exports); - }, -}); - -const { CryptoHasher } = globalThis.Bun; - -// node_modules/public-encrypt/withPublic.js -var require_withPublic = __commonJS({ - "node_modules/public-encrypt/withPublic.js"(exports, module) { - var BN = require_bn7(), - Buffer2 = require_safe_buffer().Buffer; - function withPublic(paddedMsg, key) { - return Buffer2.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray()); - } - module.exports = withPublic; - }, -}); - -// node_modules/public-encrypt/publicEncrypt.js -var require_publicEncrypt = __commonJS({ - "node_modules/public-encrypt/publicEncrypt.js"(exports, module) { - var parseKeys = require_parse_asn1(), - randomBytes = require_browser(), - createHash = require_browser2(), - mgf = require_mgf(), - xor = require_xor(), - BN = require_bn7(), - withPublic = require_withPublic(), - crt = require_browserify_rsa(), - Buffer2 = require_safe_buffer().Buffer; - module.exports = function (publicKey, msg, reverse) { - var padding; - publicKey.padding ? (padding = publicKey.padding) : reverse ? (padding = 1) : (padding = 4); - var key = parseKeys(publicKey), - paddedMsg; - if (padding === 4) paddedMsg = oaep(key, msg); - else if (padding === 1) paddedMsg = pkcs1(key, msg, reverse); - else if (padding === 3) { - if (((paddedMsg = new BN(msg)), paddedMsg.cmp(key.modulus) >= 0)) throw new Error("data too long for modulus"); - } else throw new Error("unknown padding"); - return reverse ? crt(paddedMsg, key) : withPublic(paddedMsg, key); - }; - function oaep(key, msg) { - var k = key.modulus.byteLength(), - mLen = msg.length, - iHash = createHash("sha1").update(Buffer2.alloc(0)).digest(), - hLen = iHash.length, - hLen2 = 2 * hLen; - if (mLen > k - hLen2 - 2) throw new Error("message too long"); - var ps = Buffer2.alloc(k - mLen - hLen2 - 2), - dblen = k - hLen - 1, - seed = randomBytes(hLen), - maskedDb = xor(Buffer2.concat([iHash, ps, Buffer2.alloc(1, 1), msg], dblen), mgf(seed, dblen)), - maskedSeed = xor(seed, mgf(maskedDb, hLen)); - return new BN(Buffer2.concat([Buffer2.alloc(1), maskedSeed, maskedDb], k)); - } - function pkcs1(key, msg, reverse) { - var mLen = msg.length, - k = key.modulus.byteLength(); - if (mLen > k - 11) throw new Error("message too long"); - var ps; - return ( - reverse ? (ps = Buffer2.alloc(k - mLen - 3, 255)) : (ps = nonZero(k - mLen - 3)), - new BN(Buffer2.concat([Buffer2.from([0, reverse ? 1 : 2]), ps, Buffer2.alloc(1), msg], k)) - ); - } - function nonZero(len) { - for (var out = Buffer2.allocUnsafe(len), i = 0, cache = randomBytes(len * 2), cur = 0, num; i < len; ) - cur === cache.length && ((cache = randomBytes(len * 2)), (cur = 0)), - (num = cache[cur++]), - num && (out[i++] = num); - return out; - } - }, -}); - -// node_modules/public-encrypt/privateDecrypt.js -var require_privateDecrypt = __commonJS({ - "node_modules/public-encrypt/privateDecrypt.js"(exports, module) { - var parseKeys = require_parse_asn1(), - mgf = require_mgf(), - xor = require_xor(), - BN = require_bn7(), - crt = require_browserify_rsa(), - createHash = require_browser2(), - withPublic = require_withPublic(), - Buffer2 = require_safe_buffer().Buffer; - module.exports = function (privateKey, enc, reverse) { - var padding; - privateKey.padding ? (padding = privateKey.padding) : reverse ? (padding = 1) : (padding = 4); - var key = parseKeys(privateKey), - k = key.modulus.byteLength(); - if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) throw new Error("decryption error"); - var msg; - reverse ? (msg = withPublic(new BN(enc), key)) : (msg = crt(enc, key)); - var zBuffer = Buffer2.alloc(k - msg.length); - if (((msg = Buffer2.concat([zBuffer, msg], k)), padding === 4)) return oaep(key, msg); - if (padding === 1) return pkcs1(key, msg, reverse); - if (padding === 3) return msg; - throw new Error("unknown padding"); - }; - function oaep(key, msg) { - var k = key.modulus.byteLength(), - iHash = createHash("sha1").update(Buffer2.alloc(0)).digest(), - hLen = iHash.length; - if (msg[0] !== 0) throw new Error("decryption error"); - var maskedSeed = msg.slice(1, hLen + 1), - maskedDb = msg.slice(hLen + 1), - seed = xor(maskedSeed, mgf(maskedDb, hLen)), - db = xor(maskedDb, mgf(seed, k - hLen - 1)); - if (compare(iHash, db.slice(0, hLen))) throw new Error("decryption error"); - for (var i = hLen; db[i] === 0; ) i++; - if (db[i++] !== 1) throw new Error("decryption error"); - return db.slice(i); - } - function pkcs1(key, msg, reverse) { - for (var p1 = msg.slice(0, 2), i = 2, status = 0; msg[i++] !== 0; ) - if (i >= msg.length) { - status++; - break; - } - var ps = msg.slice(2, i - 1); - if ( - (((p1.toString("hex") !== "0002" && !reverse) || (p1.toString("hex") !== "0001" && reverse)) && status++, - ps.length < 8 && status++, - status) - ) - throw new Error("decryption error"); - return msg.slice(i); - } - function compare(a, b) { - (a = Buffer2.from(a)), (b = Buffer2.from(b)); - var dif = 0, - len = a.length; - a.length !== b.length && (dif++, (len = Math.min(a.length, b.length))); - for (var i = -1; ++i < len; ) dif += a[i] ^ b[i]; - return dif; - } - }, -}); - -// node_modules/public-encrypt/browser.js -var require_browser10 = __commonJS({ - "node_modules/public-encrypt/browser.js"(exports) { - exports.publicEncrypt = require_publicEncrypt(); - exports.privateDecrypt = require_privateDecrypt(); - exports.privateEncrypt = function (key, buf) { - return exports.publicEncrypt(key, buf, !0); - }; - exports.publicDecrypt = function (key, buf) { - return exports.privateDecrypt(key, buf, !0); - }; - }, -}); - -// node_modules/randomfill/browser.js -var require_browser11 = __commonJS({ - "node_modules/randomfill/browser.js"(exports) { - "use strict"; - var safeBuffer = require_safe_buffer(), - randombytes = require_browser(), - Buffer2 = safeBuffer.Buffer, - kBufferMaxLength = safeBuffer.kMaxLength, - kMaxUint32 = Math.pow(2, 32) - 1; - function assertOffset(offset, length) { - if (typeof offset != "number" || offset !== offset) throw new TypeError("offset must be a number"); - if (offset > kMaxUint32 || offset < 0) throw new TypeError("offset must be a uint32"); - if (offset > kBufferMaxLength || offset > length) throw new RangeError("offset out of range"); - } - function assertSize(size, offset, length) { - if (typeof size != "number" || size !== size) throw new TypeError("size must be a number"); - if (size > kMaxUint32 || size < 0) throw new TypeError("size must be a uint32"); - if (size + offset > length || size > kBufferMaxLength) throw new RangeError("buffer too small"); - } - - exports.randomFill = randomFill; - exports.randomFillSync = randomFillSync; - - function randomFill(buf, offset, size, cb) { - if (!Buffer2.isBuffer(buf) && !(buf instanceof global.Uint8Array)) - throw new TypeError('"buf" argument must be a Buffer or Uint8Array'); - if (typeof offset == "function") (cb = offset), (offset = 0), (size = buf.length); - else if (typeof size == "function") (cb = size), (size = buf.length - offset); - else if (typeof cb != "function") throw new TypeError('"cb" argument must be a function'); - return assertOffset(offset, buf.length), assertSize(size, offset, buf.length), actualFill(buf, offset, size, cb); - } - function actualFill(buf, offset, size, cb) { - if (cb) { - randombytes(size, function (err, bytes2) { - if (err) return cb(err); - bytes2.copy(buf, offset), cb(null, buf); - }); - return; - } - var bytes = randombytes(size); - return bytes.copy(buf, offset), buf; - } - function randomFillSync(buf, offset, size) { - if ((typeof offset > "u" && (offset = 0), !Buffer2.isBuffer(buf) && !(buf instanceof global.Uint8Array))) - throw new TypeError('"buf" argument must be a Buffer or Uint8Array'); - return ( - assertOffset(offset, buf.length), - size === void 0 && (size = buf.length - offset), - assertSize(size, offset, buf.length), - actualFill(buf, offset, size) - ); - } - }, -}); - -// node_modules/crypto-browserify/index.js -var require_crypto_browserify2 = __commonJS({ - "node_modules/crypto-browserify/index.js"(exports) { - "use strict"; - exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require_browser(); - exports.createHash = require_browser2(); - exports.Hash = exports.createHash.Hash; - exports.createHmac = exports.Hmac = require_browser3(); - var algos = require_algos(), - algoKeys = Object.keys(algos), - hashes = ["sha1", "sha224", "sha256", "sha384", "sha512", "md5", "rmd160"].concat(algoKeys); - exports.getHashes = function () { - return hashes; - }; - var p = require_browser4(); - exports.pbkdf2 = p.pbkdf2; - exports.pbkdf2Sync = p.pbkdf2Sync; - var aes = require_browser6(); - exports.Cipher = aes.Cipher; - exports.createCipher = aes.createCipher; - exports.Cipheriv = aes.Cipheriv; - exports.createCipheriv = aes.createCipheriv; - exports.Decipher = aes.Decipher; - exports.createDecipher = aes.createDecipher; - exports.Decipheriv = aes.Decipheriv; - exports.createDecipheriv = aes.createDecipheriv; - exports.getCiphers = aes.getCiphers; - exports.listCiphers = aes.listCiphers; - var dh = require_browser7(); - exports.DiffieHellmanGroup = dh.DiffieHellmanGroup; - exports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup; - exports.getDiffieHellman = dh.getDiffieHellman; - exports.createDiffieHellman = dh.createDiffieHellman; - exports.DiffieHellman = dh.DiffieHellman; - var sign = require_browser8(); - exports.createSign = sign.createSign; - exports.Sign = sign.Sign; - exports.createVerify = sign.createVerify; - exports.Verify = sign.Verify; - exports.createECDH = require_browser9(); - var publicEncrypt = require_browser10(); - exports.publicEncrypt = publicEncrypt.publicEncrypt; - exports.privateEncrypt = publicEncrypt.privateEncrypt; - exports.publicDecrypt = publicEncrypt.publicDecrypt; - exports.privateDecrypt = publicEncrypt.privateDecrypt; - exports.getRandomValues = values => crypto.getRandomValues(values); - var rf = require_browser11(); - exports.randomFill = rf.randomFill; - exports.randomFillSync = rf.randomFillSync; - exports.createCredentials = function () { - throw new Error( - [ - "sorry, createCredentials is not implemented yet", - "we accept pull requests", - "https://github.com/crypto-browserify/crypto-browserify", - ].join(` -`), - ); - }; - exports.constants = { - DH_CHECK_P_NOT_SAFE_PRIME: 2, - DH_CHECK_P_NOT_PRIME: 1, - DH_UNABLE_TO_CHECK_GENERATOR: 4, - DH_NOT_SUITABLE_GENERATOR: 8, - NPN_ENABLED: 1, - ALPN_ENABLED: 1, - RSA_PKCS1_PADDING: 1, - RSA_SSLV23_PADDING: 2, - RSA_NO_PADDING: 3, - RSA_PKCS1_OAEP_PADDING: 4, - RSA_X931_PADDING: 5, - RSA_PKCS1_PSS_PADDING: 6, - POINT_CONVERSION_COMPRESSED: 2, - POINT_CONVERSION_UNCOMPRESSED: 4, - POINT_CONVERSION_HYBRID: 6, - }; - }, -}); - -// crypto.js -var crypto_exports = { - ...require_crypto_browserify2(), - [Symbol.for("CommonJS")]: 0, -}; -var DEFAULT_ENCODING = "buffer", - getRandomValues = array => crypto.getRandomValues(array), - randomUUID = () => crypto.randomUUID(), - timingSafeEqual = - "timingSafeEqual" in crypto - ? (a, b) => { - let { byteLength: byteLengthA } = a, - { byteLength: byteLengthB } = b; - if (typeof byteLengthA != "number" || typeof byteLengthB != "number") - throw new TypeError("Input must be an array buffer view"); - if (byteLengthA !== byteLengthB) throw new RangeError("Input buffers must have the same length"); - return crypto.timingSafeEqual(a, b); - } - : void 0, - scryptSync = - "scryptSync" in crypto - ? (password, salt, keylen, options) => { - let res = crypto.scryptSync(password, salt, keylen, options); - return DEFAULT_ENCODING !== "buffer" ? new Buffer(res).toString(DEFAULT_ENCODING) : new Buffer(res); - } - : void 0, - scrypt = - "scryptSync" in crypto - ? function (password, salt, keylen, options, callback) { - if ( - (typeof options == "function" && ((callback = options), (options = void 0)), typeof callback != "function") - ) { - var err = new TypeError("callback must be a function"); - throw ((err.code = "ERR_INVALID_CALLBACK"), err); - } - try { - let result = crypto.scryptSync(password, salt, keylen, options); - process.nextTick( - callback, - null, - DEFAULT_ENCODING !== "buffer" ? new Buffer(result).toString(DEFAULT_ENCODING) : new Buffer(result), - ); - } catch (err2) { - throw err2; - } - } - : void 0; -timingSafeEqual && - (Object.defineProperty(timingSafeEqual, "name", { - value: "::bunternal::", - }), - Object.defineProperty(scrypt, "name", { - value: "::bunternal::", - }), - Object.defineProperty(scryptSync, "name", { - value: "::bunternal::", - })); -var webcrypto = crypto; -__export(crypto_exports, { - DEFAULT_ENCODING: () => DEFAULT_ENCODING, - getRandomValues: () => getRandomValues, - randomUUID: () => randomUUID, - scrypt: () => scrypt, - scryptSync: () => scryptSync, - timingSafeEqual: () => timingSafeEqual, - webcrypto: () => webcrypto, - subtle: () => webcrypto.subtle, -}); - -export const { - randomBytes, - rng, - pseudoRandomBytes, - prng, - Hash, - createHash, - createHmac, - Hmac, - getHashes, - pbkdf2, - pbkdf2Sync, - Cipher, - createCipher, - Cipheriv, - createCipheriv, - Decipher, - createDecipher, - Decipheriv, - createDecipheriv, - getCiphers, - listCiphers, - DiffieHellmanGroup, - createDiffieHellmanGroup, - getDiffieHellman, - createDiffieHellman, - DiffieHellman, - createSign, - Sign, - createVerify, - Verify, - createECDH, - publicEncrypt, - privateEncrypt, - publicDecrypt, - privateDecrypt, - randomFill, - randomFillSync, - createCredentials, - constants, -} = crypto_exports; -export { DEFAULT_ENCODING, getRandomValues, randomUUID, scrypt, scryptSync, timingSafeEqual, webcrypto }; -export default crypto_exports; -/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ diff --git a/src/bun.js/depd.exports.js b/src/bun.js/depd.exports.js deleted file mode 100644 index b76526c01..000000000 --- a/src/bun.js/depd.exports.js +++ /dev/null @@ -1,88 +0,0 @@ -// TODO: remove this module from being bundled into bun -// This is a temporary workaround for a CommonJS <> ESM interop issue. - -/*! - * depd - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => - function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; -var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => ( - (target = mod != null ? __create(__getProtoOf(mod)) : {}), - __copyProps( - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod, - ) -); - -// node_modules/depd/lib/browser/index.js -var require_browser = __commonJS({ - "node_modules/depd/lib/browser/index.js"(exports, module) { - "use strict"; - module.exports = depd2; - function depd2(namespace) { - if (!namespace) { - throw new TypeError("argument namespace is required"); - } - function deprecate(message) {} - deprecate._file = void 0; - deprecate._ignored = true; - deprecate._namespace = namespace; - deprecate._traced = false; - deprecate._warned = /* @__PURE__ */ Object.create(null); - deprecate.function = wrapfunction; - deprecate.property = wrapproperty; - return deprecate; - } - function wrapfunction(fn, message) { - if (typeof fn !== "function") { - throw new TypeError("argument fn must be a function"); - } - return fn; - } - function wrapproperty(obj, prop, message) { - if (!obj || (typeof obj !== "object" && typeof obj !== "function")) { - throw new TypeError("argument obj must be object"); - } - var descriptor = Object.getOwnPropertyDescriptor(obj, prop); - if (!descriptor) { - throw new TypeError("must call property on owner object"); - } - if (!descriptor.configurable) { - throw new TypeError("property must be configurable"); - } - } - }, -}); - -// bundle.js -var import_depd = __toESM(require_browser()); -var bundle_default = import_depd.default; - -function depd(...args) { - return args.length ? bundle_default(...args) : bundle_default; -} -depd[Symbol.for("CommonJS")] = true; // TODO: this requires hacky default export - -export default depd; diff --git a/src/bun.js/detect-libc.js b/src/bun.js/detect-libc.js deleted file mode 100644 index 884385189..000000000 --- a/src/bun.js/detect-libc.js +++ /dev/null @@ -1,26 +0,0 @@ -export function family() { - return Promise.resolve(null); -} - -export function familySync() { - return null; -} - -export const GLIBC = "glibc"; -export const MUSL = "musl"; - -export function versionAsync() { - return Promise.resolve(version()); -} - -export function version() { - return null; -} - -export function isNonGlibcLinuxSync() { - return false; -} - -export function isNonGlibcLinux() { - return Promise.resolve(isNonGlibcLinuxSync()); -} diff --git a/src/bun.js/detect-libc.linux.js b/src/bun.js/detect-libc.linux.js deleted file mode 100644 index 3a46ffda0..000000000 --- a/src/bun.js/detect-libc.linux.js +++ /dev/null @@ -1,27 +0,0 @@ -// bun only supports glibc at the time of writing -export function family() { - return Promise.resolve(GLIBC); -} - -export function familySync() { - return GLIBC; -} - -export const GLIBC = "glibc"; -export const MUSL = "musl"; - -export function versionAsync() { - return Promise.resolve(version()); -} - -export function version() { - return "2.29"; -} - -export function isNonGlibcLinuxSync() { - return false; -} - -export function isNonGlibcLinux() { - return Promise.resolve(isNonGlibcLinuxSync()); -} diff --git a/src/bun.js/dgram.exports.js b/src/bun.js/dgram.exports.js deleted file mode 100644 index 65b531baa..000000000 --- a/src/bun.js/dgram.exports.js +++ /dev/null @@ -1,46 +0,0 @@ -// This is a stub! None of this is actually implemented yet. - -function hideFromStack(fns) { - for (const fn of fns) { - Object.defineProperty(fn, "name", { - value: "::bunternal::", - }); - } -} - -class TODO extends Error { - constructor(messageName) { - const message = messageName - ? `node:dgram ${messageName} is not implemented yet in Bun. Track the status and thumbs up the issue: https://github.com/oven-sh/bun/issues/1630` - : `node:dgram is not implemented yet in Bun. Track the status and thumbs up the issue: https://github.com/oven-sh/bun/issues/1630`; - super(message); - this.name = "TODO"; - } -} - -function notimpl(message) { - throw new TODO(message); -} - -function createSocket() { - notimpl("createSocket"); -} - -function Socket() { - notimpl("Socket"); -} - -function _createSocketHandle() { - notimpl("_createSocketHandle"); -} - -const defaultObject = { - createSocket, - Socket, - _createSocketHandle, - [Symbol.for("CommonJS")]: 0, -}; - -export { defaultObject as default, Socket, createSocket, _createSocketHandle }; - -hideFromStack([TODO.prototype.constructor, notimpl, createSocket, Socket, _createSocketHandle]); diff --git a/src/bun.js/diagnostics_channel.exports.js b/src/bun.js/diagnostics_channel.exports.js deleted file mode 100644 index 732e8fb73..000000000 --- a/src/bun.js/diagnostics_channel.exports.js +++ /dev/null @@ -1,57 +0,0 @@ -// This is a stub! None of this is actually implemented yet. - -function hideFromStack(fns) { - for (const fn of fns) { - Object.defineProperty(fn, "name", { - value: "::bunternal::", - }); - } -} - -class TODO extends Error { - constructor(messageName) { - const message = messageName - ? `node:diagnostics_channel ${messageName} is not implemented yet in Bun.` - : `node:diagnostics_channel is not implemented yet in Bun.`; - super(message); - this.name = "TODO"; - } -} - -function notimpl() { - throw new TODO(); -} - -class Channel { - constructor(name) { - notimpl(); - } -} - -function channel() { - notimpl(); -} - -function hasSubscribers() { - notimpl(); -} -function subscribe() { - notimpl(); -} - -function unsubscribe() { - notimpl(); -} - -const defaultObject = { - channel, - hasSubscribers, - subscribe, - unsubscribe, - Channel, - [Symbol.for("CommonJS")]: 0, -}; - -export { defaultObject as default, Channel, channel, hasSubscribers, subscribe, unsubscribe }; - -hideFromStack([TODO.prototype.constructor, notimpl, channel, hasSubscribers, subscribe, unsubscribe, Channel]); diff --git a/src/bun.js/events.exports.js b/src/bun.js/events.exports.js deleted file mode 100644 index 61cff17d6..000000000 --- a/src/bun.js/events.exports.js +++ /dev/null @@ -1,464 +0,0 @@ -// Reimplementation of https://nodejs.org/api/events.html -// Reference: https://github.com/nodejs/node/blob/main/lib/events.js -var { isPromise, Array, Object } = import.meta.primordials; -const SymbolFor = Symbol.for; -const ObjectDefineProperty = Object.defineProperty; -const kCapture = Symbol("kCapture"); -const kErrorMonitor = SymbolFor("events.errorMonitor"); -const kMaxEventTargetListeners = Symbol("events.maxEventTargetListeners"); -const kMaxEventTargetListenersWarned = Symbol("events.maxEventTargetListenersWarned"); -const kWatermarkData = SymbolFor("nodejs.watermarkData"); -const kRejection = SymbolFor("nodejs.rejection"); -const captureRejectionSymbol = SymbolFor("nodejs.rejection"); -const ArrayPrototypeSlice = Array.prototype.slice; - -var defaultMaxListeners = 10; - -// EventEmitter must be a standard function because some old code will do weird tricks like `EventEmitter.apply(this)`. -function EventEmitter(opts) { - if (this._events === undefined || this._events === this.__proto__._events) { - this._events = { __proto__: null }; - this._eventsCount = 0; - } - - this._maxListeners ??= undefined; - if ((this[kCapture] = opts?.captureRejections ? Boolean(opts?.captureRejections) : EventEmitterPrototype[kCapture])) { - this.emit = emitWithRejectionCapture; - } -} -const EventEmitterPrototype = EventEmitter.prototype; -EventEmitterPrototype._events = undefined; -EventEmitterPrototype._eventsCount = 0; -EventEmitterPrototype._maxListeners = undefined; -EventEmitterPrototype.setMaxListeners = function setMaxListeners(n) { - validateNumber(n, "setMaxListeners", 0); - this._maxListeners = n; - return this; -}; - -EventEmitterPrototype.getMaxListeners = function getMaxListeners() { - return this._maxListeners ?? defaultMaxListeners; -}; - -function emitError(emitter, args) { - var { _events: events } = emitter; - args[0] ??= new Error("Unhandled error."); - if (!events) throw args[0]; - var errorMonitor = events[kErrorMonitor]; - if (errorMonitor) { - for (var handler of ArrayPrototypeSlice.call(errorMonitor)) { - handler.apply(emitter, args); - } - } - var handlers = events.error; - if (!handlers) throw args[0]; - for (var handler of ArrayPrototypeSlice.call(handlers)) { - handler.apply(emitter, args); - } - return true; -} - -function addCatch(emitter, promise, type, args) { - promise.then(undefined, function (err) { - // The callback is called with nextTick to avoid a follow-up rejection from this promise. - process.nextTick(emitUnhandledRejectionOrErr, emitter, err, type, args); - }); -} - -function emitUnhandledRejectionOrErr(emitter, err, type, args) { - if (typeof emitter[kRejection] === "function") { - emitter[kRejection](err, type, ...args); - } else { - // If the error handler throws, it is not catchable and it will end up in 'uncaughtException'. - // We restore the previous value of kCapture in case the uncaughtException is present - // and the exception is handled. - try { - emitter[kCapture] = false; - emitter.emit("error", err); - } finally { - emitter[kCapture] = true; - } - } -} - -const emitWithoutRejectionCapture = function emit(type, ...args) { - if (type === "error") { - return emitError(this, args); - } - var { _events: events } = this; - if (events === undefined) return false; - var handlers = events[type]; - if (handlers === undefined) return false; - - for (var handler of [...handlers]) { - handler.apply(this, args); - } - return true; -}; - -const emitWithRejectionCapture = function emit(type, ...args) { - if (type === "error") { - return emitError(this, args); - } - var { _events: events } = this; - if (events === undefined) return false; - var handlers = events[type]; - if (handlers === undefined) return false; - for (var handler of [...handlers]) { - var result = handler.apply(this, args); - if (result !== undefined && isPromise(result)) { - addCatch(this, result, type, args); - } - } - return true; -}; - -EventEmitterPrototype.emit = emitWithoutRejectionCapture; - -EventEmitterPrototype.addListener = function addListener(type, fn) { - checkListener(fn); - var events = this._events; - if (!events) { - events = this._events = { __proto__: null }; - this._eventsCount = 0; - } else if (events.newListener) { - this.emit("newListener", type, fn.listener ?? fn); - } - var handlers = events[type]; - if (!handlers) { - events[type] = [fn]; - this._eventsCount++; - } else { - handlers.push(fn); - var m = this._maxListeners ?? defaultMaxListeners; - if (m > 0 && handlers.length > m && !handlers.warned) { - overflowWarning(this, type, handlers); - } - } - return this; -}; - -EventEmitterPrototype.on = EventEmitterPrototype.addListener; - -EventEmitterPrototype.prependListener = function prependListener(type, fn) { - checkListener(fn); - var events = this._events; - if (!events) { - events = this._events = { __proto__: null }; - this._eventsCount = 0; - } else if (events.newListener) { - this.emit("newListener", type, fn.listener ?? fn); - } - var handlers = events[type]; - if (!handlers) { - events[type] = [fn]; - this._eventsCount++; - } else { - handlers.unshift(fn); - var m = this._maxListeners ?? defaultMaxListeners; - if (m > 0 && handlers.length > m && !handlers.warned) { - overflowWarning(this, type, handlers); - } - } - return this; -}; - -function overflowWarning(emitter, type, handlers) { - handlers.warned = true; - const warn = new Error( - `Possible EventEmitter memory leak detected. ${handlers.length} ${String(type)} listeners ` + - `added to [${emitter.constructor.name}]. Use emitter.setMaxListeners() to increase limit`, - ); - warn.name = "MaxListenersExceededWarning"; - warn.emitter = emitter; - warn.type = type; - warn.count = handlers.length; - process.emitWarning(warn); -} - -function onceWrapper(type, listener, ...args) { - this.removeListener(type, listener); - listener.apply(this, args); -} - -EventEmitterPrototype.once = function once(type, fn) { - checkListener(fn); - const bound = onceWrapper.bind(this, type, fn); - bound.listener = fn; - this.addListener(type, bound); - return this; -}; - -EventEmitterPrototype.prependOnceListener = function prependOnceListener(type, fn) { - checkListener(fn); - const bound = onceWrapper.bind(this, type, fn); - bound.listener = fn; - this.prependListener(type, bound); - return this; -}; - -EventEmitterPrototype.removeListener = function removeListener(type, fn) { - checkListener(fn); - var { _events: events } = this; - if (!events) return this; - var handlers = events[type]; - if (!handlers) return this; - var length = handlers.length; - let position = -1; - for (let i = length - 1; i >= 0; i--) { - if (handlers[i] === fn || handlers[i].listener === fn) { - position = i; - break; - } - } - if (position < 0) return this; - if (position === 0) { - handlers.shift(); - } else { - handlers.splice(position, 1); - } - if (handlers.length === 0) { - delete events[type]; - this._eventsCount--; - } - return this; -}; - -EventEmitterPrototype.off = EventEmitterPrototype.removeListener; - -EventEmitterPrototype.removeAllListeners = function removeAllListeners(type) { - var { _events: events } = this; - if (type && events) { - if (events[type]) { - delete events[type]; - this._eventsCount--; - } - } else { - this._events = { __proto__: null }; - } - return this; -}; - -EventEmitterPrototype.listeners = function listeners(type) { - var { _events: events } = this; - if (!events) return []; - var handlers = events[type]; - if (!handlers) return []; - return handlers.map(x => x.listener ?? x); -}; - -EventEmitterPrototype.rawListeners = function rawListeners(type) { - var { _events } = this; - if (!_events) return []; - var handlers = _events[type]; - if (!handlers) return []; - return handlers.slice(); -}; - -EventEmitterPrototype.listenerCount = function listenerCount(type) { - var { _events: events } = this; - if (!events) return 0; - return events[type]?.length ?? 0; -}; - -EventEmitterPrototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; -}; - -EventEmitterPrototype[kCapture] = false; - -function once(emitter, type, options) { - var signal = options?.signal; - validateAbortSignal(signal, "options.signal"); - if (signal?.aborted) { - throw new AbortError(undefined, { cause: signal?.reason }); - } - return new Promise((resolve, reject) => { - const errorListener = err => { - emitter.removeListener(type, resolver); - if (signal != null) { - eventTargetAgnosticRemoveListener(signal, "abort", abortListener); - } - reject(err); - }; - const resolver = (...args) => { - if (typeof emitter.removeListener === "function") { - emitter.removeListener("error", errorListener); - } - if (signal != null) { - eventTargetAgnosticRemoveListener(signal, "abort", abortListener); - } - resolve(args); - }; - eventTargetAgnosticAddListener(emitter, type, resolver, { once: true }); - if (type !== "error" && typeof emitter.once === "function") { - // EventTarget does not have `error` event semantics like Node - // EventEmitters, we listen to `error` events only on EventEmitters. - emitter.once("error", errorListener); - } - function abortListener() { - eventTargetAgnosticRemoveListener(emitter, type, resolver); - eventTargetAgnosticRemoveListener(emitter, "error", errorListener); - reject(new AbortError(undefined, { cause: signal?.reason })); - } - if (signal != null) { - eventTargetAgnosticAddListener(signal, "abort", abortListener, { once: true }); - } - }); -} -EventEmitter.once = once; - -function on(emitter, type, options) { - var { signal, close, highWatermark = Number.MAX_SAFE_INTEGER, lowWatermark = 1 } = options || {}; - throw new Error("events.on is not implemented. See https://github.com/oven-sh/bun/issues/2679"); -} -EventEmitter.on = on; - -function getEventListeners(emitter, type) { - if (emitter instanceof EventTarget) { - throw new Error( - "getEventListeners with an EventTarget is not implemented. See https://github.com/oven-sh/bun/issues/2678", - ); - } - return emitter.listeners(type); -} -EventEmitter.getEventListeners = getEventListeners; - -function setMaxListeners(n, ...eventTargets) { - validateNumber(n, "setMaxListeners", 0); - var length; - if (eventTargets && (length = eventTargets.length)) { - for (let i = 0; i < length; i++) { - eventTargets[i].setMaxListeners(n); - } - } else { - defaultMaxListeners = n; - } -} -EventEmitter.setMaxListeners = setMaxListeners; - -function listenerCount(emitter, type) { - return emitter.listenerCount(type); -} -EventEmitter.listenerCount = listenerCount; - -EventEmitter.EventEmitter = EventEmitter; -EventEmitter.usingDomains = false; -EventEmitter.captureRejectionSymbol = captureRejectionSymbol; -ObjectDefineProperty(EventEmitter, "captureRejections", { - __proto__: null, - get() { - return EventEmitterPrototype[kCapture]; - }, - set(value) { - validateBoolean(value, "EventEmitter.captureRejections"); - - EventEmitterPrototype[kCapture] = value; - }, - enumerable: true, -}); -EventEmitter.errorMonitor = kErrorMonitor; -Object.defineProperties(EventEmitter, { - defaultMaxListeners: { - enumerable: true, - get: () => { - return defaultMaxListeners; - }, - set: arg => { - validateNumber(arg, "defaultMaxListeners", 0); - defaultMaxListeners = arg; - }, - }, - kMaxEventTargetListeners: { - __proto__: null, - value: kMaxEventTargetListeners, - enumerable: false, - configurable: false, - writable: false, - }, - kMaxEventTargetListenersWarned: { - __proto__: null, - value: kMaxEventTargetListenersWarned, - enumerable: false, - configurable: false, - writable: false, - }, -}); -EventEmitter.init = EventEmitter; -EventEmitter[Symbol.for("CommonJS")] = 0; - -export default EventEmitter; - -function eventTargetAgnosticRemoveListener(emitter, name, listener, flags) { - if (typeof emitter.removeListener === "function") { - emitter.removeListener(name, listener); - } else { - emitter.removeEventListener(name, listener, flags); - } -} - -function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === "function") { - emitter.on(name, listener); - } else { - emitter.addEventListener(name, listener); - } -} - -class AbortError extends Error { - constructor(message = "The operation was aborted", options = undefined) { - if (options !== undefined && typeof options !== "object") { - throw new codes.ERR_INVALID_ARG_TYPE("options", "Object", options); - } - super(message, options); - this.code = "ABORT_ERR"; - this.name = "AbortError"; - } -} - -function ERR_INVALID_ARG_TYPE(name, type, value) { - const err = new TypeError(`The "${name}" argument must be of type ${type}. Received ${value}`); - err.code = "ERR_INVALID_ARG_TYPE"; - return err; -} - -function ERR_OUT_OF_RANGE(name, range, value) { - const err = new RangeError(`The "${name}" argument is out of range. It must be ${range}. Received ${value}`); - err.code = "ERR_OUT_OF_RANGE"; - return err; -} - -function validateAbortSignal(signal, name) { - if (signal !== undefined && (signal === null || typeof signal !== "object" || !("aborted" in signal))) { - throw new ERR_INVALID_ARG_TYPE(name, "AbortSignal", signal); - } -} - -function validateNumber(value, name, min = undefined, max) { - if (typeof value !== "number") throw new ERR_INVALID_ARG_TYPE(name, "number", value); - if ( - (min != null && value < min) || - (max != null && value > max) || - ((min != null || max != null) && Number.isNaN(value)) - ) { - throw new ERR_OUT_OF_RANGE( - name, - `${min != null ? `>= ${min}` : ""}${min != null && max != null ? " && " : ""}${max != null ? `<= ${max}` : ""}`, - value, - ); - } -} - -function checkListener(listener) { - if (typeof listener !== "function") { - throw new TypeError("The listener must be a function"); - } -} - -export class EventEmitterAsyncResource extends EventEmitter { - constructor(options = undefined) { - throw new Error("EventEmitterAsyncResource is not implemented. See https://github.com/oven-sh/bun/issues/2681"); - } -} - -EventEmitter.EventEmitterAsyncResource = EventEmitterAsyncResource; diff --git a/src/bun.js/ffi.exports.js b/src/bun.js/ffi.exports.js deleted file mode 100644 index 51a34e67a..000000000 --- a/src/bun.js/ffi.exports.js +++ /dev/null @@ -1,391 +0,0 @@ -// --- FFIType --- - -var ffi = globalThis.Bun.FFI; -export const ptr = (arg1, arg2) => (typeof arg2 === "undefined" ? ffi.ptr(arg1) : ffi.ptr(arg1, arg2)); -export const toBuffer = ffi.toBuffer; -export const toArrayBuffer = ffi.toArrayBuffer; -export const viewSource = ffi.viewSource; - -const BunCString = ffi.CString; -const nativeLinkSymbols = ffi.linkSymbols; -const nativeDLOpen = ffi.dlopen; -const nativeCallback = ffi.callback; -const closeCallback = ffi.closeCallback; -delete ffi.callback; -delete ffi.closeCallback; - -export class JSCallback { - constructor(cb, options) { - const { ctx, ptr } = nativeCallback(options, cb); - this.#ctx = ctx; - this.ptr = ptr; - this.#threadsafe = !!options?.threadsafe; - } - - ptr; - #ctx; - #threadsafe; - - get threadsafe() { - return this.#threadsafe; - } - - [Symbol.toPrimitive]() { - const { ptr } = this; - return typeof ptr === "number" ? ptr : 0; - } - - close() { - const ctx = this.#ctx; - this.ptr = null; - this.#ctx = null; - - if (ctx) { - closeCallback(ctx); - } - } -} - -export class CString extends String { - constructor(ptr, byteOffset, byteLength) { - super( - ptr - ? typeof byteLength === "number" && Number.isSafeInteger(byteLength) - ? new BunCString(ptr, byteOffset || 0, byteLength) - : new BunCString(ptr) - : "", - ); - this.ptr = typeof ptr === "number" ? ptr : 0; - if (typeof byteOffset !== "undefined") { - this.byteOffset = byteOffset; - } - if (typeof byteLength !== "undefined") { - this.byteLength = byteLength; - } - } - - ptr; - byteOffset; - byteLength; - #cachedArrayBuffer; - - get arrayBuffer() { - if (this.#cachedArrayBuffer) { - return this.#cachedArrayBuffer; - } - - if (!this.ptr) { - return (this.#cachedArrayBuffer = new ArrayBuffer(0)); - } - - return (this.#cachedArrayBuffer = toArrayBuffer(this.ptr, this.byteOffset, this.byteLength)); - } -} -Object.defineProperty(globalThis, "__GlobalBunCString", { - value: CString, - enumerable: false, - configurable: false, -}); - -const ffiWrappers = new Array(18); - -var char = val => val | 0; -ffiWrappers.fill(char); -ffiWrappers[FFIType.uint8_t] = function uint8(val) { - return val < 0 ? 0 : val >= 255 ? 255 : val | 0; -}; -ffiWrappers[FFIType.int16_t] = function int16(val) { - return val <= -32768 ? -32768 : val >= 32768 ? 32768 : val | 0; -}; -ffiWrappers[FFIType.uint16_t] = function uint16(val) { - return val <= 0 ? 0 : val >= 65536 ? 65536 : val | 0; -}; -ffiWrappers[FFIType.int32_t] = function int32(val) { - return val | 0; -}; -// we never want to return NaN -ffiWrappers[FFIType.uint32_t] = function uint32(val) { - return val <= 0 ? 0 : val >= 0xffffffff ? 0xffffffff : +val || 0; -}; -ffiWrappers[FFIType.i64_fast] = function int64(val) { - if (typeof val === "bigint") { - if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(-Number.MAX_SAFE_INTEGER)) { - return Number(val).valueOf() || 0; - } - - return val; - } - - return !val ? 0 : +val || 0; -}; - -ffiWrappers[FFIType.u64_fast] = function u64_fast(val) { - if (typeof val === "bigint") { - if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= 0) { - return Number(val).valueOf() || 0; - } - - return val; - } - - return !val ? 0 : +val || 0; -}; - -ffiWrappers[FFIType.int64_t] = function int64(val) { - if (typeof val === "bigint") { - return val; - } - - if (typeof val === "number") { - return BigInt(val || 0); - } - - return BigInt(+val || 0); -}; - -ffiWrappers[FFIType.uint64_t] = function uint64(val) { - if (typeof val === "bigint") { - return val; - } - - if (typeof val === "number") { - return val <= 0 ? BigInt(0) : BigInt(val || 0); - } - - return BigInt(+val || 0); -}; - -ffiWrappers[FFIType.u64_fast] = function u64_fast(val) { - if (typeof val === "bigint") { - if (val <= BigInt(Number.MAX_SAFE_INTEGER) && val >= BigInt(0)) return Number(val); - return val; - } - - return typeof val === "number" ? (val <= 0 ? 0 : +val || 0) : +val || 0; -}; - -ffiWrappers[FFIType.uint16_t] = function uint16(val) { - const ret = (typeof val === "bigint" ? Number(val) : val) | 0; - return ret <= 0 ? 0 : ret > 0xffff ? 0xffff : ret; -}; - -ffiWrappers[FFIType.double] = function double(val) { - if (typeof val === "bigint") { - if (val.valueOf() < BigInt(Number.MAX_VALUE)) { - return Math.abs(Number(val).valueOf()) + 0.00000000000001 - 0.00000000000001; - } - } - - if (!val) { - return 0 + 0.00000000000001 - 0.00000000000001; - } - - return val + 0.00000000000001 - 0.00000000000001; -}; - -ffiWrappers[FFIType.float] = ffiWrappers[10] = function float(val) { - return Math.fround(val); -}; -ffiWrappers[FFIType.bool] = function bool(val) { - return !!val; -}; - -// This prevents an extra property getter in potentially hot code -Object.defineProperty(globalThis, "__GlobalBunFFIPtrFunctionForWrapper", { - value: ptr, - enumerable: false, - configurable: true, -}); - -ffiWrappers[FFIType.cstring] = ffiWrappers[FFIType.pointer] = function pointer(val) { - if (typeof val === "number") return val; - if (!val) { - return null; - } - - if (ArrayBuffer.isView(val) || val instanceof ArrayBuffer) { - return __GlobalBunFFIPtrFunctionForWrapper(val); - } - - if (typeof val === "string") { - throw new TypeError("To convert a string to a pointer, encode it as a buffer"); - } - - throw new TypeError(`Unable to convert ${val} to a pointer`); -}; - -function cstringReturnType(val) { - return new __GlobalBunCString(val); -} - -ffiWrappers[FFIType.function] = function functionType(val) { - if (typeof val === "number") { - return val; - } - - if (typeof val === "bigint") { - return Number(val); - } - - var ptr = val && val.ptr; - - if (!ptr) { - throw new TypeError("Expected function to be a JSCallback or a number"); - } - - return ptr; -}; - -function FFIBuilder(params, returnType, functionToCall, name) { - const hasReturnType = typeof FFIType[returnType] === "number" && FFIType[returnType] !== FFIType.void; - var paramNames = new Array(params.length); - var args = new Array(params.length); - for (let i = 0; i < params.length; i++) { - paramNames[i] = `p${i}`; - const wrapper = ffiWrappers[FFIType[params[i]]]; - if (wrapper) { - // doing this inline benchmarked about 4x faster than referencing - args[i] = `(${wrapper.toString()})(p${i})`; - } else { - throw new TypeError(`Unsupported type ${params[i]}. Must be one of: ${Object.keys(FFIType).sort().join(", ")}`); - } - } - - var code = `functionToCall(${args.join(", ")})`; - if (hasReturnType) { - if (FFIType[returnType] === FFIType.cstring) { - code = `return (${cstringReturnType.toString()})(${code})`; - } else { - code = `return ${code}`; - } - } - - var func = new Function("functionToCall", ...paramNames, code); - Object.defineProperty(func, "name", { - value: name, - }); - - // variadic arguments can be expensive - // most FFI functions are going to be < 5 arguments - // so we just inline it - var wrap; - switch (paramNames.length) { - case 0: - wrap = () => func(functionToCall); - break; - case 1: - wrap = arg1 => func(functionToCall, arg1); - break; - case 2: - wrap = (arg1, arg2) => func(functionToCall, arg1, arg2); - break; - case 3: - wrap = (arg1, arg2, arg3) => func(functionToCall, arg1, arg2, arg3); - break; - case 4: - wrap = (arg1, arg2, arg3, arg4) => func(functionToCall, arg1, arg2, arg3, arg4); - break; - case 5: - wrap = (arg1, arg2, arg3, arg4, arg5) => func(functionToCall, arg1, arg2, arg3, arg4, arg5); - break; - case 6: - wrap = (arg1, arg2, arg3, arg4, arg5, arg6) => func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6); - break; - case 7: - wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => - func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7); - break; - case 8: - wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => - func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); - break; - case 9: - wrap = (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => - func(functionToCall, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); - break; - default: { - wrap = (...args) => func(functionToCall, ...args); - break; - } - } - - wrap.native = functionToCall; - wrap.ptr = functionToCall.ptr; - return wrap; -} - -export const native = { - dlopen: nativeDLOpen, - callback: () => { - throw new Error("Deprecated. Use new JSCallback(options, fn) instead"); - }, -}; - -export function dlopen(path, options) { - const result = nativeDLOpen(path, options); - - for (let key in result.symbols) { - var symbol = result.symbols[key]; - if (options[key]?.args?.length || FFIType[options[key]?.returns] === FFIType.cstring) { - result.symbols[key] = FFIBuilder( - options[key].args ?? [], - options[key].returns ?? FFIType.void, - symbol, - // in stacktraces: - // instead of - // "/usr/lib/sqlite3.so" - // we want - // "sqlite3_get_version() - sqlit3.so" - path.includes("/") ? `${key} (${path.split("/").pop()})` : `${key} (${path})`, - ); - } else { - // consistentcy - result.symbols[key].native = result.symbols[key]; - } - } - - return result; -} - -export function linkSymbols(options) { - const result = nativeLinkSymbols(options); - - for (let key in result.symbols) { - var symbol = result.symbols[key]; - if (options[key]?.args?.length || FFIType[options[key]?.returns] === FFIType.cstring) { - result.symbols[key] = FFIBuilder(options[key].args ?? [], options[key].returns ?? FFIType.void, symbol, key); - } else { - // consistentcy - result.symbols[key].native = result.symbols[key]; - } - } - - return result; -} - -var cFunctionI = 0; -var cFunctionRegistry; -function onCloseCFunction(close) { - close(); -} -export function CFunction(options) { - const identifier = `CFunction${cFunctionI++}`; - var result = linkSymbols({ - [identifier]: options, - }); - var hasClosed = false; - var close = result.close; - result.symbols[identifier].close = () => { - if (hasClosed || !close) return; - hasClosed = true; - close(); - close = undefined; - }; - - cFunctionRegistry ||= new FinalizationRegistry(onCloseCFunction); - cFunctionRegistry.register(result.symbols[identifier], result.symbols[identifier].close); - - return result.symbols[identifier]; -} - -export const read = ffi.read; diff --git a/src/bun.js/fs.exports.js b/src/bun.js/fs.exports.js deleted file mode 100644 index df2fbf382..000000000 --- a/src/bun.js/fs.exports.js +++ /dev/null @@ -1,1015 +0,0 @@ -var { direct, isPromise, isCallable } = import.meta.primordials; -var promises = import.meta.require("node:fs/promises"); - -var { Readable, NativeWritable, _getNativeReadableStreamPrototype, eos: eos_ } = import.meta.require("node:stream"); -var NativeReadable = _getNativeReadableStreamPrototype(2, Readable); // 2 means native type is a file here - -var fs = Bun.fs(); -var debug = process.env.DEBUG ? console.log : () => {}; -export var access = function access(...args) { - callbackify(fs.accessSync, args); - }, - appendFile = function appendFile(...args) { - callbackify(fs.appendFileSync, args); - }, - close = function close(...args) { - callbackify(fs.closeSync, args); - }, - rm = function rm(...args) { - callbackify(fs.rmSync, args); - }, - rmdir = function rmdir(...args) { - callbackify(fs.rmdirSync, args); - }, - copyFile = function copyFile(...args) { - callbackify(fs.copyFileSync, args); - }, - exists = function exists(...args) { - callbackify(fs.existsSync, args); - }, - chown = function chown(...args) { - callbackify(fs.chownSync, args); - }, - chmod = function chmod(...args) { - callbackify(fs.chmodSync, args); - }, - fchmod = function fchmod(...args) { - callbackify(fs.fchmodSync, args); - }, - fchown = function fchown(...args) { - callbackify(fs.fchownSync, args); - }, - fstat = function fstat(...args) { - callbackify(fs.fstatSync, args); - }, - fsync = function fsync(...args) { - callbackify(fs.fsyncSync, args); - }, - ftruncate = function ftruncate(...args) { - callbackify(fs.ftruncateSync, args); - }, - futimes = function futimes(...args) { - callbackify(fs.futimesSync, args); - }, - lchmod = function lchmod(...args) { - callbackify(fs.lchmodSync, args); - }, - lchown = function lchown(...args) { - callbackify(fs.lchownSync, args); - }, - link = function link(...args) { - callbackify(fs.linkSync, args); - }, - lstat = function lstat(...args) { - callbackify(fs.lstatSync, args); - }, - mkdir = function mkdir(...args) { - callbackify(fs.mkdirSync, args); - }, - mkdtemp = function mkdtemp(...args) { - callbackify(fs.mkdtempSync, args); - }, - open = function open(...args) { - callbackify(fs.openSync, args); - }, - read = function read(...args) { - callbackify(fs.readSync, args); - }, - write = function write(...args) { - callbackify(fs.writeSync, args); - }, - readdir = function readdir(...args) { - callbackify(fs.readdirSync, args); - }, - readFile = function readFile(...args) { - callbackify(fs.readFileSync, args); - }, - writeFile = function writeFile(...args) { - callbackify(fs.writeFileSync, args); - }, - readlink = function readlink(...args) { - callbackify(fs.readlinkSync, args); - }, - realpath = function realpath(...args) { - callbackify(fs.realpathSync, args); - }, - rename = function rename(...args) { - callbackify(fs.renameSync, args); - }, - stat = function stat(...args) { - callbackify(fs.statSync, args); - }, - symlink = function symlink(...args) { - callbackify(fs.symlinkSync, args); - }, - truncate = function truncate(...args) { - callbackify(fs.truncateSync, args); - }, - unlink = function unlink(...args) { - callbackify(fs.unlinkSync, args); - }, - utimes = function utimes(...args) { - callbackify(fs.utimesSync, args); - }, - lutimes = function lutimes(...args) { - callbackify(fs.lutimesSync, args); - }, - accessSync = fs.accessSync.bind(fs), - appendFileSync = fs.appendFileSync.bind(fs), - closeSync = fs.closeSync.bind(fs), - copyFileSync = fs.copyFileSync.bind(fs), - existsSync = fs.existsSync.bind(fs), - chownSync = fs.chownSync.bind(fs), - chmodSync = fs.chmodSync.bind(fs), - fchmodSync = fs.fchmodSync.bind(fs), - fchownSync = fs.fchownSync.bind(fs), - fstatSync = fs.fstatSync.bind(fs), - fsyncSync = fs.fsyncSync.bind(fs), - ftruncateSync = fs.ftruncateSync.bind(fs), - futimesSync = fs.futimesSync.bind(fs), - lchmodSync = fs.lchmodSync.bind(fs), - lchownSync = fs.lchownSync.bind(fs), - linkSync = fs.linkSync.bind(fs), - lstatSync = fs.lstatSync.bind(fs), - mkdirSync = fs.mkdirSync.bind(fs), - mkdtempSync = fs.mkdtempSync.bind(fs), - openSync = fs.openSync.bind(fs), - readSync = fs.readSync.bind(fs), - writeSync = fs.writeSync.bind(fs), - readdirSync = fs.readdirSync.bind(fs), - readFileSync = fs.readFileSync.bind(fs), - writeFileSync = fs.writeFileSync.bind(fs), - readlinkSync = fs.readlinkSync.bind(fs), - realpathSync = fs.realpathSync.bind(fs), - renameSync = fs.renameSync.bind(fs), - statSync = fs.statSync.bind(fs), - symlinkSync = fs.symlinkSync.bind(fs), - truncateSync = fs.truncateSync.bind(fs), - unlinkSync = fs.unlinkSync.bind(fs), - utimesSync = fs.utimesSync.bind(fs), - lutimesSync = fs.lutimesSync.bind(fs), - rmSync = fs.rmSync.bind(fs), - rmdirSync = fs.rmdirSync.bind(fs), - Dirent = fs.Dirent, - Stats = fs.Stats, - promises = import.meta.require("node:fs/promises"); - -function callbackify(fsFunction, args) { - try { - const result = fsFunction.apply(fs, args.slice(0, args.length - 1)); - const callback = args[args.length - 1]; - if (typeof callback === "function") { - queueMicrotask(() => callback(null, result)); - } - } catch (e) { - const callback = args[args.length - 1]; - if (typeof callback === "function") { - queueMicrotask(() => callback(e)); - } - } -} - -// Results from Object.keys() in Node 1, -// fd -// path -// flags -// mode -// start -// end -// pos -// bytesRead -// _readableState -// _events -// _eventsCount -// _maxListener -var readStreamPathFastPathSymbol = Symbol.for("Bun.Node.readStreamPathFastPath"); -const readStreamSymbol = Symbol.for("Bun.NodeReadStream"); -const readStreamPathOrFdSymbol = Symbol.for("Bun.NodeReadStreamPathOrFd"); -const writeStreamSymbol = Symbol.for("Bun.NodeWriteStream"); -var writeStreamPathFastPathSymbol = Symbol.for("Bun.NodeWriteStreamFastPath"); -var writeStreamPathFastPathCallSymbol = Symbol.for("Bun.NodeWriteStreamFastPathCall"); -var kIoDone = Symbol.for("kIoDone"); - -var defaultReadStreamOptions = { - file: undefined, - fd: undefined, - flags: "r", - encoding: undefined, - mode: 0o666, - autoClose: true, - emitClose: true, - start: 0, - end: Infinity, - highWaterMark: 64 * 1024, - fs: { - read, - open: (path, flags, mode, cb) => { - var fd; - try { - fd = openSync(path, flags, mode); - } catch (e) { - cb(e); - return; - } - - cb(null, fd); - }, - openSync, - close, - }, - autoDestroy: true, -}; - -var ReadStreamClass; -export var ReadStream = (function (InternalReadStream) { - ReadStreamClass = InternalReadStream; - Object.defineProperty(ReadStreamClass.prototype, Symbol.toStringTag, { - value: "ReadStream", - enumerable: false, - }); - - return Object.defineProperty( - function ReadStream(path, options) { - return new InternalReadStream(path, options); - }, - Symbol.hasInstance, - { - value(instance) { - return instance instanceof InternalReadStream; - }, - }, - ); -})( - class ReadStream extends NativeReadable { - constructor(pathOrFd, options = defaultReadStreamOptions) { - if (typeof options !== "object" || !options) { - throw new TypeError("Expected options to be an object"); - } - - var { - flags = defaultReadStreamOptions.flags, - encoding = defaultReadStreamOptions.encoding, - mode = defaultReadStreamOptions.mode, - autoClose = defaultReadStreamOptions.autoClose, - emitClose = defaultReadStreamOptions.emitClose, - start = defaultReadStreamOptions.start, - end = defaultReadStreamOptions.end, - autoDestroy = defaultReadStreamOptions.autoClose, - fs = defaultReadStreamOptions.fs, - highWaterMark = defaultReadStreamOptions.highWaterMark, - } = options; - - if (pathOrFd?.constructor?.name === "URL") { - pathOrFd = Bun.fileURLToPath(pathOrFd); - } - - // This is kinda hacky but we create a temporary object to assign props that we will later pull into the `this` context after we call super - var tempThis = {}; - if (typeof pathOrFd === "string") { - if (pathOrFd.startsWith("file://")) { - pathOrFd = Bun.fileURLToPath(pathOrFd); - } - if (pathOrFd.length === 0) { - throw new TypeError("Expected path to be a non-empty string"); - } - tempThis.path = tempThis.file = tempThis[readStreamPathOrFdSymbol] = pathOrFd; - } else if (typeof pathOrFd === "number") { - pathOrFd |= 0; - if (pathOrFd < 0) { - throw new TypeError("Expected fd to be a positive integer"); - } - tempThis.fd = tempThis[readStreamPathOrFdSymbol] = pathOrFd; - - tempThis.autoClose = false; - } else { - throw new TypeError("Expected a path or file descriptor"); - } - - // If fd not open for this file, open it - if (!tempThis.fd) { - // NOTE: this fs is local to constructor, from options - tempThis.fd = fs.openSync(pathOrFd, flags, mode); - } - // Get FileRef from fd - var fileRef = Bun.file(tempThis.fd); - - // Get the stream controller - // We need the pointer to the underlying stream controller for the NativeReadable - var stream = fileRef.stream(); - var native = direct(stream); - if (!native) { - debug("no native readable stream"); - throw new Error("no native readable stream"); - } - var { stream: ptr } = native; - - super(ptr, { - ...options, - encoding, - autoDestroy, - autoClose, - emitClose, - highWaterMark, - }); - - // Assign the tempThis props to this - Object.assign(this, tempThis); - this.#fileRef = fileRef; - - this.end = end; - this._read = this.#internalRead; - this.start = start; - this.flags = flags; - this.mode = mode; - this.emitClose = emitClose; - - this[readStreamPathFastPathSymbol] = - start === 0 && - end === Infinity && - autoClose && - fs === defaultReadStreamOptions.fs && - // is it an encoding which we don't need to decode? - (encoding === "buffer" || - encoding === "binary" || - encoding == null || - encoding === "utf-8" || - encoding === "utf8"); - this._readableState.autoClose = autoDestroy = autoClose; - this._readableState.highWaterMark = highWaterMark; - - if (start !== undefined) { - this.pos = start; - } - } - #fileRef; - #fs; - file; - path; - fd = null; - flags; - mode; - start; - end; - pos; - bytesRead = 0; - #fileSize = -1; - _read; - - [readStreamSymbol] = true; - [readStreamPathOrFdSymbol]; - [readStreamPathFastPathSymbol]; - - _construct(callback) { - if (super._construct) { - super._construct(callback); - } else { - callback(); - } - this.emit("open", this.fd); - this.emit("ready"); - } - - _destroy(err, cb) { - super._destroy(err, cb); - try { - var fd = this.fd; - this[readStreamPathFastPathSymbol] = false; - - if (!fd) { - cb(err); - } else { - this.#fs.close(fd, er => { - cb(er || err); - }); - this.fd = null; - } - } catch (e) { - throw e; - } - } - - close(cb) { - if (typeof cb === "function") eos_()(this, cb); - this.destroy(); - } - - push(chunk) { - // Is it even possible for this to be less than 1? - var bytesRead = chunk?.length ?? 0; - if (bytesRead > 0) { - this.bytesRead += bytesRead; - var currPos = this.pos; - // Handle case of going through bytes before pos if bytesRead is less than pos - // If pos is undefined, we are reading through the whole file - // Otherwise we started from somewhere in the middle of the file - if (currPos !== undefined) { - // At this point we still haven't hit our `start` point - // We should discard this chunk and exit - if (this.bytesRead < currPos) { - return true; - } - // At this point, bytes read is greater than our starting position - // If the current position is still the starting position, that means - // this is the first chunk where we care about the bytes read - // and we need to subtract the bytes read from the start position (n) and slice the last n bytes - if (currPos === this.start) { - var n = this.bytesRead - currPos; - chunk = chunk.slice(-n); - var [_, ...rest] = arguments; - this.pos = this.bytesRead; - if (this.end && this.bytesRead >= this.end) { - chunk = chunk.slice(0, this.end - this.start); - } - return super.push(chunk, ...rest); - } - var end = this.end; - // This is multi-chunk read case where we go passed the end of the what we want to read in the last chunk - if (end && this.bytesRead >= end) { - chunk = chunk.slice(0, end - currPos); - var [_, ...rest] = arguments; - this.pos = this.bytesRead; - return super.push(chunk, ...rest); - } - this.pos = this.bytesRead; - } - } - - return super.push(...arguments); - } - - // # - - // n should be the the highwatermark passed from Readable.read when calling internal _read (_read is set to this private fn in this class) - #internalRead(n) { - // pos is the current position in the file - // by default, if a start value is provided, pos starts at this.start - var { pos, end, bytesRead, fd, encoding } = this; - - n = - pos !== undefined // if there is a pos, then we are reading from that specific position in the file - ? Math.min(end - pos + 1, n) // takes smaller of length of the rest of the file to read minus the cursor position, or the highwatermark - : Math.min(end - bytesRead + 1, n); // takes the smaller of the length of the rest of the file from the bytes that we have marked read, or the highwatermark - - debug("n @ fs.ReadStream.#internalRead, after clamp", n); - - // If n is 0 or less, then we read all the file, push null to stream, ending it - if (n <= 0) { - this.push(null); - return; - } - - // At this point, n is the lesser of the length of the rest of the file to read or the highwatermark - // Which means n is the maximum number of bytes to read - - // Basically if we don't know the file size yet, then check it - // Then if n is bigger than fileSize, set n to be fileSize - // This is a fast path to avoid allocating more than the file size for a small file (is this respected by native stream though) - if (this.#fileSize === -1 && bytesRead === 0 && pos === undefined) { - var stat = fstatSync(fd); - this.#fileSize = stat.size; - if (this.#fileSize > 0 && n > this.#fileSize) { - n = this.#fileSize + 1; - } - debug("fileSize", this.#fileSize); - } - - // At this point, we know the file size and how much we want to read of the file - this[kIoDone] = false; - var res = super._read(n); - debug("res -- undefined? why?", res); - if (isPromise(res)) { - var then = res?.then; - if (then && isCallable(then)) { - then( - () => { - this[kIoDone] = true; - // Tell ._destroy() that it's safe to close the fd now. - if (this.destroyed) { - this.emit(kIoDone); - } - }, - er => { - this[kIoDone] = true; - this.#errorOrDestroy(er); - }, - ); - } - } else { - this[kIoDone] = true; - if (this.destroyed) { - this.emit(kIoDone); - this.#errorOrDestroy(new Error("ERR_STREAM_PREMATURE_CLOSE")); - } - } - } - - #errorOrDestroy(err, sync = null) { - var { - _readableState: r = { destroyed: false, autoDestroy: false }, - _writableState: w = { destroyed: false, autoDestroy: false }, - } = this; - - if (w?.destroyed || r?.destroyed) { - return this; - } - if (r?.autoDestroy || w?.autoDestroy) this.destroy(err); - else if (err) { - this.emit("error", err); - } - } - - pause() { - this[readStreamPathFastPathSymbol] = false; - return super.pause(); - } - - resume() { - this[readStreamPathFastPathSymbol] = false; - return super.resume(); - } - - unshift(...args) { - this[readStreamPathFastPathSymbol] = false; - return super.unshift(...args); - } - - pipe(dest, pipeOpts) { - if (this[readStreamPathFastPathSymbol] && (pipeOpts?.end ?? true) && this._readableState?.pipes?.length === 0) { - if (writeStreamPathFastPathSymbol in dest && dest[writeStreamPathFastPathSymbol]) { - if (dest[writeStreamPathFastPathCallSymbol](this, pipeOpts)) { - return this; - } - } - } - - this[readStreamPathFastPathSymbol] = false; - return super.pipe(dest, pipeOpts); - } - }, -); - -export function createReadStream(path, options) { - return new ReadStream(path, options); -} - -var defaultWriteStreamOptions = { - fd: null, - start: undefined, - pos: undefined, - encoding: undefined, - flags: "w", - mode: 0o666, - fs: { - write, - close, - open, - openSync, - }, -}; - -var WriteStreamClass; -export var WriteStream = (function (InternalWriteStream) { - WriteStreamClass = InternalWriteStream; - Object.defineProperty(WriteStreamClass.prototype, Symbol.toStringTag, { - value: "WritesStream", - enumerable: false, - }); - - return Object.defineProperty( - function WriteStream(options) { - return new InternalWriteStream(options); - }, - Symbol.hasInstance, - { - value(instance) { - return instance instanceof InternalWriteStream; - }, - }, - ); -})( - class WriteStream extends NativeWritable { - constructor(path, options = defaultWriteStreamOptions) { - if (!options) { - throw new TypeError("Expected options to be an object"); - } - - var { - fs = defaultWriteStreamOptions.fs, - start = defaultWriteStreamOptions.start, - flags = defaultWriteStreamOptions.flags, - mode = defaultWriteStreamOptions.mode, - autoClose = true, - emitClose = false, - autoDestroy = autoClose, - encoding = defaultWriteStreamOptions.encoding, - fd = defaultWriteStreamOptions.fd, - pos = defaultWriteStreamOptions.pos, - } = options; - - var tempThis = {}; - if (typeof path === "string") { - if (path.length === 0) { - throw new TypeError("Expected a non-empty path"); - } - - if (path.startsWith("file:")) { - path = Bun.fileURLToPath(path); - } - - tempThis.path = path; - tempThis.fd = null; - tempThis[writeStreamPathFastPathSymbol] = - autoClose && - (start === undefined || start === 0) && - fs.write === defaultWriteStreamOptions.fs.write && - fs.close === defaultWriteStreamOptions.fs.close; - } else { - tempThis.fd = fd; - tempThis[writeStreamPathFastPathSymbol] = false; - } - - if (!tempThis.fd) { - tempThis.fd = fs.openSync(path, flags, mode); - } - - super(tempThis.fd, { - ...options, - decodeStrings: false, - autoDestroy, - emitClose, - fd: tempThis, - }); - Object.assign(this, tempThis); - - if (typeof fs?.write !== "function") { - throw new TypeError("Expected fs.write to be a function"); - } - - if (typeof fs?.close !== "function") { - throw new TypeError("Expected fs.close to be a function"); - } - - if (typeof fs?.open !== "function") { - throw new TypeError("Expected fs.open to be a function"); - } - - if (typeof path === "object" && path) { - if (path instanceof URL) { - path = Bun.fileURLToPath(path); - } - } - - if (typeof path !== "string" && typeof fd !== "number") { - throw new TypeError("Expected a path or file descriptor"); - } - - this.start = start; - this.#fs = fs; - this.flags = flags; - this.mode = mode; - - if (this.start !== undefined) { - this.pos = this.start; - } - - if (encoding !== defaultWriteStreamOptions.encoding) { - this.setDefaultEncoding(encoding); - if (encoding !== "buffer" && encoding !== "utf8" && encoding !== "utf-8" && encoding !== "binary") { - this[writeStreamPathFastPathSymbol] = false; - } - } - } - - get autoClose() { - return this._writableState.autoDestroy; - } - - set autoClose(val) { - this._writableState.autoDestroy = val; - } - - destroySoon = this.end; // TODO: what is this for? - - // noop, node has deprecated this - open() {} - - path; - fd; - flags; - mode; - #fs; - bytesWritten = 0; - pos; - [writeStreamPathFastPathSymbol]; - [writeStreamSymbol] = true; - start; - - [writeStreamPathFastPathCallSymbol](readStream, pipeOpts) { - if (!this[writeStreamPathFastPathSymbol]) { - return false; - } - - if (this.fd !== null) { - this[writeStreamPathFastPathSymbol] = false; - return false; - } - - this[kIoDone] = false; - readStream[kIoDone] = false; - return Bun.write(this[writeStreamPathFastPathSymbol], readStream[readStreamPathOrFdSymbol]).then( - bytesWritten => { - readStream[kIoDone] = this[kIoDone] = true; - this.bytesWritten += bytesWritten; - readStream.bytesRead += bytesWritten; - this.end(); - readStream.close(); - }, - err => { - readStream[kIoDone] = this[kIoDone] = true; - this.#errorOrDestroy(err); - readStream.emit("error", err); - }, - ); - } - - isBunFastPathEnabled() { - return this[writeStreamPathFastPathSymbol]; - } - - disableBunFastPath() { - this[writeStreamPathFastPathSymbol] = false; - } - - #handleWrite(er, bytes) { - if (er) { - return this.#errorOrDestroy(er); - } - - this.bytesWritten += bytes; - } - - #internalClose(err, cb) { - this[writeStreamPathFastPathSymbol] = false; - var fd = this.fd; - this.#fs.close(fd, er => { - this.fd = null; - cb(err || er); - }); - } - - _construct(callback) { - if (typeof this.fd === "number") { - callback(); - return; - } - - callback(); - this.emit("open", this.fd); - this.emit("ready"); - } - - _destroy(err, cb) { - if (this.fd === null) { - return cb(err); - } - - if (this[kIoDone]) { - this.once(kIoDone, () => this.#internalClose(err, cb)); - return; - } - - this.#internalClose(err, cb); - } - - [kIoDone] = false; - - close(cb) { - if (cb) { - if (this.closed) { - process.nextTick(cb); - return; - } - this.on("close", cb); - } - - // If we are not autoClosing, we should call - // destroy on 'finish'. - if (!this.autoClose) { - this.on("finish", this.destroy); - } - - // We use end() instead of destroy() because of - // https://github.com/nodejs/node/issues/2006 - this.end(); - } - - write(chunk, encoding = this._writableState.defaultEncoding, cb) { - this[writeStreamPathFastPathSymbol] = false; - if (typeof chunk === "string") { - chunk = Buffer.from(chunk, encoding); - } - - // TODO: Replace this when something like lseek is available - var native = this.pos === undefined; - this[kIoDone] = true; - return super.write( - chunk, - encoding, - native - ? (err, bytes) => { - this[kIoDone] = false; - this.#handleWrite(err, bytes); - this.emit(kIoDone); - if (cb) !err ? cb() : cb(err); - } - : () => {}, - native, - ); - } - - #internalWriteSlow(chunk, encoding, cb) { - this.#fs.write(this.fd, chunk, 0, chunk.length, this.pos, (err, bytes) => { - this[kIoDone] = false; - this.#handleWrite(err, bytes); - this.emit(kIoDone); - - !err ? cb() : cb(err); - }); - } - - end(chunk, encoding, cb) { - var native = this.pos === undefined; - return super.end(chunk, encoding, cb, native); - } - - _write = this.#internalWriteSlow; - _writev = undefined; - - get pending() { - return this.fd === null; - } - - _destroy(err, cb) { - this.close(err, cb); - } - - #errorOrDestroy(err) { - var { - _readableState: r = { destroyed: false, autoDestroy: false }, - _writableState: w = { destroyed: false, autoDestroy: false }, - } = this; - - if (w?.destroyed || r?.destroyed) { - return this; - } - if (r?.autoDestroy || w?.autoDestroy) this.destroy(err); - else if (err) { - this.emit("error", err); - } - } - }, -); - -export function createWriteStream(path, options) { - // const WriteStream = getLazyWriteStream(); - return new WriteStream(path, options); -} - -// NOTE: This was too smart and doesn't actually work -// export var WriteStream = Object.defineProperty( -// function WriteStream(path, options) { -// var _InternalWriteStream = getLazyWriteStream(); -// return new _InternalWriteStream(path, options); -// }, -// Symbol.hasInstance, -// { value: (instance) => instance[writeStreamSymbol] === true }, -// ); - -// export var ReadStream = Object.defineProperty( -// function ReadStream(path, options) { -// var _InternalReadStream = getLazyReadStream(); -// return new _InternalReadStream(path, options); -// }, -// Symbol.hasInstance, -// { value: (instance) => instance[readStreamSymbol] === true }, -// ); - -Object.defineProperties(fs, { - createReadStream: { - value: createReadStream, - }, - createWriteStream: { - value: createWriteStream, - }, - ReadStream: { - value: ReadStream, - }, - WriteStream: { - value: WriteStream, - }, - // ReadStream: { - // get: () => getLazyReadStream(), - // }, - // WriteStream: { - // get: () => getLazyWriteStream(), - // }, -}); - -// lol -realpath.native = realpath; -realpathSync.native = realpathSync; - -export default { - [Symbol.for("CommonJS")]: 0, - access, - accessSync, - appendFile, - appendFileSync, - chmod, - chmodSync, - chown, - chownSync, - close, - closeSync, - constants: promises.constants, - copyFile, - copyFileSync, - createReadStream, - createWriteStream, - Dirent, - exists, - existsSync, - fchmod, - fchmodSync, - fchown, - fchownSync, - fstat, - fstatSync, - fsync, - fsyncSync, - ftruncate, - ftruncateSync, - futimes, - futimesSync, - lchmod, - lchmodSync, - lchown, - lchownSync, - link, - linkSync, - lstat, - lstatSync, - lutimes, - lutimesSync, - mkdir, - mkdirSync, - mkdtemp, - mkdtempSync, - open, - openSync, - promises, - read, - readFile, - readFileSync, - readSync, - readdir, - readdirSync, - readlink, - readlinkSync, - realpath, - realpathSync, - rename, - renameSync, - rm, - rmSync, - rmdir, - rmdirSync, - stat, - statSync, - Stats, - symlink, - symlinkSync, - truncate, - truncateSync, - unlink, - unlinkSync, - utimes, - utimesSync, - write, - writeFile, - writeFileSync, - writeSync, - WriteStream, - ReadStream, - - [Symbol.for("::bunternal::")]: { - ReadStreamClass, - WriteStreamClass, - }, - // get WriteStream() { - // return getLazyWriteStream(); - // }, - // get ReadStream() { - // return getLazyReadStream(); - // }, -}; diff --git a/src/bun.js/fs_promises.exports.js b/src/bun.js/fs_promises.exports.js deleted file mode 100644 index bafcaee56..000000000 --- a/src/bun.js/fs_promises.exports.js +++ /dev/null @@ -1,113 +0,0 @@ -var fs = Bun.fs(); - -// note: this is not quite the same as how node does it -// in some cases, node swaps around arguments or makes small tweaks to the return type -// this is just better than nothing. -const notrace = "::bunternal::"; -var promisify = { - [notrace]: fsFunction => { - // TODO: remove variadic arguments - // we can use new Function() here instead - // based on fsFucntion.length - var func = { - [notrace]: function (resolve, reject, args) { - var result; - try { - result = fsFunction.apply(fs, args); - args = undefined; - } catch (err) { - args = undefined; - reject(err); - return; - } - - resolve(result); - }, - }[notrace]; - - return async function (...args) { - // we await it so that the stack is captured - return await new Promise((resolve, reject) => { - process.nextTick(func, resolve, reject, args); - }); - }; - }, -}[notrace]; - -export var access = promisify(fs.accessSync), - appendFile = promisify(fs.appendFileSync), - close = promisify(fs.closeSync), - copyFile = promisify(fs.copyFileSync), - exists = promisify(fs.existsSync), - chown = promisify(fs.chownSync), - chmod = promisify(fs.chmodSync), - fchmod = promisify(fs.fchmodSync), - fchown = promisify(fs.fchownSync), - fstat = promisify(fs.fstatSync), - fsync = promisify(fs.fsyncSync), - ftruncate = promisify(fs.ftruncateSync), - futimes = promisify(fs.futimesSync), - lchmod = promisify(fs.lchmodSync), - lchown = promisify(fs.lchownSync), - link = promisify(fs.linkSync), - lstat = promisify(fs.lstatSync), - mkdir = promisify(fs.mkdirSync), - mkdtemp = promisify(fs.mkdtempSync), - open = promisify(fs.openSync), - read = promisify(fs.readSync), - write = promisify(fs.writeSync), - readdir = promisify(fs.readdirSync), - readFile = promisify(fs.readFileSync), - writeFile = promisify(fs.writeFileSync), - readlink = promisify(fs.readlinkSync), - realpath = promisify(fs.realpathSync), - rename = promisify(fs.renameSync), - stat = promisify(fs.statSync), - symlink = promisify(fs.symlinkSync), - truncate = promisify(fs.truncateSync), - unlink = promisify(fs.unlinkSync), - utimes = promisify(fs.utimesSync), - lutimes = promisify(fs.lutimesSync), - rm = promisify(fs.rmSync), - rmdir = promisify(fs.rmdirSync); - -export default { - access, - appendFile, - close, - copyFile, - exists, - chown, - chmod, - fchmod, - fchown, - fstat, - fsync, - ftruncate, - futimes, - lchmod, - lchown, - link, - lstat, - mkdir, - mkdtemp, - open, - read, - write, - readdir, - readFile, - writeFile, - readlink, - realpath, - rename, - stat, - symlink, - truncate, - unlink, - utimes, - lutimes, - rm, - rmdir, - constants, - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/http.exports.js b/src/bun.js/http.exports.js deleted file mode 100644 index d9c44836b..000000000 --- a/src/bun.js/http.exports.js +++ /dev/null @@ -1,1814 +0,0 @@ -const { EventEmitter } = import.meta.require("node:events"); -const { isIPv6 } = import.meta.require("node:net"); -const { Readable, Writable, Duplex } = import.meta.require("node:stream"); -const { URL } = import.meta.require("node:url"); -const { newArrayWithSize, String, Object, Array } = import.meta.primordials; -const { isTypedArray } = import.meta.require("util/types"); - -const globalReportError = globalThis.reportError; -const setTimeout = globalThis.setTimeout; -const fetch = Bun.fetch; -const nop = () => {}; - -const __DEBUG__ = process.env.__DEBUG__; -const debug = __DEBUG__ ? (...args) => console.log("node:http", ...args) : nop; - -const kEmptyObject = Object.freeze(Object.create(null)); -const kOutHeaders = Symbol.for("kOutHeaders"); -const kEndCalled = Symbol.for("kEndCalled"); -const kAbortController = Symbol.for("kAbortController"); -const kClearTimeout = Symbol("kClearTimeout"); - -const kCorked = Symbol.for("kCorked"); -const searchParamsSymbol = Symbol.for("query"); // This is the symbol used in Node - -// Primordials -const StringPrototypeSlice = String.prototype.slice; -const StringPrototypeStartsWith = String.prototype.startsWith; -const StringPrototypeToUpperCase = String.prototype.toUpperCase; -const StringPrototypeIncludes = String.prototype.includes; -const StringPrototypeCharCodeAt = String.prototype.charCodeAt; -const StringPrototypeIndexOf = String.prototype.indexOf; -const ArrayIsArray = Array.isArray; -const RegExpPrototypeExec = RegExp.prototype.exec; -const ObjectAssign = Object.assign; -const ObjectPrototypeHasOwnProperty = Object.prototype.hasOwnProperty; - -const INVALID_PATH_REGEX = /[^\u0021-\u00ff]/; -const NODE_HTTP_WARNING = - "WARN: Agent is mostly unused in Bun's implementation of http. If you see strange behavior, this is probably the cause."; - -var _globalAgent; -var _defaultHTTPSAgent; -var kInternalRequest = Symbol("kInternalRequest"); -var kInternalSocketData = Symbol.for("::bunternal::"); - -const kEmptyBuffer = Buffer.alloc(0); - -function isValidTLSArray(obj) { - if (typeof obj === "string" || isTypedArray(obj) || obj instanceof ArrayBuffer || obj instanceof Blob) return true; - if (Array.isArray(obj)) { - for (var i = 0; i < obj.length; i++) { - if (typeof obj !== "string" && !isTypedArray(obj) && !(obj instanceof ArrayBuffer) && !(obj instanceof Blob)) - return false; - } - return true; - } -} - -function getHeader(headers, name) { - if (!headers) return; - const result = headers.get(name); - return result == null ? undefined : result; -} - -var FakeSocket = class Socket extends Duplex { - bytesRead = 0; - bytesWritten = 0; - connecting = false; - remoteAddress = null; - localAddress = "127.0.0.1"; - remotePort; - timeout = 0; - - isServer = false; - - address() { - return { - address: this.localAddress, - family: this.localFamily, - port: this.localPort, - }; - } - - get bufferSize() { - return this.writableLength; - } - - connect(port, host, connectListener) { - return this; - } - - _destroy(err, callback) {} - - _final(callback) {} - - get localAddress() { - return "127.0.0.1"; - } - - get localFamily() { - return "IPv4"; - } - - get localPort() { - return 80; - } - - get pending() { - return this.connecting; - } - - _read(size) {} - - get readyState() { - if (this.connecting) return "opening"; - if (this.readable) { - return this.writable ? "open" : "readOnly"; - } else { - return this.writable ? "writeOnly" : "closed"; - } - } - - ref() {} - - get remoteFamily() { - return "IPv4"; - } - - resetAndDestroy() {} - - setKeepAlive(enable = false, initialDelay = 0) {} - - setNoDelay(noDelay = true) { - return this; - } - - setTimeout(timeout, callback) { - return this; - } - - unref() {} - - _write(chunk, encoding, callback) {} -}; - -export function createServer(options, callback) { - return new Server(options, callback); -} - -export class Agent extends EventEmitter { - #defaultPort = 80; - #protocol = "http:"; - #options; - #requests; - #sockets; - #freeSockets; - - #keepAliveMsecs; - #keepAlive; - #maxSockets; - #maxFreeSockets; - #scheduling; - #maxTotalSockets; - #totalSocketCount; - - #fakeSocket; - - static get globalAgent() { - return (_globalAgent ??= new Agent()); - } - - static get defaultMaxSockets() { - return Infinity; - } - - constructor(options = kEmptyObject) { - super(); - this.#options = options = { ...options, path: null }; - if (options.noDelay === undefined) options.noDelay = true; - - // Don't confuse net and make it think that we're connecting to a pipe - this.#requests = kEmptyObject; - this.#sockets = kEmptyObject; - this.#freeSockets = kEmptyObject; - - this.#keepAliveMsecs = options.keepAliveMsecs || 1000; - this.#keepAlive = options.keepAlive || false; - this.#maxSockets = options.maxSockets || Agent.defaultMaxSockets; - this.#maxFreeSockets = options.maxFreeSockets || 256; - this.#scheduling = options.scheduling || "lifo"; - this.#maxTotalSockets = options.maxTotalSockets; - this.#totalSocketCount = 0; - this.#defaultPort = options.defaultPort || 80; - this.#protocol = options.protocol || "http:"; - } - - get defaultPort() { - return this.#defaultPort; - } - - get protocol() { - return this.#protocol; - } - - get requests() { - return this.#requests; - } - - get sockets() { - return this.#sockets; - } - - get freeSockets() { - return this.#freeSockets; - } - - get options() { - return this.#options; - } - - get keepAliveMsecs() { - return this.#keepAliveMsecs; - } - - get keepAlive() { - return this.#keepAlive; - } - - get maxSockets() { - return this.#maxSockets; - } - - get maxFreeSockets() { - return this.#maxFreeSockets; - } - - get scheduling() { - return this.#scheduling; - } - - get maxTotalSockets() { - return this.#maxTotalSockets; - } - - get totalSocketCount() { - return this.#totalSocketCount; - } - - createConnection() { - debug(`${NODE_HTTP_WARNING}\n`, "WARN: Agent.createConnection is a no-op, returns fake socket"); - return (this.#fakeSocket ??= new FakeSocket()); - } - - getName(options = kEmptyObject) { - let name = `http:${options.host || "localhost"}:`; - if (options.port) name += options.port; - name += ":"; - if (options.localAddress) name += options.localAddress; - // Pacify parallel/test-http-agent-getname by only appending - // the ':' when options.family is set. - if (options.family === 4 || options.family === 6) name += `:${options.family}`; - if (options.socketPath) name += `:${options.socketPath}`; - return name; - } - - addRequest() { - debug(`${NODE_HTTP_WARNING}\n`, "WARN: Agent.addRequest is a no-op"); - } - - createSocket(req, options, cb) { - debug(`${NODE_HTTP_WARNING}\n`, "WARN: Agent.createSocket returns fake socket"); - cb(null, (this.#fakeSocket ??= new FakeSocket())); - } - - removeSocket() { - debug(`${NODE_HTTP_WARNING}\n`, "WARN: Agent.removeSocket is a no-op"); - } - - keepSocketAlive() { - debug(`${NODE_HTTP_WARNING}\n`, "WARN: Agent.keepSocketAlive is a no-op"); - - return true; - } - - reuseSocket() { - debug(`${NODE_HTTP_WARNING}\n`, "WARN: Agent.reuseSocket is a no-op"); - } - - destroy() { - debug(`${NODE_HTTP_WARNING}\n`, "WARN: Agent.destroy is a no-op"); - } -} -function emitListeningNextTick(self, onListen, err, hostname, port) { - if (typeof onListen === "function") { - try { - onListen(err, hostname, port); - } catch (err) { - self.emit("error", err); - } - } - - self.listening = !err; - - if (err) { - self.emit("error", err); - } else { - self.emit("listening", hostname, port); - } -} - -export class Server extends EventEmitter { - #server; - #options; - #tls; - #is_tls = false; - listening = false; - - constructor(options, callback) { - super(); - - if (typeof options === "function") { - callback = options; - options = {}; - } else if (options == null || typeof options === "object") { - options = { ...options }; - this.#tls = null; - let key = options.key; - if (key) { - if (!isValidTLSArray(key)) { - throw new TypeError( - "key argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile", - ); - } - this.#is_tls = true; - } - let cert = options.cert; - if (cert) { - if (!isValidTLSArray(cert)) { - throw new TypeError( - "cert argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile", - ); - } - this.#is_tls = true; - } - - let ca = options.ca; - if (ca) { - if (!isValidTLSArray(ca)) { - throw new TypeError( - "ca argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile", - ); - } - this.#is_tls = true; - } - let passphrase = options.passphrase; - if (passphrase && typeof passphrase !== "string") { - throw new TypeError("passphrase argument must be an string"); - } - - let serverName = options.servername; - if (serverName && typeof serverName !== "string") { - throw new TypeError("servername argument must be an string"); - } - - let secureOptions = options.secureOptions || 0; - if (secureOptions && typeof secureOptions !== "number") { - throw new TypeError("secureOptions argument must be an number"); - } - - if (this.#is_tls) { - this.#tls = { - serverName, - key: key, - cert: cert, - ca: ca, - passphrase: passphrase, - secureOptions: secureOptions, - }; - } else { - this.#tls = null; - } - } else { - throw new Error("bun-http-polyfill: invalid arguments"); - } - - this.#options = options; - - if (callback) this.on("request", callback); - } - - closeAllConnections() { - const server = this.#server; - if (!server) { - return; - } - this.#server = undefined; - server.stop(true); - this.emit("close"); - } - - closeIdleConnections() { - // not actually implemented - } - - close(optionalCallback) { - const server = this.#server; - if (!server) { - if (typeof optionalCallback === "function") - process.nextTick(optionalCallback, new Error("Server is not running")); - return; - } - this.#server = undefined; - if (typeof optionalCallback === "function") this.once("close", optionalCallback); - server.stop(); - this.emit("close"); - } - - address() { - if (!this.#server) return null; - - const address = this.#server.hostname; - return { - address, - family: isIPv6(address) ? "IPv6" : "IPv4", - port: this.#server.port, - }; - } - - listen(port, host, backlog, onListen) { - const server = this; - if (typeof host === "function") { - onListen = host; - host = undefined; - } - - if (typeof port === "function") { - onListen = port; - } else if (typeof port === "object") { - port?.signal?.addEventListener("abort", () => { - this.close(); - }); - - host = port?.host; - port = port?.port; - - if (typeof port?.callback === "function") onListen = port?.callback; - } - - if (typeof backlog === "function") { - onListen = backlog; - } - - const ResponseClass = this.#options.ServerResponse || ServerResponse; - const RequestClass = this.#options.IncomingMessage || IncomingMessage; - - try { - const tls = this.#tls; - if (tls) { - this.serverName = tls.serverName || host || "localhost"; - } - this.#server = Bun.serve({ - tls, - port, - hostname: host, - // Bindings to be used for WS Server - websocket: { - open(ws) { - ws.data.open(ws); - }, - message(ws, message) { - ws.data.message(ws, message); - }, - close(ws, code, reason) { - ws.data.close(ws, code, reason); - }, - drain(ws) { - ws.data.drain(ws); - }, - }, - fetch(req, _server) { - var pendingResponse; - var pendingError; - var rejectFunction, resolveFunction; - var reject = err => { - if (pendingError) return; - pendingError = err; - if (rejectFunction) rejectFunction(err); - }; - - var reply = function (resp) { - if (pendingResponse) return; - pendingResponse = resp; - if (resolveFunction) resolveFunction(resp); - }; - - const http_req = new RequestClass(req); - const http_res = new ResponseClass({ reply, req: http_req }); - - http_req.once("error", err => reject(err)); - http_res.once("error", err => reject(err)); - - const upgrade = req.headers.get("upgrade"); - if (upgrade) { - const socket = new FakeSocket(); - socket[kInternalSocketData] = [_server, http_res, req]; - server.emit("upgrade", http_req, socket, kEmptyBuffer); - } else { - server.emit("request", http_req, http_res); - } - - if (pendingError) { - throw pendingError; - } - - if (pendingResponse) { - return pendingResponse; - } - - return new Promise((resolve, reject) => { - resolveFunction = resolve; - rejectFunction = reject; - }); - }, - }); - setTimeout(emitListeningNextTick, 1, this, onListen, null, this.#server.hostname, this.#server.port); - } catch (err) { - setTimeout(emitListeningNextTick, 1, this, onListen, err); - } - - return this; - } - setTimeout(msecs, callback) {} -} - -function assignHeaders(object, req) { - var headers = req.headers.toJSON(); - const rawHeaders = newArrayWithSize(req.headers.count * 2); - var i = 0; - for (const key in headers) { - rawHeaders[i++] = key; - rawHeaders[i++] = headers[key]; - } - object.headers = headers; - object.rawHeaders = rawHeaders; -} -function destroyBodyStreamNT(bodyStream) { - bodyStream.destroy(); -} - -var defaultIncomingOpts = { type: "request" }; - -function getDefaultHTTPSAgent() { - return (_defaultHTTPSAgent ??= new Agent({ defaultPort: 443, protocol: "https:" })); -} - -export class IncomingMessage extends Readable { - constructor(req, defaultIncomingOpts) { - const method = req.method; - - super(); - - const url = new URL(req.url); - - var { type = "request", [kInternalRequest]: nodeReq } = defaultIncomingOpts || {}; - - this.#noBody = - type === "request" // TODO: Add logic for checking for body on response - ? "GET" === method || - "HEAD" === method || - "TRACE" === method || - "CONNECT" === method || - "OPTIONS" === method || - (parseInt(req.headers.get("Content-Length") || "") || 0) === 0 - : false; - - this.#req = req; - this.method = method; - this.#type = type; - this.complete = !!this.#noBody; - - this.#bodyStream = null; - const socket = new FakeSocket(); - socket.remoteAddress = url.hostname; - socket.remotePort = url.port; - this.#fakeSocket = socket; - - this.url = url.pathname + url.search; - this.#nodeReq = nodeReq; - assignHeaders(this, req); - } - - headers; - rawHeaders; - _consuming = false; - _dumped = false; - #bodyStream = null; - #fakeSocket = undefined; - #noBody = false; - #aborted = false; - #req; - url; - #type; - #nodeReq; - - get req() { - return this.#nodeReq; - } - - _construct(callback) { - // TODO: streaming - if (this.#type === "response" || this.#noBody) { - callback(); - return; - } - - const contentLength = this.#req.headers.get("content-length"); - const length = contentLength ? parseInt(contentLength, 10) : 0; - if (length === 0) { - this.#noBody = true; - callback(); - return; - } - - callback(); - } - - #closeBodyStream() { - debug("closeBodyStream()"); - var bodyStream = this.#bodyStream; - if (bodyStream == null) return; - this.complete = true; - this.#bodyStream = undefined; - this.push(null); - // process.nextTick(destroyBodyStreamNT, bodyStream); - } - - _read(size) { - if (this.#noBody) { - this.push(null); - this.complete = true; - } else if (this.#bodyStream == null) { - const contentLength = this.#req.headers.get("content-length"); - let remaining = contentLength ? parseInt(contentLength, 10) : 0; - this.#bodyStream = Readable.fromWeb(this.#req.body, { - highWaterMark: Number.isFinite(remaining) ? Math.min(remaining, 16384) : 16384, - }); - - const isBodySizeKnown = remaining > 0 && Number.isSafeInteger(remaining); - - if (isBodySizeKnown) { - this.#bodyStream.on("data", chunk => { - debug("body size known", remaining); - this.push(chunk); - // when we are streaming a known body size, automatically close the stream when we have read enough - remaining -= chunk?.byteLength ?? 0; - if (remaining <= 0) { - this.#closeBodyStream(); - } - }); - } else { - this.#bodyStream.on("data", chunk => { - this.push(chunk); - }); - } - - // this can be closed by the time we get here if enough data was synchronously available - this.#bodyStream && - this.#bodyStream.on("end", () => { - this.#closeBodyStream(); - }); - } else { - // this.#bodyStream.read(size); - } - } - - get aborted() { - return this.#aborted; - } - - abort() { - if (this.#aborted) return; - this.#aborted = true; - - this.#closeBodyStream(); - } - - get connection() { - return this.#fakeSocket; - } - - get statusCode() { - return this.#req.status; - } - - get statusMessage() { - return STATUS_CODES[this.#req.status]; - } - - get httpVersion() { - return "1.1"; - } - - get rawTrailers() { - return []; - } - - get httpVersionMajor() { - return 1; - } - - get httpVersionMinor() { - return 1; - } - - get trailers() { - return kEmptyObject; - } - - get socket() { - return (this.#fakeSocket ??= new FakeSocket()); - } - - set socket(val) { - this.#fakeSocket = val; - } - - setTimeout(msecs, callback) { - throw new Error("not implemented"); - } -} - -function emitErrorNt(msg, err, callback) { - callback(err); - if (typeof msg.emit === "function" && !msg._closed) { - msg.emit("error", err); - } -} - -function onError(self, err, cb) { - process.nextTick(() => emitErrorNt(self, err, cb)); -} - -function write_(msg, chunk, encoding, callback, fromEnd) { - if (typeof callback !== "function") callback = nop; - - let len; - if (chunk === null) { - // throw new ERR_STREAM_NULL_VALUES(); - throw new Error("ERR_STREAM_NULL_VALUES"); - } else if (typeof chunk === "string") { - len = Buffer.byteLength(chunk, encoding); - } else { - throw new Error("Invalid arg type for chunk"); - // throw new ERR_INVALID_ARG_TYPE( - // "chunk", - // ["string", "Buffer", "Uint8Array"], - // chunk, - // ); - } - - let err; - if (msg.finished) { - // err = new ERR_STREAM_WRITE_AFTER_END(); - err = new Error("ERR_STREAM_WRITE_AFTER_END"); - } else if (msg.destroyed) { - // err = new ERR_STREAM_DESTROYED("write"); - err = new Error("ERR_STREAM_DESTROYED"); - } - - if (err) { - if (!msg.destroyed) { - onError(msg, err, callback); - } else { - process.nextTick(callback, err); - } - return false; - } - - if (!msg._header) { - if (fromEnd) { - msg._contentLength = len; - } - // msg._implicitHeader(); - } - - if (!msg._hasBody) { - debug("This type of response MUST NOT have a body. " + "Ignoring write() calls."); - process.nextTick(callback); - return true; - } - - // if (!fromEnd && msg.socket && !msg.socket.writableCorked) { - // msg.socket.cork(); - // process.nextTick(connectionCorkNT, msg.socket); - // } - - return true; -} - -export class OutgoingMessage extends Writable { - #headers; - headersSent = false; - sendDate = true; - req; - - #finished = false; - [kEndCalled] = false; - - #fakeSocket; - #timeoutTimer = null; - [kAbortController] = null; - - // For compat with IncomingRequest - get headers() { - if (!this.#headers) return kEmptyObject; - return this.#headers.toJSON(); - } - - get shouldKeepAlive() { - return true; - } - - get chunkedEncoding() { - return false; - } - - set chunkedEncoding(value) { - // throw new Error('not implemented'); - } - - set shouldKeepAlive(value) { - // throw new Error('not implemented'); - } - - get useChunkedEncodingByDefault() { - return true; - } - - set useChunkedEncodingByDefault(value) { - // throw new Error('not implemented'); - } - - get socket() { - return (this.#fakeSocket ??= new FakeSocket()); - } - - set socket(val) { - this.#fakeSocket = val; - } - - get connection() { - return this.socket; - } - - get finished() { - return this.#finished; - } - - appendHeader(name, value) { - var headers = (this.#headers ??= new Headers()); - headers.append(name, value); - } - - flushHeaders() {} - - getHeader(name) { - return getHeader(this.#headers, name); - } - - getHeaders() { - if (!this.#headers) return kEmptyObject; - return this.#headers.toJSON(); - } - - getHeaderNames() { - var headers = this.#headers; - if (!headers) return []; - return Array.from(headers.keys()); - } - - removeHeader(name) { - if (!this.#headers) return; - this.#headers.delete(name); - } - - setHeader(name, value) { - var headers = (this.#headers ??= new Headers()); - headers.set(name, value); - return this; - } - - hasHeader(name) { - if (!this.#headers) return false; - return this.#headers.has(name); - } - - addTrailers(headers) { - throw new Error("not implemented"); - } - - [kClearTimeout]() { - if (this.#timeoutTimer) { - clearTimeout(this.#timeoutTimer); - this.#timeoutTimer = null; - } - } - - setTimeout(msecs, callback) { - if (this.#timeoutTimer) return this; - if (callback) { - this.on("timeout", callback); - } - - this.#timeoutTimer = setTimeout(async () => { - this.#timeoutTimer = null; - this[kAbortController]?.abort(); - this.emit("timeout"); - }, msecs); - - return this; - } -} - -export class ServerResponse extends Writable { - constructor({ req, reply }) { - super(); - this.req = req; - this._reply = reply; - this.sendDate = true; - this.statusCode = 200; - this.headersSent = false; - this.statusMessage = undefined; - this.#controller = undefined; - this.#firstWrite = undefined; - this._writableState.decodeStrings = false; - this.#deferred = undefined; - } - - req; - _reply; - sendDate; - statusCode; - #headers; - headersSent = false; - statusMessage; - #controller; - #firstWrite; - _sent100 = false; - _defaultKeepAlive = false; - _removedConnection = false; - _removedContLen = false; - #deferred = undefined; - #finished = false; - - _write(chunk, encoding, callback) { - if (!this.#firstWrite && !this.headersSent) { - this.#firstWrite = chunk; - callback(); - return; - } - - this.#ensureReadableStreamController(controller => { - controller.write(chunk); - callback(); - }); - } - - _writev(chunks, callback) { - if (chunks.length === 1 && !this.headersSent && !this.#firstWrite) { - this.#firstWrite = chunks[0].chunk; - callback(); - return; - } - - this.#ensureReadableStreamController(controller => { - for (const chunk of chunks) { - controller.write(chunk.chunk); - } - - callback(); - }); - } - - #ensureReadableStreamController(run) { - var thisController = this.#controller; - if (thisController) return run(thisController); - this.headersSent = true; - var firstWrite = this.#firstWrite; - this.#firstWrite = undefined; - this._reply( - new Response( - new ReadableStream({ - type: "direct", - pull: controller => { - this.#controller = controller; - if (firstWrite) controller.write(firstWrite); - firstWrite = undefined; - run(controller); - if (!this.#finished) { - return new Promise(resolve => { - this.#deferred = resolve; - }); - } - }, - }), - { - headers: this.#headers, - status: this.statusCode, - statusText: this.statusMessage ?? STATUS_CODES[this.statusCode], - }, - ), - ); - } - - _final(callback) { - if (!this.headersSent) { - var data = this.#firstWrite || ""; - this.#firstWrite = undefined; - this.#finished = true; - this._reply( - new Response(data, { - headers: this.#headers, - status: this.statusCode, - statusText: this.statusMessage ?? STATUS_CODES[this.statusCode], - }), - ); - callback && callback(); - return; - } - - this.#finished = true; - this.#ensureReadableStreamController(controller => { - controller.end(); - - callback(); - var deferred = this.#deferred; - if (deferred) { - this.#deferred = undefined; - deferred(); - } - }); - } - - writeProcessing() { - throw new Error("not implemented"); - } - - addTrailers(headers) { - throw new Error("not implemented"); - } - - assignSocket(socket) { - throw new Error("not implemented"); - } - - detachSocket(socket) { - throw new Error("not implemented"); - } - - writeContinue(callback) { - throw new Error("not implemented"); - } - - setTimeout(msecs, callback) { - throw new Error("not implemented"); - } - - get shouldKeepAlive() { - return true; - } - - get chunkedEncoding() { - return false; - } - - set chunkedEncoding(value) { - // throw new Error('not implemented'); - } - - set shouldKeepAlive(value) { - // throw new Error('not implemented'); - } - - get useChunkedEncodingByDefault() { - return true; - } - - set useChunkedEncodingByDefault(value) { - // throw new Error('not implemented'); - } - - appendHeader(name, value) { - var headers = (this.#headers ??= new Headers()); - headers.append(name, value); - } - - flushHeaders() {} - - getHeader(name) { - return getHeader(this.#headers, name); - } - - getHeaders() { - var headers = this.#headers; - if (!headers) return kEmptyObject; - return headers.toJSON(); - } - - getHeaderNames() { - var headers = this.#headers; - if (!headers) return []; - return Array.from(headers.keys()); - } - - removeHeader(name) { - if (!this.#headers) return; - this.#headers.delete(name); - } - - setHeader(name, value) { - var headers = (this.#headers ??= new Headers()); - headers.set(name, value); - return this; - } - - hasHeader(name) { - if (!this.#headers) return false; - return this.#headers.has(name); - } - - writeHead(statusCode, statusMessage, headers) { - _writeHead(statusCode, statusMessage, headers, this); - - return this; - } -} - -export class ClientRequest extends OutgoingMessage { - #timeout; - #res = null; - #upgradeOrConnect = false; - #parser = null; - #maxHeadersCount = null; - #reusedSocket = false; - #host; - #protocol; - #method; - #port; - #useDefaultPort; - #joinDuplicateHeaders; - #maxHeaderSize; - #agent = _globalAgent; - #path; - #socketPath; - - #body = null; - #fetchRequest; - #signal = null; - [kAbortController] = null; - #timeoutTimer = null; - #options; - #finished; - - get path() { - return this.#path; - } - - get port() { - return this.#port; - } - - get method() { - return this.#method; - } - - get host() { - return this.#host; - } - - get protocol() { - return this.#protocol; - } - - _write(chunk, encoding, callback) { - var body = this.#body; - if (!body) { - this.#body = chunk; - callback(); - return; - } - this.#body = body + chunk; - callback(); - } - - _writev(chunks, callback) { - var body = this.#body; - if (!body) { - this.#body = chunks.join(); - callback(); - return; - } - this.#body = body + chunks.join(); - callback(); - } - - _final(callback) { - this.#finished = true; - this[kAbortController] = new AbortController(); - this[kAbortController].signal.addEventListener("abort", () => { - this[kClearTimeout](); - }); - if (this.#signal?.aborted) { - this[kAbortController].abort(); - } - - var method = this.#method, - body = this.#body; - - try { - this.#fetchRequest = fetch( - `${this.#protocol}//${this.#host}${this.#useDefaultPort ? "" : ":" + this.#port}${this.#path}`, - { - method, - headers: this.getHeaders(), - body: body && method !== "GET" && method !== "HEAD" && method !== "OPTIONS" ? body : undefined, - redirect: "manual", - verbose: Boolean(__DEBUG__), - signal: this[kAbortController].signal, - }, - ) - .then(response => { - var res = (this.#res = new IncomingMessage(response, { - type: "response", - [kInternalRequest]: this, - })); - this.emit("response", res); - }) - .catch(err => { - if (__DEBUG__) globalReportError(err); - this.emit("error", err); - }) - .finally(() => { - this.#fetchRequest = null; - this[kClearTimeout](); - }); - } catch (err) { - if (__DEBUG__) globalReportError(err); - this.emit("error", err); - } finally { - callback(); - } - } - - get aborted() { - return this.#signal?.aborted || !!this[kAbortController]?.signal.aborted; - } - - abort() { - if (this.aborted) return; - this[kAbortController].abort(); - // TODO: Close stream if body streaming - } - - constructor(input, options, cb) { - super(); - - if (typeof input === "string") { - const urlStr = input; - try { - var urlObject = new URL(urlStr); - } catch (e) { - throw new TypeError(`Invalid URL: ${urlStr}`); - } - input = urlToHttpOptions(urlObject); - } else if (input && typeof input === "object" && input instanceof URL) { - // url.URL instance - input = urlToHttpOptions(input); - } else { - cb = options; - options = input; - input = null; - } - - if (typeof options === "function") { - cb = options; - options = input || kEmptyObject; - } else { - options = ObjectAssign(input || {}, options); - } - - var defaultAgent = options._defaultAgent || Agent.globalAgent; - - let protocol = options.protocol; - if (!protocol) { - if (options.port === 443) { - protocol = "https:"; - } else { - protocol = defaultAgent.protocol || "http:"; - } - this.#protocol = protocol; - } - - switch (this.#agent?.protocol) { - case undefined: { - break; - } - case "http:": { - if (protocol === "https:") { - defaultAgent = this.#agent = getDefaultHTTPSAgent(); - break; - } - } - case "https:": { - if (protocol === "https") { - defaultAgent = this.#agent = Agent.globalAgent; - break; - } - } - default: { - break; - } - } - - if (options.path) { - const path = String(options.path); - if (RegExpPrototypeExec.call(INVALID_PATH_REGEX, path) !== null) { - debug('Path contains unescaped characters: "%s"', path); - throw new Error("Path contains unescaped characters"); - // throw new ERR_UNESCAPED_CHARACTERS("Request path"); - } - } - - // Since we don't implement Agent, we don't need this - if (protocol !== "http:" && protocol !== "https:" && protocol) { - const expectedProtocol = defaultAgent?.protocol ?? "http:"; - throw new Error(`Protocol mismatch. Expected: ${expectedProtocol}. Got: ${protocol}`); - // throw new ERR_INVALID_PROTOCOL(protocol, expectedProtocol); - } - - const defaultPort = protocol === "https:" ? 443 : 80; - - this.#port = options.port || options.defaultPort || this.#agent?.defaultPort || defaultPort; - this.#useDefaultPort = this.#port === defaultPort; - const host = - (this.#host = - options.host = - validateHost(options.hostname, "hostname") || validateHost(options.host, "host") || "localhost"); - - // const setHost = options.setHost === undefined || Boolean(options.setHost); - - this.#socketPath = options.socketPath; - - if (options.timeout !== undefined) this.setTimeout(options.timeout, null); - - const signal = options.signal; - if (signal) { - //We still want to control abort function and timeout so signal call our AbortController - signal.addEventListener("abort", () => { - this[kAbortController]?.abort(); - }); - this.#signal = signal; - } - let method = options.method; - const methodIsString = typeof method === "string"; - if (method !== null && method !== undefined && !methodIsString) { - // throw new ERR_INVALID_ARG_TYPE("options.method", "string", method); - throw new Error("ERR_INVALID_ARG_TYPE: options.method"); - } - - if (methodIsString && method) { - if (!checkIsHttpToken(method)) { - // throw new ERR_INVALID_HTTP_TOKEN("Method", method); - throw new Error("ERR_INVALID_HTTP_TOKEN: Method"); - } - method = this.#method = StringPrototypeToUpperCase.call(method); - } else { - method = this.#method = "GET"; - } - - const _maxHeaderSize = options.maxHeaderSize; - // TODO: Validators - // if (maxHeaderSize !== undefined) - // validateInteger(maxHeaderSize, "maxHeaderSize", 0); - this.#maxHeaderSize = _maxHeaderSize; - - // const insecureHTTPParser = options.insecureHTTPParser; - // if (insecureHTTPParser !== undefined) { - // validateBoolean(insecureHTTPParser, 'options.insecureHTTPParser'); - // } - - // this.insecureHTTPParser = insecureHTTPParser; - var _joinDuplicateHeaders = options.joinDuplicateHeaders; - if (_joinDuplicateHeaders !== undefined) { - // TODO: Validators - // validateBoolean( - // options.joinDuplicateHeaders, - // "options.joinDuplicateHeaders", - // ); - } - - this.#joinDuplicateHeaders = _joinDuplicateHeaders; - - this.#path = options.path || "/"; - if (cb) { - this.once("response", cb); - } - - __DEBUG__ && - debug(`new ClientRequest: ${this.#method} ${this.#protocol}//${this.#host}:${this.#port}${this.#path}`); - - // if ( - // method === "GET" || - // method === "HEAD" || - // method === "DELETE" || - // method === "OPTIONS" || - // method === "TRACE" || - // method === "CONNECT" - // ) { - // this.useChunkedEncodingByDefault = false; - // } else { - // this.useChunkedEncodingByDefault = true; - // } - - this.#finished = false; - this.#res = null; - this.#upgradeOrConnect = false; - this.#parser = null; - this.#maxHeadersCount = null; - this.#reusedSocket = false; - this.#host = host; - this.#protocol = protocol; - this.#timeoutTimer = null; - const headersArray = ArrayIsArray(headers); - if (!headersArray) { - var headers = options.headers; - if (headers) { - for (let key in headers) { - this.setHeader(key, headers[key]); - } - } - - // if (host && !this.getHeader("host") && setHost) { - // let hostHeader = host; - - // // For the Host header, ensure that IPv6 addresses are enclosed - // // in square brackets, as defined by URI formatting - // // https://tools.ietf.org/html/rfc3986#section-3.2.2 - // const posColon = StringPrototypeIndexOf.call(hostHeader, ":"); - // if ( - // posColon !== -1 && - // StringPrototypeIncludes(hostHeader, ":", posColon + 1) && - // StringPrototypeCharCodeAt(hostHeader, 0) !== 91 /* '[' */ - // ) { - // hostHeader = `[${hostHeader}]`; - // } - - // if (port && +port !== defaultPort) { - // hostHeader += ":" + port; - // } - // this.setHeader("Host", hostHeader); - // } - - var auth = options.auth; - if (auth && !this.getHeader("Authorization")) { - this.setHeader("Authorization", "Basic " + Buffer.from(auth).toString("base64")); - } - - // if (this.getHeader("expect")) { - // if (this._header) { - // throw new ERR_HTTP_HEADERS_SENT("render"); - // } - - // this._storeHeader( - // this.method + " " + this.path + " HTTP/1.1\r\n", - // this[kOutHeaders], - // ); - // } - // } else { - // this._storeHeader( - // this.method + " " + this.path + " HTTP/1.1\r\n", - // options.headers, - // ); - } - - // this[kUniqueHeaders] = parseUniqueHeadersOption(options.uniqueHeaders); - - var optsWithoutSignal = options; - if (optsWithoutSignal.signal) { - optsWithoutSignal = ObjectAssign({}, options); - delete optsWithoutSignal.signal; - } - this.#options = optsWithoutSignal; - - var timeout = options.timeout; - if (timeout) { - this.setTimeout(timeout); - } - } - - setSocketKeepAlive(enable = true, initialDelay = 0) { - __DEBUG__ && debug(`${NODE_HTTP_WARNING}\n`, "WARN: ClientRequest.setSocketKeepAlive is a no-op"); - } - - setNoDelay(noDelay = true) { - __DEBUG__ && debug(`${NODE_HTTP_WARNING}\n`, "WARN: ClientRequest.setNoDelay is a no-op"); - } - [kClearTimeout]() { - if (this.#timeoutTimer) { - clearTimeout(this.#timeoutTimer); - this.#timeoutTimer = null; - } - } - - setTimeout(msecs, callback) { - if (this.#timeoutTimer) return this; - if (callback) { - this.on("timeout", callback); - } - - this.#timeoutTimer = setTimeout(async () => { - this.#timeoutTimer = null; - this[kAbortController]?.abort(); - this.emit("timeout"); - }, msecs); - - return this; - } -} - -function urlToHttpOptions(url) { - var { protocol, hostname, hash, search, pathname, href, port, username, password } = url; - return { - protocol, - hostname: - typeof hostname === "string" && StringPrototypeStartsWith.call(hostname, "[") - ? StringPrototypeSlice.call(hostname, 1, -1) - : hostname, - hash, - search, - pathname, - path: `${pathname || ""}${search || ""}`, - href, - port: port ? Number(port) : protocol === "https:" ? 443 : protocol === "http:" ? 80 : undefined, - auth: username || password ? `${decodeURIComponent(username)}:${decodeURIComponent(password)}` : undefined, - }; -} - -function validateHost(host, name) { - if (host !== null && host !== undefined && typeof host !== "string") { - // throw new ERR_INVALID_ARG_TYPE( - // `options.${name}`, - // ["string", "undefined", "null"], - // host, - // ); - throw new Error("Invalid arg type in options"); - } - return host; -} - -const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; -/** - * Verifies that the given val is a valid HTTP token - * per the rules defined in RFC 7230 - * See https://tools.ietf.org/html/rfc7230#section-3.2.6 - */ -function checkIsHttpToken(val) { - return RegExpPrototypeExec.call(tokenRegExp, val) !== null; -} - -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -export const METHODS = [ - "ACL", - "BIND", - "CHECKOUT", - "CONNECT", - "COPY", - "DELETE", - "GET", - "HEAD", - "LINK", - "LOCK", - "M-SEARCH", - "MERGE", - "MKACTIVITY", - "MKCALENDAR", - "MKCOL", - "MOVE", - "NOTIFY", - "OPTIONS", - "PATCH", - "POST", - "PROPFIND", - "PROPPATCH", - "PURGE", - "PUT", - "REBIND", - "REPORT", - "SEARCH", - "SOURCE", - "SUBSCRIBE", - "TRACE", - "UNBIND", - "UNLINK", - "UNLOCK", - "UNSUBSCRIBE", -]; - -export const STATUS_CODES = { - 100: "Continue", - 101: "Switching Protocols", - 102: "Processing", - 103: "Early Hints", - 200: "OK", - 201: "Created", - 202: "Accepted", - 203: "Non-Authoritative Information", - 204: "No Content", - 205: "Reset Content", - 206: "Partial Content", - 207: "Multi-Status", - 208: "Already Reported", - 226: "IM Used", - 300: "Multiple Choices", - 301: "Moved Permanently", - 302: "Found", - 303: "See Other", - 304: "Not Modified", - 305: "Use Proxy", - 307: "Temporary Redirect", - 308: "Permanent Redirect", - 400: "Bad Request", - 401: "Unauthorized", - 402: "Payment Required", - 403: "Forbidden", - 404: "Not Found", - 405: "Method Not Allowed", - 406: "Not Acceptable", - 407: "Proxy Authentication Required", - 408: "Request Timeout", - 409: "Conflict", - 410: "Gone", - 411: "Length Required", - 412: "Precondition Failed", - 413: "Payload Too Large", - 414: "URI Too Long", - 415: "Unsupported Media Type", - 416: "Range Not Satisfiable", - 417: "Expectation Failed", - 418: "I'm a Teapot", - 421: "Misdirected Request", - 422: "Unprocessable Entity", - 423: "Locked", - 424: "Failed Dependency", - 425: "Too Early", - 426: "Upgrade Required", - 428: "Precondition Required", - 429: "Too Many Requests", - 431: "Request Header Fields Too Large", - 451: "Unavailable For Legal Reasons", - 500: "Internal Server Error", - 501: "Not Implemented", - 502: "Bad Gateway", - 503: "Service Unavailable", - 504: "Gateway Timeout", - 505: "HTTP Version Not Supported", - 506: "Variant Also Negotiates", - 507: "Insufficient Storage", - 508: "Loop Detected", - 509: "Bandwidth Limit Exceeded", - 510: "Not Extended", - 511: "Network Authentication Required", -}; - -function _normalizeArgs(args) { - let arr; - - if (args.length === 0) { - arr = [{}, null]; - // arr[normalizedArgsSymbol] = true; - return arr; - } - - const arg0 = args[0]; - let options = {}; - if (typeof arg0 === "object" && arg0 !== null) { - // (options[...][, cb]) - options = arg0; - // } else if (isPipeName(arg0)) { - // (path[...][, cb]) - // options.path = arg0; - } else { - // ([port][, host][...][, cb]) - options.port = arg0; - if (args.length > 1 && typeof args[1] === "string") { - options.host = args[1]; - } - } - - const cb = args[args.length - 1]; - if (typeof cb !== "function") arr = [options, null]; - else arr = [options, cb]; - - // arr[normalizedArgsSymbol] = true; - return arr; -} - -function _writeHead(statusCode, reason, obj, response) { - statusCode |= 0; - if (statusCode < 100 || statusCode > 999) { - throw new Error("status code must be between 100 and 999"); - } - - if (typeof reason === "string") { - // writeHead(statusCode, reasonPhrase[, headers]) - response.statusMessage = reason; - } else { - // writeHead(statusCode[, headers]) - if (!response.statusMessage) response.statusMessage = STATUS_CODES[statusCode] || "unknown"; - obj = reason; - } - response.statusCode = statusCode; - - { - // Slow-case: when progressive API and header fields are passed. - let k; - if (Array.isArray(obj)) { - if (obj.length % 2 !== 0) { - throw new Error("raw headers must have an even number of elements"); - } - - for (let n = 0; n < obj.length; n += 2) { - k = obj[n + 0]; - if (k) response.setHeader(k, obj[n + 1]); - } - } else if (obj) { - const keys = Object.keys(obj); - // Retain for(;;) loop for performance reasons - // Refs: https://github.com/nodejs/node/pull/30958 - for (let i = 0; i < keys.length; i++) { - k = keys[i]; - if (k) response.setHeader(k, obj[k]); - } - } - } -} - -/** - * Makes an HTTP request. - * @param {string | URL} url - * @param {HTTPRequestOptions} [options] - * @param {Function} [cb] - * @returns {ClientRequest} - */ -export function request(url, options, cb) { - return new ClientRequest(url, options, cb); -} - -/** - * Makes a `GET` HTTP request. - * @param {string | URL} url - * @param {HTTPRequestOptions} [options] - * @param {Function} [cb] - * @returns {ClientRequest} - */ -export function get(url, options, cb) { - const req = request(url, options, cb); - req.end(); - return req; -} - -var defaultObject = { - Agent, - Server, - METHODS, - STATUS_CODES, - createServer, - ServerResponse, - IncomingMessage, - request, - get, - maxHeaderSize: 16384, - // validateHeaderName, - // validateHeaderValue, - setMaxIdleHTTPParsers(max) { - debug(`${NODE_HTTP_WARNING}\n`, "setMaxIdleHTTPParsers() is a no-op"); - }, - get globalAgent() { - return (_globalAgent ??= new Agent()); - }, - set globalAgent(agent) {}, - [Symbol.for("CommonJS")]: 0, -}; - -export default defaultObject; diff --git a/src/bun.js/http2.exports.js b/src/bun.js/http2.exports.js deleted file mode 100644 index 9deafbd3f..000000000 --- a/src/bun.js/http2.exports.js +++ /dev/null @@ -1,342 +0,0 @@ -// This is a stub! None of this is actually implemented yet. - -function hideFromStack(fns) { - for (const fn of fns) { - Object.defineProperty(fn, "name", { - value: "::bunternal::", - }); - } -} - -class TODO extends Error { - constructor(messageName) { - const message = messageName - ? `node:http2 ${messageName} is not implemented yet in Bun. Track the status and thumbs up the issue: https://github.com/oven-sh/bun/issues/887` - : `node:http2 is not implemented yet in Bun. Track the status and thumbs up the issue: https://github.com/oven-sh/bun/issues/887`; - super(message); - this.name = "TODO"; - } -} - -function notimpl(message) { - throw new TODO(message); -} - -function connect() { - notimpl("connect"); -} -const constants = { - NGHTTP2_ERR_FRAME_SIZE_ERROR: -522, - NGHTTP2_SESSION_SERVER: 0, - NGHTTP2_SESSION_CLIENT: 1, - NGHTTP2_STREAM_STATE_IDLE: 1, - NGHTTP2_STREAM_STATE_OPEN: 2, - NGHTTP2_STREAM_STATE_RESERVED_LOCAL: 3, - NGHTTP2_STREAM_STATE_RESERVED_REMOTE: 4, - NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: 5, - NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: 6, - NGHTTP2_STREAM_STATE_CLOSED: 7, - NGHTTP2_FLAG_NONE: 0, - NGHTTP2_FLAG_END_STREAM: 1, - NGHTTP2_FLAG_END_HEADERS: 4, - NGHTTP2_FLAG_ACK: 1, - NGHTTP2_FLAG_PADDED: 8, - NGHTTP2_FLAG_PRIORITY: 32, - DEFAULT_SETTINGS_HEADER_TABLE_SIZE: 4096, - DEFAULT_SETTINGS_ENABLE_PUSH: 1, - DEFAULT_SETTINGS_MAX_CONCURRENT_STREAMS: 4294967295, - DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: 65535, - DEFAULT_SETTINGS_MAX_FRAME_SIZE: 16384, - DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE: 65535, - DEFAULT_SETTINGS_ENABLE_CONNECT_PROTOCOL: 0, - MAX_MAX_FRAME_SIZE: 16777215, - MIN_MAX_FRAME_SIZE: 16384, - MAX_INITIAL_WINDOW_SIZE: 2147483647, - NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: 1, - NGHTTP2_SETTINGS_ENABLE_PUSH: 2, - NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: 3, - NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: 4, - NGHTTP2_SETTINGS_MAX_FRAME_SIZE: 5, - NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: 6, - NGHTTP2_SETTINGS_ENABLE_CONNECT_PROTOCOL: 8, - PADDING_STRATEGY_NONE: 0, - PADDING_STRATEGY_ALIGNED: 1, - PADDING_STRATEGY_MAX: 2, - PADDING_STRATEGY_CALLBACK: 1, - NGHTTP2_NO_ERROR: 0, - NGHTTP2_PROTOCOL_ERROR: 1, - NGHTTP2_INTERNAL_ERROR: 2, - NGHTTP2_FLOW_CONTROL_ERROR: 3, - NGHTTP2_SETTINGS_TIMEOUT: 4, - NGHTTP2_STREAM_CLOSED: 5, - NGHTTP2_FRAME_SIZE_ERROR: 6, - NGHTTP2_REFUSED_STREAM: 7, - NGHTTP2_CANCEL: 8, - NGHTTP2_COMPRESSION_ERROR: 9, - NGHTTP2_CONNECT_ERROR: 10, - NGHTTP2_ENHANCE_YOUR_CALM: 11, - NGHTTP2_INADEQUATE_SECURITY: 12, - NGHTTP2_HTTP_1_1_REQUIRED: 13, - NGHTTP2_DEFAULT_WEIGHT: 16, - HTTP2_HEADER_STATUS: ":status", - HTTP2_HEADER_METHOD: ":method", - HTTP2_HEADER_AUTHORITY: ":authority", - HTTP2_HEADER_SCHEME: ":scheme", - HTTP2_HEADER_PATH: ":path", - HTTP2_HEADER_PROTOCOL: ":protocol", - HTTP2_HEADER_ACCEPT_ENCODING: "accept-encoding", - HTTP2_HEADER_ACCEPT_LANGUAGE: "accept-language", - HTTP2_HEADER_ACCEPT_RANGES: "accept-ranges", - HTTP2_HEADER_ACCEPT: "accept", - HTTP2_HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS: "access-control-allow-credentials", - HTTP2_HEADER_ACCESS_CONTROL_ALLOW_HEADERS: "access-control-allow-headers", - HTTP2_HEADER_ACCESS_CONTROL_ALLOW_METHODS: "access-control-allow-methods", - HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: "access-control-allow-origin", - HTTP2_HEADER_ACCESS_CONTROL_EXPOSE_HEADERS: "access-control-expose-headers", - HTTP2_HEADER_ACCESS_CONTROL_REQUEST_HEADERS: "access-control-request-headers", - HTTP2_HEADER_ACCESS_CONTROL_REQUEST_METHOD: "access-control-request-method", - HTTP2_HEADER_AGE: "age", - HTTP2_HEADER_AUTHORIZATION: "authorization", - HTTP2_HEADER_CACHE_CONTROL: "cache-control", - HTTP2_HEADER_CONNECTION: "connection", - HTTP2_HEADER_CONTENT_DISPOSITION: "content-disposition", - HTTP2_HEADER_CONTENT_ENCODING: "content-encoding", - HTTP2_HEADER_CONTENT_LENGTH: "content-length", - HTTP2_HEADER_CONTENT_TYPE: "content-type", - HTTP2_HEADER_COOKIE: "cookie", - HTTP2_HEADER_DATE: "date", - HTTP2_HEADER_ETAG: "etag", - HTTP2_HEADER_FORWARDED: "forwarded", - HTTP2_HEADER_HOST: "host", - HTTP2_HEADER_IF_MODIFIED_SINCE: "if-modified-since", - HTTP2_HEADER_IF_NONE_MATCH: "if-none-match", - HTTP2_HEADER_IF_RANGE: "if-range", - HTTP2_HEADER_LAST_MODIFIED: "last-modified", - HTTP2_HEADER_LINK: "link", - HTTP2_HEADER_LOCATION: "location", - HTTP2_HEADER_RANGE: "range", - HTTP2_HEADER_REFERER: "referer", - HTTP2_HEADER_SERVER: "server", - HTTP2_HEADER_SET_COOKIE: "set-cookie", - HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: "strict-transport-security", - HTTP2_HEADER_TRANSFER_ENCODING: "transfer-encoding", - HTTP2_HEADER_TE: "te", - HTTP2_HEADER_UPGRADE_INSECURE_REQUESTS: "upgrade-insecure-requests", - HTTP2_HEADER_UPGRADE: "upgrade", - HTTP2_HEADER_USER_AGENT: "user-agent", - HTTP2_HEADER_VARY: "vary", - HTTP2_HEADER_X_CONTENT_TYPE_OPTIONS: "x-content-type-options", - HTTP2_HEADER_X_FRAME_OPTIONS: "x-frame-options", - HTTP2_HEADER_KEEP_ALIVE: "keep-alive", - HTTP2_HEADER_PROXY_CONNECTION: "proxy-connection", - HTTP2_HEADER_X_XSS_PROTECTION: "x-xss-protection", - HTTP2_HEADER_ALT_SVC: "alt-svc", - HTTP2_HEADER_CONTENT_SECURITY_POLICY: "content-security-policy", - HTTP2_HEADER_EARLY_DATA: "early-data", - HTTP2_HEADER_EXPECT_CT: "expect-ct", - HTTP2_HEADER_ORIGIN: "origin", - HTTP2_HEADER_PURPOSE: "purpose", - HTTP2_HEADER_TIMING_ALLOW_ORIGIN: "timing-allow-origin", - HTTP2_HEADER_X_FORWARDED_FOR: "x-forwarded-for", - HTTP2_HEADER_PRIORITY: "priority", - HTTP2_HEADER_ACCEPT_CHARSET: "accept-charset", - HTTP2_HEADER_ACCESS_CONTROL_MAX_AGE: "access-control-max-age", - HTTP2_HEADER_ALLOW: "allow", - HTTP2_HEADER_CONTENT_LANGUAGE: "content-language", - HTTP2_HEADER_CONTENT_LOCATION: "content-location", - HTTP2_HEADER_CONTENT_MD5: "content-md5", - HTTP2_HEADER_CONTENT_RANGE: "content-range", - HTTP2_HEADER_DNT: "dnt", - HTTP2_HEADER_EXPECT: "expect", - HTTP2_HEADER_EXPIRES: "expires", - HTTP2_HEADER_FROM: "from", - HTTP2_HEADER_IF_MATCH: "if-match", - HTTP2_HEADER_IF_UNMODIFIED_SINCE: "if-unmodified-since", - HTTP2_HEADER_MAX_FORWARDS: "max-forwards", - HTTP2_HEADER_PREFER: "prefer", - HTTP2_HEADER_PROXY_AUTHENTICATE: "proxy-authenticate", - HTTP2_HEADER_PROXY_AUTHORIZATION: "proxy-authorization", - HTTP2_HEADER_REFRESH: "refresh", - HTTP2_HEADER_RETRY_AFTER: "retry-after", - HTTP2_HEADER_TRAILER: "trailer", - HTTP2_HEADER_TK: "tk", - HTTP2_HEADER_VIA: "via", - HTTP2_HEADER_WARNING: "warning", - HTTP2_HEADER_WWW_AUTHENTICATE: "www-authenticate", - HTTP2_HEADER_HTTP2_SETTINGS: "http2-settings", - HTTP2_METHOD_ACL: "ACL", - HTTP2_METHOD_BASELINE_CONTROL: "BASELINE-CONTROL", - HTTP2_METHOD_BIND: "BIND", - HTTP2_METHOD_CHECKIN: "CHECKIN", - HTTP2_METHOD_CHECKOUT: "CHECKOUT", - HTTP2_METHOD_CONNECT: "CONNECT", - HTTP2_METHOD_COPY: "COPY", - HTTP2_METHOD_DELETE: "DELETE", - HTTP2_METHOD_GET: "GET", - HTTP2_METHOD_HEAD: "HEAD", - HTTP2_METHOD_LABEL: "LABEL", - HTTP2_METHOD_LINK: "LINK", - HTTP2_METHOD_LOCK: "LOCK", - HTTP2_METHOD_MERGE: "MERGE", - HTTP2_METHOD_MKACTIVITY: "MKACTIVITY", - HTTP2_METHOD_MKCALENDAR: "MKCALENDAR", - HTTP2_METHOD_MKCOL: "MKCOL", - HTTP2_METHOD_MKREDIRECTREF: "MKREDIRECTREF", - HTTP2_METHOD_MKWORKSPACE: "MKWORKSPACE", - HTTP2_METHOD_MOVE: "MOVE", - HTTP2_METHOD_OPTIONS: "OPTIONS", - HTTP2_METHOD_ORDERPATCH: "ORDERPATCH", - HTTP2_METHOD_PATCH: "PATCH", - HTTP2_METHOD_POST: "POST", - HTTP2_METHOD_PRI: "PRI", - HTTP2_METHOD_PROPFIND: "PROPFIND", - HTTP2_METHOD_PROPPATCH: "PROPPATCH", - HTTP2_METHOD_PUT: "PUT", - HTTP2_METHOD_REBIND: "REBIND", - HTTP2_METHOD_REPORT: "REPORT", - HTTP2_METHOD_SEARCH: "SEARCH", - HTTP2_METHOD_TRACE: "TRACE", - HTTP2_METHOD_UNBIND: "UNBIND", - HTTP2_METHOD_UNCHECKOUT: "UNCHECKOUT", - HTTP2_METHOD_UNLINK: "UNLINK", - HTTP2_METHOD_UNLOCK: "UNLOCK", - HTTP2_METHOD_UPDATE: "UPDATE", - HTTP2_METHOD_UPDATEREDIRECTREF: "UPDATEREDIRECTREF", - HTTP2_METHOD_VERSION_CONTROL: "VERSION-CONTROL", - HTTP_STATUS_CONTINUE: 100, - HTTP_STATUS_SWITCHING_PROTOCOLS: 101, - HTTP_STATUS_PROCESSING: 102, - HTTP_STATUS_EARLY_HINTS: 103, - HTTP_STATUS_OK: 200, - HTTP_STATUS_CREATED: 201, - HTTP_STATUS_ACCEPTED: 202, - HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: 203, - HTTP_STATUS_NO_CONTENT: 204, - HTTP_STATUS_RESET_CONTENT: 205, - HTTP_STATUS_PARTIAL_CONTENT: 206, - HTTP_STATUS_MULTI_STATUS: 207, - HTTP_STATUS_ALREADY_REPORTED: 208, - HTTP_STATUS_IM_USED: 226, - HTTP_STATUS_MULTIPLE_CHOICES: 300, - HTTP_STATUS_MOVED_PERMANENTLY: 301, - HTTP_STATUS_FOUND: 302, - HTTP_STATUS_SEE_OTHER: 303, - HTTP_STATUS_NOT_MODIFIED: 304, - HTTP_STATUS_USE_PROXY: 305, - HTTP_STATUS_TEMPORARY_REDIRECT: 307, - HTTP_STATUS_PERMANENT_REDIRECT: 308, - HTTP_STATUS_BAD_REQUEST: 400, - HTTP_STATUS_UNAUTHORIZED: 401, - HTTP_STATUS_PAYMENT_REQUIRED: 402, - HTTP_STATUS_FORBIDDEN: 403, - HTTP_STATUS_NOT_FOUND: 404, - HTTP_STATUS_METHOD_NOT_ALLOWED: 405, - HTTP_STATUS_NOT_ACCEPTABLE: 406, - HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: 407, - HTTP_STATUS_REQUEST_TIMEOUT: 408, - HTTP_STATUS_CONFLICT: 409, - HTTP_STATUS_GONE: 410, - HTTP_STATUS_LENGTH_REQUIRED: 411, - HTTP_STATUS_PRECONDITION_FAILED: 412, - HTTP_STATUS_PAYLOAD_TOO_LARGE: 413, - HTTP_STATUS_URI_TOO_LONG: 414, - HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: 415, - HTTP_STATUS_RANGE_NOT_SATISFIABLE: 416, - HTTP_STATUS_EXPECTATION_FAILED: 417, - HTTP_STATUS_TEAPOT: 418, - HTTP_STATUS_MISDIRECTED_REQUEST: 421, - HTTP_STATUS_UNPROCESSABLE_ENTITY: 422, - HTTP_STATUS_LOCKED: 423, - HTTP_STATUS_FAILED_DEPENDENCY: 424, - HTTP_STATUS_TOO_EARLY: 425, - HTTP_STATUS_UPGRADE_REQUIRED: 426, - HTTP_STATUS_PRECONDITION_REQUIRED: 428, - HTTP_STATUS_TOO_MANY_REQUESTS: 429, - HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: 431, - HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: 451, - HTTP_STATUS_INTERNAL_SERVER_ERROR: 500, - HTTP_STATUS_NOT_IMPLEMENTED: 501, - HTTP_STATUS_BAD_GATEWAY: 502, - HTTP_STATUS_SERVICE_UNAVAILABLE: 503, - HTTP_STATUS_GATEWAY_TIMEOUT: 504, - HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: 505, - HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: 506, - HTTP_STATUS_INSUFFICIENT_STORAGE: 507, - HTTP_STATUS_LOOP_DETECTED: 508, - HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: 509, - HTTP_STATUS_NOT_EXTENDED: 510, - HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: 511, -}; - -function createServer() { - notimpl("createServer"); -} -function createSecureServer() { - notimpl("createSecureServer"); -} -function getDefaultSettings() { - return { - headerTableSize: 4096, - enablePush: true, - initialWindowSize: 65535, - maxFrameSize: 16384, - maxConcurrentStreams: 4294967295, - maxHeaderSize: 65535, - maxHeaderListSize: 65535, - enableConnectProtocol: false, - }; -} -function getPackedSettings() { - return Buffer.alloc(0); -} -function getUnpackedSettings() { - return Buffer.alloc(0); -} -const sensitiveHeaders = Symbol.for("nodejs.http2.sensitiveHeaders"); -function Http2ServerRequest() { - notimpl("Http2ServerRequest"); -} -function Http2ServerResponse() { - notimpl("Http2ServerResponse"); -} - -const defaultObject = { - constants, - createServer, - createSecureServer, - getDefaultSettings, - getPackedSettings, - getUnpackedSettings, - sensitiveHeaders, - Http2ServerRequest, - Http2ServerResponse, - [Symbol.for("CommonJS")]: 0, - connect, -}; - -export { - constants, - createServer, - createSecureServer, - getDefaultSettings, - getPackedSettings, - getUnpackedSettings, - sensitiveHeaders, - Http2ServerRequest, - Http2ServerResponse, - defaultObject as default, - connect, -}; - -hideFromStack([ - TODO.prototype.constructor, - Http2ServerRequest, - notimpl, - Http2ServerResponse, - connect, - createServer, - createSecureServer, - getDefaultSettings, - getPackedSettings, - getUnpackedSettings, -]); diff --git a/src/bun.js/https.exports.js b/src/bun.js/https.exports.js deleted file mode 100644 index 30e0469f5..000000000 --- a/src/bun.js/https.exports.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from "node:http"; -const HTTP = import.meta.require("node:http"); -export default HTTP; diff --git a/src/bun.js/inspector.exports.js b/src/bun.js/inspector.exports.js deleted file mode 100644 index eccb39c10..000000000 --- a/src/bun.js/inspector.exports.js +++ /dev/null @@ -1,68 +0,0 @@ -// This is a stub! None of this is actually implemented yet. - -function hideFromStack(fns) { - for (const fn of fns) { - Object.defineProperty(fn, "name", { - value: "::bunternal::", - }); - } -} - -class TODO extends Error { - constructor(messageName) { - const message = messageName - ? `node:inspector ${messageName} is not implemented yet in Bun. Track the status & thumbs up the issue: https://github.com/oven-sh/bun/issues/2445` - : `node:inspector is not implemented yet in Bun. Track the status & thumbs up the issue: https://github.com/oven-sh/bun/issues/2445`; - super(message); - this.name = "TODO"; - } -} - -function notimpl(message) { - throw new TODO(message); -} - -const { EventEmitter } = import.meta.require("node:events"); - -function open() { - notimpl("open"); -} - -function close() { - notimpl("close"); -} - -function url() { - notimpl("url"); -} - -function waitForDebugger() { - notimpl("waitForDebugger"); -} - -class Session extends EventEmitter { - constructor() { - super(); - notimpl("Session"); - } -} - -const console = { - ...globalThis.console, - context: { - console: globalThis.console, - }, -}; - -var defaultObject = { - console, - open, - close, - url, - waitForDebugger, - Session, - [Symbol.for("CommonJS")]: 0, -}; - -export { console, open, close, url, waitForDebugger, Session, defaultObject as default }; -hideFromStack([notimpl, TODO.prototype.constructor, open, close, url, waitForDebugger, Session.prototype.constructor]); diff --git a/src/bun.js/module_loader.zig b/src/bun.js/module_loader.zig index c23efd197..eddafd5ac 100644 --- a/src/bun.js/module_loader.zig +++ b/src/bun.js/module_loader.zig @@ -86,22 +86,25 @@ const PackageManager = @import("../install/install.zig").PackageManager; const Install = @import("../install/install.zig"); const VirtualMachine = JSC.VirtualMachine; const Dependency = @import("../install/dependency.zig"); -// This exists to make it so we can reload these quicker in development + +// Setting BUN_OVERRIDE_MODULE_PATH to the path to the bun repo will make it so modules are loaded +// from there instead of the ones embedded into the binary. +// In debug mode, this is set automatically for you, using the path relative to this file. fn jsModuleFromFile(from_path: string, comptime input: string) string { - const absolute_path = comptime (bun.Environment.base_path ++ std.fs.path.dirname(@src().file).?) ++ "/" ++ input; + // `modules_dev` is not minified or committed. Later we could also try loading source maps for it too. + const moduleFolder = if (comptime Environment.isDebug) "modules_dev" else "modules"; + const Holder = struct { - pub const file = @embedFile(input); + pub const file = @embedFile("../js/out/" ++ moduleFolder ++ "/" ++ input); }; - if (comptime !Environment.allow_assert) { - if (from_path.len == 0) { - return Holder.file; - } + if ((comptime !Environment.allow_assert) and from_path.len == 0) { + return Holder.file; } var file: std.fs.File = undefined; - - if (comptime Environment.allow_assert) { + if ((comptime Environment.allow_assert) and from_path.len == 0) { + const absolute_path = comptime (Environment.base_path ++ (std.fs.path.dirname(std.fs.path.dirname(@src().file).?).?) ++ "/js/out/" ++ moduleFolder ++ "/" ++ input); file = std.fs.openFileAbsoluteZ(absolute_path, .{ .mode = .read_only }) catch { const WarnOnce = struct { pub var warned = false; @@ -113,7 +116,7 @@ fn jsModuleFromFile(from_path: string, comptime input: string) string { return Holder.file; }; } else { - var parts = [_]string{ from_path, input }; + var parts = [_]string{ from_path, "src/js/out/" ++ moduleFolder ++ "/" ++ input }; var buf: [bun.MAX_PATH_BYTES]u8 = undefined; var absolute_path_to_use = Fs.FileSystem.instance.absBuf(&parts, &buf); buf[absolute_path_to_use.len] = 0; @@ -129,10 +132,8 @@ fn jsModuleFromFile(from_path: string, comptime input: string) string { }; } - var contents = file.readToEndAlloc(bun.default_allocator, std.math.maxInt(usize)) catch @panic("Cannot read file: " ++ absolute_path); - if (comptime !Environment.allow_assert) { - file.close(); - } + var contents = file.readToEndAlloc(bun.default_allocator, std.math.maxInt(usize)) catch @panic("Cannot read file " ++ input); + file.close(); return contents; } @@ -1275,8 +1276,8 @@ pub const ModuleLoader = struct { strings.append3( bun.default_allocator, JSC.Node.fs.constants_string, - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./wasi.exports.js")), - jsModuleFromFile(jsc_vm.load_builtins_from_path, "wasi-runner.js"), + @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "node/wasi.js")), + @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "bun/wasi-runner.js")), ) catch unreachable, ), .specifier = ZigString.init(display_specifier), @@ -1593,8 +1594,6 @@ pub const ModuleLoader = struct { return globalObject.runOnLoadPlugins(ZigString.init(namespace), ZigString.init(after_namespace), .bun) orelse return JSValue.zero; } - const shared_library_suffix = if (Environment.isMac) "dylib" else if (Environment.isLinux) "so" else ""; - pub fn fetchBuiltinModule(jsc_vm: *VirtualMachine, specifier: string, log: *logger.Log, comptime disable_transpilying: bool) !?ResolvedSource { if (jsc_vm.node_modules != null and strings.eqlComptime(specifier, JSC.bun_file_import_path)) { // We kind of need an abstraction around this. @@ -1707,411 +1706,86 @@ pub const ModuleLoader = struct { .hash = 0, }; }, - .@"bun:jsc" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "bun-jsc.exports.js")), - .specifier = ZigString.init("bun:jsc"), - .source_url = ZigString.init("bun:jsc"), - .hash = 0, - }; - }, - .@"bun:events_native" => return jsSyntheticModule(.@"bun:events_native"), - .@"node:child_process" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "child_process.exports.js")), - .specifier = ZigString.init("node:child_process"), - .source_url = ZigString.init("node:child_process"), - .hash = 0, - }; - }, - .@"node:net" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "net.exports.js")), - .specifier = ZigString.init("node:net"), - .source_url = ZigString.init("node:net"), - .hash = 0, - }; - }, - .@"node:fs" => { - if (comptime Environment.isDebug) { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "fs.exports.js")), - .specifier = ZigString.init("node:fs"), - .source_url = ZigString.init("node:fs"), - .hash = 0, - }; - } else if (jsc_vm.load_builtins_from_path.len != 0) { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "fs.exports.js")), - .specifier = ZigString.init("node:fs"), - .source_url = ZigString.init("node:fs"), - .hash = 0, - }; - } - - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(@embedFile("fs.exports.js")), - .specifier = ZigString.init("node:fs"), - .source_url = ZigString.init("node:fs"), - .hash = 0, - }; - }, .@"node:buffer" => return jsSyntheticModule(.@"node:buffer"), .@"node:string_decoder" => return jsSyntheticModule(.@"node:string_decoder"), .@"node:module" => return jsSyntheticModule(.@"node:module"), - .@"node:events" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "events.exports.js")), - .specifier = ZigString.init("node:events"), - .source_url = ZigString.init("node:events"), - .hash = 0, - }; - }, .@"node:process" => return jsSyntheticModule(.@"node:process"), .@"node:tty" => return jsSyntheticModule(.@"node:tty"), .@"node:util/types" => return jsSyntheticModule(.@"node:util/types"), - .@"node:stream" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "streams.exports.js")), - .specifier = ZigString.init("node:stream"), - .source_url = ZigString.init("node:stream"), - .hash = 0, - }; - }, - .@"node:zlib" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "zlib.exports.js")), - .specifier = ZigString.init("node:zlib"), - .source_url = ZigString.init("node:zlib"), - .hash = 0, - }; - }, - .@"node:async_hooks" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "async_hooks.exports.js")), - .specifier = ZigString.init("node:async_hooks"), - .source_url = ZigString.init("node:async_hooks"), - .hash = 0, - }; - }, + .@"bun:events_native" => return jsSyntheticModule(.@"bun:events_native"), .@"node:fs/promises" => { return ResolvedSource{ .allocator = null, - .source_code = ZigString.init(JSC.Node.fs.constants_string ++ @embedFile("fs_promises.exports.js")), + .source_code = ZigString.init(JSC.Node.fs.constants_string ++ @embedFile("../js/out/modules/node/fs.promises.js")), .specifier = ZigString.init("node:fs/promises"), .source_url = ZigString.init("node:fs/promises"), .hash = 0, }; }, - .@"node:path" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "path.exports.js")), - .specifier = ZigString.init("node:path"), - .source_url = ZigString.init("node:path"), - .hash = 0, - }; - }, - .@"node:dns" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "node-dns.exports.js")), - .specifier = ZigString.init("node:dns"), - .source_url = ZigString.init("node:dns"), - .hash = 0, - }; - }, - .@"node:tls" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "node-tls.exports.js")), - .specifier = ZigString.init("node:tls"), - .source_url = ZigString.init("node:tls"), - .hash = 0, - }; - }, - .@"node:dns/promises" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "node-dns_promises.exports.js")), - .specifier = ZigString.init("node:dns/promises"), - .source_url = ZigString.init("node:dns/promises"), - .hash = 0, - }; - }, - .@"node:path/win32" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "path-win32.exports.js")), - .specifier = ZigString.init("node:path/win32"), - .source_url = ZigString.init("node:path/win32"), - .hash = 0, - }; - }, - .@"node:path/posix" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "path-posix.exports.js")), - .specifier = ZigString.init("node:path/posix"), - .source_url = ZigString.init("node:path/posix"), - .hash = 0, - }; - }, - - .@"node:os" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "os.exports.js")), - .specifier = ZigString.init("node:os"), - .source_url = ZigString.init("node:os"), - .hash = 0, - }; - }, - .@"node:crypto" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "crypto.exports.js")), - .specifier = ZigString.init("node:crypto"), - .source_url = ZigString.init("node:crypto"), - .hash = 0, - }; - }, - .@"node:readline" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "readline.exports.js")), - .specifier = ZigString.init("node:readline"), - .source_url = ZigString.init("node:readline"), - .hash = 0, - }; - }, - .@"node:readline/promises" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init(jsModuleFromFile(jsc_vm.load_builtins_from_path, "readline_promises.exports.js")), - .specifier = ZigString.init("node:readline/promises"), - .source_url = ZigString.init("node:readline/promises"), - .hash = 0, - }; - }, .@"bun:ffi" => { return ResolvedSource{ .allocator = null, .source_code = ZigString.init( - "export const FFIType = " ++ + "export const FFIType=" ++ JSC.FFI.ABIType.map_to_js_object ++ - ";\n\n" ++ - "export const suffix = '" ++ shared_library_suffix ++ "';\n\n" ++ - @embedFile("ffi.exports.js") ++ - "\n", + ";" ++ + @embedFile("../js/out/modules/bun/ffi.js"), ), .specifier = ZigString.init("bun:ffi"), .source_url = ZigString.init("bun:ffi"), .hash = 0, }; }, - .@"detect-libc" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, @embedFile(if (Environment.isLinux) "detect-libc.linux.js" else "detect-libc.js")), - ), - .specifier = ZigString.init("detect-libc"), - .source_url = ZigString.init("detect-libc"), - .hash = 0, - }; - }, - .@"node:url" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "url.exports.js")), - ), - .specifier = ZigString.init("node:url"), - .source_url = ZigString.init("node:url"), - .hash = 0, - }; - }, - .@"node:assert" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "assert.exports.js")), - ), - .specifier = ZigString.init("node:assert"), - .source_url = ZigString.init("node:assert"), - .hash = 0, - }; - }, - .@"bun:sqlite" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./bindings/sqlite/sqlite.exports.js")), - ), - .specifier = ZigString.init("bun:sqlite"), - .source_url = ZigString.init("bun:sqlite"), - .hash = 0, - }; - }, - .@"node:perf_hooks" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./perf_hooks.exports.js")), - ), - .specifier = ZigString.init("node:perf_hooks"), - .source_url = ZigString.init("node:perf_hooks"), - .hash = 0, - }; - }, - .ws => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./ws.exports.js")), - ), - .specifier = ZigString.init("ws"), - .source_url = ZigString.init("ws"), - .hash = 0, - }; - }, - .@"node:timers" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./node_timers.exports.js")), - ), - .specifier = ZigString.init("node:timers"), - .source_url = ZigString.init("node:timers"), - .hash = 0, - }; - }, - .@"node:timers/promises" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./node_timers_promises.exports.js")), - ), - .specifier = ZigString.init("node:timers/promises"), - .source_url = ZigString.init("node:timers/promises"), - .hash = 0, - }; - }, - .@"node:stream/web" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./node_streams_web.exports.js")), - ), - .specifier = ZigString.init("node:stream/web"), - .source_url = ZigString.init("node:stream/web"), - .hash = 0, - }; - }, - .@"node:stream/consumers" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./node_streams_consumer.exports.js")), - ), - .specifier = ZigString.init("node:stream/consumers"), - .source_url = ZigString.init("node:stream/consumers"), - .hash = 0, - }; - }, - .@"node:util" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./util.exports.js")), - ), - .specifier = ZigString.init("node:util"), - .source_url = ZigString.init("node:util"), - .hash = 0, - }; - }, - .undici => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./undici.exports.js")), - ), - .specifier = ZigString.init("undici"), - .source_url = ZigString.init("undici"), - .hash = 0, - }; - }, - .@"node:wasi" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - strings.append( - bun.default_allocator, - JSC.Node.fs.constants_string, - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./wasi.exports.js")), - ) catch unreachable, - ), - .specifier = ZigString.init("node:wasi"), - .source_url = ZigString.init("node:wasi"), - .hash = 0, - }; - }, - .@"node:http" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./http.exports.js")), - ), - .specifier = ZigString.init("node:http"), - .source_url = ZigString.init("node:http"), - .hash = 0, - }; - }, - .@"node:https" => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./https.exports.js")), - ), - .specifier = ZigString.init("node:https"), - .source_url = ZigString.init("node:https"), - .hash = 0, - }; - }, - .depd => { - return ResolvedSource{ - .allocator = null, - .source_code = ZigString.init( - @as(string, jsModuleFromFile(jsc_vm.load_builtins_from_path, "./depd.exports.js")), - ), - .specifier = ZigString.init("depd"), - .source_url = ZigString.init("depd"), - .hash = 0, - }; - }, - .@"node:stream/promises" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:stream/promises", "node_streams_promises.exports.js"), - .@"node:vm" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:vm", "vm.exports.js"), - .@"node:assert/strict" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:assert/strict", "assert_strict.exports.js"), - .@"node:v8" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:v8", "v8.exports.js"), - .@"node:trace_events" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:trace_events", "trace_events.exports.js"), - .@"node:repl" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:repl", "repl.exports.js"), - .@"node:inspector" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:inspector", "inspector.exports.js"), - .@"node:http2" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:http2", "http2.exports.js"), - .@"node:diagnostics_channel" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:diagnostics_channel", "diagnostics_channel.exports.js"), - .@"node:dgram" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:dgram", "dgram.exports.js"), - .@"node:cluster" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:cluster", "cluster.exports.js"), + + .@"bun:jsc" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"bun:jsc", "bun/jsc.js"), + .@"bun:sqlite" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"bun:sqlite", "bun/sqlite.js"), + + .@"node:assert" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:assert", "node/assert.js"), + .@"node:assert/strict" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:assert/strict", "node/assert.strict.js"), + .@"node:async_hooks" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:async_hooks", "node/async_hooks.js"), + .@"node:child_process" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:child_process", "node/child_process.js"), + .@"node:crypto" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:crypto", "node/crypto.js"), + .@"node:dns" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:dns", "node/dns.js"), + .@"node:dns/promises" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:dns/promises", "node/dns.promises.js"), + .@"node:events" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:child_process", "node/events.js"), + .@"node:fs" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:fs", "node/fs.js"), + .@"node:http" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:http", "node/http.js"), + .@"node:https" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:https", "node/https.js"), + .@"node:net" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:net", "node/net.js"), + .@"node:os" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:os", "node/os.js"), + .@"node:path" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:path", "node/path.js"), + .@"node:path/posix" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:path/posix", "node/path.posix.js"), + .@"node:path/win32" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:path/win32", "node/path.win32.js"), + .@"node:perf_hooks" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:perf_hooks", "node/perf_hooks.js"), + .@"node:readline" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:readline", "node/readline.js"), + .@"node:readline/promises" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:readline/promises", "node/readline.promises.js"), + .@"node:stream" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:stream", "node/stream.js"), + .@"node:stream/consumers" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:stream/consumers", "node/stream.consumers.js"), + .@"node:stream/promises" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:stream/promises", "node/stream.promises.js"), + .@"node:stream/web" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:stream/web", "node/stream.web.js"), + .@"node:timers" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:timers", "node/timers.js"), + .@"node:timers/promises" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:timers/promises", "node/timers.promises.js"), + .@"node:tls" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:tls", "node/tls.js"), + .@"node:url" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:url", "node/url.js"), + .@"node:util" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:util", "node/util.js"), + .@"node:vm" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:vm", "node/vm.js"), + .@"node:wasi" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:wasi", "node/wasi.js"), + .@"node:zlib" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:zlib", "node/zlib.js"), + + .@"detect-libc" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"detect-libc", "thirdparty/detect-libc.js"), + .depd => return jsResolvedSource(jsc_vm.load_builtins_from_path, .depd, "thirdparty/depd.js"), + .undici => return jsResolvedSource(jsc_vm.load_builtins_from_path, .undici, "thirdparty/undici.js"), + .ws => return jsResolvedSource(jsc_vm.load_builtins_from_path, .ws, "thirdparty/ws.js"), + + .@"node:cluster" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:cluster", "node/cluster.js"), + .@"node:dgram" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:dgram", "node/dgram.js"), + .@"node:diagnostics_channel" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:diagnostics_channel", "node/diagnostics_channel.js"), + .@"node:http2" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:http2", "node/http2.js"), + .@"node:inspector" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:inspector", "node/inspector.js"), + .@"node:repl" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:repl", "node/repl.js"), + .@"node:trace_events" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:trace_events", "node/trace_events.js"), + .@"node:v8" => return jsResolvedSource(jsc_vm.load_builtins_from_path, .@"node:v8", "node/v8.js"), } } else if (strings.hasPrefixComptime(specifier, js_ast.Macro.namespaceWithColon)) { if (jsc_vm.macro_entry_points.get(MacroEntryPoint.generateIDFromSpecifier(specifier))) |entry| { @@ -2513,7 +2187,7 @@ pub const DisabledModule = bun.ComptimeStringMap( }, ); -fn jsResolvedSource(builtins: []const u8, comptime module: HardcodedModule, comptime input: []const u8) ResolvedSource { +inline fn jsResolvedSource(builtins: []const u8, comptime module: HardcodedModule, comptime input: []const u8) ResolvedSource { return ResolvedSource{ .allocator = null, .source_code = ZigString.init(jsModuleFromFile(builtins, input)), diff --git a/src/bun.js/net.exports.js b/src/bun.js/net.exports.js deleted file mode 100644 index 3d15eed2b..000000000 --- a/src/bun.js/net.exports.js +++ /dev/null @@ -1,795 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// IPv4 Segment -const v4Seg = "(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"; -const v4Str = `(${v4Seg}[.]){3}${v4Seg}`; -const IPv4Reg = new RegExp(`^${v4Str}$`); - -// IPv6 Segment -const v6Seg = "(?:[0-9a-fA-F]{1,4})"; -const IPv6Reg = new RegExp( - "^(" + - `(?:${v6Seg}:){7}(?:${v6Seg}|:)|` + - `(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|` + - `(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|` + - `(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|` + - `(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|` + - `(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` + - `(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` + - `(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` + - ")(%[0-9a-zA-Z-.:]{1,})?$", -); - -function isIPv4(s) { - return IPv4Reg.test(s); -} - -function isIPv6(s) { - return IPv6Reg.test(s); -} - -function isIP(s) { - if (isIPv4(s)) return 4; - if (isIPv6(s)) return 6; - return 0; -} - -const { Bun, createFIFO, Object } = import.meta.primordials; -const { connect: bunConnect } = Bun; -const { Duplex } = import.meta.require("node:stream"); -const { EventEmitter } = import.meta.require("node:events"); -var { setTimeout } = globalThis; - -const bunTlsSymbol = Symbol.for("::buntls::"); -const bunSocketServerHandlers = Symbol.for("::bunsocket_serverhandlers::"); -const bunSocketServerConnections = Symbol.for("::bunnetserverconnections::"); -const bunSocketServerOptions = Symbol.for("::bunnetserveroptions::"); - -var SocketClass; -const Socket = (function (InternalSocket) { - SocketClass = InternalSocket; - Object.defineProperty(SocketClass.prototype, Symbol.toStringTag, { - value: "Socket", - enumerable: false, - }); - - return Object.defineProperty( - function Socket(options) { - return new InternalSocket(options); - }, - Symbol.hasInstance, - { - value(instance) { - return instance instanceof InternalSocket; - }, - }, - ); -})( - class Socket extends Duplex { - static #Handlers = { - close: Socket.#Close, - connectError(socket, error) { - const self = socket.data; - - self.emit("error", error); - }, - data({ data: self }, buffer) { - self.bytesRead += buffer.length; - const queue = self.#readQueue; - - if (queue.isEmpty()) { - if (self.push(buffer)) return; - } - queue.push(buffer); - }, - drain: Socket.#Drain, - end: Socket.#Close, - error(socket, error) { - const self = socket.data; - const callback = self.#writeCallback; - if (callback) { - self.#writeCallback = null; - callback(error); - } - self.emit("error", error); - }, - open(socket) { - const self = socket.data; - socket.timeout(self.timeout); - socket.ref(); - self.#socket = socket; - self.connecting = false; - self.emit("connect", self); - Socket.#Drain(socket); - }, - handshake(socket, success, verifyError) { - const { data: self } = socket; - self._securePending = false; - self.secureConnecting = false; - self._secureEstablished = !!success; - - // Needs getPeerCertificate support (not implemented yet) - // if (!verifyError && !this.isSessionReused()) { - // const hostname = options.servername || - // options.host || - // (options.socket && options.socket._host) || - // 'localhost'; - // const cert = this.getPeerCertificate(true); - // verifyError = options.checkServerIdentity(hostname, cert); - // } - - if (self._requestCert || self._rejectUnauthorized) { - if (verifyError) { - self.authorized = false; - self.authorizationError = verifyError.code || verifyError.message; - if (self._rejectUnauthorized) { - self.destroy(verifyError); - return; - } - } - } else { - self.authorized = true; - } - self.emit("secureConnect", verifyError); - }, - timeout(socket) { - const self = socket.data; - self.emit("timeout", self); - }, - binaryType: "buffer", - }; - - static #Close(socket) { - const self = socket.data; - if (self.#closed) return; - self.#closed = true; - //socket cannot be used after close - self.#socket = null; - const queue = self.#readQueue; - if (queue.isEmpty()) { - if (self.push(null)) return; - } - queue.push(null); - } - - static #Drain(socket) { - const self = socket.data; - - const callback = self.#writeCallback; - if (callback) { - const chunk = self.#writeChunk; - const written = socket.write(chunk); - - self.bytesWritten += written; - if (written < chunk.length) { - self.#writeChunk = chunk.slice(written); - } else { - self.#writeCallback = null; - self.#writeChunk = null; - callback(null); - } - } - } - - static [bunSocketServerHandlers] = { - data: Socket.#Handlers.data, - close(socket) { - Socket.#Handlers.close(socket); - this.data[bunSocketServerConnections]--; - }, - end(socket) { - Socket.#Handlers.end(socket); - this.data[bunSocketServerConnections]--; - }, - open(socket) { - const self = this.data; - const options = self[bunSocketServerOptions]; - const { pauseOnConnect, connectionListener, InternalSocketClass, requestCert, rejectUnauthorized } = options; - const _socket = new InternalSocketClass({}); - _socket.isServer = true; - _socket._requestCert = requestCert; - _socket._rejectUnauthorized = rejectUnauthorized; - - _socket.#attach(this.localPort, socket); - if (self.maxConnections && self[bunSocketServerConnections] >= self.maxConnections) { - const data = { - localAddress: _socket.localAddress, - localPort: _socket.localPort, - localFamily: _socket.localFamily, - remoteAddress: _socket.remoteAddress, - remotePort: _socket.remotePort, - remoteFamily: _socket.remoteFamily || "IPv4", - }; - - socket.end(); - - self.emit("drop", data); - return; - } - // the duplex implementation start paused, so we resume when pauseOnConnect is falsy - if (!pauseOnConnect) { - _socket.resume(); - } - - self[bunSocketServerConnections]++; - - if (typeof connectionListener == "function") { - if (InternalSocketClass.name === "TLSSocket") { - // add secureConnection event handler - self.once("secureConnection", () => connectionListener(_socket)); - } else { - connectionListener(_socket); - } - } - - self.emit("connection", _socket); - }, - handshake({ data: self }, success, verifyError) { - self._securePending = false; - self.secureConnecting = false; - self._secureEstablished = !!success; - // Needs getPeerCertificate support (not implemented yet) - // if (!verifyError && !this.isSessionReused()) { - // const hostname = options.servername || - // options.host || - // (options.socket && options.socket._host) || - // 'localhost'; - // const cert = this.getPeerCertificate(true); - // verifyError = options.checkServerIdentity(hostname, cert); - // } - - if (self._requestCert || self._rejectUnauthorized) { - if (verifyError) { - self.authorized = false; - self.authorizationError = verifyError.code || verifyError.message; - if (self._rejectUnauthorized) { - self.destroy(verifyError); - return; - } - } - } else { - self.authorized = true; - } - self.emit("secureConnect", verifyError); - }, - error(socket, error) { - Socket.#Handlers.error(socket, error); - this.data.emit("error", error); - }, - timeout: Socket.#Handlers.timeout, - connectError: Socket.#Handlers.connectError, - drain: Socket.#Handlers.drain, - binaryType: "buffer", - }; - - bytesRead = 0; - bytesWritten = 0; - #closed = false; - connecting = false; - localAddress = "127.0.0.1"; - #readQueue = createFIFO(); - remotePort; - #socket; - timeout = 0; - #writeCallback; - #writeChunk; - #pendingRead; - - isServer = false; - - constructor(options) { - const { signal, write, read, allowHalfOpen = false, ...opts } = options || {}; - super({ - ...opts, - allowHalfOpen, - readable: true, - writable: true, - }); - this.#pendingRead = undefined; - signal?.once("abort", () => this.destroy()); - this.once("connect", () => this.emit("ready")); - } - - address() { - return { - address: this.localAddress, - family: this.localFamily, - port: this.localPort, - }; - } - - get bufferSize() { - return this.writableLength; - } - - #attach(port, socket) { - this.remotePort = port; - socket.data = this; - socket.timeout(this.timeout); - socket.ref(); - this.#socket = socket; - this.connecting = false; - this.emit("connect", this); - Socket.#Drain(socket); - } - - connect(port, host, connectListener) { - var path; - if (typeof port === "string") { - path = port; - port = undefined; - - if (typeof host === "function") { - connectListener = host; - host = undefined; - } - } else if (typeof host == "function") { - if (typeof port === "string") { - path = port; - port = undefined; - } - - connectListener = host; - host = undefined; - } - if (typeof port == "object") { - var { - port, - host, - path, - // TODOs - localAddress, - localPort, - family, - hints, - lookup, - noDelay, - keepAlive, - keepAliveInitialDelay, - requestCert, - rejectUnauthorized, - pauseOnConnect, - servername, - } = port; - this.servername = servername; - } - - if (!pauseOnConnect) { - this.resume(); - } - this.connecting = true; - this.remotePort = port; - - const bunTLS = this[bunTlsSymbol]; - var tls = undefined; - - if (typeof bunTLS === "function") { - tls = bunTLS.call(this, port, host, true); - // Client always request Cert - this._requestCert = true; - this._rejectUnauthorized = rejectUnauthorized; - - if (tls) { - // TLS can true/false or options - if (typeof tls !== "object") { - tls = { - rejectUnauthorized: rejectUnauthorized, - requestCert: true, - }; - } else { - tls.rejectUnauthorized = rejectUnauthorized; - tls.requestCert = true; - } - } - - this.authorized = false; - this.secureConnecting = true; - this._secureEstablished = false; - this._securePending = true; - if (connectListener) this.on("secureConnect", connectListener); - } else if (connectListener) this.on("connect", connectListener); - bunConnect( - path - ? { - data: this, - unix: path, - socket: Socket.#Handlers, - tls, - } - : { - data: this, - hostname: host || "localhost", - port: port, - socket: Socket.#Handlers, - tls, - }, - ); - return this; - } - - _destroy(err, callback) { - this.#socket?.end(); - callback(err); - } - - _final(callback) { - this.#socket?.end(); - callback(); - } - - get localAddress() { - return "127.0.0.1"; - } - - get localFamily() { - return "IPv4"; - } - - get localPort() { - return this.#socket?.localPort; - } - - get pending() { - return this.connecting; - } - - _read(size) { - const queue = this.#readQueue; - let chunk; - while ((chunk = queue.peek())) { - if (!this.push(chunk)) return; - queue.shift(); - } - } - - get readyState() { - if (this.connecting) return "opening"; - if (this.readable) { - return this.writable ? "open" : "readOnly"; - } else { - return this.writable ? "writeOnly" : "closed"; - } - } - - ref() { - this.#socket?.ref(); - } - - get remoteAddress() { - return this.#socket?.remoteAddress; - } - - get remoteFamily() { - return "IPv4"; - } - - resetAndDestroy() { - this.#socket?.end(); - } - - setKeepAlive(enable = false, initialDelay = 0) { - // TODO - return this; - } - - setNoDelay(noDelay = true) { - // TODO - return this; - } - - setTimeout(timeout, callback) { - this.#socket?.timeout(timeout); - this.timeout = timeout; - if (callback) this.once("timeout", callback); - return this; - } - - unref() { - this.#socket?.unref(); - } - - _write(chunk, encoding, callback) { - if (typeof chunk == "string" && encoding !== "utf8") chunk = Buffer.from(chunk, encoding); - var written = this.#socket?.write(chunk); - if (written == chunk.length) { - callback(); - } else if (this.#writeCallback) { - callback(new Error("overlapping _write()")); - } else { - if (written > 0) { - if (typeof chunk == "string") { - chunk = chunk.slice(written); - } else { - chunk = chunk.subarray(written); - } - } - - this.#writeCallback = callback; - this.#writeChunk = chunk; - } - } - }, -); - -function createConnection(port, host, connectListener) { - if (typeof port === "object") { - // port is option pass Socket options and let connect handle connection options - return new Socket(port).connect(port, host, connectListener); - } - // port is path or host, let connect handle this - return new Socket().connect(port, host, connectListener); -} - -const connect = createConnection; - -class Server extends EventEmitter { - #server; - #listening = false; - [bunSocketServerConnections] = 0; - [bunSocketServerOptions]; - maxConnections = 0; - - constructor(options, connectionListener) { - super(); - - if (typeof options === "function") { - connectionListener = options; - options = {}; - } else if (options == null || typeof options === "object") { - options = { ...options }; - } else { - throw new Error("bun-net-polyfill: invalid arguments"); - } - - const { maxConnections } = options; - this.maxConnections = Number.isSafeInteger(maxConnections) && maxConnections > 0 ? maxConnections : 0; - - options.connectionListener = connectionListener; - this[bunSocketServerOptions] = options; - } - - ref() { - this.#server?.ref(); - return this; - } - - unref() { - this.#server?.unref(); - return this; - } - - close(callback) { - if (this.#server) { - this.#server.stop(true); - this.#server = null; - this.#listening = false; - this[bunSocketServerConnections] = 0; - this.emit("close"); - if (typeof callback === "function") { - callback(); - } - - return this; - } - - if (typeof callback === "function") { - const error = new Error("Server is not running"); - error.code = "ERR_SERVER_NOT_RUNNING"; - callback(error); - } - return this; - } - - address() { - const server = this.#server; - if (server) { - const unix = server.unix; - if (unix) { - return unix; - } - - //TODO: fix adress when host is passed - let address = server.hostname; - const type = isIP(address); - const port = server.port; - if (typeof port === "number") { - return { - port, - address, - family: type ? `IPv${type}` : undefined, - }; - } - if (type) { - return { - address, - family: type ? `IPv${type}` : undefined, - }; - } - - return address; - } - return null; - } - - getConnections(callback) { - if (typeof callback === "function") { - //in Bun case we will never error on getConnections - //node only errors if in the middle of the couting the server got disconnected, what never happens in Bun - //if disconnected will only pass null as well and 0 connected - callback(null, this.#server ? this[bunSocketServerConnections] : 0); - } - return this; - } - - listen(port, hostname, onListen) { - let backlog; - let path; - let exclusive = false; - //port is actually path - if (typeof port === "string") { - if (Number.isSafeInteger(hostname)) { - if (hostname > 0) { - //hostname is backlog - backlog = hostname; - } - } else if (typeof hostname === "function") { - //hostname is callback - onListen = hostname; - } - - path = port; - hostname = undefined; - port = undefined; - } else { - if (typeof hostname === "function") { - onListen = hostname; - hostname = undefined; - } - - if (typeof port === "function") { - onListen = port; - port = 0; - } else if (typeof port === "object") { - const options = port; - options.signal?.addEventListener("abort", () => this.close()); - - hostname = options.host; - exclusive = options.exclusive === true; - const path = options.path; - port = options.port; - - if (!Number.isSafeInteger(port) || port < 0) { - if (path) { - hostname = path; - port = undefined; - } else { - let message = 'The argument \'options\' must have the property "port" or "path"'; - try { - message = `${message}. Received ${JSON.stringify(options)}`; - } catch {} - - const error = new TypeError(message); - error.code = "ERR_INVALID_ARG_VALUE"; - throw error; - } - } else if (!Number.isSafeInteger(port) || port < 0) { - port = 0; - } - - // port <number> - // host <string> - // path <string> Will be ignored if port is specified. See Identifying paths for IPC connections. - // backlog <number> Common parameter of server.listen() functions. - // exclusive <boolean> Default: false - // readableAll <boolean> For IPC servers makes the pipe readable for all users. Default: false. - // writableAll <boolean> For IPC servers makes the pipe writable for all users. Default: false. - // ipv6Only <boolean> For TCP servers, setting ipv6Only to true will disable dual-stack support, i.e., binding to host :: won't make 0.0.0.0 be bound. Default: false. - // signal <AbortSignal> An AbortSignal that may be used to close a listening server. - - if (typeof port.callback === "function") onListen = port?.callback; - } else if (!Number.isSafeInteger(port) || port < 0) { - port = 0; - } - hostname = hostname || "::"; - } - - try { - var tls = undefined; - var TLSSocketClass = undefined; - const bunTLS = this[bunTlsSymbol]; - if (typeof bunTLS === "function") { - [tls, TLSSocketClass] = bunTLS.call(this, port, hostname, false); - } - - this[bunSocketServerOptions].InternalSocketClass = TLSSocketClass || SocketClass; - - this.#server = Bun.listen( - path - ? { - exclusive, - unix: path, - tls, - socket: SocketClass[bunSocketServerHandlers], - } - : { - exclusive, - port, - hostname, - tls, - socket: SocketClass[bunSocketServerHandlers], - }, - ); - - //make this instance available on handlers - this.#server.data = this; - - this.#listening = true; - - // We must schedule the emitListeningNextTick() only after the next run of - // the event loop's IO queue. Otherwise, the server may not actually be listening - // when the 'listening' event is emitted. - // - // That leads to all sorts of confusion. - // - // process.nextTick() is not sufficient because it will run before the IO queue. - setTimeout(emitListeningNextTick, 1, this, onListen); - } catch (err) { - this.#listening = false; - setTimeout(emitErrorNextTick, 1, this, err); - } - return this; - } -} - -function emitErrorNextTick(self, error) { - self.emit("error", error); -} - -function emitListeningNextTick(self, onListen) { - if (typeof onListen === "function") { - try { - onListen(); - } catch (err) { - self.emit("error", err); - } - } - self.emit("listening"); -} - -function createServer(options, connectionListener) { - return new Server(options, connectionListener); -} - -export default { - createServer, - Server, - createConnection, - connect, - isIP, - isIPv4, - isIPv6, - Socket, - [Symbol.for("CommonJS")]: 0, - [Symbol.for("::bunternal::")]: SocketClass, -}; - -export { createServer, Server, createConnection, connect, isIP, isIPv4, isIPv6, Socket }; diff --git a/src/bun.js/node-dns.exports.js b/src/bun.js/node-dns.exports.js deleted file mode 100644 index dc05c6c51..000000000 --- a/src/bun.js/node-dns.exports.js +++ /dev/null @@ -1,719 +0,0 @@ -// only resolve4, resolve, lookup, resolve6 and resolveSrv are implemented. - -const { dns } = globalThis.Bun; - -function lookup(domain, options, callback) { - if (typeof options == "function") { - callback = options; - } - - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - if (typeof options == "number") { - options = { family: options }; - } - - dns.lookup(domain, options).then( - res => { - res.sort((a, b) => a.family - b.family); - - if (options?.all) { - callback(null, res.map(mapLookupAll)); - } else { - const [{ address, family }] = res; - callback(null, address, family); - } - }, - error => { - callback(error); - }, - ); -} - -function resolveSrv(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveSrv(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); -} - -function resolveTxt(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveTxt(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); -} - -function resolveSoa(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveSoa(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); -} - -function resolveNaptr(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveNaptr(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); -} - -function resolveMx(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveMx(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); -} - -function resolveCaa(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveCaa(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); -} - -function resolveNs(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveNs(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); -} - -function resolvePtr(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolvePtr(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); -} - -function resolveCname(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveCname(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); -} - -function lookupService(address, port, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - callback(null, address, port); -} - -var InternalResolver = class Resolver { - constructor(options) {} - - cancel() {} - - getServers() { - return []; - } - - resolve(hostname, rrtype, callback) { - if (typeof rrtype == "function") { - callback = rrtype; - rrtype = null; - } - - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolve(hostname).then( - results => { - switch (rrtype?.toLowerCase()) { - case "a": - case "aaaa": - callback(null, hostname, results.map(mapResolveX)); - break; - default: - callback(null, results); - break; - } - }, - error => { - callback(error); - }, - ); - } - - resolve4(hostname, options, callback) { - if (typeof options == "function") { - callback = options; - options = null; - } - - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.lookup(hostname, { family: 4 }).then( - addresses => { - callback(null, options?.ttl ? addresses : addresses.map(mapResolveX)); - }, - error => { - callback(error); - }, - ); - } - - resolve6(hostname, options, callback) { - if (typeof options == "function") { - callback = options; - options = null; - } - - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.lookup(hostname, { family: 6 }).then( - addresses => { - callback(null, options?.ttl ? addresses : addresses.map(({ address }) => address)); - }, - error => { - callback(error); - }, - ); - } - - resolveAny(hostname, callback) { - callback(null, []); - } - - resolveCname(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveCname(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); - } - - resolveMx(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveMx(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); - } - - resolveNaptr(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveNaptr(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); - } - - resolveNs(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveNs(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); - } - - resolvePtr(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolvePtr(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); - } - - resolveSrv(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveSrv(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); - } - - resolveCaa(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveCaa(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); - } - - resolveTxt(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveTxt(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); - } - resolveSoa(hostname, callback) { - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolveSoa(hostname, callback).then( - results => { - callback(null, results); - }, - error => { - callback(error); - }, - ); - } - - reverse(ip, callback) { - callback(null, []); - } - - setServers(servers) {} -}; - -function resolve(hostname, rrtype, callback) { - if (typeof rrtype == "function") { - callback = rrtype; - } - - if (typeof callback != "function") { - throw new TypeError("callback must be a function"); - } - - dns.resolve(hostname).then( - results => { - switch (rrtype?.toLowerCase()) { - case "a": - case "aaaa": - callback( - null, - hostname, - results.map(({ address }) => address), - ); - break; - default: - callback(null, results); - break; - } - }, - error => { - callback(error); - }, - ); -} - -function Resolver(options) { - return new InternalResolver(options); -} -Object.setPrototypeOf(Resolver.prototype, InternalResolver.prototype); -Object.setPrototypeOf(Resolver, InternalResolver); - -export var { - resolve, - resolve4, - resolve6, - resolveAny, - resolveCname, - resolveCaa, - resolveMx, - resolveNaptr, - resolveNs, - resolvePtr, - resolveSoa, - resolveSrv, - reverse, - resolveTxt, -} = InternalResolver.prototype; - -function setDefaultResultOrder() {} -function setServers() {} - -const promisifyLookup = res => { - res.sort((a, b) => a.family - b.family); - const [{ address, family }] = res; - return { address, family }; -}; - -const mapLookupAll = res => { - const { address, family } = res; - return { address, family }; -}; - -const promisifyLookupAll = res => { - res.sort((a, b) => a.family - b.family); - return res.map(mapLookupAll); -}; - -const mapResolveX = a => a.address; - -const promisifyResolveX = res => { - return res?.map(mapResolveX); -}; - -// promisified versions -export const promises = { - lookup(domain, options) { - if (options?.all) { - return dns.lookup(domain, options).then(promisifyLookupAll); - } - return dns.lookup(domain, options).then(promisifyLookup); - }, - - lookupService(address, port) { - return Promise.resolve([]); - }, - - resolve(hostname, rrtype) { - if (typeof rrtype !== "string") { - rrtype = null; - } - switch (rrtype?.toLowerCase()) { - case "a": - case "aaaa": - return dns.resolve(hostname, rrtype).then(promisifyLookup); - default: - return dns.resolve(hostname, rrtype); - } - }, - - resolve4(hostname, options) { - if (options?.ttl) { - return dns.lookup(hostname, { family: 4 }); - } - return dns.lookup(hostname, { family: 4 }).then(promisifyResolveX); - }, - - resolve6(hostname, options) { - if (options?.ttl) { - return dns.lookup(hostname, { family: 6 }); - } - return dns.lookup(hostname, { family: 6 }).then(promisifyResolveX); - }, - - resolveSrv(hostname) { - return dns.resolveSrv(hostname); - }, - resolveTxt(hostname) { - return dns.resolveTxt(hostname); - }, - resolveSoa(hostname) { - return dns.resolveSoa(hostname); - }, - resolveNaptr(hostname) { - return dns.resolveNaptr(hostname); - }, - - resolveMx(hostname) { - return dns.resolveMx(hostname); - }, - resolveCaa(hostname) { - return dns.resolveCaa(hostname); - }, - resolveNs(hostname) { - return dns.resolveNs(hostname); - }, - resolvePtr(hostname) { - return dns.resolvePtr(hostname); - }, - resolveCname(hostname) { - return dns.resolveCname(hostname); - }, - - Resolver: class Resolver { - constructor(options) {} - - cancel() {} - - getServers() { - return []; - } - - resolve(hostname, rrtype) { - if (typeof rrtype !== "string") { - rrtype = null; - } - switch (rrtype?.toLowerCase()) { - case "a": - case "aaaa": - return dns.resolve(hostname, rrtype).then(promisifyLookup); - default: - return dns.resolve(hostname, rrtype); - } - } - - resolve4(hostname, options) { - if (options?.ttl) { - return dns.lookup(hostname, { family: 4 }); - } - return dns.lookup(hostname, { family: 4 }).then(promisifyResolveX); - } - - resolve6(hostname, options) { - if (options?.ttl) { - return dns.lookup(hostname, { family: 6 }); - } - return dns.lookup(hostname, { family: 6 }).then(promisifyResolveX); - } - - resolveAny(hostname) { - return Promise.resolve([]); - } - - resolveCname(hostname) { - return dns.resolveCname(hostname); - } - - resolveMx(hostname) { - return dns.resolveMx(hostname); - } - - resolveNaptr(hostname) { - return dns.resolveNaptr(hostname); - } - - resolveNs(hostname) { - return dns.resolveNs(hostname); - } - - resolvePtr(hostname) { - return dns.resolvePtr(hostname); - } - - resolveSoa(hostname) { - return dns.resolveSoa(hostname); - } - - resolveSrv(hostname) { - return dns.resolveSrv(hostname); - } - - resolveCaa(hostname) { - return dns.resolveCaa(hostname); - } - - resolveTxt(hostname) { - return dns.resolveTxt(hostname); - } - - reverse(ip) { - return Promise.resolve([]); - } - - setServers(servers) {} - }, -}; -for (const key of ["resolveAny", "reverse"]) { - promises[key] = () => Promise.resolve(undefined); -} - -const exports = { - // these are wrong - ADDRCONFIG: 0, - ALL: 1, - V4MAPPED: 2, - - // ERROR CODES - NODATA: "DNS_ENODATA", - FORMERR: "DNS_EFORMERR", - SERVFAIL: "DNS_ESERVFAIL", - NOTFOUND: "DNS_ENOTFOUND", - NOTIMP: "DNS_ENOTIMP", - REFUSED: "DNS_EREFUSED", - BADQUERY: "DNS_EBADQUERY", - BADNAME: "DNS_EBADNAME", - BADFAMILY: "DNS_EBADFAMILY", - BADRESP: "DNS_EBADRESP", - CONNREFUSED: "DNS_ECONNREFUSED", - TIMEOUT: "DNS_ETIMEOUT", - EOF: "DNS_EEOF", - FILE: "DNS_EFILE", - NOMEM: "DNS_ENOMEM", - DESTRUCTION: "DNS_EDESTRUCTION", - BADSTR: "DNS_EBADSTR", - BADFLAGS: "DNS_EBADFLAGS", - NONAME: "DNS_ENONAME", - BADHINTS: "DNS_EBADHINTS", - NOTINITIALIZED: "DNS_ENOTINITIALIZED", - LOADIPHLPAPI: "DNS_ELOADIPHLPAPI", - ADDRGETNETWORKPARAMS: "DNS_EADDRGETNETWORKPARAMS", - CANCELLED: "DNS_ECANCELLED", - - lookup, - lookupService, - Resolver, - setServers, - setDefaultResultOrder, - resolve, - reverse, - resolve4, - resolve6, - resolveAny, - resolveCname, - resolveCaa, - resolveMx, - resolveNs, - resolvePtr, - resolveSoa, - resolveSrv, - resolveTxt, - resolveNaptr, - promises, - [Symbol.for("CommonJS")]: 0, -}; -export default exports; -export const { - ADDRCONFIG, - ALL, - V4MAPPED, - NODATA, - FORMERR, - SERVFAIL, - NOTFOUND, - NOTIMP, - REFUSED, - BADQUERY, - BADNAME, - BADFAMILY, - BADRESP, - CONNREFUSED, - TIMEOUT, - EOF, - FILE, - NOMEM, - DESTRUCTION, - BADSTR, - BADFLAGS, - NONAME, - BADHINTS, - NOTINITIALIZED, - LOADIPHLPAPI, - ADDRGETNETWORKPARAMS, - CANCELLED, -} = exports; -export { lookup, lookupService, Resolver, setServers, setDefaultResultOrder }; diff --git a/src/bun.js/node-dns_promises.exports.js b/src/bun.js/node-dns_promises.exports.js deleted file mode 100644 index 1fc894fe1..000000000 --- a/src/bun.js/node-dns_promises.exports.js +++ /dev/null @@ -1,44 +0,0 @@ -const { promises } = import.meta.require("node:dns"); - -export const { - lookup, - lookupService, - resolve, - resolve4, - resolveAny, - resolveCname, - resolveCaa, - resolveMx, - resolveNaptr, - resolveNs, - resolvePtr, - resolveSoa, - resolveSrv, - resolveTxt, - reverse, - Resolver, - setServers, - setDefaultResultOrder, -} = promises; - -export default { - lookup, - lookupService, - resolve, - resolve4, - resolveAny, - resolveCname, - resolveCaa, - resolveMx, - resolveNaptr, - resolveNs, - resolvePtr, - resolveSoa, - resolveSrv, - resolveTxt, - reverse, - Resolver, - setServers, - setDefaultResultOrder, - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/node-tls.exports.js b/src/bun.js/node-tls.exports.js deleted file mode 100644 index d54b79089..000000000 --- a/src/bun.js/node-tls.exports.js +++ /dev/null @@ -1,336 +0,0 @@ -const { isTypedArray } = import.meta.require("util/types"); - -function parseCertString() { - throw Error("Not implemented"); -} - -function isValidTLSArray(obj) { - if (typeof obj === "string" || isTypedArray(obj) || obj instanceof ArrayBuffer || obj instanceof Blob) return true; - if (Array.isArray(obj)) { - for (var i = 0; i < obj.length; i++) { - if (typeof obj !== "string" && !isTypedArray(obj) && !(obj instanceof ArrayBuffer) && !(obj instanceof Blob)) - return false; - } - return true; - } -} - -var InternalSecureContext = class SecureContext { - context; - - constructor(options) { - const context = {}; - if (options) { - let key = options.key; - if (key) { - if (!isValidTLSArray(key)) { - throw new TypeError( - "key argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile", - ); - } - this.key = key; - } - let cert = options.cert; - if (cert) { - if (!isValidTLSArray(cert)) { - throw new TypeError( - "cert argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile", - ); - } - this.cert = cert; - } - - let ca = options.ca; - if (ca) { - if (!isValidTLSArray(ca)) { - throw new TypeError( - "ca argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile", - ); - } - this.ca = ca; - } - - let passphrase = options.passphrase; - if (passphrase && typeof passphrase !== "string") { - throw new TypeError("passphrase argument must be an string"); - } - this.passphrase = passphrase; - - let servername = options.servername; - if (servername && typeof servername !== "string") { - throw new TypeError("servername argument must be an string"); - } - this.servername = servername; - - let secureOptions = options.secureOptions || 0; - if (secureOptions && typeof secureOptions !== "number") { - throw new TypeError("secureOptions argument must be an number"); - } - this.secureOptions = secureOptions; - } - this.context = context; - } -}; - -function SecureContext(options) { - return new InternalSecureContext(options); -} - -function createSecureContext(options) { - return new SecureContext(options); -} - -const { [Symbol.for("::bunternal::")]: InternalTCPSocket, Server: NetServer } = import.meta.require("net"); - -const buntls = Symbol.for("::buntls::"); - -var SocketClass; -const TLSSocket = (function (InternalTLSSocket) { - SocketClass = InternalTLSSocket; - Object.defineProperty(SocketClass.prototype, Symbol.toStringTag, { - value: "TLSSocket", - enumerable: false, - }); - - return Object.defineProperty( - function Socket(options) { - return new InternalTLSSocket(options); - }, - Symbol.hasInstance, - { - value(instance) { - return instance instanceof InternalTLSSocket; - }, - }, - ); -})( - class TLSSocket extends InternalTCPSocket { - #secureContext; - constructor(options) { - super(options); - this.#secureContext = options.secureContext || createSecureContext(options); - this.authorized = false; - this.secureConnecting = true; - this._secureEstablished = false; - this._securePending = true; - } - - _secureEstablished = false; - _securePending = true; - _newSessionPending; - _controlReleased; - secureConnecting = false; - _SNICallback; - servername; - alpnProtocol; - authorized = false; - authorizationError; - - encrypted = true; - - exportKeyingMaterial() { - throw Error("Not implented in Bun yet"); - } - setMaxSendFragment() { - throw Error("Not implented in Bun yet"); - } - setServername() { - throw Error("Not implented in Bun yet"); - } - setSession() { - throw Error("Not implented in Bun yet"); - } - getPeerCertificate() { - throw Error("Not implented in Bun yet"); - } - getCertificate() { - throw Error("Not implented in Bun yet"); - } - getPeerX509Certificate() { - throw Error("Not implented in Bun yet"); - } - getX509Certificate() { - throw Error("Not implented in Bun yet"); - } - - [buntls](port, host) { - var { servername } = this; - if (servername) { - return { - serverName: typeof servername === "string" ? servername : host, - ...this.#secureContext, - }; - } - - return true; - } - }, -); - -class Server extends NetServer { - key; - cert; - ca; - passphrase; - secureOptions; - _rejectUnauthorized; - _requestCert; - servername; - - constructor(options, secureConnectionListener) { - super(options, secureConnectionListener); - this.setSecureContext(options); - } - emit(event, args) { - super.emit(event, args); - - if (event === "connection") { - // grabs secureConnect to emit secureConnection - args.once("secureConnect", () => { - super.emit("secureConnection", args); - }); - } - } - setSecureContext(options) { - if (options instanceof InternalSecureContext) { - options = options.context; - } - if (options) { - let key = options.key; - if (key) { - if (!isValidTLSArray(key)) { - throw new TypeError( - "key argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile", - ); - } - this.key = key; - } - let cert = options.cert; - if (cert) { - if (!isValidTLSArray(cert)) { - throw new TypeError( - "cert argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile", - ); - } - this.cert = cert; - } - - let ca = options.ca; - if (ca) { - if (!isValidTLSArray(ca)) { - throw new TypeError( - "ca argument must be an string, Buffer, TypedArray, BunFile or an array containing string, Buffer, TypedArray or BunFile", - ); - } - this.ca = ca; - } - - let passphrase = options.passphrase; - if (passphrase && typeof passphrase !== "string") { - throw new TypeError("passphrase argument must be an string"); - } - this.passphrase = passphrase; - - let servername = options.servername; - if (servername && typeof servername !== "string") { - throw new TypeError("servername argument must be an string"); - } - this.servername = servername; - - let secureOptions = options.secureOptions || 0; - if (secureOptions && typeof secureOptions !== "number") { - throw new TypeError("secureOptions argument must be an number"); - } - this.secureOptions = secureOptions; - - const requestCert = options.requestCert || false; - - if (requestCert) this._requestCert = requestCert; - else this._requestCert = undefined; - - const rejectUnauthorized = options.rejectUnauthorized || false; - - if (rejectUnauthorized) { - this._rejectUnauthorized = rejectUnauthorized; - } else this._rejectUnauthorized = undefined; - } - } - - getTicketKeys() { - throw Error("Not implented in Bun yet"); - } - - setTicketKeys() { - throw Error("Not implented in Bun yet"); - } - - [buntls](port, host, isClient) { - return [ - { - serverName: this.servername || host || "localhost", - key: this.key, - cert: this.cert, - ca: this.ca, - passphrase: this.passphrase, - secureOptions: this.secureOptions, - // Client always is NONE on set_verify - rejectUnauthorized: isClient ? false : this._rejectUnauthorized, - requestCert: isClient ? false : this._requestCert, - }, - SocketClass, - ]; - } -} - -function createServer(options, connectionListener) { - return new Server(options, connectionListener); -} -export const CLIENT_RENEG_LIMIT = 3, - CLIENT_RENEG_WINDOW = 600, - DEFAULT_ECDH_CURVE = "auto", - // https://github.com/Jarred-Sumner/uSockets/blob/fafc241e8664243fc0c51d69684d5d02b9805134/src/crypto/openssl.c#L519-L523 - DEFAULT_CIPHERS = - "DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256", - DEFAULT_MIN_VERSION = "TLSv1.2", - DEFAULT_MAX_VERSION = "TLSv1.3", - createConnection = (port, host, connectListener) => { - if (typeof port === "object") { - // port is option pass Socket options and let connect handle connection options - return new TLSSocket(port).connect(port, host, connectListener); - } - // port is path or host, let connect handle this - return new TLSSocket().connect(port, host, connectListener); - }, - connect = createConnection; - -var exports = { - createSecureContext, - parseCertString, - - getCiphers() { - return DEFAULT_CIPHERS.split(":"); - }, - - getCurves() { - return; - }, - - convertALPNProtocols(protocols, out) {}, - TLSSocket, - SecureContext, - CLIENT_RENEG_LIMIT, - CLIENT_RENEG_WINDOW, - DEFAULT_ECDH_CURVE, - DEFAULT_CIPHERS, - DEFAULT_MIN_VERSION, - DEFAULT_MAX_VERSION, - [Symbol.for("CommonJS")]: 0, - connect, - createConnection, - Server, - createServer, -}; - -export default exports; - -export { createSecureContext, parseCertString, TLSSocket, SecureContext }; diff --git a/src/bun.js/node_streams_consumer.exports.js b/src/bun.js/node_streams_consumer.exports.js deleted file mode 100644 index dba3f6a93..000000000 --- a/src/bun.js/node_streams_consumer.exports.js +++ /dev/null @@ -1,20 +0,0 @@ -const { Bun } = import.meta.primordials; - -export const arrayBuffer = Bun.readableStreamToArrayBuffer; -export const text = Bun.readableStreamToText; -export const json = stream => Bun.readableStreamToText(stream).then(JSON.parse); - -export const buffer = async readableStream => { - return new Buffer(await arrayBuffer(readableStream)); -}; - -export const blob = Bun.readableStreamToBlob; - -export default { - [Symbol.for("CommonJS")]: 0, - arrayBuffer, - text, - json, - buffer, - blob, -}; diff --git a/src/bun.js/node_streams_promises.exports.js b/src/bun.js/node_streams_promises.exports.js deleted file mode 100644 index 1755c73eb..000000000 --- a/src/bun.js/node_streams_promises.exports.js +++ /dev/null @@ -1,9 +0,0 @@ -var { promises } = import.meta.require("node:stream"); - -export var { pipeline, finished } = promises; - -export default { - pipeline, - finished, - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/node_streams_web.exports.js b/src/bun.js/node_streams_web.exports.js deleted file mode 100644 index d4c5a278c..000000000 --- a/src/bun.js/node_streams_web.exports.js +++ /dev/null @@ -1,29 +0,0 @@ -export const { - ReadableStream, - ReadableStreamDefaultController, - WritableStream, - WritableStreamDefaultController, - WritableStreamDefaultWriter, - TransformStream, - TransformStreamDefaultController, - ByteLengthQueuingStrategy, - CountQueuingStrategy, - ReadableStreamBYOBReader, - ReadableStreamBYOBRequest, - ReadableStreamDefaultReader, -} = globalThis; -export default { - ReadableStream, - ReadableStreamDefaultController, - WritableStream, - WritableStreamDefaultController, - WritableStreamDefaultWriter, - TransformStream, - TransformStreamDefaultController, - ByteLengthQueuingStrategy, - CountQueuingStrategy, - ReadableStreamBYOBReader, - ReadableStreamBYOBRequest, - ReadableStreamDefaultReader, - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/node_timers.exports.js b/src/bun.js/node_timers.exports.js deleted file mode 100644 index 52dec5baa..000000000 --- a/src/bun.js/node_timers.exports.js +++ /dev/null @@ -1,13 +0,0 @@ -// This implementation isn't 100% correct -// Ref/unref does not impact whether the process is kept alive - -export var { setTimeout, clearTimeout, setInterval, setImmediate, clearInterval, clearImmediate } = globalThis; - -export default { - setInterval, - setImmediate, - setTimeout, - clearInterval, - clearTimeout, - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/node_timers_promises.exports.js b/src/bun.js/node_timers_promises.exports.js deleted file mode 100644 index 3c4c5d1a5..000000000 --- a/src/bun.js/node_timers_promises.exports.js +++ /dev/null @@ -1,234 +0,0 @@ -// https://github.com/niksy/isomorphic-timers-promises/blob/master/index.js -const symbolAsyncIterator = Symbol.asyncIterator; - -class ERR_INVALID_ARG_TYPE extends Error { - constructor(name, expected, actual) { - super(`${name} must be ${expected}, ${typeof actual} given`); - this.code = "ERR_INVALID_ARG_TYPE"; - } -} - -class AbortError extends Error { - constructor() { - super("The operation was aborted"); - this.code = "ABORT_ERR"; - } -} - -function validateObject(object, name) { - if (object === null || typeof object !== "object") { - throw new ERR_INVALID_ARG_TYPE(name, "Object", object); - } -} - -function validateBoolean(value, name) { - if (typeof value !== "boolean") { - throw new ERR_INVALID_ARG_TYPE(name, "boolean", value); - } -} - -function validateAbortSignal(signal, name) { - if (typeof signal !== "undefined" && (signal === null || typeof signal !== "object" || !("aborted" in signal))) { - throw new ERR_INVALID_ARG_TYPE(name, "AbortSignal", signal); - } -} - -function asyncIterator({ next: nextFunction, return: returnFunction }) { - const result = {}; - if (typeof nextFunction === "function") { - result.next = nextFunction; - } - if (typeof returnFunction === "function") { - result.return = returnFunction; - } - result[symbolAsyncIterator] = function () { - return this; - }; - - return result; -} - -function setTimeoutPromise(after = 1, value, options = {}) { - const arguments_ = [].concat(value ?? []); - try { - validateObject(options, "options"); - } catch (error) { - return Promise.reject(error); - } - const { signal, ref: reference = true } = options; - try { - validateAbortSignal(signal, "options.signal"); - } catch (error) { - return Promise.reject(error); - } - try { - validateBoolean(reference, "options.ref"); - } catch (error) { - return Promise.reject(error); - } - if (signal?.aborted) { - return Promise.reject(new AbortError()); - } - let onCancel; - const returnValue = new Promise((resolve, reject) => { - const timeout = setTimeout(() => resolve(value), after, ...arguments_); - if (!reference) { - timeout?.unref?.(); - } - if (signal) { - onCancel = () => { - clearTimeout(timeout); - reject(new AbortError()); - }; - signal.addEventListener("abort", onCancel); - } - }); - if (typeof onCancel !== "undefined") { - returnValue.finally(() => signal.removeEventListener("abort", onCancel)); - } - return returnValue; -} - -function setImmediatePromise(value, options = {}) { - try { - validateObject(options, "options"); - } catch (error) { - return Promise.reject(error); - } - const { signal, ref: reference = true } = options; - try { - validateAbortSignal(signal, "options.signal"); - } catch (error) { - return Promise.reject(error); - } - try { - validateBoolean(reference, "options.ref"); - } catch (error) { - return Promise.reject(error); - } - if (signal?.aborted) { - return Promise.reject(new AbortError()); - } - let onCancel; - const returnValue = new Promise((resolve, reject) => { - const immediate = setImmediate(() => resolve(value)); - if (!reference) { - immediate?.unref?.(); - } - if (signal) { - onCancel = () => { - clearImmediate(immediate); - reject(new AbortError()); - }; - signal.addEventListener("abort", onCancel); - } - }); - if (typeof onCancel !== "undefined") { - returnValue.finally(() => signal.removeEventListener("abort", onCancel)); - } - return returnValue; -} - -function setIntervalPromise(after = 1, value, options = {}) { - /* eslint-disable no-undefined, no-unreachable-loop, no-loop-func */ - try { - validateObject(options, "options"); - } catch (error) { - return asyncIterator({ - next: function () { - return Promise.reject(error); - }, - }); - } - const { signal, ref: reference = true } = options; - try { - validateAbortSignal(signal, "options.signal"); - } catch (error) { - return asyncIterator({ - next: function () { - return Promise.reject(error); - }, - }); - } - try { - validateBoolean(reference, "options.ref"); - } catch (error) { - return asyncIterator({ - next: function () { - return Promise.reject(error); - }, - }); - } - if (signal?.aborted) { - return asyncIterator({ - next: function () { - return Promise.reject(new AbortError()); - }, - }); - } - - let onCancel, interval; - - try { - let notYielded = 0; - let callback; - interval = setInterval(() => { - notYielded++; - if (callback) { - callback(); - callback = undefined; - } - }, after); - if (!reference) { - interval?.unref?.(); - } - if (signal) { - onCancel = () => { - clearInterval(interval); - if (callback) { - callback(); - callback = undefined; - } - }; - signal.addEventListener("abort", onCancel); - } - - return asyncIterator({ - next: function () { - return new Promise((resolve, reject) => { - if (!signal?.aborted) { - if (notYielded === 0) { - callback = resolve; - } else { - resolve(); - } - } else if (notYielded === 0) { - reject(new AbortError()); - } else { - resolve(); - } - }).then(() => { - if (notYielded > 0) { - notYielded = notYielded - 1; - return { done: false, value: value }; - } - return { done: true }; - }); - }, - return: function () { - clearInterval(interval); - signal?.removeEventListener("abort", onCancel); - return Promise.resolve({}); - }, - }); - } catch (error) { - return asyncIterator({ - next: function () { - clearInterval(interval); - signal?.removeEventListener("abort", onCancel); - }, - }); - } -} - -export { setTimeoutPromise as setTimeout, setImmediatePromise as setImmediate, setIntervalPromise as setInterval }; diff --git a/src/bun.js/os.exports.js b/src/bun.js/os.exports.js deleted file mode 100644 index 78f6d5ffc..000000000 --- a/src/bun.js/os.exports.js +++ /dev/null @@ -1,56 +0,0 @@ -function bound(obj) { - return { - arch: obj.arch.bind(obj), - cpus: obj.cpus.bind(obj), - endianness: obj.endianness.bind(obj), - freemem: obj.freemem.bind(obj), - getPriority: obj.getPriority.bind(obj), - homedir: obj.homedir.bind(obj), - hostname: obj.hostname.bind(obj), - loadavg: obj.loadavg.bind(obj), - networkInterfaces: obj.networkInterfaces.bind(obj), - platform: obj.platform.bind(obj), - release: obj.release.bind(obj), - setPriority: obj.setPriority.bind(obj), - tmpdir: obj.tmpdir.bind(obj), - totalmem: obj.totalmem.bind(obj), - type: obj.type.bind(obj), - uptime: obj.uptime.bind(obj), - userInfo: obj.userInfo.bind(obj), - version: obj.version.bind(obj), - machine: obj.machine.bind(obj), - devNull: obj.devNull, - EOL: obj.EOL, - constants: obj.constants, - [Symbol.for("CommonJS")]: 0, - }; -} - -var os = bound(Bun._Os()); - -export var { - arch, - cpus, - endianness, - freemem, - getPriority, - homedir, - hostname, - loadavg, - networkInterfaces, - platform, - release, - setPriority, - tmpdir, - totalmem, - type, - uptime, - userInfo, - version, - machine, - devNull, - EOL, - constants, -} = os; - -export default os; diff --git a/src/bun.js/path-posix.exports.js b/src/bun.js/path-posix.exports.js deleted file mode 100644 index 43630421a..000000000 --- a/src/bun.js/path-posix.exports.js +++ /dev/null @@ -1,36 +0,0 @@ -function bound(obj) { - return { - basename: obj.basename.bind(obj), - dirname: obj.dirname.bind(obj), - extname: obj.extname.bind(obj), - format: obj.format.bind(obj), - isAbsolute: obj.isAbsolute.bind(obj), - join: obj.join.bind(obj), - normalize: obj.normalize.bind(obj), - parse: obj.parse.bind(obj), - relative: obj.relative.bind(obj), - resolve: obj.resolve.bind(obj), - toNamespacedPath: obj.toNamespacedPath.bind(obj), - sep: obj.sep, - delimiter: obj.delimiter, - }; -} -var path = bound(Bun._Path(false)); -path[Symbol.for("CommonJS")] = 0; - -export var { - basename, - dirname, - extname, - format, - isAbsolute, - join, - normalize, - parse, - relative, - resolve, - toNamespacedPath, - sep, - delimiter, -} = path; -export default path; diff --git a/src/bun.js/path-win32.exports.js b/src/bun.js/path-win32.exports.js deleted file mode 100644 index 932cc8960..000000000 --- a/src/bun.js/path-win32.exports.js +++ /dev/null @@ -1,35 +0,0 @@ -function bound(obj) { - return { - basename: obj.basename.bind(obj), - dirname: obj.dirname.bind(obj), - extname: obj.extname.bind(obj), - format: obj.format.bind(obj), - isAbsolute: obj.isAbsolute.bind(obj), - join: obj.join.bind(obj), - normalize: obj.normalize.bind(obj), - parse: obj.parse.bind(obj), - relative: obj.relative.bind(obj), - resolve: obj.resolve.bind(obj), - toNamespacedPath: obj.toNamespacedPath.bind(obj), - sep: obj.sep, - delimiter: obj.delimiter, - }; -} -var path = bound(Bun._Path(true)); - -export var { - basename, - dirname, - extname, - format, - isAbsolute, - join, - normalize, - parse, - relative, - resolve, - toNamespacedPath, - sep, - delimiter, -} = path; -export default path; diff --git a/src/bun.js/path.exports.js b/src/bun.js/path.exports.js deleted file mode 100644 index dd0aabadd..000000000 --- a/src/bun.js/path.exports.js +++ /dev/null @@ -1,50 +0,0 @@ -// Utils to extract later -const createModule = obj => Object.assign(Object.create(null), obj); - -function bound(obj) { - var result = createModule({ - basename: obj.basename.bind(obj), - dirname: obj.dirname.bind(obj), - extname: obj.extname.bind(obj), - format: obj.format.bind(obj), - isAbsolute: obj.isAbsolute.bind(obj), - join: obj.join.bind(obj), - normalize: obj.normalize.bind(obj), - parse: obj.parse.bind(obj), - relative: obj.relative.bind(obj), - resolve: obj.resolve.bind(obj), - toNamespacedPath: obj.toNamespacedPath.bind(obj), - sep: obj.sep, - delimiter: obj.delimiter, - }); - result.default = result; - return result; -} -var path = bound(Bun._Path()); - -export var posix = bound(Bun._Path(false)); -export var win32 = bound(Bun._Path(true)); - -path.win32 = win32; -path.posix = posix; - -export var { - basename, - dirname, - extname, - format, - isAbsolute, - join, - normalize, - parse, - relative, - resolve, - toNamespacedPath, - sep, - delimiter, - __esModule, -} = path; - -path[Symbol.for("CommonJS")] = 0; -path.__esModule = true; -export default path; diff --git a/src/bun.js/perf_hooks.exports.js b/src/bun.js/perf_hooks.exports.js deleted file mode 100644 index 5cc46a5e1..000000000 --- a/src/bun.js/perf_hooks.exports.js +++ /dev/null @@ -1,25 +0,0 @@ -export var performance = globalThis.performance; - -export class PerformanceObserver { - constructor() { - throw new Error("PerformanceEntry is not implemented yet"); - } -} - -export class PerformanceEntry { - constructor() { - throw new Error("PerformanceEntry is not implemented yet"); - } -} -export class PerformanceNodeTiming { - constructor() { - throw new Error("PerformanceNodeTiming is not supported in this environment."); - } -} - -export default { - performance, - PerformanceEntry, - PerformanceNodeTiming, - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/process-stdio-polyfill.js b/src/bun.js/process-stdio-polyfill.js deleted file mode 100644 index e69de29bb..000000000 --- a/src/bun.js/process-stdio-polyfill.js +++ /dev/null diff --git a/src/bun.js/readline.exports.js b/src/bun.js/readline.exports.js deleted file mode 100644 index 3044c5c20..000000000 --- a/src/bun.js/readline.exports.js +++ /dev/null @@ -1,3137 +0,0 @@ -// Attribution: Some parts of of this module are derived from code originating from the Node.js -// readline module which is licensed under an MIT license: -// -// Copyright Node.js contributors. All rights reserved. -// -// 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. - -// ---------------------------------------------------------------------------- -// Section: Imports -// ---------------------------------------------------------------------------- -var { Array, RegExp, String, Bun } = import.meta.primordials; -var EventEmitter = import.meta.require("node:events"); -var { clearTimeout, setTimeout } = import.meta.require("timers"); -var { StringDecoder } = import.meta.require("string_decoder"); -var isWritable; - -var { inspect } = Bun; -var debug = process.env.BUN_JS_DEBUG ? console.log : () => {}; - -// ---------------------------------------------------------------------------- -// Section: Preamble -// ---------------------------------------------------------------------------- - -var SymbolAsyncIterator = Symbol.asyncIterator; -var SymbolIterator = Symbol.iterator; -var SymbolFor = Symbol.for; -var SymbolReplace = Symbol.replace; -var ArrayFrom = Array.from; -var ArrayIsArray = Array.isArray; -var ArrayPrototypeFilter = Array.prototype.filter; -var ArrayPrototypeSort = Array.prototype.sort; -var ArrayPrototypeIndexOf = Array.prototype.indexOf; -var ArrayPrototypeJoin = Array.prototype.join; -var ArrayPrototypeMap = Array.prototype.map; -var ArrayPrototypePop = Array.prototype.pop; -var ArrayPrototypePush = Array.prototype.push; -var ArrayPrototypeSlice = Array.prototype.slice; -var ArrayPrototypeSplice = Array.prototype.splice; -var ArrayPrototypeReverse = Array.prototype.reverse; -var ArrayPrototypeShift = Array.prototype.shift; -var ArrayPrototypeUnshift = Array.prototype.unshift; -var RegExpPrototypeExec = RegExp.prototype.exec; -var RegExpPrototypeSymbolReplace = RegExp.prototype[SymbolReplace]; -var StringFromCharCode = String.fromCharCode; -var StringPrototypeCharCodeAt = String.prototype.charCodeAt; -var StringPrototypeCodePointAt = String.prototype.codePointAt; -var StringPrototypeSlice = String.prototype.slice; -var StringPrototypeToLowerCase = String.prototype.toLowerCase; -var StringPrototypeEndsWith = String.prototype.endsWith; -var StringPrototypeRepeat = String.prototype.repeat; -var StringPrototypeStartsWith = String.prototype.startsWith; -var StringPrototypeTrim = String.prototype.trim; -var StringPrototypeNormalize = String.prototype.normalize; -var NumberIsNaN = Number.isNaN; -var NumberIsFinite = Number.isFinite; -var NumberIsInteger = Number.isInteger; -var NumberMAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; -var NumberMIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER; -var MathCeil = Math.ceil; -var MathFloor = Math.floor; -var MathMax = Math.max; -var MathMaxApply = Math.max.apply; -var DateNow = Date.now; -var FunctionPrototype = Function.prototype; -var StringPrototype = String.prototype; -var StringPrototypeSymbolIterator = StringPrototype[SymbolIterator]; -var StringIteratorPrototypeNext = StringPrototypeSymbolIterator.call("").next; -var ObjectSetPrototypeOf = Object.setPrototypeOf; -var ObjectDefineProperty = Object.defineProperty; -var ObjectDefineProperties = Object.defineProperties; -var ObjectFreeze = Object.freeze; -var ObjectAssign = Object.assign; -var ObjectCreate = Object.create; -var ObjectKeys = Object.keys; -var ObjectSeal = Object.seal; - -var createSafeIterator = (factory, next) => { - class SafeIterator { - #iterator; - constructor(iterable) { - this.#iterator = factory.call(iterable); - } - next() { - return next.call(this.#iterator); - } - [SymbolIterator]() { - return this; - } - } - ObjectSetPrototypeOf(SafeIterator.prototype, null); - ObjectFreeze(SafeIterator.prototype); - ObjectFreeze(SafeIterator); - return SafeIterator; -}; - -var SafeStringIterator = createSafeIterator(StringPrototypeSymbolIterator, StringIteratorPrototypeNext); - -// ---------------------------------------------------------------------------- -// Section: "Internal" modules -// ---------------------------------------------------------------------------- - -/** - * Returns true if the character represented by a given - * Unicode code point is full-width. Otherwise returns false. - */ -var isFullWidthCodePoint = code => { - // Code points are partially derived from: - // https://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt - return ( - code >= 0x1100 && - (code <= 0x115f || // Hangul Jamo - code === 0x2329 || // LEFT-POINTING ANGLE BRACKET - code === 0x232a || // RIGHT-POINTING ANGLE BRACKET - // CJK Radicals Supplement .. Enclosed CJK Letters and Months - (code >= 0x2e80 && code <= 0x3247 && code !== 0x303f) || - // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A - (code >= 0x3250 && code <= 0x4dbf) || - // CJK Unified Ideographs .. Yi Radicals - (code >= 0x4e00 && code <= 0xa4c6) || - // Hangul Jamo Extended-A - (code >= 0xa960 && code <= 0xa97c) || - // Hangul Syllables - (code >= 0xac00 && code <= 0xd7a3) || - // CJK Compatibility Ideographs - (code >= 0xf900 && code <= 0xfaff) || - // Vertical Forms - (code >= 0xfe10 && code <= 0xfe19) || - // CJK Compatibility Forms .. Small Form Variants - (code >= 0xfe30 && code <= 0xfe6b) || - // Halfwidth and Fullwidth Forms - (code >= 0xff01 && code <= 0xff60) || - (code >= 0xffe0 && code <= 0xffe6) || - // Kana Supplement - (code >= 0x1b000 && code <= 0x1b001) || - // Enclosed Ideographic Supplement - (code >= 0x1f200 && code <= 0x1f251) || - // Miscellaneous Symbols and Pictographs 0x1f300 - 0x1f5ff - // Emoticons 0x1f600 - 0x1f64f - (code >= 0x1f300 && code <= 0x1f64f) || - // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane - (code >= 0x20000 && code <= 0x3fffd)) - ); -}; - -var isZeroWidthCodePoint = code => { - return ( - code <= 0x1f || // C0 control codes - (code >= 0x7f && code <= 0x9f) || // C1 control codes - (code >= 0x300 && code <= 0x36f) || // Combining Diacritical Marks - (code >= 0x200b && code <= 0x200f) || // Modifying Invisible Characters - // Combining Diacritical Marks for Symbols - (code >= 0x20d0 && code <= 0x20ff) || - (code >= 0xfe00 && code <= 0xfe0f) || // Variation Selectors - (code >= 0xfe20 && code <= 0xfe2f) || // Combining Half Marks - (code >= 0xe0100 && code <= 0xe01ef) - ); // Variation Selectors -}; - -/** - * Returns the number of columns required to display the given string. - */ -var getStringWidth = function getStringWidth(str, removeControlChars = true) { - var width = 0; - - if (removeControlChars) str = stripVTControlCharacters(str); - str = StringPrototypeNormalize.call(str, "NFC"); - for (var char of new SafeStringIterator(str)) { - var code = StringPrototypeCodePointAt.call(char, 0); - if (isFullWidthCodePoint(code)) { - width += 2; - } else if (!isZeroWidthCodePoint(code)) { - width++; - } - } - - return width; -}; - -// Regex used for ansi escape code splitting -// Adopted from https://github.com/chalk/ansi-regex/blob/HEAD/index.js -// License: MIT, authors: @sindresorhus, Qix-, arjunmehta and LitoMore -// Matches all ansi escape code sequences in a string -var ansiPattern = - "[\\u001B\\u009B][[\\]()#;?]*" + - "(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*" + - "|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)" + - "|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"; -var ansi = new RegExp(ansiPattern, "g"); - -/** - * Remove all VT control characters. Use to estimate displayed string width. - */ -function stripVTControlCharacters(str) { - validateString(str, "str"); - return RegExpPrototypeSymbolReplace.call(ansi, str, ""); -} - -// Promisify - -var kCustomPromisifiedSymbol = SymbolFor("nodejs.util.promisify.custom"); -var kCustomPromisifyArgsSymbol = Symbol("customPromisifyArgs"); - -function promisify(original) { - validateFunction(original, "original"); - - if (original[kCustomPromisifiedSymbol]) { - var fn = original[kCustomPromisifiedSymbol]; - - validateFunction(fn, "util.promisify.custom"); - - return ObjectDefineProperty(fn, kCustomPromisifiedSymbol, { - __proto__: null, - value: fn, - enumerable: false, - writable: false, - configurable: true, - }); - } - - // Names to create an object from in case the callback receives multiple - // arguments, e.g. ['bytesRead', 'buffer'] for fs.read. - var argumentNames = original[kCustomPromisifyArgsSymbol]; - - function fn(...args) { - return new Promise((resolve, reject) => { - ArrayPrototypePush.call(args, (err, ...values) => { - if (err) { - return reject(err); - } - if (argumentNames !== undefined && values.length > 1) { - var obj = {}; - for (var i = 0; i < argumentNames.length; i++) obj[argumentNames[i]] = values[i]; - resolve(obj); - } else { - resolve(values[0]); - } - }); - ReflectApply(original, this, args); - }); - } - - ObjectSetPrototypeOf(fn, ObjectGetPrototypeOf(original)); - - ObjectDefineProperty(fn, kCustomPromisifiedSymbol, { - __proto__: null, - value: fn, - enumerable: false, - writable: false, - configurable: true, - }); - - var descriptors = ObjectGetOwnPropertyDescriptors(original); - var propertiesValues = ObjectValues(descriptors); - for (var i = 0; i < propertiesValues.length; i++) { - // We want to use null-prototype objects to not rely on globally mutable - // %Object.prototype%. - ObjectSetPrototypeOf(propertiesValues[i], null); - } - return ObjectDefineProperties(fn, descriptors); -} - -promisify.custom = kCustomPromisifiedSymbol; - -// Constants - -var kUTF16SurrogateThreshold = 0x10000; // 2 ** 16 -var kEscape = "\x1b"; -var kSubstringSearch = Symbol("kSubstringSearch"); - -var kIsNodeError = Symbol("kIsNodeError"); - -// Errors -var errorBases = {}; -var VALID_NODE_ERROR_BASES = { - TypeError, - RangeError, - Error, -}; - -function getNodeErrorByName(typeName) { - var base = errorBases[typeName]; - if (base) { - return base; - } - if (!ObjectKeys(VALID_NODE_ERROR_BASES).includes(typeName)) { - throw new Error("Invalid NodeError type"); - } - - var Base = VALID_NODE_ERROR_BASES[typeName]; - - class NodeError extends Base { - [kIsNodeError] = true; - code; - constructor(msg, opts) { - super(msg, opts); - this.code = opts?.code || "ERR_GENERIC"; - } - - toString() { - return `${this.name} [${this.code}]: ${this.message}`; - } - } - errorBases[typeName] = NodeError; - return NodeError; -} - -var NodeError = getNodeErrorByName("Error"); -var NodeTypeError = getNodeErrorByName("TypeError"); -var NodeRangeError = getNodeErrorByName("RangeError"); - -class ERR_INVALID_ARG_TYPE extends NodeTypeError { - constructor(name, type, value) { - super(`The "${name}" argument must be of type ${type}. Received type ${typeof value}`, { - code: "ERR_INVALID_ARG_TYPE", - }); - } -} - -class ERR_INVALID_ARG_VALUE extends NodeTypeError { - constructor(name, value, reason = "not specified") { - super(`The value "${String(value)}" is invalid for argument '${name}'. Reason: ${reason}`, { - code: "ERR_INVALID_ARG_VALUE", - }); - } -} - -class ERR_INVALID_CURSOR_POS extends NodeTypeError { - constructor() { - super("Cannot set cursor row without setting its column", { - code: "ERR_INVALID_CURSOR_POS", - }); - } -} - -class ERR_OUT_OF_RANGE extends NodeRangeError { - constructor(name, range, received) { - super(`The value of "${name}" is out of range. It must be ${range}. Received ${received}`, { - code: "ERR_OUT_OF_RANGE", - }); - } -} - -class ERR_USE_AFTER_CLOSE extends NodeError { - constructor() { - super("This socket has been ended by the other party", { - code: "ERR_USE_AFTER_CLOSE", - }); - } -} - -class AbortError extends Error { - code; - constructor() { - super("The operation was aborted"); - this.code = "ABORT_ERR"; - } -} - -// Validators - -/** - * @callback validateFunction - * @param {*} value - * @param {string} name - * @returns {asserts value is Function} - */ -function validateFunction(value, name) { - if (typeof value !== "function") throw new ERR_INVALID_ARG_TYPE(name, "Function", value); -} - -/** - * @callback validateAbortSignal - * @param {*} signal - * @param {string} name - */ -function validateAbortSignal(signal, name) { - if (signal !== undefined && (signal === null || typeof signal !== "object" || !("aborted" in signal))) { - throw new ERR_INVALID_ARG_TYPE(name, "AbortSignal", signal); - } -} - -/** - * @callback validateArray - * @param {*} value - * @param {string} name - * @param {number} [minLength] - * @returns {asserts value is any[]} - */ -function validateArray(value, name, minLength = 0) { - // var validateArray = hideStackFrames((value, name, minLength = 0) => { - if (!ArrayIsArray(value)) { - throw new ERR_INVALID_ARG_TYPE(name, "Array", value); - } - if (value.length < minLength) { - var reason = `must be longer than ${minLength}`; - throw new ERR_INVALID_ARG_VALUE(name, value, reason); - } -} - -/** - * @callback validateString - * @param {*} value - * @param {string} name - * @returns {asserts value is string} - */ -function validateString(value, name) { - if (typeof value !== "string") throw new ERR_INVALID_ARG_TYPE(name, "string", value); -} - -/** - * @callback validateBoolean - * @param {*} value - * @param {string} name - * @returns {asserts value is boolean} - */ -function validateBoolean(value, name) { - if (typeof value !== "boolean") throw new ERR_INVALID_ARG_TYPE(name, "boolean", value); -} - -/** - * @callback validateObject - * @param {*} value - * @param {string} name - * @param {{ - * allowArray?: boolean, - * allowFunction?: boolean, - * nullable?: boolean - * }} [options] - */ -function validateObject(value, name, options = null) { - // var validateObject = hideStackFrames((value, name, options = null) => { - var allowArray = options?.allowArray ?? false; - var allowFunction = options?.allowFunction ?? false; - var nullable = options?.nullable ?? false; - if ( - (!nullable && value === null) || - (!allowArray && ArrayIsArray.call(value)) || - (typeof value !== "object" && (!allowFunction || typeof value !== "function")) - ) { - throw new ERR_INVALID_ARG_TYPE(name, "object", value); - } -} - -/** - * @callback validateInteger - * @param {*} value - * @param {string} name - * @param {number} [min] - * @param {number} [max] - * @returns {asserts value is number} - */ -function validateInteger(value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) { - if (typeof value !== "number") throw new ERR_INVALID_ARG_TYPE(name, "number", value); - if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, "an integer", value); - if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value); -} - -/** - * @callback validateUint32 - * @param {*} value - * @param {string} name - * @param {number|boolean} [positive=false] - * @returns {asserts value is number} - */ -function validateUint32(value, name, positive = false) { - if (typeof value !== "number") { - throw new ERR_INVALID_ARG_TYPE(name, "number", value); - } - - if (!NumberIsInteger(value)) { - throw new ERR_OUT_OF_RANGE(name, "an integer", value); - } - - var min = positive ? 1 : 0; // 2 ** 32 === 4294967296 - var max = 4_294_967_295; - - if (value < min || value > max) { - throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value); - } -} - -// ---------------------------------------------------------------------------- -// Section: Utils -// ---------------------------------------------------------------------------- - -function CSI(strings, ...args) { - var ret = `${kEscape}[`; - for (var n = 0; n < strings.length; n++) { - ret += strings[n]; - if (n < args.length) ret += args[n]; - } - return ret; -} - -var kClearLine, kClearScreenDown, kClearToLineBeginning, kClearToLineEnd; - -CSI.kEscape = kEscape; -CSI.kClearLine = kClearLine = CSI`2K`; -CSI.kClearScreenDown = kClearScreenDown = CSI`0J`; -CSI.kClearToLineBeginning = kClearToLineBeginning = CSI`1K`; -CSI.kClearToLineEnd = kClearToLineEnd = CSI`0K`; - -function charLengthLeft(str, i) { - if (i <= 0) return 0; - if ( - (i > 1 && StringPrototypeCodePointAt.call(str, i - 2) >= kUTF16SurrogateThreshold) || - StringPrototypeCodePointAt.call(str, i - 1) >= kUTF16SurrogateThreshold - ) { - return 2; - } - return 1; -} - -function charLengthAt(str, i) { - if (str.length <= i) { - // Pretend to move to the right. This is necessary to autocomplete while - // moving to the right. - return 1; - } - return StringPrototypeCodePointAt.call(str, i) >= kUTF16SurrogateThreshold ? 2 : 1; -} - -/* - Some patterns seen in terminal key escape codes, derived from combos seen - at http://www.midnight-commander.org/browser/lib/tty/key.c - ESC letter - ESC [ letter - ESC [ modifier letter - ESC [ 1 ; modifier letter - ESC [ num char - ESC [ num ; modifier char - ESC O letter - ESC O modifier letter - ESC O 1 ; modifier letter - ESC N letter - ESC [ [ num ; modifier char - ESC [ [ 1 ; modifier letter - ESC ESC [ num char - ESC ESC O letter - - char is usually ~ but $ and ^ also happen with rxvt - - modifier is 1 + - (shift * 1) + - (left_alt * 2) + - (ctrl * 4) + - (right_alt * 8) - - two leading ESCs apparently mean the same as one leading ESC -*/ -function* emitKeys(stream) { - while (true) { - var ch = yield; - var s = ch; - var escaped = false; - - var keySeq = null; - var keyName; - var keyCtrl = false; - var keyMeta = false; - var keyShift = false; - - // var key = { - // sequence: null, - // name: undefined, - // ctrl: false, - // meta: false, - // shift: false, - // }; - - if (ch === kEscape) { - escaped = true; - s += ch = yield; - - if (ch === kEscape) { - s += ch = yield; - } - } - - if (escaped && (ch === "O" || ch === "[")) { - // ANSI escape sequence - var code = ch; - var modifier = 0; - - if (ch === "O") { - // ESC O letter - // ESC O modifier letter - s += ch = yield; - - if (ch >= "0" && ch <= "9") { - modifier = (ch >> 0) - 1; - s += ch = yield; - } - - code += ch; - } else if (ch === "[") { - // ESC [ letter - // ESC [ modifier letter - // ESC [ [ modifier letter - // ESC [ [ num char - s += ch = yield; - - if (ch === "[") { - // \x1b[[A - // ^--- escape codes might have a second bracket - code += ch; - s += ch = yield; - } - - /* - * Here and later we try to buffer just enough data to get - * a complete ascii sequence. - * - * We have basically two classes of ascii characters to process: - * - * - * 1. `\x1b[24;5~` should be parsed as { code: '[24~', modifier: 5 } - * - * This particular example is featuring Ctrl+F12 in xterm. - * - * - `;5` part is optional, e.g. it could be `\x1b[24~` - * - first part can contain one or two digits - * - * So the generic regexp is like /^\d\d?(;\d)?[~^$]$/ - * - * - * 2. `\x1b[1;5H` should be parsed as { code: '[H', modifier: 5 } - * - * This particular example is featuring Ctrl+Home in xterm. - * - * - `1;5` part is optional, e.g. it could be `\x1b[H` - * - `1;` part is optional, e.g. it could be `\x1b[5H` - * - * So the generic regexp is like /^((\d;)?\d)?[A-Za-z]$/ - * - */ - var cmdStart = s.length - 1; - - // Skip one or two leading digits - if (ch >= "0" && ch <= "9") { - s += ch = yield; - - if (ch >= "0" && ch <= "9") { - s += ch = yield; - } - } - - // skip modifier - if (ch === ";") { - s += ch = yield; - - if (ch >= "0" && ch <= "9") { - s += yield; - } - } - - /* - * We buffered enough data, now trying to extract code - * and modifier from it - */ - var cmd = StringPrototypeSlice.call(s, cmdStart); - var match; - - if ((match = RegExpPrototypeExec.call(/^(\d\d?)(;(\d))?([~^$])$/, cmd))) { - code += match[1] + match[4]; - modifier = (match[3] || 1) - 1; - } else if ((match = RegExpPrototypeExec.call(/^((\d;)?(\d))?([A-Za-z])$/, cmd))) { - code += match[4]; - modifier = (match[3] || 1) - 1; - } else { - code += cmd; - } - } - - // Parse the key modifier - keyCtrl = !!(modifier & 4); - keyMeta = !!(modifier & 10); - keyShift = !!(modifier & 1); - keyCode = code; - - // Parse the key itself - switch (code) { - /* xterm/gnome ESC [ letter (with modifier) */ - case "[P": - keyName = "f1"; - break; - case "[Q": - keyName = "f2"; - break; - case "[R": - keyName = "f3"; - break; - case "[S": - keyName = "f4"; - break; - - /* xterm/gnome ESC O letter (without modifier) */ - case "OP": - keyName = "f1"; - break; - case "OQ": - keyName = "f2"; - break; - case "OR": - keyName = "f3"; - break; - case "OS": - keyName = "f4"; - break; - - /* xterm/rxvt ESC [ number ~ */ - case "[11~": - keyName = "f1"; - break; - case "[12~": - keyName = "f2"; - break; - case "[13~": - keyName = "f3"; - break; - case "[14~": - keyName = "f4"; - break; - - /* from Cygwin and used in libuv */ - case "[[A": - keyName = "f1"; - break; - case "[[B": - keyName = "f2"; - break; - case "[[C": - keyName = "f3"; - break; - case "[[D": - keyName = "f4"; - break; - case "[[E": - keyName = "f5"; - break; - - /* common */ - case "[15~": - keyName = "f5"; - break; - case "[17~": - keyName = "f6"; - break; - case "[18~": - keyName = "f7"; - break; - case "[19~": - keyName = "f8"; - break; - case "[20~": - keyName = "f9"; - break; - case "[21~": - keyName = "f10"; - break; - case "[23~": - keyName = "f11"; - break; - case "[24~": - keyName = "f12"; - break; - - /* xterm ESC [ letter */ - case "[A": - keyName = "up"; - break; - case "[B": - keyName = "down"; - break; - case "[C": - keyName = "right"; - break; - case "[D": - keyName = "left"; - break; - case "[E": - keyName = "clear"; - break; - case "[F": - keyName = "end"; - break; - case "[H": - keyName = "home"; - break; - - /* xterm/gnome ESC O letter */ - case "OA": - keyName = "up"; - break; - case "OB": - keyName = "down"; - break; - case "OC": - keyName = "right"; - break; - case "OD": - keyName = "left"; - break; - case "OE": - keyName = "clear"; - break; - case "OF": - keyName = "end"; - break; - case "OH": - keyName = "home"; - break; - - /* xterm/rxvt ESC [ number ~ */ - case "[1~": - keyName = "home"; - break; - case "[2~": - keyName = "insert"; - break; - case "[3~": - keyName = "delete"; - break; - case "[4~": - keyName = "end"; - break; - case "[5~": - keyName = "pageup"; - break; - case "[6~": - keyName = "pagedown"; - break; - - /* putty */ - case "[[5~": - keyName = "pageup"; - break; - case "[[6~": - keyName = "pagedown"; - break; - - /* rxvt */ - case "[7~": - keyName = "home"; - break; - case "[8~": - keyName = "end"; - break; - - /* rxvt keys with modifiers */ - case "[a": - keyName = "up"; - keyShift = true; - break; - case "[b": - keyName = "down"; - keyShift = true; - break; - case "[c": - keyName = "right"; - keyShift = true; - break; - case "[d": - keyName = "left"; - keyShift = true; - break; - case "[e": - keyName = "clear"; - keyShift = true; - break; - - case "[2$": - keyName = "insert"; - keyShift = true; - break; - case "[3$": - keyName = "delete"; - keyShift = true; - break; - case "[5$": - keyName = "pageup"; - keyShift = true; - break; - case "[6$": - keyName = "pagedown"; - keyShift = true; - break; - case "[7$": - keyName = "home"; - keyShift = true; - break; - case "[8$": - keyName = "end"; - keyShift = true; - break; - - case "Oa": - keyName = "up"; - keyCtrl = true; - break; - case "Ob": - keyName = "down"; - keyCtrl = true; - break; - case "Oc": - keyName = "right"; - keyCtrl = true; - break; - case "Od": - keyName = "left"; - keyCtrl = true; - break; - case "Oe": - keyName = "clear"; - keyCtrl = true; - break; - - case "[2^": - keyName = "insert"; - keyCtrl = true; - break; - case "[3^": - keyName = "delete"; - keyCtrl = true; - break; - case "[5^": - keyName = "pageup"; - keyCtrl = true; - break; - case "[6^": - keyName = "pagedown"; - keyCtrl = true; - break; - case "[7^": - keyName = "home"; - keyCtrl = true; - break; - case "[8^": - keyName = "end"; - keyCtrl = true; - break; - - /* misc. */ - case "[Z": - keyName = "tab"; - keyShift = true; - break; - default: - keyName = "undefined"; - break; - } - } else if (ch === "\r") { - // carriage return - keyName = "return"; - keyMeta = escaped; - } else if (ch === "\n") { - // Enter, should have been called linefeed - keyName = "enter"; - keyMeta = escaped; - } else if (ch === "\t") { - // tab - keyName = "tab"; - keyMeta = escaped; - } else if (ch === "\b" || ch === "\x7f") { - // backspace or ctrl+h - keyName = "backspace"; - keyMeta = escaped; - } else if (ch === kEscape) { - // escape key - keyName = "escape"; - keyMeta = escaped; - } else if (ch === " ") { - keyName = "space"; - keyMeta = escaped; - } else if (!escaped && ch <= "\x1a") { - // ctrl+letter - keyName = StringFromCharCode(StringPrototypeCharCodeAt.call(ch) + StringPrototypeCharCodeAt.call("a") - 1); - keyCtrl = true; - } else if (RegExpPrototypeExec.call(/^[0-9A-Za-z]$/, ch) !== null) { - // Letter, number, shift+letter - keyName = StringPrototypeToLowerCase.call(ch); - keyShift = RegExpPrototypeExec.call(/^[A-Z]$/, ch) !== null; - keyMeta = escaped; - } else if (escaped) { - // Escape sequence timeout - keyName = ch.length ? undefined : "escape"; - keyMeta = true; - } - - keySeq = s; - - if (s.length !== 0 && (keyName !== undefined || escaped)) { - /* Named character or sequence */ - stream.emit("keypress", escaped ? undefined : s, { - sequence: keySeq, - name: keyName, - ctrl: keyCtrl, - meta: keyMeta, - shift: keyShift, - }); - } else if (charLengthAt(s, 0) === s.length) { - /* Single unnamed character, e.g. "." */ - stream.emit("keypress", s, { - sequence: keySeq, - name: keyName, - ctrl: keyCtrl, - meta: keyMeta, - shift: keyShift, - }); - } - /* Unrecognized or broken escape sequence, don't emit anything */ - } -} - -// This runs in O(n log n). -function commonPrefix(strings) { - if (strings.length === 0) { - return ""; - } - if (strings.length === 1) { - return strings[0]; - } - var sorted = ArrayPrototypeSort.call(ArrayPrototypeSlice.call(strings)); - var min = sorted[0]; - var max = sorted[sorted.length - 1]; - for (var i = 0; i < min.length; i++) { - if (min[i] !== max[i]) { - return StringPrototypeSlice.call(min, 0, i); - } - } - return min; -} - -// ---------------------------------------------------------------------------- -// Section: Cursor Functions -// ---------------------------------------------------------------------------- - -/** - * moves the cursor to the x and y coordinate on the given stream - */ - -function cursorTo(stream, x, y, callback) { - if (callback !== undefined) { - validateFunction(callback, "callback"); - } - - if (typeof y === "function") { - callback = y; - y = undefined; - } - - if (NumberIsNaN(x)) throw new ERR_INVALID_ARG_VALUE("x", x); - if (NumberIsNaN(y)) throw new ERR_INVALID_ARG_VALUE("y", y); - - if (stream == null || (typeof x !== "number" && typeof y !== "number")) { - if (typeof callback === "function") process.nextTick(callback, null); - return true; - } - - if (typeof x !== "number") throw new ERR_INVALID_CURSOR_POS(); - - var data = typeof y !== "number" ? CSI`${x + 1}G` : CSI`${y + 1};${x + 1}H`; - return stream.write(data, callback); -} - -/** - * moves the cursor relative to its current location - */ - -function moveCursor(stream, dx, dy, callback) { - if (callback !== undefined) { - validateFunction(callback, "callback"); - } - - if (stream == null || !(dx || dy)) { - if (typeof callback === "function") process.nextTick(callback, null); - return true; - } - - var data = ""; - - if (dx < 0) { - data += CSI`${-dx}D`; - } else if (dx > 0) { - data += CSI`${dx}C`; - } - - if (dy < 0) { - data += CSI`${-dy}A`; - } else if (dy > 0) { - data += CSI`${dy}B`; - } - - return stream.write(data, callback); -} - -/** - * clears the current line the cursor is on: - * -1 for left of the cursor - * +1 for right of the cursor - * 0 for the entire line - */ - -function clearLine(stream, dir, callback) { - if (callback !== undefined) { - validateFunction(callback, "callback"); - } - - if (stream === null || stream === undefined) { - if (typeof callback === "function") process.nextTick(callback, null); - return true; - } - - var type = dir < 0 ? kClearToLineBeginning : dir > 0 ? kClearToLineEnd : kClearLine; - return stream.write(type, callback); -} - -/** - * clears the screen from the current position of the cursor down - */ - -function clearScreenDown(stream, callback) { - if (callback !== undefined) { - validateFunction(callback, "callback"); - } - - if (stream === null || stream === undefined) { - if (typeof callback === "function") process.nextTick(callback, null); - return true; - } - - return stream.write(kClearScreenDown, callback); -} - -// ---------------------------------------------------------------------------- -// Section: Emit keypress events -// ---------------------------------------------------------------------------- - -var KEYPRESS_DECODER = Symbol("keypress-decoder"); -var ESCAPE_DECODER = Symbol("escape-decoder"); - -// GNU readline library - keyseq-timeout is 500ms (default) -var ESCAPE_CODE_TIMEOUT = 500; - -/** - * accepts a readable Stream instance and makes it emit "keypress" events - */ - -function emitKeypressEvents(stream, iface = {}) { - if (stream[KEYPRESS_DECODER]) return; - - stream[KEYPRESS_DECODER] = new StringDecoder("utf8"); - - stream[ESCAPE_DECODER] = emitKeys(stream); - stream[ESCAPE_DECODER].next(); - - var triggerEscape = () => stream[ESCAPE_DECODER].next(""); - var { escapeCodeTimeout = ESCAPE_CODE_TIMEOUT } = iface; - var timeoutId; - - function onData(input) { - if (stream.listenerCount("keypress") > 0) { - var string = stream[KEYPRESS_DECODER].write(input); - if (string) { - clearTimeout(timeoutId); - - // This supports characters of length 2. - iface[kSawKeyPress] = charLengthAt(string, 0) === string.length; - iface.isCompletionEnabled = false; - - var length = 0; - for (var character of new SafeStringIterator(string)) { - length += character.length; - if (length === string.length) { - iface.isCompletionEnabled = true; - } - - try { - stream[ESCAPE_DECODER].next(character); - // Escape letter at the tail position - if (length === string.length && character === kEscape) { - timeoutId = setTimeout(triggerEscape, escapeCodeTimeout); - } - } catch (err) { - // If the generator throws (it could happen in the `keypress` - // event), we need to restart it. - stream[ESCAPE_DECODER] = emitKeys(stream); - stream[ESCAPE_DECODER].next(); - throw err; - } - } - } - } else { - // Nobody's watching anyway - stream.removeListener("data", onData); - stream.on("newListener", onNewListener); - } - } - - function onNewListener(event) { - if (event === "keypress") { - stream.on("data", onData); - stream.removeListener("newListener", onNewListener); - } - } - - if (stream.listenerCount("keypress") > 0) { - stream.on("data", onData); - } else { - stream.on("newListener", onNewListener); - } -} - -// ---------------------------------------------------------------------------- -// Section: Interface -// ---------------------------------------------------------------------------- - -var kEmptyObject = ObjectFreeze(ObjectCreate(null)); - -// Some constants regarding configuration of interface -var kHistorySize = 30; -var kMaxUndoRedoStackSize = 2048; -var kMincrlfDelay = 100; -// \r\n, \n, or \r followed by something other than \n -var lineEnding = /\r?\n|\r(?!\n)/g; - -// Max length of the kill ring -var kMaxLengthOfKillRing = 32; - -// Symbols - -// Public symbols -var kLineObjectStream = Symbol("line object stream"); -var kQuestionCancel = Symbol("kQuestionCancel"); -var kQuestion = Symbol("kQuestion"); - -// Private symbols -var kAddHistory = Symbol("_addHistory"); -var kBeforeEdit = Symbol("_beforeEdit"); -var kDecoder = Symbol("_decoder"); -var kDeleteLeft = Symbol("_deleteLeft"); -var kDeleteLineLeft = Symbol("_deleteLineLeft"); -var kDeleteLineRight = Symbol("_deleteLineRight"); -var kDeleteRight = Symbol("_deleteRight"); -var kDeleteWordLeft = Symbol("_deleteWordLeft"); -var kDeleteWordRight = Symbol("_deleteWordRight"); -var kGetDisplayPos = Symbol("_getDisplayPos"); -var kHistoryNext = Symbol("_historyNext"); -var kHistoryPrev = Symbol("_historyPrev"); -var kInsertString = Symbol("_insertString"); -var kLine = Symbol("_line"); -var kLine_buffer = Symbol("_line_buffer"); -var kKillRing = Symbol("_killRing"); -var kKillRingCursor = Symbol("_killRingCursor"); -var kMoveCursor = Symbol("_moveCursor"); -var kNormalWrite = Symbol("_normalWrite"); -var kOldPrompt = Symbol("_oldPrompt"); -var kOnLine = Symbol("_onLine"); -var kPreviousKey = Symbol("_previousKey"); -var kPrompt = Symbol("_prompt"); -var kPushToKillRing = Symbol("_pushToKillRing"); -var kPushToUndoStack = Symbol("_pushToUndoStack"); -var kQuestionCallback = Symbol("_questionCallback"); -var kRedo = Symbol("_redo"); -var kRedoStack = Symbol("_redoStack"); -var kRefreshLine = Symbol("_refreshLine"); -var kSawKeyPress = Symbol("_sawKeyPress"); -var kSawReturnAt = Symbol("_sawReturnAt"); -var kSetRawMode = Symbol("_setRawMode"); -var kTabComplete = Symbol("_tabComplete"); -var kTabCompleter = Symbol("_tabCompleter"); -var kTtyWrite = Symbol("_ttyWrite"); -var kUndo = Symbol("_undo"); -var kUndoStack = Symbol("_undoStack"); -var kWordLeft = Symbol("_wordLeft"); -var kWordRight = Symbol("_wordRight"); -var kWriteToOutput = Symbol("_writeToOutput"); -var kYank = Symbol("_yank"); -var kYanking = Symbol("_yanking"); -var kYankPop = Symbol("_yankPop"); - -// Event symbols -var kFirstEventParam = Symbol("nodejs.kFirstEventParam"); - -// class InterfaceConstructor extends EventEmitter { -// #onSelfCloseWithTerminal; -// #onSelfCloseWithoutTerminal; - -// #onError; -// #onData; -// #onEnd; -// #onTermEnd; -// #onKeyPress; -// #onResize; - -// [kSawReturnAt]; -// isCompletionEnabled = true; -// [kSawKeyPress]; -// [kPreviousKey]; -// escapeCodeTimeout; -// tabSize; - -// line; -// [kSubstringSearch]; -// output; -// input; -// [kUndoStack]; -// [kRedoStack]; -// history; -// historySize; - -// [kKillRing]; -// [kKillRingCursor]; - -// removeHistoryDuplicates; -// crlfDelay; -// completer; - -// terminal; -// [kLineObjectStream]; - -// cursor; -// historyIndex; - -// constructor(input, output, completer, terminal) { -// super(); - -var kOnSelfCloseWithTerminal = Symbol("_onSelfCloseWithTerminal"); -var kOnSelfCloseWithoutTerminal = Symbol("_onSelfCloseWithoutTerminal"); -var kOnKeyPress = Symbol("_onKeyPress"); -var kOnError = Symbol("_onError"); -var kOnData = Symbol("_onData"); -var kOnEnd = Symbol("_onEnd"); -var kOnTermEnd = Symbol("_onTermEnd"); -var kOnResize = Symbol("_onResize"); - -function onSelfCloseWithTerminal() { - var input = this.input; - var output = this.output; - - if (!input) throw new Error("Input not set, invalid state for readline!"); - - input.removeListener("keypress", this[kOnKeyPress]); - input.removeListener("error", this[kOnError]); - input.removeListener("end", this[kOnTermEnd]); - if (output !== null && output !== undefined) { - output.removeListener("resize", this[kOnResize]); - } -} - -function onSelfCloseWithoutTerminal() { - var input = this.input; - if (!input) throw new Error("Input not set, invalid state for readline!"); - - input.removeListener("data", this[kOnData]); - input.removeListener("error", this[kOnError]); - input.removeListener("end", this[kOnEnd]); -} - -function onError(err) { - this.emit("error", err); -} - -function onData(data) { - debug("onData"); - this[kNormalWrite](data); -} - -function onEnd() { - debug("onEnd"); - if (typeof this[kLine_buffer] === "string" && this[kLine_buffer].length > 0) { - this.emit("line", this[kLine_buffer]); - } - this.close(); -} - -function onTermEnd() { - debug("onTermEnd"); - if (typeof this.line === "string" && this.line.length > 0) { - this.emit("line", this.line); - } - this.close(); -} - -function onKeyPress(s, key) { - this[kTtyWrite](s, key); - if (key && key.sequence) { - // If the keySeq is half of a surrogate pair - // (>= 0xd800 and <= 0xdfff), refresh the line so - // the character is displayed appropriately. - var ch = StringPrototypeCodePointAt.call(key.sequence, 0); - if (ch >= 0xd800 && ch <= 0xdfff) this[kRefreshLine](); - } -} - -function onResize() { - this[kRefreshLine](); -} - -function InterfaceConstructor(input, output, completer, terminal) { - if (!(this instanceof InterfaceConstructor)) { - return new InterfaceConstructor(input, output, completer, terminal); - } - - EventEmitter.call(this); - - this[kOnSelfCloseWithoutTerminal] = onSelfCloseWithoutTerminal.bind(this); - this[kOnSelfCloseWithTerminal] = onSelfCloseWithTerminal.bind(this); - - this[kOnError] = onError.bind(this); - this[kOnData] = onData.bind(this); - this[kOnEnd] = onEnd.bind(this); - this[kOnTermEnd] = onTermEnd.bind(this); - this[kOnKeyPress] = onKeyPress.bind(this); - this[kOnResize] = onResize.bind(this); - - this[kSawReturnAt] = 0; - this.isCompletionEnabled = true; - this[kSawKeyPress] = false; - this[kPreviousKey] = null; - this.escapeCodeTimeout = ESCAPE_CODE_TIMEOUT; - this.tabSize = 8; - - var history; - var historySize; - var removeHistoryDuplicates = false; - var crlfDelay; - var prompt = "> "; - var signal; - - if (input?.input) { - // An options object was given - output = input.output; - completer = input.completer; - terminal = input.terminal; - history = input.history; - historySize = input.historySize; - signal = input.signal; - - var tabSize = input.tabSize; - if (tabSize !== undefined) { - validateUint32(tabSize, "tabSize", true); - this.tabSize = tabSize; - } - removeHistoryDuplicates = input.removeHistoryDuplicates; - - var inputPrompt = input.prompt; - if (inputPrompt !== undefined) { - prompt = inputPrompt; - } - - var inputEscapeCodeTimeout = input.escapeCodeTimeout; - if (inputEscapeCodeTimeout !== undefined) { - if (NumberIsFinite(inputEscapeCodeTimeout)) { - this.escapeCodeTimeout = inputEscapeCodeTimeout; - } else { - throw new ERR_INVALID_ARG_VALUE("input.escapeCodeTimeout", this.escapeCodeTimeout); - } - } - - if (signal) { - validateAbortSignal(signal, "options.signal"); - } - - crlfDelay = input.crlfDelay; - input = input.input; - } - - if (completer !== undefined && typeof completer !== "function") { - throw new ERR_INVALID_ARG_VALUE("completer", completer); - } - - if (history === undefined) { - history = []; - } else { - validateArray(history, "history"); - } - - if (historySize === undefined) { - historySize = kHistorySize; - } - - if (typeof historySize !== "number" || NumberIsNaN(historySize) || historySize < 0) { - throw new ERR_INVALID_ARG_VALUE("historySize", historySize); - } - - // Backwards compat; check the isTTY prop of the output stream - // when `terminal` was not specified - if (terminal === undefined && !(output === null || output === undefined)) { - terminal = !!output.isTTY; - } - - this.line = ""; - this[kSubstringSearch] = null; - this.output = output; - this.input = input; - this[kUndoStack] = []; - this[kRedoStack] = []; - this.history = history; - this.historySize = historySize; - - // The kill ring is a global list of blocks of text that were previously - // killed (deleted). If its size exceeds kMaxLengthOfKillRing, the oldest - // element will be removed to make room for the latest deletion. With kill - // ring, users are able to recall (yank) or cycle (yank pop) among previously - // killed texts, quite similar to the behavior of Emacs. - this[kKillRing] = []; - this[kKillRingCursor] = 0; - - this.removeHistoryDuplicates = !!removeHistoryDuplicates; - this.crlfDelay = crlfDelay ? MathMax(kMincrlfDelay, crlfDelay) : kMincrlfDelay; - this.completer = completer; - - this.setPrompt(prompt); - - this.terminal = !!terminal; - - this[kLineObjectStream] = undefined; - - input.on("error", this[kOnError]); - - if (!this.terminal) { - input.on("data", this[kOnData]); - input.on("end", this[kOnEnd]); - this.once("close", this[kOnSelfCloseWithoutTerminal]); - this[kDecoder] = new StringDecoder("utf8"); - } else { - emitKeypressEvents(input, this); - - // `input` usually refers to stdin - input.on("keypress", this[kOnKeyPress]); - input.on("end", this[kOnTermEnd]); - - this[kSetRawMode](true); - this.terminal = true; - - // Cursor position on the line. - this.cursor = 0; - this.historyIndex = -1; - - if (output !== null && output !== undefined) output.on("resize", this[kOnResize]); - - this.once("close", this[kOnSelfCloseWithTerminal]); - } - - if (signal) { - var onAborted = (() => this.close()).bind(this); - if (signal.aborted) { - process.nextTick(onAborted); - } else { - signal.addEventListener("abort", onAborted, { once: true }); - this.once("close", () => signal.removeEventListener("abort", onAborted)); - } - } - - // Current line - this.line = ""; - - input.resume(); -} - -ObjectSetPrototypeOf(InterfaceConstructor.prototype, EventEmitter.prototype); -ObjectSetPrototypeOf(InterfaceConstructor, EventEmitter); - -var _Interface = class Interface extends InterfaceConstructor { - // TODO: Enumerate all the properties of the class - - // eslint-disable-next-line no-useless-constructor - constructor(input, output, completer, terminal) { - super(input, output, completer, terminal); - } - get columns() { - var output = this.output; - if (output && output.columns) return output.columns; - return Infinity; - } - - /** - * Sets the prompt written to the output. - * @param {string} prompt - * @returns {void} - */ - setPrompt(prompt) { - this[kPrompt] = prompt; - } - - /** - * Returns the current prompt used by `rl.prompt()`. - * @returns {string} - */ - getPrompt() { - return this[kPrompt]; - } - - [kSetRawMode](mode) { - var input = this.input; - var { setRawMode, wasInRawMode } = input; - - // TODO: Make this work, for now just stub this and print debug - debug("setRawMode", mode, "set!"); - // if (typeof setRawMode === "function") { - // setRawMode(mode); - // } - - return wasInRawMode; - } - - /** - * Writes the configured `prompt` to a new line in `output`. - * @param {boolean} [preserveCursor] - * @returns {void} - */ - prompt(preserveCursor) { - if (this.paused) this.resume(); - if (this.terminal && process.env.TERM !== "dumb") { - if (!preserveCursor) this.cursor = 0; - this[kRefreshLine](); - } else { - this[kWriteToOutput](this[kPrompt]); - } - } - - [kQuestion](query, cb) { - if (this.closed) { - throw new ERR_USE_AFTER_CLOSE("readline"); - } - if (this[kQuestionCallback]) { - this.prompt(); - } else { - this[kOldPrompt] = this[kPrompt]; - this.setPrompt(query); - this[kQuestionCallback] = cb; - this.prompt(); - } - } - - [kOnLine](line) { - if (this[kQuestionCallback]) { - var cb = this[kQuestionCallback]; - this[kQuestionCallback] = null; - this.setPrompt(this[kOldPrompt]); - cb(line); - } else { - this.emit("line", line); - } - } - - [kBeforeEdit](oldText, oldCursor) { - this[kPushToUndoStack](oldText, oldCursor); - } - - [kQuestionCancel]() { - if (this[kQuestionCallback]) { - this[kQuestionCallback] = null; - this.setPrompt(this[kOldPrompt]); - this.clearLine(); - } - } - - [kWriteToOutput](stringToWrite) { - validateString(stringToWrite, "stringToWrite"); - - if (this.output !== null && this.output !== undefined) { - this.output.write(stringToWrite); - } - } - - [kAddHistory]() { - if (this.line.length === 0) return ""; - - // If the history is disabled then return the line - if (this.historySize === 0) return this.line; - - // If the trimmed line is empty then return the line - if (StringPrototypeTrim.call(this.line).length === 0) return this.line; - - if (this.history.length === 0 || this.history[0] !== this.line) { - if (this.removeHistoryDuplicates) { - // Remove older history line if identical to new one - var dupIndex = ArrayPrototypeIndexOf.call(this.history, this.line); - if (dupIndex !== -1) ArrayPrototypeSplice.call(this.history, dupIndex, 1); - } - - ArrayPrototypeUnshift.call(this.history, this.line); - - // Only store so many - if (this.history.length > this.historySize) ArrayPrototypePop.call(this.history); - } - - this.historyIndex = -1; - - // The listener could change the history object, possibly - // to remove the last added entry if it is sensitive and should - // not be persisted in the history, like a password - var line = this.history[0]; - - // Emit history event to notify listeners of update - this.emit("history", this.history); - - return line; - } - - [kRefreshLine]() { - // line length - var line = this[kPrompt] + this.line; - var dispPos = this[kGetDisplayPos](line); - var lineCols = dispPos.cols; - var lineRows = dispPos.rows; - - // cursor position - var cursorPos = this.getCursorPos(); - - // First move to the bottom of the current line, based on cursor pos - var prevRows = this.prevRows || 0; - if (prevRows > 0) { - moveCursor(this.output, 0, -prevRows); - } - - // Cursor to left edge. - cursorTo(this.output, 0); - // erase data - clearScreenDown(this.output); - - // Write the prompt and the current buffer content. - this[kWriteToOutput](line); - - // Force terminal to allocate a new line - if (lineCols === 0) { - this[kWriteToOutput](" "); - } - - // Move cursor to original position. - cursorTo(this.output, cursorPos.cols); - - var diff = lineRows - cursorPos.rows; - if (diff > 0) { - moveCursor(this.output, 0, -diff); - } - - this.prevRows = cursorPos.rows; - } - - /** - * Closes the `readline.Interface` instance. - * @returns {void} - */ - close() { - if (this.closed) return; - this.pause(); - if (this.terminal) { - this[kSetRawMode](false); - } - this.closed = true; - this.emit("close"); - } - - /** - * Pauses the `input` stream. - * @returns {void | Interface} - */ - pause() { - if (this.paused) return; - this.input.pause(); - this.paused = true; - this.emit("pause"); - return this; - } - - /** - * Resumes the `input` stream if paused. - * @returns {void | Interface} - */ - resume() { - if (!this.paused) return; - this.input.resume(); - this.paused = false; - this.emit("resume"); - return this; - } - - /** - * Writes either `data` or a `key` sequence identified by - * `key` to the `output`. - * @param {string} d - * @param {{ - * ctrl?: boolean; - * meta?: boolean; - * shift?: boolean; - * name?: string; - * }} [key] - * @returns {void} - */ - write(d, key) { - if (this.paused) this.resume(); - if (this.terminal) { - this[kTtyWrite](d, key); - } else { - this[kNormalWrite](d); - } - } - - [kNormalWrite](b) { - if (b === undefined) { - return; - } - var string = this[kDecoder].write(b); - if (this[kSawReturnAt] && DateNow() - this[kSawReturnAt] <= this.crlfDelay) { - if (StringPrototypeCodePointAt.call(string) === 10) string = StringPrototypeSlice.call(string, 1); - this[kSawReturnAt] = 0; - } - - // Run test() on the new string chunk, not on the entire line buffer. - var newPartContainsEnding = RegExpPrototypeExec.call(lineEnding, string); - if (newPartContainsEnding !== null) { - if (this[kLine_buffer]) { - string = this[kLine_buffer] + string; - this[kLine_buffer] = null; - newPartContainsEnding = RegExpPrototypeExec.call(lineEnding, string); - } - this[kSawReturnAt] = StringPrototypeEndsWith.call(string, "\r") ? DateNow() : 0; - - var indexes = [0, newPartContainsEnding.index, lineEnding.lastIndex]; - var nextMatch; - while ((nextMatch = RegExpPrototypeExec.call(lineEnding, string)) !== null) { - ArrayPrototypePush.call(indexes, nextMatch.index, lineEnding.lastIndex); - } - var lastIndex = indexes.length - 1; - // Either '' or (conceivably) the unfinished portion of the next line - this[kLine_buffer] = StringPrototypeSlice.call(string, indexes[lastIndex]); - for (var i = 1; i < lastIndex; i += 2) { - this[kOnLine](StringPrototypeSlice.call(string, indexes[i - 1], indexes[i])); - } - } else if (string) { - // No newlines this time, save what we have for next time - if (this[kLine_buffer]) { - this[kLine_buffer] += string; - } else { - this[kLine_buffer] = string; - } - } - } - - [kInsertString](c) { - this[kBeforeEdit](this.line, this.cursor); - if (this.cursor < this.line.length) { - var beg = StringPrototypeSlice.call(this.line, 0, this.cursor); - var end = StringPrototypeSlice.call(this.line, this.cursor, this.line.length); - this.line = beg + c + end; - this.cursor += c.length; - this[kRefreshLine](); - } else { - var oldPos = this.getCursorPos(); - this.line += c; - this.cursor += c.length; - var newPos = this.getCursorPos(); - - if (oldPos.rows < newPos.rows) { - this[kRefreshLine](); - } else { - this[kWriteToOutput](c); - } - } - } - - async [kTabComplete](lastKeypressWasTab) { - this.pause(); - var string = StringPrototypeSlice.call(this.line, 0, this.cursor); - var value; - try { - value = await this.completer(string); - } catch (err) { - this[kWriteToOutput](`Tab completion error: ${inspect(err)}`); - return; - } finally { - this.resume(); - } - this[kTabCompleter](lastKeypressWasTab, value); - } - - [kTabCompleter](lastKeypressWasTab, { 0: completions, 1: completeOn }) { - // Result and the text that was completed. - - if (!completions || completions.length === 0) { - return; - } - - // If there is a common prefix to all matches, then apply that portion. - var prefix = commonPrefix(ArrayPrototypeFilter.call(completions, e => e !== "")); - if (StringPrototypeStartsWith.call(prefix, completeOn) && prefix.length > completeOn.length) { - this[kInsertString](StringPrototypeSlice.call(prefix, completeOn.length)); - return; - } else if (!StringPrototypeStartsWith.call(completeOn, prefix)) { - this.line = - StringPrototypeSlice.call(this.line, 0, this.cursor - completeOn.length) + - prefix + - StringPrototypeSlice.call(this.line, this.cursor, this.line.length); - this.cursor = this.cursor - completeOn.length + prefix.length; - this._refreshLine(); - return; - } - - if (!lastKeypressWasTab) { - return; - } - - this[kBeforeEdit](this.line, this.cursor); - - // Apply/show completions. - var completionsWidth = ArrayPrototypeMap.call(completions, e => getStringWidth(e)); - var width = MathMaxApply(completionsWidth) + 2; // 2 space padding - var maxColumns = MathFloor(this.columns / width) || 1; - if (maxColumns === Infinity) { - maxColumns = 1; - } - var output = "\r\n"; - var lineIndex = 0; - var whitespace = 0; - for (var i = 0; i < completions.length; i++) { - var completion = completions[i]; - if (completion === "" || lineIndex === maxColumns) { - output += "\r\n"; - lineIndex = 0; - whitespace = 0; - } else { - output += StringPrototypeRepeat.call(" ", whitespace); - } - if (completion !== "") { - output += completion; - whitespace = width - completionsWidth[i]; - lineIndex++; - } else { - output += "\r\n"; - } - } - if (lineIndex !== 0) { - output += "\r\n\r\n"; - } - this[kWriteToOutput](output); - this[kRefreshLine](); - } - - [kWordLeft]() { - if (this.cursor > 0) { - // Reverse the string and match a word near beginning - // to avoid quadratic time complexity - var leading = StringPrototypeSlice.call(this.line, 0, this.cursor); - var reversed = ArrayPrototypeJoin.call(ArrayPrototypeReverse.call(ArrayFrom(leading)), ""); - var match = RegExpPrototypeExec.call(/^\s*(?:[^\w\s]+|\w+)?/, reversed); - this[kMoveCursor](-match[0].length); - } - } - - [kWordRight]() { - if (this.cursor < this.line.length) { - var trailing = StringPrototypeSlice.call(this.line, this.cursor); - var match = RegExpPrototypeExec.call(/^(?:\s+|[^\w\s]+|\w+)\s*/, trailing); - this[kMoveCursor](match[0].length); - } - } - - [kDeleteLeft]() { - if (this.cursor > 0 && this.line.length > 0) { - this[kBeforeEdit](this.line, this.cursor); - // The number of UTF-16 units comprising the character to the left - var charSize = charLengthLeft(this.line, this.cursor); - this.line = - StringPrototypeSlice.call(this.line, 0, this.cursor - charSize) + - StringPrototypeSlice.call(this.line, this.cursor, this.line.length); - - this.cursor -= charSize; - this[kRefreshLine](); - } - } - - [kDeleteRight]() { - if (this.cursor < this.line.length) { - this[kBeforeEdit](this.line, this.cursor); - // The number of UTF-16 units comprising the character to the left - var charSize = charLengthAt(this.line, this.cursor); - this.line = - StringPrototypeSlice.call(this.line, 0, this.cursor) + - StringPrototypeSlice.call(this.line, this.cursor + charSize, this.line.length); - this[kRefreshLine](); - } - } - - [kDeleteWordLeft]() { - if (this.cursor > 0) { - this[kBeforeEdit](this.line, this.cursor); - // Reverse the string and match a word near beginning - // to avoid quadratic time complexity - var leading = StringPrototypeSlice.call(this.line, 0, this.cursor); - var reversed = ArrayPrototypeJoin.call(ArrayPrototypeReverse.call(ArrayFrom(leading)), ""); - var match = RegExpPrototypeExec.call(/^\s*(?:[^\w\s]+|\w+)?/, reversed); - leading = StringPrototypeSlice.call(leading, 0, leading.length - match[0].length); - this.line = leading + StringPrototypeSlice.call(this.line, this.cursor, this.line.length); - this.cursor = leading.length; - this[kRefreshLine](); - } - } - - [kDeleteWordRight]() { - if (this.cursor < this.line.length) { - this[kBeforeEdit](this.line, this.cursor); - var trailing = StringPrototypeSlice.call(this.line, this.cursor); - var match = RegExpPrototypeExec.call(/^(?:\s+|\W+|\w+)\s*/, trailing); - this.line = - StringPrototypeSlice.call(this.line, 0, this.cursor) + StringPrototypeSlice.call(trailing, match[0].length); - this[kRefreshLine](); - } - } - - [kDeleteLineLeft]() { - this[kBeforeEdit](this.line, this.cursor); - var del = StringPrototypeSlice.call(this.line, 0, this.cursor); - this.line = StringPrototypeSlice.call(this.line, this.cursor); - this.cursor = 0; - this[kPushToKillRing](del); - this[kRefreshLine](); - } - - [kDeleteLineRight]() { - this[kBeforeEdit](this.line, this.cursor); - var del = StringPrototypeSlice.call(this.line, this.cursor); - this.line = StringPrototypeSlice.call(this.line, 0, this.cursor); - this[kPushToKillRing](del); - this[kRefreshLine](); - } - - [kPushToKillRing](del) { - if (!del || del === this[kKillRing][0]) return; - ArrayPrototypeUnshift.call(this[kKillRing], del); - this[kKillRingCursor] = 0; - while (this[kKillRing].length > kMaxLengthOfKillRing) ArrayPrototypePop.call(this[kKillRing]); - } - - [kYank]() { - if (this[kKillRing].length > 0) { - this[kYanking] = true; - this[kInsertString](this[kKillRing][this[kKillRingCursor]]); - } - } - - [kYankPop]() { - if (!this[kYanking]) { - return; - } - if (this[kKillRing].length > 1) { - var lastYank = this[kKillRing][this[kKillRingCursor]]; - this[kKillRingCursor]++; - if (this[kKillRingCursor] >= this[kKillRing].length) { - this[kKillRingCursor] = 0; - } - var currentYank = this[kKillRing][this[kKillRingCursor]]; - var head = StringPrototypeSlice.call(this.line, 0, this.cursor - lastYank.length); - var tail = StringPrototypeSlice.call(this.line, this.cursor); - this.line = head + currentYank + tail; - this.cursor = head.length + currentYank.length; - this[kRefreshLine](); - } - } - - clearLine() { - this[kMoveCursor](+Infinity); - this[kWriteToOutput]("\r\n"); - this.line = ""; - this.cursor = 0; - this.prevRows = 0; - } - - [kLine]() { - var line = this[kAddHistory](); - this[kUndoStack] = []; - this[kRedoStack] = []; - this.clearLine(); - this[kOnLine](line); - } - - [kPushToUndoStack](text, cursor) { - if (ArrayPrototypePush.call(this[kUndoStack], { text, cursor }) > kMaxUndoRedoStackSize) { - ArrayPrototypeShift.call(this[kUndoStack]); - } - } - - [kUndo]() { - if (this[kUndoStack].length <= 0) return; - - ArrayPrototypePush.call(this[kRedoStack], { - text: this.line, - cursor: this.cursor, - }); - - var entry = ArrayPrototypePop.call(this[kUndoStack]); - this.line = entry.text; - this.cursor = entry.cursor; - - this[kRefreshLine](); - } - - [kRedo]() { - if (this[kRedoStack].length <= 0) return; - - ArrayPrototypePush.call(this[kUndoStack], { - text: this.line, - cursor: this.cursor, - }); - - var entry = ArrayPrototypePop.call(this[kRedoStack]); - this.line = entry.text; - this.cursor = entry.cursor; - - this[kRefreshLine](); - } - - [kHistoryNext]() { - if (this.historyIndex >= 0) { - this[kBeforeEdit](this.line, this.cursor); - var search = this[kSubstringSearch] || ""; - var index = this.historyIndex - 1; - while ( - index >= 0 && - (!StringPrototypeStartsWith.call(this.history[index], search) || this.line === this.history[index]) - ) { - index--; - } - if (index === -1) { - this.line = search; - } else { - this.line = this.history[index]; - } - this.historyIndex = index; - this.cursor = this.line.length; // Set cursor to end of line. - this[kRefreshLine](); - } - } - - [kHistoryPrev]() { - if (this.historyIndex < this.history.length && this.history.length) { - this[kBeforeEdit](this.line, this.cursor); - var search = this[kSubstringSearch] || ""; - var index = this.historyIndex + 1; - while ( - index < this.history.length && - (!StringPrototypeStartsWith.call(this.history[index], search) || this.line === this.history[index]) - ) { - index++; - } - if (index === this.history.length) { - this.line = search; - } else { - this.line = this.history[index]; - } - this.historyIndex = index; - this.cursor = this.line.length; // Set cursor to end of line. - this[kRefreshLine](); - } - } - - // Returns the last character's display position of the given string - [kGetDisplayPos](str) { - var offset = 0; - var col = this.columns; - var rows = 0; - str = stripVTControlCharacters(str); - for (var char of new SafeStringIterator(str)) { - if (char === "\n") { - // Rows must be incremented by 1 even if offset = 0 or col = +Infinity. - rows += MathCeil(offset / col) || 1; - offset = 0; - continue; - } - // Tabs must be aligned by an offset of the tab size. - if (char === "\t") { - offset += this.tabSize - (offset % this.tabSize); - continue; - } - var width = getStringWidth(char, false /* stripVTControlCharacters */); - if (width === 0 || width === 1) { - offset += width; - } else { - // width === 2 - if ((offset + 1) % col === 0) { - offset++; - } - offset += 2; - } - } - var cols = offset % col; - rows += (offset - cols) / col; - return { cols, rows }; - } - - /** - * Returns the real position of the cursor in relation - * to the input prompt + string. - * @returns {{ - * rows: number; - * cols: number; - * }} - */ - getCursorPos() { - var strBeforeCursor = this[kPrompt] + StringPrototypeSlice.call(this.line, 0, this.cursor); - return this[kGetDisplayPos](strBeforeCursor); - } - - // This function moves cursor dx places to the right - // (-dx for left) and refreshes the line if it is needed. - [kMoveCursor](dx) { - if (dx === 0) { - return; - } - var oldPos = this.getCursorPos(); - this.cursor += dx; - - // Bounds check - if (this.cursor < 0) { - this.cursor = 0; - } else if (this.cursor > this.line.length) { - this.cursor = this.line.length; - } - - var newPos = this.getCursorPos(); - - // Check if cursor stayed on the line. - if (oldPos.rows === newPos.rows) { - var diffWidth = newPos.cols - oldPos.cols; - moveCursor(this.output, diffWidth, 0); - } else { - this[kRefreshLine](); - } - } - - // Handle a write from the tty - [kTtyWrite](s, key) { - var previousKey = this[kPreviousKey]; - key = key || kEmptyObject; - this[kPreviousKey] = key; - var { name: keyName, meta: keyMeta, ctrl: keyCtrl, shift: keyShift, sequence: keySeq } = key; - - if (!keyMeta || keyName !== "y") { - // Reset yanking state unless we are doing yank pop. - this[kYanking] = false; - } - - // Activate or deactivate substring search. - if ((keyName === "up" || keyName === "down") && !keyCtrl && !keyMeta && !keyShift) { - if (this[kSubstringSearch] === null) { - this[kSubstringSearch] = StringPrototypeSlice.call(this.line, 0, this.cursor); - } - } else if (this[kSubstringSearch] !== null) { - this[kSubstringSearch] = null; - // Reset the index in case there's no match. - if (this.history.length === this.historyIndex) { - this.historyIndex = -1; - } - } - - // Undo & Redo - if (typeof keySeq === "string") { - switch (StringPrototypeCodePointAt.call(keySeq, 0)) { - case 0x1f: - this[kUndo](); - return; - case 0x1e: - this[kRedo](); - return; - default: - break; - } - } - - // Ignore escape key, fixes - // https://github.com/nodejs/node-v0.x-archive/issues/2876. - if (keyName === "escape") return; - - if (keyCtrl && keyShift) { - /* Control and shift pressed */ - switch (keyName) { - // TODO(BridgeAR): The transmitted escape sequence is `\b` and that is - // identical to <ctrl>-h. It should have a unique escape sequence. - case "backspace": - this[kDeleteLineLeft](); - break; - - case "delete": - this[kDeleteLineRight](); - break; - } - } else if (keyCtrl) { - /* Control key pressed */ - - switch (keyName) { - case "c": - if (this.listenerCount("SIGINT") > 0) { - this.emit("SIGINT"); - } else { - // This readline instance is finished - this.close(); - } - break; - - case "h": // delete left - this[kDeleteLeft](); - break; - - case "d": // delete right or EOF - if (this.cursor === 0 && this.line.length === 0) { - // This readline instance is finished - this.close(); - } else if (this.cursor < this.line.length) { - this[kDeleteRight](); - } - break; - - case "u": // Delete from current to start of line - this[kDeleteLineLeft](); - break; - - case "k": // Delete from current to end of line - this[kDeleteLineRight](); - break; - - case "a": // Go to the start of the line - this[kMoveCursor](-Infinity); - break; - - case "e": // Go to the end of the line - this[kMoveCursor](+Infinity); - break; - - case "b": // back one character - this[kMoveCursor](-charLengthLeft(this.line, this.cursor)); - break; - - case "f": // Forward one character - this[kMoveCursor](+charLengthAt(this.line, this.cursor)); - break; - - case "l": // Clear the whole screen - cursorTo(this.output, 0, 0); - clearScreenDown(this.output); - this[kRefreshLine](); - break; - - case "n": // next history item - this[kHistoryNext](); - break; - - case "p": // Previous history item - this[kHistoryPrev](); - break; - - case "y": // Yank killed string - this[kYank](); - break; - - case "z": - if (process.platform === "win32") break; - if (this.listenerCount("SIGTSTP") > 0) { - this.emit("SIGTSTP"); - } else { - process.once("SIGCONT", () => { - // Don't raise events if stream has already been abandoned. - if (!this.paused) { - // Stream must be paused and resumed after SIGCONT to catch - // SIGINT, SIGTSTP, and EOF. - this.pause(); - this.emit("SIGCONT"); - } - // Explicitly re-enable "raw mode" and move the cursor to - // the correct position. - // See https://github.com/joyent/node/issues/3295. - this[kSetRawMode](true); - this[kRefreshLine](); - }); - this[kSetRawMode](false); - process.kill(process.pid, "SIGTSTP"); - } - break; - - case "w": // Delete backwards to a word boundary - case "backspace": - this[kDeleteWordLeft](); - break; - - case "delete": // Delete forward to a word boundary - this[kDeleteWordRight](); - break; - - case "left": - this[kWordLeft](); - break; - - case "right": - this[kWordRight](); - break; - } - } else if (keyMeta) { - /* Meta key pressed */ - - switch (keyName) { - case "b": // backward word - this[kWordLeft](); - break; - - case "f": // forward word - this[kWordRight](); - break; - - case "d": // delete forward word - case "delete": - this[kDeleteWordRight](); - break; - - case "backspace": // Delete backwards to a word boundary - this[kDeleteWordLeft](); - break; - - case "y": // Doing yank pop - this[kYankPop](); - break; - } - } else { - /* No modifier keys used */ - - // \r bookkeeping is only relevant if a \n comes right after. - if (this[kSawReturnAt] && keyName !== "enter") this[kSawReturnAt] = 0; - - switch (keyName) { - case "return": // Carriage return, i.e. \r - this[kSawReturnAt] = DateNow(); - this[kLine](); - break; - - case "enter": - // When key interval > crlfDelay - if (this[kSawReturnAt] === 0 || DateNow() - this[kSawReturnAt] > this.crlfDelay) { - this[kLine](); - } - this[kSawReturnAt] = 0; - break; - - case "backspace": - this[kDeleteLeft](); - break; - - case "delete": - this[kDeleteRight](); - break; - - case "left": - // Obtain the code point to the left - this[kMoveCursor](-charLengthLeft(this.line, this.cursor)); - break; - - case "right": - this[kMoveCursor](+charLengthAt(this.line, this.cursor)); - break; - - case "home": - this[kMoveCursor](-Infinity); - break; - - case "end": - this[kMoveCursor](+Infinity); - break; - - case "up": - this[kHistoryPrev](); - break; - - case "down": - this[kHistoryNext](); - break; - - case "tab": - // If tab completion enabled, do that... - if (typeof this.completer === "function" && this.isCompletionEnabled) { - var lastKeypressWasTab = previousKey && previousKey.name === "tab"; - this[kTabComplete](lastKeypressWasTab); - break; - } - // falls through - default: - if (typeof s === "string" && s) { - var nextMatch = RegExpPrototypeExec.call(lineEnding, s); - if (nextMatch !== null) { - this[kInsertString](StringPrototypeSlice.call(s, 0, nextMatch.index)); - var { lastIndex } = lineEnding; - while ((nextMatch = RegExpPrototypeExec.call(lineEnding, s)) !== null) { - this[kLine](); - this[kInsertString](StringPrototypeSlice.call(s, lastIndex, nextMatch.index)); - ({ lastIndex } = lineEnding); - } - if (lastIndex === s.length) this[kLine](); - } else { - this[kInsertString](s); - } - } - } - } - } - - /** - * Creates an `AsyncIterator` object that iterates through - * each line in the input stream as a string. - * @typedef {{ - * [Symbol.asyncIterator]: () => InterfaceAsyncIterator, - * next: () => Promise<string> - * }} InterfaceAsyncIterator - * @returns {InterfaceAsyncIterator} - */ - [SymbolAsyncIterator]() { - if (this[kLineObjectStream] === undefined) { - this[kLineObjectStream] = EventEmitter.on(this, "line", { - close: ["close"], - highWatermark: 1024, - [kFirstEventParam]: true, - }); - } - return this[kLineObjectStream]; - } -}; - -function Interface(input, output, completer, terminal) { - if (!(this instanceof Interface)) { - return new Interface(input, output, completer, terminal); - } - - if (input?.input && typeof input.completer === "function" && input.completer.length !== 2) { - var { completer } = input; - input.completer = (v, cb) => cb(null, completer(v)); - } else if (typeof completer === "function" && completer.length !== 2) { - var realCompleter = completer; - completer = (v, cb) => cb(null, realCompleter(v)); - } - - InterfaceConstructor.call(this, input, output, completer, terminal); - - // TODO: Test this - if (process.env.TERM === "dumb") { - this._ttyWrite = _ttyWriteDumb.bind(this); - } -} - -ObjectSetPrototypeOf(Interface.prototype, _Interface.prototype); -ObjectSetPrototypeOf(Interface, _Interface); - -/** - * Displays `query` by writing it to the `output`. - * @param {string} query - * @param {{ signal?: AbortSignal; }} [options] - * @param {Function} cb - * @returns {void} - */ -Interface.prototype.question = function question(query, options, cb) { - cb = typeof options === "function" ? options : cb; - if (options === null || typeof options !== "object") { - options = kEmptyObject; - } - - var signal = options?.signal; - if (signal) { - validateAbortSignal(signal, "options.signal"); - if (signal.aborted) { - return; - } - - var onAbort = () => { - this[kQuestionCancel](); - }; - signal.addEventListener("abort", onAbort, { once: true }); - var cleanup = () => { - signal.removeEventListener("abort", onAbort); - }; - var originalCb = cb; - cb = - typeof cb === "function" - ? answer => { - cleanup(); - return originalCb(answer); - } - : cleanup; - } - - if (typeof cb === "function") { - this[kQuestion](query, cb); - } -}; - -Interface.prototype.question[promisify.custom] = function question(query, options) { - if (options === null || typeof options !== "object") { - options = kEmptyObject; - } - - var signal = options?.signal; - - if (signal && signal.aborted) { - return PromiseReject(new AbortError(undefined, { cause: signal.reason })); - } - - return new Promise((resolve, reject) => { - var cb = resolve; - if (signal) { - var onAbort = () => { - reject(new AbortError(undefined, { cause: signal.reason })); - }; - signal.addEventListener("abort", onAbort, { once: true }); - cb = answer => { - signal.removeEventListener("abort", onAbort); - resolve(answer); - }; - } - this.question(query, options, cb); - }); -}; - -/** - * Creates a new `readline.Interface` instance. - * @param {Readable | { - * input: Readable; - * output: Writable; - * completer?: Function; - * terminal?: boolean; - * history?: string[]; - * historySize?: number; - * removeHistoryDuplicates?: boolean; - * prompt?: string; - * crlfDelay?: number; - * escapeCodeTimeout?: number; - * tabSize?: number; - * signal?: AbortSignal; - * }} input - * @param {Writable} [output] - * @param {Function} [completer] - * @param {boolean} [terminal] - * @returns {Interface} - */ -function createInterface(input, output, completer, terminal) { - return new Interface(input, output, completer, terminal); -} - -ObjectDefineProperties(Interface.prototype, { - // Redirect internal prototype methods to the underscore notation for backward - // compatibility. - [kSetRawMode]: { - __proto__: null, - get() { - return this._setRawMode; - }, - }, - [kOnLine]: { - __proto__: null, - get() { - return this._onLine; - }, - }, - [kWriteToOutput]: { - __proto__: null, - get() { - return this._writeToOutput; - }, - }, - [kAddHistory]: { - __proto__: null, - get() { - return this._addHistory; - }, - }, - [kRefreshLine]: { - __proto__: null, - get() { - return this._refreshLine; - }, - }, - [kNormalWrite]: { - __proto__: null, - get() { - return this._normalWrite; - }, - }, - [kInsertString]: { - __proto__: null, - get() { - return this._insertString; - }, - }, - [kTabComplete]: { - __proto__: null, - get() { - return this._tabComplete; - }, - }, - [kWordLeft]: { - __proto__: null, - get() { - return this._wordLeft; - }, - }, - [kWordRight]: { - __proto__: null, - get() { - return this._wordRight; - }, - }, - [kDeleteLeft]: { - __proto__: null, - get() { - return this._deleteLeft; - }, - }, - [kDeleteRight]: { - __proto__: null, - get() { - return this._deleteRight; - }, - }, - [kDeleteWordLeft]: { - __proto__: null, - get() { - return this._deleteWordLeft; - }, - }, - [kDeleteWordRight]: { - __proto__: null, - get() { - return this._deleteWordRight; - }, - }, - [kDeleteLineLeft]: { - __proto__: null, - get() { - return this._deleteLineLeft; - }, - }, - [kDeleteLineRight]: { - __proto__: null, - get() { - return this._deleteLineRight; - }, - }, - [kLine]: { - __proto__: null, - get() { - return this._line; - }, - }, - [kHistoryNext]: { - __proto__: null, - get() { - return this._historyNext; - }, - }, - [kHistoryPrev]: { - __proto__: null, - get() { - return this._historyPrev; - }, - }, - [kGetDisplayPos]: { - __proto__: null, - get() { - return this._getDisplayPos; - }, - }, - [kMoveCursor]: { - __proto__: null, - get() { - return this._moveCursor; - }, - }, - [kTtyWrite]: { - __proto__: null, - get() { - return this._ttyWrite; - }, - }, - - // Defining proxies for the internal instance properties for backward - // compatibility. - _decoder: { - __proto__: null, - get() { - return this[kDecoder]; - }, - set(value) { - this[kDecoder] = value; - }, - }, - _line_buffer: { - __proto__: null, - get() { - return this[kLine_buffer]; - }, - set(value) { - this[kLine_buffer] = value; - }, - }, - _oldPrompt: { - __proto__: null, - get() { - return this[kOldPrompt]; - }, - set(value) { - this[kOldPrompt] = value; - }, - }, - _previousKey: { - __proto__: null, - get() { - return this[kPreviousKey]; - }, - set(value) { - this[kPreviousKey] = value; - }, - }, - _prompt: { - __proto__: null, - get() { - return this[kPrompt]; - }, - set(value) { - this[kPrompt] = value; - }, - }, - _questionCallback: { - __proto__: null, - get() { - return this[kQuestionCallback]; - }, - set(value) { - this[kQuestionCallback] = value; - }, - }, - _sawKeyPress: { - __proto__: null, - get() { - return this[kSawKeyPress]; - }, - set(value) { - this[kSawKeyPress] = value; - }, - }, - _sawReturnAt: { - __proto__: null, - get() { - return this[kSawReturnAt]; - }, - set(value) { - this[kSawReturnAt] = value; - }, - }, -}); - -// Make internal methods public for backward compatibility. -Interface.prototype._setRawMode = _Interface.prototype[kSetRawMode]; -Interface.prototype._onLine = _Interface.prototype[kOnLine]; -Interface.prototype._writeToOutput = _Interface.prototype[kWriteToOutput]; -Interface.prototype._addHistory = _Interface.prototype[kAddHistory]; -Interface.prototype._refreshLine = _Interface.prototype[kRefreshLine]; -Interface.prototype._normalWrite = _Interface.prototype[kNormalWrite]; -Interface.prototype._insertString = _Interface.prototype[kInsertString]; -Interface.prototype._tabComplete = function (lastKeypressWasTab) { - // Overriding parent method because `this.completer` in the legacy - // implementation takes a callback instead of being an async function. - this.pause(); - var string = StringPrototypeSlice.call(this.line, 0, this.cursor); - this.completer(string, (err, value) => { - this.resume(); - - if (err) { - this._writeToOutput(`Tab completion error: ${inspect(err)}`); - return; - } - - this[kTabCompleter](lastKeypressWasTab, value); - }); -}; -Interface.prototype._wordLeft = _Interface.prototype[kWordLeft]; -Interface.prototype._wordRight = _Interface.prototype[kWordRight]; -Interface.prototype._deleteLeft = _Interface.prototype[kDeleteLeft]; -Interface.prototype._deleteRight = _Interface.prototype[kDeleteRight]; -Interface.prototype._deleteWordLeft = _Interface.prototype[kDeleteWordLeft]; -Interface.prototype._deleteWordRight = _Interface.prototype[kDeleteWordRight]; -Interface.prototype._deleteLineLeft = _Interface.prototype[kDeleteLineLeft]; -Interface.prototype._deleteLineRight = _Interface.prototype[kDeleteLineRight]; -Interface.prototype._line = _Interface.prototype[kLine]; -Interface.prototype._historyNext = _Interface.prototype[kHistoryNext]; -Interface.prototype._historyPrev = _Interface.prototype[kHistoryPrev]; -Interface.prototype._getDisplayPos = _Interface.prototype[kGetDisplayPos]; -Interface.prototype._getCursorPos = _Interface.prototype.getCursorPos; -Interface.prototype._moveCursor = _Interface.prototype[kMoveCursor]; -Interface.prototype._ttyWrite = _Interface.prototype[kTtyWrite]; - -function _ttyWriteDumb(s, key) { - key = key || kEmptyObject; - - if (key.name === "escape") return; - - if (this[kSawReturnAt] && key.name !== "enter") this[kSawReturnAt] = 0; - - if (keyCtrl) { - if (key.name === "c") { - if (this.listenerCount("SIGINT") > 0) { - this.emit("SIGINT"); - } else { - // This readline instance is finished - this.close(); - } - - return; - } else if (key.name === "d") { - this.close(); - return; - } - } - - switch (key.name) { - case "return": // Carriage return, i.e. \r - this[kSawReturnAt] = DateNow(); - this._line(); - break; - - case "enter": - // When key interval > crlfDelay - if (this[kSawReturnAt] === 0 || DateNow() - this[kSawReturnAt] > this.crlfDelay) { - this._line(); - } - this[kSawReturnAt] = 0; - break; - - default: - if (typeof s === "string" && s) { - this.line += s; - this.cursor += s.length; - this._writeToOutput(s); - } - } -} - -class Readline { - #autoCommit = false; - #stream; - #todo = []; - - constructor(stream, options = undefined) { - isWritable ??= import.meta.require("node:stream").isWritable; - if (!isWritable(stream)) throw new ERR_INVALID_ARG_TYPE("stream", "Writable", stream); - this.#stream = stream; - if (options?.autoCommit != null) { - validateBoolean(options.autoCommit, "options.autoCommit"); - this.#autoCommit = options.autoCommit; - } - } - - /** - * Moves the cursor to the x and y coordinate on the given stream. - * @param {integer} x - * @param {integer} [y] - * @returns {Readline} this - */ - cursorTo(x, y = undefined) { - validateInteger(x, "x"); - if (y != null) validateInteger(y, "y"); - - var data = y == null ? CSI`${x + 1}G` : CSI`${y + 1};${x + 1}H`; - if (this.#autoCommit) process.nextTick(() => this.#stream.write(data)); - else ArrayPrototypePush.call(this.#todo, data); - - return this; - } - - /** - * Moves the cursor relative to its current location. - * @param {integer} dx - * @param {integer} dy - * @returns {Readline} this - */ - moveCursor(dx, dy) { - if (dx || dy) { - validateInteger(dx, "dx"); - validateInteger(dy, "dy"); - - var data = ""; - - if (dx < 0) { - data += CSI`${-dx}D`; - } else if (dx > 0) { - data += CSI`${dx}C`; - } - - if (dy < 0) { - data += CSI`${-dy}A`; - } else if (dy > 0) { - data += CSI`${dy}B`; - } - if (this.#autoCommit) process.nextTick(() => this.#stream.write(data)); - else ArrayPrototypePush.call(this.#todo, data); - } - return this; - } - - /** - * Clears the current line the cursor is on. - * @param {-1|0|1} dir Direction to clear: - * -1 for left of the cursor - * +1 for right of the cursor - * 0 for the entire line - * @returns {Readline} this - */ - clearLine(dir) { - validateInteger(dir, "dir", -1, 1); - - var data = dir < 0 ? kClearToLineBeginning : dir > 0 ? kClearToLineEnd : kClearLine; - if (this.#autoCommit) process.nextTick(() => this.#stream.write(data)); - else ArrayPrototypePush.call(this.#todo, data); - return this; - } - - /** - * Clears the screen from the current position of the cursor down. - * @returns {Readline} this - */ - clearScreenDown() { - if (this.#autoCommit) { - process.nextTick(() => this.#stream.write(kClearScreenDown)); - } else { - ArrayPrototypePush.call(this.#todo, kClearScreenDown); - } - return this; - } - - /** - * Sends all the pending actions to the associated `stream` and clears the - * internal list of pending actions. - * @returns {Promise<void>} Resolves when all pending actions have been - * flushed to the associated `stream`. - */ - commit() { - return new Promise(resolve => { - this.#stream.write(ArrayPrototypeJoin.call(this.#todo, ""), resolve); - this.#todo = []; - }); - } - - /** - * Clears the internal list of pending actions without sending it to the - * associated `stream`. - * @returns {Readline} this - */ - rollback() { - this.#todo = []; - return this; - } -} - -var PromisesInterface = class Interface extends _Interface { - // eslint-disable-next-line no-useless-constructor - constructor(input, output, completer, terminal) { - super(input, output, completer, terminal); - } - question(query, options = kEmptyObject) { - var signal = options?.signal; - if (signal) { - validateAbortSignal(signal, "options.signal"); - if (signal.aborted) { - return PromiseReject(new AbortError(undefined, { cause: signal.reason })); - } - } - return new Promise((resolve, reject) => { - var cb = resolve; - if (options?.signal) { - var onAbort = () => { - this[kQuestionCancel](); - reject(new AbortError(undefined, { cause: signal.reason })); - }; - signal.addEventListener("abort", onAbort, { once: true }); - cb = answer => { - signal.removeEventListener("abort", onAbort); - resolve(answer); - }; - } - this[kQuestion](query, cb); - }); - } -}; - -// ---------------------------------------------------------------------------- -// Exports -// ---------------------------------------------------------------------------- -export var Interface = Interface; -export var clearLine = clearLine; -export var clearScreenDown = clearScreenDown; -export var createInterface = createInterface; -export var cursorTo = cursorTo; -export var emitKeypressEvents = emitKeypressEvents; -export var moveCursor = moveCursor; -export var promises = { - Readline, - Interface: PromisesInterface, - createInterface(input, output, completer, terminal) { - return new PromisesInterface(input, output, completer, terminal); - }, -}; - -export default { - Interface, - clearLine, - clearScreenDown, - createInterface, - cursorTo, - emitKeypressEvents, - moveCursor, - promises, - - [SymbolFor("__BUN_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED__")]: { - CSI, - utils: { - getStringWidth, - stripVTControlCharacters, - }, - }, - [SymbolFor("CommonJS")]: 0, -}; diff --git a/src/bun.js/readline_promises.exports.js b/src/bun.js/readline_promises.exports.js deleted file mode 100644 index b3cd52584..000000000 --- a/src/bun.js/readline_promises.exports.js +++ /dev/null @@ -1,10 +0,0 @@ -var { - promises: { Readline, Interface, createInterface }, -} = import.meta.require("node:readline"); - -export default { - Readline, - Interface, - createInterface, - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/repl.exports.js b/src/bun.js/repl.exports.js deleted file mode 100644 index 35f500de3..000000000 --- a/src/bun.js/repl.exports.js +++ /dev/null @@ -1,85 +0,0 @@ -// This is a stub! None of this is actually implemented yet. -// It only exists to make some packages which import this module work. - -class NotImplementedYet extends Error { - constructor(message = "node:repl is not implemented yet in Bun") { - super(message); - this.name = "NotImplementedYet"; - } -} - -function REPLServer() { - throw new NotImplementedYet("REPLServer is not implemented yet in Bun"); -} - -function Recoverable() { - throw new NotImplementedYet("Recoverable is not implemented yet in Bun"); -} - -var REPL_MODE_SLOPPY = 0, - REPL_MODE_STRICT = 1; - -function start() { - throw new NotImplementedYet(); -} - -var repl = { - [Symbol.for("CommonJS")]: 0, - lines: [], - context: globalThis, - historyIndex: -1, - cursor: 0, - historySize: 1000, - removeHistoryDuplicates: false, - crlfDelay: 100, - completer: () => { - throw new NotImplementedYet(); - }, - history: [], - _initialPrompt: "> ", - terminal: true, - input: new Proxy( - {}, - { - get() { - throw new NotImplementedYet(); - }, - has: () => false, - ownKeys: () => [], - getOwnPropertyDescriptor: () => undefined, - set() { - throw new NotImplementedYet(); - }, - }, - ), - line: "", - eval: () => { - throw new NotImplementedYet(); - }, - isCompletionEnabled: true, - escapeCodeTimeout: 500, - tabSize: 8, - breakEvalOnSigint: true, - useGlobal: true, - underscoreAssigned: false, - last: undefined, - _domain: undefined, - allowBlockingCompletions: false, - useColors: true, - output: new Proxy( - {}, - { - get() { - throw new NotImplementedYet(); - }, - has: () => false, - ownKeys: () => [], - getOwnPropertyDescriptor: () => undefined, - set() { - throw new NotImplementedYet(); - }, - }, - ), -}; - -export { repl as default, repl, REPLServer, Recoverable, REPL_MODE_SLOPPY, REPL_MODE_STRICT, start }; diff --git a/src/bun.js/streams.exports.js b/src/bun.js/streams.exports.js deleted file mode 100644 index 9e579eb2b..000000000 --- a/src/bun.js/streams.exports.js +++ /dev/null @@ -1,5656 +0,0 @@ -// "readable-stream" npm package -// just transpiled -var { isPromise, isCallable, direct, Object } = import.meta.primordials; - -globalThis.__IDS_TO_TRACK = process.env.DEBUG_TRACK_EE?.length - ? process.env.DEBUG_TRACK_EE.split(",") - : process.env.DEBUG_STREAMS?.length - ? process.env.DEBUG_STREAMS.split(",") - : null; - -// Separating DEBUG, DEBUG_STREAMS and DEBUG_TRACK_EE env vars makes it easier to focus on the -// events in this file rather than all debug output across all files - -// You can include comma-delimited IDs as the value to either DEBUG_STREAMS or DEBUG_TRACK_EE and it will track -// The events and/or all of the outputs for the given stream IDs assigned at stream construction -// By default, child_process gives - -const __TRACK_EE__ = !!process.env.DEBUG_TRACK_EE; -const __DEBUG__ = !!(process.env.DEBUG || process.env.DEBUG_STREAMS || __TRACK_EE__); - -var debug = __DEBUG__ - ? globalThis.__IDS_TO_TRACK - ? // If we are tracking IDs for debug event emitters, we should prefix the debug output with the ID - (...args) => { - const lastItem = args[args.length - 1]; - if (!globalThis.__IDS_TO_TRACK.includes(lastItem)) return; - console.log(`ID: ${lastItem}`, ...args.slice(0, -1)); - } - : (...args) => console.log(...args.slice(0, -1)) - : () => {}; - -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __ObjectSetPrototypeOf = Object.setPrototypeOf; -var __require = x => import.meta.require(x); - -var _EE = __require("bun:events_native"); - -function DebugEventEmitter(opts) { - if (!(this instanceof DebugEventEmitter)) return new DebugEventEmitter(opts); - _EE.call(this, opts); - const __id = opts.__id; - if (__id) { - __defProp(this, "__id", { - value: __id, - readable: true, - writable: false, - enumerable: false, - }); - } -} - -__ObjectSetPrototypeOf(DebugEventEmitter.prototype, _EE.prototype); -__ObjectSetPrototypeOf(DebugEventEmitter, _EE); - -DebugEventEmitter.prototype.emit = function (event, ...args) { - var __id = this.__id; - if (__id) { - debug("emit", event, ...args, __id); - } else { - debug("emit", event, ...args); - } - return _EE.prototype.emit.call(this, event, ...args); -}; -DebugEventEmitter.prototype.on = function (event, handler) { - var __id = this.__id; - if (__id) { - debug("on", event, "added", __id); - } else { - debug("on", event, "added"); - } - return _EE.prototype.on.call(this, event, handler); -}; -DebugEventEmitter.prototype.addListener = function (event, handler) { - return this.on(event, handler); -}; - -var __commonJS = (cb, mod) => - function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; -var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - set: val => (from[key] = val), - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - configurable: true, - }); - } - return to; -}; - -var runOnNextTick = process.nextTick; - -function isReadableStream(value) { - return typeof value === "object" && value !== null && value instanceof ReadableStream; -} - -function validateBoolean(value, name) { - if (typeof value !== "boolean") throw new ERR_INVALID_ARG_TYPE(name, "boolean", value); -} - -/** - * @callback validateObject - * @param {*} value - * @param {string} name - * @param {{ - * allowArray?: boolean, - * allowFunction?: boolean, - * nullable?: boolean - * }} [options] - */ - -/** @type {validateObject} */ -const validateObject = (value, name, options = null) => { - const allowArray = options?.allowArray ?? false; - const allowFunction = options?.allowFunction ?? false; - const nullable = options?.nullable ?? false; - if ( - (!nullable && value === null) || - (!allowArray && ArrayIsArray(value)) || - (typeof value !== "object" && (!allowFunction || typeof value !== "function")) - ) { - throw new ERR_INVALID_ARG_TYPE(name, "Object", value); - } -}; - -/** - * @callback validateString - * @param {*} value - * @param {string} name - * @returns {asserts value is string} - */ - -/** @type {validateString} */ -function validateString(value, name) { - if (typeof value !== "string") throw new ERR_INVALID_ARG_TYPE(name, "string", value); -} - -var ArrayIsArray = Array.isArray; - -//------------------------------------------------------------------------------ -// Node error polyfills -//------------------------------------------------------------------------------ - -function ERR_INVALID_ARG_TYPE(name, type, value) { - return new Error(`The argument '${name}' is invalid. Received '${value}' for type '${type}'`); -} - -function ERR_INVALID_ARG_VALUE(name, value, reason) { - return new Error(`The value '${value}' is invalid for argument '${name}'. Reason: ${reason}`); -} - -// node_modules/readable-stream/lib/ours/primordials.js -var require_primordials = __commonJS({ - "node_modules/readable-stream/lib/ours/primordials.js"(exports, module) { - "use strict"; - module.exports = { - ArrayIsArray(self) { - return Array.isArray(self); - }, - ArrayPrototypeIncludes(self, el) { - return self.includes(el); - }, - ArrayPrototypeIndexOf(self, el) { - return self.indexOf(el); - }, - ArrayPrototypeJoin(self, sep) { - return self.join(sep); - }, - ArrayPrototypeMap(self, fn) { - return self.map(fn); - }, - ArrayPrototypePop(self, el) { - return self.pop(el); - }, - ArrayPrototypePush(self, el) { - return self.push(el); - }, - ArrayPrototypeSlice(self, start, end) { - return self.slice(start, end); - }, - Error, - FunctionPrototypeCall(fn, thisArgs, ...args) { - return fn.call(thisArgs, ...args); - }, - FunctionPrototypeSymbolHasInstance(self, instance) { - return Function.prototype[Symbol.hasInstance].call(self, instance); - }, - MathFloor: Math.floor, - Number, - NumberIsInteger: Number.isInteger, - NumberIsNaN: Number.isNaN, - NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER, - NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER, - NumberParseInt: Number.parseInt, - ObjectDefineProperties(self, props) { - return Object.defineProperties(self, props); - }, - ObjectDefineProperty(self, name, prop) { - return Object.defineProperty(self, name, prop); - }, - ObjectGetOwnPropertyDescriptor(self, name) { - return Object.getOwnPropertyDescriptor(self, name); - }, - ObjectKeys(obj) { - return Object.keys(obj); - }, - ObjectSetPrototypeOf(target, proto) { - return Object.setPrototypeOf(target, proto); - }, - Promise, - PromisePrototypeCatch(self, fn) { - return self.catch(fn); - }, - PromisePrototypeThen(self, thenFn, catchFn) { - return self.then(thenFn, catchFn); - }, - PromiseReject(err) { - return Promise.reject(err); - }, - ReflectApply: Reflect.apply, - RegExpPrototypeTest(self, value) { - return self.test(value); - }, - SafeSet: Set, - String, - StringPrototypeSlice(self, start, end) { - return self.slice(start, end); - }, - StringPrototypeToLowerCase(self) { - return self.toLowerCase(); - }, - StringPrototypeToUpperCase(self) { - return self.toUpperCase(); - }, - StringPrototypeTrim(self) { - return self.trim(); - }, - Symbol, - SymbolAsyncIterator: Symbol.asyncIterator, - SymbolHasInstance: Symbol.hasInstance, - SymbolIterator: Symbol.iterator, - TypedArrayPrototypeSet(self, buf, len) { - return self.set(buf, len); - }, - Uint8Array, - }; - }, -}); -// node_modules/readable-stream/lib/ours/util.js -var require_util = __commonJS({ - "node_modules/readable-stream/lib/ours/util.js"(exports, module) { - "use strict"; - var bufferModule = __require("buffer"); - var AsyncFunction = Object.getPrototypeOf(async function () {}).constructor; - var Blob = globalThis.Blob || bufferModule.Blob; - var isBlob = - typeof Blob !== "undefined" - ? function isBlob2(b) { - return b instanceof Blob; - } - : function isBlob2(b) { - return false; - }; - var AggregateError = class extends Error { - constructor(errors) { - if (!Array.isArray(errors)) { - throw new TypeError(`Expected input to be an Array, got ${typeof errors}`); - } - let message = ""; - for (let i = 0; i < errors.length; i++) { - message += ` ${errors[i].stack} -`; - } - super(message); - this.name = "AggregateError"; - this.errors = errors; - } - }; - module.exports = { - AggregateError, - once(callback) { - let called = false; - return function (...args) { - if (called) { - return; - } - called = true; - callback.apply(this, args); - }; - }, - createDeferredPromise: function () { - let resolve; - let reject; - const promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); - return { - promise, - resolve, - reject, - }; - }, - promisify(fn) { - return new Promise((resolve, reject) => { - fn((err, ...args) => { - if (err) { - return reject(err); - } - return resolve(...args); - }); - }); - }, - debuglog() { - return function () {}; - }, - format(format, ...args) { - return format.replace(/%([sdifj])/g, function (...[_unused, type]) { - const replacement = args.shift(); - if (type === "f") { - return replacement.toFixed(6); - } else if (type === "j") { - return JSON.stringify(replacement); - } else if (type === "s" && typeof replacement === "object") { - const ctor = replacement.constructor !== Object ? replacement.constructor.name : ""; - return `${ctor} {}`.trim(); - } else { - return replacement.toString(); - } - }); - }, - inspect(value) { - switch (typeof value) { - case "string": - if (value.includes("'")) { - if (!value.includes('"')) { - return `"${value}"`; - } else if (!value.includes("`") && !value.includes("${")) { - return `\`${value}\``; - } - } - return `'${value}'`; - case "number": - if (isNaN(value)) { - return "NaN"; - } else if (Object.is(value, -0)) { - return String(value); - } - return value; - case "bigint": - return `${String(value)}n`; - case "boolean": - case "undefined": - return String(value); - case "object": - return "{}"; - } - }, - types: { - isAsyncFunction(fn) { - return fn instanceof AsyncFunction; - }, - isArrayBufferView(arr) { - return ArrayBuffer.isView(arr); - }, - }, - isBlob, - }; - module.exports.promisify.custom = Symbol.for("nodejs.util.promisify.custom"); - }, -}); - -// node_modules/readable-stream/lib/ours/errors.js -var require_errors = __commonJS({ - "node_modules/readable-stream/lib/ours/errors.js"(exports, module) { - "use strict"; - var { format, inspect, AggregateError: CustomAggregateError } = require_util(); - var AggregateError = globalThis.AggregateError || CustomAggregateError; - var kIsNodeError = Symbol("kIsNodeError"); - var kTypes = ["string", "function", "number", "object", "Function", "Object", "boolean", "bigint", "symbol"]; - var classRegExp = /^([A-Z][a-z0-9]*)+$/; - var nodeInternalPrefix = "__node_internal_"; - var codes = {}; - function assert(value, message) { - if (!value) { - throw new codes.ERR_INTERNAL_ASSERTION(message); - } - } - function addNumericalSeparator(val) { - let res = ""; - let i = val.length; - const start = val[0] === "-" ? 1 : 0; - for (; i >= start + 4; i -= 3) { - res = `_${val.slice(i - 3, i)}${res}`; - } - return `${val.slice(0, i)}${res}`; - } - function getMessage(key, msg, args) { - if (typeof msg === "function") { - assert( - msg.length <= args.length, - `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`, - ); - return msg(...args); - } - const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length; - assert( - expectedLength === args.length, - `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`, - ); - if (args.length === 0) { - return msg; - } - return format(msg, ...args); - } - function E(code, message, Base) { - if (!Base) { - Base = Error; - } - class NodeError extends Base { - constructor(...args) { - super(getMessage(code, message, args)); - } - toString() { - return `${this.name} [${code}]: ${this.message}`; - } - } - Object.defineProperties(NodeError.prototype, { - name: { - value: Base.name, - writable: true, - enumerable: false, - configurable: true, - }, - toString: { - value() { - return `${this.name} [${code}]: ${this.message}`; - }, - writable: true, - enumerable: false, - configurable: true, - }, - }); - NodeError.prototype.code = code; - NodeError.prototype[kIsNodeError] = true; - codes[code] = NodeError; - } - function hideStackFrames(fn) { - const hidden = nodeInternalPrefix + fn.name; - Object.defineProperty(fn, "name", { - value: hidden, - }); - return fn; - } - function aggregateTwoErrors(innerError, outerError) { - if (innerError && outerError && innerError !== outerError) { - if (Array.isArray(outerError.errors)) { - outerError.errors.push(innerError); - return outerError; - } - const err = new AggregateError([outerError, innerError], outerError.message); - err.code = outerError.code; - return err; - } - return innerError || outerError; - } - var AbortError = class extends Error { - constructor(message = "The operation was aborted", options = void 0) { - if (options !== void 0 && typeof options !== "object") { - throw new codes.ERR_INVALID_ARG_TYPE("options", "Object", options); - } - super(message, options); - this.code = "ABORT_ERR"; - this.name = "AbortError"; - } - }; - E("ERR_ASSERTION", "%s", Error); - E( - "ERR_INVALID_ARG_TYPE", - (name, expected, actual) => { - assert(typeof name === "string", "'name' must be a string"); - if (!Array.isArray(expected)) { - expected = [expected]; - } - let msg = "The "; - if (name.endsWith(" argument")) { - msg += `${name} `; - } else { - msg += `"${name}" ${name.includes(".") ? "property" : "argument"} `; - } - msg += "must be "; - const types = []; - const instances = []; - const other = []; - for (const value of expected) { - assert(typeof value === "string", "All expected entries have to be of type string"); - if (kTypes.includes(value)) { - types.push(value.toLowerCase()); - } else if (classRegExp.test(value)) { - instances.push(value); - } else { - assert(value !== "object", 'The value "object" should be written as "Object"'); - other.push(value); - } - } - if (instances.length > 0) { - const pos = types.indexOf("object"); - if (pos !== -1) { - types.splice(types, pos, 1); - instances.push("Object"); - } - } - if (types.length > 0) { - switch (types.length) { - case 1: - msg += `of type ${types[0]}`; - break; - case 2: - msg += `one of type ${types[0]} or ${types[1]}`; - break; - default: { - const last = types.pop(); - msg += `one of type ${types.join(", ")}, or ${last}`; - } - } - if (instances.length > 0 || other.length > 0) { - msg += " or "; - } - } - if (instances.length > 0) { - switch (instances.length) { - case 1: - msg += `an instance of ${instances[0]}`; - break; - case 2: - msg += `an instance of ${instances[0]} or ${instances[1]}`; - break; - default: { - const last = instances.pop(); - msg += `an instance of ${instances.join(", ")}, or ${last}`; - } - } - if (other.length > 0) { - msg += " or "; - } - } - switch (other.length) { - case 0: - break; - case 1: - if (other[0].toLowerCase() !== other[0]) { - msg += "an "; - } - msg += `${other[0]}`; - break; - case 2: - msg += `one of ${other[0]} or ${other[1]}`; - break; - default: { - const last = other.pop(); - msg += `one of ${other.join(", ")}, or ${last}`; - } - } - if (actual == null) { - msg += `. Received ${actual}`; - } else if (typeof actual === "function" && actual.name) { - msg += `. Received function ${actual.name}`; - } else if (typeof actual === "object") { - var _actual$constructor; - if ( - (_actual$constructor = actual.constructor) !== null && - _actual$constructor !== void 0 && - _actual$constructor.name - ) { - msg += `. Received an instance of ${actual.constructor.name}`; - } else { - const inspected = inspect(actual, { - depth: -1, - }); - msg += `. Received ${inspected}`; - } - } else { - let inspected = inspect(actual, { - colors: false, - }); - if (inspected.length > 25) { - inspected = `${inspected.slice(0, 25)}...`; - } - msg += `. Received type ${typeof actual} (${inspected})`; - } - return msg; - }, - TypeError, - ); - E( - "ERR_INVALID_ARG_VALUE", - (name, value, reason = "is invalid") => { - let inspected = inspect(value); - if (inspected.length > 128) { - inspected = inspected.slice(0, 128) + "..."; - } - const type = name.includes(".") ? "property" : "argument"; - return `The ${type} '${name}' ${reason}. Received ${inspected}`; - }, - TypeError, - ); - E( - "ERR_INVALID_RETURN_VALUE", - (input, name, value) => { - var _value$constructor; - const type = - value !== null && - value !== void 0 && - (_value$constructor = value.constructor) !== null && - _value$constructor !== void 0 && - _value$constructor.name - ? `instance of ${value.constructor.name}` - : `type ${typeof value}`; - return `Expected ${input} to be returned from the "${name}" function but got ${type}.`; - }, - TypeError, - ); - E( - "ERR_MISSING_ARGS", - (...args) => { - assert(args.length > 0, "At least one arg needs to be specified"); - let msg; - const len = args.length; - args = (Array.isArray(args) ? args : [args]).map(a => `"${a}"`).join(" or "); - switch (len) { - case 1: - msg += `The ${args[0]} argument`; - break; - case 2: - msg += `The ${args[0]} and ${args[1]} arguments`; - break; - default: - { - const last = args.pop(); - msg += `The ${args.join(", ")}, and ${last} arguments`; - } - break; - } - return `${msg} must be specified`; - }, - TypeError, - ); - E( - "ERR_OUT_OF_RANGE", - (str, range, input) => { - assert(range, 'Missing "range" argument'); - let received; - if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) { - received = addNumericalSeparator(String(input)); - } else if (typeof input === "bigint") { - received = String(input); - if (input > 2n ** 32n || input < -(2n ** 32n)) { - received = addNumericalSeparator(received); - } - received += "n"; - } else { - received = inspect(input); - } - return `The value of "${str}" is out of range. It must be ${range}. Received ${received}`; - }, - RangeError, - ); - E("ERR_MULTIPLE_CALLBACK", "Callback called multiple times", Error); - E("ERR_METHOD_NOT_IMPLEMENTED", "The %s method is not implemented", Error); - E("ERR_STREAM_ALREADY_FINISHED", "Cannot call %s after a stream was finished", Error); - E("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable", Error); - E("ERR_STREAM_DESTROYED", "Cannot call %s after a stream was destroyed", Error); - E("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError); - E("ERR_STREAM_PREMATURE_CLOSE", "Premature close", Error); - E("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF", Error); - E("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event", Error); - E("ERR_STREAM_WRITE_AFTER_END", "write after end", Error); - E("ERR_UNKNOWN_ENCODING", "Unknown encoding: %s", TypeError); - module.exports = { - AbortError, - aggregateTwoErrors: hideStackFrames(aggregateTwoErrors), - hideStackFrames, - codes, - }; - }, -}); - -// node_modules/readable-stream/lib/internal/validators.js -var require_validators = __commonJS({ - "node_modules/readable-stream/lib/internal/validators.js"(exports, module) { - "use strict"; - var { - ArrayIsArray, - ArrayPrototypeIncludes, - ArrayPrototypeJoin, - ArrayPrototypeMap, - NumberIsInteger, - NumberMAX_SAFE_INTEGER, - NumberMIN_SAFE_INTEGER, - NumberParseInt, - RegExpPrototypeTest, - String: String2, - StringPrototypeToUpperCase, - StringPrototypeTrim, - } = require_primordials(); - var { - hideStackFrames, - codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }, - } = require_errors(); - var { normalizeEncoding } = require_util(); - var { isAsyncFunction, isArrayBufferView } = require_util().types; - var signals = {}; - function isInt32(value) { - return value === (value | 0); - } - function isUint32(value) { - return value === value >>> 0; - } - var octalReg = /^[0-7]+$/; - var modeDesc = "must be a 32-bit unsigned integer or an octal string"; - function parseFileMode(value, name, def) { - if (typeof value === "undefined") { - value = def; - } - if (typeof value === "string") { - if (!RegExpPrototypeTest(octalReg, value)) { - throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc); - } - value = NumberParseInt(value, 8); - } - validateInt32(value, name, 0, 2 ** 32 - 1); - return value; - } - var validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => { - if (typeof value !== "number") throw new ERR_INVALID_ARG_TYPE(name, "number", value); - if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, "an integer", value); - if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value); - }); - var validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => { - if (typeof value !== "number") { - throw new ERR_INVALID_ARG_TYPE(name, "number", value); - } - if (!isInt32(value)) { - if (!NumberIsInteger(value)) { - throw new ERR_OUT_OF_RANGE(name, "an integer", value); - } - throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value); - } - if (value < min || value > max) { - throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value); - } - }); - var validateUint32 = hideStackFrames((value, name, positive) => { - if (typeof value !== "number") { - throw new ERR_INVALID_ARG_TYPE(name, "number", value); - } - if (!isUint32(value)) { - if (!NumberIsInteger(value)) { - throw new ERR_OUT_OF_RANGE(name, "an integer", value); - } - const min = positive ? 1 : 0; - throw new ERR_OUT_OF_RANGE(name, `>= ${min} && < 4294967296`, value); - } - if (positive && value === 0) { - throw new ERR_OUT_OF_RANGE(name, ">= 1 && < 4294967296", value); - } - }); - function validateString(value, name) { - if (typeof value !== "string") throw new ERR_INVALID_ARG_TYPE(name, "string", value); - } - function validateNumber(value, name) { - if (typeof value !== "number") throw new ERR_INVALID_ARG_TYPE(name, "number", value); - } - var validateOneOf = hideStackFrames((value, name, oneOf) => { - if (!ArrayPrototypeIncludes(oneOf, value)) { - const allowed = ArrayPrototypeJoin( - ArrayPrototypeMap(oneOf, v => (typeof v === "string" ? `'${v}'` : String2(v))), - ", ", - ); - const reason = "must be one of: " + allowed; - throw new ERR_INVALID_ARG_VALUE(name, value, reason); - } - }); - function validateBoolean(value, name) { - if (typeof value !== "boolean") throw new ERR_INVALID_ARG_TYPE(name, "boolean", value); - } - var validateObject = hideStackFrames((value, name, options) => { - const useDefaultOptions = options == null; - const allowArray = useDefaultOptions ? false : options.allowArray; - const allowFunction = useDefaultOptions ? false : options.allowFunction; - const nullable = useDefaultOptions ? false : options.nullable; - if ( - (!nullable && value === null) || - (!allowArray && ArrayIsArray(value)) || - (typeof value !== "object" && (!allowFunction || typeof value !== "function")) - ) { - throw new ERR_INVALID_ARG_TYPE(name, "Object", value); - } - }); - var validateArray = hideStackFrames((value, name, minLength = 0) => { - if (!ArrayIsArray(value)) { - throw new ERR_INVALID_ARG_TYPE(name, "Array", value); - } - if (value.length < minLength) { - const reason = `must be longer than ${minLength}`; - throw new ERR_INVALID_ARG_VALUE(name, value, reason); - } - }); - function validateSignalName(signal, name = "signal") { - validateString(signal, name); - if (signals[signal] === void 0) { - if (signals[StringPrototypeToUpperCase(signal)] !== void 0) { - throw new ERR_UNKNOWN_SIGNAL(signal + " (signals must use all capital letters)"); - } - throw new ERR_UNKNOWN_SIGNAL(signal); - } - } - var validateBuffer = hideStackFrames((buffer, name = "buffer") => { - if (!isArrayBufferView(buffer)) { - throw new ERR_INVALID_ARG_TYPE(name, ["Buffer", "TypedArray", "DataView"], buffer); - } - }); - function validateEncoding(data, encoding) { - const normalizedEncoding = normalizeEncoding(encoding); - const length = data.length; - if (normalizedEncoding === "hex" && length % 2 !== 0) { - throw new ERR_INVALID_ARG_VALUE("encoding", encoding, `is invalid for data of length ${length}`); - } - } - function validatePort(port, name = "Port", allowZero = true) { - if ( - (typeof port !== "number" && typeof port !== "string") || - (typeof port === "string" && StringPrototypeTrim(port).length === 0) || - +port !== +port >>> 0 || - port > 65535 || - (port === 0 && !allowZero) - ) { - throw new ERR_SOCKET_BAD_PORT(name, port, allowZero); - } - return port | 0; - } - var validateAbortSignal = hideStackFrames((signal, name) => { - if (signal !== void 0 && (signal === null || typeof signal !== "object" || !("aborted" in signal))) { - throw new ERR_INVALID_ARG_TYPE(name, "AbortSignal", signal); - } - }); - var validateFunction = hideStackFrames((value, name) => { - if (typeof value !== "function") throw new ERR_INVALID_ARG_TYPE(name, "Function", value); - }); - var validatePlainFunction = hideStackFrames((value, name) => { - if (typeof value !== "function" || isAsyncFunction(value)) - throw new ERR_INVALID_ARG_TYPE(name, "Function", value); - }); - var validateUndefined = hideStackFrames((value, name) => { - if (value !== void 0) throw new ERR_INVALID_ARG_TYPE(name, "undefined", value); - }); - module.exports = { - isInt32, - isUint32, - parseFileMode, - validateArray, - validateBoolean, - validateBuffer, - validateEncoding, - validateFunction, - validateInt32, - validateInteger, - validateNumber, - validateObject, - validateOneOf, - validatePlainFunction, - validatePort, - validateSignalName, - validateString, - validateUint32, - validateUndefined, - validateAbortSignal, - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/utils.js -var require_utils = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/utils.js"(exports, module) { - "use strict"; - var { Symbol: Symbol2, SymbolAsyncIterator, SymbolIterator } = require_primordials(); - var kDestroyed = Symbol2("kDestroyed"); - var kIsErrored = Symbol2("kIsErrored"); - var kIsReadable = Symbol2("kIsReadable"); - var kIsDisturbed = Symbol2("kIsDisturbed"); - function isReadableNodeStream(obj, strict = false) { - var _obj$_readableState; - return !!( - obj && - typeof obj.pipe === "function" && - typeof obj.on === "function" && - (!strict || (typeof obj.pause === "function" && typeof obj.resume === "function")) && - (!obj._writableState || - ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === void 0 - ? void 0 - : _obj$_readableState.readable) !== false) && - (!obj._writableState || obj._readableState) - ); - } - function isWritableNodeStream(obj) { - var _obj$_writableState; - return !!( - obj && - typeof obj.write === "function" && - typeof obj.on === "function" && - (!obj._readableState || - ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === void 0 - ? void 0 - : _obj$_writableState.writable) !== false) - ); - } - function isDuplexNodeStream(obj) { - return !!( - obj && - typeof obj.pipe === "function" && - obj._readableState && - typeof obj.on === "function" && - typeof obj.write === "function" - ); - } - function isNodeStream(obj) { - return ( - obj && - (obj._readableState || - obj._writableState || - (typeof obj.write === "function" && typeof obj.on === "function") || - (typeof obj.pipe === "function" && typeof obj.on === "function")) - ); - } - function isIterable(obj, isAsync) { - if (obj == null) return false; - if (isAsync === true) return typeof obj[SymbolAsyncIterator] === "function"; - if (isAsync === false) return typeof obj[SymbolIterator] === "function"; - return typeof obj[SymbolAsyncIterator] === "function" || typeof obj[SymbolIterator] === "function"; - } - function isDestroyed(stream) { - if (!isNodeStream(stream)) return null; - const wState = stream._writableState; - const rState = stream._readableState; - const state = wState || rState; - return !!(stream.destroyed || stream[kDestroyed] || (state !== null && state !== void 0 && state.destroyed)); - } - function isWritableEnded(stream) { - if (!isWritableNodeStream(stream)) return null; - if (stream.writableEnded === true) return true; - const wState = stream._writableState; - if (wState !== null && wState !== void 0 && wState.errored) return false; - if (typeof (wState === null || wState === void 0 ? void 0 : wState.ended) !== "boolean") return null; - return wState.ended; - } - function isWritableFinished(stream, strict) { - if (!isWritableNodeStream(stream)) return null; - if (stream.writableFinished === true) return true; - const wState = stream._writableState; - if (wState !== null && wState !== void 0 && wState.errored) return false; - if (typeof (wState === null || wState === void 0 ? void 0 : wState.finished) !== "boolean") return null; - return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0)); - } - function isReadableEnded(stream) { - if (!isReadableNodeStream(stream)) return null; - if (stream.readableEnded === true) return true; - const rState = stream._readableState; - if (!rState || rState.errored) return false; - if (typeof (rState === null || rState === void 0 ? void 0 : rState.ended) !== "boolean") return null; - return rState.ended; - } - function isReadableFinished(stream, strict) { - if (!isReadableNodeStream(stream)) return null; - const rState = stream._readableState; - if (rState !== null && rState !== void 0 && rState.errored) return false; - if (typeof (rState === null || rState === void 0 ? void 0 : rState.endEmitted) !== "boolean") return null; - return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0)); - } - function isReadable(stream) { - if (stream && stream[kIsReadable] != null) return stream[kIsReadable]; - if (typeof (stream === null || stream === void 0 ? void 0 : stream.readable) !== "boolean") return null; - if (isDestroyed(stream)) return false; - return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream); - } - function isWritable(stream) { - if (typeof (stream === null || stream === void 0 ? void 0 : stream.writable) !== "boolean") return null; - if (isDestroyed(stream)) return false; - return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream); - } - function isFinished(stream, opts) { - if (!isNodeStream(stream)) { - return null; - } - if (isDestroyed(stream)) { - return true; - } - if ((opts === null || opts === void 0 ? void 0 : opts.readable) !== false && isReadable(stream)) { - return false; - } - if ((opts === null || opts === void 0 ? void 0 : opts.writable) !== false && isWritable(stream)) { - return false; - } - return true; - } - function isWritableErrored(stream) { - var _stream$_writableStat, _stream$_writableStat2; - if (!isNodeStream(stream)) { - return null; - } - if (stream.writableErrored) { - return stream.writableErrored; - } - return (_stream$_writableStat = - (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === void 0 - ? void 0 - : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== void 0 - ? _stream$_writableStat - : null; - } - function isReadableErrored(stream) { - var _stream$_readableStat, _stream$_readableStat2; - if (!isNodeStream(stream)) { - return null; - } - if (stream.readableErrored) { - return stream.readableErrored; - } - return (_stream$_readableStat = - (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === void 0 - ? void 0 - : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== void 0 - ? _stream$_readableStat - : null; - } - function isClosed(stream) { - if (!isNodeStream(stream)) { - return null; - } - if (typeof stream.closed === "boolean") { - return stream.closed; - } - const wState = stream._writableState; - const rState = stream._readableState; - if ( - typeof (wState === null || wState === void 0 ? void 0 : wState.closed) === "boolean" || - typeof (rState === null || rState === void 0 ? void 0 : rState.closed) === "boolean" - ) { - return ( - (wState === null || wState === void 0 ? void 0 : wState.closed) || - (rState === null || rState === void 0 ? void 0 : rState.closed) - ); - } - if (typeof stream._closed === "boolean" && isOutgoingMessage(stream)) { - return stream._closed; - } - return null; - } - function isOutgoingMessage(stream) { - return ( - typeof stream._closed === "boolean" && - typeof stream._defaultKeepAlive === "boolean" && - typeof stream._removedConnection === "boolean" && - typeof stream._removedContLen === "boolean" - ); - } - function isServerResponse(stream) { - return typeof stream._sent100 === "boolean" && isOutgoingMessage(stream); - } - function isServerRequest(stream) { - var _stream$req; - return ( - typeof stream._consuming === "boolean" && - typeof stream._dumped === "boolean" && - ((_stream$req = stream.req) === null || _stream$req === void 0 ? void 0 : _stream$req.upgradeOrConnect) === - void 0 - ); - } - function willEmitClose(stream) { - if (!isNodeStream(stream)) return null; - const wState = stream._writableState; - const rState = stream._readableState; - const state = wState || rState; - return ( - (!state && isServerResponse(stream)) || - !!(state && state.autoDestroy && state.emitClose && state.closed === false) - ); - } - function isDisturbed(stream) { - var _stream$kIsDisturbed; - return !!( - stream && - ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== void 0 - ? _stream$kIsDisturbed - : stream.readableDidRead || stream.readableAborted) - ); - } - function isErrored(stream) { - var _ref, - _ref2, - _ref3, - _ref4, - _ref5, - _stream$kIsErrored, - _stream$_readableStat3, - _stream$_writableStat3, - _stream$_readableStat4, - _stream$_writableStat4; - return !!( - stream && - ((_ref = - (_ref2 = - (_ref3 = - (_ref4 = - (_ref5 = - (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== void 0 - ? _stream$kIsErrored - : stream.readableErrored) !== null && _ref5 !== void 0 - ? _ref5 - : stream.writableErrored) !== null && _ref4 !== void 0 - ? _ref4 - : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === void 0 - ? void 0 - : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== void 0 - ? _ref3 - : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === void 0 - ? void 0 - : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== void 0 - ? _ref2 - : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === void 0 - ? void 0 - : _stream$_readableStat4.errored) !== null && _ref !== void 0 - ? _ref - : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === void 0 - ? void 0 - : _stream$_writableStat4.errored) - ); - } - module.exports = { - kDestroyed, - isDisturbed, - kIsDisturbed, - isErrored, - kIsErrored, - isReadable, - kIsReadable, - isClosed, - isDestroyed, - isDuplexNodeStream, - isFinished, - isIterable, - isReadableNodeStream, - isReadableEnded, - isReadableFinished, - isReadableErrored, - isNodeStream, - isWritable, - isWritableNodeStream, - isWritableEnded, - isWritableFinished, - isWritableErrored, - isServerRequest, - isServerResponse, - willEmitClose, - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/end-of-stream.js -var require_end_of_stream = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(exports, module) { - "use strict"; - var { AbortError, codes } = require_errors(); - var { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes; - var { once } = require_util(); - var { validateAbortSignal, validateFunction, validateObject } = require_validators(); - var { Promise: Promise2 } = require_primordials(); - var { - isClosed, - isReadable, - isReadableNodeStream, - isReadableFinished, - isReadableErrored, - isWritable, - isWritableNodeStream, - isWritableFinished, - isWritableErrored, - isNodeStream, - willEmitClose: _willEmitClose, - } = require_utils(); - function isRequest(stream) { - return stream.setHeader && typeof stream.abort === "function"; - } - var nop = () => {}; - function eos(stream, options, callback) { - var _options$readable, _options$writable; - if (arguments.length === 2) { - callback = options; - options = {}; - } else if (options == null) { - options = {}; - } else { - validateObject(options, "options"); - } - validateFunction(callback, "callback"); - validateAbortSignal(options.signal, "options.signal"); - callback = once(callback); - const readable = - (_options$readable = options.readable) !== null && _options$readable !== void 0 - ? _options$readable - : isReadableNodeStream(stream); - const writable = - (_options$writable = options.writable) !== null && _options$writable !== void 0 - ? _options$writable - : isWritableNodeStream(stream); - if (!isNodeStream(stream)) { - throw new ERR_INVALID_ARG_TYPE("stream", "Stream", stream); - } - const wState = stream._writableState; - const rState = stream._readableState; - const onlegacyfinish = () => { - if (!stream.writable) { - onfinish(); - } - }; - let willEmitClose = - _willEmitClose(stream) && - isReadableNodeStream(stream) === readable && - isWritableNodeStream(stream) === writable; - let writableFinished = isWritableFinished(stream, false); - const onfinish = () => { - writableFinished = true; - if (stream.destroyed) { - willEmitClose = false; - } - if (willEmitClose && (!stream.readable || readable)) { - return; - } - if (!readable || readableFinished) { - callback.call(stream); - } - }; - let readableFinished = isReadableFinished(stream, false); - const onend = () => { - readableFinished = true; - if (stream.destroyed) { - willEmitClose = false; - } - if (willEmitClose && (!stream.writable || writable)) { - return; - } - if (!writable || writableFinished) { - callback.call(stream); - } - }; - const onerror = err => { - callback.call(stream, err); - }; - let closed = isClosed(stream); - const onclose = () => { - closed = true; - const errored = isWritableErrored(stream) || isReadableErrored(stream); - if (errored && typeof errored !== "boolean") { - return callback.call(stream, errored); - } - if (readable && !readableFinished && isReadableNodeStream(stream, true)) { - if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE()); - } - if (writable && !writableFinished) { - if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE()); - } - callback.call(stream); - }; - const onrequest = () => { - stream.req.on("finish", onfinish); - }; - if (isRequest(stream)) { - stream.on("complete", onfinish); - if (!willEmitClose) { - stream.on("abort", onclose); - } - if (stream.req) { - onrequest(); - } else { - stream.on("request", onrequest); - } - } else if (writable && !wState) { - stream.on("end", onlegacyfinish); - stream.on("close", onlegacyfinish); - } - if (!willEmitClose && typeof stream.aborted === "boolean") { - stream.on("aborted", onclose); - } - stream.on("end", onend); - stream.on("finish", onfinish); - if (options.error !== false) { - stream.on("error", onerror); - } - stream.on("close", onclose); - if (closed) { - runOnNextTick(onclose); - } else if ( - (wState !== null && wState !== void 0 && wState.errorEmitted) || - (rState !== null && rState !== void 0 && rState.errorEmitted) - ) { - if (!willEmitClose) { - runOnNextTick(onclose); - } - } else if ( - !readable && - (!willEmitClose || isReadable(stream)) && - (writableFinished || isWritable(stream) === false) - ) { - runOnNextTick(onclose); - } else if ( - !writable && - (!willEmitClose || isWritable(stream)) && - (readableFinished || isReadable(stream) === false) - ) { - runOnNextTick(onclose); - } else if (rState && stream.req && stream.aborted) { - runOnNextTick(onclose); - } - const cleanup = () => { - callback = nop; - stream.removeListener("aborted", onclose); - stream.removeListener("complete", onfinish); - stream.removeListener("abort", onclose); - stream.removeListener("request", onrequest); - if (stream.req) stream.req.removeListener("finish", onfinish); - stream.removeListener("end", onlegacyfinish); - stream.removeListener("close", onlegacyfinish); - stream.removeListener("finish", onfinish); - stream.removeListener("end", onend); - stream.removeListener("error", onerror); - stream.removeListener("close", onclose); - }; - if (options.signal && !closed) { - const abort = () => { - const endCallback = callback; - cleanup(); - endCallback.call( - stream, - new AbortError(void 0, { - cause: options.signal.reason, - }), - ); - }; - if (options.signal.aborted) { - runOnNextTick(abort); - } else { - const originalCallback = callback; - callback = once((...args) => { - options.signal.removeEventListener("abort", abort); - originalCallback.apply(stream, args); - }); - options.signal.addEventListener("abort", abort); - } - } - return cleanup; - } - function finished(stream, opts) { - return new Promise2((resolve, reject) => { - eos(stream, opts, err => { - if (err) { - reject(err); - } else { - resolve(); - } - }); - }); - } - module.exports = eos; - module.exports.finished = finished; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/operators.js -var require_operators = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/operators.js"(exports, module) { - "use strict"; - var AbortController = globalThis.AbortController || __require("abort-controller").AbortController; - var { - codes: { ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE }, - AbortError, - } = require_errors(); - var { validateAbortSignal, validateInteger, validateObject } = require_validators(); - var kWeakHandler = require_primordials().Symbol("kWeak"); - var { finished } = require_end_of_stream(); - var { - ArrayPrototypePush, - MathFloor, - Number: Number2, - NumberIsNaN, - Promise: Promise2, - PromiseReject, - PromisePrototypeCatch, - Symbol: Symbol2, - } = require_primordials(); - var kEmpty = Symbol2("kEmpty"); - var kEof = Symbol2("kEof"); - function map(fn, options) { - if (typeof fn !== "function") { - throw new ERR_INVALID_ARG_TYPE("fn", ["Function", "AsyncFunction"], fn); - } - if (options != null) { - validateObject(options, "options"); - } - if ((options === null || options === void 0 ? void 0 : options.signal) != null) { - validateAbortSignal(options.signal, "options.signal"); - } - let concurrency = 1; - if ((options === null || options === void 0 ? void 0 : options.concurrency) != null) { - concurrency = MathFloor(options.concurrency); - } - validateInteger(concurrency, "concurrency", 1); - return async function* map2() { - var _options$signal, _options$signal2; - const ac = new AbortController(); - const stream = this; - const queue = []; - const signal = ac.signal; - const signalOpt = { - signal, - }; - const abort = () => ac.abort(); - if ( - options !== null && - options !== void 0 && - (_options$signal = options.signal) !== null && - _options$signal !== void 0 && - _options$signal.aborted - ) { - abort(); - } - options === null || options === void 0 - ? void 0 - : (_options$signal2 = options.signal) === null || _options$signal2 === void 0 - ? void 0 - : _options$signal2.addEventListener("abort", abort); - let next; - let resume; - let done = false; - function onDone() { - done = true; - } - async function pump() { - try { - for await (let val of stream) { - var _val; - if (done) { - return; - } - if (signal.aborted) { - throw new AbortError(); - } - try { - val = fn(val, signalOpt); - } catch (err) { - val = PromiseReject(err); - } - if (val === kEmpty) { - continue; - } - if (typeof ((_val = val) === null || _val === void 0 ? void 0 : _val.catch) === "function") { - val.catch(onDone); - } - queue.push(val); - if (next) { - next(); - next = null; - } - if (!done && queue.length && queue.length >= concurrency) { - await new Promise2(resolve => { - resume = resolve; - }); - } - } - queue.push(kEof); - } catch (err) { - const val = PromiseReject(err); - PromisePrototypeCatch(val, onDone); - queue.push(val); - } finally { - var _options$signal3; - done = true; - if (next) { - next(); - next = null; - } - options === null || options === void 0 - ? void 0 - : (_options$signal3 = options.signal) === null || _options$signal3 === void 0 - ? void 0 - : _options$signal3.removeEventListener("abort", abort); - } - } - pump(); - try { - while (true) { - while (queue.length > 0) { - const val = await queue[0]; - if (val === kEof) { - return; - } - if (signal.aborted) { - throw new AbortError(); - } - if (val !== kEmpty) { - yield val; - } - queue.shift(); - if (resume) { - resume(); - resume = null; - } - } - await new Promise2(resolve => { - next = resolve; - }); - } - } finally { - ac.abort(); - done = true; - if (resume) { - resume(); - resume = null; - } - } - }.call(this); - } - function asIndexedPairs(options = void 0) { - if (options != null) { - validateObject(options, "options"); - } - if ((options === null || options === void 0 ? void 0 : options.signal) != null) { - validateAbortSignal(options.signal, "options.signal"); - } - return async function* asIndexedPairs2() { - let index = 0; - for await (const val of this) { - var _options$signal4; - if ( - options !== null && - options !== void 0 && - (_options$signal4 = options.signal) !== null && - _options$signal4 !== void 0 && - _options$signal4.aborted - ) { - throw new AbortError({ - cause: options.signal.reason, - }); - } - yield [index++, val]; - } - }.call(this); - } - async function some(fn, options = void 0) { - for await (const unused of filter.call(this, fn, options)) { - return true; - } - return false; - } - async function every(fn, options = void 0) { - if (typeof fn !== "function") { - throw new ERR_INVALID_ARG_TYPE("fn", ["Function", "AsyncFunction"], fn); - } - return !(await some.call( - this, - async (...args) => { - return !(await fn(...args)); - }, - options, - )); - } - async function find(fn, options) { - for await (const result of filter.call(this, fn, options)) { - return result; - } - return void 0; - } - async function forEach(fn, options) { - if (typeof fn !== "function") { - throw new ERR_INVALID_ARG_TYPE("fn", ["Function", "AsyncFunction"], fn); - } - async function forEachFn(value, options2) { - await fn(value, options2); - return kEmpty; - } - for await (const unused of map.call(this, forEachFn, options)); - } - function filter(fn, options) { - if (typeof fn !== "function") { - throw new ERR_INVALID_ARG_TYPE("fn", ["Function", "AsyncFunction"], fn); - } - async function filterFn(value, options2) { - if (await fn(value, options2)) { - return value; - } - return kEmpty; - } - return map.call(this, filterFn, options); - } - var ReduceAwareErrMissingArgs = class extends ERR_MISSING_ARGS { - constructor() { - super("reduce"); - this.message = "Reduce of an empty stream requires an initial value"; - } - }; - async function reduce(reducer, initialValue, options) { - var _options$signal5; - if (typeof reducer !== "function") { - throw new ERR_INVALID_ARG_TYPE("reducer", ["Function", "AsyncFunction"], reducer); - } - if (options != null) { - validateObject(options, "options"); - } - if ((options === null || options === void 0 ? void 0 : options.signal) != null) { - validateAbortSignal(options.signal, "options.signal"); - } - let hasInitialValue = arguments.length > 1; - if ( - options !== null && - options !== void 0 && - (_options$signal5 = options.signal) !== null && - _options$signal5 !== void 0 && - _options$signal5.aborted - ) { - const err = new AbortError(void 0, { - cause: options.signal.reason, - }); - this.once("error", () => {}); - await finished(this.destroy(err)); - throw err; - } - const ac = new AbortController(); - const signal = ac.signal; - if (options !== null && options !== void 0 && options.signal) { - const opts = { - once: true, - [kWeakHandler]: this, - }; - options.signal.addEventListener("abort", () => ac.abort(), opts); - } - let gotAnyItemFromStream = false; - try { - for await (const value of this) { - var _options$signal6; - gotAnyItemFromStream = true; - if ( - options !== null && - options !== void 0 && - (_options$signal6 = options.signal) !== null && - _options$signal6 !== void 0 && - _options$signal6.aborted - ) { - throw new AbortError(); - } - if (!hasInitialValue) { - initialValue = value; - hasInitialValue = true; - } else { - initialValue = await reducer(initialValue, value, { - signal, - }); - } - } - if (!gotAnyItemFromStream && !hasInitialValue) { - throw new ReduceAwareErrMissingArgs(); - } - } finally { - ac.abort(); - } - return initialValue; - } - async function toArray(options) { - if (options != null) { - validateObject(options, "options"); - } - if ((options === null || options === void 0 ? void 0 : options.signal) != null) { - validateAbortSignal(options.signal, "options.signal"); - } - const result = []; - for await (const val of this) { - var _options$signal7; - if ( - options !== null && - options !== void 0 && - (_options$signal7 = options.signal) !== null && - _options$signal7 !== void 0 && - _options$signal7.aborted - ) { - throw new AbortError(void 0, { - cause: options.signal.reason, - }); - } - ArrayPrototypePush(result, val); - } - return result; - } - function flatMap(fn, options) { - const values = map.call(this, fn, options); - return async function* flatMap2() { - for await (const val of values) { - yield* val; - } - }.call(this); - } - function toIntegerOrInfinity(number) { - number = Number2(number); - if (NumberIsNaN(number)) { - return 0; - } - if (number < 0) { - throw new ERR_OUT_OF_RANGE("number", ">= 0", number); - } - return number; - } - function drop(number, options = void 0) { - if (options != null) { - validateObject(options, "options"); - } - if ((options === null || options === void 0 ? void 0 : options.signal) != null) { - validateAbortSignal(options.signal, "options.signal"); - } - number = toIntegerOrInfinity(number); - return async function* drop2() { - var _options$signal8; - if ( - options !== null && - options !== void 0 && - (_options$signal8 = options.signal) !== null && - _options$signal8 !== void 0 && - _options$signal8.aborted - ) { - throw new AbortError(); - } - for await (const val of this) { - var _options$signal9; - if ( - options !== null && - options !== void 0 && - (_options$signal9 = options.signal) !== null && - _options$signal9 !== void 0 && - _options$signal9.aborted - ) { - throw new AbortError(); - } - if (number-- <= 0) { - yield val; - } - } - }.call(this); - } - function take(number, options = void 0) { - if (options != null) { - validateObject(options, "options"); - } - if ((options === null || options === void 0 ? void 0 : options.signal) != null) { - validateAbortSignal(options.signal, "options.signal"); - } - number = toIntegerOrInfinity(number); - return async function* take2() { - var _options$signal10; - if ( - options !== null && - options !== void 0 && - (_options$signal10 = options.signal) !== null && - _options$signal10 !== void 0 && - _options$signal10.aborted - ) { - throw new AbortError(); - } - for await (const val of this) { - var _options$signal11; - if ( - options !== null && - options !== void 0 && - (_options$signal11 = options.signal) !== null && - _options$signal11 !== void 0 && - _options$signal11.aborted - ) { - throw new AbortError(); - } - if (number-- > 0) { - yield val; - } else { - return; - } - } - }.call(this); - } - module.exports.streamReturningOperators = { - asIndexedPairs, - drop, - filter, - flatMap, - map, - take, - }; - module.exports.promiseReturningOperators = { - every, - forEach, - reduce, - toArray, - some, - find, - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/destroy.js -var require_destroy = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/destroy.js"(exports, module) { - "use strict"; - var { - aggregateTwoErrors, - codes: { ERR_MULTIPLE_CALLBACK }, - AbortError, - } = require_errors(); - var { Symbol: Symbol2 } = require_primordials(); - var { kDestroyed, isDestroyed, isFinished, isServerRequest } = require_utils(); - var kDestroy = "#kDestroy"; - var kConstruct = "#kConstruct"; - function checkError(err, w, r) { - if (err) { - err.stack; - if (w && !w.errored) { - w.errored = err; - } - if (r && !r.errored) { - r.errored = err; - } - } - } - function destroy(err, cb) { - const r = this._readableState; - const w = this._writableState; - const s = w || r; - if ((w && w.destroyed) || (r && r.destroyed)) { - if (typeof cb === "function") { - cb(); - } - return this; - } - checkError(err, w, r); - if (w) { - w.destroyed = true; - } - if (r) { - r.destroyed = true; - } - if (!s.constructed) { - this.once(kDestroy, er => { - _destroy(this, aggregateTwoErrors(er, err), cb); - }); - } else { - _destroy(this, err, cb); - } - return this; - } - function _destroy(self, err, cb) { - let called = false; - function onDestroy(err2) { - if (called) { - return; - } - called = true; - const r = self._readableState; - const w = self._writableState; - checkError(err2, w, r); - if (w) { - w.closed = true; - } - if (r) { - r.closed = true; - } - if (typeof cb === "function") { - cb(err2); - } - if (err2) { - runOnNextTick(emitErrorCloseNT, self, err2); - } else { - runOnNextTick(emitCloseNT, self); - } - } - try { - self._destroy(err || null, onDestroy); - } catch (err2) { - onDestroy(err2); - } - } - function emitErrorCloseNT(self, err) { - emitErrorNT(self, err); - emitCloseNT(self); - } - function emitCloseNT(self) { - const r = self._readableState; - const w = self._writableState; - if (w) { - w.closeEmitted = true; - } - if (r) { - r.closeEmitted = true; - } - if ((w && w.emitClose) || (r && r.emitClose)) { - self.emit("close"); - } - } - function emitErrorNT(self, err) { - const r = self?._readableState; - const w = self?._writableState; - if (w?.errorEmitted || r?.errorEmitted) { - return; - } - if (w) { - w.errorEmitted = true; - } - if (r) { - r.errorEmitted = true; - } - self?.emit?.("error", err); - } - function undestroy() { - const r = this._readableState; - const w = this._writableState; - if (r) { - r.constructed = true; - r.closed = false; - r.closeEmitted = false; - r.destroyed = false; - r.errored = null; - r.errorEmitted = false; - r.reading = false; - r.ended = r.readable === false; - r.endEmitted = r.readable === false; - } - if (w) { - w.constructed = true; - w.destroyed = false; - w.closed = false; - w.closeEmitted = false; - w.errored = null; - w.errorEmitted = false; - w.finalCalled = false; - w.prefinished = false; - w.ended = w.writable === false; - w.ending = w.writable === false; - w.finished = w.writable === false; - } - } - function errorOrDestroy(stream, err, sync) { - const r = stream?._readableState; - const w = stream?._writableState; - if ((w && w.destroyed) || (r && r.destroyed)) { - return this; - } - if ((r && r.autoDestroy) || (w && w.autoDestroy)) stream.destroy(err); - else if (err) { - Error.captureStackTrace(err); - if (w && !w.errored) { - w.errored = err; - } - if (r && !r.errored) { - r.errored = err; - } - if (sync) { - runOnNextTick(emitErrorNT, stream, err); - } else { - emitErrorNT(stream, err); - } - } - } - function construct(stream, cb) { - if (typeof stream._construct !== "function") { - return; - } - const r = stream._readableState; - const w = stream._writableState; - if (r) { - r.constructed = false; - } - if (w) { - w.constructed = false; - } - stream.once(kConstruct, cb); - if (stream.listenerCount(kConstruct) > 1) { - return; - } - runOnNextTick(constructNT, stream); - } - function constructNT(stream) { - let called = false; - function onConstruct(err) { - if (called) { - errorOrDestroy(stream, err !== null && err !== void 0 ? err : new ERR_MULTIPLE_CALLBACK()); - return; - } - called = true; - const r = stream._readableState; - const w = stream._writableState; - const s = w || r; - if (r) { - r.constructed = true; - } - if (w) { - w.constructed = true; - } - if (s.destroyed) { - stream.emit(kDestroy, err); - } else if (err) { - errorOrDestroy(stream, err, true); - } else { - runOnNextTick(emitConstructNT, stream); - } - } - try { - stream._construct(onConstruct); - } catch (err) { - onConstruct(err); - } - } - function emitConstructNT(stream) { - stream.emit(kConstruct); - } - function isRequest(stream) { - return stream && stream.setHeader && typeof stream.abort === "function"; - } - function emitCloseLegacy(stream) { - stream.emit("close"); - } - function emitErrorCloseLegacy(stream, err) { - stream.emit("error", err); - runOnNextTick(emitCloseLegacy, stream); - } - function destroyer(stream, err) { - if (!stream || isDestroyed(stream)) { - return; - } - if (!err && !isFinished(stream)) { - err = new AbortError(); - } - if (isServerRequest(stream)) { - stream.socket = null; - stream.destroy(err); - } else if (isRequest(stream)) { - stream.abort(); - } else if (isRequest(stream.req)) { - stream.req.abort(); - } else if (typeof stream.destroy === "function") { - stream.destroy(err); - } else if (typeof stream.close === "function") { - stream.close(); - } else if (err) { - runOnNextTick(emitErrorCloseLegacy, stream); - } else { - runOnNextTick(emitCloseLegacy, stream); - } - if (!stream.destroyed) { - stream[kDestroyed] = true; - } - } - module.exports = { - construct, - destroyer, - destroy, - undestroy, - errorOrDestroy, - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/legacy.js -var require_legacy = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/legacy.js"(exports, module) { - "use strict"; - var { ArrayIsArray, ObjectSetPrototypeOf } = require_primordials(); - var { EventEmitter: _EE } = __require("bun:events_native"); - var EE; - if (__TRACK_EE__) { - EE = DebugEventEmitter; - } else { - EE = _EE; - } - - function Stream(options) { - if (!(this instanceof Stream)) return new Stream(options); - EE.call(this, options); - } - ObjectSetPrototypeOf(Stream.prototype, EE.prototype); - ObjectSetPrototypeOf(Stream, EE); - - Stream.prototype.pipe = function (dest, options) { - const source = this; - function ondata(chunk) { - if (dest.writable && dest.write(chunk) === false && source.pause) { - source.pause(); - } - } - source.on("data", ondata); - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - dest.on("drain", ondrain); - if (!dest._isStdio && (!options || options.end !== false)) { - source.on("end", onend); - source.on("close", onclose); - } - let didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; - dest.end(); - } - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - if (typeof dest.destroy === "function") dest.destroy(); - } - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, "error") === 0) { - this.emit("error", er); - } - } - prependListener(source, "error", onerror); - prependListener(dest, "error", onerror); - function cleanup() { - source.removeListener("data", ondata); - dest.removeListener("drain", ondrain); - source.removeListener("end", onend); - source.removeListener("close", onclose); - source.removeListener("error", onerror); - dest.removeListener("error", onerror); - source.removeListener("end", cleanup); - source.removeListener("close", cleanup); - dest.removeListener("close", cleanup); - } - source.on("end", cleanup); - source.on("close", cleanup); - dest.on("close", cleanup); - dest.emit("pipe", source); - return dest; - }; - function prependListener(emitter, event, fn) { - if (typeof emitter.prependListener === "function") return emitter.prependListener(event, fn); - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn); - else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn); - else emitter._events[event] = [fn, emitter._events[event]]; - } - module.exports = { - Stream, - prependListener, - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/add-abort-signal.js -var require_add_abort_signal = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/add-abort-signal.js"(exports, module) { - "use strict"; - var { AbortError, codes } = require_errors(); - var eos = require_end_of_stream(); - var { ERR_INVALID_ARG_TYPE } = codes; - var validateAbortSignal = (signal, name) => { - if (typeof signal !== "object" || !("aborted" in signal)) { - throw new ERR_INVALID_ARG_TYPE(name, "AbortSignal", signal); - } - }; - function isNodeStream(obj) { - return !!(obj && typeof obj.pipe === "function"); - } - module.exports.addAbortSignal = function addAbortSignal(signal, stream) { - validateAbortSignal(signal, "signal"); - if (!isNodeStream(stream)) { - throw new ERR_INVALID_ARG_TYPE("stream", "stream.Stream", stream); - } - return module.exports.addAbortSignalNoValidate(signal, stream); - }; - module.exports.addAbortSignalNoValidate = function (signal, stream) { - if (typeof signal !== "object" || !("aborted" in signal)) { - return stream; - } - const onAbort = () => { - stream.destroy( - new AbortError(void 0, { - cause: signal.reason, - }), - ); - }; - if (signal.aborted) { - onAbort(); - } else { - signal.addEventListener("abort", onAbort); - eos(stream, () => signal.removeEventListener("abort", onAbort)); - } - return stream; - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/state.js -var require_state = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/state.js"(exports, module) { - "use strict"; - var { MathFloor, NumberIsInteger } = require_primordials(); - var { ERR_INVALID_ARG_VALUE } = require_errors().codes; - function highWaterMarkFrom(options, isDuplex, duplexKey) { - return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; - } - function getDefaultHighWaterMark(objectMode) { - return objectMode ? 16 : 16 * 1024; - } - function getHighWaterMark(state, options, duplexKey, isDuplex) { - const hwm = highWaterMarkFrom(options, isDuplex, duplexKey); - if (hwm != null) { - if (!NumberIsInteger(hwm) || hwm < 0) { - const name = isDuplex ? `options.${duplexKey}` : "options.highWaterMark"; - throw new ERR_INVALID_ARG_VALUE(name, hwm); - } - return MathFloor(hwm); - } - return getDefaultHighWaterMark(state.objectMode); - } - module.exports = { - getHighWaterMark, - getDefaultHighWaterMark, - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/from.js -var require_from = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/from.js"(exports, module) { - "use strict"; - var { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require_primordials(); - var { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require_errors().codes; - function from(Readable, iterable, opts) { - let iterator; - if (typeof iterable === "string" || iterable instanceof Buffer) { - return new Readable({ - objectMode: true, - ...opts, - read() { - this.push(iterable); - this.push(null); - }, - }); - } - let isAsync; - if (iterable && iterable[SymbolAsyncIterator]) { - isAsync = true; - iterator = iterable[SymbolAsyncIterator](); - } else if (iterable && iterable[SymbolIterator]) { - isAsync = false; - iterator = iterable[SymbolIterator](); - } else { - throw new ERR_INVALID_ARG_TYPE("iterable", ["Iterable"], iterable); - } - const readable = new Readable({ - objectMode: true, - highWaterMark: 1, - ...opts, - }); - let reading = false; - readable._read = function () { - if (!reading) { - reading = true; - next(); - } - }; - readable._destroy = function (error, cb) { - PromisePrototypeThen( - close(error), - () => runOnNextTick(cb, error), - e => runOnNextTick(cb, e || error), - ); - }; - async function close(error) { - const hadError = error !== void 0 && error !== null; - const hasThrow = typeof iterator.throw === "function"; - if (hadError && hasThrow) { - const { value, done } = await iterator.throw(error); - await value; - if (done) { - return; - } - } - if (typeof iterator.return === "function") { - const { value } = await iterator.return(); - await value; - } - } - async function next() { - for (;;) { - try { - const { value, done } = isAsync ? await iterator.next() : iterator.next(); - if (done) { - readable.push(null); - } else { - const res = value && typeof value.then === "function" ? await value : value; - if (res === null) { - reading = false; - throw new ERR_STREAM_NULL_VALUES(); - } else if (readable.push(res)) { - continue; - } else { - reading = false; - } - } - } catch (err) { - readable.destroy(err); - } - break; - } - } - return readable; - } - module.exports = from; - }, -}); - -var _ReadableFromWeb; - -// node_modules/readable-stream/lib/internal/streams/readable.js -var require_readable = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/readable.js"(exports, module) { - "use strict"; - var { - ArrayPrototypeIndexOf, - NumberIsInteger, - NumberIsNaN, - NumberParseInt, - ObjectDefineProperties, - ObjectKeys, - ObjectSetPrototypeOf, - Promise: Promise2, - SafeSet, - SymbolAsyncIterator, - Symbol: Symbol2, - } = require_primordials(); - - var ReadableState = globalThis[Symbol.for("Bun.lazy")]("bun:stream").ReadableState; - var { EventEmitter: EE } = __require("bun:events_native"); - var { Stream, prependListener } = require_legacy(); - - function Readable(options) { - if (!(this instanceof Readable)) return new Readable(options); - const isDuplex = this instanceof require_duplex(); - this._readableState = new ReadableState(options, this, isDuplex); - if (options) { - const { read, destroy, construct, signal } = options; - if (typeof read === "function") this._read = read; - if (typeof destroy === "function") this._destroy = destroy; - if (typeof construct === "function") this._construct = construct; - if (signal && !isDuplex) addAbortSignal(signal, this); - } - Stream.call(this, options); - - destroyImpl.construct(this, () => { - if (this._readableState.needReadable) { - maybeReadMore(this, this._readableState); - } - }); - } - ObjectSetPrototypeOf(Readable.prototype, Stream.prototype); - ObjectSetPrototypeOf(Readable, Stream); - - Readable.prototype.on = function (ev, fn) { - const res = Stream.prototype.on.call(this, ev, fn); - const state = this._readableState; - if (ev === "data") { - state.readableListening = this.listenerCount("readable") > 0; - if (state.flowing !== false) { - __DEBUG__ && debug("in flowing mode!", this.__id); - this.resume(); - } else { - __DEBUG__ && debug("in readable mode!", this.__id); - } - } else if (ev === "readable") { - __DEBUG__ && debug("readable listener added!", this.__id); - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.flowing = false; - state.emittedReadable = false; - __DEBUG__ && - debug( - "on readable - state.length, reading, emittedReadable", - state.length, - state.reading, - state.emittedReadable, - this.__id, - ); - if (state.length) { - emitReadable(this, state); - } else if (!state.reading) { - runOnNextTick(nReadingNextTick, this); - } - } else if (state.endEmitted) { - __DEBUG__ && debug("end already emitted...", this.__id); - } - } - return res; - }; - - class ReadableFromWeb extends Readable { - #reader; - #closed; - #pendingChunks; - #stream; - - constructor(options, stream) { - const { objectMode, highWaterMark, encoding, signal } = options; - super({ - objectMode, - highWaterMark, - encoding, - signal, - }); - this.#pendingChunks = []; - this.#reader = undefined; - this.#stream = stream; - this.#closed = false; - } - - #drainPending() { - var pendingChunks = this.#pendingChunks, - pendingChunksI = 0, - pendingChunksCount = pendingChunks.length; - - for (; pendingChunksI < pendingChunksCount; pendingChunksI++) { - const chunk = pendingChunks[pendingChunksI]; - pendingChunks[pendingChunksI] = undefined; - if (!this.push(chunk, undefined)) { - this.#pendingChunks = pendingChunks.slice(pendingChunksI + 1); - return true; - } - } - - if (pendingChunksCount > 0) { - this.#pendingChunks = []; - } - - return false; - } - - #handleDone(reader) { - reader.releaseLock(); - this.#reader = undefined; - this.#closed = true; - this.push(null); - return; - } - - async _read() { - __DEBUG__ && debug("ReadableFromWeb _read()", this.__id); - var stream = this.#stream, - reader = this.#reader; - if (stream) { - reader = this.#reader = stream.getReader(); - this.#stream = undefined; - } else if (this.#drainPending()) { - return; - } - - var deferredError; - try { - do { - var done = false, - value; - const firstResult = reader.readMany(); - - if (isPromise(firstResult)) { - ({ done, value } = await firstResult); - - if (this.#closed) { - this.#pendingChunks.push(...value); - return; - } - } else { - ({ done, value } = firstResult); - } - - if (done) { - this.#handleDone(reader); - return; - } - - if (!this.push(value[0])) { - this.#pendingChunks = value.slice(1); - return; - } - - for (let i = 1, count = value.length; i < count; i++) { - if (!this.push(value[i])) { - this.#pendingChunks = value.slice(i + 1); - return; - } - } - } while (!this.#closed); - } catch (e) { - deferredError = e; - } finally { - if (deferredError) throw deferredError; - } - } - - _destroy(error, callback) { - if (!this.#closed) { - var reader = this.#reader; - if (reader) { - this.#reader = undefined; - reader.cancel(error).finally(() => { - this.#closed = true; - callback(error); - }); - } - - return; - } - try { - callback(error); - } catch (error) { - globalThis.reportError(error); - } - } - } - - /** - * @param {ReadableStream} readableStream - * @param {{ - * highWaterMark? : number, - * encoding? : string, - * objectMode? : boolean, - * signal? : AbortSignal, - * }} [options] - * @returns {Readable} - */ - function newStreamReadableFromReadableStream(readableStream, options = {}) { - if (!isReadableStream(readableStream)) { - throw new ERR_INVALID_ARG_TYPE("readableStream", "ReadableStream", readableStream); - } - - validateObject(options, "options"); - const { - highWaterMark, - encoding, - objectMode = false, - signal, - // native = true, - } = options; - - if (encoding !== undefined && !Buffer.isEncoding(encoding)) - throw new ERR_INVALID_ARG_VALUE(encoding, "options.encoding"); - validateBoolean(objectMode, "options.objectMode"); - - // validateBoolean(native, "options.native"); - - // if (!native) { - // return new ReadableFromWeb( - // { - // highWaterMark, - // encoding, - // objectMode, - // signal, - // }, - // readableStream, - // ); - // } - - const nativeStream = getNativeReadableStream(Readable, readableStream, options); - - return ( - nativeStream || - new ReadableFromWeb( - { - highWaterMark, - encoding, - objectMode, - signal, - }, - readableStream, - ) - ); - } - - module.exports = Readable; - _ReadableFromWeb = ReadableFromWeb; - - var { addAbortSignal } = require_add_abort_signal(); - var eos = require_end_of_stream(); - const { - maybeReadMore: _maybeReadMore, - resume, - emitReadable: _emitReadable, - onEofChunk, - } = globalThis[Symbol.for("Bun.lazy")]("bun:stream"); - function maybeReadMore(stream, state) { - process.nextTick(_maybeReadMore, stream, state); - } - // REVERT ME - function emitReadable(stream, state) { - __DEBUG__ && debug("NativeReadable - emitReadable", stream.__id); - _emitReadable(stream, state); - } - var destroyImpl = require_destroy(); - var { - aggregateTwoErrors, - codes: { - ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED, - ERR_OUT_OF_RANGE, - ERR_STREAM_PUSH_AFTER_EOF, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT, - }, - } = require_errors(); - var { validateObject } = require_validators(); - var { StringDecoder } = __require("string_decoder"); - var from = require_from(); - var nop = () => {}; - var { errorOrDestroy } = destroyImpl; - - Readable.prototype.destroy = destroyImpl.destroy; - Readable.prototype._undestroy = destroyImpl.undestroy; - Readable.prototype._destroy = function (err, cb) { - cb(err); - }; - Readable.prototype[EE.captureRejectionSymbol] = function (err) { - this.destroy(err); - }; - Readable.prototype.push = function (chunk, encoding) { - return readableAddChunk(this, chunk, encoding, false); - }; - Readable.prototype.unshift = function (chunk, encoding) { - return readableAddChunk(this, chunk, encoding, true); - }; - function readableAddChunk(stream, chunk, encoding, addToFront) { - __DEBUG__ && debug("readableAddChunk", chunk, stream.__id); - const state = stream._readableState; - let err; - if (!state.objectMode) { - if (typeof chunk === "string") { - encoding = encoding || state.defaultEncoding; - if (state.encoding !== encoding) { - if (addToFront && state.encoding) { - chunk = Buffer.from(chunk, encoding).toString(state.encoding); - } else { - chunk = Buffer.from(chunk, encoding); - encoding = ""; - } - } - } else if (chunk instanceof Buffer) { - encoding = ""; - } else if (Stream._isUint8Array(chunk)) { - if (addToFront || !state.decoder) { - chunk = Stream._uint8ArrayToBuffer(chunk); - } - encoding = ""; - } else if (chunk != null) { - err = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer", "Uint8Array"], chunk); - } - } - if (err) { - errorOrDestroy(stream, err); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || (chunk && chunk.length > 0)) { - if (addToFront) { - if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT()); - else if (state.destroyed || state.errored) return false; - else addChunk(stream, state, chunk, true); - } else if (state.ended) { - errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); - } else if (state.destroyed || state.errored) { - return false; - } else { - state.reading = false; - if (state.decoder && !encoding) { - chunk = state.decoder.write(chunk); - if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false); - else maybeReadMore(stream, state); - } else { - addChunk(stream, state, chunk, false); - } - } - } else if (!addToFront) { - state.reading = false; - maybeReadMore(stream, state); - } - return !state.ended && (state.length < state.highWaterMark || state.length === 0); - } - function addChunk(stream, state, chunk, addToFront) { - __DEBUG__ && debug("adding chunk", stream.__id); - __DEBUG__ && debug("chunk", chunk.toString(), stream.__id); - if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount("data") > 0) { - if (state.multiAwaitDrain) { - state.awaitDrainWriters.clear(); - } else { - state.awaitDrainWriters = null; - } - state.dataEmitted = true; - stream.emit("data", chunk); - } else { - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk); - else state.buffer.push(chunk); - __DEBUG__ && debug("needReadable @ addChunk", state.needReadable, stream.__id); - if (state.needReadable) emitReadable(stream, state); - } - maybeReadMore(stream, state); - } - Readable.prototype.isPaused = function () { - const state = this._readableState; - return state.paused === true || state.flowing === false; - }; - Readable.prototype.setEncoding = function (enc) { - const decoder = new StringDecoder(enc); - this._readableState.decoder = decoder; - this._readableState.encoding = this._readableState.decoder.encoding; - const buffer = this._readableState.buffer; - let content = ""; - // BufferList does not support iterator now, and iterator is slow in JSC. - // for (const data of buffer) { - // content += decoder.write(data); - // } - // buffer.clear(); - for (let i = buffer.length; i > 0; i--) { - content += decoder.write(buffer.shift()); - } - if (content !== "") buffer.push(content); - this._readableState.length = content.length; - return this; - }; - var MAX_HWM = 1073741824; - function computeNewHighWaterMark(n) { - if (n > MAX_HWM) { - throw new ERR_OUT_OF_RANGE("size", "<= 1GiB", n); - } else { - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; - } - function howMuchToRead(n, state) { - if (n <= 0 || (state.length === 0 && state.ended)) return 0; - if (state.objectMode) return 1; - if (NumberIsNaN(n)) { - if (state.flowing && state.length) return state.buffer.first().length; - return state.length; - } - if (n <= state.length) return n; - return state.ended ? state.length : 0; - } - // You can override either this method, or the async _read(n) below. - Readable.prototype.read = function (n) { - __DEBUG__ && debug("read - n =", n, this.__id); - if (!NumberIsInteger(n)) { - n = NumberParseInt(n, 10); - } - const state = this._readableState; - const nOrig = n; - - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - - if (n !== 0) state.emittedReadable = false; - - // If we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if ( - n === 0 && - state.needReadable && - ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended) - ) { - __DEBUG__ && debug("read: emitReadable or endReadable", state.length, state.ended, this.__id); - if (state.length === 0 && state.ended) endReadable(this); - else emitReadable(this, state); - return null; - } - - n = howMuchToRead(n, state); - - // If we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - __DEBUG__ && - debug("read: calling endReadable if length 0 -- length, state.ended", state.length, state.ended, this.__id); - if (state.length === 0) endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - let doRead = state.needReadable; - __DEBUG__ && debug("need readable", doRead, this.__id); - - // If we currently have less than the highWaterMark, then also read some. - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - __DEBUG__ && debug("length less than watermark", doRead, this.__id); - } - - // However, if we've ended, then there's no point, if we're already - // reading, then it's unnecessary, if we're constructing we have to wait, - // and if we're destroyed or errored, then it's not allowed, - if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) { - __DEBUG__ && debug("state.constructed?", state.constructed, this.__id); - doRead = false; - __DEBUG__ && debug("reading, ended or constructing", doRead, this.__id); - } else if (doRead) { - __DEBUG__ && debug("do read", this.__id); - state.reading = true; - state.sync = true; - // If the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - - // Call internal read method - try { - var result = this._read(state.highWaterMark); - if (isPromise(result)) { - __DEBUG__ && debug("async _read", this.__id); - const peeked = Bun.peek(result); - __DEBUG__ && debug("peeked promise", peeked, this.__id); - if (peeked !== result) { - result = peeked; - } - } - - if (isPromise(result) && result?.then && isCallable(result.then)) { - __DEBUG__ && debug("async _read result.then setup", this.__id); - result.then(nop, function (err) { - errorOrDestroy(this, err); - }); - } - } catch (err) { - errorOrDestroy(this, err); - } - - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - __DEBUG__ && debug("n @ fromList", n, this.__id); - let ret; - if (n > 0) ret = fromList(n, state); - else ret = null; - - __DEBUG__ && debug("ret @ read", ret, this.__id); - - if (ret === null) { - state.needReadable = state.length <= state.highWaterMark; - __DEBUG__ && debug("state.length while ret = null", state.length, this.__id); - n = 0; - } else { - state.length -= n; - if (state.multiAwaitDrain) { - state.awaitDrainWriters.clear(); - } else { - state.awaitDrainWriters = null; - } - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null && !state.errorEmitted && !state.closeEmitted) { - state.dataEmitted = true; - this.emit("data", ret); - } - - return ret; - }; - Readable.prototype._read = function (n) { - throw new ERR_METHOD_NOT_IMPLEMENTED("_read()"); - }; - Readable.prototype.pipe = function (dest, pipeOpts) { - const src = this; - const state = this._readableState; - if (state.pipes.length === 1) { - if (!state.multiAwaitDrain) { - state.multiAwaitDrain = true; - state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : []); - } - } - state.pipes.push(dest); - __DEBUG__ && debug("pipe count=%d opts=%j", state.pipes.length, pipeOpts, src.__id); - const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - const endFn = doEnd ? onend : unpipe; - if (state.endEmitted) runOnNextTick(endFn); - else src.once("end", endFn); - dest.on("unpipe", onunpipe); - function onunpipe(readable, unpipeInfo) { - __DEBUG__ && debug("onunpipe", src.__id); - if (readable === src) { - if (unpipeInfo && unpipeInfo.hasUnpiped === false) { - unpipeInfo.hasUnpiped = true; - cleanup(); - } - } - } - function onend() { - __DEBUG__ && debug("onend", src.__id); - dest.end(); - } - let ondrain; - let cleanedUp = false; - function cleanup() { - __DEBUG__ && debug("cleanup", src.__id); - dest.removeListener("close", onclose); - dest.removeListener("finish", onfinish); - if (ondrain) { - dest.removeListener("drain", ondrain); - } - dest.removeListener("error", onerror); - dest.removeListener("unpipe", onunpipe); - src.removeListener("end", onend); - src.removeListener("end", unpipe); - src.removeListener("data", ondata); - cleanedUp = true; - if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - function pause() { - if (!cleanedUp) { - if (state.pipes.length === 1 && state.pipes[0] === dest) { - __DEBUG__ && debug("false write response, pause", 0, src.__id); - state.awaitDrainWriters = dest; - state.multiAwaitDrain = false; - } else if (state.pipes.length > 1 && state.pipes.includes(dest)) { - __DEBUG__ && debug("false write response, pause", state.awaitDrainWriters.size, src.__id); - state.awaitDrainWriters.add(dest); - } - src.pause(); - } - if (!ondrain) { - ondrain = pipeOnDrain(src, dest); - dest.on("drain", ondrain); - } - } - src.on("data", ondata); - function ondata(chunk) { - __DEBUG__ && debug("ondata", src.__id); - const ret = dest.write(chunk); - __DEBUG__ && debug("dest.write", ret, src.__id); - if (ret === false) { - pause(); - } - } - function onerror(er) { - debug("onerror", er); - unpipe(); - dest.removeListener("error", onerror); - if (dest.listenerCount("error") === 0) { - const s = dest._writableState || dest._readableState; - if (s && !s.errorEmitted) { - errorOrDestroy(dest, er); - } else { - dest.emit("error", er); - } - } - } - prependListener(dest, "error", onerror); - function onclose() { - dest.removeListener("finish", onfinish); - unpipe(); - } - dest.once("close", onclose); - function onfinish() { - debug("onfinish"); - dest.removeListener("close", onclose); - unpipe(); - } - dest.once("finish", onfinish); - function unpipe() { - debug("unpipe"); - src.unpipe(dest); - } - dest.emit("pipe", src); - if (dest.writableNeedDrain === true) { - if (state.flowing) { - pause(); - } - } else if (!state.flowing) { - debug("pipe resume"); - src.resume(); - } - return dest; - }; - function pipeOnDrain(src, dest) { - return function pipeOnDrainFunctionResult() { - const state = src._readableState; - if (state.awaitDrainWriters === dest) { - debug("pipeOnDrain", 1); - state.awaitDrainWriters = null; - } else if (state.multiAwaitDrain) { - debug("pipeOnDrain", state.awaitDrainWriters.size); - state.awaitDrainWriters.delete(dest); - } - if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount("data")) { - src.resume(); - } - }; - } - Readable.prototype.unpipe = function (dest) { - const state = this._readableState; - const unpipeInfo = { - hasUnpiped: false, - }; - if (state.pipes.length === 0) return this; - if (!dest) { - const dests = state.pipes; - state.pipes = []; - this.pause(); - for (let i = 0; i < dests.length; i++) - dests[i].emit("unpipe", this, { - hasUnpiped: false, - }); - return this; - } - const index = ArrayPrototypeIndexOf(state.pipes, dest); - if (index === -1) return this; - state.pipes.splice(index, 1); - if (state.pipes.length === 0) this.pause(); - dest.emit("unpipe", this, unpipeInfo); - return this; - }; - Readable.prototype.addListener = Readable.prototype.on; - Readable.prototype.removeListener = function (ev, fn) { - const res = Stream.prototype.removeListener.call(this, ev, fn); - if (ev === "readable") { - runOnNextTick(updateReadableListening, this); - } - return res; - }; - Readable.prototype.off = Readable.prototype.removeListener; - Readable.prototype.removeAllListeners = function (ev) { - const res = Stream.prototype.removeAllListeners.apply(this, arguments); - if (ev === "readable" || ev === void 0) { - runOnNextTick(updateReadableListening, this); - } - return res; - }; - function updateReadableListening(self) { - const state = self._readableState; - state.readableListening = self.listenerCount("readable") > 0; - if (state.resumeScheduled && state.paused === false) { - state.flowing = true; - } else if (self.listenerCount("data") > 0) { - self.resume(); - } else if (!state.readableListening) { - state.flowing = null; - } - } - function nReadingNextTick(self) { - __DEBUG__ && debug("on readable nextTick, calling read(0)", self.__id); - self.read(0); - } - Readable.prototype.resume = function () { - const state = this._readableState; - if (!state.flowing) { - __DEBUG__ && debug("resume", this.__id); - state.flowing = !state.readableListening; - resume(this, state); - } - state.paused = false; - return this; - }; - Readable.prototype.pause = function () { - __DEBUG__ && debug("call pause flowing=%j", this._readableState.flowing, this.__id); - if (this._readableState.flowing !== false) { - __DEBUG__ && debug("pause", this.__id); - this._readableState.flowing = false; - this.emit("pause"); - } - this._readableState.paused = true; - return this; - }; - Readable.prototype.wrap = function (stream) { - let paused = false; - stream.on("data", chunk => { - if (!this.push(chunk) && stream.pause) { - paused = true; - stream.pause(); - } - }); - stream.on("end", () => { - this.push(null); - }); - stream.on("error", err => { - errorOrDestroy(this, err); - }); - stream.on("close", () => { - this.destroy(); - }); - stream.on("destroy", () => { - this.destroy(); - }); - this._read = () => { - if (paused && stream.resume) { - paused = false; - stream.resume(); - } - }; - const streamKeys = ObjectKeys(stream); - for (let j = 1; j < streamKeys.length; j++) { - const i = streamKeys[j]; - if (this[i] === void 0 && typeof stream[i] === "function") { - this[i] = stream[i].bind(stream); - } - } - return this; - }; - Readable.prototype[SymbolAsyncIterator] = function () { - return streamToAsyncIterator(this); - }; - Readable.prototype.iterator = function (options) { - if (options !== void 0) { - validateObject(options, "options"); - } - return streamToAsyncIterator(this, options); - }; - function streamToAsyncIterator(stream, options) { - if (typeof stream.read !== "function") { - stream = Readable.wrap(stream, { - objectMode: true, - }); - } - const iter = createAsyncIterator(stream, options); - iter.stream = stream; - return iter; - } - async function* createAsyncIterator(stream, options) { - let callback = nop; - function next(resolve) { - if (this === stream) { - callback(); - callback = nop; - } else { - callback = resolve; - } - } - stream.on("readable", next); - let error; - const cleanup = eos( - stream, - { - writable: false, - }, - err => { - error = err ? aggregateTwoErrors(error, err) : null; - callback(); - callback = nop; - }, - ); - try { - while (true) { - const chunk = stream.destroyed ? null : stream.read(); - if (chunk !== null) { - yield chunk; - } else if (error) { - throw error; - } else if (error === null) { - return; - } else { - await new Promise2(next); - } - } - } catch (err) { - error = aggregateTwoErrors(error, err); - throw error; - } finally { - if ( - (error || (options === null || options === void 0 ? void 0 : options.destroyOnReturn) !== false) && - (error === void 0 || stream._readableState.autoDestroy) - ) { - destroyImpl.destroyer(stream, null); - } else { - stream.off("readable", next); - cleanup(); - } - } - } - ObjectDefineProperties(Readable.prototype, { - readable: { - get() { - const r = this._readableState; - return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted; - }, - set(val) { - if (this._readableState) { - this._readableState.readable = !!val; - } - }, - }, - readableDidRead: { - enumerable: false, - get: function () { - return this._readableState.dataEmitted; - }, - }, - readableAborted: { - enumerable: false, - get: function () { - return !!( - this._readableState.readable !== false && - (this._readableState.destroyed || this._readableState.errored) && - !this._readableState.endEmitted - ); - }, - }, - readableHighWaterMark: { - enumerable: false, - get: function () { - return this._readableState.highWaterMark; - }, - }, - readableBuffer: { - enumerable: false, - get: function () { - return this._readableState && this._readableState.buffer; - }, - }, - readableFlowing: { - enumerable: false, - get: function () { - return this._readableState.flowing; - }, - set: function (state) { - if (this._readableState) { - this._readableState.flowing = state; - } - }, - }, - readableLength: { - enumerable: false, - get() { - return this._readableState.length; - }, - }, - readableObjectMode: { - enumerable: false, - get() { - return this._readableState ? this._readableState.objectMode : false; - }, - }, - readableEncoding: { - enumerable: false, - get() { - return this._readableState ? this._readableState.encoding : null; - }, - }, - errored: { - enumerable: false, - get() { - return this._readableState ? this._readableState.errored : null; - }, - }, - closed: { - get() { - return this._readableState ? this._readableState.closed : false; - }, - }, - destroyed: { - enumerable: false, - get() { - return this._readableState ? this._readableState.destroyed : false; - }, - set(value) { - if (!this._readableState) { - return; - } - this._readableState.destroyed = value; - }, - }, - readableEnded: { - enumerable: false, - get() { - return this._readableState ? this._readableState.endEmitted : false; - }, - }, - }); - Readable._fromList = fromList; - function fromList(n, state) { - if (state.length === 0) return null; - let ret; - if (state.objectMode) ret = state.buffer.shift(); - else if (!n || n >= state.length) { - if (state.decoder) ret = state.buffer.join(""); - else if (state.buffer.length === 1) ret = state.buffer.first(); - else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - ret = state.buffer.consume(n, state.decoder); - } - return ret; - } - function endReadable(stream) { - const state = stream._readableState; - __DEBUG__ && debug("endEmitted @ endReadable", state.endEmitted, stream.__id); - if (!state.endEmitted) { - state.ended = true; - runOnNextTick(endReadableNT, state, stream); - } - } - function endReadableNT(state, stream) { - __DEBUG__ && debug("endReadableNT -- endEmitted, state.length", state.endEmitted, state.length, stream.__id); - if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.emit("end"); - __DEBUG__ && debug("end emitted @ endReadableNT", stream.__id); - if (stream.writable && stream.allowHalfOpen === false) { - runOnNextTick(endWritableNT, stream); - } else if (state.autoDestroy) { - const wState = stream._writableState; - const autoDestroy = !wState || (wState.autoDestroy && (wState.finished || wState.writable === false)); - if (autoDestroy) { - stream.destroy(); - } - } - } - } - function endWritableNT(stream) { - const writable = stream.writable && !stream.writableEnded && !stream.destroyed; - if (writable) { - stream.end(); - } - } - Readable.from = function (iterable, opts) { - return from(Readable, iterable, opts); - }; - var webStreamsAdapters = { - newStreamReadableFromReadableStream, - }; - function lazyWebStreams() { - if (webStreamsAdapters === void 0) webStreamsAdapters = {}; - return webStreamsAdapters; - } - Readable.fromWeb = function (readableStream, options) { - return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options); - }; - Readable.toWeb = function (streamReadable) { - return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable); - }; - Readable.wrap = function (src, options) { - var _ref, _src$readableObjectMo; - return new Readable({ - objectMode: - (_ref = - (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== void 0 - ? _src$readableObjectMo - : src.objectMode) !== null && _ref !== void 0 - ? _ref - : true, - ...options, - destroy(err, callback) { - destroyImpl.destroyer(src, err); - callback(err); - }, - }).wrap(src); - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/writable.js -var require_writable = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/writable.js"(exports, module) { - "use strict"; - var { - ArrayPrototypeSlice, - Error: Error2, - FunctionPrototypeSymbolHasInstance, - ObjectDefineProperty, - ObjectDefineProperties, - ObjectSetPrototypeOf, - StringPrototypeToLowerCase, - Symbol: Symbol2, - SymbolHasInstance, - } = require_primordials(); - - var { EventEmitter: EE } = __require("bun:events_native"); - var Stream = require_legacy().Stream; - var destroyImpl = require_destroy(); - var { addAbortSignal } = require_add_abort_signal(); - var { getHighWaterMark, getDefaultHighWaterMark } = require_state(); - var { - ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK, - ERR_STREAM_CANNOT_PIPE, - ERR_STREAM_DESTROYED, - ERR_STREAM_ALREADY_FINISHED, - ERR_STREAM_NULL_VALUES, - ERR_STREAM_WRITE_AFTER_END, - ERR_UNKNOWN_ENCODING, - } = require_errors().codes; - var { errorOrDestroy } = destroyImpl; - - function Writable(options = {}) { - const isDuplex = this instanceof require_duplex(); - if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options); - this._writableState = new WritableState(options, this, isDuplex); - if (options) { - if (typeof options.write === "function") this._write = options.write; - if (typeof options.writev === "function") this._writev = options.writev; - if (typeof options.destroy === "function") this._destroy = options.destroy; - if (typeof options.final === "function") this._final = options.final; - if (typeof options.construct === "function") this._construct = options.construct; - if (options.signal) addAbortSignal(options.signal, this); - } - Stream.call(this, options); - - destroyImpl.construct(this, () => { - const state = this._writableState; - if (!state.writing) { - clearBuffer(this, state); - } - finishMaybe(this, state); - }); - } - ObjectSetPrototypeOf(Writable.prototype, Stream.prototype); - ObjectSetPrototypeOf(Writable, Stream); - module.exports = Writable; - - function nop() {} - var kOnFinished = Symbol2("kOnFinished"); - function WritableState(options, stream, isDuplex) { - if (typeof isDuplex !== "boolean") isDuplex = stream instanceof require_duplex(); - this.objectMode = !!(options && options.objectMode); - if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode); - this.highWaterMark = options - ? getHighWaterMark(this, options, "writableHighWaterMark", isDuplex) - : getDefaultHighWaterMark(false); - this.finalCalled = false; - this.needDrain = false; - this.ending = false; - this.ended = false; - this.finished = false; - this.destroyed = false; - const noDecode = !!(options && options.decodeStrings === false); - this.decodeStrings = !noDecode; - this.defaultEncoding = (options && options.defaultEncoding) || "utf8"; - this.length = 0; - this.writing = false; - this.corked = 0; - this.sync = true; - this.bufferProcessing = false; - this.onwrite = onwrite.bind(void 0, stream); - this.writecb = null; - this.writelen = 0; - this.afterWriteTickInfo = null; - resetBuffer(this); - this.pendingcb = 0; - this.constructed = true; - this.prefinished = false; - this.errorEmitted = false; - this.emitClose = !options || options.emitClose !== false; - this.autoDestroy = !options || options.autoDestroy !== false; - this.errored = null; - this.closed = false; - this.closeEmitted = false; - this[kOnFinished] = []; - } - function resetBuffer(state) { - state.buffered = []; - state.bufferedIndex = 0; - state.allBuffers = true; - state.allNoop = true; - } - WritableState.prototype.getBuffer = function getBuffer() { - return ArrayPrototypeSlice(this.buffered, this.bufferedIndex); - }; - ObjectDefineProperty(WritableState.prototype, "bufferedRequestCount", { - get() { - return this.buffered.length - this.bufferedIndex; - }, - }); - - ObjectDefineProperty(Writable, SymbolHasInstance, { - value: function (object) { - if (FunctionPrototypeSymbolHasInstance(this, object)) return true; - if (this !== Writable) return false; - return object && object._writableState instanceof WritableState; - }, - }); - Writable.prototype.pipe = function () { - errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); - }; - function _write(stream, chunk, encoding, cb) { - const state = stream._writableState; - if (typeof encoding === "function") { - cb = encoding; - encoding = state.defaultEncoding; - } else { - if (!encoding) encoding = state.defaultEncoding; - else if (encoding !== "buffer" && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding); - if (typeof cb !== "function") cb = nop; - } - if (chunk === null) { - throw new ERR_STREAM_NULL_VALUES(); - } else if (!state.objectMode) { - if (typeof chunk === "string") { - if (state.decodeStrings !== false) { - chunk = Buffer.from(chunk, encoding); - encoding = "buffer"; - } - } else if (chunk instanceof Buffer) { - encoding = "buffer"; - } else if (Stream._isUint8Array(chunk)) { - chunk = Stream._uint8ArrayToBuffer(chunk); - encoding = "buffer"; - } else { - throw new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer", "Uint8Array"], chunk); - } - } - let err; - if (state.ending) { - err = new ERR_STREAM_WRITE_AFTER_END(); - } else if (state.destroyed) { - err = new ERR_STREAM_DESTROYED("write"); - } - if (err) { - runOnNextTick(cb, err); - errorOrDestroy(stream, err, true); - return err; - } - state.pendingcb++; - return writeOrBuffer(stream, state, chunk, encoding, cb); - } - Writable.prototype.write = function (chunk, encoding, cb) { - return _write(this, chunk, encoding, cb) === true; - }; - Writable.prototype.cork = function () { - this._writableState.corked++; - }; - Writable.prototype.uncork = function () { - const state = this._writableState; - if (state.corked) { - state.corked--; - if (!state.writing) clearBuffer(this, state); - } - }; - Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - if (typeof encoding === "string") encoding = StringPrototypeToLowerCase(encoding); - if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding); - this._writableState.defaultEncoding = encoding; - return this; - }; - function writeOrBuffer(stream, state, chunk, encoding, callback) { - const len = state.objectMode ? 1 : chunk.length; - state.length += len; - const ret = state.length < state.highWaterMark; - if (!ret) state.needDrain = true; - if (state.writing || state.corked || state.errored || !state.constructed) { - state.buffered.push({ - chunk, - encoding, - callback, - }); - if (state.allBuffers && encoding !== "buffer") { - state.allBuffers = false; - } - if (state.allNoop && callback !== nop) { - state.allNoop = false; - } - } else { - state.writelen = len; - state.writecb = callback; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; - } - return ret && !state.errored && !state.destroyed; - } - function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED("write")); - else if (writev) stream._writev(chunk, state.onwrite); - else stream._write(chunk, encoding, state.onwrite); - state.sync = false; - } - function onwriteError(stream, state, er, cb) { - --state.pendingcb; - cb(er); - errorBuffer(state); - errorOrDestroy(stream, er); - } - function onwrite(stream, er) { - const state = stream._writableState; - const sync = state.sync; - const cb = state.writecb; - if (typeof cb !== "function") { - errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK()); - return; - } - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; - if (er) { - Error.captureStackTrace(er); - if (!state.errored) { - state.errored = er; - } - if (stream._readableState && !stream._readableState.errored) { - stream._readableState.errored = er; - } - if (sync) { - runOnNextTick(onwriteError, stream, state, er, cb); - } else { - onwriteError(stream, state, er, cb); - } - } else { - if (state.buffered.length > state.bufferedIndex) { - clearBuffer(stream, state); - } - if (sync) { - if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) { - state.afterWriteTickInfo.count++; - } else { - state.afterWriteTickInfo = { - count: 1, - cb, - stream, - state, - }; - runOnNextTick(afterWriteTick, state.afterWriteTickInfo); - } - } else { - afterWrite(stream, state, 1, cb); - } - } - } - function afterWriteTick({ stream, state, count, cb }) { - state.afterWriteTickInfo = null; - return afterWrite(stream, state, count, cb); - } - function afterWrite(stream, state, count, cb) { - const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain; - if (needDrain) { - state.needDrain = false; - stream.emit("drain"); - } - while (count-- > 0) { - state.pendingcb--; - cb(); - } - if (state.destroyed) { - errorBuffer(state); - } - finishMaybe(stream, state); - } - function errorBuffer(state) { - if (state.writing) { - return; - } - for (let n = state.bufferedIndex; n < state.buffered.length; ++n) { - var _state$errored; - const { chunk, callback } = state.buffered[n]; - const len = state.objectMode ? 1 : chunk.length; - state.length -= len; - callback( - (_state$errored = state.errored) !== null && _state$errored !== void 0 - ? _state$errored - : new ERR_STREAM_DESTROYED("write"), - ); - } - const onfinishCallbacks = state[kOnFinished].splice(0); - for (let i = 0; i < onfinishCallbacks.length; i++) { - var _state$errored2; - onfinishCallbacks[i]( - (_state$errored2 = state.errored) !== null && _state$errored2 !== void 0 - ? _state$errored2 - : new ERR_STREAM_DESTROYED("end"), - ); - } - resetBuffer(state); - } - function clearBuffer(stream, state) { - if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) { - return; - } - const { buffered, bufferedIndex, objectMode } = state; - const bufferedLength = buffered.length - bufferedIndex; - if (!bufferedLength) { - return; - } - let i = bufferedIndex; - state.bufferProcessing = true; - if (bufferedLength > 1 && stream._writev) { - state.pendingcb -= bufferedLength - 1; - const callback = state.allNoop - ? nop - : err => { - for (let n = i; n < buffered.length; ++n) { - buffered[n].callback(err); - } - }; - const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i); - chunks.allBuffers = state.allBuffers; - doWrite(stream, state, true, state.length, chunks, "", callback); - resetBuffer(state); - } else { - do { - const { chunk, encoding, callback } = buffered[i]; - buffered[i++] = null; - const len = objectMode ? 1 : chunk.length; - doWrite(stream, state, false, len, chunk, encoding, callback); - } while (i < buffered.length && !state.writing); - if (i === buffered.length) { - resetBuffer(state); - } else if (i > 256) { - buffered.splice(0, i); - state.bufferedIndex = 0; - } else { - state.bufferedIndex = i; - } - } - state.bufferProcessing = false; - } - Writable.prototype._write = function (chunk, encoding, cb) { - if (this._writev) { - this._writev( - [ - { - chunk, - encoding, - }, - ], - cb, - ); - } else { - throw new ERR_METHOD_NOT_IMPLEMENTED("_write()"); - } - }; - Writable.prototype._writev = null; - Writable.prototype.end = function (chunk, encoding, cb, native = false) { - const state = this._writableState; - __DEBUG__ && debug("end", state, this.__id); - if (typeof chunk === "function") { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === "function") { - cb = encoding; - encoding = null; - } - let err; - if (chunk !== null && chunk !== void 0) { - let ret; - if (!native) { - ret = _write(this, chunk, encoding); - } else { - ret = this.write(chunk, encoding); - } - if (ret instanceof Error2) { - err = ret; - } - } - if (state.corked) { - state.corked = 1; - this.uncork(); - } - if (err) { - this.emit("error", err); - } else if (!state.errored && !state.ending) { - state.ending = true; - finishMaybe(this, state, true); - state.ended = true; - } else if (state.finished) { - err = new ERR_STREAM_ALREADY_FINISHED("end"); - } else if (state.destroyed) { - err = new ERR_STREAM_DESTROYED("end"); - } - if (typeof cb === "function") { - if (err || state.finished) { - runOnNextTick(cb, err); - } else { - state[kOnFinished].push(cb); - } - } - return this; - }; - function needFinish(state, tag) { - var needFinish = - state.ending && - !state.destroyed && - state.constructed && - state.length === 0 && - !state.errored && - state.buffered.length === 0 && - !state.finished && - !state.writing && - !state.errorEmitted && - !state.closeEmitted; - debug("needFinish", needFinish, tag); - return needFinish; - } - function callFinal(stream, state) { - let called = false; - function onFinish(err) { - if (called) { - errorOrDestroy(stream, err !== null && err !== void 0 ? err : ERR_MULTIPLE_CALLBACK()); - return; - } - called = true; - state.pendingcb--; - if (err) { - const onfinishCallbacks = state[kOnFinished].splice(0); - for (let i = 0; i < onfinishCallbacks.length; i++) { - onfinishCallbacks[i](err); - } - errorOrDestroy(stream, err, state.sync); - } else if (needFinish(state)) { - state.prefinished = true; - stream.emit("prefinish"); - state.pendingcb++; - runOnNextTick(finish, stream, state); - } - } - state.sync = true; - state.pendingcb++; - try { - stream._final(onFinish); - } catch (err) { - onFinish(err); - } - state.sync = false; - } - function prefinish(stream, state) { - if (!state.prefinished && !state.finalCalled) { - if (typeof stream._final === "function" && !state.destroyed) { - state.finalCalled = true; - callFinal(stream, state); - } else { - state.prefinished = true; - stream.emit("prefinish"); - } - } - } - function finishMaybe(stream, state, sync) { - __DEBUG__ && debug("finishMaybe -- state, sync", state, sync, stream.__id); - - if (!needFinish(state, stream.__id)) return; - - prefinish(stream, state); - if (state.pendingcb === 0) { - if (sync) { - state.pendingcb++; - runOnNextTick( - (stream2, state2) => { - if (needFinish(state2)) { - finish(stream2, state2); - } else { - state2.pendingcb--; - } - }, - stream, - state, - ); - } else if (needFinish(state)) { - state.pendingcb++; - finish(stream, state); - } - } - } - function finish(stream, state) { - state.pendingcb--; - state.finished = true; - const onfinishCallbacks = state[kOnFinished].splice(0); - for (let i = 0; i < onfinishCallbacks.length; i++) { - onfinishCallbacks[i](); - } - stream.emit("finish"); - if (state.autoDestroy) { - const rState = stream._readableState; - const autoDestroy = !rState || (rState.autoDestroy && (rState.endEmitted || rState.readable === false)); - if (autoDestroy) { - stream.destroy(); - } - } - } - ObjectDefineProperties(Writable.prototype, { - closed: { - get() { - return this._writableState ? this._writableState.closed : false; - }, - }, - destroyed: { - get() { - return this._writableState ? this._writableState.destroyed : false; - }, - set(value) { - if (this._writableState) { - this._writableState.destroyed = value; - } - }, - }, - writable: { - get() { - const w = this._writableState; - return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended; - }, - set(val) { - if (this._writableState) { - this._writableState.writable = !!val; - } - }, - }, - writableFinished: { - get() { - return this._writableState ? this._writableState.finished : false; - }, - }, - writableObjectMode: { - get() { - return this._writableState ? this._writableState.objectMode : false; - }, - }, - writableBuffer: { - get() { - return this._writableState && this._writableState.getBuffer(); - }, - }, - writableEnded: { - get() { - return this._writableState ? this._writableState.ending : false; - }, - }, - writableNeedDrain: { - get() { - const wState = this._writableState; - if (!wState) return false; - return !wState.destroyed && !wState.ending && wState.needDrain; - }, - }, - writableHighWaterMark: { - get() { - return this._writableState && this._writableState.highWaterMark; - }, - }, - writableCorked: { - get() { - return this._writableState ? this._writableState.corked : 0; - }, - }, - writableLength: { - get() { - return this._writableState && this._writableState.length; - }, - }, - errored: { - enumerable: false, - get() { - return this._writableState ? this._writableState.errored : null; - }, - }, - writableAborted: { - enumerable: false, - get: function () { - return !!( - this._writableState.writable !== false && - (this._writableState.destroyed || this._writableState.errored) && - !this._writableState.finished - ); - }, - }, - }); - var destroy = destroyImpl.destroy; - Writable.prototype.destroy = function (err, cb) { - const state = this._writableState; - if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) { - runOnNextTick(errorBuffer, state); - } - destroy.call(this, err, cb); - return this; - }; - Writable.prototype._undestroy = destroyImpl.undestroy; - Writable.prototype._destroy = function (err, cb) { - cb(err); - }; - Writable.prototype[EE.captureRejectionSymbol] = function (err) { - this.destroy(err); - }; - var webStreamsAdapters; - function lazyWebStreams() { - if (webStreamsAdapters === void 0) webStreamsAdapters = {}; - return webStreamsAdapters; - } - Writable.fromWeb = function (writableStream, options) { - return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options); - }; - Writable.toWeb = function (streamWritable) { - return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable); - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/duplexify.js -var require_duplexify = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/duplexify.js"(exports, module) { - "use strict"; - var bufferModule = __require("buffer"); - var { - isReadable, - isWritable, - isIterable, - isNodeStream, - isReadableNodeStream, - isWritableNodeStream, - isDuplexNodeStream, - } = require_utils(); - var eos = require_end_of_stream(); - var { - AbortError, - codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }, - } = require_errors(); - var { destroyer } = require_destroy(); - var Duplex = require_duplex(); - var Readable = require_readable(); - var { createDeferredPromise } = require_util(); - var from = require_from(); - var Blob = globalThis.Blob || bufferModule.Blob; - var isBlob = - typeof Blob !== "undefined" - ? function isBlob2(b) { - return b instanceof Blob; - } - : function isBlob2(b) { - return false; - }; - var AbortController = globalThis.AbortController || __require("abort-controller").AbortController; - var { FunctionPrototypeCall } = require_primordials(); - class Duplexify extends Duplex { - constructor(options) { - super(options); - - // https://github.com/nodejs/node/pull/34385 - - if ((options === null || options === undefined ? undefined : options.readable) === false) { - this._readableState.readable = false; - this._readableState.ended = true; - this._readableState.endEmitted = true; - } - if ((options === null || options === undefined ? undefined : options.writable) === false) { - this._writableState.writable = false; - this._writableState.ending = true; - this._writableState.ended = true; - this._writableState.finished = true; - } - } - } - module.exports = function duplexify(body, name) { - if (isDuplexNodeStream(body)) { - return body; - } - if (isReadableNodeStream(body)) { - return _duplexify({ - readable: body, - }); - } - if (isWritableNodeStream(body)) { - return _duplexify({ - writable: body, - }); - } - if (isNodeStream(body)) { - return _duplexify({ - writable: false, - readable: false, - }); - } - if (typeof body === "function") { - const { value, write, final, destroy } = fromAsyncGen(body); - if (isIterable(value)) { - return from(Duplexify, value, { - objectMode: true, - write, - final, - destroy, - }); - } - const then2 = value === null || value === void 0 ? void 0 : value.then; - if (typeof then2 === "function") { - let d; - const promise = FunctionPrototypeCall( - then2, - value, - val => { - if (val != null) { - throw new ERR_INVALID_RETURN_VALUE("nully", "body", val); - } - }, - err => { - destroyer(d, err); - }, - ); - return (d = new Duplexify({ - objectMode: true, - readable: false, - write, - final(cb) { - final(async () => { - try { - await promise; - runOnNextTick(cb, null); - } catch (err) { - runOnNextTick(cb, err); - } - }); - }, - destroy, - })); - } - throw new ERR_INVALID_RETURN_VALUE("Iterable, AsyncIterable or AsyncFunction", name, value); - } - if (isBlob(body)) { - return duplexify(body.arrayBuffer()); - } - if (isIterable(body)) { - return from(Duplexify, body, { - objectMode: true, - writable: false, - }); - } - if ( - typeof (body === null || body === void 0 ? void 0 : body.writable) === "object" || - typeof (body === null || body === void 0 ? void 0 : body.readable) === "object" - ) { - const readable = - body !== null && body !== void 0 && body.readable - ? isReadableNodeStream(body === null || body === void 0 ? void 0 : body.readable) - ? body === null || body === void 0 - ? void 0 - : body.readable - : duplexify(body.readable) - : void 0; - const writable = - body !== null && body !== void 0 && body.writable - ? isWritableNodeStream(body === null || body === void 0 ? void 0 : body.writable) - ? body === null || body === void 0 - ? void 0 - : body.writable - : duplexify(body.writable) - : void 0; - return _duplexify({ - readable, - writable, - }); - } - const then = body === null || body === void 0 ? void 0 : body.then; - if (typeof then === "function") { - let d; - FunctionPrototypeCall( - then, - body, - val => { - if (val != null) { - d.push(val); - } - d.push(null); - }, - err => { - destroyer(d, err); - }, - ); - return (d = new Duplexify({ - objectMode: true, - writable: false, - read() {}, - })); - } - throw new ERR_INVALID_ARG_TYPE( - name, - [ - "Blob", - "ReadableStream", - "WritableStream", - "Stream", - "Iterable", - "AsyncIterable", - "Function", - "{ readable, writable } pair", - "Promise", - ], - body, - ); - }; - function fromAsyncGen(fn) { - let { promise, resolve } = createDeferredPromise(); - const ac = new AbortController(); - const signal = ac.signal; - const value = fn( - (async function* () { - while (true) { - const _promise = promise; - promise = null; - const { chunk, done, cb } = await _promise; - runOnNextTick(cb); - if (done) return; - if (signal.aborted) - throw new AbortError(void 0, { - cause: signal.reason, - }); - ({ promise, resolve } = createDeferredPromise()); - yield chunk; - } - })(), - { - signal, - }, - ); - return { - value, - write(chunk, encoding, cb) { - const _resolve = resolve; - resolve = null; - _resolve({ - chunk, - done: false, - cb, - }); - }, - final(cb) { - const _resolve = resolve; - resolve = null; - _resolve({ - done: true, - cb, - }); - }, - destroy(err, cb) { - ac.abort(); - cb(err); - }, - }; - } - function _duplexify(pair) { - const r = - pair.readable && typeof pair.readable.read !== "function" ? Readable.wrap(pair.readable) : pair.readable; - const w = pair.writable; - let readable = !!isReadable(r); - let writable = !!isWritable(w); - let ondrain; - let onfinish; - let onreadable; - let onclose; - let d; - function onfinished(err) { - const cb = onclose; - onclose = null; - if (cb) { - cb(err); - } else if (err) { - d.destroy(err); - } else if (!readable && !writable) { - d.destroy(); - } - } - d = new Duplexify({ - readableObjectMode: !!(r !== null && r !== void 0 && r.readableObjectMode), - writableObjectMode: !!(w !== null && w !== void 0 && w.writableObjectMode), - readable, - writable, - }); - if (writable) { - eos(w, err => { - writable = false; - if (err) { - destroyer(r, err); - } - onfinished(err); - }); - d._write = function (chunk, encoding, callback) { - if (w.write(chunk, encoding)) { - callback(); - } else { - ondrain = callback; - } - }; - d._final = function (callback) { - w.end(); - onfinish = callback; - }; - w.on("drain", function () { - if (ondrain) { - const cb = ondrain; - ondrain = null; - cb(); - } - }); - w.on("finish", function () { - if (onfinish) { - const cb = onfinish; - onfinish = null; - cb(); - } - }); - } - if (readable) { - eos(r, err => { - readable = false; - if (err) { - destroyer(r, err); - } - onfinished(err); - }); - r.on("readable", function () { - if (onreadable) { - const cb = onreadable; - onreadable = null; - cb(); - } - }); - r.on("end", function () { - d.push(null); - }); - d._read = function () { - while (true) { - const buf = r.read(); - if (buf === null) { - onreadable = d._read; - return; - } - if (!d.push(buf)) { - return; - } - } - }; - } - d._destroy = function (err, callback) { - if (!err && onclose !== null) { - err = new AbortError(); - } - onreadable = null; - ondrain = null; - onfinish = null; - if (onclose === null) { - callback(err); - } else { - onclose = callback; - destroyer(w, err); - destroyer(r, err); - } - }; - return d; - } - }, -}); - -// node_modules/readable-stream/lib/internal/streams/duplex.js -var require_duplex = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/duplex.js"(exports, module) { - "use strict"; - var { ObjectDefineProperties, ObjectGetOwnPropertyDescriptor, ObjectKeys, ObjectSetPrototypeOf } = - require_primordials(); - - var Readable = require_readable(); - - function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - Readable.call(this, options); - Writable.call(this, options); - - if (options) { - this.allowHalfOpen = options.allowHalfOpen !== false; - if (options.readable === false) { - this._readableState.readable = false; - this._readableState.ended = true; - this._readableState.endEmitted = true; - } - if (options.writable === false) { - this._writableState.writable = false; - this._writableState.ending = true; - this._writableState.ended = true; - this._writableState.finished = true; - } - } else { - this.allowHalfOpen = true; - } - } - module.exports = Duplex; - - ObjectSetPrototypeOf(Duplex.prototype, Readable.prototype); - ObjectSetPrototypeOf(Duplex, Readable); - - { - for (var method in Writable.prototype) { - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } - } - - ObjectDefineProperties(Duplex.prototype, { - writable: ObjectGetOwnPropertyDescriptor(Writable.prototype, "writable"), - writableHighWaterMark: ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableHighWaterMark"), - writableObjectMode: ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableObjectMode"), - writableBuffer: ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableBuffer"), - writableLength: ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableLength"), - writableFinished: ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableFinished"), - writableCorked: ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableCorked"), - writableEnded: ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableEnded"), - writableNeedDrain: ObjectGetOwnPropertyDescriptor(Writable.prototype, "writableNeedDrain"), - destroyed: { - get() { - if (this._readableState === void 0 || this._writableState === void 0) { - return false; - } - return this._readableState.destroyed && this._writableState.destroyed; - }, - set(value) { - if (this._readableState && this._writableState) { - this._readableState.destroyed = value; - this._writableState.destroyed = value; - } - }, - }, - }); - var webStreamsAdapters; - function lazyWebStreams() { - if (webStreamsAdapters === void 0) webStreamsAdapters = {}; - return webStreamsAdapters; - } - Duplex.fromWeb = function (pair, options) { - return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options); - }; - Duplex.toWeb = function (duplex) { - return lazyWebStreams().newReadableWritablePairFromDuplex(duplex); - }; - var duplexify; - Duplex.from = function (body) { - if (!duplexify) { - duplexify = require_duplexify(); - } - return duplexify(body, "body"); - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/transform.js -var require_transform = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/transform.js"(exports, module) { - "use strict"; - var { ObjectSetPrototypeOf, Symbol: Symbol2 } = require_primordials(); - var { ERR_METHOD_NOT_IMPLEMENTED } = require_errors().codes; - var Duplex = require_duplex(); - function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - Duplex.call(this, options); - - this._readableState.sync = false; - this[kCallback] = null; - - if (options) { - if (typeof options.transform === "function") this._transform = options.transform; - if (typeof options.flush === "function") this._flush = options.flush; - } - - this.on("prefinish", prefinish.bind(this)); - } - ObjectSetPrototypeOf(Transform.prototype, Duplex.prototype); - ObjectSetPrototypeOf(Transform, Duplex); - - module.exports = Transform; - var kCallback = Symbol2("kCallback"); - function final(cb) { - if (typeof this._flush === "function" && !this.destroyed) { - this._flush((er, data) => { - if (er) { - if (cb) { - cb(er); - } else { - this.destroy(er); - } - return; - } - if (data != null) { - this.push(data); - } - this.push(null); - if (cb) { - cb(); - } - }); - } else { - this.push(null); - if (cb) { - cb(); - } - } - } - function prefinish() { - if (this._final !== final) { - final.call(this); - } - } - Transform.prototype._final = final; - Transform.prototype._transform = function (chunk, encoding, callback) { - throw new ERR_METHOD_NOT_IMPLEMENTED("_transform()"); - }; - Transform.prototype._write = function (chunk, encoding, callback) { - const rState = this._readableState; - const wState = this._writableState; - const length = rState.length; - this._transform(chunk, encoding, (err, val) => { - if (err) { - callback(err); - return; - } - if (val != null) { - this.push(val); - } - if ( - wState.ended || - length === rState.length || - rState.length < rState.highWaterMark || - rState.highWaterMark === 0 || - rState.length === 0 - ) { - callback(); - } else { - this[kCallback] = callback; - } - }); - }; - Transform.prototype._read = function () { - if (this[kCallback]) { - const callback = this[kCallback]; - this[kCallback] = null; - callback(); - } - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/passthrough.js -var require_passthrough = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/passthrough.js"(exports, module) { - "use strict"; - var { ObjectSetPrototypeOf } = require_primordials(); - var Transform = require_transform(); - - function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - Transform.call(this, options); - } - - ObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype); - ObjectSetPrototypeOf(PassThrough, Transform); - - PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); - }; - - module.exports = PassThrough; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/pipeline.js -var require_pipeline = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/pipeline.js"(exports, module) { - "use strict"; - var { ArrayIsArray, Promise: Promise2, SymbolAsyncIterator } = require_primordials(); - var eos = require_end_of_stream(); - var { once } = require_util(); - var destroyImpl = require_destroy(); - var Duplex = require_duplex(); - var { - aggregateTwoErrors, - codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE, ERR_MISSING_ARGS, ERR_STREAM_DESTROYED }, - AbortError, - } = require_errors(); - var { validateFunction, validateAbortSignal } = require_validators(); - var { isIterable, isReadable, isReadableNodeStream, isNodeStream } = require_utils(); - var AbortController = globalThis.AbortController || __require("abort-controller").AbortController; - var PassThrough; - var Readable; - function destroyer(stream, reading, writing) { - let finished = false; - stream.on("close", () => { - finished = true; - }); - const cleanup = eos( - stream, - { - readable: reading, - writable: writing, - }, - err => { - finished = !err; - }, - ); - return { - destroy: err => { - if (finished) return; - finished = true; - destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED("pipe")); - }, - cleanup, - }; - } - function popCallback(streams) { - validateFunction(streams[streams.length - 1], "streams[stream.length - 1]"); - return streams.pop(); - } - function makeAsyncIterable(val) { - if (isIterable(val)) { - return val; - } else if (isReadableNodeStream(val)) { - return fromReadable(val); - } - throw new ERR_INVALID_ARG_TYPE("val", ["Readable", "Iterable", "AsyncIterable"], val); - } - async function* fromReadable(val) { - if (!Readable) { - Readable = require_readable(); - } - yield* Readable.prototype[SymbolAsyncIterator].call(val); - } - async function pump(iterable, writable, finish, { end }) { - let error; - let onresolve = null; - const resume = err => { - if (err) { - error = err; - } - if (onresolve) { - const callback = onresolve; - onresolve = null; - callback(); - } - }; - const wait = () => - new Promise2((resolve, reject) => { - if (error) { - reject(error); - } else { - onresolve = () => { - if (error) { - reject(error); - } else { - resolve(); - } - }; - } - }); - writable.on("drain", resume); - const cleanup = eos( - writable, - { - readable: false, - }, - resume, - ); - try { - if (writable.writableNeedDrain) { - await wait(); - } - for await (const chunk of iterable) { - if (!writable.write(chunk)) { - await wait(); - } - } - if (end) { - writable.end(); - } - await wait(); - finish(); - } catch (err) { - finish(error !== err ? aggregateTwoErrors(error, err) : err); - } finally { - cleanup(); - writable.off("drain", resume); - } - } - function pipeline(...streams) { - return pipelineImpl(streams, once(popCallback(streams))); - } - function pipelineImpl(streams, callback, opts) { - if (streams.length === 1 && ArrayIsArray(streams[0])) { - streams = streams[0]; - } - if (streams.length < 2) { - throw new ERR_MISSING_ARGS("streams"); - } - const ac = new AbortController(); - const signal = ac.signal; - const outerSignal = opts === null || opts === void 0 ? void 0 : opts.signal; - const lastStreamCleanup = []; - validateAbortSignal(outerSignal, "options.signal"); - function abort() { - finishImpl(new AbortError()); - } - outerSignal === null || outerSignal === void 0 ? void 0 : outerSignal.addEventListener("abort", abort); - let error; - let value; - const destroys = []; - let finishCount = 0; - function finish(err) { - finishImpl(err, --finishCount === 0); - } - function finishImpl(err, final) { - if (err && (!error || error.code === "ERR_STREAM_PREMATURE_CLOSE")) { - error = err; - } - if (!error && !final) { - return; - } - while (destroys.length) { - destroys.shift()(error); - } - outerSignal === null || outerSignal === void 0 ? void 0 : outerSignal.removeEventListener("abort", abort); - ac.abort(); - if (final) { - if (!error) { - lastStreamCleanup.forEach(fn => fn()); - } - runOnNextTick(callback, error, value); - } - } - let ret; - for (let i = 0; i < streams.length; i++) { - const stream = streams[i]; - const reading = i < streams.length - 1; - const writing = i > 0; - const end = reading || (opts === null || opts === void 0 ? void 0 : opts.end) !== false; - const isLastStream = i === streams.length - 1; - if (isNodeStream(stream)) { - let onError = function (err) { - if (err && err.name !== "AbortError" && err.code !== "ERR_STREAM_PREMATURE_CLOSE") { - finish(err); - } - }; - if (end) { - const { destroy, cleanup } = destroyer(stream, reading, writing); - destroys.push(destroy); - if (isReadable(stream) && isLastStream) { - lastStreamCleanup.push(cleanup); - } - } - stream.on("error", onError); - if (isReadable(stream) && isLastStream) { - lastStreamCleanup.push(() => { - stream.removeListener("error", onError); - }); - } - } - if (i === 0) { - if (typeof stream === "function") { - ret = stream({ - signal, - }); - if (!isIterable(ret)) { - throw new ERR_INVALID_RETURN_VALUE("Iterable, AsyncIterable or Stream", "source", ret); - } - } else if (isIterable(stream) || isReadableNodeStream(stream)) { - ret = stream; - } else { - ret = Duplex.from(stream); - } - } else if (typeof stream === "function") { - ret = makeAsyncIterable(ret); - ret = stream(ret, { - signal, - }); - if (reading) { - if (!isIterable(ret, true)) { - throw new ERR_INVALID_RETURN_VALUE("AsyncIterable", `transform[${i - 1}]`, ret); - } - } else { - var _ret; - if (!PassThrough) { - PassThrough = require_passthrough(); - } - const pt = new PassThrough({ - objectMode: true, - }); - const then = (_ret = ret) === null || _ret === void 0 ? void 0 : _ret.then; - if (typeof then === "function") { - finishCount++; - then.call( - ret, - val => { - value = val; - if (val != null) { - pt.write(val); - } - if (end) { - pt.end(); - } - runOnNextTick(finish); - }, - err => { - pt.destroy(err); - runOnNextTick(finish, err); - }, - ); - } else if (isIterable(ret, true)) { - finishCount++; - pump(ret, pt, finish, { - end, - }); - } else { - throw new ERR_INVALID_RETURN_VALUE("AsyncIterable or Promise", "destination", ret); - } - ret = pt; - const { destroy, cleanup } = destroyer(ret, false, true); - destroys.push(destroy); - if (isLastStream) { - lastStreamCleanup.push(cleanup); - } - } - } else if (isNodeStream(stream)) { - if (isReadableNodeStream(ret)) { - finishCount += 2; - const cleanup = pipe(ret, stream, finish, { - end, - }); - if (isReadable(stream) && isLastStream) { - lastStreamCleanup.push(cleanup); - } - } else if (isIterable(ret)) { - finishCount++; - pump(ret, stream, finish, { - end, - }); - } else { - throw new ERR_INVALID_ARG_TYPE("val", ["Readable", "Iterable", "AsyncIterable"], ret); - } - ret = stream; - } else { - ret = Duplex.from(stream); - } - } - if ( - (signal !== null && signal !== void 0 && signal.aborted) || - (outerSignal !== null && outerSignal !== void 0 && outerSignal.aborted) - ) { - runOnNextTick(abort); - } - return ret; - } - function pipe(src, dst, finish, { end }) { - src.pipe(dst, { - end, - }); - if (end) { - src.once("end", () => dst.end()); - } else { - finish(); - } - eos( - src, - { - readable: true, - writable: false, - }, - err => { - const rState = src._readableState; - if ( - err && - err.code === "ERR_STREAM_PREMATURE_CLOSE" && - rState && - rState.ended && - !rState.errored && - !rState.errorEmitted - ) { - src.once("end", finish).once("error", finish); - } else { - finish(err); - } - }, - ); - return eos( - dst, - { - readable: false, - writable: true, - }, - finish, - ); - } - module.exports = { - pipelineImpl, - pipeline, - }; - }, -}); - -// node_modules/readable-stream/lib/internal/streams/compose.js -var require_compose = __commonJS({ - "node_modules/readable-stream/lib/internal/streams/compose.js"(exports, module) { - "use strict"; - var { pipeline } = require_pipeline(); - var Duplex = require_duplex(); - var { destroyer } = require_destroy(); - var { isNodeStream, isReadable, isWritable } = require_utils(); - var { - AbortError, - codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }, - } = require_errors(); - module.exports = function compose(...streams) { - if (streams.length === 0) { - throw new ERR_MISSING_ARGS("streams"); - } - if (streams.length === 1) { - return Duplex.from(streams[0]); - } - const orgStreams = [...streams]; - if (typeof streams[0] === "function") { - streams[0] = Duplex.from(streams[0]); - } - if (typeof streams[streams.length - 1] === "function") { - const idx = streams.length - 1; - streams[idx] = Duplex.from(streams[idx]); - } - for (let n = 0; n < streams.length; ++n) { - if (!isNodeStream(streams[n])) { - continue; - } - if (n < streams.length - 1 && !isReadable(streams[n])) { - throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], "must be readable"); - } - if (n > 0 && !isWritable(streams[n])) { - throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], "must be writable"); - } - } - let ondrain; - let onfinish; - let onreadable; - let onclose; - let d; - function onfinished(err) { - const cb = onclose; - onclose = null; - if (cb) { - cb(err); - } else if (err) { - d.destroy(err); - } else if (!readable && !writable) { - d.destroy(); - } - } - const head = streams[0]; - const tail = pipeline(streams, onfinished); - const writable = !!isWritable(head); - const readable = !!isReadable(tail); - d = new Duplex({ - writableObjectMode: !!(head !== null && head !== void 0 && head.writableObjectMode), - readableObjectMode: !!(tail !== null && tail !== void 0 && tail.writableObjectMode), - writable, - readable, - }); - if (writable) { - d._write = function (chunk, encoding, callback) { - if (head.write(chunk, encoding)) { - callback(); - } else { - ondrain = callback; - } - }; - d._final = function (callback) { - head.end(); - onfinish = callback; - }; - head.on("drain", function () { - if (ondrain) { - const cb = ondrain; - ondrain = null; - cb(); - } - }); - tail.on("finish", function () { - if (onfinish) { - const cb = onfinish; - onfinish = null; - cb(); - } - }); - } - if (readable) { - tail.on("readable", function () { - if (onreadable) { - const cb = onreadable; - onreadable = null; - cb(); - } - }); - tail.on("end", function () { - d.push(null); - }); - d._read = function () { - while (true) { - const buf = tail.read(); - if (buf === null) { - onreadable = d._read; - return; - } - if (!d.push(buf)) { - return; - } - } - }; - } - d._destroy = function (err, callback) { - if (!err && onclose !== null) { - err = new AbortError(); - } - onreadable = null; - ondrain = null; - onfinish = null; - if (onclose === null) { - callback(err); - } else { - onclose = callback; - destroyer(tail, err); - } - }; - return d; - }; - }, -}); - -// node_modules/readable-stream/lib/stream/promises.js -var require_promises = __commonJS({ - "node_modules/readable-stream/lib/stream/promises.js"(exports, module) { - "use strict"; - var { ArrayPrototypePop, Promise: Promise2 } = require_primordials(); - var { isIterable, isNodeStream } = require_utils(); - var { pipelineImpl: pl } = require_pipeline(); - var { finished } = require_end_of_stream(); - function pipeline(...streams) { - return new Promise2((resolve, reject) => { - let signal; - let end; - const lastArg = streams[streams.length - 1]; - if (lastArg && typeof lastArg === "object" && !isNodeStream(lastArg) && !isIterable(lastArg)) { - const options = ArrayPrototypePop(streams); - signal = options.signal; - end = options.end; - } - pl( - streams, - (err, value) => { - if (err) { - reject(err); - } else { - resolve(value); - } - }, - { - signal, - end, - }, - ); - }); - } - module.exports = { - finished, - pipeline, - }; - }, -}); -// node_modules/readable-stream/lib/stream.js -var require_stream = __commonJS({ - "node_modules/readable-stream/lib/stream.js"(exports, module) { - "use strict"; - var { ObjectDefineProperty, ObjectKeys, ReflectApply } = require_primordials(); - var { - promisify: { custom: customPromisify }, - } = require_util(); - - var { streamReturningOperators, promiseReturningOperators } = require_operators(); - var { - codes: { ERR_ILLEGAL_CONSTRUCTOR }, - } = require_errors(); - var compose = require_compose(); - var { pipeline } = require_pipeline(); - var { destroyer } = require_destroy(); - var eos = require_end_of_stream(); - var promises = require_promises(); - var utils = require_utils(); - var Stream = (module.exports = require_legacy().Stream); - Stream.isDisturbed = utils.isDisturbed; - Stream.isErrored = utils.isErrored; - Stream.isWritable = utils.isWritable; - Stream.isReadable = utils.isReadable; - Stream.Readable = require_readable(); - for (const key of ObjectKeys(streamReturningOperators)) { - let fn = function (...args) { - if (new.target) { - throw ERR_ILLEGAL_CONSTRUCTOR(); - } - return Stream.Readable.from(ReflectApply(op, this, args)); - }; - const op = streamReturningOperators[key]; - ObjectDefineProperty(fn, "name", { - value: op.name, - }); - ObjectDefineProperty(fn, "length", { - value: op.length, - }); - ObjectDefineProperty(Stream.Readable.prototype, key, { - value: fn, - enumerable: false, - configurable: true, - writable: true, - }); - } - for (const key of ObjectKeys(promiseReturningOperators)) { - let fn = function (...args) { - if (new.target) { - throw ERR_ILLEGAL_CONSTRUCTOR(); - } - return ReflectApply(op, this, args); - }; - const op = promiseReturningOperators[key]; - ObjectDefineProperty(fn, "name", { - value: op.name, - }); - ObjectDefineProperty(fn, "length", { - value: op.length, - }); - ObjectDefineProperty(Stream.Readable.prototype, key, { - value: fn, - enumerable: false, - configurable: true, - writable: true, - }); - } - Stream.Writable = require_writable(); - Stream.Duplex = require_duplex(); - Stream.Transform = require_transform(); - Stream.PassThrough = require_passthrough(); - Stream.pipeline = pipeline; - var { addAbortSignal } = require_add_abort_signal(); - Stream.addAbortSignal = addAbortSignal; - Stream.finished = eos; - Stream.destroy = destroyer; - Stream.compose = compose; - ObjectDefineProperty(Stream, "promises", { - configurable: true, - enumerable: true, - get() { - return promises; - }, - }); - ObjectDefineProperty(pipeline, customPromisify, { - enumerable: true, - get() { - return promises.pipeline; - }, - }); - ObjectDefineProperty(eos, customPromisify, { - enumerable: true, - get() { - return promises.finished; - }, - }); - Stream.Stream = Stream; - Stream._isUint8Array = function isUint8Array(value) { - return value instanceof Uint8Array; - }; - Stream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) { - return new Buffer(chunk.buffer, chunk.byteOffset, chunk.byteLength); - }; - }, -}); - -// node_modules/readable-stream/lib/ours/index.js -var require_ours = __commonJS({ - "node_modules/readable-stream/lib/ours/index.js"(exports, module) { - "use strict"; - const CustomStream = require_stream(); - const promises = require_promises(); - const originalDestroy = CustomStream.Readable.destroy; - module.exports = CustomStream; - module.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer; - module.exports._isUint8Array = CustomStream._isUint8Array; - module.exports.isDisturbed = CustomStream.isDisturbed; - module.exports.isErrored = CustomStream.isErrored; - module.exports.isWritable = CustomStream.isWritable; - module.exports.isReadable = CustomStream.isReadable; - module.exports.Readable = CustomStream.Readable; - module.exports.Writable = CustomStream.Writable; - module.exports.Duplex = CustomStream.Duplex; - module.exports.Transform = CustomStream.Transform; - module.exports.PassThrough = CustomStream.PassThrough; - module.exports.addAbortSignal = CustomStream.addAbortSignal; - module.exports.finished = CustomStream.finished; - module.exports.destroy = CustomStream.destroy; - module.exports.destroy = originalDestroy; - module.exports.pipeline = CustomStream.pipeline; - module.exports.compose = CustomStream.compose; - - module.exports._getNativeReadableStreamPrototype = getNativeReadableStreamPrototype; - module.exports.NativeWritable = NativeWritable; - - Object.defineProperty(CustomStream, "promises", { - configurable: true, - enumerable: true, - get() { - return promises; - }, - }); - module.exports.Stream = CustomStream.Stream; - module.exports.default = module.exports; - }, -}); - -/** - * Bun native stream wrapper - * - * This glue code lets us avoid using ReadableStreams to wrap Bun internal streams - * - */ -function createNativeStreamReadable(nativeType, Readable) { - var [pull, start, cancel, setClose, deinit, updateRef, drainFn] = globalThis[Symbol.for("Bun.lazy")](nativeType); - - var closer = [false]; - var handleNumberResult = function (nativeReadable, result, view, isClosed) { - if (result > 0) { - const slice = view.subarray(0, result); - const remainder = view.subarray(result); - if (slice.byteLength > 0) { - nativeReadable.push(slice); - } - - if (isClosed) { - nativeReadable.push(null); - } - - return remainder.byteLength > 0 ? remainder : undefined; - } - - if (isClosed) { - nativeReadable.push(null); - } - - return view; - }; - - var handleArrayBufferViewResult = function (nativeReadable, result, view, isClosed) { - if (result.byteLength > 0) { - nativeReadable.push(result); - } - - if (isClosed) { - nativeReadable.push(null); - } - - return view; - }; - - var DYNAMICALLY_ADJUST_CHUNK_SIZE = process.env.BUN_DISABLE_DYNAMIC_CHUNK_SIZE !== "1"; - - const finalizer = new FinalizationRegistry(ptr => ptr && deinit(ptr)); - const MIN_BUFFER_SIZE = 512; - var NativeReadable = class NativeReadable extends Readable { - #ptr; - #refCount = 1; - #constructed = false; - #remainingChunk = undefined; - #highWaterMark; - #pendingRead = false; - #hasResized = !DYNAMICALLY_ADJUST_CHUNK_SIZE; - #unregisterToken; - constructor(ptr, options = {}) { - super(options); - if (typeof options.highWaterMark === "number") { - this.#highWaterMark = options.highWaterMark; - } else { - this.#highWaterMark = 256 * 1024; - } - this.#ptr = ptr; - this.#constructed = false; - this.#remainingChunk = undefined; - this.#pendingRead = false; - this.#unregisterToken = {}; - finalizer.register(this, this.#ptr, this.#unregisterToken); - } - - // maxToRead is by default the highWaterMark passed from the Readable.read call to this fn - // However, in the case of an fs.ReadStream, we can pass the number of bytes we want to read - // which may be significantly less than the actual highWaterMark - _read(maxToRead) { - __DEBUG__ && debug("NativeReadable._read", this.__id); - if (this.#pendingRead) { - __DEBUG__ && debug("pendingRead is true", this.__id); - return; - } - - var ptr = this.#ptr; - __DEBUG__ && debug("ptr @ NativeReadable._read", ptr, this.__id); - if (ptr === 0) { - this.push(null); - return; - } - - if (!this.#constructed) { - __DEBUG__ && debug("NativeReadable not constructed yet", this.__id); - this.#internalConstruct(ptr); - } - - return this.#internalRead(this.#getRemainingChunk(maxToRead), ptr); - // const internalReadRes = this.#internalRead( - // this.#getRemainingChunk(), - // ptr, - // ); - // // REVERT ME - // const wrap = new Promise((resolve) => { - // if (!this.internalReadRes?.then) { - // debug("internalReadRes not promise"); - // resolve(internalReadRes); - // return; - // } - // internalReadRes.then((result) => { - // debug("internalReadRes done"); - // resolve(result); - // }); - // }); - // return wrap; - } - - #internalConstruct(ptr) { - this.#constructed = true; - const result = start(ptr, this.#highWaterMark); - __DEBUG__ && debug("NativeReadable internal `start` result", result, this.__id); - - if (typeof result === "number" && result > 1) { - this.#hasResized = true; - __DEBUG__ && debug("NativeReadable resized", this.__id); - - this.#highWaterMark = Math.min(this.#highWaterMark, result); - } - - if (drainFn) { - const drainResult = drainFn(ptr); - __DEBUG__ && debug("NativeReadable drain result", drainResult, this.__id); - if ((drainResult?.byteLength ?? 0) > 0) { - this.push(drainResult); - } - } - } - - // maxToRead can be the highWaterMark (by default) or the remaining amount of the stream to read - // This is so the the consumer of the stream can terminate the stream early if they know - // how many bytes they want to read (ie. when reading only part of a file) - #getRemainingChunk(maxToRead = this.#highWaterMark) { - var chunk = this.#remainingChunk; - __DEBUG__ && debug("chunk @ #getRemainingChunk", chunk, this.__id); - if (chunk?.byteLength ?? 0 < MIN_BUFFER_SIZE) { - var size = maxToRead > MIN_BUFFER_SIZE ? maxToRead : MIN_BUFFER_SIZE; - this.#remainingChunk = chunk = new Buffer(size); - } - return chunk; - } - - push(result, encoding) { - __DEBUG__ && debug("NativeReadable push -- result, encoding", result, encoding, this.__id); - return super.push(...arguments); - } - - #handleResult(result, view, isClosed) { - __DEBUG__ && debug("result, isClosed @ #handleResult", result, isClosed, this.__id); - - if (typeof result === "number") { - if (result >= this.#highWaterMark && !this.#hasResized && !isClosed) { - this.#highWaterMark *= 2; - this.#hasResized = true; - } - - return handleNumberResult(this, result, view, isClosed); - } else if (typeof result === "boolean") { - this.push(null); - return view?.byteLength ?? 0 > 0 ? view : undefined; - } else if (ArrayBuffer.isView(result)) { - if (result.byteLength >= this.#highWaterMark && !this.#hasResized && !isClosed) { - this.#highWaterMark *= 2; - this.#hasResized = true; - __DEBUG__ && debug("Resized", this.__id); - } - - return handleArrayBufferViewResult(this, result, view, isClosed); - } else { - __DEBUG__ && debug("Unknown result type", result, this.__id); - throw new Error("Invalid result from pull"); - } - } - - #internalRead(view, ptr) { - __DEBUG__ && debug("#internalRead()", this.__id); - closer[0] = false; - var result = pull(ptr, view, closer); - if (isPromise(result)) { - this.#pendingRead = true; - return result.then( - result => { - this.#pendingRead = false; - __DEBUG__ && debug("pending no longerrrrrrrr (result returned from pull)", this.__id); - this.#remainingChunk = this.#handleResult(result, view, closer[0]); - }, - reason => { - __DEBUG__ && debug("error from pull", reason, this.__id); - errorOrDestroy(this, reason); - }, - ); - } else { - this.#remainingChunk = this.#handleResult(result, view, closer[0]); - } - } - - _destroy(error, callback) { - var ptr = this.#ptr; - if (ptr === 0) { - callback(error); - return; - } - - finalizer.unregister(this.#unregisterToken); - this.#ptr = 0; - if (updateRef) { - updateRef(ptr, false); - } - __DEBUG__ && debug("NativeReadable destroyed", this.__id); - cancel(ptr, error); - callback(error); - } - - ref() { - var ptr = this.#ptr; - if (ptr === 0) return; - if (this.#refCount++ === 0) { - updateRef(ptr, true); - } - } - - unref() { - var ptr = this.#ptr; - if (ptr === 0) return; - if (this.#refCount-- === 1) { - updateRef(ptr, false); - } - } - }; - - if (!updateRef) { - NativeReadable.prototype.ref = undefined; - NativeReadable.prototype.unref = undefined; - } - - return NativeReadable; -} - -var nativeReadableStreamPrototypes = { - 0: undefined, - 1: undefined, - 2: undefined, - 3: undefined, - 4: undefined, - 5: undefined, -}; -function getNativeReadableStreamPrototype(nativeType, Readable) { - return (nativeReadableStreamPrototypes[nativeType] ||= createNativeStreamReadable(nativeType, Readable)); -} - -function getNativeReadableStream(Readable, stream, options) { - if (!(stream && typeof stream === "object" && stream instanceof ReadableStream)) { - return undefined; - } - - const native = direct(stream); - if (!native) { - debug("no native readable stream"); - return undefined; - } - const { stream: ptr, data: type } = native; - - const NativeReadable = getNativeReadableStreamPrototype(type, Readable); - - return new NativeReadable(ptr, options); -} -/** --- Bun native stream wrapper --- */ - -var Writable = require_writable(); -var NativeWritable = class NativeWritable extends Writable { - #pathOrFdOrSink; - #fileSink; - #native = true; - - _construct; - _destroy; - _final; - - constructor(pathOrFdOrSink, options = {}) { - super(options); - - this._construct = this.#internalConstruct; - this._destroy = this.#internalDestroy; - this._final = this.#internalFinal; - - this.#pathOrFdOrSink = pathOrFdOrSink; - } - - // These are confusingly two different fns for construct which initially were the same thing because - // `_construct` is part of the lifecycle of Writable and is not called lazily, - // so we need to separate our _construct for Writable state and actual construction of the write stream - #internalConstruct(cb) { - this._writableState.constructed = true; - this.constructed = true; - cb(); - } - - #lazyConstruct() { - // TODO: Turn this check into check for instanceof FileSink - if (typeof this.#pathOrFdOrSink === "object") { - if (typeof this.#pathOrFdOrSink.write === "function") { - this.#fileSink = this.#pathOrFdOrSink; - } else { - throw new Error("Invalid FileSink"); - } - } else { - this.#fileSink = Bun.file(this.#pathOrFdOrSink).writer(); - } - } - - write(chunk, encoding, cb, native = this.#native) { - if (!native) { - this.#native = false; - return super.write(chunk, encoding, cb); - } - - if (!this.#fileSink) { - this.#lazyConstruct(); - } - var fileSink = this.#fileSink; - var result = fileSink.write(chunk); - - if (isPromise(result)) { - // var writePromises = this.#writePromises; - // var i = writePromises.length; - // writePromises[i] = result; - result.then(() => { - this.emit("drain"); - fileSink.flush(true); - // // We can't naively use i here because we don't know when writes will resolve necessarily - // writePromises.splice(writePromises.indexOf(result), 1); - }); - return false; - } - fileSink.flush(true); - // TODO: Should we just have a calculation based on encoding and length of chunk? - if (cb) cb(null, chunk.byteLength); - return true; - } - - end(chunk, encoding, cb, native = this.#native) { - return super.end(chunk, encoding, cb, native); - } - - #internalDestroy(error, cb) { - this._writableState.destroyed = true; - if (cb) cb(error); - } - - #internalFinal(cb) { - if (this.#fileSink) { - this.#fileSink.end(); - } - if (cb) cb(); - } - - ref() { - if (!this.#fileSink) { - this.#lazyConstruct(); - } - this.#fileSink.ref(); - } - - unref() { - if (!this.#fileSink) return; - this.#fileSink.unref(); - } -}; - -const stream_exports = require_ours(); -stream_exports[Symbol.for("CommonJS")] = 0; -stream_exports[Symbol.for("::bunternal::")] = { _ReadableFromWeb }; -export default stream_exports; -export var _uint8ArrayToBuffer = stream_exports._uint8ArrayToBuffer; -export var _isUint8Array = stream_exports._isUint8Array; -export var isDisturbed = stream_exports.isDisturbed; -export var isErrored = stream_exports.isErrored; -export var isWritable = stream_exports.isWritable; -export var isReadable = stream_exports.isReadable; -export var Readable = stream_exports.Readable; -export var Writable = stream_exports.Writable; -export var Duplex = stream_exports.Duplex; -export var Transform = stream_exports.Transform; -export var PassThrough = stream_exports.PassThrough; -export var addAbortSignal = stream_exports.addAbortSignal; -export var finished = stream_exports.finished; -export var destroy = stream_exports.destroy; -export var pipeline = stream_exports.pipeline; -export var compose = stream_exports.compose; -export var Stream = stream_exports.Stream; -export var eos = (stream_exports["eos"] = require_end_of_stream); -export var _getNativeReadableStreamPrototype = stream_exports._getNativeReadableStreamPrototype; -export var NativeWritable = stream_exports.NativeWritable; -export var promises = Stream.promise; diff --git a/src/bun.js/trace_events.exports.js b/src/bun.js/trace_events.exports.js deleted file mode 100644 index 44ee28203..000000000 --- a/src/bun.js/trace_events.exports.js +++ /dev/null @@ -1,33 +0,0 @@ -// This is a stub! This is not actually implemented yet. - -class Tracing { - enabled = false; - categories = ""; -} - -function ERR_INVALID_ARG_TYPE(name, type, value) { - const err = new TypeError(`The "${name}" argument must be of type ${type}. Received ${value}`); - err.code = "ERR_INVALID_ARG_TYPE"; - return err; -} - -function createTracing(opts) { - if (typeof opts !== "object" || opts == null) { - throw new ERR_INVALID_ARG_TYPE("options", "Object", opts); - } - - // TODO: validate categories - return new Tracing(opts); -} - -function getEnabledCategories() { - return ""; -} - -var defaultObject = { - createTracing, - getEnabledCategories, - [Symbol.for("CommonJS")]: 0, -}; - -export { defaultObject as default, createTracing, getEnabledCategories }; diff --git a/src/bun.js/undici.exports.js b/src/bun.js/undici.exports.js deleted file mode 100644 index cf3968b58..000000000 --- a/src/bun.js/undici.exports.js +++ /dev/null @@ -1,331 +0,0 @@ -// const { Object } = import.meta.primordials; -const { EventEmitter } = import.meta.require("events"); -const { - Readable, - [Symbol.for("::bunternal::")]: { _ReadableFromWeb }, -} = import.meta.require("node:stream"); - -const ObjectCreate = Object.create; -const kEmptyObject = ObjectCreate(null); - -export var fetch = Bun.fetch; -export var Response = globalThis.Response; -export var Headers = globalThis.Headers; -export var Request = globalThis.Request; -export var URLSearchParams = globalThis.URLSearchParams; -export var URL = globalThis.URL; -export class File extends Blob {} -export class FileReader extends EventTarget { - constructor() { - throw new Error("Not implemented yet!"); - } -} - -export var FormData = globalThis.FormData; -function notImplemented() { - throw new Error("Not implemented in bun"); -} - -/** - * An object representing a URL. - * @typedef {Object} UrlObject - * @property {string | number} [port] - * @property {string} [path] - * @property {string} [pathname] - * @property {string} [hostname] - * @property {string} [origin] - * @property {string} [protocol] - * @property {string} [search] - */ - -/** - * @typedef {import('http').IncomingHttpHeaders} IncomingHttpHeaders - * @typedef {'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH'} HttpMethod - * @typedef {import('stream').Readable} Readable - * @typedef {import('events').EventEmitter} EventEmitter - */ - -class BodyReadable extends _ReadableFromWeb { - #response; - #bodyUsed; - - constructor(response, options = {}) { - var { body } = response; - if (!body) throw new Error("Response body is null"); - super(options, body); - - this.#response = response; - this.#bodyUsed = response.bodyUsed; - } - - get bodyUsed() { - // return this.#response.bodyUsed; - return this.#bodyUsed; - } - - #consume() { - if (this.#bodyUsed) throw new TypeError("unusable"); - this.#bodyUsed = true; - } - - async arrayBuffer() { - this.#consume(); - return await this.#response.arrayBuffer(); - } - - async blob() { - this.#consume(); - return await this.#response.blob(); - } - - async formData() { - this.#consume(); - return await this.#response.formData(); - } - - async json() { - this.#consume(); - return await this.#response.json(); - } - - async text() { - this.#consume(); - return await this.#response.text(); - } -} - -// NOT IMPLEMENTED -// * idempotent?: boolean; -// * onInfo?: (info: { statusCode: number, headers: Object<string, string | string[]> }) => void; -// * opaque?: *; -// * responseHeader: 'raw' | null; -// * headersTimeout?: number | null; -// * bodyTimeout?: number | null; -// * upgrade?: boolean | string | null; -// * blocking?: boolean; - -/** - * Performs an HTTP request. - * @param {string | URL | UrlObject} url - * @param {{ - * dispatcher: Dispatcher; - * method: HttpMethod; - * signal?: AbortSignal | EventEmitter | null; - * maxRedirections?: number; - * body?: string | Buffer | Uint8Array | Readable | null | FormData; - * headers?: IncomingHttpHeaders | string[] | null; - * query?: Record<string, any>; - * reset?: boolean; - * throwOnError?: boolean; - * }} [options] - * @returns {{ - * statusCode: number; - * headers: IncomingHttpHeaders; - * body: ResponseBody; - * trailers: Object<string, string>; - * opaque: *; - * context: Object<string, *>; - * }} - */ -export async function request( - url, - options = { - method: "GET", - signal: null, - headers: null, - query: null, - // idempotent: false, // GET and HEAD requests are idempotent by default - // blocking = false, - // upgrade = false, - // headersTimeout: 30000, - // bodyTimeout: 30000, - reset: false, - throwOnError: false, - body: null, - // dispatcher, - }, -) { - let { - method = "GET", - headers: inputHeaders, - query, - signal, - // idempotent, // GET and HEAD requests are idempotent by default - // blocking = false, - // upgrade = false, - // headersTimeout = 30000, - // bodyTimeout = 30000, - reset = false, - throwOnError = false, - body: inputBody, - maxRedirections, - // dispatcher, - } = options; - - // TODO: More validations - - if (typeof url === "string") { - if (query) url = new URL(url); - } else if (typeof url === "object" && url !== null) { - if (!(url instanceof URL)) { - // TODO: Parse undici UrlObject - throw new Error("not implemented"); - } - } else throw new TypeError("url must be a string, URL, or UrlObject"); - - if (typeof url === "string" && query) url = new URL(url); - if (typeof url === "object" && url !== null && query) if (query) url.search = new URLSearchParams(query).toString(); - - method = method && typeof method === "string" ? method.toUpperCase() : null; - // idempotent = idempotent === undefined ? method === "GET" || method === "HEAD" : idempotent; - - if (inputBody && (method === "GET" || method === "HEAD")) { - throw new Error("Body not allowed for GET or HEAD requests"); - } - - if (inputBody && inputBody.read && inputBody instanceof Readable) { - // TODO: Streaming via ReadableStream? - let data = ""; - inputBody.setEncoding("utf8"); - for await (const chunk of stream) { - data += chunk; - } - inputBody = new TextEncoder().encode(data); - } - - if (maxRedirections !== undefined && Number.isNaN(maxRedirections)) { - throw new Error("maxRedirections must be a number if defined"); - } - - if (signal && !(signal instanceof AbortSignal)) { - // TODO: Add support for event emitter signal - throw new Error("signal must be an instance of AbortSignal"); - } - - let resp; - /** @type {Response} */ - const { - status: statusCode, - headers, - trailers, - } = (resp = await fetch(url, { - signal, - mode: "cors", - method, - headers: inputHeaders || kEmptyObject, - body: inputBody, - redirect: maxRedirections === "undefined" || maxRedirections > 0 ? "follow" : "manual", - keepalive: !reset, - })); - - // Throw if received 4xx or 5xx response indicating HTTP error - if (throwOnError && statusCode >= 400 && statusCode < 600) { - throw new Error(`Request failed with status code ${statusCode}`); - } - - const body = resp.body ? new BodyReadable(resp) : null; - - return { statusCode, headers: headers.toJSON(), body, trailers, opaque: kEmptyObject, context: kEmptyObject }; -} - -export function stream() { - throw new Error("Not implemented in bun"); -} -export function pipeline() { - throw new Error("Not implemented in bun"); -} -export function connect() { - throw new Error("Not implemented in bun"); -} -export function upgrade() { - throw new Error("Not implemented in bun"); -} - -export class MockClient { - constructor() { - throw new Error("Not implemented in bun"); - } -} -export class MockPool { - constructor() { - throw new Error("Not implemented in bun"); - } -} -export class MockAgent { - constructor() { - throw new Error("Not implemented in bun"); - } -} - -export function mockErrors() { - throw new Error("Not implemented in bun"); -} - -export function Undici() { - throw new Error("Not implemented in bun"); -} - -class Dispatcher extends EventEmitter {} -class Agent extends Dispatcher {} -class Pool extends Dispatcher { - request() { - throw new Error("Not implemented in bun"); - } -} -class BalancedPool extends Dispatcher {} -class Client extends Dispatcher { - request() { - throw new Error("Not implemented in bun"); - } -} - -Undici.Dispatcher = Dispatcher; -Undici.Pool = Pool; -Undici.BalancedPool = BalancedPool; -Undici.Client = Client; -Undici.Agent = Agent; - -Undici.buildConnector = - Undici.errors = - Undici.setGlobalDispatcher = - Undici.getGlobalDispatcher = - Undici.request = - Undici.stream = - Undici.pipeline = - Undici.connect = - Undici.upgrade = - Undici.MockClient = - Undici.MockPool = - Undici.MockAgent = - Undici.mockErrors = - notImplemented; - -Undici.fetch = fetch; - -export default { - fetch, - Response, - Headers, - Request, - URLSearchParams, - URL, - File, - FileReader, - FormData, - request, - stream, - pipeline, - connect, - upgrade, - MockClient, - MockPool, - MockAgent, - mockErrors, - Dispatcher, - Pool, - BalancedPool, - Client, - Agent, - Undici, - [Symbol.for("CommonJS")]: 0, -}; diff --git a/src/bun.js/url.exports.js b/src/bun.js/url.exports.js deleted file mode 100644 index c7d91d509..000000000 --- a/src/bun.js/url.exports.js +++ /dev/null @@ -1,397 +0,0 @@ -"use strict"; -const { URL: F, URLSearchParams: M, [Symbol.for("Bun.lazy")]: S } = globalThis; -function it(s) { - return typeof s == "string"; -} -function D(s) { - return typeof s == "object" && s !== null; -} -function I(s) { - return s === null; -} -function E(s) { - return s == null; -} -function ft(s) { - return s === void 0; -} -function m() { - (this.protocol = null), - (this.slashes = null), - (this.auth = null), - (this.host = null), - (this.port = null), - (this.hostname = null), - (this.hash = null), - (this.search = null), - (this.query = null), - (this.pathname = null), - (this.path = null), - (this.href = null); -} -var tt = /^([a-z0-9.+-]+:)/i, - st = /:[0-9]*$/, - ht = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, - et = [ - "<", - ">", - '"', - "`", - " ", - "\r", - ` -`, - " ", - ], - rt = ["{", "}", "|", "\\", "^", "`"].concat(et), - B = ["'"].concat(rt), - G = ["%", "/", "?", ";", "#"].concat(B), - J = ["/", "?", "#"], - ot = 255, - K = /^[+a-z0-9A-Z_-]{0,63}$/, - at = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, - nt = { javascript: !0, "javascript:": !0 }, - N = { javascript: !0, "javascript:": !0 }, - R = { - http: !0, - https: !0, - ftp: !0, - gopher: !0, - file: !0, - "http:": !0, - "https:": !0, - "ftp:": !0, - "gopher:": !0, - "file:": !0, - }, - Z = { - parse(s) { - var r = decodeURIComponent; - return (s + "") - .replace(/\+/g, " ") - .split("&") - .filter(Boolean) - .reduce(function (t, o, a) { - var l = o.split("="), - f = r(l[0] || ""), - h = r(l[1] || ""), - g = t[f]; - return (t[f] = g === void 0 ? h : [].concat(g, h)), t; - }, {}); - }, - stringify(s) { - var r = encodeURIComponent; - return Object.keys(s || {}) - .reduce(function (t, o) { - return ( - [].concat(s[o]).forEach(function (a) { - t.push(r(o) + "=" + r(a)); - }), - t - ); - }, []) - .join("&") - .replace(/\s/g, "+"); - }, - }; -function A(s, r, t) { - if (s && D(s) && s instanceof m) return s; - var o = new m(); - return o.parse(s, r, t), o; -} -m.prototype.parse = function (s, r, t) { - if (!it(s)) throw new TypeError("Parameter 'url' must be a string, not " + typeof s); - var o = s.indexOf("?"), - a = o !== -1 && o < s.indexOf("#") ? "?" : "#", - l = s.split(a), - f = /\\/g; - (l[0] = l[0].replace(f, "/")), (s = l.join(a)); - var h = s; - if (((h = h.trim()), !t && s.split("#").length === 1)) { - var g = ht.exec(h); - if (g) - return ( - (this.path = h), - (this.href = h), - (this.pathname = g[1]), - g[2] - ? ((this.search = g[2]), - r ? (this.query = Z.parse(this.search.substr(1))) : (this.query = this.search.substr(1))) - : r && ((this.search = ""), (this.query = {})), - this - ); - } - var c = tt.exec(h); - if (c) { - c = c[0]; - var v = c.toLowerCase(); - (this.protocol = v), (h = h.substr(c.length)); - } - if (t || c || h.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var j = h.substr(0, 2) === "//"; - j && !(c && N[c]) && ((h = h.substr(2)), (this.slashes = !0)); - } - if (!N[c] && (j || (c && !R[c]))) { - for (var u = -1, n = 0; n < J.length; n++) { - var b = h.indexOf(J[n]); - b !== -1 && (u === -1 || b < u) && (u = b); - } - var P, p; - u === -1 ? (p = h.lastIndexOf("@")) : (p = h.lastIndexOf("@", u)), - p !== -1 && ((P = h.slice(0, p)), (h = h.slice(p + 1)), (this.auth = decodeURIComponent(P))), - (u = -1); - for (var n = 0; n < G.length; n++) { - var b = h.indexOf(G[n]); - b !== -1 && (u === -1 || b < u) && (u = b); - } - u === -1 && (u = h.length), - (this.host = h.slice(0, u)), - (h = h.slice(u)), - this.parseHost(), - (this.hostname = this.hostname || ""); - var C = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]"; - if (!C) - for (var e = this.hostname.split(/\./), n = 0, i = e.length; n < i; n++) { - var d = e[n]; - if (!!d && !d.match(K)) { - for (var y = "", x = 0, _ = d.length; x < _; x++) d.charCodeAt(x) > 127 ? (y += "x") : (y += d[x]); - if (!y.match(K)) { - var q = e.slice(0, n), - O = e.slice(n + 1), - U = d.match(at); - U && (q.push(U[1]), O.unshift(U[2])), - O.length && (h = "/" + O.join(".") + h), - (this.hostname = q.join(".")); - break; - } - } - } - this.hostname.length > ot ? (this.hostname = "") : (this.hostname = this.hostname.toLowerCase()), - C || (this.hostname = new F(`https://${this.hostname}`).hostname); - var w = this.port ? ":" + this.port : "", - H = this.hostname || ""; - (this.host = H + w), - (this.href += this.host), - C && ((this.hostname = this.hostname.substr(1, this.hostname.length - 2)), h[0] !== "/" && (h = "/" + h)); - } - if (!nt[v]) - for (var n = 0, i = B.length; n < i; n++) { - var L = B[n]; - if (h.indexOf(L) !== -1) { - var z = encodeURIComponent(L); - z === L && (z = escape(L)), (h = h.split(L).join(z)); - } - } - var $ = h.indexOf("#"); - $ !== -1 && ((this.hash = h.substr($)), (h = h.slice(0, $))); - var T = h.indexOf("?"); - if ( - (T !== -1 - ? ((this.search = h.substr(T)), - (this.query = h.substr(T + 1)), - r && (this.query = Z.parse(this.query)), - (h = h.slice(0, T))) - : r && ((this.search = ""), (this.query = {})), - h && (this.pathname = h), - R[v] && this.hostname && !this.pathname && (this.pathname = "/"), - this.pathname || this.search) - ) { - var w = this.pathname || "", - Q = this.search || ""; - this.path = w + Q; - } - return (this.href = this.format()), this; -}; -function V(s) { - return it(s) && (s = A(s)), s instanceof m ? s.format() : m.prototype.format.call(s); -} -m.prototype.format = function () { - var s = this.auth || ""; - s && ((s = encodeURIComponent(s)), (s = s.replace(/%3A/i, ":")), (s += "@")); - var r = this.protocol || "", - t = this.pathname || "", - o = this.hash || "", - a = !1, - l = ""; - this.host - ? (a = s + this.host) - : this.hostname && - ((a = s + (this.hostname.indexOf(":") === -1 ? this.hostname : "[" + this.hostname + "]")), - this.port && (a += ":" + this.port)), - this.query && D(this.query) && Object.keys(this.query).length && (l = Z.stringify(this.query)); - var f = this.search || (l && "?" + l) || ""; - return ( - r && r.substr(-1) !== ":" && (r += ":"), - this.slashes || ((!r || R[r]) && a !== !1) - ? ((a = "//" + (a || "")), t && t.charAt(0) !== "/" && (t = "/" + t)) - : a || (a = ""), - o && o.charAt(0) !== "#" && (o = "#" + o), - f && f.charAt(0) !== "?" && (f = "?" + f), - (t = t.replace(/[?#]/g, function (h) { - return encodeURIComponent(h); - })), - (f = f.replace("#", "%23")), - r + a + t + f + o - ); -}; -function W(s, r) { - return A(s, !1, !0).resolve(r); -} -m.prototype.resolve = function (s) { - return this.resolveObject(A(s, !1, !0)).format(); -}; -function X(s, r) { - return s ? A(s, !1, !0).resolveObject(r) : r; -} -(m.prototype.resolveObject = function (s) { - if (it(s)) { - var r = new m(); - r.parse(s, !1, !0), (s = r); - } - for (var t = new m(), o = Object.keys(this), a = 0; a < o.length; a++) { - var l = o[a]; - t[l] = this[l]; - } - if (((t.hash = s.hash), s.href === "")) return (t.href = t.format()), t; - if (s.slashes && !s.protocol) { - for (var f = Object.keys(s), h = 0; h < f.length; h++) { - var g = f[h]; - g !== "protocol" && (t[g] = s[g]); - } - return R[t.protocol] && t.hostname && !t.pathname && (t.path = t.pathname = "/"), (t.href = t.format()), t; - } - if (s.protocol && s.protocol !== t.protocol) { - if (!R[s.protocol]) { - for (var c = Object.keys(s), v = 0; v < c.length; v++) { - var j = c[v]; - t[j] = s[j]; - } - return (t.href = t.format()), t; - } - if (((t.protocol = s.protocol), !s.host && !N[s.protocol])) { - for (var i = (s.pathname || "").split("/"); i.length && !(s.host = i.shift()); ); - s.host || (s.host = ""), - s.hostname || (s.hostname = ""), - i[0] !== "" && i.unshift(""), - i.length < 2 && i.unshift(""), - (t.pathname = i.join("/")); - } else t.pathname = s.pathname; - if ( - ((t.search = s.search), - (t.query = s.query), - (t.host = s.host || ""), - (t.auth = s.auth), - (t.hostname = s.hostname || s.host), - (t.port = s.port), - t.pathname || t.search) - ) { - var u = t.pathname || "", - n = t.search || ""; - t.path = u + n; - } - return (t.slashes = t.slashes || s.slashes), (t.href = t.format()), t; - } - var b = t.pathname && t.pathname.charAt(0) === "/", - P = s.host || (s.pathname && s.pathname.charAt(0) === "/"), - p = P || b || (t.host && s.pathname), - C = p, - e = (t.pathname && t.pathname.split("/")) || [], - i = (s.pathname && s.pathname.split("/")) || [], - d = t.protocol && !R[t.protocol]; - if ( - (d && - ((t.hostname = ""), - (t.port = null), - t.host && (e[0] === "" ? (e[0] = t.host) : e.unshift(t.host)), - (t.host = ""), - s.protocol && - ((s.hostname = null), - (s.port = null), - s.host && (i[0] === "" ? (i[0] = s.host) : i.unshift(s.host)), - (s.host = null)), - (p = p && (i[0] === "" || e[0] === ""))), - P) - ) - (t.host = s.host || s.host === "" ? s.host : t.host), - (t.hostname = s.hostname || s.hostname === "" ? s.hostname : t.hostname), - (t.search = s.search), - (t.query = s.query), - (e = i); - else if (i.length) e || (e = []), e.pop(), (e = e.concat(i)), (t.search = s.search), (t.query = s.query); - else if (!E(s.search)) { - if (d) { - t.hostname = t.host = e.shift(); - var y = t.host && t.host.indexOf("@") > 0 ? t.host.split("@") : !1; - y && ((t.auth = y.shift()), (t.host = t.hostname = y.shift())); - } - return ( - (t.search = s.search), - (t.query = s.query), - (!I(t.pathname) || !I(t.search)) && (t.path = (t.pathname ? t.pathname : "") + (t.search ? t.search : "")), - (t.href = t.format()), - t - ); - } - if (!e.length) - return (t.pathname = null), t.search ? (t.path = "/" + t.search) : (t.path = null), (t.href = t.format()), t; - for ( - var x = e.slice(-1)[0], - _ = ((t.host || s.host || e.length > 1) && (x === "." || x === "..")) || x === "", - q = 0, - O = e.length; - O >= 0; - O-- - ) - (x = e[O]), x === "." ? e.splice(O, 1) : x === ".." ? (e.splice(O, 1), q++) : q && (e.splice(O, 1), q--); - if (!p && !C) for (; q--; q) e.unshift(".."); - p && e[0] !== "" && (!e[0] || e[0].charAt(0) !== "/") && e.unshift(""), - _ && e.join("/").substr(-1) !== "/" && e.push(""); - var U = e[0] === "" || (e[0] && e[0].charAt(0) === "/"); - if (d) { - t.hostname = t.host = U ? "" : e.length ? e.shift() : ""; - var y = t.host && t.host.indexOf("@") > 0 ? t.host.split("@") : !1; - y && ((t.auth = y.shift()), (t.host = t.hostname = y.shift())); - } - return ( - (p = p || (t.host && e.length)), - p && !U && e.unshift(""), - e.length ? (t.pathname = e.join("/")) : ((t.pathname = null), (t.path = null)), - (!I(t.pathname) || !I(t.search)) && (t.path = (t.pathname ? t.pathname : "") + (t.search ? t.search : "")), - (t.auth = s.auth || t.auth), - (t.slashes = t.slashes || s.slashes), - (t.href = t.format()), - t - ); -}), - (m.prototype.parseHost = function () { - var s = this.host, - r = st.exec(s); - r && ((r = r[0]), r !== ":" && (this.port = r.substr(1)), (s = s.substr(0, s.length - r.length))), - s && (this.hostname = s); - }); -var Y, k; -S && ((Y = S("pathToFileURL")), (k = S("fileURLToPath"))); -var ut = { - parse: A, - resolve: W, - resolveObject: X, - format: V, - Url: m, - pathToFileURL: Y, - fileURLToPath: k, - URL: F, - URLSearchParams: M, -}; -("use strict"); -export { - F as URL, - M as URLSearchParams, - m as Url, - ut as default, - k as fileURLToPath, - V as format, - A as parse, - Y as pathToFileURL, - W as resolve, - X as resolveObject, -}; diff --git a/src/bun.js/util.exports.js b/src/bun.js/util.exports.js deleted file mode 100644 index ce618784d..000000000 --- a/src/bun.js/util.exports.js +++ /dev/null @@ -1,588 +0,0 @@ -var __getOwnPropNames = Object.getOwnPropertyNames; -var __commonJS = (cb, mod) => - function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - -function isBufferInterface({ copy, fill, readUint8 }) { - return typeof copy === "function" && typeof fill === "function" && typeof readUint8 === "function"; -} - -export function isBuffer(value) { - return ( - Buffer.isBuffer(value) || - // incase it ends up as a browserify buffer - (typeof value === "object" && isBufferInterface(value || {})) - ); -} - -// node_modules/inherits/inherits_browser.js -var require_inherits_browser = __commonJS({ - "node_modules/inherits/inherits_browser.js"(exports, module2) { - module2.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true, - }, - }); - }; - }, -}); -const deepEquals = Bun.deepEquals; -const isDeepStrictEqual = (a, b) => deepEquals(a, b, true); -const exports = { - isDeepStrictEqual, -}; -var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors; -var formatRegExp = /%[sdj%]/g; -function format(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(" "); - } - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function (x2) { - if (x2 === "%%") return "%"; - if (i >= len) return x2; - switch (x2) { - case "%s": - return String(args[i++]); - case "%d": - return Number(args[i++]); - case "%j": - try { - return JSON.stringify(args[i++]); - } catch (_) { - return "[Circular]"; - } - default: - return x2; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += " " + x; - } else { - str += " " + inspect(x); - } - } - return str; -} -exports.format = format; -function deprecate(fn, msg) { - if (typeof process !== "undefined" && process.noDeprecation === true) { - return fn; - } - if (typeof process === "undefined") { - return function () { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - return deprecated; -} -exports.deprecate = deprecate; -var debugs = {}; -var debugEnvRegex = /^$/; -if (process.env.NODE_DEBUG) { - debugEnv = process.env.NODE_DEBUG; - debugEnv = debugEnv - .replace(/[|\\{}()[\]^$+?.]/g, "\\$&") - .replace(/\*/g, ".*") - .replace(/,/g, "$|^") - .toUpperCase(); - debugEnvRegex = new RegExp("^" + debugEnv + "$", "i"); -} -var debugEnv; -function debuglog(set) { - set = set.toUpperCase(); - if (!debugs[set]) { - if (debugEnvRegex.test(set)) { - var pid = process.pid; - debugs[set] = function () { - var msg = exports.format.apply(exports, arguments); - console.error("%s %d: %s", set, pid, msg); - }; - } else { - debugs[set] = function () {}; - } - } - return debugs[set]; -} -exports.debuglog = debuglog; -function inspect(obj, opts) { - var ctx = { - seen: [], - stylize: stylizeNoColor, - }; - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - ctx.showHidden = opts; - } else if (opts) { - exports._extend(ctx, opts); - } - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; -inspect.colors = { - bold: [1, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - white: [37, 39], - grey: [90, 39], - black: [30, 39], - blue: [34, 39], - cyan: [36, 39], - green: [32, 39], - magenta: [35, 39], - red: [31, 39], - yellow: [33, 39], -}; -inspect.styles = { - special: "cyan", - number: "yellow", - boolean: "yellow", - undefined: "grey", - null: "bold", - string: "green", - date: "magenta", - regexp: "red", -}; -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - if (style) { - return "\x1B[" + inspect.colors[style][0] + "m" + str + "\x1B[" + inspect.colors[style][1] + "m"; - } else { - return str; - } -} -function stylizeNoColor(str, styleType) { - return str; -} -function arrayToHash(array) { - var hash = {}; - array.forEach(function (val, idx) { - hash[val] = true; - }); - return hash; -} -function formatValue(ctx, value, recurseTimes) { - if ( - ctx.customInspect && - value && - isFunction(value.inspect) && - value.inspect !== exports.inspect && - !(value.constructor && value.constructor.prototype === value) - ) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - if (isError(value) && (keys.indexOf("message") >= 0 || keys.indexOf("description") >= 0)) { - return formatError(value); - } - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ": " + value.name : ""; - return ctx.stylize("[Function" + name + "]", "special"); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), "regexp"); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), "date"); - } - if (isError(value)) { - return formatError(value); - } - } - var base = "", - array = false, - braces = ["{", "}"]; - if (isArray(value)) { - array = true; - braces = ["[", "]"]; - } - if (isFunction(value)) { - var n = value.name ? ": " + value.name : ""; - base = " [Function" + n + "]"; - } - if (isRegExp(value)) { - base = " " + RegExp.prototype.toString.call(value); - } - if (isDate(value)) { - base = " " + Date.prototype.toUTCString.call(value); - } - if (isError(value)) { - base = " " + formatError(value); - } - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), "regexp"); - } else { - return ctx.stylize("[Object]", "special"); - } - } - ctx.seen.push(value); - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function (key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - ctx.seen.pop(); - return reduceToSingleString(output, base, braces); -} -function formatPrimitive(ctx, value) { - if (isUndefined(value)) return ctx.stylize("undefined", "undefined"); - if (isString(value)) { - var simple = "'" + JSON.stringify(value).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; - return ctx.stylize(simple, "string"); - } - if (isNumber(value)) return ctx.stylize("" + value, "number"); - if (isBoolean(value)) return ctx.stylize("" + value, "boolean"); - if (isNull(value)) return ctx.stylize("null", "null"); -} -function formatError(value) { - return "[" + Error.prototype.toString.call(value) + "]"; -} -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true)); - } else { - output.push(""); - } - } - keys.forEach(function (key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true)); - } - }); - return output; -} -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { - value: value[key], - }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize("[Getter/Setter]", "special"); - } else { - str = ctx.stylize("[Getter]", "special"); - } - } else { - if (desc.set) { - str = ctx.stylize("[Setter]", "special"); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = "[" + key + "]"; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf("\n") > -1) { - if (array) { - str = str - .split("\n") - .map(function (line) { - return " " + line; - }) - .join("\n") - .substr(2); - } else { - str = - "\n" + - str - .split("\n") - .map(function (line) { - return " " + line; - }) - .join("\n"); - } - } - } else { - str = ctx.stylize("[Circular]", "special"); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify("" + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, "name"); - } else { - name = name - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, "string"); - } - } - return name + ": " + str; -} -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function (prev, cur) { - numLinesEst++; - if (cur.indexOf("\n") >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, "").length + 1; - }, 0); - if (length > 60) { - return braces[0] + (base === "" ? "" : base + "\n ") + " " + output.join(",\n ") + " " + braces[1]; - } - return braces[0] + base + " " + output.join(", ") + " " + braces[1]; -} -const types = import.meta.require("node:util/types"); -exports.types = types; -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; -function isBoolean(arg) { - return typeof arg === "boolean"; -} -exports.isBoolean = isBoolean; -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; -function isNumber(arg) { - return typeof arg === "number"; -} -exports.isNumber = isNumber; -function isString(arg) { - return typeof arg === "string"; -} -exports.isString = isString; -function isSymbol(arg) { - return typeof arg === "symbol"; -} -exports.isSymbol = isSymbol; -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; -var isRegExp = (exports.isRegExp = exports.types.isRegExp); -function isObject(arg) { - return typeof arg === "object" && arg !== null; -} -exports.isObject = isObject; -var isDate = (exports.isDate = exports.types.isDate); -var isError = (exports.isError = exports.types.isNativeError); -function isFunction(arg) { - return typeof arg === "function"; -} -var isFunction = (exports.isFunction = isFunction); -function isPrimitive(arg) { - return ( - arg === null || - typeof arg === "boolean" || - typeof arg === "number" || - typeof arg === "string" || - typeof arg === "symbol" || - typeof arg === "undefined" - ); -} -exports.isPrimitive = isPrimitive; -exports.isBuffer = isBuffer; -function pad(n) { - return n < 10 ? "0" + n.toString(10) : n.toString(10); -} -var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(":"); - return [d.getDate(), months[d.getMonth()], time].join(" "); -} -var log = (exports.log = function () { - console.log("%s - %s", timestamp(), exports.format.apply(exports, arguments)); -}); -var inherits = (exports.inherits = require_inherits_browser()); -var _extend = (exports._extend = function (origin, add) { - if (!add || !isObject(add)) return origin; - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}); -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} -var kCustomPromisifiedSymbol = Symbol.for("util.promisify.custom"); -var promisify = (exports.promisify = function promisify(original) { - if (typeof original !== "function") throw new TypeError('The "original" argument must be of type Function'); - if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) { - var fn = original[kCustomPromisifiedSymbol]; - if (typeof fn !== "function") { - throw new TypeError('The "util.promisify.custom" argument must be of type Function'); - } - Object.defineProperty(fn, kCustomPromisifiedSymbol, { - value: fn, - enumerable: false, - writable: false, - configurable: true, - }); - return fn; - } - function fn() { - var promiseResolve, promiseReject; - var promise = new Promise(function (resolve, reject) { - promiseResolve = resolve; - promiseReject = reject; - }); - var args = []; - for (var i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } - args.push(function (err, value) { - if (err) { - promiseReject(err); - } else { - promiseResolve(value); - } - }); - try { - original.apply(this, args); - } catch (err) { - promiseReject(err); - } - return promise; - } - Object.setPrototypeOf(fn, Object.getPrototypeOf(original)); - if (kCustomPromisifiedSymbol) - Object.defineProperty(fn, kCustomPromisifiedSymbol, { - value: fn, - enumerable: false, - writable: false, - configurable: true, - }); - return Object.defineProperties(fn, getOwnPropertyDescriptors(original)); -}); -exports.promisify.custom = kCustomPromisifiedSymbol; -function callbackifyOnRejected(reason, cb) { - if (!reason) { - var newReason = new Error("Promise was rejected with a falsy value"); - newReason.reason = reason; - reason = newReason; - } - return cb(reason); -} -function callbackify(original) { - if (typeof original !== "function") { - throw new TypeError('The "original" argument must be of type Function'); - } - function callbackified() { - var args = Array.prototype.slice.call(arguments); - var maybeCb = args.pop(); - if (typeof maybeCb !== "function") { - throw new TypeError("The last argument must be of type Function"); - } - var self = this; - var cb = function () { - return maybeCb.apply(self, arguments); - }; - original.apply(this, args).then( - function (ret) { - process.nextTick(cb, null, null, ret); - }, - function (rej) { - process.nextTick(callbackifyOnRejected, null, rej, cb); - }, - ); - } - Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original)); - Object.defineProperties(callbackified, getOwnPropertyDescriptors(original)); - return callbackified; -} -exports.callbackify = callbackify; -export var TextDecoder = (exports.TextDecoder = globalThis.TextDecoder); -export var TextEncoder = (exports.TextEncoder = globalThis.TextEncoder); -exports[Symbol.for("CommonJS")] = 0; -export default exports; - -export { - format, - deprecate, - debuglog, - inspect, - isArray, - isBoolean, - isNull, - isNullOrUndefined, - isNumber, - isString, - isSymbol, - isUndefined, - isRegExp, - isObject, - isDate, - isError, - isFunction, - isPrimitive, - log, - inherits, - promisify, - callbackify, - isDeepStrictEqual, -}; diff --git a/src/bun.js/v8.exports.js b/src/bun.js/v8.exports.js deleted file mode 100644 index 4ac85fd3b..000000000 --- a/src/bun.js/v8.exports.js +++ /dev/null @@ -1,166 +0,0 @@ -// This is a stub! None of this is actually implemented yet. - -class TODO extends Error { - constructor(messageName) { - const message = messageName - ? `node:v8 ${messageName} is not implemented yet in Bun. ` - : `node:v8 is not implemented yet in Bun`; - super(message); - this.name = "TODO"; - } -} - -function hideFromStack(fns) { - for (const fn of fns) { - Object.defineProperty(fn, "name", { - value: "::bunternal::", - }); - } -} - -function notimpl(message) { - throw new TODO(message); -} - -class Deserializer { - constructor() { - notimpl(); - } -} -class Serializer { - constructor() { - notimpl(); - } -} -class DefaultDeserializer extends Deserializer {} -class DefaultSerializer extends Serializer {} -class GCProfiler { - constructor() { - notimpl(); - } -} - -function cachedDataVersionTag() { - notimpl("cachedDataVersionTag"); -} -function getHeapSnapshot() { - notimpl("getHeapSnapshot"); -} -function getHeapStatistics() { - notimpl("getHeapStatistics"); -} -function getHeapSpaceStatistics() { - notimpl("getHeapSpaceStatistics"); -} -function getHeapCodeStatistics() { - notimpl("getHeapCodeStatistics"); -} -function setFlagsFromString() { - notimpl("setFlagsFromString"); -} -function deserialize() { - notimpl("deserialize"); -} -function takeCoverage() { - notimpl("takeCoverage"); -} -function stopCoverage() { - notimpl("stopCoverage"); -} -function serialize() { - notimpl("serialize"); -} -function writeHeapSnapshot() { - notimpl("writeHeapSnapshot"); -} -function setHeapSnapshotNearHeapLimit() { - notimpl("setHeapSnapshotNearHeapLimit"); -} -const promiseHooks = { - createHook: () => { - notimpl("createHook"); - }, - onInit: () => { - notimpl("onInit"); - }, - onBefore: () => { - notimpl("onBefore"); - }, - onAfter: () => { - notimpl("onAfter"); - }, - onSettled: () => { - notimpl("onSettled"); - }, - }, - startupSnapshot = { - addDeserializeCallback: () => notimpl("addDeserializeCallback"), - addSerializeCallback: () => notimpl("addSerializeCallback"), - setDeserializeMainFunction: () => notimpl("setDeserializeMainFunction"), - isBuildingSnapshot: () => notimpl("isBuildingSnapshot"), - }; - -const defaultObject = { - cachedDataVersionTag, - getHeapSnapshot, - getHeapStatistics, - getHeapSpaceStatistics, - getHeapCodeStatistics, - setFlagsFromString, - deserialize, - takeCoverage, - stopCoverage, - serialize, - writeHeapSnapshot, - setHeapSnapshotNearHeapLimit, - promiseHooks, - startupSnapshot, - Deserializer, - Serializer, - [Symbol.for("CommonJS")]: 0, -}; - -export { - cachedDataVersionTag, - getHeapSnapshot, - getHeapStatistics, - getHeapSpaceStatistics, - getHeapCodeStatistics, - setFlagsFromString, - deserialize, - takeCoverage, - stopCoverage, - serialize, - writeHeapSnapshot, - setHeapSnapshotNearHeapLimit, - promiseHooks, - startupSnapshot, - Deserializer, - Serializer, - DefaultDeserializer, - DefaultSerializer, - GCProfiler, - defaultObject as default, -}; - -hideFromStack([ - TODO.prototype.constructor, - notimpl, - cachedDataVersionTag, - getHeapSnapshot, - getHeapStatistics, - getHeapSpaceStatistics, - getHeapCodeStatistics, - setFlagsFromString, - deserialize, - takeCoverage, - stopCoverage, - serialize, - writeHeapSnapshot, - setHeapSnapshotNearHeapLimit, - Deserializer, - Serializer, - DefaultDeserializer, - DefaultSerializer, - GCProfiler, -]); diff --git a/src/bun.js/vm.exports.js b/src/bun.js/vm.exports.js deleted file mode 100644 index fdc624540..000000000 --- a/src/bun.js/vm.exports.js +++ /dev/null @@ -1,56 +0,0 @@ -const lazy = globalThis[Symbol.for("Bun.lazy")]; -if (!lazy || typeof lazy !== "function") { - throw new Error("Something went wrong while loading Bun. Expected 'Bun.lazy' to be defined."); -} -const vm = lazy("vm"); - -class TODO extends Error { - constructor(messageName) { - const message = messageName - ? `node:vm ${messageName} is not implemented yet in Bun. Track the status & thumbs up the issue: https://github.com/oven-sh/bun/issues/401` - : `node:vm is not implemented yet in Bun. Track the status & thumbs up the issue: https://github.com/oven-sh/bun/issues/401`; - super(message); - this.name = "TODO"; - } -} - -function notimpl(message) { - throw new TODO(message); -} - -const { createContext, isContext, Script, runInNewContext, runInThisContext } = vm; - -function runInContext(code, context, options) { - return new Script(code, options).runInContext(context); -} - -function compileFunction() { - notimpl("compileFunction"); -} -function measureMemory() { - notimpl("measureMemory"); -} - -const defaultObject = { - createContext, - runInContext, - runInNewContext, - runInThisContext, - isContext, - compileFunction, - measureMemory, - Script, - [Symbol.for("CommonJS")]: 0, -}; - -export { - defaultObject as default, - createContext, - runInContext, - runInNewContext, - runInThisContext, - isContext, - compileFunction, - measureMemory, - Script, -}; diff --git a/src/bun.js/wasi-runner.js b/src/bun.js/wasi-runner.js deleted file mode 100644 index 6a89510b1..000000000 --- a/src/bun.js/wasi-runner.js +++ /dev/null @@ -1,42 +0,0 @@ -/** --- WASI */ -// wasi is imported into the top of this file - -const filePath = process.argv.at(1); -if (!filePath) { - var err = new Error("To run a wasm file with Bun, the first argument must be a path to a .wasm file"); - err.name = "WasmFileNotFound"; - throw err; -} - -// The module specifier is the resolved path to the wasm file - -var { WASM_CWD = process.cwd(), WASM_ROOT_DIR = "/", WASM_ENV_STR = undefined, WASM_USE_ASYNC_INIT = "" } = process.env; - -var env = process.env; -if (WASM_ENV_STR?.length) { - env = JSON.parse(WASM_ENV_STR); -} - -const wasi = new WASI({ - args: process.argv.slice(1), - env, - preopens: { - ".": WASM_CWD || process.cwd(), - "/": WASM_ROOT_DIR || "/", - }, -}); - -let source = globalThis.wasmSourceBytes; -if (!source) { - const fs = Bun.fs(); - const file = import.meta.path; - source = fs.readFileSync(file); -} - -const wasm = new WebAssembly.Module(source); -const instance = !WASM_USE_ASYNC_INIT - ? new WebAssembly.Instance(wasm, wasi.getImports(wasm)) - : await WebAssembly.instantiate(wasm, wasi.getImports(wasm)); -wasi.start(instance); - -process.exit(0); diff --git a/src/bun.js/wasi.exports.js b/src/bun.js/wasi.exports.js deleted file mode 100644 index a01d88d6b..000000000 --- a/src/bun.js/wasi.exports.js +++ /dev/null @@ -1,1942 +0,0 @@ -// HUGE thanks to: -// - @williamstein and https://github.com/sagemathinc/cowasm/tree/main/core/wasi-js -// - @syrusakbary for wasmer-js https://github.com/wasmerio/wasmer-js -// - Gus Caplan for node-wasi https://github.com/devsnek/node-wasi -// -// Eventually we will implement this in native code, but this is just a quick hack to get WASI working. - -/** **/ -// constants is injected into the top of this file -const nodeFsConstants = constants; - -var __getOwnPropNames = Object.getOwnPropertyNames; - -var __commonJS = (cb, mod) => - function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - -// node_modules/wasi-js/dist/types.js -var require_types = __commonJS({ - "node_modules/wasi-js/dist/types.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.WASIKillError = exports.WASIExitError = exports.WASIError = void 0; - var WASIError = class extends Error { - constructor(errno) { - super(); - this.errno = errno; - Object.setPrototypeOf(this, WASIError.prototype); - } - }; - exports.WASIError = WASIError; - var WASIExitError = class extends Error { - constructor(code) { - super(`WASI Exit error: ${code}`); - this.code = code; - Object.setPrototypeOf(this, WASIExitError.prototype); - } - }; - exports.WASIExitError = WASIExitError; - var WASIKillError = class extends Error { - constructor(signal) { - super(`WASI Kill signal: ${signal}`); - this.signal = signal; - Object.setPrototypeOf(this, WASIKillError.prototype); - } - }; - exports.WASIKillError = WASIKillError; - }, -}); - -// node_modules/wasi-js/dist/constants.js -var require_constants = __commonJS({ - "node_modules/wasi-js/dist/constants.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.WASI_ENOMSG = - exports.WASI_ENOMEM = - exports.WASI_ENOLINK = - exports.WASI_ENOLCK = - exports.WASI_ENOEXEC = - exports.WASI_ENOENT = - exports.WASI_ENODEV = - exports.WASI_ENOBUFS = - exports.WASI_ENFILE = - exports.WASI_ENETUNREACH = - exports.WASI_ENETRESET = - exports.WASI_ENETDOWN = - exports.WASI_ENAMETOOLONG = - exports.WASI_EMULTIHOP = - exports.WASI_EMSGSIZE = - exports.WASI_EMLINK = - exports.WASI_EMFILE = - exports.WASI_ELOOP = - exports.WASI_EISDIR = - exports.WASI_EISCONN = - exports.WASI_EIO = - exports.WASI_EINVAL = - exports.WASI_EINTR = - exports.WASI_EINPROGRESS = - exports.WASI_EILSEQ = - exports.WASI_EIDRM = - exports.WASI_EHOSTUNREACH = - exports.WASI_EFBIG = - exports.WASI_EFAULT = - exports.WASI_EEXIST = - exports.WASI_EDQUOT = - exports.WASI_EDOM = - exports.WASI_EDESTADDRREQ = - exports.WASI_EDEADLK = - exports.WASI_ECONNRESET = - exports.WASI_ECONNREFUSED = - exports.WASI_ECONNABORTED = - exports.WASI_ECHILD = - exports.WASI_ECANCELED = - exports.WASI_EBUSY = - exports.WASI_EBADMSG = - exports.WASI_EBADF = - exports.WASI_EALREADY = - exports.WASI_EAGAIN = - exports.WASI_EAFNOSUPPORT = - exports.WASI_EADDRNOTAVAIL = - exports.WASI_EADDRINUSE = - exports.WASI_EACCES = - exports.WASI_E2BIG = - exports.WASI_ESUCCESS = - void 0; - exports.WASI_SIGVTALRM = - exports.WASI_SIGUSR2 = - exports.WASI_SIGUSR1 = - exports.WASI_SIGURG = - exports.WASI_SIGTTOU = - exports.WASI_SIGTTIN = - exports.WASI_SIGTSTP = - exports.WASI_SIGTRAP = - exports.WASI_SIGTERM = - exports.WASI_SIGSTOP = - exports.WASI_SIGSEGV = - exports.WASI_SIGQUIT = - exports.WASI_SIGPIPE = - exports.WASI_SIGKILL = - exports.WASI_SIGINT = - exports.WASI_SIGILL = - exports.WASI_SIGHUP = - exports.WASI_SIGFPE = - exports.WASI_SIGCONT = - exports.WASI_SIGCHLD = - exports.WASI_SIGBUS = - exports.WASI_SIGALRM = - exports.WASI_SIGABRT = - exports.WASI_ENOTCAPABLE = - exports.WASI_EXDEV = - exports.WASI_ETXTBSY = - exports.WASI_ETIMEDOUT = - exports.WASI_ESTALE = - exports.WASI_ESRCH = - exports.WASI_ESPIPE = - exports.WASI_EROFS = - exports.WASI_ERANGE = - exports.WASI_EPROTOTYPE = - exports.WASI_EPROTONOSUPPORT = - exports.WASI_EPROTO = - exports.WASI_EPIPE = - exports.WASI_EPERM = - exports.WASI_EOWNERDEAD = - exports.WASI_EOVERFLOW = - exports.WASI_ENXIO = - exports.WASI_ENOTTY = - exports.WASI_ENOTSUP = - exports.WASI_ENOTSOCK = - exports.WASI_ENOTRECOVERABLE = - exports.WASI_ENOTEMPTY = - exports.WASI_ENOTDIR = - exports.WASI_ENOTCONN = - exports.WASI_ENOSYS = - exports.WASI_ENOSPC = - exports.WASI_ENOPROTOOPT = - void 0; - exports.RIGHTS_REGULAR_FILE_BASE = - exports.RIGHTS_CHARACTER_DEVICE_INHERITING = - exports.RIGHTS_CHARACTER_DEVICE_BASE = - exports.RIGHTS_BLOCK_DEVICE_INHERITING = - exports.RIGHTS_BLOCK_DEVICE_BASE = - exports.RIGHTS_ALL = - exports.WASI_RIGHT_SOCK_SHUTDOWN = - exports.WASI_RIGHT_POLL_FD_READWRITE = - exports.WASI_RIGHT_PATH_UNLINK_FILE = - exports.WASI_RIGHT_PATH_REMOVE_DIRECTORY = - exports.WASI_RIGHT_PATH_SYMLINK = - exports.WASI_RIGHT_FD_FILESTAT_SET_TIMES = - exports.WASI_RIGHT_FD_FILESTAT_SET_SIZE = - exports.WASI_RIGHT_FD_FILESTAT_GET = - exports.WASI_RIGHT_PATH_FILESTAT_SET_TIMES = - exports.WASI_RIGHT_PATH_FILESTAT_SET_SIZE = - exports.WASI_RIGHT_PATH_FILESTAT_GET = - exports.WASI_RIGHT_PATH_RENAME_TARGET = - exports.WASI_RIGHT_PATH_RENAME_SOURCE = - exports.WASI_RIGHT_PATH_READLINK = - exports.WASI_RIGHT_FD_READDIR = - exports.WASI_RIGHT_PATH_OPEN = - exports.WASI_RIGHT_PATH_LINK_TARGET = - exports.WASI_RIGHT_PATH_LINK_SOURCE = - exports.WASI_RIGHT_PATH_CREATE_FILE = - exports.WASI_RIGHT_PATH_CREATE_DIRECTORY = - exports.WASI_RIGHT_FD_ALLOCATE = - exports.WASI_RIGHT_FD_ADVISE = - exports.WASI_RIGHT_FD_WRITE = - exports.WASI_RIGHT_FD_TELL = - exports.WASI_RIGHT_FD_SYNC = - exports.WASI_RIGHT_FD_FDSTAT_SET_FLAGS = - exports.WASI_RIGHT_FD_SEEK = - exports.WASI_RIGHT_FD_READ = - exports.WASI_RIGHT_FD_DATASYNC = - exports.WASI_FDFLAG_SYNC = - exports.WASI_FDFLAG_RSYNC = - exports.WASI_FDFLAG_NONBLOCK = - exports.WASI_FDFLAG_DSYNC = - exports.WASI_FDFLAG_APPEND = - exports.WASI_FILETYPE_SYMBOLIC_LINK = - exports.WASI_FILETYPE_SOCKET_STREAM = - exports.WASI_FILETYPE_SOCKET_DGRAM = - exports.WASI_FILETYPE_REGULAR_FILE = - exports.WASI_FILETYPE_DIRECTORY = - exports.WASI_FILETYPE_CHARACTER_DEVICE = - exports.WASI_FILETYPE_BLOCK_DEVICE = - exports.WASI_FILETYPE_UNKNOWN = - exports.WASI_SIGXFSZ = - exports.WASI_SIGXCPU = - void 0; - exports.SIGNAL_MAP = - exports.ERROR_MAP = - exports.WASI_WHENCE_END = - exports.WASI_WHENCE_CUR = - exports.WASI_WHENCE_SET = - exports.WASI_STDERR_FILENO = - exports.WASI_STDOUT_FILENO = - exports.WASI_STDIN_FILENO = - exports.WASI_DIRCOOKIE_START = - exports.WASI_PREOPENTYPE_DIR = - exports.WASI_O_TRUNC = - exports.WASI_O_EXCL = - exports.WASI_O_DIRECTORY = - exports.WASI_O_CREAT = - exports.WASI_FILESTAT_SET_MTIM_NOW = - exports.WASI_FILESTAT_SET_MTIM = - exports.WASI_FILESTAT_SET_ATIM_NOW = - exports.WASI_FILESTAT_SET_ATIM = - exports.WASI_EVENTTYPE_FD_WRITE = - exports.WASI_EVENTTYPE_FD_READ = - exports.WASI_EVENTTYPE_CLOCK = - exports.WASI_CLOCK_THREAD_CPUTIME_ID = - exports.WASI_CLOCK_PROCESS_CPUTIME_ID = - exports.WASI_CLOCK_MONOTONIC = - exports.WASI_CLOCK_REALTIME = - exports.RIGHTS_TTY_INHERITING = - exports.RIGHTS_TTY_BASE = - exports.RIGHTS_SOCKET_INHERITING = - exports.RIGHTS_SOCKET_BASE = - exports.RIGHTS_DIRECTORY_INHERITING = - exports.RIGHTS_DIRECTORY_BASE = - exports.RIGHTS_REGULAR_FILE_INHERITING = - void 0; - exports.WASI_ESUCCESS = 0; - exports.WASI_E2BIG = 1; - exports.WASI_EACCES = 2; - exports.WASI_EADDRINUSE = 3; - exports.WASI_EADDRNOTAVAIL = 4; - exports.WASI_EAFNOSUPPORT = 5; - exports.WASI_EAGAIN = 6; - exports.WASI_EALREADY = 7; - exports.WASI_EBADF = 8; - exports.WASI_EBADMSG = 9; - exports.WASI_EBUSY = 10; - exports.WASI_ECANCELED = 11; - exports.WASI_ECHILD = 12; - exports.WASI_ECONNABORTED = 13; - exports.WASI_ECONNREFUSED = 14; - exports.WASI_ECONNRESET = 15; - exports.WASI_EDEADLK = 16; - exports.WASI_EDESTADDRREQ = 17; - exports.WASI_EDOM = 18; - exports.WASI_EDQUOT = 19; - exports.WASI_EEXIST = 20; - exports.WASI_EFAULT = 21; - exports.WASI_EFBIG = 22; - exports.WASI_EHOSTUNREACH = 23; - exports.WASI_EIDRM = 24; - exports.WASI_EILSEQ = 25; - exports.WASI_EINPROGRESS = 26; - exports.WASI_EINTR = 27; - exports.WASI_EINVAL = 28; - exports.WASI_EIO = 29; - exports.WASI_EISCONN = 30; - exports.WASI_EISDIR = 31; - exports.WASI_ELOOP = 32; - exports.WASI_EMFILE = 33; - exports.WASI_EMLINK = 34; - exports.WASI_EMSGSIZE = 35; - exports.WASI_EMULTIHOP = 36; - exports.WASI_ENAMETOOLONG = 37; - exports.WASI_ENETDOWN = 38; - exports.WASI_ENETRESET = 39; - exports.WASI_ENETUNREACH = 40; - exports.WASI_ENFILE = 41; - exports.WASI_ENOBUFS = 42; - exports.WASI_ENODEV = 43; - exports.WASI_ENOENT = 44; - exports.WASI_ENOEXEC = 45; - exports.WASI_ENOLCK = 46; - exports.WASI_ENOLINK = 47; - exports.WASI_ENOMEM = 48; - exports.WASI_ENOMSG = 49; - exports.WASI_ENOPROTOOPT = 50; - exports.WASI_ENOSPC = 51; - exports.WASI_ENOSYS = 52; - exports.WASI_ENOTCONN = 53; - exports.WASI_ENOTDIR = 54; - exports.WASI_ENOTEMPTY = 55; - exports.WASI_ENOTRECOVERABLE = 56; - exports.WASI_ENOTSOCK = 57; - exports.WASI_ENOTSUP = 58; - exports.WASI_ENOTTY = 59; - exports.WASI_ENXIO = 60; - exports.WASI_EOVERFLOW = 61; - exports.WASI_EOWNERDEAD = 62; - exports.WASI_EPERM = 63; - exports.WASI_EPIPE = 64; - exports.WASI_EPROTO = 65; - exports.WASI_EPROTONOSUPPORT = 66; - exports.WASI_EPROTOTYPE = 67; - exports.WASI_ERANGE = 68; - exports.WASI_EROFS = 69; - exports.WASI_ESPIPE = 70; - exports.WASI_ESRCH = 71; - exports.WASI_ESTALE = 72; - exports.WASI_ETIMEDOUT = 73; - exports.WASI_ETXTBSY = 74; - exports.WASI_EXDEV = 75; - exports.WASI_ENOTCAPABLE = 76; - exports.WASI_SIGABRT = 0; - exports.WASI_SIGALRM = 1; - exports.WASI_SIGBUS = 2; - exports.WASI_SIGCHLD = 3; - exports.WASI_SIGCONT = 4; - exports.WASI_SIGFPE = 5; - exports.WASI_SIGHUP = 6; - exports.WASI_SIGILL = 7; - exports.WASI_SIGINT = 8; - exports.WASI_SIGKILL = 9; - exports.WASI_SIGPIPE = 10; - exports.WASI_SIGQUIT = 11; - exports.WASI_SIGSEGV = 12; - exports.WASI_SIGSTOP = 13; - exports.WASI_SIGTERM = 14; - exports.WASI_SIGTRAP = 15; - exports.WASI_SIGTSTP = 16; - exports.WASI_SIGTTIN = 17; - exports.WASI_SIGTTOU = 18; - exports.WASI_SIGURG = 19; - exports.WASI_SIGUSR1 = 20; - exports.WASI_SIGUSR2 = 21; - exports.WASI_SIGVTALRM = 22; - exports.WASI_SIGXCPU = 23; - exports.WASI_SIGXFSZ = 24; - exports.WASI_FILETYPE_UNKNOWN = 0; - exports.WASI_FILETYPE_BLOCK_DEVICE = 1; - exports.WASI_FILETYPE_CHARACTER_DEVICE = 2; - exports.WASI_FILETYPE_DIRECTORY = 3; - exports.WASI_FILETYPE_REGULAR_FILE = 4; - exports.WASI_FILETYPE_SOCKET_DGRAM = 5; - exports.WASI_FILETYPE_SOCKET_STREAM = 6; - exports.WASI_FILETYPE_SYMBOLIC_LINK = 7; - exports.WASI_FDFLAG_APPEND = 1; - exports.WASI_FDFLAG_DSYNC = 2; - exports.WASI_FDFLAG_NONBLOCK = 4; - exports.WASI_FDFLAG_RSYNC = 8; - exports.WASI_FDFLAG_SYNC = 16; - exports.WASI_RIGHT_FD_DATASYNC = BigInt(1); - exports.WASI_RIGHT_FD_READ = BigInt(2); - exports.WASI_RIGHT_FD_SEEK = BigInt(4); - exports.WASI_RIGHT_FD_FDSTAT_SET_FLAGS = BigInt(8); - exports.WASI_RIGHT_FD_SYNC = BigInt(16); - exports.WASI_RIGHT_FD_TELL = BigInt(32); - exports.WASI_RIGHT_FD_WRITE = BigInt(64); - exports.WASI_RIGHT_FD_ADVISE = BigInt(128); - exports.WASI_RIGHT_FD_ALLOCATE = BigInt(256); - exports.WASI_RIGHT_PATH_CREATE_DIRECTORY = BigInt(512); - exports.WASI_RIGHT_PATH_CREATE_FILE = BigInt(1024); - exports.WASI_RIGHT_PATH_LINK_SOURCE = BigInt(2048); - exports.WASI_RIGHT_PATH_LINK_TARGET = BigInt(4096); - exports.WASI_RIGHT_PATH_OPEN = BigInt(8192); - exports.WASI_RIGHT_FD_READDIR = BigInt(16384); - exports.WASI_RIGHT_PATH_READLINK = BigInt(32768); - exports.WASI_RIGHT_PATH_RENAME_SOURCE = BigInt(65536); - exports.WASI_RIGHT_PATH_RENAME_TARGET = BigInt(131072); - exports.WASI_RIGHT_PATH_FILESTAT_GET = BigInt(262144); - exports.WASI_RIGHT_PATH_FILESTAT_SET_SIZE = BigInt(524288); - exports.WASI_RIGHT_PATH_FILESTAT_SET_TIMES = BigInt(1048576); - exports.WASI_RIGHT_FD_FILESTAT_GET = BigInt(2097152); - exports.WASI_RIGHT_FD_FILESTAT_SET_SIZE = BigInt(4194304); - exports.WASI_RIGHT_FD_FILESTAT_SET_TIMES = BigInt(8388608); - exports.WASI_RIGHT_PATH_SYMLINK = BigInt(16777216); - exports.WASI_RIGHT_PATH_REMOVE_DIRECTORY = BigInt(33554432); - exports.WASI_RIGHT_PATH_UNLINK_FILE = BigInt(67108864); - exports.WASI_RIGHT_POLL_FD_READWRITE = BigInt(134217728); - exports.WASI_RIGHT_SOCK_SHUTDOWN = BigInt(268435456); - exports.RIGHTS_ALL = - exports.WASI_RIGHT_FD_DATASYNC | - exports.WASI_RIGHT_FD_READ | - exports.WASI_RIGHT_FD_SEEK | - exports.WASI_RIGHT_FD_FDSTAT_SET_FLAGS | - exports.WASI_RIGHT_FD_SYNC | - exports.WASI_RIGHT_FD_TELL | - exports.WASI_RIGHT_FD_WRITE | - exports.WASI_RIGHT_FD_ADVISE | - exports.WASI_RIGHT_FD_ALLOCATE | - exports.WASI_RIGHT_PATH_CREATE_DIRECTORY | - exports.WASI_RIGHT_PATH_CREATE_FILE | - exports.WASI_RIGHT_PATH_LINK_SOURCE | - exports.WASI_RIGHT_PATH_LINK_TARGET | - exports.WASI_RIGHT_PATH_OPEN | - exports.WASI_RIGHT_FD_READDIR | - exports.WASI_RIGHT_PATH_READLINK | - exports.WASI_RIGHT_PATH_RENAME_SOURCE | - exports.WASI_RIGHT_PATH_RENAME_TARGET | - exports.WASI_RIGHT_PATH_FILESTAT_GET | - exports.WASI_RIGHT_PATH_FILESTAT_SET_SIZE | - exports.WASI_RIGHT_PATH_FILESTAT_SET_TIMES | - exports.WASI_RIGHT_FD_FILESTAT_GET | - exports.WASI_RIGHT_FD_FILESTAT_SET_TIMES | - exports.WASI_RIGHT_FD_FILESTAT_SET_SIZE | - exports.WASI_RIGHT_PATH_SYMLINK | - exports.WASI_RIGHT_PATH_UNLINK_FILE | - exports.WASI_RIGHT_PATH_REMOVE_DIRECTORY | - exports.WASI_RIGHT_POLL_FD_READWRITE | - exports.WASI_RIGHT_SOCK_SHUTDOWN; - exports.RIGHTS_BLOCK_DEVICE_BASE = exports.RIGHTS_ALL; - exports.RIGHTS_BLOCK_DEVICE_INHERITING = exports.RIGHTS_ALL; - exports.RIGHTS_CHARACTER_DEVICE_BASE = exports.RIGHTS_ALL; - exports.RIGHTS_CHARACTER_DEVICE_INHERITING = exports.RIGHTS_ALL; - exports.RIGHTS_REGULAR_FILE_BASE = - exports.WASI_RIGHT_FD_DATASYNC | - exports.WASI_RIGHT_FD_READ | - exports.WASI_RIGHT_FD_SEEK | - exports.WASI_RIGHT_FD_FDSTAT_SET_FLAGS | - exports.WASI_RIGHT_FD_SYNC | - exports.WASI_RIGHT_FD_TELL | - exports.WASI_RIGHT_FD_WRITE | - exports.WASI_RIGHT_FD_ADVISE | - exports.WASI_RIGHT_FD_ALLOCATE | - exports.WASI_RIGHT_FD_FILESTAT_GET | - exports.WASI_RIGHT_FD_FILESTAT_SET_SIZE | - exports.WASI_RIGHT_FD_FILESTAT_SET_TIMES | - exports.WASI_RIGHT_POLL_FD_READWRITE; - exports.RIGHTS_REGULAR_FILE_INHERITING = BigInt(0); - exports.RIGHTS_DIRECTORY_BASE = - exports.WASI_RIGHT_FD_FDSTAT_SET_FLAGS | - exports.WASI_RIGHT_FD_SYNC | - exports.WASI_RIGHT_FD_ADVISE | - exports.WASI_RIGHT_PATH_CREATE_DIRECTORY | - exports.WASI_RIGHT_PATH_CREATE_FILE | - exports.WASI_RIGHT_PATH_LINK_SOURCE | - exports.WASI_RIGHT_PATH_LINK_TARGET | - exports.WASI_RIGHT_PATH_OPEN | - exports.WASI_RIGHT_FD_READDIR | - exports.WASI_RIGHT_PATH_READLINK | - exports.WASI_RIGHT_PATH_RENAME_SOURCE | - exports.WASI_RIGHT_PATH_RENAME_TARGET | - exports.WASI_RIGHT_PATH_FILESTAT_GET | - exports.WASI_RIGHT_PATH_FILESTAT_SET_SIZE | - exports.WASI_RIGHT_PATH_FILESTAT_SET_TIMES | - exports.WASI_RIGHT_FD_FILESTAT_GET | - exports.WASI_RIGHT_FD_FILESTAT_SET_TIMES | - exports.WASI_RIGHT_PATH_SYMLINK | - exports.WASI_RIGHT_PATH_UNLINK_FILE | - exports.WASI_RIGHT_PATH_REMOVE_DIRECTORY | - exports.WASI_RIGHT_POLL_FD_READWRITE; - exports.RIGHTS_DIRECTORY_INHERITING = exports.RIGHTS_DIRECTORY_BASE | exports.RIGHTS_REGULAR_FILE_BASE; - exports.RIGHTS_SOCKET_BASE = - exports.WASI_RIGHT_FD_READ | - exports.WASI_RIGHT_FD_FDSTAT_SET_FLAGS | - exports.WASI_RIGHT_FD_WRITE | - exports.WASI_RIGHT_FD_FILESTAT_GET | - exports.WASI_RIGHT_POLL_FD_READWRITE | - exports.WASI_RIGHT_SOCK_SHUTDOWN; - exports.RIGHTS_SOCKET_INHERITING = exports.RIGHTS_ALL; - exports.RIGHTS_TTY_BASE = - exports.WASI_RIGHT_FD_READ | - exports.WASI_RIGHT_FD_FDSTAT_SET_FLAGS | - exports.WASI_RIGHT_FD_WRITE | - exports.WASI_RIGHT_FD_FILESTAT_GET | - exports.WASI_RIGHT_POLL_FD_READWRITE; - exports.RIGHTS_TTY_INHERITING = BigInt(0); - exports.WASI_CLOCK_REALTIME = 0; - exports.WASI_CLOCK_MONOTONIC = 1; - exports.WASI_CLOCK_PROCESS_CPUTIME_ID = 2; - exports.WASI_CLOCK_THREAD_CPUTIME_ID = 3; - exports.WASI_EVENTTYPE_CLOCK = 0; - exports.WASI_EVENTTYPE_FD_READ = 1; - exports.WASI_EVENTTYPE_FD_WRITE = 2; - exports.WASI_FILESTAT_SET_ATIM = 1 << 0; - exports.WASI_FILESTAT_SET_ATIM_NOW = 1 << 1; - exports.WASI_FILESTAT_SET_MTIM = 1 << 2; - exports.WASI_FILESTAT_SET_MTIM_NOW = 1 << 3; - exports.WASI_O_CREAT = 1 << 0; - exports.WASI_O_DIRECTORY = 1 << 1; - exports.WASI_O_EXCL = 1 << 2; - exports.WASI_O_TRUNC = 1 << 3; - exports.WASI_PREOPENTYPE_DIR = 0; - exports.WASI_DIRCOOKIE_START = 0; - exports.WASI_STDIN_FILENO = 0; - exports.WASI_STDOUT_FILENO = 1; - exports.WASI_STDERR_FILENO = 2; - exports.WASI_WHENCE_SET = 0; - exports.WASI_WHENCE_CUR = 1; - exports.WASI_WHENCE_END = 2; - exports.ERROR_MAP = { - E2BIG: exports.WASI_E2BIG, - EACCES: exports.WASI_EACCES, - EADDRINUSE: exports.WASI_EADDRINUSE, - EADDRNOTAVAIL: exports.WASI_EADDRNOTAVAIL, - EAFNOSUPPORT: exports.WASI_EAFNOSUPPORT, - EALREADY: exports.WASI_EALREADY, - EAGAIN: exports.WASI_EAGAIN, - EBADF: exports.WASI_EBADF, - EBADMSG: exports.WASI_EBADMSG, - EBUSY: exports.WASI_EBUSY, - ECANCELED: exports.WASI_ECANCELED, - ECHILD: exports.WASI_ECHILD, - ECONNABORTED: exports.WASI_ECONNABORTED, - ECONNREFUSED: exports.WASI_ECONNREFUSED, - ECONNRESET: exports.WASI_ECONNRESET, - EDEADLOCK: exports.WASI_EDEADLK, - EDESTADDRREQ: exports.WASI_EDESTADDRREQ, - EDOM: exports.WASI_EDOM, - EDQUOT: exports.WASI_EDQUOT, - EEXIST: exports.WASI_EEXIST, - EFAULT: exports.WASI_EFAULT, - EFBIG: exports.WASI_EFBIG, - EHOSTDOWN: exports.WASI_EHOSTUNREACH, - EHOSTUNREACH: exports.WASI_EHOSTUNREACH, - EIDRM: exports.WASI_EIDRM, - EILSEQ: exports.WASI_EILSEQ, - EINPROGRESS: exports.WASI_EINPROGRESS, - EINTR: exports.WASI_EINTR, - EINVAL: exports.WASI_EINVAL, - EIO: exports.WASI_EIO, - EISCONN: exports.WASI_EISCONN, - EISDIR: exports.WASI_EISDIR, - ELOOP: exports.WASI_ELOOP, - EMFILE: exports.WASI_EMFILE, - EMLINK: exports.WASI_EMLINK, - EMSGSIZE: exports.WASI_EMSGSIZE, - EMULTIHOP: exports.WASI_EMULTIHOP, - ENAMETOOLONG: exports.WASI_ENAMETOOLONG, - ENETDOWN: exports.WASI_ENETDOWN, - ENETRESET: exports.WASI_ENETRESET, - ENETUNREACH: exports.WASI_ENETUNREACH, - ENFILE: exports.WASI_ENFILE, - ENOBUFS: exports.WASI_ENOBUFS, - ENODEV: exports.WASI_ENODEV, - ENOENT: exports.WASI_ENOENT, - ENOEXEC: exports.WASI_ENOEXEC, - ENOLCK: exports.WASI_ENOLCK, - ENOLINK: exports.WASI_ENOLINK, - ENOMEM: exports.WASI_ENOMEM, - ENOMSG: exports.WASI_ENOMSG, - ENOPROTOOPT: exports.WASI_ENOPROTOOPT, - ENOSPC: exports.WASI_ENOSPC, - ENOSYS: exports.WASI_ENOSYS, - ENOTCONN: exports.WASI_ENOTCONN, - ENOTDIR: exports.WASI_ENOTDIR, - ENOTEMPTY: exports.WASI_ENOTEMPTY, - ENOTRECOVERABLE: exports.WASI_ENOTRECOVERABLE, - ENOTSOCK: exports.WASI_ENOTSOCK, - ENOTTY: exports.WASI_ENOTTY, - ENXIO: exports.WASI_ENXIO, - EOVERFLOW: exports.WASI_EOVERFLOW, - EOWNERDEAD: exports.WASI_EOWNERDEAD, - EPERM: exports.WASI_EPERM, - EPIPE: exports.WASI_EPIPE, - EPROTO: exports.WASI_EPROTO, - EPROTONOSUPPORT: exports.WASI_EPROTONOSUPPORT, - EPROTOTYPE: exports.WASI_EPROTOTYPE, - ERANGE: exports.WASI_ERANGE, - EROFS: exports.WASI_EROFS, - ESPIPE: exports.WASI_ESPIPE, - ESRCH: exports.WASI_ESRCH, - ESTALE: exports.WASI_ESTALE, - ETIMEDOUT: exports.WASI_ETIMEDOUT, - ETXTBSY: exports.WASI_ETXTBSY, - EXDEV: exports.WASI_EXDEV, - }; - exports.SIGNAL_MAP = { - [exports.WASI_SIGHUP]: "SIGHUP", - [exports.WASI_SIGINT]: "SIGINT", - [exports.WASI_SIGQUIT]: "SIGQUIT", - [exports.WASI_SIGILL]: "SIGILL", - [exports.WASI_SIGTRAP]: "SIGTRAP", - [exports.WASI_SIGABRT]: "SIGABRT", - [exports.WASI_SIGBUS]: "SIGBUS", - [exports.WASI_SIGFPE]: "SIGFPE", - [exports.WASI_SIGKILL]: "SIGKILL", - [exports.WASI_SIGUSR1]: "SIGUSR1", - [exports.WASI_SIGSEGV]: "SIGSEGV", - [exports.WASI_SIGUSR2]: "SIGUSR2", - [exports.WASI_SIGPIPE]: "SIGPIPE", - [exports.WASI_SIGALRM]: "SIGALRM", - [exports.WASI_SIGTERM]: "SIGTERM", - [exports.WASI_SIGCHLD]: "SIGCHLD", - [exports.WASI_SIGCONT]: "SIGCONT", - [exports.WASI_SIGSTOP]: "SIGSTOP", - [exports.WASI_SIGTSTP]: "SIGTSTP", - [exports.WASI_SIGTTIN]: "SIGTTIN", - [exports.WASI_SIGTTOU]: "SIGTTOU", - [exports.WASI_SIGURG]: "SIGURG", - [exports.WASI_SIGXCPU]: "SIGXCPU", - [exports.WASI_SIGXFSZ]: "SIGXFSZ", - [exports.WASI_SIGVTALRM]: "SIGVTALRM", - }; - }, -}); - -// node_modules/wasi-js/dist/wasi.js -var require_wasi = __commonJS({ - "node_modules/wasi-js/dist/wasi.js"(exports) { - var __importDefault = - (exports && exports.__importDefault) || - function (mod) { - return mod && mod.__esModule ? mod : { default: mod }; - }; - let fs; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.SOCKET_DEFAULT_RIGHTS = void 0; - var log = () => {}; - var logOpen = () => {}; - var SC_OPEN_MAX = 32768; - var types_1 = require_types(); - - var constants_1 = require_constants(); - var STDIN_DEFAULT_RIGHTS = - constants_1.WASI_RIGHT_FD_DATASYNC | - constants_1.WASI_RIGHT_FD_READ | - constants_1.WASI_RIGHT_FD_SYNC | - constants_1.WASI_RIGHT_FD_ADVISE | - constants_1.WASI_RIGHT_FD_FILESTAT_GET | - constants_1.WASI_RIGHT_POLL_FD_READWRITE; - var STDOUT_DEFAULT_RIGHTS = - constants_1.WASI_RIGHT_FD_DATASYNC | - constants_1.WASI_RIGHT_FD_WRITE | - constants_1.WASI_RIGHT_FD_SYNC | - constants_1.WASI_RIGHT_FD_ADVISE | - constants_1.WASI_RIGHT_FD_FILESTAT_GET | - constants_1.WASI_RIGHT_POLL_FD_READWRITE; - var STDERR_DEFAULT_RIGHTS = STDOUT_DEFAULT_RIGHTS; - exports.SOCKET_DEFAULT_RIGHTS = - constants_1.WASI_RIGHT_FD_DATASYNC | - constants_1.WASI_RIGHT_FD_READ | - constants_1.WASI_RIGHT_FD_WRITE | - constants_1.WASI_RIGHT_FD_ADVISE | - constants_1.WASI_RIGHT_FD_FILESTAT_GET | - constants_1.WASI_RIGHT_POLL_FD_READWRITE | - constants_1.WASI_RIGHT_FD_FDSTAT_SET_FLAGS; - var msToNs = ms => { - const msInt = Math.trunc(ms); - - const decimal = BigInt(Math.round((ms - msInt) * 1e6)); - const ns = BigInt(msInt) * BigInt(1e6); - return ns + decimal; - }; - var nsToMs = ns => { - if (typeof ns === "number") { - ns = Math.trunc(ns); - } - const nsInt = BigInt(ns); - return Number(nsInt / BigInt(1e6)); - }; - var wrap = - f => - (...args) => { - try { - return f(...args); - } catch (err) { - let e = err; - while (e.prev != null) { - e = e.prev; - } - if (e?.code && typeof e?.code === "string") { - return constants_1.ERROR_MAP[e.code] || constants_1.WASI_EINVAL; - } - if (e instanceof types_1.WASIError) { - return e.errno; - } - throw e; - } - }; - var stat = (wasi, fd) => { - const entry = wasi.FD_MAP.get(fd); - if (!entry) { - throw new types_1.WASIError(constants_1.WASI_EBADF); - } - if (entry.filetype === void 0) { - const stats = wasi.fstatSync(entry.real); - const { filetype, rightsBase, rightsInheriting } = translateFileAttributes(wasi, fd, stats); - entry.filetype = filetype; - if (!entry.rights) { - entry.rights = { - base: rightsBase, - inheriting: rightsInheriting, - }; - } - } - return entry; - }; - var translateFileAttributes = (wasi, fd, stats) => { - switch (true) { - case stats.isBlockDevice(): - return { - filetype: constants_1.WASI_FILETYPE_BLOCK_DEVICE, - rightsBase: constants_1.RIGHTS_BLOCK_DEVICE_BASE, - rightsInheriting: constants_1.RIGHTS_BLOCK_DEVICE_INHERITING, - }; - case stats.isCharacterDevice(): { - const filetype = constants_1.WASI_FILETYPE_CHARACTER_DEVICE; - if (fd !== void 0 && wasi.bindings.isTTY(fd)) { - return { - filetype, - rightsBase: constants_1.RIGHTS_TTY_BASE, - rightsInheriting: constants_1.RIGHTS_TTY_INHERITING, - }; - } - return { - filetype, - rightsBase: constants_1.RIGHTS_CHARACTER_DEVICE_BASE, - rightsInheriting: constants_1.RIGHTS_CHARACTER_DEVICE_INHERITING, - }; - } - case stats.isDirectory(): - return { - filetype: constants_1.WASI_FILETYPE_DIRECTORY, - rightsBase: constants_1.RIGHTS_DIRECTORY_BASE, - rightsInheriting: constants_1.RIGHTS_DIRECTORY_INHERITING, - }; - case stats.isFIFO(): - return { - filetype: constants_1.WASI_FILETYPE_SOCKET_STREAM, - rightsBase: constants_1.RIGHTS_SOCKET_BASE, - rightsInheriting: constants_1.RIGHTS_SOCKET_INHERITING, - }; - case stats.isFile(): - return { - filetype: constants_1.WASI_FILETYPE_REGULAR_FILE, - rightsBase: constants_1.RIGHTS_REGULAR_FILE_BASE, - rightsInheriting: constants_1.RIGHTS_REGULAR_FILE_INHERITING, - }; - case stats.isSocket(): - return { - filetype: constants_1.WASI_FILETYPE_SOCKET_STREAM, - rightsBase: constants_1.RIGHTS_SOCKET_BASE, - rightsInheriting: constants_1.RIGHTS_SOCKET_INHERITING, - }; - case stats.isSymbolicLink(): - return { - filetype: constants_1.WASI_FILETYPE_SYMBOLIC_LINK, - rightsBase: BigInt(0), - rightsInheriting: BigInt(0), - }; - default: - return { - filetype: constants_1.WASI_FILETYPE_UNKNOWN, - rightsBase: BigInt(0), - rightsInheriting: BigInt(0), - }; - } - }; - var warnedAboutSleep = false; - - var defaultConfig; - function getDefaults() { - if (defaultConfig) return defaultConfig; - - const defaultBindings = { - hrtime: () => process.hrtime.bigint(), - exit: code => { - process.exit(code); - }, - kill: signal => { - process.kill(process.pid, signal); - }, - randomFillSync: array => crypto.getRandomValues(array), - isTTY: fd => import.meta.require("node:tty").isatty(fd), - fs: Bun.fs(), - path: import.meta.require("node:path"), - }; - - return (defaultConfig = { - args: [], - env: {}, - preopens: {}, - bindings: defaultBindings, - sleep: ms => { - Bun.sleepSync(ms); - }, - }); - } - - var WASI = class WASI { - constructor(wasiConfig = {}) { - const defaultConfig = getDefaults(); - this.lastStdin = 0; - this.sleep = wasiConfig.sleep || defaultConfig.sleep; - this.getStdin = wasiConfig.getStdin; - this.sendStdout = wasiConfig.sendStdout; - this.sendStderr = wasiConfig.sendStderr; - let preopens = wasiConfig.preopens ?? defaultConfig.preopens; - this.env = wasiConfig.env ?? defaultConfig.env; - - const args = wasiConfig.args ?? defaultConfig.args; - this.memory = void 0; - this.view = void 0; - this.bindings = wasiConfig.bindings || defaultConfig.bindings; - const bindings = this.bindings; - fs = bindings.fs; - this.FD_MAP = /* @__PURE__ */ new Map([ - [ - constants_1.WASI_STDIN_FILENO, - { - real: 0, - filetype: constants_1.WASI_FILETYPE_CHARACTER_DEVICE, - rights: { - base: STDIN_DEFAULT_RIGHTS, - inheriting: BigInt(0), - }, - path: "/dev/stdin", - }, - ], - [ - constants_1.WASI_STDOUT_FILENO, - { - real: 1, - filetype: constants_1.WASI_FILETYPE_CHARACTER_DEVICE, - rights: { - base: STDOUT_DEFAULT_RIGHTS, - inheriting: BigInt(0), - }, - path: "/dev/stdout", - }, - ], - [ - constants_1.WASI_STDERR_FILENO, - { - real: 2, - filetype: constants_1.WASI_FILETYPE_CHARACTER_DEVICE, - rights: { - base: STDERR_DEFAULT_RIGHTS, - inheriting: BigInt(0), - }, - path: "/dev/stderr", - }, - ], - ]); - const path = bindings.path; - for (const [k, v] of Object.entries(preopens)) { - const real = fs.openSync(v, nodeFsConstants.O_RDONLY); - const newfd = this.getUnusedFileDescriptor(); - this.FD_MAP.set(newfd, { - real, - filetype: constants_1.WASI_FILETYPE_DIRECTORY, - rights: { - base: constants_1.RIGHTS_DIRECTORY_BASE, - inheriting: constants_1.RIGHTS_DIRECTORY_INHERITING, - }, - fakePath: k, - path: v, - }); - } - const getiovs = (iovs, iovsLen) => { - this.refreshMemory(); - - const { view, memory } = this; - const { buffer } = memory; - const { byteLength } = buffer; - - if (iovsLen === 1) { - const ptr = iovs; - const buf = view.getUint32(ptr, true); - let bufLen = view.getUint32(ptr + 4, true); - - if (bufLen > byteLength - buf) { - console.log({ - buf, - bufLen, - total_memory: byteLength, - }); - log("getiovs: warning -- truncating buffer to fit in memory"); - bufLen = Math.min(bufLen, Math.max(0, byteLength - buf)); - } - try { - return [new Uint8Array(buffer, buf, bufLen)]; - } catch (err) { - console.warn("WASI.getiovs -- invalid buffer", err); - throw new types_1.WASIError(constants_1.WASI_EINVAL); - } - } - - // Avoid referencing Array because materializing the Array constructor can show up in profiling - const buffers = []; - buffers.length = iovsLen; - - for (let i = 0, ptr = iovs; i < iovsLen; i++, ptr += 8) { - const buf = view.getUint32(ptr, true); - let bufLen = view.getUint32(ptr + 4, true); - - if (bufLen > byteLength - buf) { - console.log({ - buf, - bufLen, - total_memory: byteLength, - }); - log("getiovs: warning -- truncating buffer to fit in memory"); - bufLen = Math.min(bufLen, Math.max(0, byteLength - buf)); - } - try { - buffers[i] = new Uint8Array(buffer, buf, bufLen); - } catch (err) { - console.warn("WASI.getiovs -- invalid buffer", err); - throw new types_1.WASIError(constants_1.WASI_EINVAL); - } - } - return buffers; - }; - const CHECK_FD = (fd, rights) => { - const stats = stat(this, fd); - if (rights !== BigInt(0) && (stats.rights.base & rights) === BigInt(0)) { - throw new types_1.WASIError(constants_1.WASI_EPERM); - } - return stats; - }; - const CPUTIME_START = Bun.nanoseconds(); - const timeOrigin = Math.trunc(performance.timeOrigin * 1e6); - const now = clockId => { - switch (clockId) { - case constants_1.WASI_CLOCK_MONOTONIC: - return Bun.nanoseconds(); - case constants_1.WASI_CLOCK_REALTIME: - return Bun.nanoseconds() + timeOrigin; - case constants_1.WASI_CLOCK_PROCESS_CPUTIME_ID: - case constants_1.WASI_CLOCK_THREAD_CPUTIME_ID: - return Bun.nanoseconds() - CPUTIME_START; - default: - return null; - } - }; - this.wasiImport = { - args_get: (argv, argvBuf) => { - this.refreshMemory(); - let coffset = argv; - let offset = argvBuf; - args.forEach(a => { - this.view.setUint32(coffset, offset, true); - coffset += 4; - offset += Buffer.from(this.memory.buffer).write(`${a}\0`, offset); - }); - return constants_1.WASI_ESUCCESS; - }, - args_sizes_get: (argc, argvBufSize) => { - this.refreshMemory(); - this.view.setUint32(argc, args.length, true); - const size = args.reduce((acc, a) => acc + Buffer.byteLength(a) + 1, 0); - this.view.setUint32(argvBufSize, size, true); - return constants_1.WASI_ESUCCESS; - }, - environ_get: (environ, environBuf) => { - this.refreshMemory(); - let coffset = environ; - let offset = environBuf; - Object.entries(this.env).forEach(([key, value]) => { - this.view.setUint32(coffset, offset, true); - coffset += 4; - offset += Buffer.from(this.memory.buffer).write(`${key}=${value}\0`, offset); - }); - return constants_1.WASI_ESUCCESS; - }, - environ_sizes_get: (environCount, environBufSize) => { - this.refreshMemory(); - const envProcessed = Object.entries(this.env).map(([key, value]) => `${key}=${value}\0`); - const size = envProcessed.reduce((acc, e) => acc + Buffer.byteLength(e), 0); - this.view.setUint32(environCount, envProcessed.length, true); - this.view.setUint32(environBufSize, size, true); - return constants_1.WASI_ESUCCESS; - }, - clock_res_get: (clockId, resolution) => { - let res; - switch (clockId) { - case constants_1.WASI_CLOCK_MONOTONIC: - case constants_1.WASI_CLOCK_PROCESS_CPUTIME_ID: - case constants_1.WASI_CLOCK_THREAD_CPUTIME_ID: { - res = BigInt(1); - break; - } - case constants_1.WASI_CLOCK_REALTIME: { - res = BigInt(1e3); - break; - } - } - if (!res) { - throw Error("invalid clockId"); - } - this.view.setBigUint64(resolution, res); - return constants_1.WASI_ESUCCESS; - }, - clock_time_get: (clockId, _precision, time) => { - this.refreshMemory(); - const n = now(clockId); - if (n === null) { - return constants_1.WASI_EINVAL; - } - this.view.setBigUint64(time, BigInt(n), true); - return constants_1.WASI_ESUCCESS; - }, - fd_advise: wrap((fd, _offset, _len, _advice) => { - CHECK_FD(fd, constants_1.WASI_RIGHT_FD_ADVISE); - return constants_1.WASI_ENOSYS; - }), - fd_allocate: wrap((fd, _offset, _len) => { - CHECK_FD(fd, constants_1.WASI_RIGHT_FD_ALLOCATE); - return constants_1.WASI_ENOSYS; - }), - fd_close: wrap(fd => { - const stats = CHECK_FD(fd, BigInt(0)); - fs.closeSync(stats.real); - this.FD_MAP.delete(fd); - return constants_1.WASI_ESUCCESS; - }), - fd_datasync: wrap(fd => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_DATASYNC); - fs.fdatasyncSync(stats.real); - return constants_1.WASI_ESUCCESS; - }), - fd_fdstat_get: wrap((fd, bufPtr) => { - const stats = CHECK_FD(fd, BigInt(0)); - this.refreshMemory(); - if (stats.filetype == null) { - throw Error("stats.filetype must be set"); - } - this.view.setUint8(bufPtr, stats.filetype); - this.view.setUint16(bufPtr + 2, 0, true); - this.view.setUint16(bufPtr + 4, 0, true); - this.view.setBigUint64(bufPtr + 8, BigInt(stats.rights.base), true); - this.view.setBigUint64(bufPtr + 8 + 8, BigInt(stats.rights.inheriting), true); - return constants_1.WASI_ESUCCESS; - }), - fd_fdstat_set_flags: wrap((fd, flags) => { - CHECK_FD(fd, constants_1.WASI_RIGHT_FD_FDSTAT_SET_FLAGS); - if (this.wasiImport.sock_fcntlSetFlags(fd, flags) == 0) { - return constants_1.WASI_ESUCCESS; - } - return constants_1.WASI_ENOSYS; - }), - fd_fdstat_set_rights: wrap((fd, fsRightsBase, fsRightsInheriting) => { - const stats = CHECK_FD(fd, BigInt(0)); - const nrb = stats.rights.base | fsRightsBase; - if (nrb > stats.rights.base) { - return constants_1.WASI_EPERM; - } - const nri = stats.rights.inheriting | fsRightsInheriting; - if (nri > stats.rights.inheriting) { - return constants_1.WASI_EPERM; - } - stats.rights.base = fsRightsBase; - stats.rights.inheriting = fsRightsInheriting; - return constants_1.WASI_ESUCCESS; - }), - fd_filestat_get: wrap((fd, bufPtr) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_FILESTAT_GET); - const rstats = this.fstatSync(stats.real); - this.refreshMemory(); - this.view.setBigUint64(bufPtr, BigInt(rstats.dev), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, BigInt(rstats.ino), true); - bufPtr += 8; - if (stats.filetype == null) { - throw Error("stats.filetype must be set"); - } - this.view.setUint8(bufPtr, stats.filetype); - bufPtr += 8; - this.view.setBigUint64(bufPtr, BigInt(rstats.nlink), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, BigInt(rstats.size), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, msToNs(rstats.atimeMs), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, msToNs(rstats.mtimeMs), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, msToNs(rstats.ctimeMs), true); - return constants_1.WASI_ESUCCESS; - }), - fd_filestat_set_size: wrap((fd, stSize) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_FILESTAT_SET_SIZE); - fs.ftruncateSync(stats.real, Number(stSize)); - return constants_1.WASI_ESUCCESS; - }), - fd_filestat_set_times: wrap((fd, stAtim, stMtim, fstflags) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_FILESTAT_SET_TIMES); - const rstats = this.fstatSync(stats.real); - let atim = rstats.atime; - let mtim = rstats.mtime; - const n = nsToMs(now(constants_1.WASI_CLOCK_REALTIME)); - const atimflags = constants_1.WASI_FILESTAT_SET_ATIM | constants_1.WASI_FILESTAT_SET_ATIM_NOW; - if ((fstflags & atimflags) === atimflags) { - return constants_1.WASI_EINVAL; - } - const mtimflags = constants_1.WASI_FILESTAT_SET_MTIM | constants_1.WASI_FILESTAT_SET_MTIM_NOW; - if ((fstflags & mtimflags) === mtimflags) { - return constants_1.WASI_EINVAL; - } - if ((fstflags & constants_1.WASI_FILESTAT_SET_ATIM) === constants_1.WASI_FILESTAT_SET_ATIM) { - atim = nsToMs(stAtim); - } else if ((fstflags & constants_1.WASI_FILESTAT_SET_ATIM_NOW) === constants_1.WASI_FILESTAT_SET_ATIM_NOW) { - atim = n; - } - if ((fstflags & constants_1.WASI_FILESTAT_SET_MTIM) === constants_1.WASI_FILESTAT_SET_MTIM) { - mtim = nsToMs(stMtim); - } else if ((fstflags & constants_1.WASI_FILESTAT_SET_MTIM_NOW) === constants_1.WASI_FILESTAT_SET_MTIM_NOW) { - mtim = n; - } - fs.futimesSync(stats.real, new Date(atim), new Date(mtim)); - return constants_1.WASI_ESUCCESS; - }), - fd_prestat_get: wrap((fd, bufPtr) => { - const stats = CHECK_FD(fd, BigInt(0)); - this.refreshMemory(); - this.view.setUint8(bufPtr, constants_1.WASI_PREOPENTYPE_DIR); - this.view.setUint32(bufPtr + 4, Buffer.byteLength(stats.fakePath ?? stats.path ?? ""), true); - return constants_1.WASI_ESUCCESS; - }), - fd_prestat_dir_name: wrap((fd, pathPtr, pathLen) => { - const stats = CHECK_FD(fd, BigInt(0)); - this.refreshMemory(); - Buffer.from(this.memory.buffer).write(stats.fakePath ?? stats.path ?? "", pathPtr, pathLen, "utf8"); - return constants_1.WASI_ESUCCESS; - }), - fd_pwrite: wrap((fd, iovs, iovsLen, offset, nwritten) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_WRITE | constants_1.WASI_RIGHT_FD_SEEK); - let written = 0; - getiovs(iovs, iovsLen).forEach(iov => { - let w = 0; - while (w < iov.byteLength) { - w += fs.writeSync(stats.real, iov, w, iov.byteLength - w, Number(offset) + written + w); - } - written += w; - }); - this.view.setUint32(nwritten, written, true); - return constants_1.WASI_ESUCCESS; - }), - fd_write: wrap((fd, iovs, iovsLen, nwritten) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_WRITE); - const IS_STDOUT = fd == constants_1.WASI_STDOUT_FILENO; - const IS_STDERR = fd == constants_1.WASI_STDERR_FILENO; - let written = 0; - getiovs(iovs, iovsLen).forEach(iov => { - if (iov.byteLength == 0) return; - if (IS_STDOUT && this.sendStdout != null) { - this.sendStdout(iov); - written += iov.byteLength; - } else if (IS_STDERR && this.sendStderr != null) { - this.sendStderr(iov); - written += iov.byteLength; - } else { - let w = 0; - while (w < iov.byteLength) { - const i = fs.writeSync( - stats.real, - iov, - w, - iov.byteLength - w, - stats.offset ? Number(stats.offset) : null, - ); - if (stats.offset) stats.offset += BigInt(i); - w += i; - } - written += w; - } - }); - this.view.setUint32(nwritten, written, true); - return constants_1.WASI_ESUCCESS; - }), - fd_pread: wrap((fd, iovs, iovsLen, offset, nread) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_READ | constants_1.WASI_RIGHT_FD_SEEK); - let read = 0; - outer: for (const iov of getiovs(iovs, iovsLen)) { - let r = 0; - while (r < iov.byteLength) { - const length = iov.byteLength - r; - const rr = fs.readSync(stats.real, iov, r, iov.byteLength - r, Number(offset) + read + r); - r += rr; - read += rr; - if (rr === 0 || rr < length) { - break outer; - } - } - read += r; - } - this.view.setUint32(nread, read, true); - return constants_1.WASI_ESUCCESS; - }), - fd_read: wrap((fd, iovs, iovsLen, nread) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_READ); - const IS_STDIN = fd == constants_1.WASI_STDIN_FILENO; - let read = 0; - outer: for (const iov of getiovs(iovs, iovsLen)) { - let r = 0; - while (r < iov.byteLength) { - let length = iov.byteLength - r; - let position = IS_STDIN || stats.offset === void 0 ? null : Number(stats.offset); - let rr = 0; - if (IS_STDIN) { - if (this.getStdin != null) { - if (this.stdinBuffer == null) { - this.stdinBuffer = this.getStdin(); - } - if (this.stdinBuffer != null) { - rr = this.stdinBuffer.copy(iov); - if (rr == this.stdinBuffer.length) { - this.stdinBuffer = void 0; - } else { - this.stdinBuffer = this.stdinBuffer.slice(rr); - } - if (rr > 0) { - this.lastStdin = new Date().valueOf(); - } - } - } else { - if (this.sleep == null && !warnedAboutSleep) { - warnedAboutSleep = true; - console.log("(cpu waiting for stdin: please define a way to sleep!) "); - } - try { - rr = fs.readSync(stats.real, iov, r, length, position); - } catch (_err) {} - if (rr == 0) { - this.shortPause(); - } else { - this.lastStdin = new Date().valueOf(); - } - } - } else { - rr = fs.readSync(stats.real, iov, r, length, position); - } - if (stats.filetype == constants_1.WASI_FILETYPE_REGULAR_FILE) { - stats.offset = (stats.offset ? stats.offset : BigInt(0)) + BigInt(rr); - } - r += rr; - read += rr; - if (rr === 0 || rr < length) { - break outer; - } - } - } - this.view.setUint32(nread, read, true); - return constants_1.WASI_ESUCCESS; - }), - fd_readdir: wrap((fd, bufPtr, bufLen, cookie, bufusedPtr) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_READDIR); - this.refreshMemory(); - const entries = fs.readdirSync(stats.path, { withFileTypes: true }); - const startPtr = bufPtr; - for (let i = Number(cookie); i < entries.length; i += 1) { - const entry = entries[i]; - let nameLength = Buffer.byteLength(entry.name); - if (bufPtr - startPtr > bufLen) { - break; - } - this.view.setBigUint64(bufPtr, BigInt(i + 1), true); - bufPtr += 8; - if (bufPtr - startPtr > bufLen) { - break; - } - const rstats = fs.lstatSync(path.resolve(stats.path, entry.name)); - this.view.setBigUint64(bufPtr, BigInt(rstats.ino), true); - bufPtr += 8; - if (bufPtr - startPtr > bufLen) { - break; - } - this.view.setUint32(bufPtr, nameLength, true); - bufPtr += 4; - if (bufPtr - startPtr > bufLen) { - break; - } - let filetype; - switch (true) { - case rstats.isBlockDevice(): - filetype = constants_1.WASI_FILETYPE_BLOCK_DEVICE; - break; - case rstats.isCharacterDevice(): - filetype = constants_1.WASI_FILETYPE_CHARACTER_DEVICE; - break; - case rstats.isDirectory(): - filetype = constants_1.WASI_FILETYPE_DIRECTORY; - break; - case rstats.isFIFO(): - filetype = constants_1.WASI_FILETYPE_SOCKET_STREAM; - break; - case rstats.isFile(): - filetype = constants_1.WASI_FILETYPE_REGULAR_FILE; - break; - case rstats.isSocket(): - filetype = constants_1.WASI_FILETYPE_SOCKET_STREAM; - break; - case rstats.isSymbolicLink(): - filetype = constants_1.WASI_FILETYPE_SYMBOLIC_LINK; - break; - default: - filetype = constants_1.WASI_FILETYPE_UNKNOWN; - break; - } - this.view.setUint8(bufPtr, filetype); - bufPtr += 1; - bufPtr += 3; - if (bufPtr + nameLength >= startPtr + bufLen) { - break; - } - let memory_buffer = Buffer.from(this.memory.buffer); - memory_buffer.write(entry.name, bufPtr); - bufPtr += nameLength; - } - const bufused = bufPtr - startPtr; - this.view.setUint32(bufusedPtr, Math.min(bufused, bufLen), true); - return constants_1.WASI_ESUCCESS; - }), - fd_renumber: wrap((from, to) => { - CHECK_FD(from, BigInt(0)); - CHECK_FD(to, BigInt(0)); - fs.closeSync(this.FD_MAP.get(from).real); - this.FD_MAP.set(from, this.FD_MAP.get(to)); - this.FD_MAP.delete(to); - return constants_1.WASI_ESUCCESS; - }), - fd_seek: wrap((fd, offset, whence, newOffsetPtr) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_SEEK); - this.refreshMemory(); - switch (whence) { - case constants_1.WASI_WHENCE_CUR: - stats.offset = (stats.offset ? stats.offset : BigInt(0)) + BigInt(offset); - break; - case constants_1.WASI_WHENCE_END: - const { size } = this.fstatSync(stats.real); - stats.offset = BigInt(size) + BigInt(offset); - break; - case constants_1.WASI_WHENCE_SET: - stats.offset = BigInt(offset); - break; - } - if (stats.offset == null) { - throw Error("stats.offset must be defined"); - } - this.view.setBigUint64(newOffsetPtr, stats.offset, true); - return constants_1.WASI_ESUCCESS; - }), - fd_tell: wrap((fd, offsetPtr) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_TELL); - this.refreshMemory(); - if (!stats.offset) { - stats.offset = BigInt(0); - } - this.view.setBigUint64(offsetPtr, stats.offset, true); - return constants_1.WASI_ESUCCESS; - }), - fd_sync: wrap(fd => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_FD_SYNC); - fs.fsyncSync(stats.real); - return constants_1.WASI_ESUCCESS; - }), - path_create_directory: wrap((fd, pathPtr, pathLen) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_PATH_CREATE_DIRECTORY); - if (!stats.path) { - return constants_1.WASI_EINVAL; - } - this.refreshMemory(); - const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString(); - fs.mkdirSync(path.resolve(stats.path, p)); - return constants_1.WASI_ESUCCESS; - }), - path_filestat_get: wrap((fd, flags, pathPtr, pathLen, bufPtr) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_PATH_FILESTAT_GET); - if (!stats.path) { - return constants_1.WASI_EINVAL; - } - this.refreshMemory(); - const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString(); - let rstats; - if (flags) { - rstats = fs.statSync(path.resolve(stats.path, p)); - } else { - rstats = fs.lstatSync(path.resolve(stats.path, p)); - } - this.view.setBigUint64(bufPtr, BigInt(rstats.dev), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, BigInt(rstats.ino), true); - bufPtr += 8; - this.view.setUint8(bufPtr, translateFileAttributes(this, void 0, rstats).filetype); - bufPtr += 8; - this.view.setBigUint64(bufPtr, BigInt(rstats.nlink), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, BigInt(rstats.size), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, BigInt(rstats.atime.getTime() * 1e6), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, BigInt(rstats.mtime.getTime() * 1e6), true); - bufPtr += 8; - this.view.setBigUint64(bufPtr, BigInt(rstats.ctime.getTime() * 1e6), true); - return constants_1.WASI_ESUCCESS; - }), - path_filestat_set_times: wrap((fd, _dirflags, pathPtr, pathLen, stAtim, stMtim, fstflags) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_PATH_FILESTAT_SET_TIMES); - if (!stats.path) { - return constants_1.WASI_EINVAL; - } - this.refreshMemory(); - const rstats = this.fstatSync(stats.real); - let atim = rstats.atime; - let mtim = rstats.mtime; - const n = nsToMs(now(constants_1.WASI_CLOCK_REALTIME)); - const atimflags = constants_1.WASI_FILESTAT_SET_ATIM | constants_1.WASI_FILESTAT_SET_ATIM_NOW; - if ((fstflags & atimflags) === atimflags) { - return constants_1.WASI_EINVAL; - } - const mtimflags = constants_1.WASI_FILESTAT_SET_MTIM | constants_1.WASI_FILESTAT_SET_MTIM_NOW; - if ((fstflags & mtimflags) === mtimflags) { - return constants_1.WASI_EINVAL; - } - if ((fstflags & constants_1.WASI_FILESTAT_SET_ATIM) === constants_1.WASI_FILESTAT_SET_ATIM) { - atim = nsToMs(stAtim); - } else if ((fstflags & constants_1.WASI_FILESTAT_SET_ATIM_NOW) === constants_1.WASI_FILESTAT_SET_ATIM_NOW) { - atim = n; - } - if ((fstflags & constants_1.WASI_FILESTAT_SET_MTIM) === constants_1.WASI_FILESTAT_SET_MTIM) { - mtim = nsToMs(stMtim); - } else if ((fstflags & constants_1.WASI_FILESTAT_SET_MTIM_NOW) === constants_1.WASI_FILESTAT_SET_MTIM_NOW) { - mtim = n; - } - const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString(); - fs.utimesSync(path.resolve(stats.path, p), new Date(atim), new Date(mtim)); - return constants_1.WASI_ESUCCESS; - }), - path_link: wrap((oldFd, _oldFlags, oldPath, oldPathLen, newFd, newPath, newPathLen) => { - const ostats = CHECK_FD(oldFd, constants_1.WASI_RIGHT_PATH_LINK_SOURCE); - const nstats = CHECK_FD(newFd, constants_1.WASI_RIGHT_PATH_LINK_TARGET); - if (!ostats.path || !nstats.path) { - return constants_1.WASI_EINVAL; - } - this.refreshMemory(); - const op = Buffer.from(this.memory.buffer, oldPath, oldPathLen).toString(); - const np = Buffer.from(this.memory.buffer, newPath, newPathLen).toString(); - fs.linkSync(path.resolve(ostats.path, op), path.resolve(nstats.path, np)); - return constants_1.WASI_ESUCCESS; - }), - path_open: wrap( - (dirfd, _dirflags, pathPtr, pathLen, oflags, fsRightsBase, fsRightsInheriting, fsFlags, fdPtr) => { - try { - const stats = CHECK_FD(dirfd, constants_1.WASI_RIGHT_PATH_OPEN); - fsRightsBase = BigInt(fsRightsBase); - fsRightsInheriting = BigInt(fsRightsInheriting); - const read = - (fsRightsBase & (constants_1.WASI_RIGHT_FD_READ | constants_1.WASI_RIGHT_FD_READDIR)) !== BigInt(0); - const write = - (fsRightsBase & - (constants_1.WASI_RIGHT_FD_DATASYNC | - constants_1.WASI_RIGHT_FD_WRITE | - constants_1.WASI_RIGHT_FD_ALLOCATE | - constants_1.WASI_RIGHT_FD_FILESTAT_SET_SIZE)) !== - BigInt(0); - let noflags; - if (write && read) { - noflags = nodeFsConstants.O_RDWR; - } else if (read) { - noflags = nodeFsConstants.O_RDONLY; - } else if (write) { - noflags = nodeFsConstants.O_WRONLY; - } - let neededBase = fsRightsBase | constants_1.WASI_RIGHT_PATH_OPEN; - let neededInheriting = fsRightsBase | fsRightsInheriting; - if ((oflags & constants_1.WASI_O_CREAT) !== 0) { - noflags |= nodeFsConstants.O_CREAT; - neededBase |= constants_1.WASI_RIGHT_PATH_CREATE_FILE; - } - if ((oflags & constants_1.WASI_O_DIRECTORY) !== 0) { - noflags |= nodeFsConstants.O_DIRECTORY; - } - if ((oflags & constants_1.WASI_O_EXCL) !== 0) { - noflags |= nodeFsConstants.O_EXCL; - } - if ((oflags & constants_1.WASI_O_TRUNC) !== 0) { - noflags |= nodeFsConstants.O_TRUNC; - neededBase |= constants_1.WASI_RIGHT_PATH_FILESTAT_SET_SIZE; - } - if ((fsFlags & constants_1.WASI_FDFLAG_APPEND) !== 0) { - noflags |= nodeFsConstants.O_APPEND; - } - if ((fsFlags & constants_1.WASI_FDFLAG_DSYNC) !== 0) { - if (nodeFsConstants.O_DSYNC) { - noflags |= nodeFsConstants.O_DSYNC; - } else { - noflags |= nodeFsConstants.O_SYNC; - } - neededInheriting |= constants_1.WASI_RIGHT_FD_DATASYNC; - } - if ((fsFlags & constants_1.WASI_FDFLAG_NONBLOCK) !== 0) { - noflags |= nodeFsConstants.O_NONBLOCK; - } - if ((fsFlags & constants_1.WASI_FDFLAG_RSYNC) !== 0) { - if (nodeFsConstants.O_RSYNC) { - noflags |= nodeFsConstants.O_RSYNC; - } else { - noflags |= nodeFsConstants.O_SYNC; - } - neededInheriting |= constants_1.WASI_RIGHT_FD_SYNC; - } - if ((fsFlags & constants_1.WASI_FDFLAG_SYNC) !== 0) { - noflags |= nodeFsConstants.O_SYNC; - neededInheriting |= constants_1.WASI_RIGHT_FD_SYNC; - } - if (write && (noflags & (nodeFsConstants.O_APPEND | nodeFsConstants.O_TRUNC)) === 0) { - neededInheriting |= constants_1.WASI_RIGHT_FD_SEEK; - } - this.refreshMemory(); - const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString(); - if (p == "dev/tty") { - this.view.setUint32(fdPtr, constants_1.WASI_STDIN_FILENO, true); - return constants_1.WASI_ESUCCESS; - } - logOpen("path_open", p); - if (p.startsWith("proc/")) { - throw new types_1.WASIError(constants_1.WASI_EBADF); - } - const fullUnresolved = path.resolve(p); - let full; - try { - full = fs.realpathSync(fullUnresolved); - } catch (e) { - if (e?.code === "ENOENT") { - full = fullUnresolved; - } else { - throw e; - } - } - let isDirectory; - if (write) { - try { - isDirectory = fs.statSync(full).isDirectory(); - } catch (_err) {} - } - let realfd; - if (!write && isDirectory) { - realfd = fs.openSync(full, nodeFsConstants.O_RDONLY); - } else { - realfd = fs.openSync(full, noflags); - } - const newfd = this.getUnusedFileDescriptor(); - this.FD_MAP.set(newfd, { - real: realfd, - filetype: void 0, - rights: { - base: neededBase, - inheriting: neededInheriting, - }, - path: full, - }); - stat(this, newfd); - this.view.setUint32(fdPtr, newfd, true); - } catch (e) { - console.error(e); - } - return constants_1.WASI_ESUCCESS; - }, - ), - path_readlink: wrap((fd, pathPtr, pathLen, buf, bufLen, bufused) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_PATH_READLINK); - if (!stats.path) { - return constants_1.WASI_EINVAL; - } - this.refreshMemory(); - const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString(); - const full = path.resolve(stats.path, p); - const r = fs.readlinkSync(full); - const used = Buffer.from(this.memory.buffer).write(r, buf, bufLen); - this.view.setUint32(bufused, used, true); - return constants_1.WASI_ESUCCESS; - }), - path_remove_directory: wrap((fd, pathPtr, pathLen) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_PATH_REMOVE_DIRECTORY); - if (!stats.path) { - return constants_1.WASI_EINVAL; - } - this.refreshMemory(); - const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString(); - fs.rmdirSync(path.resolve(stats.path, p)); - return constants_1.WASI_ESUCCESS; - }), - path_rename: wrap((oldFd, oldPath, oldPathLen, newFd, newPath, newPathLen) => { - const ostats = CHECK_FD(oldFd, constants_1.WASI_RIGHT_PATH_RENAME_SOURCE); - const nstats = CHECK_FD(newFd, constants_1.WASI_RIGHT_PATH_RENAME_TARGET); - if (!ostats.path || !nstats.path) { - return constants_1.WASI_EINVAL; - } - this.refreshMemory(); - const op = Buffer.from(this.memory.buffer, oldPath, oldPathLen).toString(); - const np = Buffer.from(this.memory.buffer, newPath, newPathLen).toString(); - fs.renameSync(path.resolve(ostats.path, op), path.resolve(nstats.path, np)); - return constants_1.WASI_ESUCCESS; - }), - path_symlink: wrap((oldPath, oldPathLen, fd, newPath, newPathLen) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_PATH_SYMLINK); - if (!stats.path) { - return constants_1.WASI_EINVAL; - } - this.refreshMemory(); - const op = Buffer.from(this.memory.buffer, oldPath, oldPathLen).toString(); - const np = Buffer.from(this.memory.buffer, newPath, newPathLen).toString(); - fs.symlinkSync(op, path.resolve(stats.path, np)); - return constants_1.WASI_ESUCCESS; - }), - path_unlink_file: wrap((fd, pathPtr, pathLen) => { - const stats = CHECK_FD(fd, constants_1.WASI_RIGHT_PATH_UNLINK_FILE); - if (!stats.path) { - return constants_1.WASI_EINVAL; - } - this.refreshMemory(); - const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString(); - fs.unlinkSync(path.resolve(stats.path, p)); - return constants_1.WASI_ESUCCESS; - }), - poll_oneoff: (sin, sout, nsubscriptions, neventsPtr) => { - let nevents = 0; - let name = ""; - let waitTimeNs = BigInt(0); - let fd = -1; - let fd_type = "read"; - let fd_timeout_ms = 0; - const startNs = BigInt(bindings.hrtime()); - this.refreshMemory(); - let last_sin = sin; - for (let i = 0; i < nsubscriptions; i += 1) { - const userdata = this.view.getBigUint64(sin, true); - sin += 8; - const type = this.view.getUint8(sin); - sin += 1; - sin += 7; - if (log.enabled) { - if (type == constants_1.WASI_EVENTTYPE_CLOCK) { - name = "poll_oneoff (type=WASI_EVENTTYPE_CLOCK): "; - } else if (type == constants_1.WASI_EVENTTYPE_FD_READ) { - name = "poll_oneoff (type=WASI_EVENTTYPE_FD_READ): "; - } else { - name = "poll_oneoff (type=WASI_EVENTTYPE_FD_WRITE): "; - } - log(name); - } - switch (type) { - case constants_1.WASI_EVENTTYPE_CLOCK: { - const clockid = this.view.getUint32(sin, true); - sin += 4; - sin += 4; - const timeout = this.view.getBigUint64(sin, true); - sin += 8; - sin += 8; - const subclockflags = this.view.getUint16(sin, true); - sin += 2; - sin += 6; - const absolute = subclockflags === 1; - if (log.enabled) { - log(name, { clockid, timeout, absolute }); - } - if (!absolute) { - fd_timeout_ms = timeout / BigInt(1e6); - } - let e = constants_1.WASI_ESUCCESS; - const t = now(clockid); - if (t == null) { - e = constants_1.WASI_EINVAL; - } else { - const tNS = BigInt(t); - const end = absolute ? timeout : tNS + timeout; - const waitNs = end - tNS; - if (waitNs > waitTimeNs) { - waitTimeNs = waitNs; - } - } - this.view.setBigUint64(sout, userdata, true); - sout += 8; - this.view.setUint16(sout, e, true); - sout += 2; - this.view.setUint8(sout, constants_1.WASI_EVENTTYPE_CLOCK); - sout += 1; - sout += 5; - nevents += 1; - break; - } - case constants_1.WASI_EVENTTYPE_FD_READ: - case constants_1.WASI_EVENTTYPE_FD_WRITE: { - fd = this.view.getUint32(sin, true); - fd_type = type == constants_1.WASI_EVENTTYPE_FD_READ ? "read" : "write"; - sin += 4; - log(name, "fd =", fd); - sin += 28; - this.view.setBigUint64(sout, userdata, true); - sout += 8; - this.view.setUint16(sout, constants_1.WASI_ENOSYS, true); - sout += 2; - this.view.setUint8(sout, type); - sout += 1; - sout += 5; - nevents += 1; - if (fd == constants_1.WASI_STDIN_FILENO && constants_1.WASI_EVENTTYPE_FD_READ == type) { - this.shortPause(); - } - break; - } - default: - return constants_1.WASI_EINVAL; - } - if (sin - last_sin != 48) { - console.warn("*** BUG in wasi-js in poll_oneoff ", { - i, - sin, - last_sin, - diff: sin - last_sin, - }); - } - last_sin = sin; - } - this.view.setUint32(neventsPtr, nevents, true); - if (nevents == 2 && fd >= 0) { - const r = this.wasiImport.sock_pollSocket(fd, fd_type, fd_timeout_ms); - if (r != constants_1.WASI_ENOSYS) { - return r; - } - } - if (waitTimeNs > 0) { - waitTimeNs -= Bun.nanoseconds() - timeOrigin; - if (waitTimeNs >= 1e6) { - if (this.sleep == null && !warnedAboutSleep) { - warnedAboutSleep = true; - console.log("(100% cpu burning waiting for stdin: please define a way to sleep!) "); - } - if (this.sleep != null) { - const ms = nsToMs(waitTimeNs); - this.sleep(ms); - } else { - const end = BigInt(bindings.hrtime()) + waitTimeNs; - while (BigInt(bindings.hrtime()) < end) {} - } - } - } - return constants_1.WASI_ESUCCESS; - }, - proc_exit: rval => { - bindings.exit(rval); - return constants_1.WASI_ESUCCESS; - }, - proc_raise: sig => { - if (!(sig in constants_1.SIGNAL_MAP)) { - return constants_1.WASI_EINVAL; - } - bindings.kill(constants_1.SIGNAL_MAP[sig]); - return constants_1.WASI_ESUCCESS; - }, - random_get: (bufPtr, bufLen) => { - this.refreshMemory(); - crypto.getRandomValues(this.memory.buffer, bufPtr, bufLen); - return bufLen; - }, - sched_yield() { - return constants_1.WASI_ESUCCESS; - }, - sock_recv() { - return constants_1.WASI_ENOSYS; - }, - sock_send() { - return constants_1.WASI_ENOSYS; - }, - sock_shutdown() { - return constants_1.WASI_ENOSYS; - }, - sock_fcntlSetFlags(_fd, _flags) { - return constants_1.WASI_ENOSYS; - }, - sock_pollSocket(_fd, _eventtype, _timeout_ms) { - return constants_1.WASI_ENOSYS; - }, - }; - if (log.enabled) { - Object.keys(this.wasiImport).forEach(key => { - const prevImport = this.wasiImport[key]; - this.wasiImport[key] = function (...args2) { - log(key, args2); - try { - let result = prevImport(...args2); - log("result", result); - return result; - } catch (e) { - log("error: ", e); - throw e; - } - }; - }); - } - } - getState() { - return { env: this.env, FD_MAP: this.FD_MAP, bindings: bindings }; - } - setState(state) { - this.env = state.env; - this.FD_MAP = state.FD_MAP; - bindings = state.bindings; - } - fstatSync(real_fd) { - if (real_fd <= 2) { - try { - return fs.fstatSync(real_fd); - } catch (_) { - const now = new Date(); - return { - dev: 0, - mode: 8592, - nlink: 1, - uid: 0, - gid: 0, - rdev: 0, - blksize: 65536, - ino: 0, - size: 0, - blocks: 0, - atimeMs: now.valueOf(), - mtimeMs: now.valueOf(), - ctimeMs: now.valueOf(), - birthtimeMs: 0, - atime: new Date(), - mtime: new Date(), - ctime: new Date(), - birthtime: new Date(0), - }; - } - } - return fs.fstatSync(real_fd); - } - shortPause() { - if (this.sleep == null) return; - const now = new Date().valueOf(); - if (now - this.lastStdin > 2e3) { - this.sleep(50); - } - } - getUnusedFileDescriptor(start = 3) { - let fd = start; - while (this.FD_MAP.has(fd)) { - fd += 1; - } - if (fd > SC_OPEN_MAX) { - throw Error("no available file descriptors"); - } - return fd; - } - refreshMemory() { - if (!this.view || this.view.buffer.byteLength === 0) { - this.view = new DataView(this.memory.buffer); - } - } - setMemory(memory) { - this.memory = memory; - } - start(instance, memory) { - const exports2 = instance.exports; - if (exports2 === null || typeof exports2 !== "object") { - throw new Error(`instance.exports must be an Object. Received ${exports2}.`); - } - if (memory == null) { - memory = exports2.memory; - if (!(memory instanceof WebAssembly.Memory)) { - throw new Error(`instance.exports.memory must be a WebAssembly.Memory. Recceived ${memory}.`); - } - } - this.setMemory(memory); - if (exports2._start) { - exports2._start(); - } - } - getImports(module2) { - let namespace = null; - const imports = WebAssembly.Module.imports(module2); - - for (let imp of imports) { - if (imp.kind !== "function") { - continue; - } - if (!imp.module.startsWith("wasi_")) { - continue; - } - - namespace = imp.module; - break; - } - - switch (namespace) { - case "wasi_unstable": - return { - wasi_unstable: this.wasiImport, - }; - case "wasi_snapshot_preview1": - return { - wasi_snapshot_preview1: this.wasiImport, - }; - default: { - throw new Error( - "No WASI namespace found. Only wasi_unstable and wasi_snapshot_preview1 are supported.\n\nList of imports:\n\n" + - imports.map(({ name, kind, module }) => `${module}:${name} (${kind})`).join("\n") + - "\n", - ); - } - } - } - initWasiFdInfo() { - if (this.env["WASI_FD_INFO"] != null) { - const fdInfo = JSON.parse(this.env["WASI_FD_INFO"]); - for (const wasi_fd in fdInfo) { - console.log(wasi_fd); - const fd = parseInt(wasi_fd); - if (this.FD_MAP.has(fd)) { - continue; - } - const real = fdInfo[wasi_fd]; - try { - this.fstatSync(real); - } catch (_err) { - console.log("discarding ", { wasi_fd, real }); - continue; - } - const file = { - real, - filetype: constants_1.WASI_FILETYPE_SOCKET_STREAM, - rights: { - base: STDIN_DEFAULT_RIGHTS, - inheriting: BigInt(0), - }, - }; - this.FD_MAP.set(fd, file); - } - console.log("after initWasiFdInfo: ", this.FD_MAP); - console.log("fdInfo = ", fdInfo); - } else { - console.log("no WASI_FD_INFO"); - } - } - }; - exports.default = WASI; - }, -}); -const WASIExport = require_wasi(); -const WASI = WASIExport.default; -WASIExport[Symbol.for("CommonJS")] = 0; -export { WASIExport as WASI }; -export default WASIExport; diff --git a/src/bun.js/ws.exports.js b/src/bun.js/ws.exports.js deleted file mode 100644 index e1f042220..000000000 --- a/src/bun.js/ws.exports.js +++ /dev/null @@ -1,1118 +0,0 @@ -// Mocking https://github.com/websockets/ws -// this just wraps WebSocket to look like an EventEmitter -// without actually using an EventEmitter polyfill - -import EventEmitter from "events"; -import http from "http"; - -const kBunInternals = Symbol.for("::bunternal::"); -const readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"]; -const encoder = new TextEncoder(); - -const emittedWarnings = new Set(); -function emitWarning(type, message) { - if (emittedWarnings.has(type)) return; - emittedWarnings.add(type); - // process.emitWarning(message); // our printing is bad - console.warn("[bun] Warning:", message); -} - -/* - * deviations: we do not implement these events - * - "unexpected-response" - * - "upgrade" - * - "ping" - * - "pong" - * - "redirect" - */ -class BunWebSocket extends EventEmitter { - static CONNECTING = 0; - static OPEN = 1; - static CLOSING = 2; - static CLOSED = 3; - - #ws; - #paused = false; - #fragments = false; - #binaryType = "nodebuffer"; - readyState = BunWebSocket.CONNECTING; - - constructor(url, protocols, options) { - // deviation: we don't support anything in `options` - super(); - let ws = (this.#ws = new WebSocket(url, protocols)); - ws.binaryType = "nodebuffer"; // bun's WebSocket supports "nodebuffer" - ws.addEventListener("open", () => { - this.readyState = BunWebSocket.OPEN; - this.emit("open"); - }); - ws.addEventListener("error", err => { - this.readyState = BunWebSocket.CLOSED; - this.emit("error", err); - }); - ws.addEventListener("close", ev => { - this.readyState = BunWebSocket.CLOSED; - this.emit("close", ev.code, ev.reason); - }); - ws.addEventListener("message", ev => { - const isBinary = typeof ev.data !== "string"; - if (isBinary) { - this.emit("message", this.#fragments ? [ev.data] : ev.data, isBinary); - } else { - var encoded = encoder.encode(ev.data); - if (this.#binaryType !== "arraybuffer") { - encoded = Buffer.from(encoded.buffer, encoded.byteOffset, encoded.byteLength); - } - this.emit("message", this.#fragments ? [encoded] : encoded, isBinary); - } - }); - } - - on(event, listener) { - if ( - event === "unexpected-response" || - event === "upgrade" || - event === "ping" || - event === "pong" || - event === "redirect" - ) { - emitWarning(event, "ws.WebSocket '" + event + "' event is not implemented in bun"); - } - return super.on(event, listener); - } - - send(data, opts, cb) { - this.#ws.send(data, opts?.compress); - // deviation: this should be called once the data is written, not immediately - typeof cb === "function" && cb(); - } - - close(code, reason) { - this.#ws.close(code, reason); - } - - get binaryType() { - return this.#binaryType; - } - - set binaryType(value) { - if (value) this.#ws.binaryType = value; - } - - set binaryType(value) { - if (value === "nodebuffer" || value === "arraybuffer") { - this.#ws.binaryType = this.#binaryType = value; - this.#fragments = false; - } else if (value === "fragments") { - this.#ws.binaryType = "nodebuffer"; - this.#binaryType = "fragments"; - this.#fragments = true; - } - } - - get protocol() { - return this.#ws.protocol; - } - - get extensions() { - return this.#ws.extensions; - } - - // deviation: this does not support `message` with `binaryType = "fragments"` - addEventListener(type, listener, options) { - this.#ws.addEventListener(type, listener, options); - } - - removeEventListener(type, listener) { - this.#ws.removeEventListener(type, listener); - } - - get onopen() { - return this.#ws.onopen; - } - - set onopen(value) { - this.#ws.onopen = value; - } - - get onerror() { - return this.#ws.onerror; - } - - set onerror(value) { - this.#ws.onerror = value; - } - - get onclose() { - return this.#ws.onclose; - } - - set onclose(value) { - this.#ws.onclose = value; - } - - get onmessage() { - return this.#ws.onmessage; - } - - // deviation: this does not support `binaryType = "fragments"` - set onmessage(value) { - this.#ws.onmessage = value; - } - - get bufferedAmount() { - return this.#ws.bufferedAmount; - } - - get isPaused() { - return this.#paused; - } - - ping(data, mask, cb) { - if (this.readyState === BunWebSocket.CONNECTING) { - throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); - } - - if (typeof data === "function") { - cb = data; - data = mask = undefined; - } else if (typeof mask === "function") { - cb = mask; - mask = undefined; - } - - if (typeof data === "number") data = data.toString(); - - // deviation: we don't support ping - emitWarning("ping()", "ws.WebSocket.ping() is not implemented in bun"); - typeof cb === "function" && cb(); - } - - pong(data, mask, cb) { - if (this.readyState === BunWebSocket.CONNECTING) { - throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); - } - - if (typeof data === "function") { - cb = data; - data = mask = undefined; - } else if (typeof mask === "function") { - cb = mask; - mask = undefined; - } - - if (typeof data === "number") data = data.toString(); - - // deviation: we don't support pong - emitWarning("pong()", "ws.WebSocket.pong() is not implemented in bun"); - typeof cb === "function" && cb(); - } - - pause() { - if (this.readyState === WebSocket.CONNECTING || this.readyState === WebSocket.CLOSED) { - return; - } - - this.#paused = true; - - // deviation: we dont support pause() - emitWarning("pause()", "ws.WebSocket.pause() is not implemented in bun"); - } - - resume() { - if (this.readyState === WebSocket.CONNECTING || this.readyState === WebSocket.CLOSED) { - return; - } - - this.#paused = false; - - // deviation: we dont support resume() - emitWarning("resume()", "ws.WebSocket.resume() is not implemented in bun"); - } -} - -BunWebSocket.WebSocket = BunWebSocket; - -const wsKeyRegex = /^[+/0-9A-Za-z]{22}==$/; -const wsTokenChars = [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, // 0 - 15 - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, // 16 - 31 - 0, - 1, - 0, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 1, - 0, - 1, - 1, - 0, // 32 - 47 - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 0, - 0, - 0, - 0, // 48 - 63 - 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, // 64 - 79 - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 0, - 1, - 1, // 80 - 95 - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, // 96 - 111 - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 1, - 0, - 1, - 0, // 112 - 127 -]; - -/** - * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names. - * - * @param {String} header The field value of the header - * @return {Set} The subprotocol names - * @public - */ -function subprotocolParse(header) { - const protocols = new Set(); - let start = -1; - let end = -1; - let i = 0; - - for (i; i < header.length; i++) { - const code = header.charCodeAt(i); - - if (end === -1 && wsTokenChars[code] === 1) { - if (start === -1) start = i; - } else if (i !== 0 && (code === 0x20 /* ' ' */ || code === 0x09) /* '\t' */) { - if (end === -1 && start !== -1) end = i; - } else if (code === 0x2c /* ',' */) { - if (start === -1) { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - - if (end === -1) end = i; - - const protocol = header.slice(start, end); - - if (protocols.has(protocol)) { - throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`); - } - - protocols.add(protocol); - start = end = -1; - } else { - throw new SyntaxError(`Unexpected character at index ${i}`); - } - } - - if (start === -1 || end !== -1) { - throw new SyntaxError("Unexpected end of input"); - } - - const protocol = header.slice(start, i); - - if (protocols.has(protocol)) { - throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`); - } - - protocols.add(protocol); - return protocols; -} - -/** - * Emit a `'close'` event on an `EventEmitter`. - * - * @param {EventEmitter} server The event emitter - * @private - */ -function wsEmitClose(server) { - server._state = CLOSED; - server.emit("close"); -} - -function abortHandshake(response, code, message, headers) { - message = message || http.STATUS_CODES[code]; - headers = { - Connection: "close", - "Content-Type": "text/html", - "Content-Length": Buffer.byteLength(message), - ...headers, - }; - - response.writeHead(code, headers); - response.write(message); - response.end(); -} - -function abortHandshakeOrEmitwsClientError(server, req, response, socket, code, message) { - if (server.listenerCount("wsClientError")) { - const err = new Error(message); - Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError); - - server.emit("wsClientError", err, socket, req); - } else { - abortHandshake(response, code, message); - } -} - -const RUNNING = 0; -const CLOSING = 1; -const CLOSED = 2; - -class BunWebSocketMocked extends EventEmitter { - #ws; - #state; - #enquedMessages = []; - #url; - #protocol; - #extensions; - #bufferedAmount = 0; - #binaryType = "arraybuffer"; - - #onclose; - #onerror; - #onmessage; - #onopen; - - constructor(url, protocol, extensions, binaryType) { - super(); - this.#ws = null; - this.#state = 0; - this.#url = url; - this.#bufferedAmount = 0; - binaryType = binaryType || "arraybuffer"; - if (binaryType !== "nodebuffer" && binaryType !== "blob" && binaryType !== "arraybuffer") { - throw new TypeError("binaryType must be either 'blob', 'arraybuffer' or 'nodebuffer'"); - } - this.#binaryType = binaryType; - this.#protocol = protocol; - this.#extensions = extensions; - - const message = this.#message.bind(this); - const open = this.#open.bind(this); - const close = this.#close.bind(this); - const drain = this.#drain.bind(this); - - this[kBunInternals] = { - message, // a message is received - open, // a socket is opened - close, // a socket is closed - drain, // the socket is ready to receive more data - }; - } - - #message(ws, message) { - this.#ws = ws; - - if (typeof message === "string") { - if (this.#binaryType === "arraybuffer") { - message = encoder.encode(message).buffer; - } else if (this.#binaryType === "blob") { - message = new Blob([message], { type: "text/plain" }); - } else { - // nodebuffer - message = Buffer.from(message); - } - } else { - //Buffer - if (this.#binaryType !== "nodebuffer") { - if (this.#binaryType === "arraybuffer") { - message = new Uint8Array(message); - } else if (this.#binaryType === "blob") { - message = new Blob([message]); - } - } - } - - this.emit("message", message); - } - - #open(ws) { - this.#ws = ws; - this.#state = 1; - this.emit("open", this); - // first drain event - this.#drain(ws); - } - - #close(ws, code, reason) { - this.#state = 3; - this.#ws = null; - - this.emit("close", code, reason); - } - - #drain(ws) { - const chunk = this.#enquedMessages[0]; - if (chunk) { - const [data, compress, cb] = chunk; - const written = ws.send(data, compress); - if (written == -1) { - // backpressure wait until next drain event - return; - } - - typeof cb === "function" && cb(); - - this.#bufferedAmount -= chunk.length; - this.#enquedMessages.shift(); - } - } - - send(data, opts, cb) { - if (this.#state === 1) { - const compress = opts?.compress; - const written = this.#ws.send(data, compress); - if (written == -1) { - // backpressure - this.#enquedMessages.push([data, compress, cb]); - this.#bufferedAmount += data.length; - return; - } - - typeof cb === "function" && cb(); - } else if (this.#state === 0) { - // not connected yet - this.#enquedMessages.push([data, opts?.compress, cb]); - this.#bufferedAmount += data.length; - } - } - - close(code, reason) { - if (this.#state === 1) { - this.#state = 2; - this.#ws.close(code, reason); - } - } - get binaryType() { - return this.#binaryType; - } - - set binaryType(type) { - if (type !== "nodebuffer" && type !== "blob" && type !== "arraybuffer") { - throw new TypeError("binaryType must be either 'blob', 'arraybuffer' or 'nodebuffer'"); - } - this.#binaryType = type; - } - - get readyState() { - return readyStates[this.#state]; - } - get url() { - return this.#url; - } - - get protocol() { - return this.#protocol; - } - - get extensions() { - return this.#extensions; - } - - get bufferedAmount() { - return this.#bufferedAmount ?? 0; - } - /** - * Set up the socket and the internal resources. - * - * @param {(net.Socket|tls.Socket)} socket The network socket between the - * server and client - * @param {Buffer} head The first packet of the upgraded stream - * @param {Object} options Options object - * @param {Function} [options.generateMask] The function used to generate the - * masking key - * @param {Number} [options.maxPayload=0] The maximum allowed message size - * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or - * not to skip UTF-8 validation for text and close messages - * @private - */ - setSocket(socket, head, options) { - throw new Error("Not implemented"); - } - - set onclose(cb) { - if (this.#onclose) { - this.removeListener("close", this.#onclose); - } - this.on("close", cb); - this.#onclose = cb; - } - - set onerror(cb) { - if (this.#onerror) { - this.removeListener("error", this.#onerror); - } - this.on("error", cb); - this.#onerror = cb; - } - - set onmessage(cb) { - if (this.#onmessage) { - this.removeListener("message", this.#onmessage); - } - this.on("message", cb); - this.#onmessage = cb; - } - - set onopen(cb) { - if (this.#onopen) { - this.removeListener("open", this.#onopen); - } - this.on("open", cb); - this.#onopen = cb; - } - - get onclose() { - return this.#onclose; - } - - get onerror() { - return this.#onerror; - } - - get onmessage() { - return this.#onmessage; - } - - get onopen() { - return this.#onopen; - } -} - -class Server extends EventEmitter { - _server; - options; - clients; - _shouldEmitClose; - _state; - _removeListeners; - - /** - * Create a `WebSocketServer` instance. - * - * @param {Object} options Configuration options - * @param {Number} [options.backlog=511] The maximum length of the queue of - * pending connections - * @param {Boolean} [options.clientTracking=true] Specifies whether or not to - * track clients - * @param {Function} [options.handleProtocols] A hook to handle protocols - * @param {String} [options.host] The hostname where to bind the server - * size - * @param {Boolean} [options.noServer=false] Enable no server mode - * @param {String} [options.path] Accept only connections matching this path - * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable - * permessage-deflate - * @param {Number} [options.port] The port where to bind the server - * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S - * @param {Function} [options.verifyClient] A hook to reject connections - * class to use. It must be the `WebSocket` class or class that extends it - * @param {Function} [callback] A listener for the `listening` event - */ - constructor(options, callback) { - super(); - - options = { - maxPayload: 100 * 1024 * 1024, - skipUTF8Validation: false, - perMessageDeflate: false, - handleProtocols: null, - clientTracking: true, - verifyClient: null, - noServer: false, - backlog: null, // use default (511 as implemented in net.js) - server: null, - host: null, - path: null, - port: null, - ...options, - }; - - if ( - (options.port == null && !options.server && !options.noServer) || - (options.port != null && (options.server || options.noServer)) || - (options.server && options.noServer) - ) { - throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified'); - } - - if (options.port != null) { - this._server = http.createServer((req, res) => { - const body = http.STATUS_CODES[426]; - - res.writeHead(426, { - "Content-Length": body.length, - "Content-Type": "text/plain", - }); - res.end(body); - }); - - this._server.listen(options.port, options.host, options.backlog, callback); - } else if (options.server) { - this._server = options.server; - } - - if (this._server) { - const emitConnection = this.emit.bind(this, "connection"); - const emitListening = this.emit.bind(this, "listening"); - const emitError = this.emit.bind(this, "error"); - const doUpgrade = (req, socket, head) => { - this.handleUpgrade(req, socket, head, emitConnection); - }; - - this._server.on("listening", emitListening); - this._server.on("error", emitError); - this._server.on("upgrade", doUpgrade); - - this._removeListeners = () => { - this._server.removeListener("upgrade", doUpgrade); - this._server.removeListener("listening", emitListening); - this._server.removeListener("error", emitError); - }; - } - - if (options.perMessageDeflate === true) options.perMessageDeflate = {}; - if (options.clientTracking) { - this.clients = new Set(); - this._shouldEmitClose = false; - } - - this.options = options; - this._state = RUNNING; - } - - /** - * Returns the bound address, the address family name, and port of the server - * as reported by the operating system if listening on an IP socket. - * If the server is listening on a pipe or UNIX domain socket, the name is - * returned as a string. - * - * @return {(Object|String|null)} The address of the server - * @public - */ - address() { - if (this.options.noServer) { - throw new Error('The server is operating in "noServer" mode'); - } - - if (!this._server) return null; - return this._server.address(); - } - - /** - * Stop the server from accepting new connections and emit the `'close'` event - * when all existing connections are closed. - * - * @param {Function} [cb] A one-time listener for the `'close'` event - * @public - */ - close(cb) { - if (this._state === CLOSED) { - if (cb) { - this.once("close", () => { - cb(new Error("The server is not running")); - }); - } - - process.nextTick(server => { - server._state = CLOSED; - server.emit("close"); - }, this); - return; - } - - if (cb) this.once("close", cb); - - if (this._state === CLOSING) return; - this._state = CLOSING; - - if (this.options.noServer || this.options.server) { - if (this._server) { - this._removeListeners(); - this._removeListeners = this._server = null; - } - - if (this.clients) { - if (!this.clients.size) { - process.nextTick(server => { - server._state = CLOSED; - server.emit("close"); - }, this); - } else { - this._shouldEmitClose = true; - } - } else { - process.nextTick(server => { - server._state = CLOSED; - server.emit("close"); - }, this); - } - } else { - const server = this._server; - - this._removeListeners(); - this._removeListeners = this._server = null; - - // - // The HTTP/S server was created internally. Close it, and rely on its - // `'close'` event. - // - server.close(() => { - this._state = CLOSED; - this.emit("close"); - }); - } - } - - /** - * See if a given request should be handled by this server instance. - * - * @param {http.IncomingMessage} req Request object to inspect - * @return {Boolean} `true` if the request is valid, else `false` - * @public - */ - shouldHandle(req) { - if (this.options.path) { - const index = req.url.indexOf("?"); - const pathname = index !== -1 ? req.url.slice(0, index) : req.url; - - if (pathname !== this.options.path) return false; - } - - return true; - } - - /** - * Upgrade the connection to WebSocket. - * - * @param {Object} extensions The accepted extensions - * @param {String} key The value of the `Sec-WebSocket-Key` header - * @param {Set} protocols The subprotocols - * @param {http.IncomingMessage} request The request object - * @param {(net.Socket|tls.Socket)} socket The network socket between the - * server and client - * @param {Buffer} head The first packet of the upgraded stream - * @param {Function} cb Callback - * @throws {Error} If called more than once with the same socket - * @private - */ - completeUpgrade(extensions, key, protocols, request, socket, head, cb) { - const [server, response, req] = socket[kBunInternals]; - if (this._state > RUNNING) return abortHandshake(response, 503); - - let protocol = ""; - if (protocols.size) { - // - // Optionally call external protocol selection handler. - // - protocol = this.options.handleProtocols - ? this.options.handleProtocols(protocols, request) - : protocols.values().next().value; - } - const ws = new BunWebSocketMocked(request.url, protocol, extensions, "nodebuffer"); - - const headers = ["HTTP/1.1 101 Switching Protocols", "Upgrade: websocket", "Connection: Upgrade"]; - this.emit("headers", headers, request); - - if ( - server.upgrade(req, { - data: ws[kBunInternals], - }) - ) { - response._reply(undefined); - if (this.clients) { - this.clients.add(ws); - ws.on("close", () => { - this.clients.delete(ws); - - if (this._shouldEmitClose && !this.clients.size) { - process.nextTick(wsEmitClose, this); - } - }); - } - cb(ws, request); - } else { - abortHandshake(response, 500); - } - } - /** - * Handle a HTTP Upgrade request. - * - * @param {http.IncomingMessage} req The request object - * @param {(net.Socket|tls.Socket)} socket The network socket between the - * server and client - * @param {Buffer} head The first packet of the upgraded stream - * @param {Function} cb Callback - * @public - */ - handleUpgrade(req, socket, head, cb) { - // socket is actually fake so we use internal http_res - const [_, response] = socket[kBunInternals]; - - // socket.on("error", socketOnError); - - const key = req.headers["sec-websocket-key"]; - const version = +req.headers["sec-websocket-version"]; - - if (req.method !== "GET") { - const message = "Invalid HTTP method"; - abortHandshakeOrEmitwsClientError(this, req, response, socket, 405, message); - return; - } - - if (req.headers.upgrade.toLowerCase() !== "websocket") { - const message = "Invalid Upgrade header"; - abortHandshakeOrEmitwsClientError(this, req, response, socket, 400, message); - return; - } - - if (!key || !wsKeyRegex.test(key)) { - const message = "Missing or invalid Sec-WebSocket-Key header"; - abortHandshakeOrEmitwsClientError(this, req, response, socket, 400, message); - return; - } - - if (version !== 8 && version !== 13) { - const message = "Missing or invalid Sec-WebSocket-Version header"; - abortHandshakeOrEmitwsClientError(this, req, response, socket, 400, message); - return; - } - - if (!this.shouldHandle(req)) { - abortHandshake(response, 400); - return; - } - - const secWebSocketProtocol = req.headers["sec-websocket-protocol"]; - let protocols = new Set(); - - if (secWebSocketProtocol !== undefined) { - try { - protocols = subprotocolParse(secWebSocketProtocol); - } catch (err) { - const message = "Invalid Sec-WebSocket-Protocol header"; - abortHandshakeOrEmitwsClientError(this, req, response, socket, 400, message); - return; - } - } - - // TODO: add perMessageDeflate options - - // const secWebSocketExtensions = req.headers["sec-websocket-extensions"]; - const extensions = {}; - - // if (secWebSocketExtensions !== undefined) { - // console.log(secWebSocketExtensions); - // const perMessageDeflate = new PerMessageDeflate(this.options.perMessageDeflate, true, this.options.maxPayload); - - // try { - // const offers = extension.parse(secWebSocketExtensions); - - // if (offers[PerMessageDeflate.extensionName]) { - // perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]); - // extensions[PerMessageDeflate.extensionName] = perMessageDeflate; - // } - // } catch (err) { - // const message = "Invalid or unacceptable Sec-WebSocket-Extensions header"; - // abortHandshakeOrEmitwsClientError(this, req, response, socket, 400, message); - // return; - // } - // } - - // - // Optionally call external client verification handler. - // - if (this.options.verifyClient) { - const info = { - origin: req.headers[`${version === 8 ? "sec-websocket-origin" : "origin"}`], - secure: !!(req.socket.authorized || req.socket.encrypted), - req, - }; - - if (this.options.verifyClient.length === 2) { - this.options.verifyClient(info, (verified, code, message, headers) => { - if (!verified) { - return abortHandshake(response, code || 401, message, headers); - } - - this.completeUpgrade(extensions, key, protocols, req, socket, head, cb); - }); - return; - } - - if (!this.options.verifyClient(info)) return abortHandshake(response, 401); - } - - this.completeUpgrade(extensions, key, protocols, req, socket, head, cb); - } -} - -BunWebSocket.WebSocketServer = Server; -BunWebSocket.Server = Server; - -Object.defineProperty(BunWebSocket, "CONNECTING", { - enumerable: true, - value: readyStates.indexOf("CONNECTING"), -}); - -Object.defineProperty(BunWebSocket.prototype, "CONNECTING", { - enumerable: true, - value: readyStates.indexOf("CONNECTING"), -}); - -Object.defineProperty(BunWebSocket, "OPEN", { - enumerable: true, - value: readyStates.indexOf("OPEN"), -}); - -Object.defineProperty(BunWebSocket.prototype, "OPEN", { - enumerable: true, - value: readyStates.indexOf("OPEN"), -}); - -Object.defineProperty(BunWebSocket, "CLOSING", { - enumerable: true, - value: readyStates.indexOf("CLOSING"), -}); - -Object.defineProperty(BunWebSocket.prototype, "CLOSING", { - enumerable: true, - value: readyStates.indexOf("CLOSING"), -}); - -Object.defineProperty(BunWebSocket, "CLOSED", { - enumerable: true, - value: readyStates.indexOf("CLOSED"), -}); - -Object.defineProperty(BunWebSocket.prototype, "CLOSED", { - enumerable: true, - value: readyStates.indexOf("CLOSED"), -}); - -class Sender { - constructor() { - throw new Error("Not supported yet in Bun"); - } -} - -BunWebSocket.Sender = Sender; - -class Receiver { - constructor() { - throw new Error("Not supported yet in Bun"); - } -} - -BunWebSocket.Receiver = Receiver; - -var createWebSocketStream = ws => { - throw new Error("Not supported yet in Bun"); -}; - -BunWebSocket.createWebSocketStream = createWebSocketStream; - -BunWebSocket[Symbol.for("CommonJS")] = 0; - -export default BunWebSocket; -export { createWebSocketStream, Server, Receiver, Sender, BunWebSocket as WebSocket, Server as WebSocketServer }; diff --git a/src/bun.js/zlib.exports.js b/src/bun.js/zlib.exports.js deleted file mode 100644 index 33b89d878..000000000 --- a/src/bun.js/zlib.exports.js +++ /dev/null @@ -1,4471 +0,0 @@ -// TODO: **use a native binding from Bun for this!!** -// This is a very slow module! -// It should really be fixed. It will show up in benchmarking. It also loads -// slowly. We need to fix it! - -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => - function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - -var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; -}; -var __reExport = (target, mod, secondTarget) => ( - __copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default") -); -var __toESM = (mod, isNodeMode, target) => ( - (target = mod != null ? __create(__getProtoOf(mod)) : {}), - __copyProps( - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod, - ) -); -var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -const require = id => import.meta.require(id); - -// node_modules/pako/lib/zlib/zstream.js -var require_zstream = __commonJS({ - "node_modules/pako/lib/zlib/zstream.js"(exports, module2) { - "use strict"; - function ZStream() { - this.input = null; - this.next_in = 0; - this.avail_in = 0; - this.total_in = 0; - this.output = null; - this.next_out = 0; - this.avail_out = 0; - this.total_out = 0; - this.msg = ""; - this.state = null; - this.data_type = 2; - this.adler = 0; - } - module2.exports = ZStream; - }, -}); - -// node_modules/pako/lib/utils/common.js -var require_common = __commonJS({ - "node_modules/pako/lib/utils/common.js"(exports) { - "use strict"; - var TYPED_OK = - typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined"; - function _has(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); - } - exports.assign = function (obj) { - var sources = Array.prototype.slice.call(arguments, 1); - while (sources.length) { - var source = sources.shift(); - if (!source) { - continue; - } - if (typeof source !== "object") { - throw new TypeError(source + "must be non-object"); - } - for (var p in source) { - if (_has(source, p)) { - obj[p] = source[p]; - } - } - } - return obj; - }; - exports.shrinkBuf = function (buf, size) { - if (buf.length === size) { - return buf; - } - if (buf.subarray) { - return buf.subarray(0, size); - } - buf.length = size; - return buf; - }; - var fnTyped = { - arraySet: function (dest, src, src_offs, len, dest_offs) { - if (src.subarray && dest.subarray) { - dest.set(src.subarray(src_offs, src_offs + len), dest_offs); - return; - } - for (var i = 0; i < len; i++) { - dest[dest_offs + i] = src[src_offs + i]; - } - }, - flattenChunks: function (chunks) { - var i, l, len, pos, chunk, result; - len = 0; - for (i = 0, l = chunks.length; i < l; i++) { - len += chunks[i].length; - } - result = new Uint8Array(len); - pos = 0; - for (i = 0, l = chunks.length; i < l; i++) { - chunk = chunks[i]; - result.set(chunk, pos); - pos += chunk.length; - } - return result; - }, - }; - var fnUntyped = { - arraySet: function (dest, src, src_offs, len, dest_offs) { - for (var i = 0; i < len; i++) { - dest[dest_offs + i] = src[src_offs + i]; - } - }, - flattenChunks: function (chunks) { - return [].concat.apply([], chunks); - }, - }; - exports.setTyped = function (on) { - if (on) { - exports.Buf8 = Uint8Array; - exports.Buf16 = Uint16Array; - exports.Buf32 = Int32Array; - exports.assign(exports, fnTyped); - } else { - exports.Buf8 = Array; - exports.Buf16 = Array; - exports.Buf32 = Array; - exports.assign(exports, fnUntyped); - } - }; - exports.setTyped(TYPED_OK); - }, -}); - -// node_modules/pako/lib/zlib/trees.js -var require_trees = __commonJS({ - "node_modules/pako/lib/zlib/trees.js"(exports) { - "use strict"; - var utils = require_common(); - var Z_FIXED = 4; - var Z_BINARY = 0; - var Z_TEXT = 1; - var Z_UNKNOWN = 2; - function zero(buf) { - var len = buf.length; - while (--len >= 0) { - buf[len] = 0; - } - } - var STORED_BLOCK = 0; - var STATIC_TREES = 1; - var DYN_TREES = 2; - var MIN_MATCH = 3; - var MAX_MATCH = 258; - var LENGTH_CODES = 29; - var LITERALS = 256; - var L_CODES = LITERALS + 1 + LENGTH_CODES; - var D_CODES = 30; - var BL_CODES = 19; - var HEAP_SIZE = 2 * L_CODES + 1; - var MAX_BITS = 15; - var Buf_size = 16; - var MAX_BL_BITS = 7; - var END_BLOCK = 256; - var REP_3_6 = 16; - var REPZ_3_10 = 17; - var REPZ_11_138 = 18; - var extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]; - var extra_dbits = [ - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, - ]; - var extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]; - var bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - var DIST_CODE_LEN = 512; - var static_ltree = new Array((L_CODES + 2) * 2); - zero(static_ltree); - var static_dtree = new Array(D_CODES * 2); - zero(static_dtree); - var _dist_code = new Array(DIST_CODE_LEN); - zero(_dist_code); - var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); - zero(_length_code); - var base_length = new Array(LENGTH_CODES); - zero(base_length); - var base_dist = new Array(D_CODES); - zero(base_dist); - function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { - this.static_tree = static_tree; - this.extra_bits = extra_bits; - this.extra_base = extra_base; - this.elems = elems; - this.max_length = max_length; - this.has_stree = static_tree && static_tree.length; - } - var static_l_desc; - var static_d_desc; - var static_bl_desc; - function TreeDesc(dyn_tree, stat_desc) { - this.dyn_tree = dyn_tree; - this.max_code = 0; - this.stat_desc = stat_desc; - } - function d_code(dist) { - return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; - } - function put_short(s, w) { - s.pending_buf[s.pending++] = w & 255; - s.pending_buf[s.pending++] = (w >>> 8) & 255; - } - function send_bits(s, value, length) { - if (s.bi_valid > Buf_size - length) { - s.bi_buf |= (value << s.bi_valid) & 65535; - put_short(s, s.bi_buf); - s.bi_buf = value >> (Buf_size - s.bi_valid); - s.bi_valid += length - Buf_size; - } else { - s.bi_buf |= (value << s.bi_valid) & 65535; - s.bi_valid += length; - } - } - function send_code(s, c, tree) { - send_bits(s, tree[c * 2], tree[c * 2 + 1]); - } - function bi_reverse(code, len) { - var res = 0; - do { - res |= code & 1; - code >>>= 1; - res <<= 1; - } while (--len > 0); - return res >>> 1; - } - function bi_flush(s) { - if (s.bi_valid === 16) { - put_short(s, s.bi_buf); - s.bi_buf = 0; - s.bi_valid = 0; - } else if (s.bi_valid >= 8) { - s.pending_buf[s.pending++] = s.bi_buf & 255; - s.bi_buf >>= 8; - s.bi_valid -= 8; - } - } - function gen_bitlen(s, desc) { - var tree = desc.dyn_tree; - var max_code = desc.max_code; - var stree = desc.stat_desc.static_tree; - var has_stree = desc.stat_desc.has_stree; - var extra = desc.stat_desc.extra_bits; - var base = desc.stat_desc.extra_base; - var max_length = desc.stat_desc.max_length; - var h; - var n, m; - var bits; - var xbits; - var f; - var overflow = 0; - for (bits = 0; bits <= MAX_BITS; bits++) { - s.bl_count[bits] = 0; - } - tree[s.heap[s.heap_max] * 2 + 1] = 0; - for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { - n = s.heap[h]; - bits = tree[tree[n * 2 + 1] * 2 + 1] + 1; - if (bits > max_length) { - bits = max_length; - overflow++; - } - tree[n * 2 + 1] = bits; - if (n > max_code) { - continue; - } - s.bl_count[bits]++; - xbits = 0; - if (n >= base) { - xbits = extra[n - base]; - } - f = tree[n * 2]; - s.opt_len += f * (bits + xbits); - if (has_stree) { - s.static_len += f * (stree[n * 2 + 1] + xbits); - } - } - if (overflow === 0) { - return; - } - do { - bits = max_length - 1; - while (s.bl_count[bits] === 0) { - bits--; - } - s.bl_count[bits]--; - s.bl_count[bits + 1] += 2; - s.bl_count[max_length]--; - overflow -= 2; - } while (overflow > 0); - for (bits = max_length; bits !== 0; bits--) { - n = s.bl_count[bits]; - while (n !== 0) { - m = s.heap[--h]; - if (m > max_code) { - continue; - } - if (tree[m * 2 + 1] !== bits) { - s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2]; - tree[m * 2 + 1] = bits; - } - n--; - } - } - } - function gen_codes(tree, max_code, bl_count) { - var next_code = new Array(MAX_BITS + 1); - var code = 0; - var bits; - var n; - for (bits = 1; bits <= MAX_BITS; bits++) { - next_code[bits] = code = (code + bl_count[bits - 1]) << 1; - } - for (n = 0; n <= max_code; n++) { - var len = tree[n * 2 + 1]; - if (len === 0) { - continue; - } - tree[n * 2] = bi_reverse(next_code[len]++, len); - } - } - function tr_static_init() { - var n; - var bits; - var length; - var code; - var dist; - var bl_count = new Array(MAX_BITS + 1); - length = 0; - for (code = 0; code < LENGTH_CODES - 1; code++) { - base_length[code] = length; - for (n = 0; n < 1 << extra_lbits[code]; n++) { - _length_code[length++] = code; - } - } - _length_code[length - 1] = code; - dist = 0; - for (code = 0; code < 16; code++) { - base_dist[code] = dist; - for (n = 0; n < 1 << extra_dbits[code]; n++) { - _dist_code[dist++] = code; - } - } - dist >>= 7; - for (; code < D_CODES; code++) { - base_dist[code] = dist << 7; - for (n = 0; n < 1 << (extra_dbits[code] - 7); n++) { - _dist_code[256 + dist++] = code; - } - } - for (bits = 0; bits <= MAX_BITS; bits++) { - bl_count[bits] = 0; - } - n = 0; - while (n <= 143) { - static_ltree[n * 2 + 1] = 8; - n++; - bl_count[8]++; - } - while (n <= 255) { - static_ltree[n * 2 + 1] = 9; - n++; - bl_count[9]++; - } - while (n <= 279) { - static_ltree[n * 2 + 1] = 7; - n++; - bl_count[7]++; - } - while (n <= 287) { - static_ltree[n * 2 + 1] = 8; - n++; - bl_count[8]++; - } - gen_codes(static_ltree, L_CODES + 1, bl_count); - for (n = 0; n < D_CODES; n++) { - static_dtree[n * 2 + 1] = 5; - static_dtree[n * 2] = bi_reverse(n, 5); - } - static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); - static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); - static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); - } - function init_block(s) { - var n; - for (n = 0; n < L_CODES; n++) { - s.dyn_ltree[n * 2] = 0; - } - for (n = 0; n < D_CODES; n++) { - s.dyn_dtree[n * 2] = 0; - } - for (n = 0; n < BL_CODES; n++) { - s.bl_tree[n * 2] = 0; - } - s.dyn_ltree[END_BLOCK * 2] = 1; - s.opt_len = s.static_len = 0; - s.last_lit = s.matches = 0; - } - function bi_windup(s) { - if (s.bi_valid > 8) { - put_short(s, s.bi_buf); - } else if (s.bi_valid > 0) { - s.pending_buf[s.pending++] = s.bi_buf; - } - s.bi_buf = 0; - s.bi_valid = 0; - } - function copy_block(s, buf, len, header) { - bi_windup(s); - if (header) { - put_short(s, len); - put_short(s, ~len); - } - utils.arraySet(s.pending_buf, s.window, buf, len, s.pending); - s.pending += len; - } - function smaller(tree, n, m, depth) { - var _n2 = n * 2; - var _m2 = m * 2; - return tree[_n2] < tree[_m2] || (tree[_n2] === tree[_m2] && depth[n] <= depth[m]); - } - function pqdownheap(s, tree, k) { - var v = s.heap[k]; - var j = k << 1; - while (j <= s.heap_len) { - if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { - j++; - } - if (smaller(tree, v, s.heap[j], s.depth)) { - break; - } - s.heap[k] = s.heap[j]; - k = j; - j <<= 1; - } - s.heap[k] = v; - } - function compress_block(s, ltree, dtree) { - var dist; - var lc; - var lx = 0; - var code; - var extra; - if (s.last_lit !== 0) { - do { - dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | s.pending_buf[s.d_buf + lx * 2 + 1]; - lc = s.pending_buf[s.l_buf + lx]; - lx++; - if (dist === 0) { - send_code(s, lc, ltree); - } else { - code = _length_code[lc]; - send_code(s, code + LITERALS + 1, ltree); - extra = extra_lbits[code]; - if (extra !== 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); - } - dist--; - code = d_code(dist); - send_code(s, code, dtree); - extra = extra_dbits[code]; - if (extra !== 0) { - dist -= base_dist[code]; - send_bits(s, dist, extra); - } - } - } while (lx < s.last_lit); - } - send_code(s, END_BLOCK, ltree); - } - function build_tree(s, desc) { - var tree = desc.dyn_tree; - var stree = desc.stat_desc.static_tree; - var has_stree = desc.stat_desc.has_stree; - var elems = desc.stat_desc.elems; - var n, m; - var max_code = -1; - var node; - s.heap_len = 0; - s.heap_max = HEAP_SIZE; - for (n = 0; n < elems; n++) { - if (tree[n * 2] !== 0) { - s.heap[++s.heap_len] = max_code = n; - s.depth[n] = 0; - } else { - tree[n * 2 + 1] = 0; - } - } - while (s.heap_len < 2) { - node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0; - tree[node * 2] = 1; - s.depth[node] = 0; - s.opt_len--; - if (has_stree) { - s.static_len -= stree[node * 2 + 1]; - } - } - desc.max_code = max_code; - for (n = s.heap_len >> 1; n >= 1; n--) { - pqdownheap(s, tree, n); - } - node = elems; - do { - n = s.heap[1]; - s.heap[1] = s.heap[s.heap_len--]; - pqdownheap(s, tree, 1); - m = s.heap[1]; - s.heap[--s.heap_max] = n; - s.heap[--s.heap_max] = m; - tree[node * 2] = tree[n * 2] + tree[m * 2]; - s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; - tree[n * 2 + 1] = tree[m * 2 + 1] = node; - s.heap[1] = node++; - pqdownheap(s, tree, 1); - } while (s.heap_len >= 2); - s.heap[--s.heap_max] = s.heap[1]; - gen_bitlen(s, desc); - gen_codes(tree, max_code, s.bl_count); - } - function scan_tree(s, tree, max_code) { - var n; - var prevlen = -1; - var curlen; - var nextlen = tree[0 * 2 + 1]; - var count = 0; - var max_count = 7; - var min_count = 4; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - tree[(max_code + 1) * 2 + 1] = 65535; - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]; - if (++count < max_count && curlen === nextlen) { - continue; - } else if (count < min_count) { - s.bl_tree[curlen * 2] += count; - } else if (curlen !== 0) { - if (curlen !== prevlen) { - s.bl_tree[curlen * 2]++; - } - s.bl_tree[REP_3_6 * 2]++; - } else if (count <= 10) { - s.bl_tree[REPZ_3_10 * 2]++; - } else { - s.bl_tree[REPZ_11_138 * 2]++; - } - count = 0; - prevlen = curlen; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - } - function send_tree(s, tree, max_code) { - var n; - var prevlen = -1; - var curlen; - var nextlen = tree[0 * 2 + 1]; - var count = 0; - var max_count = 7; - var min_count = 4; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]; - if (++count < max_count && curlen === nextlen) { - continue; - } else if (count < min_count) { - do { - send_code(s, curlen, s.bl_tree); - } while (--count !== 0); - } else if (curlen !== 0) { - if (curlen !== prevlen) { - send_code(s, curlen, s.bl_tree); - count--; - } - send_code(s, REP_3_6, s.bl_tree); - send_bits(s, count - 3, 2); - } else if (count <= 10) { - send_code(s, REPZ_3_10, s.bl_tree); - send_bits(s, count - 3, 3); - } else { - send_code(s, REPZ_11_138, s.bl_tree); - send_bits(s, count - 11, 7); - } - count = 0; - prevlen = curlen; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - } - function build_bl_tree(s) { - var max_blindex; - scan_tree(s, s.dyn_ltree, s.l_desc.max_code); - scan_tree(s, s.dyn_dtree, s.d_desc.max_code); - build_tree(s, s.bl_desc); - for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { - if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) { - break; - } - } - s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; - return max_blindex; - } - function send_all_trees(s, lcodes, dcodes, blcodes) { - var rank; - send_bits(s, lcodes - 257, 5); - send_bits(s, dcodes - 1, 5); - send_bits(s, blcodes - 4, 4); - for (rank = 0; rank < blcodes; rank++) { - send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1], 3); - } - send_tree(s, s.dyn_ltree, lcodes - 1); - send_tree(s, s.dyn_dtree, dcodes - 1); - } - function detect_data_type(s) { - var black_mask = 4093624447; - var n; - for (n = 0; n <= 31; n++, black_mask >>>= 1) { - if (black_mask & 1 && s.dyn_ltree[n * 2] !== 0) { - return Z_BINARY; - } - } - if (s.dyn_ltree[9 * 2] !== 0 || s.dyn_ltree[10 * 2] !== 0 || s.dyn_ltree[13 * 2] !== 0) { - return Z_TEXT; - } - for (n = 32; n < LITERALS; n++) { - if (s.dyn_ltree[n * 2] !== 0) { - return Z_TEXT; - } - } - return Z_BINARY; - } - var static_init_done = false; - function _tr_init(s) { - if (!static_init_done) { - tr_static_init(); - static_init_done = true; - } - s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); - s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); - s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); - s.bi_buf = 0; - s.bi_valid = 0; - init_block(s); - } - function _tr_stored_block(s, buf, stored_len, last) { - send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); - copy_block(s, buf, stored_len, true); - } - function _tr_align(s) { - send_bits(s, STATIC_TREES << 1, 3); - send_code(s, END_BLOCK, static_ltree); - bi_flush(s); - } - function _tr_flush_block(s, buf, stored_len, last) { - var opt_lenb, static_lenb; - var max_blindex = 0; - if (s.level > 0) { - if (s.strm.data_type === Z_UNKNOWN) { - s.strm.data_type = detect_data_type(s); - } - build_tree(s, s.l_desc); - build_tree(s, s.d_desc); - max_blindex = build_bl_tree(s); - opt_lenb = (s.opt_len + 3 + 7) >>> 3; - static_lenb = (s.static_len + 3 + 7) >>> 3; - if (static_lenb <= opt_lenb) { - opt_lenb = static_lenb; - } - } else { - opt_lenb = static_lenb = stored_len + 5; - } - if (stored_len + 4 <= opt_lenb && buf !== -1) { - _tr_stored_block(s, buf, stored_len, last); - } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { - send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); - compress_block(s, static_ltree, static_dtree); - } else { - send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); - send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); - compress_block(s, s.dyn_ltree, s.dyn_dtree); - } - init_block(s); - if (last) { - bi_windup(s); - } - } - function _tr_tally(s, dist, lc) { - s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 255; - s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 255; - s.pending_buf[s.l_buf + s.last_lit] = lc & 255; - s.last_lit++; - if (dist === 0) { - s.dyn_ltree[lc * 2]++; - } else { - s.matches++; - dist--; - s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]++; - s.dyn_dtree[d_code(dist) * 2]++; - } - return s.last_lit === s.lit_bufsize - 1; - } - exports._tr_init = _tr_init; - exports._tr_stored_block = _tr_stored_block; - exports._tr_flush_block = _tr_flush_block; - exports._tr_tally = _tr_tally; - exports._tr_align = _tr_align; - }, -}); - -// node_modules/pako/lib/zlib/adler32.js -var require_adler32 = __commonJS({ - "node_modules/pako/lib/zlib/adler32.js"(exports, module2) { - "use strict"; - function adler32(adler, buf, len, pos) { - var s1 = (adler & 65535) | 0, - s2 = ((adler >>> 16) & 65535) | 0, - n = 0; - while (len !== 0) { - n = len > 2e3 ? 2e3 : len; - len -= n; - do { - s1 = (s1 + buf[pos++]) | 0; - s2 = (s2 + s1) | 0; - } while (--n); - s1 %= 65521; - s2 %= 65521; - } - return s1 | (s2 << 16) | 0; - } - module2.exports = adler32; - }, -}); - -// node_modules/pako/lib/zlib/crc32.js -var require_crc32 = __commonJS({ - "node_modules/pako/lib/zlib/crc32.js"(exports, module2) { - "use strict"; - function makeTable() { - var c, - table = []; - for (var n = 0; n < 256; n++) { - c = n; - for (var k = 0; k < 8; k++) { - c = c & 1 ? 3988292384 ^ (c >>> 1) : c >>> 1; - } - table[n] = c; - } - return table; - } - var crcTable = makeTable(); - function crc32(crc, buf, len, pos) { - var t = crcTable, - end = pos + len; - crc ^= -1; - for (var i = pos; i < end; i++) { - crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 255]; - } - return crc ^ -1; - } - module2.exports = crc32; - }, -}); - -// node_modules/pako/lib/zlib/messages.js -var require_messages = __commonJS({ - "node_modules/pako/lib/zlib/messages.js"(exports, module2) { - "use strict"; - module2.exports = { - 2: "need dictionary", - 1: "stream end", - 0: "", - "-1": "file error", - "-2": "stream error", - "-3": "data error", - "-4": "insufficient memory", - "-5": "buffer error", - "-6": "incompatible version", - }; - }, -}); - -// node_modules/pako/lib/zlib/deflate.js -var require_deflate = __commonJS({ - "node_modules/pako/lib/zlib/deflate.js"(exports) { - "use strict"; - var utils = require_common(); - var trees = require_trees(); - var adler32 = require_adler32(); - var crc32 = require_crc32(); - var msg = require_messages(); - var Z_NO_FLUSH = 0; - var Z_PARTIAL_FLUSH = 1; - var Z_FULL_FLUSH = 3; - var Z_FINISH = 4; - var Z_BLOCK = 5; - var Z_OK = 0; - var Z_STREAM_END = 1; - var Z_STREAM_ERROR = -2; - var Z_DATA_ERROR = -3; - var Z_BUF_ERROR = -5; - var Z_DEFAULT_COMPRESSION = -1; - var Z_FILTERED = 1; - var Z_HUFFMAN_ONLY = 2; - var Z_RLE = 3; - var Z_FIXED = 4; - var Z_DEFAULT_STRATEGY = 0; - var Z_UNKNOWN = 2; - var Z_DEFLATED = 8; - var MAX_MEM_LEVEL = 9; - var MAX_WBITS = 15; - var DEF_MEM_LEVEL = 8; - var LENGTH_CODES = 29; - var LITERALS = 256; - var L_CODES = LITERALS + 1 + LENGTH_CODES; - var D_CODES = 30; - var BL_CODES = 19; - var HEAP_SIZE = 2 * L_CODES + 1; - var MAX_BITS = 15; - var MIN_MATCH = 3; - var MAX_MATCH = 258; - var MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1; - var PRESET_DICT = 32; - var INIT_STATE = 42; - var EXTRA_STATE = 69; - var NAME_STATE = 73; - var COMMENT_STATE = 91; - var HCRC_STATE = 103; - var BUSY_STATE = 113; - var FINISH_STATE = 666; - var BS_NEED_MORE = 1; - var BS_BLOCK_DONE = 2; - var BS_FINISH_STARTED = 3; - var BS_FINISH_DONE = 4; - var OS_CODE = 3; - function err(strm, errorCode) { - strm.msg = msg[errorCode]; - return errorCode; - } - function rank(f) { - return (f << 1) - (f > 4 ? 9 : 0); - } - function zero(buf) { - var len = buf.length; - while (--len >= 0) { - buf[len] = 0; - } - } - function flush_pending(strm) { - var s = strm.state; - var len = s.pending; - if (len > strm.avail_out) { - len = strm.avail_out; - } - if (len === 0) { - return; - } - utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out); - strm.next_out += len; - s.pending_out += len; - strm.total_out += len; - strm.avail_out -= len; - s.pending -= len; - if (s.pending === 0) { - s.pending_out = 0; - } - } - function flush_block_only(s, last) { - trees._tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last); - s.block_start = s.strstart; - flush_pending(s.strm); - } - function put_byte(s, b) { - s.pending_buf[s.pending++] = b; - } - function putShortMSB(s, b) { - s.pending_buf[s.pending++] = (b >>> 8) & 255; - s.pending_buf[s.pending++] = b & 255; - } - function read_buf(strm, buf, start, size) { - var len = strm.avail_in; - if (len > size) { - len = size; - } - if (len === 0) { - return 0; - } - strm.avail_in -= len; - utils.arraySet(buf, strm.input, strm.next_in, len, start); - if (strm.state.wrap === 1) { - strm.adler = adler32(strm.adler, buf, len, start); - } else if (strm.state.wrap === 2) { - strm.adler = crc32(strm.adler, buf, len, start); - } - strm.next_in += len; - strm.total_in += len; - return len; - } - function longest_match(s, cur_match) { - var chain_length = s.max_chain_length; - var scan = s.strstart; - var match; - var len; - var best_len = s.prev_length; - var nice_match = s.nice_match; - var limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0; - var _win = s.window; - var wmask = s.w_mask; - var prev = s.prev; - var strend = s.strstart + MAX_MATCH; - var scan_end1 = _win[scan + best_len - 1]; - var scan_end = _win[scan + best_len]; - if (s.prev_length >= s.good_match) { - chain_length >>= 2; - } - if (nice_match > s.lookahead) { - nice_match = s.lookahead; - } - do { - match = cur_match; - if ( - _win[match + best_len] !== scan_end || - _win[match + best_len - 1] !== scan_end1 || - _win[match] !== _win[scan] || - _win[++match] !== _win[scan + 1] - ) { - continue; - } - scan += 2; - match++; - do {} while ( - _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && - scan < strend - ); - len = MAX_MATCH - (strend - scan); - scan = strend - MAX_MATCH; - if (len > best_len) { - s.match_start = cur_match; - best_len = len; - if (len >= nice_match) { - break; - } - scan_end1 = _win[scan + best_len - 1]; - scan_end = _win[scan + best_len]; - } - } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); - if (best_len <= s.lookahead) { - return best_len; - } - return s.lookahead; - } - function fill_window(s) { - var _w_size = s.w_size; - var p, n, m, more, str; - do { - more = s.window_size - s.lookahead - s.strstart; - if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { - utils.arraySet(s.window, s.window, _w_size, _w_size, 0); - s.match_start -= _w_size; - s.strstart -= _w_size; - s.block_start -= _w_size; - n = s.hash_size; - p = n; - do { - m = s.head[--p]; - s.head[p] = m >= _w_size ? m - _w_size : 0; - } while (--n); - n = _w_size; - p = n; - do { - m = s.prev[--p]; - s.prev[p] = m >= _w_size ? m - _w_size : 0; - } while (--n); - more += _w_size; - } - if (s.strm.avail_in === 0) { - break; - } - n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); - s.lookahead += n; - if (s.lookahead + s.insert >= MIN_MATCH) { - str = s.strstart - s.insert; - s.ins_h = s.window[str]; - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask; - while (s.insert) { - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; - s.prev[str & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = str; - str++; - s.insert--; - if (s.lookahead + s.insert < MIN_MATCH) { - break; - } - } - } - } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); - } - function deflate_stored(s, flush) { - var max_block_size = 65535; - if (max_block_size > s.pending_buf_size - 5) { - max_block_size = s.pending_buf_size - 5; - } - for (;;) { - if (s.lookahead <= 1) { - fill_window(s); - if (s.lookahead === 0 && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; - } - } - s.strstart += s.lookahead; - s.lookahead = 0; - var max_start = s.block_start + max_block_size; - if (s.strstart === 0 || s.strstart >= max_start) { - s.lookahead = s.strstart - max_start; - s.strstart = max_start; - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - if (s.strstart - s.block_start >= s.w_size - MIN_LOOKAHEAD) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } - s.insert = 0; - if (flush === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.strstart > s.block_start) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_NEED_MORE; - } - function deflate_fast(s, flush) { - var hash_head; - var bflush; - for (;;) { - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; - } - } - hash_head = 0; - if (s.lookahead >= MIN_MATCH) { - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - } - if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { - s.match_length = longest_match(s, hash_head); - } - if (s.match_length >= MIN_MATCH) { - bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); - s.lookahead -= s.match_length; - if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) { - s.match_length--; - do { - s.strstart++; - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - } while (--s.match_length !== 0); - s.strstart++; - } else { - s.strstart += s.match_length; - s.match_length = 0; - s.ins_h = s.window[s.strstart]; - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask; - } - } else { - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - } - if (bflush) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } - s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; - if (flush === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.last_lit) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_BLOCK_DONE; - } - function deflate_slow(s, flush) { - var hash_head; - var bflush; - var max_insert; - for (;;) { - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; - } - } - hash_head = 0; - if (s.lookahead >= MIN_MATCH) { - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - } - s.prev_length = s.match_length; - s.prev_match = s.match_start; - s.match_length = MIN_MATCH - 1; - if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { - s.match_length = longest_match(s, hash_head); - if ( - s.match_length <= 5 && - (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) - ) { - s.match_length = MIN_MATCH - 1; - } - } - if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { - max_insert = s.strstart + s.lookahead - MIN_MATCH; - bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); - s.lookahead -= s.prev_length - 1; - s.prev_length -= 2; - do { - if (++s.strstart <= max_insert) { - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - } - } while (--s.prev_length !== 0); - s.match_available = 0; - s.match_length = MIN_MATCH - 1; - s.strstart++; - if (bflush) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } else if (s.match_available) { - bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); - if (bflush) { - flush_block_only(s, false); - } - s.strstart++; - s.lookahead--; - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } else { - s.match_available = 1; - s.strstart++; - s.lookahead--; - } - } - if (s.match_available) { - bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); - s.match_available = 0; - } - s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; - if (flush === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.last_lit) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_BLOCK_DONE; - } - function deflate_rle(s, flush) { - var bflush; - var prev; - var scan, strend; - var _win = s.window; - for (;;) { - if (s.lookahead <= MAX_MATCH) { - fill_window(s); - if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; - } - } - s.match_length = 0; - if (s.lookahead >= MIN_MATCH && s.strstart > 0) { - scan = s.strstart - 1; - prev = _win[scan]; - if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { - strend = s.strstart + MAX_MATCH; - do {} while ( - prev === _win[++scan] && - prev === _win[++scan] && - prev === _win[++scan] && - prev === _win[++scan] && - prev === _win[++scan] && - prev === _win[++scan] && - prev === _win[++scan] && - prev === _win[++scan] && - scan < strend - ); - s.match_length = MAX_MATCH - (strend - scan); - if (s.match_length > s.lookahead) { - s.match_length = s.lookahead; - } - } - } - if (s.match_length >= MIN_MATCH) { - bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH); - s.lookahead -= s.match_length; - s.strstart += s.match_length; - s.match_length = 0; - } else { - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - } - if (bflush) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } - s.insert = 0; - if (flush === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.last_lit) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_BLOCK_DONE; - } - function deflate_huff(s, flush) { - var bflush; - for (;;) { - if (s.lookahead === 0) { - fill_window(s); - if (s.lookahead === 0) { - if (flush === Z_NO_FLUSH) { - return BS_NEED_MORE; - } - break; - } - } - s.match_length = 0; - bflush = trees._tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - if (bflush) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - } - s.insert = 0; - if (flush === Z_FINISH) { - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - return BS_FINISH_DONE; - } - if (s.last_lit) { - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } - return BS_BLOCK_DONE; - } - function Config(good_length, max_lazy, nice_length, max_chain, func) { - this.good_length = good_length; - this.max_lazy = max_lazy; - this.nice_length = nice_length; - this.max_chain = max_chain; - this.func = func; - } - var configuration_table; - configuration_table = [ - new Config(0, 0, 0, 0, deflate_stored), - new Config(4, 4, 8, 4, deflate_fast), - new Config(4, 5, 16, 8, deflate_fast), - new Config(4, 6, 32, 32, deflate_fast), - new Config(4, 4, 16, 16, deflate_slow), - new Config(8, 16, 32, 32, deflate_slow), - new Config(8, 16, 128, 128, deflate_slow), - new Config(8, 32, 128, 256, deflate_slow), - new Config(32, 128, 258, 1024, deflate_slow), - new Config(32, 258, 258, 4096, deflate_slow), - ]; - function lm_init(s) { - s.window_size = 2 * s.w_size; - zero(s.head); - s.max_lazy_match = configuration_table[s.level].max_lazy; - s.good_match = configuration_table[s.level].good_length; - s.nice_match = configuration_table[s.level].nice_length; - s.max_chain_length = configuration_table[s.level].max_chain; - s.strstart = 0; - s.block_start = 0; - s.lookahead = 0; - s.insert = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - s.ins_h = 0; - } - function DeflateState() { - this.strm = null; - this.status = 0; - this.pending_buf = null; - this.pending_buf_size = 0; - this.pending_out = 0; - this.pending = 0; - this.wrap = 0; - this.gzhead = null; - this.gzindex = 0; - this.method = Z_DEFLATED; - this.last_flush = -1; - this.w_size = 0; - this.w_bits = 0; - this.w_mask = 0; - this.window = null; - this.window_size = 0; - this.prev = null; - this.head = null; - this.ins_h = 0; - this.hash_size = 0; - this.hash_bits = 0; - this.hash_mask = 0; - this.hash_shift = 0; - this.block_start = 0; - this.match_length = 0; - this.prev_match = 0; - this.match_available = 0; - this.strstart = 0; - this.match_start = 0; - this.lookahead = 0; - this.prev_length = 0; - this.max_chain_length = 0; - this.max_lazy_match = 0; - this.level = 0; - this.strategy = 0; - this.good_match = 0; - this.nice_match = 0; - this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2); - this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2); - this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2); - zero(this.dyn_ltree); - zero(this.dyn_dtree); - zero(this.bl_tree); - this.l_desc = null; - this.d_desc = null; - this.bl_desc = null; - this.bl_count = new utils.Buf16(MAX_BITS + 1); - this.heap = new utils.Buf16(2 * L_CODES + 1); - zero(this.heap); - this.heap_len = 0; - this.heap_max = 0; - this.depth = new utils.Buf16(2 * L_CODES + 1); - zero(this.depth); - this.l_buf = 0; - this.lit_bufsize = 0; - this.last_lit = 0; - this.d_buf = 0; - this.opt_len = 0; - this.static_len = 0; - this.matches = 0; - this.insert = 0; - this.bi_buf = 0; - this.bi_valid = 0; - } - function deflateResetKeep(strm) { - var s; - if (!strm || !strm.state) { - return err(strm, Z_STREAM_ERROR); - } - strm.total_in = strm.total_out = 0; - strm.data_type = Z_UNKNOWN; - s = strm.state; - s.pending = 0; - s.pending_out = 0; - if (s.wrap < 0) { - s.wrap = -s.wrap; - } - s.status = s.wrap ? INIT_STATE : BUSY_STATE; - strm.adler = s.wrap === 2 ? 0 : 1; - s.last_flush = Z_NO_FLUSH; - trees._tr_init(s); - return Z_OK; - } - function deflateReset(strm) { - var ret = deflateResetKeep(strm); - if (ret === Z_OK) { - lm_init(strm.state); - } - return ret; - } - function deflateSetHeader(strm, head) { - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - if (strm.state.wrap !== 2) { - return Z_STREAM_ERROR; - } - strm.state.gzhead = head; - return Z_OK; - } - function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { - if (!strm) { - return Z_STREAM_ERROR; - } - var wrap = 1; - if (level === Z_DEFAULT_COMPRESSION) { - level = 6; - } - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } else if (windowBits > 15) { - wrap = 2; - windowBits -= 16; - } - if ( - memLevel < 1 || - memLevel > MAX_MEM_LEVEL || - method !== Z_DEFLATED || - windowBits < 8 || - windowBits > 15 || - level < 0 || - level > 9 || - strategy < 0 || - strategy > Z_FIXED - ) { - return err(strm, Z_STREAM_ERROR); - } - if (windowBits === 8) { - windowBits = 9; - } - var s = new DeflateState(); - strm.state = s; - s.strm = strm; - s.wrap = wrap; - s.gzhead = null; - s.w_bits = windowBits; - s.w_size = 1 << s.w_bits; - s.w_mask = s.w_size - 1; - s.hash_bits = memLevel + 7; - s.hash_size = 1 << s.hash_bits; - s.hash_mask = s.hash_size - 1; - s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); - s.window = new utils.Buf8(s.w_size * 2); - s.head = new utils.Buf16(s.hash_size); - s.prev = new utils.Buf16(s.w_size); - s.lit_bufsize = 1 << (memLevel + 6); - s.pending_buf_size = s.lit_bufsize * 4; - s.pending_buf = new utils.Buf8(s.pending_buf_size); - s.d_buf = 1 * s.lit_bufsize; - s.l_buf = (1 + 2) * s.lit_bufsize; - s.level = level; - s.strategy = strategy; - s.method = method; - return deflateReset(strm); - } - function deflateInit(strm, level) { - return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); - } - function deflate(strm, flush) { - var old_flush, s; - var beg, val; - if (!strm || !strm.state || flush > Z_BLOCK || flush < 0) { - return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; - } - s = strm.state; - if (!strm.output || (!strm.input && strm.avail_in !== 0) || (s.status === FINISH_STATE && flush !== Z_FINISH)) { - return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR : Z_STREAM_ERROR); - } - s.strm = strm; - old_flush = s.last_flush; - s.last_flush = flush; - if (s.status === INIT_STATE) { - if (s.wrap === 2) { - strm.adler = 0; - put_byte(s, 31); - put_byte(s, 139); - put_byte(s, 8); - if (!s.gzhead) { - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); - put_byte(s, OS_CODE); - s.status = BUSY_STATE; - } else { - put_byte( - s, - (s.gzhead.text ? 1 : 0) + - (s.gzhead.hcrc ? 2 : 0) + - (!s.gzhead.extra ? 0 : 4) + - (!s.gzhead.name ? 0 : 8) + - (!s.gzhead.comment ? 0 : 16), - ); - put_byte(s, s.gzhead.time & 255); - put_byte(s, (s.gzhead.time >> 8) & 255); - put_byte(s, (s.gzhead.time >> 16) & 255); - put_byte(s, (s.gzhead.time >> 24) & 255); - put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); - put_byte(s, s.gzhead.os & 255); - if (s.gzhead.extra && s.gzhead.extra.length) { - put_byte(s, s.gzhead.extra.length & 255); - put_byte(s, (s.gzhead.extra.length >> 8) & 255); - } - if (s.gzhead.hcrc) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0); - } - s.gzindex = 0; - s.status = EXTRA_STATE; - } - } else { - var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8; - var level_flags = -1; - if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { - level_flags = 0; - } else if (s.level < 6) { - level_flags = 1; - } else if (s.level === 6) { - level_flags = 2; - } else { - level_flags = 3; - } - header |= level_flags << 6; - if (s.strstart !== 0) { - header |= PRESET_DICT; - } - header += 31 - (header % 31); - s.status = BUSY_STATE; - putShortMSB(s, header); - if (s.strstart !== 0) { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 65535); - } - strm.adler = 1; - } - } - if (s.status === EXTRA_STATE) { - if (s.gzhead.extra) { - beg = s.pending; - while (s.gzindex < (s.gzhead.extra.length & 65535)) { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - break; - } - } - put_byte(s, s.gzhead.extra[s.gzindex] & 255); - s.gzindex++; - } - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (s.gzindex === s.gzhead.extra.length) { - s.gzindex = 0; - s.status = NAME_STATE; - } - } else { - s.status = NAME_STATE; - } - } - if (s.status === NAME_STATE) { - if (s.gzhead.name) { - beg = s.pending; - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } - if (s.gzindex < s.gzhead.name.length) { - val = s.gzhead.name.charCodeAt(s.gzindex++) & 255; - } else { - val = 0; - } - put_byte(s, val); - } while (val !== 0); - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (val === 0) { - s.gzindex = 0; - s.status = COMMENT_STATE; - } - } else { - s.status = COMMENT_STATE; - } - } - if (s.status === COMMENT_STATE) { - if (s.gzhead.comment) { - beg = s.pending; - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } - if (s.gzindex < s.gzhead.comment.length) { - val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255; - } else { - val = 0; - } - put_byte(s, val); - } while (val !== 0); - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (val === 0) { - s.status = HCRC_STATE; - } - } else { - s.status = HCRC_STATE; - } - } - if (s.status === HCRC_STATE) { - if (s.gzhead.hcrc) { - if (s.pending + 2 > s.pending_buf_size) { - flush_pending(strm); - } - if (s.pending + 2 <= s.pending_buf_size) { - put_byte(s, strm.adler & 255); - put_byte(s, (strm.adler >> 8) & 255); - strm.adler = 0; - s.status = BUSY_STATE; - } - } else { - s.status = BUSY_STATE; - } - } - if (s.pending !== 0) { - flush_pending(strm); - if (strm.avail_out === 0) { - s.last_flush = -1; - return Z_OK; - } - } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH) { - return err(strm, Z_BUF_ERROR); - } - if (s.status === FINISH_STATE && strm.avail_in !== 0) { - return err(strm, Z_BUF_ERROR); - } - if (strm.avail_in !== 0 || s.lookahead !== 0 || (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) { - var bstate = - s.strategy === Z_HUFFMAN_ONLY - ? deflate_huff(s, flush) - : s.strategy === Z_RLE - ? deflate_rle(s, flush) - : configuration_table[s.level].func(s, flush); - if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { - s.status = FINISH_STATE; - } - if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { - if (strm.avail_out === 0) { - s.last_flush = -1; - } - return Z_OK; - } - if (bstate === BS_BLOCK_DONE) { - if (flush === Z_PARTIAL_FLUSH) { - trees._tr_align(s); - } else if (flush !== Z_BLOCK) { - trees._tr_stored_block(s, 0, 0, false); - if (flush === Z_FULL_FLUSH) { - zero(s.head); - if (s.lookahead === 0) { - s.strstart = 0; - s.block_start = 0; - s.insert = 0; - } - } - } - flush_pending(strm); - if (strm.avail_out === 0) { - s.last_flush = -1; - return Z_OK; - } - } - } - if (flush !== Z_FINISH) { - return Z_OK; - } - if (s.wrap <= 0) { - return Z_STREAM_END; - } - if (s.wrap === 2) { - put_byte(s, strm.adler & 255); - put_byte(s, (strm.adler >> 8) & 255); - put_byte(s, (strm.adler >> 16) & 255); - put_byte(s, (strm.adler >> 24) & 255); - put_byte(s, strm.total_in & 255); - put_byte(s, (strm.total_in >> 8) & 255); - put_byte(s, (strm.total_in >> 16) & 255); - put_byte(s, (strm.total_in >> 24) & 255); - } else { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 65535); - } - flush_pending(strm); - if (s.wrap > 0) { - s.wrap = -s.wrap; - } - return s.pending !== 0 ? Z_OK : Z_STREAM_END; - } - function deflateEnd(strm) { - var status; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - status = strm.state.status; - if ( - status !== INIT_STATE && - status !== EXTRA_STATE && - status !== NAME_STATE && - status !== COMMENT_STATE && - status !== HCRC_STATE && - status !== BUSY_STATE && - status !== FINISH_STATE - ) { - return err(strm, Z_STREAM_ERROR); - } - strm.state = null; - return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; - } - function deflateSetDictionary(strm, dictionary) { - var dictLength = dictionary.length; - var s; - var str, n; - var wrap; - var avail; - var next; - var input; - var tmpDict; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - s = strm.state; - wrap = s.wrap; - if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) { - return Z_STREAM_ERROR; - } - if (wrap === 1) { - strm.adler = adler32(strm.adler, dictionary, dictLength, 0); - } - s.wrap = 0; - if (dictLength >= s.w_size) { - if (wrap === 0) { - zero(s.head); - s.strstart = 0; - s.block_start = 0; - s.insert = 0; - } - tmpDict = new utils.Buf8(s.w_size); - utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0); - dictionary = tmpDict; - dictLength = s.w_size; - } - avail = strm.avail_in; - next = strm.next_in; - input = strm.input; - strm.avail_in = dictLength; - strm.next_in = 0; - strm.input = dictionary; - fill_window(s); - while (s.lookahead >= MIN_MATCH) { - str = s.strstart; - n = s.lookahead - (MIN_MATCH - 1); - do { - s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; - s.prev[str & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = str; - str++; - } while (--n); - s.strstart = str; - s.lookahead = MIN_MATCH - 1; - fill_window(s); - } - s.strstart += s.lookahead; - s.block_start = s.strstart; - s.insert = s.lookahead; - s.lookahead = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - strm.next_in = next; - strm.input = input; - strm.avail_in = avail; - s.wrap = wrap; - return Z_OK; - } - exports.deflateInit = deflateInit; - exports.deflateInit2 = deflateInit2; - exports.deflateReset = deflateReset; - exports.deflateResetKeep = deflateResetKeep; - exports.deflateSetHeader = deflateSetHeader; - exports.deflate = deflate; - exports.deflateEnd = deflateEnd; - exports.deflateSetDictionary = deflateSetDictionary; - exports.deflateInfo = "pako deflate (from Nodeca project)"; - }, -}); - -// node_modules/pako/lib/zlib/inffast.js -var require_inffast = __commonJS({ - "node_modules/pako/lib/zlib/inffast.js"(exports, module2) { - "use strict"; - var BAD = 30; - var TYPE = 12; - module2.exports = function inflate_fast(strm, start) { - var state; - var _in; - var last; - var _out; - var beg; - var end; - var dmax; - var wsize; - var whave; - var wnext; - var s_window; - var hold; - var bits; - var lcode; - var dcode; - var lmask; - var dmask; - var here; - var op; - var len; - var dist; - var from; - var from_source; - var input, output; - state = strm.state; - _in = strm.next_in; - input = strm.input; - last = _in + (strm.avail_in - 5); - _out = strm.next_out; - output = strm.output; - beg = _out - (start - strm.avail_out); - end = _out + (strm.avail_out - 257); - dmax = state.dmax; - wsize = state.wsize; - whave = state.whave; - wnext = state.wnext; - s_window = state.window; - hold = state.hold; - bits = state.bits; - lcode = state.lencode; - dcode = state.distcode; - lmask = (1 << state.lenbits) - 1; - dmask = (1 << state.distbits) - 1; - top: do { - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } - here = lcode[hold & lmask]; - dolen: for (;;) { - op = here >>> 24; - hold >>>= op; - bits -= op; - op = (here >>> 16) & 255; - if (op === 0) { - output[_out++] = here & 65535; - } else if (op & 16) { - len = here & 65535; - op &= 15; - if (op) { - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - len += hold & ((1 << op) - 1); - hold >>>= op; - bits -= op; - } - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } - here = dcode[hold & dmask]; - dodist: for (;;) { - op = here >>> 24; - hold >>>= op; - bits -= op; - op = (here >>> 16) & 255; - if (op & 16) { - dist = here & 65535; - op &= 15; - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - } - dist += hold & ((1 << op) - 1); - if (dist > dmax) { - strm.msg = "invalid distance too far back"; - state.mode = BAD; - break top; - } - hold >>>= op; - bits -= op; - op = _out - beg; - if (dist > op) { - op = dist - op; - if (op > whave) { - if (state.sane) { - strm.msg = "invalid distance too far back"; - state.mode = BAD; - break top; - } - } - from = 0; - from_source = s_window; - if (wnext === 0) { - from += wsize - op; - if (op < len) { - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; - from_source = output; - } - } else if (wnext < op) { - from += wsize + wnext - op; - op -= wnext; - if (op < len) { - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = 0; - if (wnext < len) { - op = wnext; - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; - from_source = output; - } - } - } else { - from += wnext - op; - if (op < len) { - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; - from_source = output; - } - } - while (len > 2) { - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - len -= 3; - } - if (len) { - output[_out++] = from_source[from++]; - if (len > 1) { - output[_out++] = from_source[from++]; - } - } - } else { - from = _out - dist; - do { - output[_out++] = output[from++]; - output[_out++] = output[from++]; - output[_out++] = output[from++]; - len -= 3; - } while (len > 2); - if (len) { - output[_out++] = output[from++]; - if (len > 1) { - output[_out++] = output[from++]; - } - } - } - } else if ((op & 64) === 0) { - here = dcode[(here & 65535) + (hold & ((1 << op) - 1))]; - continue dodist; - } else { - strm.msg = "invalid distance code"; - state.mode = BAD; - break top; - } - break; - } - } else if ((op & 64) === 0) { - here = lcode[(here & 65535) + (hold & ((1 << op) - 1))]; - continue dolen; - } else if (op & 32) { - state.mode = TYPE; - break top; - } else { - strm.msg = "invalid literal/length code"; - state.mode = BAD; - break top; - } - break; - } - } while (_in < last && _out < end); - len = bits >> 3; - _in -= len; - bits -= len << 3; - hold &= (1 << bits) - 1; - strm.next_in = _in; - strm.next_out = _out; - strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last); - strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end); - state.hold = hold; - state.bits = bits; - return; - }; - }, -}); - -// node_modules/pako/lib/zlib/inftrees.js -var require_inftrees = __commonJS({ - "node_modules/pako/lib/zlib/inftrees.js"(exports, module2) { - "use strict"; - var utils = require_common(); - var MAXBITS = 15; - var ENOUGH_LENS = 852; - var ENOUGH_DISTS = 592; - var CODES = 0; - var LENS = 1; - var DISTS = 2; - var lbase = [ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, - 0, 0, - ]; - var lext = [ - 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, - 16, 72, 78, - ]; - var dbase = [ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577, 0, 0, - ]; - var dext = [ - 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, - 29, 29, 64, 64, - ]; - module2.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) { - var bits = opts.bits; - var len = 0; - var sym = 0; - var min = 0, - max = 0; - var root = 0; - var curr = 0; - var drop = 0; - var left = 0; - var used = 0; - var huff = 0; - var incr; - var fill; - var low; - var mask; - var next; - var base = null; - var base_index = 0; - var end; - var count = new utils.Buf16(MAXBITS + 1); - var offs = new utils.Buf16(MAXBITS + 1); - var extra = null; - var extra_index = 0; - var here_bits, here_op, here_val; - for (len = 0; len <= MAXBITS; len++) { - count[len] = 0; - } - for (sym = 0; sym < codes; sym++) { - count[lens[lens_index + sym]]++; - } - root = bits; - for (max = MAXBITS; max >= 1; max--) { - if (count[max] !== 0) { - break; - } - } - if (root > max) { - root = max; - } - if (max === 0) { - table[table_index++] = (1 << 24) | (64 << 16) | 0; - table[table_index++] = (1 << 24) | (64 << 16) | 0; - opts.bits = 1; - return 0; - } - for (min = 1; min < max; min++) { - if (count[min] !== 0) { - break; - } - } - if (root < min) { - root = min; - } - left = 1; - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - if (left < 0) { - return -1; - } - } - if (left > 0 && (type === CODES || max !== 1)) { - return -1; - } - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) { - offs[len + 1] = offs[len] + count[len]; - } - for (sym = 0; sym < codes; sym++) { - if (lens[lens_index + sym] !== 0) { - work[offs[lens[lens_index + sym]]++] = sym; - } - } - if (type === CODES) { - base = extra = work; - end = 19; - } else if (type === LENS) { - base = lbase; - base_index -= 257; - extra = lext; - extra_index -= 257; - end = 256; - } else { - base = dbase; - extra = dext; - end = -1; - } - huff = 0; - sym = 0; - len = min; - next = table_index; - curr = root; - drop = 0; - low = -1; - used = 1 << root; - mask = used - 1; - if ((type === LENS && used > ENOUGH_LENS) || (type === DISTS && used > ENOUGH_DISTS)) { - return 1; - } - for (;;) { - here_bits = len - drop; - if (work[sym] < end) { - here_op = 0; - here_val = work[sym]; - } else if (work[sym] > end) { - here_op = extra[extra_index + work[sym]]; - here_val = base[base_index + work[sym]]; - } else { - here_op = 32 + 64; - here_val = 0; - } - incr = 1 << (len - drop); - fill = 1 << curr; - min = fill; - do { - fill -= incr; - table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val | 0; - } while (fill !== 0); - incr = 1 << (len - 1); - while (huff & incr) { - incr >>= 1; - } - if (incr !== 0) { - huff &= incr - 1; - huff += incr; - } else { - huff = 0; - } - sym++; - if (--count[len] === 0) { - if (len === max) { - break; - } - len = lens[lens_index + work[sym]]; - } - if (len > root && (huff & mask) !== low) { - if (drop === 0) { - drop = root; - } - next += min; - curr = len - drop; - left = 1 << curr; - while (curr + drop < max) { - left -= count[curr + drop]; - if (left <= 0) { - break; - } - curr++; - left <<= 1; - } - used += 1 << curr; - if ((type === LENS && used > ENOUGH_LENS) || (type === DISTS && used > ENOUGH_DISTS)) { - return 1; - } - low = huff & mask; - table[low] = (root << 24) | (curr << 16) | (next - table_index) | 0; - } - } - if (huff !== 0) { - table[next + huff] = ((len - drop) << 24) | (64 << 16) | 0; - } - opts.bits = root; - return 0; - }; - }, -}); - -// node_modules/pako/lib/zlib/inflate.js -var require_inflate = __commonJS({ - "node_modules/pako/lib/zlib/inflate.js"(exports) { - "use strict"; - var utils = require_common(); - var adler32 = require_adler32(); - var crc32 = require_crc32(); - var inflate_fast = require_inffast(); - var inflate_table = require_inftrees(); - var CODES = 0; - var LENS = 1; - var DISTS = 2; - var Z_FINISH = 4; - var Z_BLOCK = 5; - var Z_TREES = 6; - var Z_OK = 0; - var Z_STREAM_END = 1; - var Z_NEED_DICT = 2; - var Z_STREAM_ERROR = -2; - var Z_DATA_ERROR = -3; - var Z_MEM_ERROR = -4; - var Z_BUF_ERROR = -5; - var Z_DEFLATED = 8; - var HEAD = 1; - var FLAGS = 2; - var TIME = 3; - var OS = 4; - var EXLEN = 5; - var EXTRA = 6; - var NAME = 7; - var COMMENT = 8; - var HCRC = 9; - var DICTID = 10; - var DICT = 11; - var TYPE = 12; - var TYPEDO = 13; - var STORED = 14; - var COPY_ = 15; - var COPY = 16; - var TABLE = 17; - var LENLENS = 18; - var CODELENS = 19; - var LEN_ = 20; - var LEN = 21; - var LENEXT = 22; - var DIST = 23; - var DISTEXT = 24; - var MATCH = 25; - var LIT = 26; - var CHECK = 27; - var LENGTH = 28; - var DONE = 29; - var BAD = 30; - var MEM = 31; - var SYNC = 32; - var ENOUGH_LENS = 852; - var ENOUGH_DISTS = 592; - var MAX_WBITS = 15; - var DEF_WBITS = MAX_WBITS; - function zswap32(q) { - return ((q >>> 24) & 255) + ((q >>> 8) & 65280) + ((q & 65280) << 8) + ((q & 255) << 24); - } - function InflateState() { - this.mode = 0; - this.last = false; - this.wrap = 0; - this.havedict = false; - this.flags = 0; - this.dmax = 0; - this.check = 0; - this.total = 0; - this.head = null; - this.wbits = 0; - this.wsize = 0; - this.whave = 0; - this.wnext = 0; - this.window = null; - this.hold = 0; - this.bits = 0; - this.length = 0; - this.offset = 0; - this.extra = 0; - this.lencode = null; - this.distcode = null; - this.lenbits = 0; - this.distbits = 0; - this.ncode = 0; - this.nlen = 0; - this.ndist = 0; - this.have = 0; - this.next = null; - this.lens = new utils.Buf16(320); - this.work = new utils.Buf16(288); - this.lendyn = null; - this.distdyn = null; - this.sane = 0; - this.back = 0; - this.was = 0; - } - function inflateResetKeep(strm) { - var state; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - strm.total_in = strm.total_out = state.total = 0; - strm.msg = ""; - if (state.wrap) { - strm.adler = state.wrap & 1; - } - state.mode = HEAD; - state.last = 0; - state.havedict = 0; - state.dmax = 32768; - state.head = null; - state.hold = 0; - state.bits = 0; - state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS); - state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS); - state.sane = 1; - state.back = -1; - return Z_OK; - } - function inflateReset(strm) { - var state; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - state.wsize = 0; - state.whave = 0; - state.wnext = 0; - return inflateResetKeep(strm); - } - function inflateReset2(strm, windowBits) { - var wrap; - var state; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } else { - wrap = (windowBits >> 4) + 1; - if (windowBits < 48) { - windowBits &= 15; - } - } - if (windowBits && (windowBits < 8 || windowBits > 15)) { - return Z_STREAM_ERROR; - } - if (state.window !== null && state.wbits !== windowBits) { - state.window = null; - } - state.wrap = wrap; - state.wbits = windowBits; - return inflateReset(strm); - } - function inflateInit2(strm, windowBits) { - var ret; - var state; - if (!strm) { - return Z_STREAM_ERROR; - } - state = new InflateState(); - strm.state = state; - state.window = null; - ret = inflateReset2(strm, windowBits); - if (ret !== Z_OK) { - strm.state = null; - } - return ret; - } - function inflateInit(strm) { - return inflateInit2(strm, DEF_WBITS); - } - var virgin = true; - var lenfix; - var distfix; - function fixedtables(state) { - if (virgin) { - var sym; - lenfix = new utils.Buf32(512); - distfix = new utils.Buf32(32); - sym = 0; - while (sym < 144) { - state.lens[sym++] = 8; - } - while (sym < 256) { - state.lens[sym++] = 9; - } - while (sym < 280) { - state.lens[sym++] = 7; - } - while (sym < 288) { - state.lens[sym++] = 8; - } - inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { - bits: 9, - }); - sym = 0; - while (sym < 32) { - state.lens[sym++] = 5; - } - inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { - bits: 5, - }); - virgin = false; - } - state.lencode = lenfix; - state.lenbits = 9; - state.distcode = distfix; - state.distbits = 5; - } - function updatewindow(strm, src, end, copy) { - var dist; - var state = strm.state; - if (state.window === null) { - state.wsize = 1 << state.wbits; - state.wnext = 0; - state.whave = 0; - state.window = new utils.Buf8(state.wsize); - } - if (copy >= state.wsize) { - utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0); - state.wnext = 0; - state.whave = state.wsize; - } else { - dist = state.wsize - state.wnext; - if (dist > copy) { - dist = copy; - } - utils.arraySet(state.window, src, end - copy, dist, state.wnext); - copy -= dist; - if (copy) { - utils.arraySet(state.window, src, end - copy, copy, 0); - state.wnext = copy; - state.whave = state.wsize; - } else { - state.wnext += dist; - if (state.wnext === state.wsize) { - state.wnext = 0; - } - if (state.whave < state.wsize) { - state.whave += dist; - } - } - } - return 0; - } - function inflate(strm, flush) { - var state; - var input, output; - var next; - var put; - var have, left; - var hold; - var bits; - var _in, _out; - var copy; - var from; - var from_source; - var here = 0; - var here_bits, here_op, here_val; - var last_bits, last_op, last_val; - var len; - var ret; - var hbuf = new utils.Buf8(4); - var opts; - var n; - var order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - if (!strm || !strm.state || !strm.output || (!strm.input && strm.avail_in !== 0)) { - return Z_STREAM_ERROR; - } - state = strm.state; - if (state.mode === TYPE) { - state.mode = TYPEDO; - } - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; - _in = have; - _out = left; - ret = Z_OK; - inf_leave: for (;;) { - switch (state.mode) { - case HEAD: - if (state.wrap === 0) { - state.mode = TYPEDO; - break; - } - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (state.wrap & 2 && hold === 35615) { - state.check = 0; - hbuf[0] = hold & 255; - hbuf[1] = (hold >>> 8) & 255; - state.check = crc32(state.check, hbuf, 2, 0); - hold = 0; - bits = 0; - state.mode = FLAGS; - break; - } - state.flags = 0; - if (state.head) { - state.head.done = false; - } - if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) { - strm.msg = "incorrect header check"; - state.mode = BAD; - break; - } - if ((hold & 15) !== Z_DEFLATED) { - strm.msg = "unknown compression method"; - state.mode = BAD; - break; - } - hold >>>= 4; - bits -= 4; - len = (hold & 15) + 8; - if (state.wbits === 0) { - state.wbits = len; - } else if (len > state.wbits) { - strm.msg = "invalid window size"; - state.mode = BAD; - break; - } - state.dmax = 1 << len; - strm.adler = state.check = 1; - state.mode = hold & 512 ? DICTID : TYPE; - hold = 0; - bits = 0; - break; - case FLAGS: - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.flags = hold; - if ((state.flags & 255) !== Z_DEFLATED) { - strm.msg = "unknown compression method"; - state.mode = BAD; - break; - } - if (state.flags & 57344) { - strm.msg = "unknown header flags set"; - state.mode = BAD; - break; - } - if (state.head) { - state.head.text = (hold >> 8) & 1; - } - if (state.flags & 512) { - hbuf[0] = hold & 255; - hbuf[1] = (hold >>> 8) & 255; - state.check = crc32(state.check, hbuf, 2, 0); - } - hold = 0; - bits = 0; - state.mode = TIME; - case TIME: - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (state.head) { - state.head.time = hold; - } - if (state.flags & 512) { - hbuf[0] = hold & 255; - hbuf[1] = (hold >>> 8) & 255; - hbuf[2] = (hold >>> 16) & 255; - hbuf[3] = (hold >>> 24) & 255; - state.check = crc32(state.check, hbuf, 4, 0); - } - hold = 0; - bits = 0; - state.mode = OS; - case OS: - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (state.head) { - state.head.xflags = hold & 255; - state.head.os = hold >> 8; - } - if (state.flags & 512) { - hbuf[0] = hold & 255; - hbuf[1] = (hold >>> 8) & 255; - state.check = crc32(state.check, hbuf, 2, 0); - } - hold = 0; - bits = 0; - state.mode = EXLEN; - case EXLEN: - if (state.flags & 1024) { - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.length = hold; - if (state.head) { - state.head.extra_len = hold; - } - if (state.flags & 512) { - hbuf[0] = hold & 255; - hbuf[1] = (hold >>> 8) & 255; - state.check = crc32(state.check, hbuf, 2, 0); - } - hold = 0; - bits = 0; - } else if (state.head) { - state.head.extra = null; - } - state.mode = EXTRA; - case EXTRA: - if (state.flags & 1024) { - copy = state.length; - if (copy > have) { - copy = have; - } - if (copy) { - if (state.head) { - len = state.head.extra_len - state.length; - if (!state.head.extra) { - state.head.extra = new Array(state.head.extra_len); - } - utils.arraySet(state.head.extra, input, next, copy, len); - } - if (state.flags & 512) { - state.check = crc32(state.check, input, copy, next); - } - have -= copy; - next += copy; - state.length -= copy; - } - if (state.length) { - break inf_leave; - } - } - state.length = 0; - state.mode = NAME; - case NAME: - if (state.flags & 2048) { - if (have === 0) { - break inf_leave; - } - copy = 0; - do { - len = input[next + copy++]; - if (state.head && len && state.length < 65536) { - state.head.name += String.fromCharCode(len); - } - } while (len && copy < have); - if (state.flags & 512) { - state.check = crc32(state.check, input, copy, next); - } - have -= copy; - next += copy; - if (len) { - break inf_leave; - } - } else if (state.head) { - state.head.name = null; - } - state.length = 0; - state.mode = COMMENT; - case COMMENT: - if (state.flags & 4096) { - if (have === 0) { - break inf_leave; - } - copy = 0; - do { - len = input[next + copy++]; - if (state.head && len && state.length < 65536) { - state.head.comment += String.fromCharCode(len); - } - } while (len && copy < have); - if (state.flags & 512) { - state.check = crc32(state.check, input, copy, next); - } - have -= copy; - next += copy; - if (len) { - break inf_leave; - } - } else if (state.head) { - state.head.comment = null; - } - state.mode = HCRC; - case HCRC: - if (state.flags & 512) { - while (bits < 16) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (hold !== (state.check & 65535)) { - strm.msg = "header crc mismatch"; - state.mode = BAD; - break; - } - hold = 0; - bits = 0; - } - if (state.head) { - state.head.hcrc = (state.flags >> 9) & 1; - state.head.done = true; - } - strm.adler = state.check = 0; - state.mode = TYPE; - break; - case DICTID: - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - strm.adler = state.check = zswap32(hold); - hold = 0; - bits = 0; - state.mode = DICT; - case DICT: - if (state.havedict === 0) { - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - return Z_NEED_DICT; - } - strm.adler = state.check = 1; - state.mode = TYPE; - case TYPE: - if (flush === Z_BLOCK || flush === Z_TREES) { - break inf_leave; - } - case TYPEDO: - if (state.last) { - hold >>>= bits & 7; - bits -= bits & 7; - state.mode = CHECK; - break; - } - while (bits < 3) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.last = hold & 1; - hold >>>= 1; - bits -= 1; - switch (hold & 3) { - case 0: - state.mode = STORED; - break; - case 1: - fixedtables(state); - state.mode = LEN_; - if (flush === Z_TREES) { - hold >>>= 2; - bits -= 2; - break inf_leave; - } - break; - case 2: - state.mode = TABLE; - break; - case 3: - strm.msg = "invalid block type"; - state.mode = BAD; - } - hold >>>= 2; - bits -= 2; - break; - case STORED: - hold >>>= bits & 7; - bits -= bits & 7; - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if ((hold & 65535) !== ((hold >>> 16) ^ 65535)) { - strm.msg = "invalid stored block lengths"; - state.mode = BAD; - break; - } - state.length = hold & 65535; - hold = 0; - bits = 0; - state.mode = COPY_; - if (flush === Z_TREES) { - break inf_leave; - } - case COPY_: - state.mode = COPY; - case COPY: - copy = state.length; - if (copy) { - if (copy > have) { - copy = have; - } - if (copy > left) { - copy = left; - } - if (copy === 0) { - break inf_leave; - } - utils.arraySet(output, input, next, copy, put); - have -= copy; - next += copy; - left -= copy; - put += copy; - state.length -= copy; - break; - } - state.mode = TYPE; - break; - case TABLE: - while (bits < 14) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.nlen = (hold & 31) + 257; - hold >>>= 5; - bits -= 5; - state.ndist = (hold & 31) + 1; - hold >>>= 5; - bits -= 5; - state.ncode = (hold & 15) + 4; - hold >>>= 4; - bits -= 4; - if (state.nlen > 286 || state.ndist > 30) { - strm.msg = "too many length or distance symbols"; - state.mode = BAD; - break; - } - state.have = 0; - state.mode = LENLENS; - case LENLENS: - while (state.have < state.ncode) { - while (bits < 3) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.lens[order[state.have++]] = hold & 7; - hold >>>= 3; - bits -= 3; - } - while (state.have < 19) { - state.lens[order[state.have++]] = 0; - } - state.lencode = state.lendyn; - state.lenbits = 7; - opts = { bits: state.lenbits }; - ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); - state.lenbits = opts.bits; - if (ret) { - strm.msg = "invalid code lengths set"; - state.mode = BAD; - break; - } - state.have = 0; - state.mode = CODELENS; - case CODELENS: - while (state.have < state.nlen + state.ndist) { - for (;;) { - here = state.lencode[hold & ((1 << state.lenbits) - 1)]; - here_bits = here >>> 24; - here_op = (here >>> 16) & 255; - here_val = here & 65535; - if (here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (here_val < 16) { - hold >>>= here_bits; - bits -= here_bits; - state.lens[state.have++] = here_val; - } else { - if (here_val === 16) { - n = here_bits + 2; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= here_bits; - bits -= here_bits; - if (state.have === 0) { - strm.msg = "invalid bit length repeat"; - state.mode = BAD; - break; - } - len = state.lens[state.have - 1]; - copy = 3 + (hold & 3); - hold >>>= 2; - bits -= 2; - } else if (here_val === 17) { - n = here_bits + 3; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= here_bits; - bits -= here_bits; - len = 0; - copy = 3 + (hold & 7); - hold >>>= 3; - bits -= 3; - } else { - n = here_bits + 7; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= here_bits; - bits -= here_bits; - len = 0; - copy = 11 + (hold & 127); - hold >>>= 7; - bits -= 7; - } - if (state.have + copy > state.nlen + state.ndist) { - strm.msg = "invalid bit length repeat"; - state.mode = BAD; - break; - } - while (copy--) { - state.lens[state.have++] = len; - } - } - } - if (state.mode === BAD) { - break; - } - if (state.lens[256] === 0) { - strm.msg = "invalid code -- missing end-of-block"; - state.mode = BAD; - break; - } - state.lenbits = 9; - opts = { bits: state.lenbits }; - ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); - state.lenbits = opts.bits; - if (ret) { - strm.msg = "invalid literal/lengths set"; - state.mode = BAD; - break; - } - state.distbits = 6; - state.distcode = state.distdyn; - opts = { bits: state.distbits }; - ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); - state.distbits = opts.bits; - if (ret) { - strm.msg = "invalid distances set"; - state.mode = BAD; - break; - } - state.mode = LEN_; - if (flush === Z_TREES) { - break inf_leave; - } - case LEN_: - state.mode = LEN; - case LEN: - if (have >= 6 && left >= 258) { - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - inflate_fast(strm, _out); - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; - if (state.mode === TYPE) { - state.back = -1; - } - break; - } - state.back = 0; - for (;;) { - here = state.lencode[hold & ((1 << state.lenbits) - 1)]; - here_bits = here >>> 24; - here_op = (here >>> 16) & 255; - here_val = here & 65535; - if (here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (here_op && (here_op & 240) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - for (;;) { - here = state.lencode[last_val + ((hold & ((1 << (last_bits + last_op)) - 1)) >> last_bits)]; - here_bits = here >>> 24; - here_op = (here >>> 16) & 255; - here_val = here & 65535; - if (last_bits + here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= last_bits; - bits -= last_bits; - state.back += last_bits; - } - hold >>>= here_bits; - bits -= here_bits; - state.back += here_bits; - state.length = here_val; - if (here_op === 0) { - state.mode = LIT; - break; - } - if (here_op & 32) { - state.back = -1; - state.mode = TYPE; - break; - } - if (here_op & 64) { - strm.msg = "invalid literal/length code"; - state.mode = BAD; - break; - } - state.extra = here_op & 15; - state.mode = LENEXT; - case LENEXT: - if (state.extra) { - n = state.extra; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.length += hold & ((1 << state.extra) - 1); - hold >>>= state.extra; - bits -= state.extra; - state.back += state.extra; - } - state.was = state.length; - state.mode = DIST; - case DIST: - for (;;) { - here = state.distcode[hold & ((1 << state.distbits) - 1)]; - here_bits = here >>> 24; - here_op = (here >>> 16) & 255; - here_val = here & 65535; - if (here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if ((here_op & 240) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - for (;;) { - here = state.distcode[last_val + ((hold & ((1 << (last_bits + last_op)) - 1)) >> last_bits)]; - here_bits = here >>> 24; - here_op = (here >>> 16) & 255; - here_val = here & 65535; - if (last_bits + here_bits <= bits) { - break; - } - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - hold >>>= last_bits; - bits -= last_bits; - state.back += last_bits; - } - hold >>>= here_bits; - bits -= here_bits; - state.back += here_bits; - if (here_op & 64) { - strm.msg = "invalid distance code"; - state.mode = BAD; - break; - } - state.offset = here_val; - state.extra = here_op & 15; - state.mode = DISTEXT; - case DISTEXT: - if (state.extra) { - n = state.extra; - while (bits < n) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - state.offset += hold & ((1 << state.extra) - 1); - hold >>>= state.extra; - bits -= state.extra; - state.back += state.extra; - } - if (state.offset > state.dmax) { - strm.msg = "invalid distance too far back"; - state.mode = BAD; - break; - } - state.mode = MATCH; - case MATCH: - if (left === 0) { - break inf_leave; - } - copy = _out - left; - if (state.offset > copy) { - copy = state.offset - copy; - if (copy > state.whave) { - if (state.sane) { - strm.msg = "invalid distance too far back"; - state.mode = BAD; - break; - } - } - if (copy > state.wnext) { - copy -= state.wnext; - from = state.wsize - copy; - } else { - from = state.wnext - copy; - } - if (copy > state.length) { - copy = state.length; - } - from_source = state.window; - } else { - from_source = output; - from = put - state.offset; - copy = state.length; - } - if (copy > left) { - copy = left; - } - left -= copy; - state.length -= copy; - do { - output[put++] = from_source[from++]; - } while (--copy); - if (state.length === 0) { - state.mode = LEN; - } - break; - case LIT: - if (left === 0) { - break inf_leave; - } - output[put++] = state.length; - left--; - state.mode = LEN; - break; - case CHECK: - if (state.wrap) { - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold |= input[next++] << bits; - bits += 8; - } - _out -= left; - strm.total_out += _out; - state.total += _out; - if (_out) { - strm.adler = state.check = state.flags - ? crc32(state.check, output, _out, put - _out) - : adler32(state.check, output, _out, put - _out); - } - _out = left; - if ((state.flags ? hold : zswap32(hold)) !== state.check) { - strm.msg = "incorrect data check"; - state.mode = BAD; - break; - } - hold = 0; - bits = 0; - } - state.mode = LENGTH; - case LENGTH: - if (state.wrap && state.flags) { - while (bits < 32) { - if (have === 0) { - break inf_leave; - } - have--; - hold += input[next++] << bits; - bits += 8; - } - if (hold !== (state.total & 4294967295)) { - strm.msg = "incorrect length check"; - state.mode = BAD; - break; - } - hold = 0; - bits = 0; - } - state.mode = DONE; - case DONE: - ret = Z_STREAM_END; - break inf_leave; - case BAD: - ret = Z_DATA_ERROR; - break inf_leave; - case MEM: - return Z_MEM_ERROR; - case SYNC: - default: - return Z_STREAM_ERROR; - } - } - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - if (state.wsize || (_out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH))) { - if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { - state.mode = MEM; - return Z_MEM_ERROR; - } - } - _in -= strm.avail_in; - _out -= strm.avail_out; - strm.total_in += _in; - strm.total_out += _out; - state.total += _out; - if (state.wrap && _out) { - strm.adler = state.check = state.flags - ? crc32(state.check, output, _out, strm.next_out - _out) - : adler32(state.check, output, _out, strm.next_out - _out); - } - strm.data_type = - state.bits + - (state.last ? 64 : 0) + - (state.mode === TYPE ? 128 : 0) + - (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); - if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) { - ret = Z_BUF_ERROR; - } - return ret; - } - function inflateEnd(strm) { - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - var state = strm.state; - if (state.window) { - state.window = null; - } - strm.state = null; - return Z_OK; - } - function inflateGetHeader(strm, head) { - var state; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - if ((state.wrap & 2) === 0) { - return Z_STREAM_ERROR; - } - state.head = head; - head.done = false; - return Z_OK; - } - function inflateSetDictionary(strm, dictionary) { - var dictLength = dictionary.length; - var state; - var dictid; - var ret; - if (!strm || !strm.state) { - return Z_STREAM_ERROR; - } - state = strm.state; - if (state.wrap !== 0 && state.mode !== DICT) { - return Z_STREAM_ERROR; - } - if (state.mode === DICT) { - dictid = 1; - dictid = adler32(dictid, dictionary, dictLength, 0); - if (dictid !== state.check) { - return Z_DATA_ERROR; - } - } - ret = updatewindow(strm, dictionary, dictLength, dictLength); - if (ret) { - state.mode = MEM; - return Z_MEM_ERROR; - } - state.havedict = 1; - return Z_OK; - } - exports.inflateReset = inflateReset; - exports.inflateReset2 = inflateReset2; - exports.inflateResetKeep = inflateResetKeep; - exports.inflateInit = inflateInit; - exports.inflateInit2 = inflateInit2; - exports.inflate = inflate; - exports.inflateEnd = inflateEnd; - exports.inflateGetHeader = inflateGetHeader; - exports.inflateSetDictionary = inflateSetDictionary; - exports.inflateInfo = "pako inflate (from Nodeca project)"; - }, -}); - -// node_modules/pako/lib/zlib/constants.js -var require_constants = __commonJS({ - "node_modules/pako/lib/zlib/constants.js"(exports, module2) { - "use strict"; - module2.exports = { - Z_NO_FLUSH: 0, - Z_PARTIAL_FLUSH: 1, - Z_SYNC_FLUSH: 2, - Z_FULL_FLUSH: 3, - Z_FINISH: 4, - Z_BLOCK: 5, - Z_TREES: 6, - Z_OK: 0, - Z_STREAM_END: 1, - Z_NEED_DICT: 2, - Z_ERRNO: -1, - Z_STREAM_ERROR: -2, - Z_DATA_ERROR: -3, - Z_BUF_ERROR: -5, - Z_NO_COMPRESSION: 0, - Z_BEST_SPEED: 1, - Z_BEST_COMPRESSION: 9, - Z_DEFAULT_COMPRESSION: -1, - Z_FILTERED: 1, - Z_HUFFMAN_ONLY: 2, - Z_RLE: 3, - Z_FIXED: 4, - Z_DEFAULT_STRATEGY: 0, - Z_BINARY: 0, - Z_TEXT: 1, - Z_UNKNOWN: 2, - Z_DEFLATED: 8, - }; - }, -}); - -// node_modules/browserify-zlib/lib/binding.js -var require_binding = __commonJS({ - "node_modules/browserify-zlib/lib/binding.js"(exports) { - "use strict"; - var assert = require("assert"); - var Zstream = require_zstream(); - var zlib_deflate = require_deflate(); - var zlib_inflate = require_inflate(); - var constants = require_constants(); - for (key in constants) { - exports[key] = constants[key]; - } - var key; - exports.NONE = 0; - exports.DEFLATE = 1; - exports.INFLATE = 2; - exports.GZIP = 3; - exports.GUNZIP = 4; - exports.DEFLATERAW = 5; - exports.INFLATERAW = 6; - exports.UNZIP = 7; - var GZIP_HEADER_ID1 = 31; - var GZIP_HEADER_ID2 = 139; - function Zlib(mode) { - if (typeof mode !== "number" || mode < exports.DEFLATE || mode > exports.UNZIP) { - throw new TypeError("Bad argument"); - } - this.dictionary = null; - this.err = 0; - this.flush = 0; - this.init_done = false; - this.level = 0; - this.memLevel = 0; - this.mode = mode; - this.strategy = 0; - this.windowBits = 0; - this.write_in_progress = false; - this.pending_close = false; - this.gzip_id_bytes_read = 0; - } - Zlib.prototype.close = function () { - if (this.write_in_progress) { - this.pending_close = true; - return; - } - this.pending_close = false; - assert(this.init_done, "close before init"); - assert(this.mode <= exports.UNZIP); - if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) { - zlib_deflate.deflateEnd(this.strm); - } else if ( - this.mode === exports.INFLATE || - this.mode === exports.GUNZIP || - this.mode === exports.INFLATERAW || - this.mode === exports.UNZIP - ) { - zlib_inflate.inflateEnd(this.strm); - } - this.mode = exports.NONE; - this.dictionary = null; - }; - Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) { - return this._write(true, flush, input, in_off, in_len, out, out_off, out_len); - }; - Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) { - return this._write(false, flush, input, in_off, in_len, out, out_off, out_len); - }; - Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) { - assert.equal(arguments.length, 8); - assert(this.init_done, "write before init"); - assert(this.mode !== exports.NONE, "already finalized"); - assert.equal(false, this.write_in_progress, "write already in progress"); - assert.equal(false, this.pending_close, "close is pending"); - this.write_in_progress = true; - assert.equal(false, flush === void 0, "must provide flush value"); - this.write_in_progress = true; - if ( - flush !== exports.Z_NO_FLUSH && - flush !== exports.Z_PARTIAL_FLUSH && - flush !== exports.Z_SYNC_FLUSH && - flush !== exports.Z_FULL_FLUSH && - flush !== exports.Z_FINISH && - flush !== exports.Z_BLOCK - ) { - throw new Error("Invalid flush value"); - } - if (input == null) { - input = Buffer.alloc(0); - in_len = 0; - in_off = 0; - } - this.strm.avail_in = in_len; - this.strm.input = input; - this.strm.next_in = in_off; - this.strm.avail_out = out_len; - this.strm.output = out; - this.strm.next_out = out_off; - this.flush = flush; - if (!async) { - this._process(); - if (this._checkError()) { - return this._afterSync(); - } - return; - } - var self = this; - process.nextTick(function () { - self._process(); - self._after(); - }); - return this; - }; - Zlib.prototype._afterSync = function () { - var avail_out = this.strm.avail_out; - var avail_in = this.strm.avail_in; - this.write_in_progress = false; - return [avail_in, avail_out]; - }; - Zlib.prototype._process = function () { - var next_expected_header_byte = null; - switch (this.mode) { - case exports.DEFLATE: - case exports.GZIP: - case exports.DEFLATERAW: - this.err = zlib_deflate.deflate(this.strm, this.flush); - break; - case exports.UNZIP: - if (this.strm.avail_in > 0) { - next_expected_header_byte = this.strm.next_in; - } - switch (this.gzip_id_bytes_read) { - case 0: - if (next_expected_header_byte === null) { - break; - } - if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) { - this.gzip_id_bytes_read = 1; - next_expected_header_byte++; - if (this.strm.avail_in === 1) { - break; - } - } else { - this.mode = exports.INFLATE; - break; - } - case 1: - if (next_expected_header_byte === null) { - break; - } - if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) { - this.gzip_id_bytes_read = 2; - this.mode = exports.GUNZIP; - } else { - this.mode = exports.INFLATE; - } - break; - default: - throw new Error("invalid number of gzip magic number bytes read"); - } - case exports.INFLATE: - case exports.GUNZIP: - case exports.INFLATERAW: - this.err = zlib_inflate.inflate(this.strm, this.flush); - if (this.err === exports.Z_NEED_DICT && this.dictionary) { - this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary); - if (this.err === exports.Z_OK) { - this.err = zlib_inflate.inflate(this.strm, this.flush); - } else if (this.err === exports.Z_DATA_ERROR) { - this.err = exports.Z_NEED_DICT; - } - } - while ( - this.strm.avail_in > 0 && - this.mode === exports.GUNZIP && - this.err === exports.Z_STREAM_END && - this.strm.next_in[0] !== 0 - ) { - this.reset(); - this.err = zlib_inflate.inflate(this.strm, this.flush); - } - break; - default: - throw new Error("Unknown mode " + this.mode); - } - }; - Zlib.prototype._checkError = function () { - switch (this.err) { - case exports.Z_OK: - case exports.Z_BUF_ERROR: - if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) { - this._error("unexpected end of file"); - return false; - } - break; - case exports.Z_STREAM_END: - break; - case exports.Z_NEED_DICT: - if (this.dictionary == null) { - this._error("Missing dictionary"); - } else { - this._error("Bad dictionary"); - } - return false; - default: - this._error("Zlib error"); - return false; - } - return true; - }; - Zlib.prototype._after = function () { - if (!this._checkError()) { - return; - } - var avail_out = this.strm.avail_out; - var avail_in = this.strm.avail_in; - this.write_in_progress = false; - this.callback(avail_in, avail_out); - if (this.pending_close) { - this.close(); - } - }; - Zlib.prototype._error = function (message) { - if (this.strm.msg) { - message = this.strm.msg; - } - this.onerror(message, this.err); - this.write_in_progress = false; - if (this.pending_close) { - this.close(); - } - }; - Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) { - assert( - arguments.length === 4 || arguments.length === 5, - "init(windowBits, level, memLevel, strategy, [dictionary])", - ); - assert(windowBits >= 8 && windowBits <= 15, "invalid windowBits"); - assert(level >= -1 && level <= 9, "invalid compression level"); - assert(memLevel >= 1 && memLevel <= 9, "invalid memlevel"); - assert( - strategy === exports.Z_FILTERED || - strategy === exports.Z_HUFFMAN_ONLY || - strategy === exports.Z_RLE || - strategy === exports.Z_FIXED || - strategy === exports.Z_DEFAULT_STRATEGY, - "invalid strategy", - ); - this._init(level, windowBits, memLevel, strategy, dictionary); - this._setDictionary(); - }; - Zlib.prototype.params = function () { - throw new Error("deflateParams Not supported"); - }; - Zlib.prototype.reset = function () { - this._reset(); - this._setDictionary(); - }; - Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) { - this.level = level; - this.windowBits = windowBits; - this.memLevel = memLevel; - this.strategy = strategy; - this.flush = exports.Z_NO_FLUSH; - this.err = exports.Z_OK; - if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) { - this.windowBits += 16; - } - if (this.mode === exports.UNZIP) { - this.windowBits += 32; - } - if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) { - this.windowBits = -1 * this.windowBits; - } - this.strm = new Zstream(); - switch (this.mode) { - case exports.DEFLATE: - case exports.GZIP: - case exports.DEFLATERAW: - this.err = zlib_deflate.deflateInit2( - this.strm, - this.level, - exports.Z_DEFLATED, - this.windowBits, - this.memLevel, - this.strategy, - ); - break; - case exports.INFLATE: - case exports.GUNZIP: - case exports.INFLATERAW: - case exports.UNZIP: - this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits); - break; - default: - throw new Error("Unknown mode " + this.mode); - } - if (this.err !== exports.Z_OK) { - this._error("Init error"); - } - this.dictionary = dictionary; - this.write_in_progress = false; - this.init_done = true; - }; - Zlib.prototype._setDictionary = function () { - if (this.dictionary == null) { - return; - } - this.err = exports.Z_OK; - switch (this.mode) { - case exports.DEFLATE: - case exports.DEFLATERAW: - this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary); - break; - default: - break; - } - if (this.err !== exports.Z_OK) { - this._error("Failed to set dictionary"); - } - }; - Zlib.prototype._reset = function () { - this.err = exports.Z_OK; - switch (this.mode) { - case exports.DEFLATE: - case exports.DEFLATERAW: - case exports.GZIP: - this.err = zlib_deflate.deflateReset(this.strm); - break; - case exports.INFLATE: - case exports.INFLATERAW: - case exports.GUNZIP: - this.err = zlib_inflate.inflateReset(this.strm); - break; - default: - break; - } - if (this.err !== exports.Z_OK) { - this._error("Failed to reset stream"); - } - }; - exports.Zlib = Zlib; - }, -}); - -// node_modules/browserify-zlib/lib/index.js -var require_lib = __commonJS({ - "node_modules/browserify-zlib/lib/index.js"(exports) { - "use strict"; - var Buffer2 = require("buffer").Buffer; - var Transform = require("stream").Transform; - var binding = require_binding(); - var util = require("util"); - var assert = require("assert").ok; - var kMaxLength = require("buffer").kMaxLength; - var kRangeErrorMessage = - "Cannot create final Buffer. It would be larger than 0x" + kMaxLength.toString(16) + " bytes"; - binding.Z_MIN_WINDOWBITS = 8; - binding.Z_MAX_WINDOWBITS = 15; - binding.Z_DEFAULT_WINDOWBITS = 15; - binding.Z_MIN_CHUNK = 64; - binding.Z_MAX_CHUNK = Infinity; - binding.Z_DEFAULT_CHUNK = 16 * 1024; - binding.Z_MIN_MEMLEVEL = 1; - binding.Z_MAX_MEMLEVEL = 9; - binding.Z_DEFAULT_MEMLEVEL = 8; - binding.Z_MIN_LEVEL = -1; - binding.Z_MAX_LEVEL = 9; - binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION; - var bkeys = Object.keys(binding); - for (bk = 0; bk < bkeys.length; bk++) { - bkey = bkeys[bk]; - if (bkey.match(/^Z/)) { - Object.defineProperty(exports, bkey, { - enumerable: true, - value: binding[bkey], - writable: false, - }); - } - } - var bkey; - var bk; - var codes = { - Z_OK: binding.Z_OK, - Z_STREAM_END: binding.Z_STREAM_END, - Z_NEED_DICT: binding.Z_NEED_DICT, - Z_ERRNO: binding.Z_ERRNO, - Z_STREAM_ERROR: binding.Z_STREAM_ERROR, - Z_DATA_ERROR: binding.Z_DATA_ERROR, - Z_MEM_ERROR: binding.Z_MEM_ERROR, - Z_BUF_ERROR: binding.Z_BUF_ERROR, - Z_VERSION_ERROR: binding.Z_VERSION_ERROR, - }; - var ckeys = Object.keys(codes); - for (ck = 0; ck < ckeys.length; ck++) { - ckey = ckeys[ck]; - codes[codes[ckey]] = ckey; - } - var ckey; - var ck; - Object.defineProperty(exports, "codes", { - enumerable: true, - value: Object.freeze(codes), - writable: false, - }); - exports.constants = require_constants(); - exports.Deflate = Deflate; - exports.Inflate = Inflate; - exports.Gzip = Gzip; - exports.Gunzip = Gunzip; - exports.DeflateRaw = DeflateRaw; - exports.InflateRaw = InflateRaw; - exports.Unzip = Unzip; - exports.createDeflate = function (o) { - return new Deflate(o); - }; - exports.createInflate = function (o) { - return new Inflate(o); - }; - exports.createDeflateRaw = function (o) { - return new DeflateRaw(o); - }; - exports.createInflateRaw = function (o) { - return new InflateRaw(o); - }; - exports.createGzip = function (o) { - return new Gzip(o); - }; - exports.createGunzip = function (o) { - return new Gunzip(o); - }; - exports.createUnzip = function (o) { - return new Unzip(o); - }; - exports.deflate = function (buffer, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = {}; - } - return zlibBuffer(new Deflate(opts), buffer, callback); - }; - exports.deflateSync = function (buffer, opts) { - return zlibBufferSync(new Deflate(opts), buffer); - }; - exports.gzip = function (buffer, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = {}; - } - return zlibBuffer(new Gzip(opts), buffer, callback); - }; - exports.gzipSync = function (buffer, opts) { - return zlibBufferSync(new Gzip(opts), buffer); - }; - exports.deflateRaw = function (buffer, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = {}; - } - return zlibBuffer(new DeflateRaw(opts), buffer, callback); - }; - exports.deflateRawSync = function (buffer, opts) { - return zlibBufferSync(new DeflateRaw(opts), buffer); - }; - exports.unzip = function (buffer, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = {}; - } - return zlibBuffer(new Unzip(opts), buffer, callback); - }; - exports.unzipSync = function (buffer, opts) { - return zlibBufferSync(new Unzip(opts), buffer); - }; - exports.inflate = function (buffer, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = {}; - } - return zlibBuffer(new Inflate(opts), buffer, callback); - }; - exports.inflateSync = function (buffer, opts) { - return zlibBufferSync(new Inflate(opts), buffer); - }; - exports.gunzip = function (buffer, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = {}; - } - return zlibBuffer(new Gunzip(opts), buffer, callback); - }; - exports.gunzipSync = function (buffer, opts) { - return zlibBufferSync(new Gunzip(opts), buffer); - }; - exports.inflateRaw = function (buffer, opts, callback) { - if (typeof opts === "function") { - callback = opts; - opts = {}; - } - return zlibBuffer(new InflateRaw(opts), buffer, callback); - }; - exports.inflateRawSync = function (buffer, opts) { - return zlibBufferSync(new InflateRaw(opts), buffer); - }; - function zlibBuffer(engine, buffer, callback) { - var buffers = []; - var nread = 0; - engine.on("error", onError); - engine.on("end", onEnd); - engine.end(buffer); - flow(); - function flow() { - var chunk; - while (null !== (chunk = engine.read())) { - buffers.push(chunk); - nread += chunk.length; - } - engine.once("readable", flow); - } - function onError(err) { - engine.removeListener("end", onEnd); - engine.removeListener("readable", flow); - callback(err); - } - function onEnd() { - var buf; - var err = null; - if (nread >= kMaxLength) { - err = new RangeError(kRangeErrorMessage); - } else { - buf = Buffer2.concat(buffers, nread); - } - buffers = []; - engine.close(); - callback(err, buf); - } - } - function zlibBufferSync(engine, buffer) { - if (typeof buffer === "string") buffer = Buffer2.from(buffer); - if (!Buffer2.isBuffer(buffer)) throw new TypeError("Not a string or buffer"); - var flushFlag = engine._finishFlushFlag; - return engine._processChunk(buffer, flushFlag); - } - function Deflate(opts) { - if (!(this instanceof Deflate)) return new Deflate(opts); - Zlib.call(this, opts, binding.DEFLATE); - } - function Inflate(opts) { - if (!(this instanceof Inflate)) return new Inflate(opts); - Zlib.call(this, opts, binding.INFLATE); - } - function Gzip(opts) { - if (!(this instanceof Gzip)) return new Gzip(opts); - Zlib.call(this, opts, binding.GZIP); - } - function Gunzip(opts) { - if (!(this instanceof Gunzip)) return new Gunzip(opts); - Zlib.call(this, opts, binding.GUNZIP); - } - function DeflateRaw(opts) { - if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts); - Zlib.call(this, opts, binding.DEFLATERAW); - } - function InflateRaw(opts) { - if (!(this instanceof InflateRaw)) return new InflateRaw(opts); - Zlib.call(this, opts, binding.INFLATERAW); - } - function Unzip(opts) { - if (!(this instanceof Unzip)) return new Unzip(opts); - Zlib.call(this, opts, binding.UNZIP); - } - function isValidFlushFlag(flag) { - return ( - flag === binding.Z_NO_FLUSH || - flag === binding.Z_PARTIAL_FLUSH || - flag === binding.Z_SYNC_FLUSH || - flag === binding.Z_FULL_FLUSH || - flag === binding.Z_FINISH || - flag === binding.Z_BLOCK - ); - } - function Zlib(opts, mode) { - var _this = this; - this._opts = opts = opts || {}; - this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK; - Transform.call(this, opts); - if (opts.flush && !isValidFlushFlag(opts.flush)) { - throw new Error("Invalid flush flag: " + opts.flush); - } - if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) { - throw new Error("Invalid flush flag: " + opts.finishFlush); - } - this._flushFlag = opts.flush || binding.Z_NO_FLUSH; - this._finishFlushFlag = typeof opts.finishFlush !== "undefined" ? opts.finishFlush : binding.Z_FINISH; - if (opts.chunkSize) { - if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) { - throw new Error("Invalid chunk size: " + opts.chunkSize); - } - } - if (opts.windowBits) { - if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) { - throw new Error("Invalid windowBits: " + opts.windowBits); - } - } - if (opts.level) { - if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) { - throw new Error("Invalid compression level: " + opts.level); - } - } - if (opts.memLevel) { - if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) { - throw new Error("Invalid memLevel: " + opts.memLevel); - } - } - if (opts.strategy) { - if ( - opts.strategy != exports.Z_FILTERED && - opts.strategy != exports.Z_HUFFMAN_ONLY && - opts.strategy != exports.Z_RLE && - opts.strategy != exports.Z_FIXED && - opts.strategy != exports.Z_DEFAULT_STRATEGY - ) { - throw new Error("Invalid strategy: " + opts.strategy); - } - } - if (opts.dictionary) { - if (!Buffer2.isBuffer(opts.dictionary)) { - throw new Error("Invalid dictionary: it should be a Buffer instance"); - } - } - this._handle = new binding.Zlib(mode); - var self = this; - this._hadError = false; - this._handle.onerror = function (message, errno) { - _close(self); - self._hadError = true; - var error = new Error(message); - error.errno = errno; - error.code = exports.codes[errno]; - self.emit("error", error); - }; - var level = exports.Z_DEFAULT_COMPRESSION; - if (typeof opts.level === "number") level = opts.level; - var strategy = exports.Z_DEFAULT_STRATEGY; - if (typeof opts.strategy === "number") strategy = opts.strategy; - this._handle.init( - opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, - level, - opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, - strategy, - opts.dictionary, - ); - this._buffer = Buffer2.allocUnsafe(this._chunkSize); - this._offset = 0; - this._level = level; - this._strategy = strategy; - this.once("end", this.close); - Object.defineProperty(this, "_closed", { - get: function () { - return !_this._handle; - }, - configurable: true, - enumerable: true, - }); - } - util.inherits(Zlib, Transform); - Zlib.prototype.params = function (level, strategy, callback) { - if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) { - throw new RangeError("Invalid compression level: " + level); - } - if ( - strategy != exports.Z_FILTERED && - strategy != exports.Z_HUFFMAN_ONLY && - strategy != exports.Z_RLE && - strategy != exports.Z_FIXED && - strategy != exports.Z_DEFAULT_STRATEGY - ) { - throw new TypeError("Invalid strategy: " + strategy); - } - if (this._level !== level || this._strategy !== strategy) { - var self = this; - this.flush(binding.Z_SYNC_FLUSH, function () { - assert(self._handle, "zlib binding closed"); - self._handle.params(level, strategy); - if (!self._hadError) { - self._level = level; - self._strategy = strategy; - if (callback) callback(); - } - }); - } else { - process.nextTick(callback); - } - }; - Zlib.prototype.reset = function () { - assert(this._handle, "zlib binding closed"); - return this._handle.reset(); - }; - Zlib.prototype._flush = function (callback) { - this._transform(Buffer2.alloc(0), "", callback); - }; - Zlib.prototype.flush = function (kind, callback) { - var _this2 = this; - var ws = this._writableState; - if (typeof kind === "function" || (kind === void 0 && !callback)) { - callback = kind; - kind = binding.Z_FULL_FLUSH; - } - if (ws.ended) { - if (callback) process.nextTick(callback); - } else if (ws.ending) { - if (callback) this.once("end", callback); - } else if (ws.needDrain) { - if (callback) { - this.once("drain", function () { - return _this2.flush(kind, callback); - }); - } - } else { - this._flushFlag = kind; - this.write(Buffer2.alloc(0), "", callback); - } - }; - Zlib.prototype.close = function (callback) { - _close(this, callback); - process.nextTick(emitCloseNT, this); - }; - function _close(engine, callback) { - if (callback) process.nextTick(callback); - if (!engine._handle) return; - engine._handle.close(); - engine._handle = null; - } - function emitCloseNT(self) { - self.emit("close"); - } - Zlib.prototype._transform = function (chunk, encoding, cb) { - var flushFlag; - var ws = this._writableState; - var ending = ws.ending || ws.ended; - var last = ending && (!chunk || ws.length === chunk.length); - if (chunk !== null && !Buffer2.isBuffer(chunk)) return cb(new Error("invalid input")); - if (!this._handle) return cb(new Error("zlib binding closed")); - if (last) flushFlag = this._finishFlushFlag; - else { - flushFlag = this._flushFlag; - if (chunk.length >= ws.length) { - this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH; - } - } - this._processChunk(chunk, flushFlag, cb); - }; - Zlib.prototype._processChunk = function (chunk, flushFlag, cb) { - var availInBefore = chunk && chunk.length; - var availOutBefore = this._chunkSize - this._offset; - var inOff = 0; - var self = this; - var async = typeof cb === "function"; - if (!async) { - var buffers = []; - var nread = 0; - var error; - this.on("error", function (er) { - error = er; - }); - assert(this._handle, "zlib binding closed"); - do { - var res = this._handle.writeSync( - flushFlag, - chunk, - inOff, - availInBefore, - this._buffer, - this._offset, - availOutBefore, - ); - } while (!this._hadError && callback(res[0], res[1])); - if (this._hadError) { - throw error; - } - if (nread >= kMaxLength) { - _close(this); - throw new RangeError(kRangeErrorMessage); - } - var buf = Buffer2.concat(buffers, nread); - _close(this); - return buf; - } - assert(this._handle, "zlib binding closed"); - var req = this._handle.write(flushFlag, chunk, inOff, availInBefore, this._buffer, this._offset, availOutBefore); - req.buffer = chunk; - req.callback = callback; - function callback(availInAfter, availOutAfter) { - if (this) { - this.buffer = null; - this.callback = null; - } - if (self._hadError) return; - var have = availOutBefore - availOutAfter; - assert(have >= 0, "have should not go down"); - if (have > 0) { - var out = self._buffer.slice(self._offset, self._offset + have); - self._offset += have; - if (async) { - self.push(out); - } else { - buffers.push(out); - nread += out.length; - } - } - if (availOutAfter === 0 || self._offset >= self._chunkSize) { - availOutBefore = self._chunkSize; - self._offset = 0; - self._buffer = Buffer2.allocUnsafe(self._chunkSize); - } - if (availOutAfter === 0) { - inOff += availInBefore - availInAfter; - availInBefore = availInAfter; - if (!async) return true; - var newReq = self._handle.write( - flushFlag, - chunk, - inOff, - availInBefore, - self._buffer, - self._offset, - self._chunkSize, - ); - newReq.callback = callback; - newReq.buffer = chunk; - return; - } - if (!async) return false; - cb(); - } - }; - util.inherits(Deflate, Zlib); - util.inherits(Inflate, Zlib); - util.inherits(Gzip, Zlib); - util.inherits(Gunzip, Zlib); - util.inherits(DeflateRaw, Zlib); - util.inherits(InflateRaw, Zlib); - util.inherits(Unzip, Zlib); - }, -}); - -// zlib.js -var zlib_exports = require_lib(); -zlib_exports[Symbol.for("CommonJS")] = 0; -export default zlib_exports; - -export var { - Deflate, - Inflate, - Gzip, - Gunzip, - DeflateRaw, - InflateRaw, - Unzip, - createDeflate, - createInflate, - createDeflateRaw, - createInflateRaw, - createGzip, - createGunzip, - createUnzip, - deflate, - deflateSync, - gzip, - gzipSync, - deflateRaw, - deflateRawSync, - unzip, - unzipSync, - inflate, - inflateSync, - gunzip, - gunzipSync, - inflateRaw, - inflateRawSync, - constants, -} = zlib_exports; |