"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = require("stream"); const DEFAULT_STATUS_CODE = 200; class IncomingMessageLike extends stream_1.Readable { constructor(init = {}) { super(); const { headers, trailers, statusCode, body } = this._initOptions(init); this.headers = headers; this.trailers = trailers; this.statusCode = statusCode; this._body = this._initBody(body); } _initOptions(init) { return { headers: Object.assign({}, init.headers), trailers: Object.assign({}, init.trailers), statusCode: init.statusCode || DEFAULT_STATUS_CODE, body: init.body || Buffer.alloc(0), }; } _initBody(body) { if (!body) return Buffer.alloc(0); else if (body instanceof Buffer) return body; const bodyStr = typeof body === 'object' ? JSON.stringify(body) : String(body); return Buffer.from(bodyStr); } _read() { this.push(this._body); this._body = null; } setBody(value) { this._body = value; } getBody() { return this._body; } static createFrom(res) { const { headers = {}, trailers, statusCode } = res; return new IncomingMessageLike({ headers, trailers, statusCode, }); } static isIncomingMessageLike(obj) { return obj instanceof IncomingMessageLike; } } exports.default = IncomingMessageLike;module.exports = exports.default;