@farming-labs/docs 0.1.104 → 0.1.106
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/{agent-sUT6Bsop.mjs → agent-BkBIpBPu.mjs} +1 -1
- package/dist/{agents-B04j1KsE.mjs → agents-CpXgpIkR.mjs} +1 -1
- package/dist/cli/index.mjs +36 -17
- package/dist/{dev-CpvDdmY3.mjs → dev-cvGfM7qo.mjs} +1 -1
- package/dist/{doctor-DPFrn2se.mjs → doctor-BLBWvfy5.mjs} +2 -2
- package/dist/downgrade-C2Hg1Yz7.mjs +242 -0
- package/dist/index.d.mts +2 -2
- package/dist/{init-BJbBtnBz.mjs → init-CCDM1jpD.mjs} +1 -1
- package/dist/mcp.d.mts +1 -1
- package/dist/{robots-HU8yTWZv.mjs → robots-DuDAetXn.mjs} +1 -1
- package/dist/{search-BlXlCmne.d.mts → search-BjQMhpS-.d.mts} +1 -1
- package/dist/server.d.mts +2 -2
- package/dist/{sitemap-DqzvA3BI.mjs → sitemap-DF2RCPGq.mjs} +1 -1
- package/dist/{upgrade-Nh6Jn6Kk.mjs → upgrade-BZ6SnqKP.mjs} +26 -10
- package/dist/{utils-AmYxHDoz.mjs → utils-TPe8H1P-.mjs} +15 -1
- package/package.json +1 -1
- /package/dist/{mcp-B-zWyAlw.mjs → mcp-Cbg5V9qX.mjs} +0 -0
- /package/dist/{search-0H8jdm8S.mjs → search-D5TyB13g.mjs} +0 -0
- /package/dist/{types-BSnCAFHc.d.mts → types-fGTXVS-r.d.mts} +0 -0
|
@@ -4,6 +4,6 @@ import "./agent-BK7q65dn.mjs";
|
|
|
4
4
|
import "./robots-DDrj6Cpo.mjs";
|
|
5
5
|
import "./sitemap-server-DJvxOqX2.mjs";
|
|
6
6
|
import "./config-Cio3byUJ.mjs";
|
|
7
|
-
import { a as readPageTokenBudget, i as printAgentCompactHelp, n as inspectAgentCompactionState, o as scanDocsPageTargets, r as parseAgentCompactArgs, t as compactAgentDocs } from "./agents-
|
|
7
|
+
import { a as readPageTokenBudget, i as printAgentCompactHelp, n as inspectAgentCompactionState, o as scanDocsPageTargets, r as parseAgentCompactArgs, t as compactAgentDocs } from "./agents-CpXgpIkR.mjs";
|
|
8
8
|
|
|
9
9
|
export { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp };
|
|
@@ -5,7 +5,7 @@ import { v as resolveApiReferenceConfig } from "./sitemap-server-DJvxOqX2.mjs";
|
|
|
5
5
|
import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
|
|
6
6
|
import "./server.mjs";
|
|
7
7
|
import { a as loadProjectEnv, c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, l as readNumberProperty, o as readBooleanProperty, p as resolveDocsContentDir, s as readEnvReferenceProperty, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-Cio3byUJ.mjs";
|
|
8
|
-
import { t as detectFramework } from "./utils-
|
|
8
|
+
import { t as detectFramework } from "./utils-TPe8H1P-.mjs";
|
|
9
9
|
import matter from "gray-matter";
|
|
10
10
|
import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
11
11
|
import path from "node:path";
|
package/dist/cli/index.mjs
CHANGED
|
@@ -77,16 +77,16 @@ async function main() {
|
|
|
77
77
|
searchApiKey: typeof flags["search-api-key"] === "string" ? flags["search-api-key"] : void 0
|
|
78
78
|
};
|
|
79
79
|
if (!parsedCommand.command || parsedCommand.command === "init") {
|
|
80
|
-
const { init } = await import("../init-
|
|
80
|
+
const { init } = await import("../init-CCDM1jpD.mjs");
|
|
81
81
|
await init(initOptions);
|
|
82
82
|
} else if (parsedCommand.command === "dev") {
|
|
83
|
-
const { dev } = await import("../dev-
|
|
83
|
+
const { dev } = await import("../dev-cvGfM7qo.mjs");
|
|
84
84
|
await dev(devOptions);
|
|
85
85
|
} else if (parsedCommand.command === "mcp") {
|
|
86
|
-
const { runMcp } = await import("../mcp-
|
|
86
|
+
const { runMcp } = await import("../mcp-Cbg5V9qX.mjs");
|
|
87
87
|
await runMcp(mcpOptions);
|
|
88
88
|
} else if (parsedCommand.command === "agent" && subcommand === "compact") {
|
|
89
|
-
const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-
|
|
89
|
+
const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-BkBIpBPu.mjs");
|
|
90
90
|
const agentCompactOptions = parseAgentCompactArgs(args.slice(2));
|
|
91
91
|
if (agentCompactOptions.help) {
|
|
92
92
|
printAgentCompactHelp();
|
|
@@ -96,11 +96,11 @@ async function main() {
|
|
|
96
96
|
} else if (parsedCommand.command === "agent") {
|
|
97
97
|
console.error(pc.red(`Unknown agent subcommand: ${subcommand ?? "(missing)"}`));
|
|
98
98
|
console.error();
|
|
99
|
-
const { printAgentCompactHelp } = await import("../agent-
|
|
99
|
+
const { printAgentCompactHelp } = await import("../agent-BkBIpBPu.mjs");
|
|
100
100
|
printAgentCompactHelp();
|
|
101
101
|
process.exit(1);
|
|
102
102
|
} else if (parsedCommand.command === "agents" && subcommand === "generate") {
|
|
103
|
-
const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-
|
|
103
|
+
const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-CpXgpIkR.mjs");
|
|
104
104
|
const agentsOptions = parseAgentsGenerateArgs(args.slice(2));
|
|
105
105
|
if (agentsOptions.help) {
|
|
106
106
|
printAgentsGenerateHelp();
|
|
@@ -110,11 +110,11 @@ async function main() {
|
|
|
110
110
|
} else if (parsedCommand.command === "agents") {
|
|
111
111
|
console.error(pc.red(`Unknown agents subcommand: ${subcommand ?? "(missing)"}`));
|
|
112
112
|
console.error();
|
|
113
|
-
const { printAgentsGenerateHelp } = await import("../agents-
|
|
113
|
+
const { printAgentsGenerateHelp } = await import("../agents-CpXgpIkR.mjs");
|
|
114
114
|
printAgentsGenerateHelp();
|
|
115
115
|
process.exit(1);
|
|
116
116
|
} else if (parsedCommand.command === "doctor") {
|
|
117
|
-
const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-
|
|
117
|
+
const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-BLBWvfy5.mjs");
|
|
118
118
|
const doctorOptions = parseDoctorArgs(args.slice(1));
|
|
119
119
|
if (doctorOptions.help) {
|
|
120
120
|
printDoctorHelp();
|
|
@@ -122,7 +122,7 @@ async function main() {
|
|
|
122
122
|
}
|
|
123
123
|
await runDoctor(doctorOptions);
|
|
124
124
|
} else if (parsedCommand.command === "search" && subcommand === "sync") {
|
|
125
|
-
const { syncSearch } = await import("../search-
|
|
125
|
+
const { syncSearch } = await import("../search-D5TyB13g.mjs");
|
|
126
126
|
await syncSearch(searchSyncOptions);
|
|
127
127
|
} else if (parsedCommand.command === "search") {
|
|
128
128
|
console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
|
|
@@ -130,7 +130,7 @@ async function main() {
|
|
|
130
130
|
printHelp();
|
|
131
131
|
process.exit(1);
|
|
132
132
|
} else if (parsedCommand.command === "sitemap" && subcommand === "generate") {
|
|
133
|
-
const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-
|
|
133
|
+
const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-DF2RCPGq.mjs");
|
|
134
134
|
const sitemapOptions = parseSitemapGenerateArgs(args.slice(2));
|
|
135
135
|
if (sitemapOptions.help) {
|
|
136
136
|
printSitemapGenerateHelp();
|
|
@@ -140,11 +140,11 @@ async function main() {
|
|
|
140
140
|
} else if (parsedCommand.command === "sitemap") {
|
|
141
141
|
console.error(pc.red(`Unknown sitemap subcommand: ${subcommand ?? "(missing)"}`));
|
|
142
142
|
console.error();
|
|
143
|
-
const { printSitemapGenerateHelp } = await import("../sitemap-
|
|
143
|
+
const { printSitemapGenerateHelp } = await import("../sitemap-DF2RCPGq.mjs");
|
|
144
144
|
printSitemapGenerateHelp();
|
|
145
145
|
process.exit(1);
|
|
146
146
|
} else if (parsedCommand.command === "robots" && subcommand === "generate") {
|
|
147
|
-
const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-
|
|
147
|
+
const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-DuDAetXn.mjs");
|
|
148
148
|
const robotsOptions = parseRobotsGenerateArgs(args.slice(2));
|
|
149
149
|
if (robotsOptions.help) {
|
|
150
150
|
printRobotsGenerateHelp();
|
|
@@ -154,14 +154,26 @@ async function main() {
|
|
|
154
154
|
} else if (parsedCommand.command === "robots") {
|
|
155
155
|
console.error(pc.red(`Unknown robots subcommand: ${subcommand ?? "(missing)"}`));
|
|
156
156
|
console.error();
|
|
157
|
-
const { printRobotsGenerateHelp } = await import("../robots-
|
|
157
|
+
const { printRobotsGenerateHelp } = await import("../robots-DuDAetXn.mjs");
|
|
158
158
|
printRobotsGenerateHelp();
|
|
159
159
|
process.exit(1);
|
|
160
|
+
} else if (parsedCommand.command === "downgrade") {
|
|
161
|
+
const { downgrade } = await import("../downgrade-C2Hg1Yz7.mjs");
|
|
162
|
+
const framework = (typeof flags.framework === "string" ? flags.framework : void 0) ?? (args[1] && !args[1].startsWith("--") ? args[1] : void 0);
|
|
163
|
+
const hasVersionFlag = args.includes("--version") || args.some((arg) => arg.startsWith("--version="));
|
|
164
|
+
await downgrade({
|
|
165
|
+
framework,
|
|
166
|
+
version: typeof flags.version === "string" ? flags.version : hasVersionFlag ? "" : void 0
|
|
167
|
+
});
|
|
160
168
|
} else if (parsedCommand.command === "upgrade") {
|
|
161
|
-
const { upgrade } = await import("../upgrade-
|
|
169
|
+
const { upgrade } = await import("../upgrade-BZ6SnqKP.mjs");
|
|
170
|
+
const framework = (typeof flags.framework === "string" ? flags.framework : void 0) ?? (args[1] && !args[1].startsWith("--") ? args[1] : void 0);
|
|
171
|
+
const hasVersionFlag = args.includes("--version") || args.some((arg) => arg.startsWith("--version="));
|
|
172
|
+
const version = typeof flags.version === "string" ? flags.version : hasVersionFlag ? "" : void 0;
|
|
162
173
|
await upgrade({
|
|
163
|
-
framework
|
|
164
|
-
tag: args.includes("--beta") ? "beta" : args.includes("--latest") ? "latest" : parsedCommand.tag ?? "latest"
|
|
174
|
+
framework,
|
|
175
|
+
tag: version !== void 0 ? void 0 : args.includes("--beta") ? "beta" : args.includes("--latest") ? "latest" : parsedCommand.tag ?? "latest",
|
|
176
|
+
version
|
|
165
177
|
});
|
|
166
178
|
} else if (parsedCommand.command === "--help" || parsedCommand.command === "-h") printHelp();
|
|
167
179
|
else if (parsedCommand.command === "--version" || parsedCommand.command === "-v") printVersion();
|
|
@@ -189,7 +201,8 @@ ${pc.dim("Commands:")}
|
|
|
189
201
|
${pc.cyan("robots")} Robots.txt utilities (${pc.dim("generate")} for agent access policy)
|
|
190
202
|
${pc.cyan("search")} Search utilities (${pc.dim("sync")} for external indexes)
|
|
191
203
|
${pc.cyan("sitemap")} Sitemap utilities (${pc.dim("generate")} for sitemap XML/Markdown data)
|
|
192
|
-
${pc.cyan("upgrade")} Upgrade @farming-labs/* packages
|
|
204
|
+
${pc.cyan("upgrade")} Upgrade @farming-labs/* packages (auto-detect or use --framework)
|
|
205
|
+
${pc.cyan("downgrade")} Downgrade @farming-labs/* packages (auto-detect or use --framework)
|
|
193
206
|
|
|
194
207
|
${pc.dim("Supported frameworks:")}
|
|
195
208
|
Next.js, TanStack Start, SvelteKit, Astro, Nuxt
|
|
@@ -271,11 +284,17 @@ ${pc.dim("Options for robots generate:")}
|
|
|
271
284
|
|
|
272
285
|
${pc.dim("Options for upgrade:")}
|
|
273
286
|
${pc.cyan("--framework <name>")} Explicit framework (${pc.dim("next")}, ${pc.dim("tanstack-start")}, ${pc.dim("nuxt")}, ${pc.dim("sveltekit")}, ${pc.dim("astro")}); omit to auto-detect
|
|
287
|
+
${pc.cyan("--version <version>")} Install an exact version (e.g. ${pc.dim("0.1.104")})
|
|
274
288
|
${pc.cyan("--latest")} Install latest stable (default)
|
|
275
289
|
${pc.cyan("--beta")} Install beta versions
|
|
276
290
|
${pc.cyan("upgrade@beta")} Shortcut for ${pc.cyan("upgrade --beta")}
|
|
277
291
|
${pc.cyan("upgrade@latest")} Shortcut for ${pc.cyan("upgrade --latest")}
|
|
278
292
|
|
|
293
|
+
${pc.dim("Options for downgrade:")}
|
|
294
|
+
${pc.cyan("downgrade")} Install the published version immediately below the current installed version
|
|
295
|
+
${pc.cyan("--framework <name>")} Explicit framework (${pc.dim("next")}, ${pc.dim("tanstack-start")}, ${pc.dim("nuxt")}, ${pc.dim("sveltekit")}, ${pc.dim("astro")}); omit to auto-detect
|
|
296
|
+
${pc.cyan("--version <version>")} Install an exact lower version (e.g. ${pc.dim("0.1.103")})
|
|
297
|
+
|
|
279
298
|
${pc.cyan("-h, --help")} Show this help message
|
|
280
299
|
${pc.cyan("-v, --version")} Show version
|
|
281
300
|
`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as detectPackageManagerFromLockfile } from "./utils-
|
|
1
|
+
import { i as detectPackageManagerFromLockfile } from "./utils-TPe8H1P-.mjs";
|
|
2
2
|
import { K as rootLayoutTemplate, W as postcssConfigTemplate, g as docsLayoutTemplate, v as globalCssTemplate, yt as tsconfigTemplate } from "./templates-BpSkUico.mjs";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
@@ -7,8 +7,8 @@ import "./sitemap-server-DJvxOqX2.mjs";
|
|
|
7
7
|
import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
|
|
8
8
|
import "./server.mjs";
|
|
9
9
|
import { a as loadProjectEnv, c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, p as resolveDocsContentDir, r as extractTopLevelConfigObject, t as extractNestedObjectLiteral } from "./config-Cio3byUJ.mjs";
|
|
10
|
-
import { t as detectFramework } from "./utils-
|
|
11
|
-
import { n as inspectAgentCompactionState, o as scanDocsPageTargets } from "./agents-
|
|
10
|
+
import { t as detectFramework } from "./utils-TPe8H1P-.mjs";
|
|
11
|
+
import { n as inspectAgentCompactionState, o as scanDocsPageTargets } from "./agents-CpXgpIkR.mjs";
|
|
12
12
|
import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
|
|
13
13
|
import path from "node:path";
|
|
14
14
|
import { LATEST_PROTOCOL_VERSION } from "@modelcontextprotocol/sdk/types.js";
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { c as fileExists, i as detectPackageManagerFromLockfile, o as exec, s as execOutput, t as detectFramework } from "./utils-TPe8H1P-.mjs";
|
|
2
|
+
import { PRESETS, buildUpgradeCommand, frameworkFromPreset, getPackagesForFramework, presetFromFramework, validateUpgradeVersion } from "./upgrade-BZ6SnqKP.mjs";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import pc from "picocolors";
|
|
6
|
+
import * as p from "@clack/prompts";
|
|
7
|
+
|
|
8
|
+
//#region src/cli/downgrade.ts
|
|
9
|
+
/**
|
|
10
|
+
* Downgrade @farming-labs/* packages to a lower exact version.
|
|
11
|
+
* Detects framework from package.json by default, or use --framework (next, tanstack-start, nuxt, sveltekit, astro).
|
|
12
|
+
*/
|
|
13
|
+
function parseSemver(version) {
|
|
14
|
+
const normalized = validateUpgradeVersion(version).split("+", 1)[0] ?? version;
|
|
15
|
+
const prereleaseIndex = normalized.indexOf("-");
|
|
16
|
+
const core = prereleaseIndex === -1 ? normalized : normalized.slice(0, prereleaseIndex);
|
|
17
|
+
const prerelease = prereleaseIndex === -1 ? "" : normalized.slice(prereleaseIndex + 1);
|
|
18
|
+
const [major = "0", minor = "0", patch = "0"] = core.split(".");
|
|
19
|
+
return {
|
|
20
|
+
major: Number.parseInt(major, 10),
|
|
21
|
+
minor: Number.parseInt(minor, 10),
|
|
22
|
+
patch: Number.parseInt(patch, 10),
|
|
23
|
+
prerelease: prerelease ? prerelease.split(".") : []
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function comparePrereleaseIdentifier(a, b) {
|
|
27
|
+
const aNumber = /^\d+$/.test(a) ? Number.parseInt(a, 10) : null;
|
|
28
|
+
const bNumber = /^\d+$/.test(b) ? Number.parseInt(b, 10) : null;
|
|
29
|
+
if (aNumber !== null && bNumber !== null) return Math.sign(aNumber - bNumber);
|
|
30
|
+
if (aNumber !== null) return -1;
|
|
31
|
+
if (bNumber !== null) return 1;
|
|
32
|
+
return a.localeCompare(b);
|
|
33
|
+
}
|
|
34
|
+
function compareSemver(a, b) {
|
|
35
|
+
const left = parseSemver(a);
|
|
36
|
+
const right = parseSemver(b);
|
|
37
|
+
for (const key of [
|
|
38
|
+
"major",
|
|
39
|
+
"minor",
|
|
40
|
+
"patch"
|
|
41
|
+
]) if (left[key] !== right[key]) return Math.sign(left[key] - right[key]);
|
|
42
|
+
if (left.prerelease.length === 0 && right.prerelease.length === 0) return 0;
|
|
43
|
+
if (left.prerelease.length === 0) return 1;
|
|
44
|
+
if (right.prerelease.length === 0) return -1;
|
|
45
|
+
const length = Math.max(left.prerelease.length, right.prerelease.length);
|
|
46
|
+
for (let index = 0; index < length; index++) {
|
|
47
|
+
const leftPart = left.prerelease[index];
|
|
48
|
+
const rightPart = right.prerelease[index];
|
|
49
|
+
if (leftPart === void 0) return -1;
|
|
50
|
+
if (rightPart === void 0) return 1;
|
|
51
|
+
const compared = comparePrereleaseIdentifier(leftPart, rightPart);
|
|
52
|
+
if (compared !== 0) return compared;
|
|
53
|
+
}
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
function normalizeMaybeVersion(value) {
|
|
57
|
+
try {
|
|
58
|
+
return validateUpgradeVersion(value);
|
|
59
|
+
} catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function extractVersionFromSpec(spec) {
|
|
64
|
+
const exact = normalizeMaybeVersion(spec);
|
|
65
|
+
if (exact) return exact;
|
|
66
|
+
const rangeMatch = spec.match(/^[~^]([^~^<>=|\s]+)/);
|
|
67
|
+
if (!rangeMatch) return null;
|
|
68
|
+
return normalizeMaybeVersion(rangeMatch[1] ?? "");
|
|
69
|
+
}
|
|
70
|
+
function readJsonFile(filePath) {
|
|
71
|
+
try {
|
|
72
|
+
return JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
73
|
+
} catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function packageJsonPath(cwd, packageName) {
|
|
78
|
+
return path.join(cwd, "node_modules", ...packageName.split("/"), "package.json");
|
|
79
|
+
}
|
|
80
|
+
function readCurrentPackageVersion(cwd, packageNames) {
|
|
81
|
+
for (const packageName of packageNames) {
|
|
82
|
+
const installedPackageJson = readJsonFile(packageJsonPath(cwd, packageName));
|
|
83
|
+
const installedVersion = typeof installedPackageJson?.version === "string" ? normalizeMaybeVersion(installedPackageJson.version) : null;
|
|
84
|
+
if (installedVersion) return installedVersion;
|
|
85
|
+
}
|
|
86
|
+
const projectPackageJson = readJsonFile(path.join(cwd, "package.json"));
|
|
87
|
+
const dependencyGroups = [
|
|
88
|
+
projectPackageJson?.dependencies,
|
|
89
|
+
projectPackageJson?.devDependencies,
|
|
90
|
+
projectPackageJson?.peerDependencies
|
|
91
|
+
];
|
|
92
|
+
for (const group of dependencyGroups) {
|
|
93
|
+
if (!group || typeof group !== "object") continue;
|
|
94
|
+
for (const packageName of packageNames) {
|
|
95
|
+
const spec = group[packageName];
|
|
96
|
+
if (typeof spec !== "string") continue;
|
|
97
|
+
const version = extractVersionFromSpec(spec);
|
|
98
|
+
if (version) return version;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
function parsePublishedVersions(raw) {
|
|
104
|
+
const parsed = JSON.parse(raw);
|
|
105
|
+
return (Array.isArray(parsed) ? parsed : [parsed]).filter((version) => typeof version === "string").map((version) => normalizeMaybeVersion(version)).filter((version) => version !== null);
|
|
106
|
+
}
|
|
107
|
+
function getPreviousVersion(versions, currentVersion) {
|
|
108
|
+
const current = validateUpgradeVersion(currentVersion);
|
|
109
|
+
return versions.filter((version) => compareSemver(version, current) < 0).sort(compareSemver).at(-1) ?? null;
|
|
110
|
+
}
|
|
111
|
+
function fetchPublishedVersions(cwd) {
|
|
112
|
+
return parsePublishedVersions(execOutput("npm view @farming-labs/docs versions --json", cwd));
|
|
113
|
+
}
|
|
114
|
+
function buildDowngradeCommand(framework, version, pm) {
|
|
115
|
+
return buildUpgradeCommand(framework, validateUpgradeVersion(version), pm);
|
|
116
|
+
}
|
|
117
|
+
function resolveFramework(cwd, rawFramework) {
|
|
118
|
+
if (rawFramework) {
|
|
119
|
+
const raw = rawFramework.toLowerCase().trim();
|
|
120
|
+
const normalized = raw === "nextjs" ? "next" : raw;
|
|
121
|
+
if (!PRESETS.includes(normalized)) {
|
|
122
|
+
p.log.error(`Invalid framework ${pc.cyan(rawFramework)}. Use one of: ${PRESETS.map((t) => pc.cyan(t)).join(", ")}`);
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
const preset = normalized;
|
|
126
|
+
return {
|
|
127
|
+
framework: frameworkFromPreset(preset),
|
|
128
|
+
preset
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const detected = detectFramework(cwd);
|
|
132
|
+
if (!detected) {
|
|
133
|
+
p.log.error("Could not detect a supported framework (Next.js, TanStack Start, Nuxt, SvelteKit, Astro). Use " + pc.cyan("--framework <next|tanstack-start|nuxt|sveltekit|astro>") + " to specify.");
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
framework: detected,
|
|
138
|
+
preset: presetFromFramework(detected)
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
async function resolvePackageManager(cwd) {
|
|
142
|
+
const detected = detectPackageManagerFromLockfile(cwd);
|
|
143
|
+
if (detected) {
|
|
144
|
+
p.log.info(`Detected ${pc.cyan(detected)} from lockfile`);
|
|
145
|
+
return detected;
|
|
146
|
+
}
|
|
147
|
+
const pmAnswer = await p.select({
|
|
148
|
+
message: "Which package manager do you want to use for this downgrade?",
|
|
149
|
+
options: [
|
|
150
|
+
{
|
|
151
|
+
value: "pnpm",
|
|
152
|
+
label: "pnpm",
|
|
153
|
+
hint: "Use pnpm add"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
value: "npm",
|
|
157
|
+
label: "npm",
|
|
158
|
+
hint: "Use npm add"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
value: "yarn",
|
|
162
|
+
label: "yarn",
|
|
163
|
+
hint: "Use yarn add"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
value: "bun",
|
|
167
|
+
label: "bun",
|
|
168
|
+
hint: "Use bun add"
|
|
169
|
+
}
|
|
170
|
+
]
|
|
171
|
+
});
|
|
172
|
+
if (p.isCancel(pmAnswer)) {
|
|
173
|
+
p.outro(pc.red("Downgrade cancelled."));
|
|
174
|
+
process.exit(0);
|
|
175
|
+
}
|
|
176
|
+
const pm = pmAnswer;
|
|
177
|
+
p.log.info(`Using ${pc.cyan(pm)} as package manager`);
|
|
178
|
+
return pm;
|
|
179
|
+
}
|
|
180
|
+
async function downgrade(options = {}) {
|
|
181
|
+
const cwd = process.cwd();
|
|
182
|
+
p.intro(pc.bgCyan(pc.black(" @farming-labs/docs downgrade ")));
|
|
183
|
+
if (!fileExists(path.join(cwd, "package.json"))) {
|
|
184
|
+
p.log.error("No package.json found in the current directory. Run this from your project root.");
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
const { framework, preset } = resolveFramework(cwd, options.framework);
|
|
188
|
+
const packages = getPackagesForFramework(framework);
|
|
189
|
+
const currentVersion = readCurrentPackageVersion(cwd, packages);
|
|
190
|
+
if (!currentVersion) {
|
|
191
|
+
p.log.error("Could not determine the current @farming-labs docs package version. Install dependencies first or use an exact package version in package.json.");
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
let targetVersion;
|
|
195
|
+
if (options.version !== void 0) {
|
|
196
|
+
try {
|
|
197
|
+
targetVersion = validateUpgradeVersion(options.version);
|
|
198
|
+
} catch (error) {
|
|
199
|
+
p.log.error(error instanceof Error ? error.message : "Invalid downgrade version.");
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
const comparison = compareSemver(targetVersion, currentVersion);
|
|
203
|
+
if (comparison > 0) {
|
|
204
|
+
p.log.error(`Version ${pc.cyan(targetVersion)} is newer than current ${pc.cyan(currentVersion)}.`);
|
|
205
|
+
p.log.info(`Use ${pc.cyan(`docs upgrade --version ${targetVersion}`)} instead.`);
|
|
206
|
+
process.exit(1);
|
|
207
|
+
}
|
|
208
|
+
if (comparison === 0) {
|
|
209
|
+
p.log.error(`Version ${pc.cyan(targetVersion)} is already installed. Choose a lower version to downgrade.`);
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
} else {
|
|
213
|
+
let publishedVersions;
|
|
214
|
+
try {
|
|
215
|
+
publishedVersions = fetchPublishedVersions(cwd);
|
|
216
|
+
} catch {
|
|
217
|
+
p.log.error("Could not fetch published @farming-labs/docs versions. Pass an exact version with " + pc.cyan("--version <version>") + ".");
|
|
218
|
+
process.exit(1);
|
|
219
|
+
}
|
|
220
|
+
const previousVersion = getPreviousVersion(publishedVersions, currentVersion);
|
|
221
|
+
if (!previousVersion) {
|
|
222
|
+
p.log.error(`No published version found below current ${pc.cyan(currentVersion)}.`);
|
|
223
|
+
process.exit(1);
|
|
224
|
+
}
|
|
225
|
+
targetVersion = previousVersion;
|
|
226
|
+
}
|
|
227
|
+
const pm = await resolvePackageManager(cwd);
|
|
228
|
+
const cmd = buildDowngradeCommand(framework, targetVersion, pm);
|
|
229
|
+
p.log.step(`Downgrading ${preset} docs packages from ${currentVersion} to ${targetVersion}...`);
|
|
230
|
+
p.log.message(pc.dim(packages.join(", ")));
|
|
231
|
+
try {
|
|
232
|
+
exec(cmd, cwd);
|
|
233
|
+
p.log.success(`Packages downgraded to ${targetVersion}.`);
|
|
234
|
+
p.outro(pc.green("Done. Run your dev server to confirm everything works."));
|
|
235
|
+
} catch {
|
|
236
|
+
p.log.error("Downgrade failed. Try running manually:\n " + pc.cyan(cmd));
|
|
237
|
+
process.exit(1);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
//#endregion
|
|
242
|
+
export { downgrade };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as DocsSearchResultType, A as DocsConfig, At as SidebarTree, B as DocsObservabilityEventInput, C as DocsAskAIActionData, Ct as ResolvedDocsRelatedLink, D as DocsAskAIFeedbackMessage, Dt as SidebarFolderNode, E as DocsAskAIFeedbackData, Et as SidebarFolderIndexBehavior, F as DocsMcpToolsConfig, Ft as UIConfig, G as DocsSearchAdapterContext, H as DocsRobotsConfig, I as DocsMetadata, J as DocsSearchConfig, K as DocsSearchAdapterFactory, L as DocsNav, M as DocsFeedbackValue, Mt as ThemeToggleConfig, N as DocsI18nConfig, Nt as TypesenseDocsSearchConfig, O as DocsAskAIFeedbackValue, Ot as SidebarNode, P as DocsMcpConfig, Pt as TypographyConfig, Q as DocsSearchResult, R as DocsObservabilityConfig, S as DocsAnalyticsSource, St as ReadingTimeConfig, T as DocsAskAIFeedbackConfig, Tt as SidebarConfig, U as DocsRobotsRule, V as DocsRelatedItem, W as DocsSearchAdapter, X as DocsSearchEmbeddingsConfig, Y as DocsSearchDocument, Z as DocsSearchQuery, _ as DocsAnalyticsConfig, _t as PageActionsConfig, a as ApiReferenceRenderer, at as GithubConfig, b as DocsAnalyticsEventType, bt as PageSidebarFrontmatter, c as ChangelogFrontmatter, ct as LlmsTxtMaxCharsConfig, d as CustomDocsSearchConfig, dt as McpDocsSearchConfig, et as DocsSearchSourcePage, f as DocsAgentFeedbackContext, ft as OGConfig, g as DocsAgentTraceStatus, gt as OrderingItem, h as DocsAgentTraceEventType, ht as OpenGraphImage, i as ApiReferenceConfig, it as FontStyle, j as DocsFeedbackData, jt as SimpleDocsSearchConfig, k as DocsAskAIMcpConfig, kt as SidebarPageNode, l as CodeBlockCopyData, lt as LlmsTxtMaxCharsMode, m as DocsAgentTraceEventInput, mt as OpenDocsProvider, n as AgentFeedbackConfig, nt as DocsTheme, o as BreadcrumbConfig, ot as LastUpdatedConfig, p as DocsAgentFeedbackData, pt as OpenDocsConfig, q as DocsSearchChunkingConfig, r as AlgoliaDocsSearchConfig, rt as FeedbackConfig, s as ChangelogConfig, st as LlmsTxtConfig, t as AIConfig, tt as DocsSitemapConfig, u as CopyMarkdownConfig, ut as LlmsTxtSectionConfig, v as DocsAnalyticsEvent, vt as PageFrontmatter, w as DocsAskAIActionType, wt as SidebarComponentProps, x as DocsAnalyticsInput, xt as PageTwitter, y as DocsAnalyticsEventInput, yt as PageOpenGraph, z as DocsObservabilityEvent } from "./types-
|
|
2
|
-
import { A as toDocsSitemapMarkdownUrl, B as resolveDocsAnalyticsConfig, C as createDocsSitemapResponse, D as resolveDocsSitemapConfig, E as renderDocsSitemapXml, F as createDocsAgentTraceContext, H as DocsCloudAnalyticsOptions, I as createDocsAgentTraceId, L as emitDocsAgentTraceEvent, M as DocsAgentTraceContext, N as ResolvedDocsAnalyticsConfig, O as resolveDocsSitemapPageLastmod, P as ResolvedDocsObservabilityConfig, R as emitDocsAnalyticsEvent, S as buildDocsSitemapManifest, T as renderDocsSitemapMarkdown, U as createDocsCloudAnalytics, V as resolveDocsObservabilityConfig, _ as DocsSitemapFormat, a as createMcpSearchAdapter, b as DocsSitemapPageInput, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_XML_ROUTE, h as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, i as createCustomSearchAdapter, j as DOCS_AGENT_TRACE_EVENT_TYPES, k as resolveDocsSitemapRequest, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_ROUTE, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, v as DocsSitemapManifest, w as readDocsSitemapManifestFromContentMap, x as DocsSitemapResolvedConfig, y as DocsSitemapManifestPage, z as emitDocsObservabilityEvent } from "./search-
|
|
1
|
+
import { $ as DocsSearchResultType, A as DocsConfig, At as SidebarTree, B as DocsObservabilityEventInput, C as DocsAskAIActionData, Ct as ResolvedDocsRelatedLink, D as DocsAskAIFeedbackMessage, Dt as SidebarFolderNode, E as DocsAskAIFeedbackData, Et as SidebarFolderIndexBehavior, F as DocsMcpToolsConfig, Ft as UIConfig, G as DocsSearchAdapterContext, H as DocsRobotsConfig, I as DocsMetadata, J as DocsSearchConfig, K as DocsSearchAdapterFactory, L as DocsNav, M as DocsFeedbackValue, Mt as ThemeToggleConfig, N as DocsI18nConfig, Nt as TypesenseDocsSearchConfig, O as DocsAskAIFeedbackValue, Ot as SidebarNode, P as DocsMcpConfig, Pt as TypographyConfig, Q as DocsSearchResult, R as DocsObservabilityConfig, S as DocsAnalyticsSource, St as ReadingTimeConfig, T as DocsAskAIFeedbackConfig, Tt as SidebarConfig, U as DocsRobotsRule, V as DocsRelatedItem, W as DocsSearchAdapter, X as DocsSearchEmbeddingsConfig, Y as DocsSearchDocument, Z as DocsSearchQuery, _ as DocsAnalyticsConfig, _t as PageActionsConfig, a as ApiReferenceRenderer, at as GithubConfig, b as DocsAnalyticsEventType, bt as PageSidebarFrontmatter, c as ChangelogFrontmatter, ct as LlmsTxtMaxCharsConfig, d as CustomDocsSearchConfig, dt as McpDocsSearchConfig, et as DocsSearchSourcePage, f as DocsAgentFeedbackContext, ft as OGConfig, g as DocsAgentTraceStatus, gt as OrderingItem, h as DocsAgentTraceEventType, ht as OpenGraphImage, i as ApiReferenceConfig, it as FontStyle, j as DocsFeedbackData, jt as SimpleDocsSearchConfig, k as DocsAskAIMcpConfig, kt as SidebarPageNode, l as CodeBlockCopyData, lt as LlmsTxtMaxCharsMode, m as DocsAgentTraceEventInput, mt as OpenDocsProvider, n as AgentFeedbackConfig, nt as DocsTheme, o as BreadcrumbConfig, ot as LastUpdatedConfig, p as DocsAgentFeedbackData, pt as OpenDocsConfig, q as DocsSearchChunkingConfig, r as AlgoliaDocsSearchConfig, rt as FeedbackConfig, s as ChangelogConfig, st as LlmsTxtConfig, t as AIConfig, tt as DocsSitemapConfig, u as CopyMarkdownConfig, ut as LlmsTxtSectionConfig, v as DocsAnalyticsEvent, vt as PageFrontmatter, w as DocsAskAIActionType, wt as SidebarComponentProps, x as DocsAnalyticsInput, xt as PageTwitter, y as DocsAnalyticsEventInput, yt as PageOpenGraph, z as DocsObservabilityEvent } from "./types-fGTXVS-r.mjs";
|
|
2
|
+
import { A as toDocsSitemapMarkdownUrl, B as resolveDocsAnalyticsConfig, C as createDocsSitemapResponse, D as resolveDocsSitemapConfig, E as renderDocsSitemapXml, F as createDocsAgentTraceContext, H as DocsCloudAnalyticsOptions, I as createDocsAgentTraceId, L as emitDocsAgentTraceEvent, M as DocsAgentTraceContext, N as ResolvedDocsAnalyticsConfig, O as resolveDocsSitemapPageLastmod, P as ResolvedDocsObservabilityConfig, R as emitDocsAnalyticsEvent, S as buildDocsSitemapManifest, T as renderDocsSitemapMarkdown, U as createDocsCloudAnalytics, V as resolveDocsObservabilityConfig, _ as DocsSitemapFormat, a as createMcpSearchAdapter, b as DocsSitemapPageInput, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_XML_ROUTE, h as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, i as createCustomSearchAdapter, j as DOCS_AGENT_TRACE_EVENT_TYPES, k as resolveDocsSitemapRequest, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_ROUTE, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, v as DocsSitemapManifest, w as readDocsSitemapManifestFromContentMap, x as DocsSitemapResolvedConfig, y as DocsSitemapManifestPage, z as emitDocsObservabilityEvent } from "./search-BjQMhpS-.mjs";
|
|
3
3
|
import { DocsMcpPage, DocsMcpResolvedConfig } from "./mcp.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/define-docs.d.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as devInstallCommand, c as
|
|
1
|
+
import { a as devInstallCommand, c as fileExists, d as spawnAndWaitFor, f as writeFileSafe, i as detectPackageManagerFromLockfile, l as installCommand, n as detectGlobalCssFiles, o as exec, r as detectNextAppDir, t as detectFramework, u as readFileSafe } from "./utils-TPe8H1P-.mjs";
|
|
2
2
|
import { $ as svelteDocsPublicHookTemplate, A as nextConfigMergedTemplate, B as nuxtServerApiDocsRouteTemplate, C as injectRootProviderIntoLayout, D as injectTanstackVitePlugins, E as injectTanstackRootProviderIntoRoute, F as nuxtDocsConfigTemplate, G as quickstartPageTemplate, H as nuxtServerDocsPublicMiddlewareTemplate, I as nuxtDocsPageTemplate, J as svelteDocsApiRouteTemplate, K as rootLayoutTemplate, L as nuxtGlobalCssTemplate, M as nextLocaleDocPageTemplate, N as nextLocalizedPageTemplate, O as installationPageTemplate, P as nuxtConfigTemplate, Q as svelteDocsPageTemplate, R as nuxtInstallationPageTemplate, S as injectNuxtCssImport, T as injectSvelteDocsPublicHook, U as nuxtWelcomePageTemplate, V as nuxtServerApiReferenceRouteTemplate, W as postcssConfigTemplate, X as svelteDocsLayoutServerTemplate, Y as svelteDocsConfigTemplate, Z as svelteDocsLayoutTemplate, _ as getAstroAdapterPkg, _t as tanstackViteConfigTemplate, a as astroDocsIndexTemplate, at as svelteWelcomePageTemplate, b as injectAstroDocsMiddleware, bt as welcomePageTemplate, c as astroDocsServerTemplate, ct as tanstackDocsCatchAllRouteTemplate, d as astroQuickstartPageTemplate, dt as tanstackDocsIndexRouteTemplate, et as svelteDocsServerTemplate, f as astroWelcomePageTemplate, ft as tanstackDocsPublicRouteTemplate, g as docsLayoutTemplate, gt as tanstackRootRouteTemplate, h as docsConfigTemplate, ht as tanstackQuickstartPageTemplate, i as astroDocsConfigTemplate, it as svelteRootLayoutTemplate, j as nextConfigTemplate, k as nextApiReferencePageTemplate, l as astroGlobalCssTemplate, lt as tanstackDocsConfigTemplate, m as customThemeTsTemplate, mt as tanstackInstallationPageTemplate, n as astroApiRouteTemplate, nt as svelteInstallationPageTemplate, o as astroDocsMiddlewareTemplate, ot as tanstackApiDocsRouteTemplate, p as customThemeCssTemplate, pt as tanstackDocsServerTemplate, q as svelteApiReferenceRouteTemplate, r as astroConfigTemplate, rt as svelteQuickstartPageTemplate, s as astroDocsPageTemplate, st as tanstackApiReferenceRouteTemplate, t as astroApiReferenceRouteTemplate, tt as svelteGlobalCssTemplate, u as astroInstallationPageTemplate, ut as tanstackDocsFunctionsTemplate, v as globalCssTemplate, vt as tanstackWelcomePageTemplate, w as injectSvelteCssImport, x as injectCssImport, y as injectAstroCssImport, yt as tsconfigTemplate, z as nuxtQuickstartPageTemplate } from "./templates-BpSkUico.mjs";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
package/dist/mcp.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { J as DocsSearchConfig, P as DocsMcpConfig, R as DocsObservabilityConfig, _ as DocsAnalyticsConfig, et as DocsSearchSourcePage, gt as OrderingItem } from "./types-
|
|
1
|
+
import { J as DocsSearchConfig, P as DocsMcpConfig, R as DocsObservabilityConfig, _ as DocsAnalyticsConfig, et as DocsSearchSourcePage, gt as OrderingItem } from "./types-fGTXVS-r.mjs";
|
|
2
2
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
3
|
|
|
4
4
|
//#region src/mcp.d.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./agent-BK7q65dn.mjs";
|
|
2
2
|
import { c as renderDocsRobotsGeneratedBlock, f as upsertDocsRobotsGeneratedBlock, i as DOCS_ROBOTS_GENERATED_BLOCK_START, r as DOCS_ROBOTS_GENERATED_BLOCK_END, u as resolveDocsRobotsConfig } from "./robots-DDrj6Cpo.mjs";
|
|
3
3
|
import { d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-Cio3byUJ.mjs";
|
|
4
|
-
import { t as detectFramework } from "./utils-
|
|
4
|
+
import { t as detectFramework } from "./utils-TPe8H1P-.mjs";
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import pc from "picocolors";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as DocsObservabilityEventInput, Ct as ResolvedDocsRelatedLink, J as DocsSearchConfig, K as DocsSearchAdapterFactory, Nt as TypesenseDocsSearchConfig, Q as DocsSearchResult, R as DocsObservabilityConfig, W as DocsSearchAdapter, Y as DocsSearchDocument, _ as DocsAnalyticsConfig, d as CustomDocsSearchConfig, dt as McpDocsSearchConfig, et as DocsSearchSourcePage, k as DocsAskAIMcpConfig, m as DocsAgentTraceEventInput, q as DocsSearchChunkingConfig, r as AlgoliaDocsSearchConfig, tt as DocsSitemapConfig, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, z as DocsObservabilityEvent } from "./types-
|
|
1
|
+
import { B as DocsObservabilityEventInput, Ct as ResolvedDocsRelatedLink, J as DocsSearchConfig, K as DocsSearchAdapterFactory, Nt as TypesenseDocsSearchConfig, Q as DocsSearchResult, R as DocsObservabilityConfig, W as DocsSearchAdapter, Y as DocsSearchDocument, _ as DocsAnalyticsConfig, d as CustomDocsSearchConfig, dt as McpDocsSearchConfig, et as DocsSearchSourcePage, k as DocsAskAIMcpConfig, m as DocsAgentTraceEventInput, q as DocsSearchChunkingConfig, r as AlgoliaDocsSearchConfig, tt as DocsSitemapConfig, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, z as DocsObservabilityEvent } from "./types-fGTXVS-r.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/cloud-analytics.d.ts
|
|
4
4
|
interface DocsCloudAnalyticsOptions {
|
package/dist/server.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as DocsConfig, B as DocsObservabilityEventInput, D as DocsAskAIFeedbackMessage, E as DocsAskAIFeedbackData, G as DocsSearchAdapterContext, J as DocsSearchConfig, K as DocsSearchAdapterFactory, O as DocsAskAIFeedbackValue, Q as DocsSearchResult, R as DocsObservabilityConfig, T as DocsAskAIFeedbackConfig, W as DocsSearchAdapter, Y as DocsSearchDocument, Z as DocsSearchQuery, _ as DocsAnalyticsConfig, a as ApiReferenceRenderer, dt as McpDocsSearchConfig, et as DocsSearchSourcePage, g as DocsAgentTraceStatus, h as DocsAgentTraceEventType, k as DocsAskAIMcpConfig, m as DocsAgentTraceEventInput, mt as OpenDocsProvider, tt as DocsSitemapConfig, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, z as DocsObservabilityEvent } from "./types-
|
|
2
|
-
import { A as toDocsSitemapMarkdownUrl, B as resolveDocsAnalyticsConfig, C as createDocsSitemapResponse, D as resolveDocsSitemapConfig, E as renderDocsSitemapXml, F as createDocsAgentTraceContext, H as DocsCloudAnalyticsOptions, I as createDocsAgentTraceId, L as emitDocsAgentTraceEvent, M as DocsAgentTraceContext, N as ResolvedDocsAnalyticsConfig, O as resolveDocsSitemapPageLastmod, P as ResolvedDocsObservabilityConfig, R as emitDocsAnalyticsEvent, S as buildDocsSitemapManifest, T as renderDocsSitemapMarkdown, U as createDocsCloudAnalytics, V as resolveDocsObservabilityConfig, _ as DocsSitemapFormat, a as createMcpSearchAdapter, b as DocsSitemapPageInput, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_XML_ROUTE, h as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, i as createCustomSearchAdapter, j as DOCS_AGENT_TRACE_EVENT_TYPES, k as resolveDocsSitemapRequest, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_ROUTE, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, v as DocsSitemapManifest, w as readDocsSitemapManifestFromContentMap, x as DocsSitemapResolvedConfig, y as DocsSitemapManifestPage, z as emitDocsObservabilityEvent } from "./search-
|
|
1
|
+
import { A as DocsConfig, B as DocsObservabilityEventInput, D as DocsAskAIFeedbackMessage, E as DocsAskAIFeedbackData, G as DocsSearchAdapterContext, J as DocsSearchConfig, K as DocsSearchAdapterFactory, O as DocsAskAIFeedbackValue, Q as DocsSearchResult, R as DocsObservabilityConfig, T as DocsAskAIFeedbackConfig, W as DocsSearchAdapter, Y as DocsSearchDocument, Z as DocsSearchQuery, _ as DocsAnalyticsConfig, a as ApiReferenceRenderer, dt as McpDocsSearchConfig, et as DocsSearchSourcePage, g as DocsAgentTraceStatus, h as DocsAgentTraceEventType, k as DocsAskAIMcpConfig, m as DocsAgentTraceEventInput, mt as OpenDocsProvider, tt as DocsSitemapConfig, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, z as DocsObservabilityEvent } from "./types-fGTXVS-r.mjs";
|
|
2
|
+
import { A as toDocsSitemapMarkdownUrl, B as resolveDocsAnalyticsConfig, C as createDocsSitemapResponse, D as resolveDocsSitemapConfig, E as renderDocsSitemapXml, F as createDocsAgentTraceContext, H as DocsCloudAnalyticsOptions, I as createDocsAgentTraceId, L as emitDocsAgentTraceEvent, M as DocsAgentTraceContext, N as ResolvedDocsAnalyticsConfig, O as resolveDocsSitemapPageLastmod, P as ResolvedDocsObservabilityConfig, R as emitDocsAnalyticsEvent, S as buildDocsSitemapManifest, T as renderDocsSitemapMarkdown, U as createDocsCloudAnalytics, V as resolveDocsObservabilityConfig, _ as DocsSitemapFormat, a as createMcpSearchAdapter, b as DocsSitemapPageInput, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_XML_ROUTE, h as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, i as createCustomSearchAdapter, j as DOCS_AGENT_TRACE_EVENT_TYPES, k as resolveDocsSitemapRequest, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_ROUTE, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, v as DocsSitemapManifest, w as readDocsSitemapManifestFromContentMap, x as DocsSitemapResolvedConfig, y as DocsSitemapManifestPage, z as emitDocsObservabilityEvent } from "./search-BjQMhpS-.mjs";
|
|
3
3
|
import { DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpResolvedConfig, DocsMcpSource, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/api-reference.d.ts
|
|
@@ -4,7 +4,7 @@ import "./sitemap-server-DJvxOqX2.mjs";
|
|
|
4
4
|
import { createFilesystemDocsMcpSource } from "./mcp.mjs";
|
|
5
5
|
import "./server.mjs";
|
|
6
6
|
import { c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, p as resolveDocsContentDir, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-Cio3byUJ.mjs";
|
|
7
|
-
import { t as detectFramework } from "./utils-
|
|
7
|
+
import { t as detectFramework } from "./utils-TPe8H1P-.mjs";
|
|
8
8
|
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import pc from "picocolors";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { c as
|
|
1
|
+
import { c as fileExists, i as detectPackageManagerFromLockfile, l as installCommand, o as exec, t as detectFramework } from "./utils-TPe8H1P-.mjs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import pc from "picocolors";
|
|
4
4
|
import * as p from "@clack/prompts";
|
|
5
5
|
|
|
6
6
|
//#region src/cli/upgrade.ts
|
|
7
7
|
/**
|
|
8
|
-
* Upgrade @farming-labs/* packages to
|
|
8
|
+
* Upgrade @farming-labs/* packages to a dist-tag or exact version.
|
|
9
9
|
* Detects framework from package.json by default, or use --framework (next, tanstack-start, nuxt, sveltekit, astro).
|
|
10
10
|
*/
|
|
11
11
|
const PRESETS = [
|
|
@@ -52,15 +52,31 @@ function frameworkFromPreset(preset) {
|
|
|
52
52
|
function getPackagesForFramework(framework) {
|
|
53
53
|
return PACKAGES_BY_FRAMEWORK[framework];
|
|
54
54
|
}
|
|
55
|
+
const exactSemverPattern = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
|
56
|
+
function validateUpgradeVersion(version) {
|
|
57
|
+
const normalized = version.trim();
|
|
58
|
+
if (!exactSemverPattern.test(normalized)) throw new Error(`Invalid version "${version}". Use an exact semver version like 0.1.104.`);
|
|
59
|
+
return normalized;
|
|
60
|
+
}
|
|
61
|
+
function resolveUpgradeTarget(options) {
|
|
62
|
+
if (options.version !== void 0) return validateUpgradeVersion(options.version);
|
|
63
|
+
return options.tag ?? "latest";
|
|
64
|
+
}
|
|
55
65
|
/** Build the install command for upgrade (for testing). */
|
|
56
|
-
function buildUpgradeCommand(framework,
|
|
57
|
-
const
|
|
58
|
-
return `${installCommand(pm)} ${
|
|
66
|
+
function buildUpgradeCommand(framework, target, pm) {
|
|
67
|
+
const packagesWithTarget = PACKAGES_BY_FRAMEWORK[framework].map((name) => `${name}@${target}`);
|
|
68
|
+
return `${installCommand(pm)} ${packagesWithTarget.join(" ")}`;
|
|
59
69
|
}
|
|
60
70
|
async function upgrade(options = {}) {
|
|
61
71
|
const cwd = process.cwd();
|
|
62
|
-
const tag = options.tag ?? "latest";
|
|
63
72
|
p.intro(pc.bgCyan(pc.black(" @farming-labs/docs upgrade ")));
|
|
73
|
+
let target;
|
|
74
|
+
try {
|
|
75
|
+
target = resolveUpgradeTarget(options);
|
|
76
|
+
} catch (error) {
|
|
77
|
+
p.log.error(error instanceof Error ? error.message : "Invalid upgrade version.");
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
64
80
|
if (!fileExists(path.join(cwd, "package.json"))) {
|
|
65
81
|
p.log.error("No package.json found in the current directory. Run this from your project root.");
|
|
66
82
|
process.exit(1);
|
|
@@ -120,13 +136,13 @@ async function upgrade(options = {}) {
|
|
|
120
136
|
pm = pmAnswer;
|
|
121
137
|
p.log.info(`Using ${pc.cyan(pm)} as package manager`);
|
|
122
138
|
}
|
|
123
|
-
const cmd = buildUpgradeCommand(framework,
|
|
139
|
+
const cmd = buildUpgradeCommand(framework, target, pm);
|
|
124
140
|
const packages = getPackagesForFramework(framework);
|
|
125
|
-
p.log.step(`Upgrading ${preset} docs packages to ${
|
|
141
|
+
p.log.step(`Upgrading ${preset} docs packages to ${target}...`);
|
|
126
142
|
p.log.message(pc.dim(packages.join(", ")));
|
|
127
143
|
try {
|
|
128
144
|
exec(cmd, cwd);
|
|
129
|
-
p.log.success(`Packages upgraded to ${
|
|
145
|
+
p.log.success(`Packages upgraded to ${target}.`);
|
|
130
146
|
p.outro(pc.green("Done. Run your dev server to confirm everything works."));
|
|
131
147
|
} catch {
|
|
132
148
|
p.log.error("Upgrade failed. Try running manually:\n " + pc.cyan(cmd));
|
|
@@ -135,4 +151,4 @@ async function upgrade(options = {}) {
|
|
|
135
151
|
}
|
|
136
152
|
|
|
137
153
|
//#endregion
|
|
138
|
-
export { upgrade };
|
|
154
|
+
export { PRESETS, buildUpgradeCommand, frameworkFromPreset, getPackagesForFramework, presetFromFramework, upgrade, validateUpgradeVersion };
|
|
@@ -99,6 +99,20 @@ function exec(command, cwd) {
|
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
|
+
* Run a shell command synchronously and return stdout.
|
|
103
|
+
*/
|
|
104
|
+
function execOutput(command, cwd) {
|
|
105
|
+
return execSync(command, {
|
|
106
|
+
cwd,
|
|
107
|
+
encoding: "utf-8",
|
|
108
|
+
stdio: [
|
|
109
|
+
"ignore",
|
|
110
|
+
"pipe",
|
|
111
|
+
"pipe"
|
|
112
|
+
]
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
102
116
|
* Spawn a process and wait for a specific string in stdout,
|
|
103
117
|
* then resolve with the child process (still running).
|
|
104
118
|
*/
|
|
@@ -142,4 +156,4 @@ function spawnAndWaitFor(command, args, cwd, waitFor, timeoutMs = 6e4) {
|
|
|
142
156
|
}
|
|
143
157
|
|
|
144
158
|
//#endregion
|
|
145
|
-
export { devInstallCommand as a,
|
|
159
|
+
export { devInstallCommand as a, fileExists as c, spawnAndWaitFor as d, writeFileSafe as f, detectPackageManagerFromLockfile as i, installCommand as l, detectGlobalCssFiles as n, exec as o, detectNextAppDir as r, execOutput as s, detectFramework as t, readFileSafe as u };
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|