@fullstackdatasolutions/articles 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +233 -72
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js.map +1 -1
- package/dist/nextjs-middleware.cjs +61 -0
- package/dist/nextjs-middleware.cjs.map +1 -0
- package/dist/nextjs-middleware.d.cts +25 -0
- package/dist/nextjs-middleware.d.ts +25 -0
- package/dist/nextjs-middleware.js +33 -0
- package/dist/nextjs-middleware.js.map +1 -0
- package/dist/nextjs.cjs +692 -0
- package/dist/nextjs.cjs.map +1 -0
- package/dist/nextjs.d.cts +116 -0
- package/dist/nextjs.d.ts +116 -0
- package/dist/nextjs.js +658 -0
- package/dist/nextjs.js.map +1 -0
- package/dist/server.cjs +117 -38
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +10 -4
- package/dist/server.d.ts +10 -4
- package/dist/server.js +116 -38
- package/dist/server.js.map +1 -1
- package/package.json +11 -1
- package/src/ArticleContent.tsx +8 -3
- package/src/__tests__/ArticleContent.test.tsx +18 -2
- package/src/__tests__/markdown.test.ts +79 -3
- package/src/__tests__/nextjs-middleware.test.ts +183 -0
- package/src/__tests__/nextjs.test.ts +137 -0
- package/src/__tests__/renderMdx.test.tsx +22 -0
- package/src/__tests__/seoUtils.test.ts +102 -0
- package/src/__tests__/server-articles.test.ts +15 -1
- package/src/articlesConfig.ts +5 -0
- package/src/index.ts +1 -0
- package/src/markdown.ts +67 -8
- package/src/nextjs-middleware.ts +48 -0
- package/src/nextjs.ts +27 -0
- package/src/renderMdx.tsx +3 -2
- package/src/seoUtils.ts +54 -0
- package/src/server-articles.ts +27 -25
- package/src/server.ts +2 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// src/nextjs-middleware.ts
|
|
2
|
+
import { NextResponse } from "next/server";
|
|
3
|
+
var DEFAULT_API_BASE = "/api/articles-markdown";
|
|
4
|
+
function rewriteArticleMarkdown(request, apiBase = DEFAULT_API_BASE) {
|
|
5
|
+
const { pathname } = request.nextUrl;
|
|
6
|
+
if (pathname.startsWith("/articles/") && pathname.endsWith(".md")) {
|
|
7
|
+
const slug = pathname.slice("/articles/".length);
|
|
8
|
+
return NextResponse.rewrite(new URL(`${apiBase}/${slug}`, request.url));
|
|
9
|
+
}
|
|
10
|
+
return void 0;
|
|
11
|
+
}
|
|
12
|
+
function buildMiddleware(apiBase) {
|
|
13
|
+
return function middleware2(request) {
|
|
14
|
+
return rewriteArticleMarkdown(request, apiBase);
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
var middleware = buildMiddleware(DEFAULT_API_BASE);
|
|
18
|
+
var config = {
|
|
19
|
+
matcher: "/articles/:path*.md"
|
|
20
|
+
};
|
|
21
|
+
function createArticleMarkdownMiddleware(apiBase = DEFAULT_API_BASE) {
|
|
22
|
+
return {
|
|
23
|
+
middleware: buildMiddleware(apiBase),
|
|
24
|
+
config: { matcher: "/articles/:path*.md" }
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
config,
|
|
29
|
+
createArticleMarkdownMiddleware,
|
|
30
|
+
middleware,
|
|
31
|
+
rewriteArticleMarkdown
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=nextjs-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/nextjs-middleware.ts"],"sourcesContent":["// Next.js proxy/middleware helper — Edge runtime safe (no Node.js built-ins)\n// Import from '@fullstackdatasolutions/articles/middleware'\nimport { NextResponse } from 'next/server'\nimport type { NextRequest } from 'next/server'\n\nconst DEFAULT_API_BASE = '/api/articles-markdown'\n\n/**\n * Rewrite /articles/*.md requests to the markdown API route.\n * Returns a NextResponse rewrite if the request matches, undefined otherwise.\n *\n * Usage in proxy.ts (Next.js 16+):\n * import { rewriteArticleMarkdown } from '@fullstackdatasolutions/articles/middleware'\n * export async function proxy(request: NextRequest) {\n * return rewriteArticleMarkdown(request) ?? NextResponse.next()\n * }\n */\nexport function rewriteArticleMarkdown(\n request: NextRequest,\n apiBase = DEFAULT_API_BASE\n): NextResponse | undefined {\n const { pathname } = request.nextUrl\n if (pathname.startsWith('/articles/') && pathname.endsWith('.md')) {\n const slug = pathname.slice('/articles/'.length)\n return NextResponse.rewrite(new URL(`${apiBase}/${slug}`, request.url))\n }\n return undefined\n}\n\n// Legacy middleware.ts usage (Next.js 14/15)\nfunction buildMiddleware(apiBase: string) {\n return function middleware(request: NextRequest) {\n return rewriteArticleMarkdown(request, apiBase)\n }\n}\n\nexport const middleware = buildMiddleware(DEFAULT_API_BASE)\n\nexport const config = {\n matcher: '/articles/:path*.md',\n}\n\nexport function createArticleMarkdownMiddleware(apiBase = DEFAULT_API_BASE) {\n return {\n middleware: buildMiddleware(apiBase),\n config: { matcher: '/articles/:path*.md' },\n }\n}\n"],"mappings":";AAEA,SAAS,oBAAoB;AAG7B,IAAM,mBAAmB;AAYlB,SAAS,uBACd,SACA,UAAU,kBACgB;AAC1B,QAAM,EAAE,SAAS,IAAI,QAAQ;AAC7B,MAAI,SAAS,WAAW,YAAY,KAAK,SAAS,SAAS,KAAK,GAAG;AACjE,UAAM,OAAO,SAAS,MAAM,aAAa,MAAM;AAC/C,WAAO,aAAa,QAAQ,IAAI,IAAI,GAAG,OAAO,IAAI,IAAI,IAAI,QAAQ,GAAG,CAAC;AAAA,EACxE;AACA,SAAO;AACT;AAGA,SAAS,gBAAgB,SAAiB;AACxC,SAAO,SAASA,YAAW,SAAsB;AAC/C,WAAO,uBAAuB,SAAS,OAAO;AAAA,EAChD;AACF;AAEO,IAAM,aAAa,gBAAgB,gBAAgB;AAEnD,IAAM,SAAS;AAAA,EACpB,SAAS;AACX;AAEO,SAAS,gCAAgC,UAAU,kBAAkB;AAC1E,SAAO;AAAA,IACL,YAAY,gBAAgB,OAAO;AAAA,IACnC,QAAQ,EAAE,SAAS,sBAAsB;AAAA,EAC3C;AACF;","names":["middleware"]}
|