@noxion/adapter-nextjs 0.1.1 → 0.3.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/dist/index.d.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  export { generateNoxionMetadata, generateNoxionListMetadata } from "./metadata";
2
2
  export { generateNoxionSitemap } from "./sitemap";
3
3
  export { generateNoxionRobots } from "./robots";
4
- export { generateBlogPostingLD, generateBreadcrumbLD, generateWebSiteLD, generateCollectionPageLD } from "./structured-data";
4
+ export { generateBlogPostingLD, generateTechArticleLD, generateCreativeWorkLD, generatePageLD, generateBreadcrumbLD, generateWebSiteLD, generateCollectionPageLD } from "./structured-data";
5
5
  export type { JsonLd } from "./structured-data";
6
6
  export { generateNoxionStaticParams } from "./static-params";
7
+ export { generateNoxionRoutes, resolvePageType, buildPageUrl, generateStaticParamsForRoute } from "./routes";
8
+ export type { NoxionRouteConfig } from "./routes";
7
9
  export { createRevalidateHandler } from "./revalidate";
8
10
  export type { RevalidateHandlerOptions } from "./revalidate";
11
+ export { createNotionWebhookHandler } from "./notion-webhook";
12
+ export type { NotionWebhookHandlerOptions } from "./notion-webhook";
9
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7H,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC5L,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAC7G,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,YAAY,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  export { generateNoxionMetadata, generateNoxionListMetadata } from "./metadata";
2
2
  export { generateNoxionSitemap } from "./sitemap";
3
3
  export { generateNoxionRobots } from "./robots";
4
- export { generateBlogPostingLD, generateBreadcrumbLD, generateWebSiteLD, generateCollectionPageLD } from "./structured-data";
4
+ export { generateBlogPostingLD, generateTechArticleLD, generateCreativeWorkLD, generatePageLD, generateBreadcrumbLD, generateWebSiteLD, generateCollectionPageLD } from "./structured-data";
5
5
  export { generateNoxionStaticParams } from "./static-params";
6
+ export { generateNoxionRoutes, resolvePageType, buildPageUrl, generateStaticParamsForRoute } from "./routes";
6
7
  export { createRevalidateHandler } from "./revalidate";
8
+ export { createNotionWebhookHandler } from "./notion-webhook";
7
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7H,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE5L,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAE7G,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Metadata } from "next";
2
- import type { BlogPost, NoxionConfig } from "@noxion/core";
3
- export declare function generateNoxionMetadata(post: BlogPost, config: NoxionConfig): Metadata;
2
+ import type { NoxionPage, NoxionConfig } from "@noxion/core";
3
+ export declare function generateNoxionMetadata(page: NoxionPage, config: NoxionConfig, registry?: import("@noxion/core").PageTypeRegistry): Metadata;
4
4
  export declare function generateNoxionListMetadata(config: NoxionConfig): Metadata;
5
5
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAY3D,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,YAAY,GACnB,QAAQ,CAgEV;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,CAyCzE"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAsB7D,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,OAAO,cAAc,EAAE,gBAAgB,GACjD,QAAQ,CA+EV;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,CAyCzE"}
package/dist/metadata.js CHANGED
@@ -3,39 +3,59 @@ function truncate(text, maxLength) {
3
3
  return text;
4
4
  return text.slice(0, maxLength - 1).trimEnd() + "…";
5
5
  }
