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:
1
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.compiled.d.ts
generated
vendored
Normal file
1
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.compiled.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export * from './module'
|
||||
20
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.compiled.js
generated
vendored
Normal file
20
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.compiled.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
if (process.env.NEXT_RUNTIME === 'edge') {
|
||||
module.exports = require('next/dist/server/route-modules/pages-api/module.js');
|
||||
} else {
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
if (process.env.TURBOPACK) {
|
||||
module.exports = require('next/dist/compiled/next-server/pages-api-turbo.runtime.dev.js');
|
||||
} else {
|
||||
module.exports = require('next/dist/compiled/next-server/pages-api.runtime.dev.js');
|
||||
}
|
||||
} else {
|
||||
if (process.env.TURBOPACK) {
|
||||
module.exports = require('next/dist/compiled/next-server/pages-api-turbo.runtime.prod.js');
|
||||
} else {
|
||||
module.exports = require('next/dist/compiled/next-server/pages-api.runtime.prod.js');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=module.compiled.js.map
|
||||
1
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.compiled.js.map
generated
vendored
Normal file
1
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.compiled.js.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../../src/server/route-modules/pages-api/module.compiled.js"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/pages-api/module.js')\n} else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/pages-api-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/pages-api.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/pages-api-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/pages-api.runtime.prod.js')\n }\n }\n}\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","NODE_ENV","TURBOPACK"],"mappings":";AAAA,IAAIA,QAAQC,GAAG,CAACC,YAAY,KAAK,QAAQ;IACvCC,OAAOC,OAAO,GAAGC,QAAQ;AAC3B,OAAO;IACL,IAAIL,QAAQC,GAAG,CAACK,QAAQ,KAAK,eAAe;QAC1C,IAAIN,QAAQC,GAAG,CAACM,SAAS,EAAE;YACzBJ,OAAOC,OAAO,GAAGC,QAAQ;QAC3B,OAAO;YACLF,OAAOC,OAAO,GAAGC,QAAQ;QAC3B;IACF,OAAO;QACL,IAAIL,QAAQC,GAAG,CAACM,SAAS,EAAE;YACzBJ,OAAOC,OAAO,GAAGC,QAAQ;QAC3B,OAAO;YACLF,OAAOC,OAAO,GAAGC,QAAQ;QAC3B;IACF;AACF","ignoreList":[0]}
|
||||
94
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.d.ts
generated
vendored
Normal file
94
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.d.ts
generated
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
import type { IncomingMessage, ServerResponse } from 'http';
|
||||
import type { PagesAPIRouteDefinition } from '../../route-definitions/pages-api-route-definition';
|
||||
import type { PageConfig } from '../../../types';
|
||||
import type { ParsedUrlQuery } from 'querystring';
|
||||
import { type __ApiPreviewProps } from '../../api-utils';
|
||||
import type { RouteModuleOptions } from '../route-module';
|
||||
import { RouteModule, type RouteModuleHandleContext } from '../route-module';
|
||||
import { apiResolver } from '../../api-utils/node/api-resolver';
|
||||
import type { RevalidateFn } from '../../lib/router-utils/router-server-context';
|
||||
type PagesAPIHandleFn = (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
||||
/**
|
||||
* The PagesAPIModule is the type of the module exported by the bundled Pages
|
||||
* API module.
|
||||
*/
|
||||
export type PagesAPIModule = typeof import('../../../build/templates/pages-api');
|
||||
type PagesAPIUserlandModule = {
|
||||
/**
|
||||
* The exported handler method.
|
||||
*/
|
||||
readonly default: PagesAPIHandleFn;
|
||||
/**
|
||||
* The exported page config.
|
||||
*/
|
||||
readonly config?: PageConfig;
|
||||
};
|
||||
type PagesAPIRouteHandlerContext = RouteModuleHandleContext & {
|
||||
/**
|
||||
* The incoming server request in non-edge runtime.
|
||||
*/
|
||||
req?: IncomingMessage;
|
||||
/**
|
||||
* The outgoing server response in non-edge runtime.
|
||||
*/
|
||||
res?: ServerResponse;
|
||||
/**
|
||||
* The hostname for the request.
|
||||
*/
|
||||
hostname?: string;
|
||||
/**
|
||||
* Keys allowed in the revalidate call.
|
||||
*/
|
||||
allowedRevalidateHeaderKeys?: string[];
|
||||
/**
|
||||
* Whether to trust the host header.
|
||||
*/
|
||||
trustHostHeader?: boolean;
|
||||
/**
|
||||
* The query for the request.
|
||||
*/
|
||||
query: ParsedUrlQuery;
|
||||
/**
|
||||
* The preview props used by the `preview` API.
|
||||
*/
|
||||
previewProps: __ApiPreviewProps;
|
||||
/**
|
||||
* True if the server is in development mode.
|
||||
*/
|
||||
dev: boolean;
|
||||
/**
|
||||
* Whether errors should be left uncaught to handle
|
||||
* higher up
|
||||
*/
|
||||
propagateError: boolean;
|
||||
/**
|
||||
* The page that's being rendered.
|
||||
*/
|
||||
page: string;
|
||||
/**
|
||||
* The error handler for the request.
|
||||
*/
|
||||
onError?: Parameters<typeof apiResolver>[8];
|
||||
/**
|
||||
* whether multi-zone flag is enabled for draft mode
|
||||
*/
|
||||
multiZoneDraftMode?: boolean;
|
||||
/**
|
||||
* Internal revalidate function to avoid revalidating
|
||||
* over the network
|
||||
*/
|
||||
internalRevalidate?: RevalidateFn;
|
||||
};
|
||||
export type PagesAPIRouteModuleOptions = RouteModuleOptions<PagesAPIRouteDefinition, PagesAPIUserlandModule>;
|
||||
export declare class PagesAPIRouteModule extends RouteModule<PagesAPIRouteDefinition, PagesAPIUserlandModule> {
|
||||
private apiResolverWrapped;
|
||||
constructor(options: PagesAPIRouteModuleOptions);
|
||||
/**
|
||||
*
|
||||
* @param req the incoming server request
|
||||
* @param res the outgoing server response
|
||||
* @param context the context for the render
|
||||
*/
|
||||
render(req: IncomingMessage, res: ServerResponse, context: PagesAPIRouteHandlerContext): Promise<void>;
|
||||
}
|
||||
export default PagesAPIRouteModule;
|
||||
58
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.js
generated
vendored
Normal file
58
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
0 && (module.exports = {
|
||||
PagesAPIRouteModule: null,
|
||||
default: null
|
||||
});
|
||||
function _export(target, all) {
|
||||
for(var name in all)Object.defineProperty(target, name, {
|
||||
enumerable: true,
|
||||
get: all[name]
|
||||
});
|
||||
}
|
||||
_export(exports, {
|
||||
PagesAPIRouteModule: function() {
|
||||
return PagesAPIRouteModule;
|
||||
},
|
||||
default: function() {
|
||||
return _default;
|
||||
}
|
||||
});
|
||||
const _apiutils = require("../../api-utils");
|
||||
const _routemodule = require("../route-module");
|
||||
const _apiresolver = require("../../api-utils/node/api-resolver");
|
||||
class PagesAPIRouteModule extends _routemodule.RouteModule {
|
||||
constructor(options){
|
||||
super(options);
|
||||
if (typeof options.userland.default !== 'function') {
|
||||
throw Object.defineProperty(new Error(`Page ${options.definition.page} does not export a default function.`), "__NEXT_ERROR_CODE", {
|
||||
value: "E379",
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
this.apiResolverWrapped = (0, _apiutils.wrapApiHandler)(options.definition.page, _apiresolver.apiResolver);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param req the incoming server request
|
||||
* @param res the outgoing server response
|
||||
* @param context the context for the render
|
||||
*/ async render(req, res, context) {
|
||||
const { apiResolverWrapped } = this;
|
||||
await apiResolverWrapped(req, res, context.query, this.userland, {
|
||||
...context.previewProps,
|
||||
trustHostHeader: context.trustHostHeader,
|
||||
allowedRevalidateHeaderKeys: context.allowedRevalidateHeaderKeys,
|
||||
hostname: context.hostname,
|
||||
multiZoneDraftMode: context.multiZoneDraftMode,
|
||||
dev: context.dev,
|
||||
internalRevalidate: context.internalRevalidate
|
||||
}, context.propagateError, context.dev, context.page, context.onError);
|
||||
}
|
||||
}
|
||||
const _default = PagesAPIRouteModule;
|
||||
|
||||
//# sourceMappingURL=module.js.map
|
||||
1
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.js.map
generated
vendored
Normal file
1
apps/public-web/node_modules/next/dist/server/route-modules/pages-api/module.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user