feat(blog): add file-based blog with dynamic slugs, MDX content and layout shell
- Introduced blog routing using Next.js App Router - Implemented dynamic [slug] pages for blog posts - Added MDX-based content loading via lib/posts - Integrated shared TopBar layout with navigation - Established clear content, lib and component separation
This commit is contained in:
124
apps/public-web/node_modules/next/dist/server/base-http/web.js
generated
vendored
Normal file
124
apps/public-web/node_modules/next/dist/server/base-http/web.js
generated
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
"use strict";
|
||||
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
|
||||
Reference in New Issue
Block a user