mintlify 2.0.10 → 2.0.12
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/bin/constants.js +2 -1
- package/bin/constants.js.map +1 -1
- package/bin/index.js +1 -0
- package/bin/index.js.map +1 -1
- package/bin/local-preview/index.js +47 -43
- package/bin/local-preview/index.js.map +1 -1
- package/bin/local-preview/listener/categorize.js +1 -3
- package/bin/local-preview/listener/categorize.js.map +1 -1
- package/bin/local-preview/listener/categorizeFiles.js +47 -0
- package/bin/local-preview/listener/categorizeFiles.js.map +1 -0
- package/bin/local-preview/listener/update.js +0 -17
- package/bin/local-preview/listener/update.js.map +1 -1
- package/bin/local-preview/listener/utils/fileIsMdxOrMd.js +12 -0
- package/bin/local-preview/listener/utils/fileIsMdxOrMd.js.map +1 -0
- package/bin/local-preview/utils/categorizeFiles.js +63 -0
- package/bin/local-preview/utils/categorizeFiles.js.map +1 -0
- package/bin/local-preview/utils/getOpenApiContext.js +58 -0
- package/bin/local-preview/utils/getOpenApiContext.js.map +1 -0
- package/bin/local-preview/utils/injectFavicons.js +72 -0
- package/bin/local-preview/utils/injectFavicons.js.map +1 -0
- package/bin/local-preview/utils/listener.js +116 -0
- package/bin/local-preview/utils/listener.js.map +1 -0
- package/bin/local-preview/utils/metadata.js +118 -0
- package/bin/local-preview/utils/metadata.js.map +1 -0
- package/bin/local-preview/utils/mintConfigFile.js +43 -0
- package/bin/local-preview/utils/mintConfigFile.js.map +1 -0
- package/bin/local-preview/utils/openApiCheck.js +15 -0
- package/bin/local-preview/utils/openApiCheck.js.map +1 -0
- package/bin/local-preview/utils/slugToTitle.js +8 -0
- package/bin/local-preview/utils/slugToTitle.js.map +1 -0
- package/bin/navigation.js +4 -0
- package/bin/navigation.js.map +1 -0
- package/bin/pageTemplate.js +30 -0
- package/bin/pageTemplate.js.map +1 -0
- package/package.json +2 -2
- package/src/constants.ts +3 -1
- package/src/index.ts +1 -0
- package/src/local-preview/index.ts +65 -59
- package/src/local-preview/listener/categorize.ts +1 -5
- package/src/local-preview/listener/update.ts +0 -18
package/bin/constants.js
CHANGED
|
@@ -2,13 +2,14 @@ import path from "path";
|
|
|
2
2
|
import * as url from "url";
|
|
3
3
|
import os from "os";
|
|
4
4
|
// Change this to bump to a newer version of mint's client
|
|
5
|
-
export const TARGET_MINT_VERSION = "v0.0.
|
|
5
|
+
export const TARGET_MINT_VERSION = "v0.0.5";
|
|
6
6
|
// package installation location
|
|
7
7
|
export const INSTALL_PATH = url.fileURLToPath(new URL(".", import.meta.url));
|
|
8
8
|
export const HOME_DIR = os.homedir();
|
|
9
9
|
export const DOT_MINTLIFY = path.join(HOME_DIR, ".mintlify");
|
|
10
10
|
export const VERSION_PATH = path.join(DOT_MINTLIFY, "mint", "mint-version.txt");
|
|
11
11
|
export const CLIENT_PATH = path.join(DOT_MINTLIFY, "mint", "client");
|
|
12
|
+
export const MINT_PATH = path.join(DOT_MINTLIFY, "mint");
|
|
12
13
|
// command execution location
|
|
13
14
|
export const CMD_EXEC_PATH = process.cwd();
|
|
14
15
|
export const SUPPORTED_MEDIA_EXTENSIONS = [
|
package/bin/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C,gCAAgC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAErE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;CACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C,gCAAgC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEzD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;CACN,CAAC"}
|
package/bin/index.js
CHANGED
|
@@ -32,6 +32,7 @@ yargs(hideBin(process.argv))
|
|
|
32
32
|
await scrapeSectionAxiosWrapper(argv, scrapeReadMeSection);
|
|
33
33
|
})
|
|
34
34
|
// Print the help menu when the user enters an invalid command.
|
|
35
|
+
.strictCommands()
|
|
35
36
|
.demandCommand(1, "Unknown command. See above for the list of supported commands.")
|
|
36
37
|
// Alias option flags --help = -h, --version = -v
|
|
37
38
|
.alias("h", "help")
|
package/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,GAAG,MAAM,0BAA0B,CAAC;AAC3C,OAAO,kBAAkB,MAAM,uDAAuD,CAAC;AAEvF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,OAAO,CACN,KAAK,EACL,8DAA8D,EAC9D,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC,CACF;KACA,OAAO,CACN,SAAS,EACT,yCAAyC,EACzC,GAAG,EAAE,GAAE,CAAC,EACR,kBAAkB,CACnB;KACA,OAAO,CACN,mBAAmB,EACnB,gBAAgB,EAChB,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC,CACF;KACA,OAAO,CACN,2BAA2B,EAC3B,wBAAwB,EACxB,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACnD,CAAC,CACF;KACA,OAAO,CACN,0BAA0B,EAC1B,uBAAuB,EACvB,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAClD,CAAC,CACF;KACA,OAAO,CACN,sBAAsB,EACtB,iCAAiC,EACjC,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC,CACF;KACA,OAAO,CACN,8BAA8B,EAC9B,6BAA6B,EAC7B,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC,CACF;KACA,OAAO,CACN,6BAA6B,EAC7B,4BAA4B,EAC5B,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAC7D,CAAC,CACF;IAED,+DAA+D;KAC9D,aAAa,CACZ,CAAC,EACD,gEAAgE,CACjE;IAED,iDAAiD;KAChD,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;KAClB,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;KAErB,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,GAAG,MAAM,0BAA0B,CAAC;AAC3C,OAAO,kBAAkB,MAAM,uDAAuD,CAAC;AAEvF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,OAAO,CACN,KAAK,EACL,8DAA8D,EAC9D,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC,CACF;KACA,OAAO,CACN,SAAS,EACT,yCAAyC,EACzC,GAAG,EAAE,GAAE,CAAC,EACR,kBAAkB,CACnB;KACA,OAAO,CACN,mBAAmB,EACnB,gBAAgB,EAChB,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC,CACF;KACA,OAAO,CACN,2BAA2B,EAC3B,wBAAwB,EACxB,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACnD,CAAC,CACF;KACA,OAAO,CACN,0BAA0B,EAC1B,uBAAuB,EACvB,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAClD,CAAC,CACF;KACA,OAAO,CACN,sBAAsB,EACtB,iCAAiC,EACjC,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC,CACF;KACA,OAAO,CACN,8BAA8B,EAC9B,6BAA6B,EAC7B,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC,CACF;KACA,OAAO,CACN,6BAA6B,EAC7B,4BAA4B,EAC5B,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAC7D,CAAC,CACF;IAED,+DAA+D;KAC9D,cAAc,EAAE;KAChB,aAAa,CACZ,CAAC,EACD,gEAAgE,CACjE;IAED,iDAAiD;KAChD,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;KAClB,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;KAErB,KAAK,EAAE,CAAC"}
|
|
@@ -7,9 +7,10 @@ import { isInternetAvailable } from "is-internet-available";
|
|
|
7
7
|
import path from "path";
|
|
8
8
|
import shell from "shelljs";
|
|
9
9
|
import { Octokit } from "@octokit/rest";
|
|
10
|
-
import { CLIENT_PATH, HOME_DIR, DOT_MINTLIFY, CMD_EXEC_PATH, TARGET_MINT_VERSION, VERSION_PATH, } from "../constants.js";
|
|
10
|
+
import { CLIENT_PATH, HOME_DIR, DOT_MINTLIFY, CMD_EXEC_PATH, TARGET_MINT_VERSION, VERSION_PATH, MINT_PATH, } from "../constants.js";
|
|
11
11
|
import { buildLogger, ensureYarn } from "../util.js";
|
|
12
12
|
import listener from "./listener/index.js";
|
|
13
|
+
import { getConfigPath } from "./listener/utils/mintConfigFile.js";
|
|
13
14
|
const shellExec = (cmd) => {
|
|
14
15
|
return shell.exec(cmd, { silent: true });
|
|
15
16
|
};
|
|
@@ -38,64 +39,65 @@ const promptForYarn = async () => {
|
|
|
38
39
|
});
|
|
39
40
|
}
|
|
40
41
|
};
|
|
42
|
+
const downloadTargetMint = async (logger) => {
|
|
43
|
+
fse.emptyDirSync(MINT_PATH);
|
|
44
|
+
logger.text = "Downloading Mintlify framework...";
|
|
45
|
+
const octokit = new Octokit();
|
|
46
|
+
const downloadRes = await octokit.repos.downloadTarballArchive({
|
|
47
|
+
owner: "mintlify",
|
|
48
|
+
repo: "mint",
|
|
49
|
+
ref: TARGET_MINT_VERSION,
|
|
50
|
+
});
|
|
51
|
+
logger.text = "Extracting Mintlify framework...";
|
|
52
|
+
const TAR_PATH = path.join(MINT_PATH, "mint.tar.gz");
|
|
53
|
+
// Unzip tar file
|
|
54
|
+
fse.writeFileSync(TAR_PATH, Buffer.from(downloadRes.data));
|
|
55
|
+
shellExec("tar -xzf mint.tar.gz");
|
|
56
|
+
// List all files in tar file and get the first one.
|
|
57
|
+
// There is never anything else in the tar file, so this is safe.
|
|
58
|
+
// We do this because the folder name includes the commit sha, so we can't hardcode it.
|
|
59
|
+
// Lastly, we call .trim() to remove the newline character.
|
|
60
|
+
const extractedFolderName = shellExec('tar -tzf mint.tar.gz | head -1 | cut -f1 -d"/"').stdout.trim();
|
|
61
|
+
fse.removeSync(TAR_PATH);
|
|
62
|
+
fse.moveSync(path.join(MINT_PATH, extractedFolderName, "client"), path.join(CLIENT_PATH));
|
|
63
|
+
fse.writeFileSync(VERSION_PATH, TARGET_MINT_VERSION);
|
|
64
|
+
// Delete unnecessary contents downloaded from GitHub
|
|
65
|
+
fse.removeSync(path.join(MINT_PATH, extractedFolderName));
|
|
66
|
+
logger.text = "Installing dependencies...";
|
|
67
|
+
ensureYarn(logger);
|
|
68
|
+
shell.cd(CLIENT_PATH);
|
|
69
|
+
shellExec("yarn");
|
|
70
|
+
};
|
|
71
|
+
const checkForMintJson = async (logger) => {
|
|
72
|
+
const configPath = await getConfigPath(CMD_EXEC_PATH);
|
|
73
|
+
if (configPath == null) {
|
|
74
|
+
logger.fail("Must be ran in a directory where a mint.json file exists.");
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
return;
|
|
78
|
+
};
|
|
41
79
|
const dev = async (argv) => {
|
|
42
80
|
shell.cd(HOME_DIR);
|
|
43
81
|
await promptForYarn();
|
|
44
82
|
const logger = buildLogger("Preparing local Mintlify instance...");
|
|
45
|
-
await fse.ensureDir(
|
|
46
|
-
const MINT_PATH = path.join(DOT_MINTLIFY, "mint");
|
|
83
|
+
await fse.ensureDir(MINT_PATH);
|
|
47
84
|
shell.cd(MINT_PATH);
|
|
48
|
-
// The CLI can only run offline if Mint was already downloaded
|
|
49
85
|
const internet = await isInternetAvailable();
|
|
50
86
|
if (!internet && !(await pathExists(CLIENT_PATH))) {
|
|
51
87
|
logger.fail("Running mintlify dev for the first time requires an internet connection.");
|
|
52
88
|
process.exit(1);
|
|
53
89
|
}
|
|
54
|
-
// Avoid checking if we are on the target Mint if we are offline
|
|
55
90
|
if (internet) {
|
|
56
91
|
const mintVersionExists = await pathExists(VERSION_PATH);
|
|
57
|
-
|
|
58
|
-
// We do this because users updating from an older version of the CLI never have mint-version.txt set.
|
|
59
|
-
let downloadTargetMint = !mintVersionExists;
|
|
60
|
-
// Download target mint if the current version is different. Keep in mind this also allows
|
|
61
|
-
// downgrading to an older version of Mintlify by installing an older CLI version.
|
|
92
|
+
let needToDownloadTargetMint = !mintVersionExists;
|
|
62
93
|
if (mintVersionExists) {
|
|
63
94
|
const currVersion = fse.readFileSync(VERSION_PATH, "utf8");
|
|
64
95
|
if (currVersion !== TARGET_MINT_VERSION) {
|
|
65
|
-
|
|
96
|
+
needToDownloadTargetMint = true;
|
|
66
97
|
}
|
|
67
98
|
}
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
fse.emptyDirSync(MINT_PATH);
|
|
71
|
-
logger.text = "Downloading Mintlify framework...";
|
|
72
|
-
const octokit = new Octokit();
|
|
73
|
-
const downloadRes = await octokit.repos.downloadTarballArchive({
|
|
74
|
-
owner: "mintlify",
|
|
75
|
-
repo: "mint",
|
|
76
|
-
ref: TARGET_MINT_VERSION,
|
|
77
|
-
});
|
|
78
|
-
logger.text = "Extracting Mintlify framework...";
|
|
79
|
-
const TAR_PATH = path.join(MINT_PATH, "mint.tar.gz");
|
|
80
|
-
// Unzip tar file
|
|
81
|
-
fse.writeFileSync(TAR_PATH, Buffer.from(downloadRes.data));
|
|
82
|
-
shellExec("tar -xzf mint.tar.gz");
|
|
83
|
-
// List all files in tar file and get the first one.
|
|
84
|
-
// There is never anything else in the tar file, so this is safe.
|
|
85
|
-
// We do this because the folder name includes the commit sha, so we can't hardcode it.
|
|
86
|
-
// Lastly, we call .trim() to remove the newline character.
|
|
87
|
-
const extractedFolderName = shellExec('tar -tzf mint.tar.gz | head -1 | cut -f1 -d"/"').stdout.trim();
|
|
88
|
-
// Delete tar file
|
|
89
|
-
fse.removeSync(TAR_PATH);
|
|
90
|
-
fse.moveSync(path.join(MINT_PATH, extractedFolderName, "client"), path.join(CLIENT_PATH));
|
|
91
|
-
// Store the currently downloaded version
|
|
92
|
-
fse.writeFileSync(VERSION_PATH, TARGET_MINT_VERSION);
|
|
93
|
-
// Delete unnecessary contents downloaded from GitHub
|
|
94
|
-
fse.removeSync(path.join(MINT_PATH, extractedFolderName));
|
|
95
|
-
logger.text = "Installing dependencies...";
|
|
96
|
-
ensureYarn(logger);
|
|
97
|
-
shell.cd(CLIENT_PATH);
|
|
98
|
-
shellExec("yarn");
|
|
99
|
+
if (needToDownloadTargetMint) {
|
|
100
|
+
await downloadTargetMint(logger);
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
103
|
if (!(await nodeModulesExists())) {
|
|
@@ -115,9 +117,11 @@ const dev = async (argv) => {
|
|
|
115
117
|
}
|
|
116
118
|
process.exit(1);
|
|
117
119
|
}
|
|
120
|
+
await checkForMintJson(logger);
|
|
121
|
+
shell.cd(CLIENT_PATH);
|
|
118
122
|
const relativePath = path.relative(CLIENT_PATH, CMD_EXEC_PATH);
|
|
119
123
|
shellExec(`yarn preconfigure ${relativePath}`);
|
|
120
|
-
logger.succeed("Local Mintlify instance is ready. Launching your site
|
|
124
|
+
logger.succeed("Local Mintlify instance is ready. Launching your site...");
|
|
121
125
|
run(argv.port || "3000");
|
|
122
126
|
};
|
|
123
127
|
const run = (port) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-preview/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,aAAa,MAAM,eAAe,CAAC;AAC1C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-preview/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,9 +32,7 @@ export const categorizeFiles = async (contentDirectoryPath) => {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
else if (
|
|
36
|
-
!filename.endsWith("mint.json")) &&
|
|
37
|
-
!isOpenApi) {
|
|
35
|
+
else if (!filename.endsWith("mint.json") && !isOpenApi) {
|
|
38
36
|
// all other files
|
|
39
37
|
staticFilenames.push(filename);
|
|
40
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"categorize.js","sourceRoot":"","sources":["../../../src/local-preview/listener/categorize.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,oBAA4B,EAAE,EAAE;IACpE,MAAM,0BAA0B,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,0BAA0B,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9C,QAAQ,CAAC,IAAI,CACX,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,SAAS,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,IAAI,CAAC,EAAE;gBAC5D,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;oBACrC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACzB;qBAAM;oBACL,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACjC;aACF;iBAAM,IACL,SAAS;gBACT,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,CAAC,EACrE;gBACA,MAAM,WAAW,GAAG,MAAM,YAAY,CACpC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAC1C,CAAC;gBACF,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;gBAClC,IAAI,SAAS,EAAE;oBACb,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;oBAC3C,YAAY,CAAC,IAAI,CAAC;wBAChB,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;wBAC1D,IAAI,EAAE,WAAW,CAAC,IAAI;qBACvB,CAAC,CAAC;iBACJ;aACF;iBAAM,
|
|
1
|
+
{"version":3,"file":"categorize.js","sourceRoot":"","sources":["../../../src/local-preview/listener/categorize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// TODO - put in prebuild package
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { getFileExtension, openApiCheck, getFileList } from "./utils.js";
|
|
4
|
+
const categorizeFiles = async (contentDirectoryPath) => {
|
|
5
|
+
const allFilesInCmdExecutionPath = await getFileList(contentDirectoryPath);
|
|
6
|
+
const contentFilenames = [];
|
|
7
|
+
const staticFilenames = [];
|
|
8
|
+
const promises = [];
|
|
9
|
+
const openApiFiles = [];
|
|
10
|
+
const snippets = [];
|
|
11
|
+
allFilesInCmdExecutionPath.forEach((filename) => {
|
|
12
|
+
promises.push((async () => {
|
|
13
|
+
const extension = getFileExtension(filename);
|
|
14
|
+
let isOpenApi = false;
|
|
15
|
+
if (extension && (extension === "mdx" || extension === "md")) {
|
|
16
|
+
if (filename.startsWith("/_snippets")) {
|
|
17
|
+
snippets.push(filename);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
contentFilenames.push(filename);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else if (extension &&
|
|
24
|
+
(extension === "json" || extension === "yaml" || extension === "yml")) {
|
|
25
|
+
const openApiInfo = await openApiCheck(path.join(contentDirectoryPath, filename));
|
|
26
|
+
isOpenApi = openApiInfo.isOpenApi;
|
|
27
|
+
if (isOpenApi) {
|
|
28
|
+
const fileName = path.parse(filename).base;
|
|
29
|
+
openApiFiles.push({
|
|
30
|
+
filename: fileName.substring(0, fileName.lastIndexOf(".")),
|
|
31
|
+
spec: openApiInfo.spec,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else if ((!filename.endsWith("mint.config.json") ||
|
|
36
|
+
!filename.endsWith("mint.json")) &&
|
|
37
|
+
!isOpenApi) {
|
|
38
|
+
// all other files
|
|
39
|
+
staticFilenames.push(filename);
|
|
40
|
+
}
|
|
41
|
+
})());
|
|
42
|
+
});
|
|
43
|
+
await Promise.all(promises);
|
|
44
|
+
return { contentFilenames, staticFilenames, openApiFiles, snippets };
|
|
45
|
+
};
|
|
46
|
+
export default categorizeFiles;
|
|
47
|
+
//# sourceMappingURL=categorizeFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categorizeFiles.js","sourceRoot":"","sources":["../../../src/local-preview/listener/categorizeFiles.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,eAAe,GAAG,KAAK,EAAE,oBAA4B,EAAE,EAAE;IAC7D,MAAM,0BAA0B,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,0BAA0B,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9C,QAAQ,CAAC,IAAI,CACX,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,SAAS,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,IAAI,CAAC,EAAE;gBAC5D,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;oBACrC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACzB;qBAAM;oBACL,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACjC;aACF;iBAAM,IACL,SAAS;gBACT,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,CAAC,EACrE;gBACA,MAAM,WAAW,GAAG,MAAM,YAAY,CACpC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAC1C,CAAC;gBACF,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;gBAClC,IAAI,SAAS,EAAE;oBACb,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;oBAC3C,YAAY,CAAC,IAAI,CAAC;wBAChB,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;wBAC1D,IAAI,EAAE,WAAW,CAAC,IAAI;qBACvB,CAAC,CAAC;iBACJ;aACF;iBAAM,IACL,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACrC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAClC,CAAC,SAAS,EACV;gBACA,kBAAkB;gBAClB,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAChC;QACH,CAAC,CAAC,EAAE,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AACvE,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,29 +1,12 @@
|
|
|
1
1
|
// TODO: Add Types
|
|
2
2
|
import fse from "fs-extra";
|
|
3
3
|
import { promises as _promises } from "fs";
|
|
4
|
-
import { getConfigPath } from "./utils/mintConfigFile.js";
|
|
5
4
|
import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
|
|
6
5
|
import { join } from "path";
|
|
7
6
|
import { generateNav } from "./generate.js";
|
|
8
7
|
import { categorizeFiles } from "./categorize.js";
|
|
9
8
|
const { readFile } = _promises;
|
|
10
9
|
// TODO: Put in prebuild package
|
|
11
|
-
export const updateConfigFile = async (contentDirectoryPath) => {
|
|
12
|
-
const configTargetPath = join(CLIENT_PATH, "src/_props/mint.json");
|
|
13
|
-
await fse.remove(configTargetPath);
|
|
14
|
-
let configObj = null;
|
|
15
|
-
const configPath = await getConfigPath(contentDirectoryPath);
|
|
16
|
-
if (configPath) {
|
|
17
|
-
await fse.remove(configTargetPath);
|
|
18
|
-
await fse.copy(configPath, configTargetPath);
|
|
19
|
-
const configContents = await readFile(configPath);
|
|
20
|
-
configObj = JSON.parse(configContents.toString());
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
return configObj;
|
|
26
|
-
};
|
|
27
10
|
export const updateGeneratedNav = async () => {
|
|
28
11
|
const generatedNav = await generateNav();
|
|
29
12
|
const targetPath = join(CLIENT_PATH, "src", "_props", "generatedNav.json");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/local-preview/listener/update.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/local-preview/listener/update.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;AAE/B,gCAAgC;AAEhC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;IAC3C,MAAM,YAAY,GAAG,MAAM,WAAW,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC3E,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACtE,IAAI,EAAE,GAAG;KACV,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;IAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC3E,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACtE,IAAI,EAAE,GAAG;KACV,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import pathUtil from "path";
|
|
2
|
+
export const fileIsMdxOrMd = (filename) => {
|
|
3
|
+
try {
|
|
4
|
+
const extension = pathUtil.parse(filename).ext;
|
|
5
|
+
return extension && (extension === ".mdx" || extension === ".md");
|
|
6
|
+
}
|
|
7
|
+
catch (e) {
|
|
8
|
+
// TypeError when filename is not a string
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=fileIsMdxOrMd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileIsMdxOrMd.js","sourceRoot":"","sources":["../../../../src/local-preview/listener/utils/fileIsMdxOrMd.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,MAAM,CAAC;AAE5B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,EAAE;IAChD,IAAI;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;QAC/C,OAAO,SAAS,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC;KACnE;IAAC,OAAO,CAAC,EAAE;QACV,0CAA0C;QAC1C,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { promises as _promises } from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { CMD_EXEC_PATH } from "../../constants.js";
|
|
4
|
+
import openApiCheck from "./openApiCheck.js";
|
|
5
|
+
import { getFileExtension } from "../../util.js";
|
|
6
|
+
const { readdir } = _promises;
|
|
7
|
+
const getFileList = async (dirName, og = dirName) => {
|
|
8
|
+
let files = [];
|
|
9
|
+
const items = await readdir(dirName, { withFileTypes: true });
|
|
10
|
+
for (const item of items) {
|
|
11
|
+
if (item.isDirectory()) {
|
|
12
|
+
files = [...files, ...(await getFileList(`${dirName}/${item.name}`, og))];
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
const path = `${dirName}/${item.name}`;
|
|
16
|
+
const name = path.replace(og, "");
|
|
17
|
+
files.push({ path, isSymbolicLink: item.isSymbolicLink(), name });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return files;
|
|
21
|
+
};
|
|
22
|
+
const categorizeFiles = async () => {
|
|
23
|
+
const allFilesInCmdExecutionPath = await getFileList(CMD_EXEC_PATH);
|
|
24
|
+
const markdownFiles = [];
|
|
25
|
+
const staticFiles = [];
|
|
26
|
+
const promises = [];
|
|
27
|
+
const openApiFiles = [];
|
|
28
|
+
allFilesInCmdExecutionPath.forEach((file) => {
|
|
29
|
+
promises.push((async () => {
|
|
30
|
+
const extension = getFileExtension(file.name);
|
|
31
|
+
let isOpenApi = false;
|
|
32
|
+
if (extension &&
|
|
33
|
+
(extension === "mdx" || extension === "md" || extension === "tsx")) {
|
|
34
|
+
markdownFiles.push(file.name);
|
|
35
|
+
}
|
|
36
|
+
else if (extension &&
|
|
37
|
+
(extension === "json" || extension === "yaml" || extension === "yml")) {
|
|
38
|
+
const openApiInfo = await openApiCheck(path.join(CMD_EXEC_PATH, file.name));
|
|
39
|
+
isOpenApi = openApiInfo.isOpenApi;
|
|
40
|
+
if (isOpenApi) {
|
|
41
|
+
const fileName = path.parse(file.name).base;
|
|
42
|
+
openApiFiles.push({
|
|
43
|
+
name: fileName.substring(0, fileName.lastIndexOf(".")),
|
|
44
|
+
openapi: openApiInfo.openapi,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else if ((!file.name.endsWith("mint.config.json") ||
|
|
49
|
+
!file.name.endsWith("mint.json")) &&
|
|
50
|
+
!isOpenApi) {
|
|
51
|
+
// all other files
|
|
52
|
+
staticFiles.push(file.name);
|
|
53
|
+
}
|
|
54
|
+
})());
|
|
55
|
+
});
|
|
56
|
+
await Promise.all(promises);
|
|
57
|
+
const openApi = {
|
|
58
|
+
files: openApiFiles,
|
|
59
|
+
};
|
|
60
|
+
return { markdownFiles, staticFiles, openApi };
|
|
61
|
+
};
|
|
62
|
+
export default categorizeFiles;
|
|
63
|
+
//# sourceMappingURL=categorizeFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categorizeFiles.js","sourceRoot":"","sources":["../../../src/local-preview/utils/categorizeFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export const extractMethodAndEndpoint = (api) => {
|
|
2
|
+
const methodRegex = /(get|post|put|delete|patch)\s/i;
|
|
3
|
+
const trimmed = api.trim();
|
|
4
|
+
const foundMethod = trimmed.match(methodRegex);
|
|
5
|
+
const startIndexOfMethod = foundMethod ? api.indexOf(foundMethod[0]) : 0;
|
|
6
|
+
const endIndexOfMethod = foundMethod
|
|
7
|
+
? startIndexOfMethod + foundMethod[0].length - 1
|
|
8
|
+
: 0;
|
|
9
|
+
const filename = api.substring(0, startIndexOfMethod).trim();
|
|
10
|
+
return {
|
|
11
|
+
method: foundMethod ? foundMethod[0].slice(0, -1).toUpperCase() : undefined,
|
|
12
|
+
endpoint: api.substring(endIndexOfMethod).trim(),
|
|
13
|
+
filename: filename ? filename : undefined,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export const getOpenApiOperationMethodAndEndpoint = (openApi, openApiMetaField) => {
|
|
17
|
+
var _a;
|
|
18
|
+
const { endpoint, method, filename } = extractMethodAndEndpoint(openApiMetaField);
|
|
19
|
+
let path;
|
|
20
|
+
(_a = openApi.files) === null || _a === void 0 ? void 0 : _a.forEach((file) => {
|
|
21
|
+
const openApiFile = file.openapi;
|
|
22
|
+
const openApiPath = openApiFile.paths && openApiFile.paths[endpoint];
|
|
23
|
+
const isFilenameOrNone = !filename || filename === file.name;
|
|
24
|
+
if (openApiPath && isFilenameOrNone) {
|
|
25
|
+
path = openApiPath;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
if (path == null) {
|
|
29
|
+
return {};
|
|
30
|
+
}
|
|
31
|
+
let operation;
|
|
32
|
+
if (method) {
|
|
33
|
+
operation = path[method.toLowerCase()];
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const firstOperationKey = Object.keys(path)[0];
|
|
37
|
+
operation = path[firstOperationKey];
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
operation,
|
|
41
|
+
method,
|
|
42
|
+
endpoint,
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export const getOpenApiTitleAndDescription = (openApi, openApiMetaField) => {
|
|
46
|
+
if (openApi == null || !openApiMetaField || openApiMetaField == null) {
|
|
47
|
+
return {};
|
|
48
|
+
}
|
|
49
|
+
const { operation } = getOpenApiOperationMethodAndEndpoint(openApi, openApiMetaField);
|
|
50
|
+
if (operation == null) {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
title: operation.summary,
|
|
55
|
+
description: operation.description,
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=getOpenApiContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOpenApiContext.js","sourceRoot":"","sources":["../../../src/local-preview/utils/getOpenApiContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import favicons from "favicons";
|
|
2
|
+
import { promises as _promises } from "fs";
|
|
3
|
+
import { outputFile } from "fs-extra";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
|
|
6
|
+
const { readFile } = _promises;
|
|
7
|
+
export const injectFavicons = async (configObj, logger) => {
|
|
8
|
+
if ((configObj === null || configObj === void 0 ? void 0 : configObj.favicon) == null)
|
|
9
|
+
return;
|
|
10
|
+
const desiredPath = join(CMD_EXEC_PATH, configObj.favicon);
|
|
11
|
+
const favicon = await readFile(desiredPath);
|
|
12
|
+
if (favicon == null)
|
|
13
|
+
return;
|
|
14
|
+
logger.start("Generating favicons...");
|
|
15
|
+
const promises = [];
|
|
16
|
+
try {
|
|
17
|
+
const response = await favicons(favicon, faviconConfig(configObj === null || configObj === void 0 ? void 0 : configObj.name));
|
|
18
|
+
response.images.forEach((img) => {
|
|
19
|
+
promises.push((async () => {
|
|
20
|
+
const targetPath = join(CLIENT_PATH, "public", "favicons", img.name);
|
|
21
|
+
await outputFile(targetPath, Buffer.from(img.contents), {
|
|
22
|
+
flag: "w",
|
|
23
|
+
});
|
|
24
|
+
})());
|
|
25
|
+
});
|
|
26
|
+
response.files.forEach((file) => {
|
|
27
|
+
promises.push((async () => {
|
|
28
|
+
const targetPath = join(CLIENT_PATH, "public", "favicons", file.name);
|
|
29
|
+
await outputFile(targetPath, file.contents, { flag: "w" });
|
|
30
|
+
})());
|
|
31
|
+
});
|
|
32
|
+
await Promise.all(promises);
|
|
33
|
+
logger.succeed("Favicons generated");
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
console.log(err.message); // Error description e.g. "An unknown error has occurred"
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const faviconConfig = (name) => ({
|
|
40
|
+
path: "/favicons",
|
|
41
|
+
appName: name,
|
|
42
|
+
appShortName: name,
|
|
43
|
+
appDescription: null,
|
|
44
|
+
developerName: null,
|
|
45
|
+
developerURL: null,
|
|
46
|
+
dir: "auto",
|
|
47
|
+
lang: "en-US",
|
|
48
|
+
background: "#fff",
|
|
49
|
+
theme_color: "#fff",
|
|
50
|
+
appleStatusBarStyle: "black-translucent",
|
|
51
|
+
display: "standalone",
|
|
52
|
+
orientation: "any",
|
|
53
|
+
scope: "/",
|
|
54
|
+
start_url: "/?homescreen=1",
|
|
55
|
+
preferRelatedApplications: false,
|
|
56
|
+
relatedApplications: undefined,
|
|
57
|
+
version: "1.0",
|
|
58
|
+
logging: false,
|
|
59
|
+
pixel_art: false,
|
|
60
|
+
loadManifestWithCredentials: true,
|
|
61
|
+
manifestMaskable: false,
|
|
62
|
+
icons: {
|
|
63
|
+
android: ["android-chrome-192x192.png", "android-chrome-256x256.png"],
|
|
64
|
+
appleIcon: ["apple-touch-icon.png"],
|
|
65
|
+
appleStartup: false,
|
|
66
|
+
favicons: true,
|
|
67
|
+
windows: ["mstile-150x150.png"],
|
|
68
|
+
yandex: false,
|
|
69
|
+
firefox: false,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=injectFavicons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectFavicons.js","sourceRoot":"","sources":["../../../src/local-preview/utils/injectFavicons.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;AAE/B,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IACxD,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,KAAI,IAAI;QAAE,OAAO;IAEvC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO;IAC5B,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,CAAC,CAAC;QACzE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,QAAQ,CAAC,IAAI,CACX,CAAC,KAAK,IAAI,EAAE;gBACV,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrE,MAAM,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;oBACtD,IAAI,EAAE,GAAG;iBACV,CAAC,CAAC;YACL,CAAC,CAAC,EAAE,CACL,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,QAAQ,CAAC,IAAI,CACX,CAAC,KAAK,IAAI,EAAE;gBACV,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtE,MAAM,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7D,CAAC,CAAC,EAAE,CACL,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;KACtC;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yDAAyD;KACpF;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;IACnB,mBAAmB,EAAE,mBAAmB;IACxC,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,KAAK;IAClB,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,gBAAgB;IAC3B,yBAAyB,EAAE,KAAK;IAChC,mBAAmB,EAAE,SAAS;IAC9B,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,KAAK;IAChB,2BAA2B,EAAE,IAAI;IACjC,gBAAgB,EAAE,KAAK;IACvB,KAAK,EAAE;QACL,OAAO,EAAE,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;QACrE,SAAS,EAAE,CAAC,sBAAsB,CAAC;QACnC,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;KACf;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import chokidar from "chokidar";
|
|
2
|
+
import fse from "fs-extra";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
|
|
5
|
+
import { fileBelongsInPagesFolder, getFileExtension } from "../../util.js";
|
|
6
|
+
import { createMetadataFile } from "./metadata.js";
|
|
7
|
+
import openApiCheck from "./openApiCheck.js";
|
|
8
|
+
const listener = () => {
|
|
9
|
+
chokidar
|
|
10
|
+
.watch(CMD_EXEC_PATH, {
|
|
11
|
+
ignoreInitial: true,
|
|
12
|
+
ignored: ["node_modules", ".git"],
|
|
13
|
+
cwd: CMD_EXEC_PATH,
|
|
14
|
+
})
|
|
15
|
+
.on("all", async (event, filename) => {
|
|
16
|
+
if (event === "unlink" || event === "unlinkDir") {
|
|
17
|
+
if (fileBelongsInPagesFolder(filename)) {
|
|
18
|
+
const targetPath = path.join(CLIENT_PATH, "src", "pages", filename);
|
|
19
|
+
await fse.remove(targetPath);
|
|
20
|
+
console.log("Page deleted: ", filename);
|
|
21
|
+
}
|
|
22
|
+
else if (filename === "mint.config.json" ||
|
|
23
|
+
filename === "mint.json") {
|
|
24
|
+
const targetPath = path.join(CLIENT_PATH, "src", "mint.json");
|
|
25
|
+
await fse.remove(targetPath);
|
|
26
|
+
console.log("⚠️ mint.json deleted. Please create a new mint.json file as it is mandatory.");
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// all other files
|
|
31
|
+
const targetPath = path.join(CLIENT_PATH, "public", filename);
|
|
32
|
+
await fse.remove(targetPath);
|
|
33
|
+
console.log("Static file deleted: ", filename);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const filePath = path.join(CMD_EXEC_PATH, filename);
|
|
38
|
+
let updateMetadata = false;
|
|
39
|
+
if (fileBelongsInPagesFolder(filename)) {
|
|
40
|
+
updateMetadata = true;
|
|
41
|
+
const targetPath = path.join(CLIENT_PATH, "src", "pages", filename);
|
|
42
|
+
await fse.copy(filePath, targetPath);
|
|
43
|
+
switch (event) {
|
|
44
|
+
case "add":
|
|
45
|
+
case "addDir":
|
|
46
|
+
console.log("New page detected: ", filename);
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
console.log("Page edited: ", filename);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else if (filename === "mint.config.json" ||
|
|
54
|
+
filename === "mint.json") {
|
|
55
|
+
updateMetadata = true;
|
|
56
|
+
const targetPath = path.join(CLIENT_PATH, "src", "mint.json");
|
|
57
|
+
await fse.copy(filePath, targetPath);
|
|
58
|
+
switch (event) {
|
|
59
|
+
case "add":
|
|
60
|
+
case "addDir":
|
|
61
|
+
console.log("Config added");
|
|
62
|
+
break;
|
|
63
|
+
default:
|
|
64
|
+
console.log("Config edited");
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const extension = getFileExtension(filename);
|
|
70
|
+
let isOpenApi = false;
|
|
71
|
+
if (extension &&
|
|
72
|
+
(extension === "json" ||
|
|
73
|
+
extension === "yaml" ||
|
|
74
|
+
extension === "yml")) {
|
|
75
|
+
const openApiInfo = await openApiCheck(path.join(CMD_EXEC_PATH, filename));
|
|
76
|
+
isOpenApi = openApiInfo.isOpenApi;
|
|
77
|
+
if (isOpenApi) {
|
|
78
|
+
await fse.outputFile(path.join(CLIENT_PATH, "src", "openapi.json"), JSON.stringify(openApiInfo.openapi), {
|
|
79
|
+
flag: "w",
|
|
80
|
+
});
|
|
81
|
+
updateMetadata = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (!isOpenApi) {
|
|
85
|
+
// all other files
|
|
86
|
+
const targetPath = path.join(CLIENT_PATH, "public", filename);
|
|
87
|
+
await fse.copy(filePath, targetPath);
|
|
88
|
+
}
|
|
89
|
+
switch (event) {
|
|
90
|
+
case "add":
|
|
91
|
+
case "addDir":
|
|
92
|
+
if (isOpenApi) {
|
|
93
|
+
console.log("OpenApi file added: ", filename);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.log("Static file added: ", filename);
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
default:
|
|
100
|
+
if (isOpenApi) {
|
|
101
|
+
console.log("OpenApi file edited: ", filename);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
console.log("Static file edited: ", filename);
|
|
105
|
+
}
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (updateMetadata) {
|
|
110
|
+
await createMetadataFile();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
export default listener;
|
|
116
|
+
//# sourceMappingURL=listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../src/local-preview/utils/listener.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// TODO - add types
|
|
2
|
+
import fse from "fs-extra";
|
|
3
|
+
import { promises as _promises } from "fs";
|
|
4
|
+
import matter from "gray-matter";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import categorizeFiles from "./categorizeFiles.js";
|
|
7
|
+
import { getConfigObj } from "./mintConfigFile.js";
|
|
8
|
+
import { getOpenApiTitleAndDescription } from "./getOpenApiContext.js";
|
|
9
|
+
import { slugToTitle } from "./slugToTitle.js";
|
|
10
|
+
import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
|
|
11
|
+
const { readFile } = _promises;
|
|
12
|
+
// End matter is front matter, but at the end
|
|
13
|
+
const getIndexOfEndMatter = (fileContents) => {
|
|
14
|
+
const frontMatters = fileContents.match(/---\n(title:.+\n|description:.+\n|sidebarTitle:.+\n|api:.+\n|openapi:.+\n)+---$/m);
|
|
15
|
+
if (frontMatters) {
|
|
16
|
+
return fileContents.indexOf(frontMatters[0]);
|
|
17
|
+
}
|
|
18
|
+
return -1;
|
|
19
|
+
};
|
|
20
|
+
export const potentiallyRemoveEndMatter = (fileContents) => {
|
|
21
|
+
const endMatterIndex = getIndexOfEndMatter(fileContents);
|
|
22
|
+
if (endMatterIndex === -1) {
|
|
23
|
+
return fileContents;
|
|
24
|
+
}
|
|
25
|
+
return fileContents.substring(0, endMatterIndex);
|
|
26
|
+
};
|
|
27
|
+
const getMetadata = (fileContents) => {
|
|
28
|
+
const { data } = matter(fileContents);
|
|
29
|
+
if (Object.keys(data).length > 0) {
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
const startIndex = getIndexOfEndMatter(fileContents);
|
|
33
|
+
if (startIndex === -1) {
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
const fileContentFromFrontMatter = fileContents.substring(startIndex);
|
|
37
|
+
const { data: nonTopFrontMatter } = matter(fileContentFromFrontMatter);
|
|
38
|
+
return nonTopFrontMatter;
|
|
39
|
+
};
|
|
40
|
+
export const createPage = (path, content, openApi) => {
|
|
41
|
+
const slug = path.replace(/\.mdx?$/, "").substring(1);
|
|
42
|
+
let defaultTitle = slugToTitle(slug);
|
|
43
|
+
const metadata = getMetadata(content);
|
|
44
|
+
// Append data from OpenAPI if it exists
|
|
45
|
+
const { title, description } = getOpenApiTitleAndDescription(openApi, metadata === null || metadata === void 0 ? void 0 : metadata.openapi);
|
|
46
|
+
if (title) {
|
|
47
|
+
defaultTitle = title;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
[slug]: Object.assign(Object.assign({ title: defaultTitle, description }, metadata), { href: `/${slug}` }),
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
export const createMetadataFileFromPages = (pages, configObj) => {
|
|
54
|
+
const targetPath = path.join(CLIENT_PATH, "src", "metadata.json");
|
|
55
|
+
const createNav = (nav) => {
|
|
56
|
+
return {
|
|
57
|
+
group: nav.group,
|
|
58
|
+
version: nav.version,
|
|
59
|
+
pages: nav.pages.map((page) => {
|
|
60
|
+
if (typeof page === "string") {
|
|
61
|
+
return pages[page];
|
|
62
|
+
}
|
|
63
|
+
return createNav(page);
|
|
64
|
+
}),
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
if ((configObj === null || configObj === void 0 ? void 0 : configObj.navigation) == null) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
let navFile = configObj.navigation.map((nav) => createNav(nav));
|
|
71
|
+
const filterOutNullInPages = (pages) => {
|
|
72
|
+
const newPages = [];
|
|
73
|
+
pages.forEach((page) => {
|
|
74
|
+
if (page == null) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (page === null || page === void 0 ? void 0 : page.pages) {
|
|
78
|
+
const newGroup = filterOutNullInGroup(page);
|
|
79
|
+
newPages.push(newGroup);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
newPages.push(page);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
return newPages;
|
|
86
|
+
};
|
|
87
|
+
const filterOutNullInGroup = (group) => {
|
|
88
|
+
const newPages = filterOutNullInPages(group.pages);
|
|
89
|
+
const newGroup = Object.assign(Object.assign({}, group), { pages: newPages });
|
|
90
|
+
return newGroup;
|
|
91
|
+
};
|
|
92
|
+
const newNavFile = navFile.map((group) => {
|
|
93
|
+
return filterOutNullInGroup(group);
|
|
94
|
+
});
|
|
95
|
+
fse.outputFileSync(targetPath, JSON.stringify(newNavFile, null, 2), {
|
|
96
|
+
flag: "w",
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
export const createMetadataFile = async () => {
|
|
100
|
+
// create pages
|
|
101
|
+
const { markdownFiles, openApi } = await categorizeFiles();
|
|
102
|
+
// create config object
|
|
103
|
+
const configObj = await getConfigObj();
|
|
104
|
+
let pages = {};
|
|
105
|
+
const mdPromises = [];
|
|
106
|
+
markdownFiles.forEach((filename) => {
|
|
107
|
+
mdPromises.push((async () => {
|
|
108
|
+
const sourcePath = path.join(CMD_EXEC_PATH, filename);
|
|
109
|
+
const fileContent = await readFile(sourcePath);
|
|
110
|
+
const contentStr = fileContent.toString();
|
|
111
|
+
const page = createPage(filename, contentStr, openApi);
|
|
112
|
+
pages = Object.assign(Object.assign({}, pages), page);
|
|
113
|
+
})());
|
|
114
|
+
});
|
|
115
|
+
await Promise.all(mdPromises);
|
|
116
|
+
createMetadataFileFromPages(pages, configObj);
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/local-preview/utils/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { promises as _promises } from "fs";
|
|
2
|
+
import fse, { pathExists } from "fs-extra";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
|
|
5
|
+
const { readFile } = _promises;
|
|
6
|
+
const getConfigPath = async () => {
|
|
7
|
+
let configPath = null;
|
|
8
|
+
if (await pathExists(path.join(CMD_EXEC_PATH, "mint.config.json"))) {
|
|
9
|
+
configPath = path.join(CMD_EXEC_PATH, "mint.config.json");
|
|
10
|
+
}
|
|
11
|
+
if (await pathExists(path.join(CMD_EXEC_PATH, "mint.json"))) {
|
|
12
|
+
configPath = path.join(CMD_EXEC_PATH, "mint.json");
|
|
13
|
+
}
|
|
14
|
+
return configPath;
|
|
15
|
+
};
|
|
16
|
+
export const getConfigObj = async () => {
|
|
17
|
+
const configPath = await getConfigPath();
|
|
18
|
+
let configObj = null;
|
|
19
|
+
if (configPath) {
|
|
20
|
+
const configContents = await readFile(configPath);
|
|
21
|
+
configObj = JSON.parse(JSON.stringify(configContents));
|
|
22
|
+
}
|
|
23
|
+
return configObj;
|
|
24
|
+
};
|
|
25
|
+
export const updateConfigFile = async (logger) => {
|
|
26
|
+
const configTargetPath = path.join(CLIENT_PATH, "src", "mint.json");
|
|
27
|
+
await fse.remove(configTargetPath);
|
|
28
|
+
let configObj = null;
|
|
29
|
+
const configPath = await getConfigPath();
|
|
30
|
+
if (configPath) {
|
|
31
|
+
await fse.remove(configTargetPath);
|
|
32
|
+
await fse.copy(configPath, configTargetPath);
|
|
33
|
+
logger.succeed("mint config file synced");
|
|
34
|
+
const configContents = await readFile(configPath);
|
|
35
|
+
configObj = JSON.parse(configContents.toString());
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
logger.fail("Must be ran in a directory where a mint.json file exists.");
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
return configObj;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=mintConfigFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mintConfigFile.js","sourceRoot":"","sources":["../../../src/local-preview/utils/mintConfigFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;AAE/B,MAAM,aAAa,GAAG,KAAK,IAA4B,EAAE;IACvD,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC,EAAE;QAClE,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;KAC3D;IAED,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,EAAE;QAC3D,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;KACpD;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,IAA4B,EAAE;IAC7D,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;IACzC,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,UAAU,EAAE;QACd,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClD,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;KACxD;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAW,EAAE,EAAE;IACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACpE,MAAM,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACnC,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;IAEzC,IAAI,UAAU,EAAE;QACd,MAAM,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACnC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClD,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;KACnD;SAAM;QACL,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import SwaggerParser from "@apidevtools/swagger-parser";
|
|
2
|
+
const openApiCheck = async (path) => {
|
|
3
|
+
let openapi;
|
|
4
|
+
let isOpenApi = false;
|
|
5
|
+
try {
|
|
6
|
+
openapi = await SwaggerParser.validate(path);
|
|
7
|
+
isOpenApi = true;
|
|
8
|
+
}
|
|
9
|
+
catch (_a) {
|
|
10
|
+
// not valid openApi
|
|
11
|
+
}
|
|
12
|
+
return { openapi, isOpenApi };
|
|
13
|
+
};
|
|
14
|
+
export default openApiCheck;
|
|
15
|
+
//# sourceMappingURL=openApiCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openApiCheck.js","sourceRoot":"","sources":["../../../src/local-preview/utils/openApiCheck.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,6BAA6B,CAAC;AAGxD,MAAM,YAAY,GAAG,KAAK,EACxB,IAAY,EACmC,EAAE;IACjD,IAAI,OAAO,CAAC;IACZ,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI;QACF,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,SAAS,GAAG,IAAI,CAAC;KAClB;IAAC,WAAM;QACN,oBAAoB;KACrB;IACD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const slugToTitle = (slug) => {
|
|
2
|
+
const slugArr = slug.split("/");
|
|
3
|
+
let defaultTitle = slugArr[slugArr.length - 1].split("-").join(" "); //replace all dashes
|
|
4
|
+
defaultTitle = defaultTitle.split("_").join(" "); //replace all underscores
|
|
5
|
+
defaultTitle = defaultTitle.charAt(0).toUpperCase() + defaultTitle.slice(1); //capitalize first letter
|
|
6
|
+
return defaultTitle;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=slugToTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slugToTitle.js","sourceRoot":"","sources":["../../../src/local-preview/utils/slugToTitle.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB;IACzF,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB;IAC3E,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;IACtG,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,YAAY,CAC1B,QAAyB;IAEzB,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import inquirer from "inquirer";
|
|
2
|
+
import { createPage } from "./util.js";
|
|
3
|
+
const generatePageTemplate = () => {
|
|
4
|
+
inquirer
|
|
5
|
+
.prompt([
|
|
6
|
+
{
|
|
7
|
+
type: "input",
|
|
8
|
+
name: "title",
|
|
9
|
+
message: "What is the title of the new page?",
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
type: "input",
|
|
13
|
+
name: "description",
|
|
14
|
+
message: "What is the description?",
|
|
15
|
+
default: "",
|
|
16
|
+
},
|
|
17
|
+
])
|
|
18
|
+
.then((answers) => {
|
|
19
|
+
const { title, description } = answers;
|
|
20
|
+
createPage(title, description);
|
|
21
|
+
console.log("🌱 Created initial files for Mintlify docs");
|
|
22
|
+
process.exit(0);
|
|
23
|
+
})
|
|
24
|
+
.catch((error) => {
|
|
25
|
+
console.error(error);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
export default generatePageTemplate;
|
|
30
|
+
//# sourceMappingURL=pageTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageTemplate.js","sourceRoot":"","sources":["../src/pageTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IAChC,QAAQ;SACL,MAAM,CAAC;QACN;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,oCAAoC;SAC9C;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,0BAA0B;YACnC,OAAO,EAAE,EAAE;SACZ;KACF,CAAC;SACD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAEvC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mintlify",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.12",
|
|
4
4
|
"description": "The Mintlify CLI",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=18.0.0"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "module",
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@apidevtools/swagger-parser": "^10.1.0",
|
|
23
|
-
"@mintlify/validation": "^0.1.
|
|
23
|
+
"@mintlify/validation": "^0.1.4",
|
|
24
24
|
"@octokit/rest": "^19.0.5",
|
|
25
25
|
"axios": "^1.2.2",
|
|
26
26
|
"chalk": "^5.1.0",
|
package/src/constants.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as url from "url";
|
|
|
3
3
|
import os from "os";
|
|
4
4
|
|
|
5
5
|
// Change this to bump to a newer version of mint's client
|
|
6
|
-
export const TARGET_MINT_VERSION = "v0.0.
|
|
6
|
+
export const TARGET_MINT_VERSION = "v0.0.5";
|
|
7
7
|
|
|
8
8
|
// package installation location
|
|
9
9
|
export const INSTALL_PATH = url.fileURLToPath(new URL(".", import.meta.url));
|
|
@@ -16,6 +16,8 @@ export const VERSION_PATH = path.join(DOT_MINTLIFY, "mint", "mint-version.txt");
|
|
|
16
16
|
|
|
17
17
|
export const CLIENT_PATH = path.join(DOT_MINTLIFY, "mint", "client");
|
|
18
18
|
|
|
19
|
+
export const MINT_PATH = path.join(DOT_MINTLIFY, "mint");
|
|
20
|
+
|
|
19
21
|
// command execution location
|
|
20
22
|
export const CMD_EXEC_PATH = process.cwd();
|
|
21
23
|
|
package/src/index.ts
CHANGED
|
@@ -14,10 +14,12 @@ import {
|
|
|
14
14
|
CMD_EXEC_PATH,
|
|
15
15
|
TARGET_MINT_VERSION,
|
|
16
16
|
VERSION_PATH,
|
|
17
|
+
MINT_PATH,
|
|
17
18
|
} from "../constants.js";
|
|
18
19
|
import { buildLogger, ensureYarn } from "../util.js";
|
|
19
20
|
import listener from "./listener/index.js";
|
|
20
21
|
import { ArgumentsCamelCase } from "yargs";
|
|
22
|
+
import { getConfigPath } from "./listener/utils/mintConfigFile.js";
|
|
21
23
|
|
|
22
24
|
const shellExec = (cmd: string) => {
|
|
23
25
|
return shell.exec(cmd, { silent: true });
|
|
@@ -49,15 +51,68 @@ const promptForYarn = async () => {
|
|
|
49
51
|
}
|
|
50
52
|
};
|
|
51
53
|
|
|
54
|
+
const downloadTargetMint = async (logger) => {
|
|
55
|
+
fse.emptyDirSync(MINT_PATH);
|
|
56
|
+
|
|
57
|
+
logger.text = "Downloading Mintlify framework...";
|
|
58
|
+
|
|
59
|
+
const octokit = new Octokit();
|
|
60
|
+
const downloadRes = await octokit.repos.downloadTarballArchive({
|
|
61
|
+
owner: "mintlify",
|
|
62
|
+
repo: "mint",
|
|
63
|
+
ref: TARGET_MINT_VERSION,
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
logger.text = "Extracting Mintlify framework...";
|
|
67
|
+
const TAR_PATH = path.join(MINT_PATH, "mint.tar.gz");
|
|
68
|
+
|
|
69
|
+
// Unzip tar file
|
|
70
|
+
fse.writeFileSync(TAR_PATH, Buffer.from(downloadRes.data as any));
|
|
71
|
+
shellExec("tar -xzf mint.tar.gz");
|
|
72
|
+
|
|
73
|
+
// List all files in tar file and get the first one.
|
|
74
|
+
// There is never anything else in the tar file, so this is safe.
|
|
75
|
+
// We do this because the folder name includes the commit sha, so we can't hardcode it.
|
|
76
|
+
// Lastly, we call .trim() to remove the newline character.
|
|
77
|
+
const extractedFolderName = shellExec(
|
|
78
|
+
'tar -tzf mint.tar.gz | head -1 | cut -f1 -d"/"'
|
|
79
|
+
).stdout.trim();
|
|
80
|
+
|
|
81
|
+
fse.removeSync(TAR_PATH);
|
|
82
|
+
|
|
83
|
+
fse.moveSync(
|
|
84
|
+
path.join(MINT_PATH, extractedFolderName, "client"),
|
|
85
|
+
path.join(CLIENT_PATH)
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
fse.writeFileSync(VERSION_PATH, TARGET_MINT_VERSION);
|
|
89
|
+
|
|
90
|
+
// Delete unnecessary contents downloaded from GitHub
|
|
91
|
+
fse.removeSync(path.join(MINT_PATH, extractedFolderName));
|
|
92
|
+
|
|
93
|
+
logger.text = "Installing dependencies...";
|
|
94
|
+
|
|
95
|
+
ensureYarn(logger);
|
|
96
|
+
shell.cd(CLIENT_PATH);
|
|
97
|
+
shellExec("yarn");
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const checkForMintJson = async (logger) => {
|
|
101
|
+
const configPath = await getConfigPath(CMD_EXEC_PATH);
|
|
102
|
+
if (configPath == null) {
|
|
103
|
+
logger.fail("Must be ran in a directory where a mint.json file exists.");
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
return;
|
|
107
|
+
};
|
|
108
|
+
|
|
52
109
|
const dev = async (argv: ArgumentsCamelCase) => {
|
|
53
110
|
shell.cd(HOME_DIR);
|
|
54
111
|
await promptForYarn();
|
|
55
112
|
const logger = buildLogger("Preparing local Mintlify instance...");
|
|
56
|
-
await fse.ensureDir(
|
|
57
|
-
const MINT_PATH = path.join(DOT_MINTLIFY, "mint");
|
|
113
|
+
await fse.ensureDir(MINT_PATH);
|
|
58
114
|
shell.cd(MINT_PATH);
|
|
59
115
|
|
|
60
|
-
// The CLI can only run offline if Mint was already downloaded
|
|
61
116
|
const internet = await isInternetAvailable();
|
|
62
117
|
if (!internet && !(await pathExists(CLIENT_PATH))) {
|
|
63
118
|
logger.fail(
|
|
@@ -66,70 +121,20 @@ const dev = async (argv: ArgumentsCamelCase) => {
|
|
|
66
121
|
process.exit(1);
|
|
67
122
|
}
|
|
68
123
|
|
|
69
|
-
// Avoid checking if we are on the target Mint if we are offline
|
|
70
124
|
if (internet) {
|
|
71
125
|
const mintVersionExists = await pathExists(VERSION_PATH);
|
|
72
126
|
|
|
73
|
-
|
|
74
|
-
// We do this because users updating from an older version of the CLI never have mint-version.txt set.
|
|
75
|
-
let downloadTargetMint = !mintVersionExists;
|
|
127
|
+
let needToDownloadTargetMint = !mintVersionExists;
|
|
76
128
|
|
|
77
|
-
// Download target mint if the current version is different. Keep in mind this also allows
|
|
78
|
-
// downgrading to an older version of Mintlify by installing an older CLI version.
|
|
79
129
|
if (mintVersionExists) {
|
|
80
130
|
const currVersion = fse.readFileSync(VERSION_PATH, "utf8");
|
|
81
131
|
if (currVersion !== TARGET_MINT_VERSION) {
|
|
82
|
-
|
|
132
|
+
needToDownloadTargetMint = true;
|
|
83
133
|
}
|
|
84
134
|
}
|
|
85
135
|
|
|
86
|
-
if (
|
|
87
|
-
|
|
88
|
-
fse.emptyDirSync(MINT_PATH);
|
|
89
|
-
|
|
90
|
-
logger.text = "Downloading Mintlify framework...";
|
|
91
|
-
|
|
92
|
-
const octokit = new Octokit();
|
|
93
|
-
const downloadRes = await octokit.repos.downloadTarballArchive({
|
|
94
|
-
owner: "mintlify",
|
|
95
|
-
repo: "mint",
|
|
96
|
-
ref: TARGET_MINT_VERSION,
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
logger.text = "Extracting Mintlify framework...";
|
|
100
|
-
const TAR_PATH = path.join(MINT_PATH, "mint.tar.gz");
|
|
101
|
-
|
|
102
|
-
// Unzip tar file
|
|
103
|
-
fse.writeFileSync(TAR_PATH, Buffer.from(downloadRes.data as any));
|
|
104
|
-
shellExec("tar -xzf mint.tar.gz");
|
|
105
|
-
|
|
106
|
-
// List all files in tar file and get the first one.
|
|
107
|
-
// There is never anything else in the tar file, so this is safe.
|
|
108
|
-
// We do this because the folder name includes the commit sha, so we can't hardcode it.
|
|
109
|
-
// Lastly, we call .trim() to remove the newline character.
|
|
110
|
-
const extractedFolderName = shellExec(
|
|
111
|
-
'tar -tzf mint.tar.gz | head -1 | cut -f1 -d"/"'
|
|
112
|
-
).stdout.trim();
|
|
113
|
-
|
|
114
|
-
// Delete tar file
|
|
115
|
-
fse.removeSync(TAR_PATH);
|
|
116
|
-
|
|
117
|
-
fse.moveSync(
|
|
118
|
-
path.join(MINT_PATH, extractedFolderName, "client"),
|
|
119
|
-
path.join(CLIENT_PATH)
|
|
120
|
-
);
|
|
121
|
-
|
|
122
|
-
// Store the currently downloaded version
|
|
123
|
-
fse.writeFileSync(VERSION_PATH, TARGET_MINT_VERSION);
|
|
124
|
-
|
|
125
|
-
// Delete unnecessary contents downloaded from GitHub
|
|
126
|
-
fse.removeSync(path.join(MINT_PATH, extractedFolderName));
|
|
127
|
-
|
|
128
|
-
logger.text = "Installing dependencies...";
|
|
129
|
-
|
|
130
|
-
ensureYarn(logger);
|
|
131
|
-
shell.cd(CLIENT_PATH);
|
|
132
|
-
shellExec("yarn");
|
|
136
|
+
if (needToDownloadTargetMint) {
|
|
137
|
+
await downloadTargetMint(logger);
|
|
133
138
|
}
|
|
134
139
|
}
|
|
135
140
|
|
|
@@ -149,10 +154,11 @@ const dev = async (argv: ArgumentsCamelCase) => {
|
|
|
149
154
|
}
|
|
150
155
|
process.exit(1);
|
|
151
156
|
}
|
|
152
|
-
|
|
157
|
+
await checkForMintJson(logger);
|
|
158
|
+
shell.cd(CLIENT_PATH);
|
|
153
159
|
const relativePath = path.relative(CLIENT_PATH, CMD_EXEC_PATH);
|
|
154
160
|
shellExec(`yarn preconfigure ${relativePath}`);
|
|
155
|
-
logger.succeed("Local Mintlify instance is ready. Launching your site
|
|
161
|
+
logger.succeed("Local Mintlify instance is ready. Launching your site...");
|
|
156
162
|
run((argv.port as string) || "3000");
|
|
157
163
|
};
|
|
158
164
|
|
|
@@ -37,11 +37,7 @@ export const categorizeFiles = async (contentDirectoryPath: string) => {
|
|
|
37
37
|
spec: openApiInfo.spec,
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
-
} else if (
|
|
41
|
-
(!filename.endsWith("mint.config.json") ||
|
|
42
|
-
!filename.endsWith("mint.json")) &&
|
|
43
|
-
!isOpenApi
|
|
44
|
-
) {
|
|
40
|
+
} else if (!filename.endsWith("mint.json") && !isOpenApi) {
|
|
45
41
|
// all other files
|
|
46
42
|
staticFilenames.push(filename);
|
|
47
43
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// TODO: Add Types
|
|
2
2
|
import fse from "fs-extra";
|
|
3
3
|
import { promises as _promises } from "fs";
|
|
4
|
-
import { getConfigPath } from "./utils/mintConfigFile.js";
|
|
5
4
|
import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
|
|
6
5
|
import { join } from "path";
|
|
7
6
|
import { generateNav } from "./generate.js";
|
|
@@ -11,23 +10,6 @@ const { readFile } = _promises;
|
|
|
11
10
|
|
|
12
11
|
// TODO: Put in prebuild package
|
|
13
12
|
|
|
14
|
-
export const updateConfigFile = async (contentDirectoryPath: string) => {
|
|
15
|
-
const configTargetPath = join(CLIENT_PATH, "src/_props/mint.json");
|
|
16
|
-
await fse.remove(configTargetPath);
|
|
17
|
-
let configObj = null;
|
|
18
|
-
const configPath = await getConfigPath(contentDirectoryPath);
|
|
19
|
-
|
|
20
|
-
if (configPath) {
|
|
21
|
-
await fse.remove(configTargetPath);
|
|
22
|
-
await fse.copy(configPath, configTargetPath);
|
|
23
|
-
const configContents = await readFile(configPath);
|
|
24
|
-
configObj = JSON.parse(configContents.toString());
|
|
25
|
-
} else {
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
return configObj;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
13
|
export const updateGeneratedNav = async () => {
|
|
32
14
|
const generatedNav = await generateNav();
|
|
33
15
|
const targetPath = join(CLIENT_PATH, "src", "_props", "generatedNav.json");
|