Spaces:
Running
Running
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| 0 && (module.exports = { | |
| WebNextRequest: null, | |
| WebNextResponse: null | |
| }); | |
| function _export(target, all) { | |
| for(var name in all)Object.defineProperty(target, name, { | |
| enumerable: true, | |
| get: all[name] | |
| }); | |
| } | |
| _export(exports, { | |
| WebNextRequest: function() { | |
| return WebNextRequest; | |
| }, | |
| WebNextResponse: function() { | |
| return WebNextResponse; | |
| } | |
| }); | |
| const _utils = require("../web/utils"); | |
| const _index = require("./index"); | |
| const _detachedpromise = require("../../lib/detached-promise"); | |
| const _webonclose = require("../web/web-on-close"); | |
| const _invarianterror = require("../../shared/lib/invariant-error"); | |
| class WebNextRequest extends _index.BaseNextRequest { | |
| constructor(request){ | |
| const url = new URL(request.url); | |
| super(request.method, url.href.slice(url.origin.length), request.clone().body); | |
| this.request = request; | |
| this.fetchMetrics = request.fetchMetrics; | |
| this.headers = {}; | |
| for (const [name, value] of request.headers.entries()){ | |
| this.headers[name] = value; | |
| } | |
| } | |
| async parseBody(_limit) { | |
| throw Object.defineProperty(new Error('parseBody is not implemented in the web runtime'), "__NEXT_ERROR_CODE", { | |
| value: "E213", | |
| enumerable: false, | |
| configurable: true | |
| }); | |
| } | |
| } | |
| class WebNextResponse extends _index.BaseNextResponse { | |
| constructor(transformStream = new TransformStream()){ | |
| super(transformStream.writable), this.transformStream = transformStream, this.headers = new Headers(), this.textBody = undefined, this.closeController = new _webonclose.CloseController(), this.sendPromise = new _detachedpromise.DetachedPromise(), this._sent = false; | |
| } | |
| setHeader(name, value) { | |
| this.headers.delete(name); | |
| for (const val of Array.isArray(value) ? value : [ | |
| value | |
| ]){ | |
| this.headers.append(name, val); | |
| } | |
| return this; | |
| } | |
| removeHeader(name) { | |
| this.headers.delete(name); | |
| return this; | |
| } | |
| getHeaderValues(name) { | |
| var _this_getHeader; | |
| // https://developer.mozilla.org/docs/Web/API/Headers/get#example | |
| return (_this_getHeader = this.getHeader(name)) == null ? void 0 : _this_getHeader.split(',').map((v)=>v.trimStart()); | |
| } | |
| getHeader(name) { | |
| return this.headers.get(name) ?? undefined; | |
| } | |
| getHeaders() { | |
| return (0, _utils.toNodeOutgoingHttpHeaders)(this.headers); | |
| } | |
| hasHeader(name) { | |
| return this.headers.has(name); | |
| } | |
| appendHeader(name, value) { | |
| this.headers.append(name, value); | |
| return this; | |
| } | |
| body(value) { | |
| this.textBody = value; | |
| return this; | |
| } | |
| send() { | |
| this.sendPromise.resolve(); | |
| this._sent = true; | |
| } | |
| get sent() { | |
| return this._sent; | |
| } | |
| async toResponse() { | |
| // If we haven't called `send` yet, wait for it to be called. | |
| if (!this.sent) await this.sendPromise.promise; | |
| const body = this.textBody ?? this.transformStream.readable; | |
| let bodyInit = body; | |
| // if the response is streaming, onClose() can still be called after this point. | |
| const canAddListenersLater = typeof bodyInit !== 'string'; | |
| const shouldTrackBody = canAddListenersLater ? true : this.closeController.listeners > 0; | |
| if (shouldTrackBody) { | |
| bodyInit = (0, _webonclose.trackBodyConsumed)(body, ()=>{ | |
| this.closeController.dispatchClose(); | |
| }); | |
| } | |
| return new Response(bodyInit, { | |
| headers: this.headers, | |
| status: this.statusCode, | |
| statusText: this.statusMessage | |
| }); | |
| } | |
| onClose(callback) { | |
| if (this.closeController.isClosed) { | |
| throw Object.defineProperty(new _invarianterror.InvariantError('Cannot call onClose on a WebNextResponse that is already closed'), "__NEXT_ERROR_CODE", { | |
| value: "E599", | |
| enumerable: false, | |
| configurable: true | |
| }); | |
| } | |
| return this.closeController.onClose(callback); | |
| } | |
| } | |
| //# sourceMappingURL=web.js.map |