@farming-labs/next 0.2.102 → 0.2.104

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.mts DELETED
@@ -1,5 +0,0 @@
1
- import { buildNextOpenApiDocument, createNextApiReference, createNextApiReferenceLayout, createNextApiReferencePage, getNextApiReferenceMode, getNextApiReferenceSourceState, resolveApiReferenceConfig, withNextApiReferenceBanner } from "./api-reference.mjs";
2
- import { createDocsAPI, createDocsMCPAPI } from "./api.mjs";
3
- import { GeneratedChangelogEntry, createNextChangelogEntryMetadata, createNextChangelogEntryPage, createNextChangelogIndexMetadata, createNextChangelogIndexPage, createNextChangelogStaticParams } from "./changelog.mjs";
4
- import { withDocs } from "./config.mjs";
5
- export { type GeneratedChangelogEntry, buildNextOpenApiDocument, createDocsAPI, createDocsMCPAPI, createNextApiReference, createNextApiReferenceLayout, createNextApiReferencePage, createNextChangelogEntryMetadata, createNextChangelogEntryPage, createNextChangelogIndexMetadata, createNextChangelogIndexPage, createNextChangelogStaticParams, getNextApiReferenceMode, getNextApiReferenceSourceState, resolveApiReferenceConfig, withDocs, withNextApiReferenceBanner };
package/dist/index.mjs DELETED
@@ -1,6 +0,0 @@
1
- import { withDocs } from "./config.mjs";
2
- import { createDocsAPI, createDocsMCPAPI } from "./api.mjs";
3
- import { buildNextOpenApiDocument, createNextApiReference, createNextApiReferenceLayout, createNextApiReferencePage, getNextApiReferenceMode, getNextApiReferenceSourceState, resolveApiReferenceConfig, withNextApiReferenceBanner } from "./api-reference.mjs";
4
- import { createNextChangelogEntryMetadata, createNextChangelogEntryPage, createNextChangelogIndexMetadata, createNextChangelogIndexPage, createNextChangelogStaticParams } from "./changelog.mjs";
5
-
6
- export { buildNextOpenApiDocument, createDocsAPI, createDocsMCPAPI, createNextApiReference, createNextApiReferenceLayout, createNextApiReferencePage, createNextChangelogEntryMetadata, createNextChangelogEntryPage, createNextChangelogIndexMetadata, createNextChangelogIndexPage, createNextChangelogStaticParams, getNextApiReferenceMode, getNextApiReferenceSourceState, resolveApiReferenceConfig, withDocs, withNextApiReferenceBanner };
package/dist/layout.d.mts DELETED
@@ -1,12 +0,0 @@
1
- import { DocsConfig } from "@farming-labs/docs";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
3
-
4
- //#region src/layout.d.ts
5
- declare function createNextDocsMetadata(config: DocsConfig): Record<string, unknown>;
6
- declare function createNextDocsLayout(config: DocsConfig): ({
7
- children
8
- }: {
9
- children: React.ReactNode;
10
- }) => react_jsx_runtime0.JSX.Element;
11
- //#endregion
12
- export { createNextDocsLayout, createNextDocsMetadata };
package/dist/layout.mjs DELETED
@@ -1,94 +0,0 @@
1
- import DocsClientCallbacks from "./client-callbacks.mjs";
2
- import { withNextApiReferenceBanner } from "./api-reference.mjs";
3
- import { emitDocsTelemetryProjectEvent } from "@farming-labs/docs";
4
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
- import { createDocsLayout, createDocsMetadata } from "@farming-labs/theme";
6
- import { DocsCloudAnalytics } from "@farming-labs/docs/client/react";
7
-
8
- //#region src/layout.tsx
9
- const DOCS_CLOUD_PROJECT_ID_ENVS = [
10
- "NEXT_PUBLIC_DOCS_CLOUD_PROJECT_ID",
11
- "PUBLIC_DOCS_CLOUD_PROJECT_ID",
12
- "DOCS_CLOUD_PROJECT_ID"
13
- ];
14
- const DOCS_CLOUD_ANALYTICS_ENDPOINT_ENVS = [
15
- "NEXT_PUBLIC_DOCS_CLOUD_ANALYTICS_ENDPOINT",
16
- "PUBLIC_DOCS_CLOUD_ANALYTICS_ENDPOINT",
17
- "DOCS_CLOUD_ANALYTICS_ENDPOINT"
18
- ];
19
- const DOCS_CLOUD_ANALYTICS_ROUTE_ENVS = [
20
- "NEXT_PUBLIC_DOCS_CLOUD_ANALYTICS_ROUTE",
21
- "PUBLIC_DOCS_CLOUD_ANALYTICS_ROUTE",
22
- "DOCS_CLOUD_ANALYTICS_ROUTE"
23
- ];
24
- const DOCS_CLOUD_ANALYTICS_ENABLED_ENVS = [
25
- "NEXT_PUBLIC_DOCS_CLOUD_ANALYTICS_ENABLED",
26
- "PUBLIC_DOCS_CLOUD_ANALYTICS_ENABLED",
27
- "DOCS_CLOUD_ANALYTICS_ENABLED"
28
- ];
29
- const DEFAULT_DOCS_CLOUD_ANALYTICS_ROUTE = "/api/docs?action=analytics";
30
- function normalizeEnvValue(value) {
31
- const normalized = value?.trim();
32
- return normalized ? normalized : void 0;
33
- }
34
- function readFirstEnv(names) {
35
- for (const name of names) {
36
- const value = normalizeEnvValue(process.env[name]);
37
- if (value) return value;
38
- }
39
- }
40
- function isFalsyEnv(value) {
41
- return /^(0|false|no|off)$/i.test(value ?? "");
42
- }
43
- function withAnalyticsAction(route) {
44
- try {
45
- const url = new URL(route, "https://docs.local");
46
- if (!url.searchParams.has("action")) url.searchParams.set("action", "analytics");
47
- return route.startsWith("http://") || route.startsWith("https://") ? url.toString() : `${url.pathname}${url.search}${url.hash}`;
48
- } catch {
49
- const hashIndex = route.indexOf("#");
50
- const pathAndQuery = hashIndex >= 0 ? route.slice(0, hashIndex) : route;
51
- const hash = hashIndex >= 0 ? route.slice(hashIndex + 1) : "";
52
- return `${pathAndQuery}${pathAndQuery.includes("?") ? "&" : "?"}action=analytics${hash ? `#${hash}` : ""}`;
53
- }
54
- }
55
- function normalizeRoute(value) {
56
- const normalized = normalizeEnvValue(value);
57
- if (!normalized) return void 0;
58
- if (normalized.startsWith("http://") || normalized.startsWith("https://")) return withAnalyticsAction(normalized);
59
- return withAnalyticsAction(`/${normalized}`.replace(/\/+/g, "/"));
60
- }
61
- function resolveNextDocsCloudClientOptions(config) {
62
- const analytics = config.analytics;
63
- if (analytics === false || analytics && typeof analytics === "object" && (analytics.enabled === false || analytics.cloud === false)) return false;
64
- if (isFalsyEnv(readFirstEnv(DOCS_CLOUD_ANALYTICS_ENABLED_ENVS))) return false;
65
- const projectId = readFirstEnv(DOCS_CLOUD_PROJECT_ID_ENVS);
66
- if (!projectId) return void 0;
67
- const endpoint = readFirstEnv(DOCS_CLOUD_ANALYTICS_ENDPOINT_ENVS);
68
- const route = normalizeRoute(readFirstEnv(DOCS_CLOUD_ANALYTICS_ROUTE_ENVS)) ?? normalizeRoute(config.cloud?.apiRoute);
69
- const includeInputs = typeof analytics === "object" && analytics.includeInputs === true;
70
- return {
71
- projectId,
72
- endpoint: endpoint ?? route ?? DEFAULT_DOCS_CLOUD_ANALYTICS_ROUTE,
73
- includeInputs,
74
- metadata: { framework: "next" }
75
- };
76
- }
77
- function createNextDocsMetadata(config) {
78
- return createDocsMetadata(config);
79
- }
80
- function createNextDocsLayout(config) {
81
- emitDocsTelemetryProjectEvent(config, { framework: "next" });
82
- const DocsLayout = createDocsLayout(withNextApiReferenceBanner(config));
83
- return function NextDocsLayout({ children }) {
84
- const docsCloud = resolveNextDocsCloudClientOptions(config);
85
- return /* @__PURE__ */ jsxs(Fragment, { children: [
86
- docsCloud ? /* @__PURE__ */ jsx(DocsCloudAnalytics, { ...docsCloud }) : null,
87
- /* @__PURE__ */ jsx(DocsClientCallbacks, { docsCloudEnabled: Boolean(docsCloud) }),
88
- /* @__PURE__ */ jsx(DocsLayout, { children })
89
- ] });
90
- };
91
- }
92
-
93
- //#endregion
94
- export { createNextDocsLayout, createNextDocsMetadata };
@@ -1,2 +0,0 @@
1
- import { rehypeCode as rehype_code_default } from "fumadocs-core/mdx-plugins/rehype-code";
2
- export { rehype_code_default as default };
@@ -1,3 +0,0 @@
1
- import { rehypeCode as rehype_code_default } from "fumadocs-core/mdx-plugins/rehype-code";
2
-
3
- export { rehype_code_default as default };
@@ -1,2 +0,0 @@
1
- import { rehypeToc as rehype_toc_default } from "fumadocs-core/mdx-plugins/rehype-toc";
2
- export { rehype_toc_default as default };
@@ -1,3 +0,0 @@
1
- import { rehypeToc as rehype_toc_default } from "fumadocs-core/mdx-plugins/rehype-toc";
2
-
3
- export { rehype_toc_default as default };
@@ -1,2 +0,0 @@
1
- import { remarkCodeGroup as server_default } from "@farming-labs/docs/server";
2
- export { server_default as default };
@@ -1,3 +0,0 @@
1
- import { remarkCodeGroup as server_default } from "@farming-labs/docs/server";
2
-
3
- export { server_default as default };
@@ -1,6 +0,0 @@
1
- import { remarkHeading as remarkHeading$1 } from "fumadocs-core/mdx-plugins/remark-heading";
2
-
3
- //#region src/mdx-plugins/remark-heading.d.ts
4
- declare function remarkHeading(options?: Parameters<typeof remarkHeading$1>[0]): ReturnType<typeof remarkHeading$1>;
5
- //#endregion
6
- export { remarkHeading as default };
@@ -1,28 +0,0 @@
1
- import { applyDocsMarkdownHeadingAnchors, encodeDocsHeadingTocUrls, isolateDocsMarkdownPromptReferences, withDocsMarkdownRenderableHeadings } from "@farming-labs/docs";
2
- import { remarkHeading as remarkHeading$1 } from "fumadocs-core/mdx-plugins/remark-heading";
3
-
4
- //#region src/mdx-plugins/remark-heading.ts
5
- function remarkHeading(options = {}) {
6
- if (options.slug) {
7
- const customRemarkHeading = remarkHeading$1(options);
8
- return (root, file) => {
9
- isolateDocsMarkdownPromptReferences(root, file.value);
10
- const result = withDocsMarkdownRenderableHeadings(root, () => customRemarkHeading(root, file, () => void 0));
11
- encodeDocsHeadingTocUrls(file.data.toc);
12
- return result;
13
- };
14
- }
15
- return (root, file) => {
16
- isolateDocsMarkdownPromptReferences(root, file.value);
17
- applyDocsMarkdownHeadingAnchors(root, { customId: options.customId });
18
- withDocsMarkdownRenderableHeadings(root, () => remarkHeading$1({
19
- ...options,
20
- customId: false
21
- })(root, file, () => void 0));
22
- encodeDocsHeadingTocUrls(file.data.toc);
23
- return root;
24
- };
25
- }
26
-
27
- //#endregion
28
- export { remarkHeading as default };
@@ -1,21 +0,0 @@
1
- //#region src/mdx-plugins/remark-markdown-alternate.d.ts
2
- interface RemarkMarkdownAlternateOptions {
3
- entry?: string;
4
- appDir?: string;
5
- contentDir?: string;
6
- docsPath?: string;
7
- enabled?: boolean;
8
- }
9
- interface MarkdownNode {
10
- type: string;
11
- value?: string;
12
- }
13
- interface VFileLike {
14
- path?: string;
15
- history?: string[];
16
- }
17
- declare function remarkMarkdownAlternate(options?: RemarkMarkdownAlternateOptions): (tree: {
18
- children: MarkdownNode[];
19
- }, file?: VFileLike) => void;
20
- //#endregion
21
- export { remarkMarkdownAlternate as default };
@@ -1,78 +0,0 @@
1
- import { toDocsMarkdownUrl } from "@farming-labs/docs";
2
-
3
- //#region src/mdx-plugins/remark-markdown-alternate.ts
4
- function normalizePath(value) {
5
- return value.replace(/\\/g, "/").replace(/\/+/g, "/");
6
- }
7
- function normalizeSegment(value, fallback) {
8
- return (value ?? fallback).replace(/^\/+|\/+$/g, "") || fallback;
9
- }
10
- function normalizeDocsPath(value, entry) {
11
- if (typeof value !== "string") return `/${entry}`;
12
- const cleaned = value.trim().replace(/^\/+|\/+$/g, "").replace(/\/+/g, "/");
13
- if (cleaned === "") return "";
14
- return `/${cleaned}`;
15
- }
16
- function joinDocsPath(docsPath, slug) {
17
- if (!slug) return docsPath || "/";
18
- return docsPath ? `${docsPath}/${slug}` : `/${slug}`;
19
- }
20
- function escapeYamlString(value) {
21
- return value.replace(/\\/g, "\\\\").replace(/"/g, "\\\"");
22
- }
23
- function routeFromSourcePath(filePath, options) {
24
- const normalized = `/${normalizePath(filePath).replace(/^\/+/, "")}`;
25
- if (!/\/page\.mdx?$/.test(normalized)) return null;
26
- const entry = normalizeSegment(options.entry, "docs");
27
- const candidates = [
28
- options.contentDir,
29
- options.appDir ? `${options.appDir}/${entry}` : void 0,
30
- `src/app/${entry}`,
31
- `app/${entry}`
32
- ].filter((candidate) => typeof candidate === "string" && candidate.length > 0).map((candidate) => normalizePath(candidate).replace(/^\/+|\/+$/g, ""));
33
- for (const candidate of candidates) {
34
- const marker = `/${candidate}/`;
35
- const markerIndex = normalized.lastIndexOf(marker);
36
- if (markerIndex === -1) continue;
37
- const relativePath = normalized.slice(markerIndex + marker.length);
38
- if (!relativePath.endsWith("page.mdx") && !relativePath.endsWith("page.md")) continue;
39
- const slug = relativePath.replace(/\/?page\.mdx?$/, "").replace(/^\/+|\/+$/g, "");
40
- return joinDocsPath(normalizeDocsPath(options.docsPath, entry), slug);
41
- }
42
- return null;
43
- }
44
- function getFilePath(file) {
45
- return file?.path ?? file?.history?.[0];
46
- }
47
- function hasAlternates(yaml) {
48
- return /^\s*alternates\s*:/m.test(yaml);
49
- }
50
- function alternateYaml(url) {
51
- return [
52
- "alternates:",
53
- " types:",
54
- ` text/markdown: "${escapeYamlString(url === "/" ? "/docs.md" : toDocsMarkdownUrl(url))}"`
55
- ].join("\n");
56
- }
57
- function remarkMarkdownAlternate(options = {}) {
58
- return (tree, file) => {
59
- if (options.enabled === false) return;
60
- const filePath = getFilePath(file);
61
- if (!filePath) return;
62
- const route = routeFromSourcePath(filePath, options);
63
- if (!route) return;
64
- const yamlNode = tree.children.find((node) => node.type === "yaml");
65
- if (yamlNode?.value) {
66
- if (hasAlternates(yamlNode.value)) return;
67
- yamlNode.value += `\n${alternateYaml(route)}`;
68
- return;
69
- }
70
- tree.children.unshift({
71
- type: "yaml",
72
- value: alternateYaml(route)
73
- });
74
- };
75
- }
76
-
77
- //#endregion
78
- export { remarkMarkdownAlternate as default };
@@ -1,22 +0,0 @@
1
- //#region src/mdx-plugins/remark-og.d.ts
2
- /**
3
- * Remark plugin that augments frontmatter with Open Graph metadata.
4
- *
5
- * Runs between remark-frontmatter and remark-mdx-frontmatter.
6
- * Reads title/description from the YAML node and appends openGraph + twitter
7
- * fields so that remark-mdx-frontmatter exports them as part of `metadata`.
8
- *
9
- * Skips injection when frontmatter already has `openGraph:` or `ogImage:`, so
10
- * pages can use static OG images from frontmatter instead of the dynamic endpoint.
11
- */
12
- interface RemarkOgOptions {
13
- endpoint?: string;
14
- }
15
- declare function remarkOg(options?: RemarkOgOptions): (tree: {
16
- children: Array<{
17
- type: string;
18
- value: string;
19
- }>;
20
- }) => void;
21
- //#endregion
22
- export { remarkOg as default };
@@ -1,30 +0,0 @@
1
- //#region src/mdx-plugins/remark-og.ts
2
- function extractField(yaml, key) {
3
- const re = new RegExp(`^${key}:\\s*(?:"([^"]*?)"|'([^']*?)'|(.+?))\\s*$`, "m");
4
- const m = yaml.match(re);
5
- return m?.[1] ?? m?.[2] ?? m?.[3];
6
- }
7
- /** True if the YAML already defines openGraph or ogImage (static OG). */
8
- function hasStaticOg(yaml) {
9
- return /^\s*openGraph\s*:/m.test(yaml) || /^\s*ogImage\s*:/m.test(yaml);
10
- }
11
- function remarkOg(options = {}) {
12
- const { endpoint = "/api/og" } = options;
13
- return (tree) => {
14
- const yamlNode = tree.children.find((n) => n.type === "yaml");
15
- if (!yamlNode) return;
16
- if (hasStaticOg(yamlNode.value)) return;
17
- const title = extractField(yamlNode.value, "title");
18
- if (!title) return;
19
- const description = extractField(yamlNode.value, "description");
20
- const params = new URLSearchParams({ title });
21
- if (description) params.set("description", description);
22
- const ogUrl = `${endpoint}?${params.toString()}`;
23
- yamlNode.value += `
24
- openGraph:
25
- images:\n - url: "${ogUrl}"\n width: 1200\n height: 630\ntwitter:\n card: "summary_large_image"\n images:\n - "${ogUrl}"`;
26
- };
27
- }
28
-
29
- //#endregion
30
- export { remarkOg as default };