6
- function buildDescription(post, config) {
7
- if (post.description)
8
- return truncate(post.description, 160);
9
- return truncate(`${post.title} - ${config.name}`, 160);
6
+ function buildDescription(page, config) {
7
+ if (page.description)
8
+ return truncate(page.description, 160);
9
+ return truncate(`${page.title} - ${config.name}`, 160);
10
10
  }
11
- export function generateNoxionMetadata(post, config) {
12
- const title = `${post.title} | ${config.name}`;
13
- const description = buildDescription(post, config);
14
- const url = `https://${config.domain}/${post.slug}`;
11
+ function getMetaString(page, key) {
12
+ const val = page.metadata[key];
13
+ return typeof val === "string" ? val : undefined;
14
+ }
15
+ function getMetaStringArray(page, key) {
16
+ const val = page.metadata[key];
17
+ return Array.isArray(val) ? val.filter((v) => typeof v === "string") : [];
18
+ }
19
+ export function generateNoxionMetadata(page, config, registry) {
20
+ const title = `${page.title} | ${config.name}`;
21
+ const description = buildDescription(page, config);
22
+ const url = `https://${config.domain}/${page.slug}`;
23
+ const date = getMetaString(page, "date");
24
+ const author = getMetaString(page, "author") ?? config.author;
25
+ const category = getMetaString(page, "category");
26
+ const tags = getMetaStringArray(page, "tags");
27
+ let isArticle = page.pageType === "blog";
28
+ if (registry) {
29
+ const definition = registry.get(page.pageType);
30
+ if (definition?.metadataConfig?.openGraphType) {
31
+ isArticle = definition.metadataConfig.openGraphType === "article";
32
+ }
33
+ }
34
+ const isBlog = isArticle;
15
35
  const metadata = {
16
36
  title,
17
37
  description,
18
- authors: [{ name: post.author ?? config.author }],
38
+ authors: [{ name: author }],
19
39
  openGraph: {
20
- title: post.title,
40
+ title: page.title,
21
41
  description,
22
- type: "article",
42
+ type: isBlog ? "article" : "website",
23
43
  url,
24
44
  siteName: config.name,
25
45
  locale: config.language === "ko" ? "ko_KR" : config.language === "ja" ? "ja_JP" : "en_US",
26
- publishedTime: post.date ? new Date(post.date).toISOString() : undefined,
27
- modifiedTime: post.lastEditedTime,
28
- authors: [post.author ?? config.author],
29
- section: post.category ?? undefined,
30
- tags: post.tags.length > 0 ? post.tags : undefined,
31
- ...(post.coverImage
46
+ ...(isBlog && date ? { publishedTime: new Date(date).toISOString() } : {}),
47
+ ...(isBlog ? { modifiedTime: page.lastEditedTime } : {}),
48
+ ...(isBlog ? { authors: [author] } : {}),
49
+ ...(category ? { section: category } : {}),
50
+ ...(tags.length > 0 ? { tags } : {}),
51
+ ...(page.coverImage
32
52
  ? {
33
53
  images: [
34
54
  {
35
- url: post.coverImage,
55
+ url: page.coverImage,
36
56
  width: 1200,
37
57
  height: 630,
38
- alt: post.title,
58
+ alt: page.title,
39
59
  },
40
60
  ],
41
61
  }
@@ -43,14 +63,14 @@ export function generateNoxionMetadata(post, config) {
43
63
  },
44
64
  twitter: {
45
65
  card: "summary_large_image",
46
- title: post.title,
66
+ title: page.title,
47
67
  description,
48
- ...(post.coverImage
68
+ ...(page.coverImage
49
69
  ? {
50
70
  images: [
51
71
  {
52
- url: post.coverImage,
53
- alt: post.title,
72
+ url: page.coverImage,
73
+ alt: page.title,
54
74
  },
55
75
  ],
56
76
  }
@@ -60,12 +80,12 @@ export function generateNoxionMetadata(post, config) {
60
80
  canonical: url,
61
81
  },
62
82
  other: {
63
- "article:published_time": post.date ? new Date(post.date).toISOString() : "",
64
- "article:modified_time": post.lastEditedTime,
65
- "article:author": post.author ?? config.author,
66
- ...(post.category ? { "article:section": post.category } : {}),
67
- ...(post.tags.length > 0
68
- ? Object.fromEntries(post.tags.map((tag, i) => [`article:tag:${i}`, tag]))
83
+ ...(isBlog && date ? { "article:published_time": new Date(date).toISOString() } : {}),
84
+ ...(isBlog ? { "article:modified_time": page.lastEditedTime } : {}),
85
+ ...(isBlog ? { "article:author": author } : {}),
86
+ ...(category ? { "article:section": category } : {}),
87
+ ...(tags.length > 0
88
+ ? Object.fromEntries(tags.map((tag, i) => [`article:tag:${i}`, tag]))
69
89
  : {}),
70
90
  },
71
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { NoxionConfig } from "@noxion/core";
2
+ export interface NotionWebhookHandlerOptions {
3
+ config: NoxionConfig;
4
+ revalidatePath: (path: string) => void;
5
+ /**
6
+ * Webhook verification token from Notion for HMAC-SHA256 signature validation.
7
+ * Falls back to `NOTION_WEBHOOK_SECRET` environment variable.
8
+ */
9
+ webhookSecret?: string;
10
+ }
11
+ /**
12
+ * Creates a Next.js route handler that receives Notion Integration Webhooks
13
+ * and triggers on-demand ISR revalidation.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * // app/api/notion-webhook/route.ts
18
+ * import { revalidatePath } from "next/cache";
19
+ * import { createNotionWebhookHandler } from "@noxion/adapter-nextjs";
20
+ * import { siteConfig } from "../../../lib/config";
21
+ *
22
+ * const handler = createNotionWebhookHandler({
23
+ * config: siteConfig,
24
+ * revalidatePath,
25
+ * });
26
+ *
27
+ * export async function POST(request: Request) {
28
+ * return handler(request);
29
+ * }
30
+ * ```
31
+ */
32
+ export declare function createNotionWebhookHandler(options: NotionWebhookHandlerOptions): (request: Request) => Promise<Response>;
33
+ //# sourceMappingURL=notion-webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notion-webhook.d.ts","sourceRoot":"","sources":["../src/notion-webhook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAiCjD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAiCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,IAMN,SAAS,OAAO,uBAsD/C"}
@@ -0,0 +1,90 @@
1
+ import { createHmac, timingSafeEqual } from "node:crypto";
2
+ const HANDLED_EVENTS = [
3
+ "page.properties_updated",
4
+ "page.content_updated",
5
+ "page.created",
6
+ "page.deleted",
7
+ "page.undeleted",
8
+ ];
9
+ function verifySignature(rawBody, signatureHeader, secret) {
10
+ const calculated = `sha256=${createHmac("sha256", secret).update(rawBody).digest("hex")}`;
11
+ try {
12
+ return timingSafeEqual(Buffer.from(calculated), Buffer.from(signatureHeader));
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ function json(data, status = 200) {
19
+ return new Response(JSON.stringify(data), {
20
+ status,
21
+ headers: { "Content-Type": "application/json" },
22
+ });
23
+ }
24
+ /**
25
+ * Creates a Next.js route handler that receives Notion Integration Webhooks
26
+ * and triggers on-demand ISR revalidation.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * // app/api/notion-webhook/route.ts
31
+ * import { revalidatePath } from "next/cache";
32
+ * import { createNotionWebhookHandler } from "@noxion/adapter-nextjs";
33
+ * import { siteConfig } from "../../../lib/config";
34
+ *
35
+ * const handler = createNotionWebhookHandler({
36
+ * config: siteConfig,
37
+ * revalidatePath,
38
+ * });
39
+ *
40
+ * export async function POST(request: Request) {
41
+ * return handler(request);
42
+ * }
43
+ * ```
44
+ */
45
+ export function createNotionWebhookHandler(options) {
46
+ const { revalidatePath } = options;
47
+ const secret = options.webhookSecret ?? process.env.NOTION_WEBHOOK_SECRET;
48
+ return async function handler(request) {
49
+ const rawBody = await request.text();
50
+ let payload;
51
+ try {
52
+ payload = JSON.parse(rawBody);
53
+ }
54
+ catch {
55
+ return json({ error: "Invalid JSON" }, 400);
56
+ }
57
+ // --- Verification handshake (one-time during subscription setup) ---
58
+ if (payload.verification_token) {
59
+ console.log("[noxion] Notion webhook verification token received:", payload.verification_token);
60
+ return json({
61
+ message: "Verification token received. Paste this token in your Notion integration settings to complete verification.",
62
+ verification_token: payload.verification_token,
63
+ });
64
+ }
65
+ // --- HMAC-SHA256 signature validation ---
66
+ if (secret) {
67
+ const signature = request.headers.get("x-notion-signature");
68
+ if (!signature || !verifySignature(rawBody, signature, secret)) {
69
+ return json({ error: "Invalid signature" }, 401);
70
+ }
71
+ }
72
+ // --- Event routing ---
73
+ const { type: eventType, entity } = payload;
74
+ const entityId = entity?.id;
75
+ if (entity?.type !== "page") {
76
+ return json({ skipped: true, reason: `Unhandled entity type: ${entity?.type}` });
77
+ }
78
+ if (!HANDLED_EVENTS.includes(eventType)) {
79
+ return json({ skipped: true, reason: `Unhandled event type: ${eventType}` });
80
+ }
81
+ revalidatePath("/");
82
+ revalidatePath("/tag/[tag]");
83
+ console.log(`[noxion] Webhook: ${eventType} for page ${entityId}` +
84
+ (payload.data?.updated_properties
85
+ ? ` (properties: ${payload.data.updated_properties.map((p) => p.name).join(", ")})`
86
+ : ""));
87
+ return json({ revalidated: true, event: eventType, entityId });
88
+ };
89
+ }
90
+ //# sourceMappingURL=notion-webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notion-webhook.js","sourceRoot":"","sources":["../src/notion-webhook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { NoxionPage, NoxionConfig } from "@noxion/core";
2
+ export interface NoxionRouteConfig {
3
+ pageType: string;
4
+ pathPrefix: string;
5
+ paramName: string;
6
+ }
7
+ export declare function generateNoxionRoutes(config: NoxionConfig): NoxionRouteConfig[];
8
+ export declare function resolvePageType(path: string, routes: NoxionRouteConfig[]): NoxionRouteConfig | undefined;
9
+ export declare function buildPageUrl(page: NoxionPage, routes: NoxionRouteConfig[]): string;
10
+ export declare function generateStaticParamsForRoute(pages: NoxionPage[], route: NoxionRouteConfig): {
11
+ slug: string;
12
+ }[];
13
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GACnB,iBAAiB,EAAE,CAerB;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EAAE,GAC1B,iBAAiB,GAAG,SAAS,CAkB/B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,iBAAiB,EAAE,GAC1B,MAAM,CASR;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,UAAU,EAAE,EACnB,KAAK,EAAE,iBAAiB,GACvB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAIpB"}
package/dist/routes.js ADDED
@@ -0,0 +1,49 @@
1
+ const DEFAULT_ROUTE_CONFIGS = {
2
+ blog: { pageType: "blog", pathPrefix: "", paramName: "slug" },
3
+ docs: { pageType: "docs", pathPrefix: "/docs", paramName: "slug" },
4
+ portfolio: { pageType: "portfolio", pathPrefix: "/projects", paramName: "slug" },
5
+ };
6
+ export function generateNoxionRoutes(config) {
7
+ const collections = config.collections;
8
+ if (!collections || collections.length === 0) {
9
+ return [DEFAULT_ROUTE_CONFIGS.blog];
10
+ }
11
+ return collections.map((col) => {
12
+ const defaultRoute = DEFAULT_ROUTE_CONFIGS[col.pageType];
13
+ return {
14
+ pageType: col.pageType,
15
+ pathPrefix: col.pathPrefix ?? defaultRoute?.pathPrefix ?? `/${col.pageType}`,
16
+ paramName: "slug",
17
+ };
18
+ });
19
+ }
20
+ export function resolvePageType(path, routes) {
21
+ const normalized = path.startsWith("/") ? path : `/${path}`;
22
+ const sorted = [...routes].sort((a, b) => b.pathPrefix.length - a.pathPrefix.length);
23
+ for (const route of sorted) {
24
+ if (route.pathPrefix === "") {
25
+ continue;
26
+ }
27
+ if (normalized.startsWith(route.pathPrefix + "/") || normalized === route.pathPrefix) {
28
+ return route;
29
+ }
30
+ }
31
+ const defaultRoute = routes.find((r) => r.pathPrefix === "");
32
+ return defaultRoute;
33
+ }
34
+ export function buildPageUrl(page, routes) {
35
+ const route = routes.find((r) => r.pageType === page.pageType);
36
+ if (!route) {
37
+ return `/${page.slug}`;
38
+ }
39
+ if (route.pathPrefix === "") {
40
+ return `/${page.slug}`;
41
+ }
42
+ return `${route.pathPrefix}/${page.slug}`;
43
+ }
44
+ export function generateStaticParamsForRoute(pages, route) {
45
+ return pages
46
+ .filter((p) => p.pageType === route.pageType)
47
+ .map((p) => ({ slug: p.slug }));
48
+ }
49
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
package/dist/sitemap.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import type { MetadataRoute } from "next";
2
- import type { BlogPost, NoxionConfig } from "@noxion/core";
3
- export declare function generateNoxionSitemap(posts: BlogPost[], config: NoxionConfig): MetadataRoute.Sitemap;
2
+ import type { NoxionPage, NoxionConfig } from "@noxion/core";
3
+ export declare function generateNoxionSitemap(pages: NoxionPage[], config: NoxionConfig, routePrefix?: Record<string, string>): MetadataRoute.Sitemap;
4
4
  //# sourceMappingURL=sitemap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../src/sitemap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE3D,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,YAAY,GACnB,aAAa,CAAC,OAAO,CAsCvB"}
1
+ {"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../src/sitemap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA0C7D,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EAAE,EACnB,MAAM,EAAE,YAAY,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,aAAa,CAAC,OAAO,CAyCvB"}
package/dist/sitemap.js CHANGED
@@ -1,4 +1,39 @@
1
- export function generateNoxionSitemap(posts, config) {
1
+ function getPageUrl(page, baseUrl, routePrefix) {
2
+ const prefix = routePrefix?.[page.pageType] ?? "";
3
+ if (prefix) {
4
+ return `${baseUrl}${prefix}/${page.slug}`;
5
+ }
6
+ return `${baseUrl}/${page.slug}`;
7
+ }
8
+ function getPriority(pageType, registry) {
9
+ if (registry) {
10
+ const definition = registry.get(pageType);
11
+ if (definition?.sitemapConfig?.priority !== undefined) {
12
+ return definition.sitemapConfig.priority;
13
+ }
14
+ }
15
+ switch (pageType) {
16
+ case "blog": return 0.8;
17
+ case "docs": return 0.7;
18
+ case "portfolio": return 0.6;
19
+ default: return 0.5;
20
+ }
21
+ }
22
+ function getChangeFrequency(pageType, registry) {
23
+ if (registry) {
24
+ const definition = registry.get(pageType);
25
+ if (definition?.sitemapConfig?.changefreq) {
26
+ return definition.sitemapConfig.changefreq;
27
+ }
28
+ }
29
+ switch (pageType) {
30
+ case "blog": return "weekly";
31
+ case "docs": return "weekly";
32
+ case "portfolio": return "monthly";
33
+ default: return "weekly";
34
+ }
35
+ }
36
+ export function generateNoxionSitemap(pages, config, routePrefix) {
2
37
  const baseUrl = `https://${config.domain}`;
3
38
  const entries = [
4
39
  {
@@ -8,18 +43,22 @@ export function generateNoxionSitemap(posts, config) {
8
43
  priority: 1,
9
44
  },
10
45
  ];
11
- for (const post of posts) {
46
+ for (const page of pages) {
12
47
  entries.push({
13
- url: `${baseUrl}/${post.slug}`,
14
- lastModified: new Date(post.lastEditedTime),
15
- changeFrequency: "weekly",
16
- priority: 0.8,
48
+ url: getPageUrl(page, baseUrl, routePrefix),
49
+ lastModified: new Date(page.lastEditedTime),
50
+ changeFrequency: getChangeFrequency(page.pageType),
51
+ priority: getPriority(page.pageType),
17
52
  });
18
53
  }
19
54
  const tagSet = new Set();
20
- for (const post of posts) {
21
- for (const tag of post.tags) {
22
- tagSet.add(tag);
55
+ for (const page of pages) {
56
+ const tags = page.metadata.tags;
57
+ if (Array.isArray(tags)) {
58
+ for (const tag of tags) {
59
+ if (typeof tag === "string")
60
+ tagSet.add(tag);
61
+ }
23
62
  }
24
63
  }
25
64
  for (const tag of tagSet) {
@@ -1 +1 @@
1
- {"version":3,"file":"sitemap.js","sourceRoot":"","sources":["../src/sitemap.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CACnC,KAAiB,EACjB,MAAoB;IAEpB,MAAM,OAAO,GAAG,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC;IAE3C,MAAM,OAAO,GAA0B;QACrC;YACE,GAAG,EAAE,OAAO;YACZ,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,eAAe,EAAE,OAAO;YACxB,QAAQ,EAAE,CAAC;SACZ;KACF,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;YAC9B,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC3C,eAAe,EAAE,QAAQ;YACzB,QAAQ,EAAE,GAAG;SACd,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,EAAE,GAAG,OAAO,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE;YAChD,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,eAAe,EAAE,QAAQ;YACzB,QAAQ,EAAE,GAAG;SACd,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"sitemap.js","sourceRoot":"","sources":["../src/sitemap.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
- import type { BlogPost, NoxionConfig } from "@noxion/core";
1
+ import type { NoxionPage, NoxionConfig } from "@noxion/core";
2
2
  export interface JsonLd {
3
3
  "@context": string;
4
4
  "@type": string | string[];
5
5
  [key: string]: unknown;
6
6
  }
7
- export declare function generateBlogPostingLD(post: BlogPost, config: NoxionConfig): JsonLd;
8
- export declare function generateBreadcrumbLD(post: BlogPost, config: NoxionConfig): JsonLd;
7
+ export declare function generateBlogPostingLD(page: NoxionPage, config: NoxionConfig): JsonLd;
8
+ export declare function generateTechArticleLD(page: NoxionPage, config: NoxionConfig): JsonLd;
9
+ export declare function generateCreativeWorkLD(page: NoxionPage, config: NoxionConfig): JsonLd;
10
+ export declare function generatePageLD(page: NoxionPage, config: NoxionConfig, registry?: import("@noxion/core").PageTypeRegistry): JsonLd;
11
+ export declare function generateBreadcrumbLD(page: NoxionPage, config: NoxionConfig): JsonLd;
9
12
  export declare function generateWebSiteLD(config: NoxionConfig): JsonLd;
10
- export declare function generateCollectionPageLD(posts: BlogPost[], config: NoxionConfig): JsonLd;
13
+ export declare function generateCollectionPageLD(pages: NoxionPage[], config: NoxionConfig): JsonLd;
11
14
  //# sourceMappingURL=structured-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structured-data.d.ts","sourceRoot":"","sources":["../src/structured-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,YAAY,GACnB,MAAM,CA6CR;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,YAAY,GACnB,MAAM,CAuCR;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAuB9D;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,YAAY,GACnB,MAAM,CAqBR"}
1
+ {"version":3,"file":"structured-data.d.ts","sourceRoot":"","sources":["../src/structured-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAYD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GACnB,MAAM,CAiDR;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GACnB,MAAM,CAwCR;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GACnB,MAAM,CAuCR;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,OAAO,cAAc,EAAE,gBAAgB,GACjD,MAAM,CA0BR;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GACnB,MAAM,CAwCR;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAuB9D;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,UAAU,EAAE,EACnB,MAAM,EAAE,YAAY,GACnB,MAAM,CAqBR"}
@@ -1,15 +1,27 @@
1
- export function generateBlogPostingLD(post, config) {
2
- const url = `https://${config.domain}/${post.slug}`;
1
+ function getMetaString(page, key) {
2
+ const val = page.metadata[key];
3
+ return typeof val === "string" ? val : undefined;
4
+ }
5
+ function getMetaStringArray(page, key) {
6
+ const val = page.metadata[key];
7
+ return Array.isArray(val) ? val.filter((v) => typeof v === "string") : [];
8
+ }
9
+ export function generateBlogPostingLD(page, config) {
10
+ const url = `https://${config.domain}/${page.slug}`;
11
+ const date = getMetaString(page, "date");
12
+ const author = getMetaString(page, "author") ?? config.author;
13
+ const tags = getMetaStringArray(page, "tags");
14
+ const category = getMetaString(page, "category");
3
15
  const ld = {
4
16
  "@context": "https://schema.org",
5
17
  "@type": "BlogPosting",
6
- headline: post.title,
7
- description: post.description ?? post.title,
8
- datePublished: post.date ? new Date(post.date).toISOString() : undefined,
9
- dateModified: post.lastEditedTime,
18
+ headline: page.title,
19
+ description: page.description ?? page.title,
20
+ datePublished: date ? new Date(date).toISOString() : undefined,
21
+ dateModified: page.lastEditedTime,
10
22
  author: {
11
23
  "@type": "Person",
12
- name: post.author ?? config.author,
24
+ name: author,
13
25
  },
14
26
  publisher: {
15
27
  "@type": "Organization",
@@ -24,23 +36,127 @@ export function generateBlogPostingLD(post, config) {
24
36
  inLanguage: config.language,
25
37
  isAccessibleForFree: true,
26
38
  };
27
- if (post.coverImage) {
39
+ if (page.coverImage) {
28
40
  ld.image = {
29
41
  "@type": "ImageObject",
30
- url: post.coverImage,
42
+ url: page.coverImage,
31
43
  };
32
- ld.thumbnailUrl = post.coverImage;
44
+ ld.thumbnailUrl = page.coverImage;
33
45
  }
34
- if (post.tags.length > 0) {
35
- ld.keywords = post.tags.join(", ");
46
+ if (tags.length > 0) {
47
+ ld.keywords = tags.join(", ");
36
48
  }
37
- if (post.category) {
38
- ld.articleSection = post.category;
49
+ if (category) {
50
+ ld.articleSection = category;
39
51
  }
40
52
  return ld;
41
53
  }
42
- export function generateBreadcrumbLD(post, config) {
54
+ export function generateTechArticleLD(page, config) {
55
+ const url = `https://${config.domain}/docs/${page.slug}`;
56
+ const section = getMetaString(page, "section");
57
+ const ld = {
58
+ "@context": "https://schema.org",
59
+ "@type": "TechArticle",
60
+ headline: page.title,
61
+ description: page.description ?? page.title,
62
+ dateModified: page.lastEditedTime,
63
+ author: {
64
+ "@type": "Organization",
65
+ name: config.name,
66
+ },
67
+ publisher: {
68
+ "@type": "Organization",
69
+ name: config.name,
70
+ url: `https://${config.domain}`,
71
+ },
72
+ url,
73
+ mainEntityOfPage: {
74
+ "@type": "WebPage",
75
+ "@id": url,
76
+ },
77
+ inLanguage: config.language,
78
+ isAccessibleForFree: true,
79
+ };
80
+ if (section) {
81
+ ld.articleSection = section;
82
+ }
83
+ if (page.coverImage) {
84
+ ld.image = {
85
+ "@type": "ImageObject",
86
+ url: page.coverImage,
87
+ };
88
+ }
89
+ return ld;
90
+ }
91
+ export function generateCreativeWorkLD(page, config) {
92
+ const url = `https://${config.domain}/projects/${page.slug}`;
93
+ const technologies = getMetaStringArray(page, "technologies");
94
+ const projectUrl = getMetaString(page, "projectUrl");
95
+ const year = page.metadata.year;
96
+ const ld = {
97
+ "@context": "https://schema.org",
98
+ "@type": "CreativeWork",
99
+ name: page.title,
100
+ description: page.description ?? page.title,
101
+ url,
102
+ author: {
103
+ "@type": "Person",
104
+ name: config.author,
105
+ },
106
+ inLanguage: config.language,
107
+ };
108
+ if (projectUrl) {
109
+ ld.mainEntityOfPage = projectUrl;
110
+ }
111
+ if (page.coverImage) {
112
+ ld.image = {
113
+ "@type": "ImageObject",
114
+ url: page.coverImage,
115
+ };
116
+ }
117
+ if (technologies.length > 0) {
118
+ ld.keywords = technologies.join(", ");
119
+ }
120
+ if (typeof year === "number" || typeof year === "string") {
121
+ ld.dateCreated = String(year);
122
+ }
123
+ return ld;
124
+ }
125
+ export function generatePageLD(page, config, registry) {
126
+ let structuredDataType = "BlogPosting";
127
+ if (registry) {
128
+ const definition = registry.get(page.pageType);
129
+ if (definition?.structuredDataType) {
130
+ structuredDataType = definition.structuredDataType;
131
+ }
132
+ }
133
+ else {
134
+ switch (page.pageType) {
135
+ case "blog":
136
+ structuredDataType = "BlogPosting";
137
+ break;
138
+ case "docs":
139
+ structuredDataType = "TechArticle";
140
+ break;
141
+ case "portfolio":
142
+ structuredDataType = "CreativeWork";
143
+ break;
144
+ }
145
+ }
146
+ switch (structuredDataType) {
147
+ case "BlogPosting":
148
+ return generateBlogPostingLD(page, config);
149
+ case "TechArticle":
150
+ return generateTechArticleLD(page, config);
151
+ case "CreativeWork":
152
+ return generateCreativeWorkLD(page, config);
153
+ default:
154
+ return generateBlogPostingLD(page, config);
155
+ }
156
+ }
157
+ export function generateBreadcrumbLD(page, config) {
43
158
  const baseUrl = `https://${config.domain}`;
159
+ const category = getMetaString(page, "category");
44
160
  const items = [
45
161
  {
46
162
  "@type": "ListItem",
@@ -49,26 +165,26 @@ export function generateBreadcrumbLD(post, config) {
49
165
  item: baseUrl,
50
166
  },
51
167
  ];
52
- if (post.category) {
168
+ if (category) {
53
169
  items.push({
54
170
  "@type": "ListItem",
55
171
  position: 2,
56
- name: post.category,
57
- item: `${baseUrl}/tag/${encodeURIComponent(post.category)}`,
172
+ name: category,
173
+ item: `${baseUrl}/tag/${encodeURIComponent(category)}`,
58
174
  });
59
175
  items.push({
60
176
  "@type": "ListItem",
61
177
  position: 3,
62
- name: post.title,
63
- item: `${baseUrl}/${post.slug}`,
178
+ name: page.title,
179
+ item: `${baseUrl}/${page.slug}`,
64
180
  });
65
181
  }
66
182
  else {
67
183
  items.push({
68
184
  "@type": "ListItem",
69
185
  position: 2,
70
- name: post.title,
71
- item: `${baseUrl}/${post.slug}`,
186
+ name: page.title,
187
+ item: `${baseUrl}/${page.slug}`,
72
188
  });
73
189
  }
74
190
  return {
@@ -100,7 +216,7 @@ export function generateWebSiteLD(config) {
100
216
  },
101
217
  };
102
218
  }
103
- export function generateCollectionPageLD(posts, config) {
219
+ export function generateCollectionPageLD(pages, config) {
104
220
  const baseUrl = `https://${config.domain}`;
105
221
  return {
106
222
  "@context": "https://schema.org",
@@ -110,12 +226,12 @@ export function generateCollectionPageLD(posts, config) {
110
226
  url: baseUrl,
111
227
  mainEntity: {
112
228
  "@type": "ItemList",
113
- numberOfItems: posts.length,
114
- itemListElement: posts.slice(0, 30).map((post, i) => ({
229
+ numberOfItems: pages.length,
230
+ itemListElement: pages.slice(0, 30).map((page, i) => ({
115
231
  "@type": "ListItem",
116
232
  position: i + 1,
117
- url: `${baseUrl}/${post.slug}`,
118
- name: post.title,
233
+ url: `${baseUrl}/${page.slug}`,
234
+ name: page.title,
119
235
  })),
120
236
  },
121
237
  inLanguage: config.language,
@@ -1 +1 @@
1
- {"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../src/structured-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../src/structured-data.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noxion/adapter-nextjs",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "description": "Next.js App Router integration, SEO utilities for Noxion",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -51,7 +51,7 @@
51
51
  "next": ">=15.0.0"
52
52
  },
53
53
  "dependencies": {
54
- "@noxion/core": "^0.1.0",
54
+ "@noxion/core": "^0.3.0",
55
55
  "notion-client": "^7.8.2"
56
56
  },
57
57
  "devDependencies": {