mintlify 2.0.6 → 2.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/bin/constants.js +3 -0
- package/bin/constants.js.map +1 -1
- package/bin/index.js +2 -2
- package/bin/index.js.map +1 -1
- package/bin/local-preview/index.js +73 -56
- package/bin/local-preview/index.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/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/bin/scraping/scrapePageCommands.js.map +1 -1
- package/bin/scraping/scrapeSectionCommands.js.map +1 -1
- package/package.json +2 -2
- package/src/constants.ts +5 -0
- package/src/index.ts +2 -2
- package/src/local-preview/index.ts +102 -66
- package/src/scraping/scrapePageCommands.ts +2 -1
- package/src/scraping/scrapeSectionCommands.ts +2 -1
package/README.md
CHANGED
|
@@ -50,6 +50,20 @@ mintlify dev
|
|
|
50
50
|
|
|
51
51
|
Note - `mintlify dev` requires `yarn` and it's recommended you install it as a global installation. If you don't have yarn installed already run `npm install --global yarn` in your terminal.
|
|
52
52
|
|
|
53
|
+
### Custom Ports
|
|
54
|
+
|
|
55
|
+
Mintlify uses port 3000 by default. You can use the `--port` flag to customize the port Mintlify runs on. For example, use this command to run in port 3333:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
mintlify dev --port 3333
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
You will see an error like this if you try to run Mintlify in a port that's already taken:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Error: listen EADDRINUSE: address already in use :::3000
|
|
65
|
+
```
|
|
66
|
+
|
|
53
67
|
#### Troubleshooting
|
|
54
68
|
|
|
55
69
|
Steps you can take if the dev CLI is not working (After each step try to run `mintlify dev` again):
|
package/bin/constants.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import * as url from "url";
|
|
3
3
|
import os from "os";
|
|
4
|
+
// Change this to bump to a newer version of mint's client
|
|
5
|
+
export const TARGET_MINT_VERSION = "v0.0.2";
|
|
4
6
|
// package installation location
|
|
5
7
|
export const INSTALL_PATH = url.fileURLToPath(new URL(".", import.meta.url));
|
|
6
8
|
export const HOME_DIR = os.homedir();
|
|
7
9
|
export const DOT_MINTLIFY = path.join(HOME_DIR, ".mintlify");
|
|
10
|
+
export const VERSION_PATH = path.join(DOT_MINTLIFY, "mint", "mint-version.txt");
|
|
8
11
|
export const CLIENT_PATH = path.join(DOT_MINTLIFY, "mint", "client");
|
|
9
12
|
// command execution location
|
|
10
13
|
export const CMD_EXEC_PATH = process.cwd();
|
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,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,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,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
|
@@ -9,8 +9,8 @@ import { scrapeReadMeSection } from "./scraping/site-scrapers/scrapeReadMeSectio
|
|
|
9
9
|
import dev from "./local-preview/index.js";
|
|
10
10
|
import installDepsCommand from "./local-preview/helper-commands/installDepsCommand.js";
|
|
11
11
|
yargs(hideBin(process.argv))
|
|
12
|
-
.command("dev", "Runs Mintlify locally (Must run in directory with mint.json)", () => { }, async () => {
|
|
13
|
-
await dev();
|
|
12
|
+
.command("dev", "Runs Mintlify locally (Must run in directory with mint.json)", () => { }, async (argv) => {
|
|
13
|
+
await dev(argv);
|
|
14
14
|
})
|
|
15
15
|
.command("install", "Install dependencies for local Mintlify", () => { }, installDepsCommand)
|
|
16
16
|
.command("scrape-page [url]", "Scrapes a page", () => { }, async (argv) => {
|
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,IAAI,EAAE;
|
|
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"}
|
|
@@ -5,7 +5,8 @@ import inquirer from "inquirer";
|
|
|
5
5
|
import { isInternetAvailable } from "is-internet-available";
|
|
6
6
|
import path from "path";
|
|
7
7
|
import shell from "shelljs";
|
|
8
|
-
import {
|
|
8
|
+
import { Octokit } from "@octokit/rest";
|
|
9
|
+
import { CLIENT_PATH, HOME_DIR, DOT_MINTLIFY, CMD_EXEC_PATH, TARGET_MINT_VERSION, VERSION_PATH, } from "../constants.js";
|
|
9
10
|
import { buildLogger, ensureYarn } from "../util.js";
|
|
10
11
|
import listener from "./listener/index.js";
|
|
11
12
|
const shellExec = (cmd) => {
|
|
@@ -36,80 +37,96 @@ const promptForYarn = async () => {
|
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
39
|
};
|
|
39
|
-
const dev = async () => {
|
|
40
|
+
const dev = async (argv) => {
|
|
40
41
|
shell.cd(HOME_DIR);
|
|
41
42
|
await promptForYarn();
|
|
42
43
|
const logger = buildLogger("Starting a local Mintlify instance...");
|
|
43
44
|
await fse.ensureDir(path.join(DOT_MINTLIFY, "mint"));
|
|
44
45
|
const MINT_PATH = path.join(DOT_MINTLIFY, "mint");
|
|
45
46
|
shell.cd(MINT_PATH);
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
// The CLI can only run offline if Mint was already downloaded
|
|
48
|
+
const internet = await isInternetAvailable();
|
|
49
|
+
if (!internet && !(await pathExists(CLIENT_PATH))) {
|
|
50
|
+
logger.fail("Running mintlify dev for the first time requires an internet connection.");
|
|
51
|
+
process.exit(1);
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
53
|
+
// Avoid checking if we are on the target Mint if we are offline
|
|
54
|
+
if (internet) {
|
|
55
|
+
const mintVersionExists = await pathExists(VERSION_PATH);
|
|
56
|
+
// We always download the target version of Mintlify if the mint-version.txt file doesn't exist.
|
|
57
|
+
// We do this because users updating from an older version of the CLI never have mint-version.txt set.
|
|
58
|
+
let downloadTargetMint = !mintVersionExists;
|
|
59
|
+
// Download target mint if the current version is different. Keep in mind this also allows
|
|
60
|
+
// downgrading to an older version of Mintlify by installing an older CLI version.
|
|
61
|
+
if (mintVersionExists) {
|
|
62
|
+
const currVersion = fse.readFileSync(VERSION_PATH, "utf8");
|
|
63
|
+
if (currVersion !== TARGET_MINT_VERSION) {
|
|
64
|
+
downloadTargetMint = true;
|
|
65
|
+
}
|
|
62
66
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
if (downloadTargetMint) {
|
|
68
|
+
// Delete any existing contents
|
|
69
|
+
fse.emptyDirSync(MINT_PATH);
|
|
70
|
+
logger.text = "Downloading Mintlify framework...";
|
|
71
|
+
const octokit = new Octokit();
|
|
72
|
+
const downloadRes = await octokit.repos.downloadTarballArchive({
|
|
73
|
+
owner: "mintlify",
|
|
74
|
+
repo: "mint",
|
|
75
|
+
ref: TARGET_MINT_VERSION,
|
|
76
|
+
});
|
|
77
|
+
logger.text = "Extracting Mintlify framework...";
|
|
78
|
+
const TAR_PATH = path.join(MINT_PATH, "mint.tar.gz");
|
|
79
|
+
// Unzip tar file
|
|
80
|
+
fse.writeFileSync(TAR_PATH, Buffer.from(downloadRes.data));
|
|
81
|
+
shellExec("tar -xzf mint.tar.gz");
|
|
82
|
+
// List all files in tar file and get the first one.
|
|
83
|
+
// There is never anything else in the tar file, so this is safe.
|
|
84
|
+
// We do this because the folder name includes the commit sha, so we can't hardcode it.
|
|
85
|
+
// Lastly, we call .trim() to remove the newline character.
|
|
86
|
+
const extractedFolderName = shellExec('tar -tzf mint.tar.gz | head -1 | cut -f1 -d"/"').stdout.trim();
|
|
87
|
+
// Delete tar file
|
|
88
|
+
fse.removeSync(TAR_PATH);
|
|
89
|
+
fse.moveSync(path.join(MINT_PATH, extractedFolderName, "client"), path.join(CLIENT_PATH));
|
|
90
|
+
// Store the currently downloaded version
|
|
91
|
+
fse.writeFileSync(VERSION_PATH, TARGET_MINT_VERSION);
|
|
92
|
+
// Delete unnecessary contents downloaded from GitHub
|
|
93
|
+
fse.removeSync(path.join(MINT_PATH, extractedFolderName));
|
|
94
|
+
logger.text = "Installing dependencies...";
|
|
95
|
+
ensureYarn(logger);
|
|
96
|
+
shell.cd(CLIENT_PATH);
|
|
97
|
+
shellExec("yarn");
|
|
66
98
|
}
|
|
67
99
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
shellExec("rm .git/info/sparse-checkout");
|
|
76
|
-
}
|
|
77
|
-
if (pullOutput === "Already up to date.\n") {
|
|
78
|
-
runYarn = false;
|
|
79
|
-
}
|
|
80
|
-
shell.cd(CLIENT_PATH);
|
|
81
|
-
if (internet && (runYarn || !(await nodeModulesExists()))) {
|
|
82
|
-
if (firstInstallation) {
|
|
83
|
-
logger.succeed("Local Mintlify instance initialized");
|
|
84
|
-
}
|
|
85
|
-
logger.start("Updating dependencies...");
|
|
86
|
-
ensureYarn(logger);
|
|
87
|
-
shellExec("yarn");
|
|
88
|
-
if (firstInstallation) {
|
|
89
|
-
logger.succeed("Installation complete");
|
|
100
|
+
if (!(await nodeModulesExists())) {
|
|
101
|
+
if (!internet) {
|
|
102
|
+
logger.fail(`Dependencies are missing and you are offline. Connect to the internet and run
|
|
103
|
+
|
|
104
|
+
mintlify install
|
|
105
|
+
|
|
106
|
+
`);
|
|
90
107
|
}
|
|
91
108
|
else {
|
|
92
|
-
logger.
|
|
109
|
+
logger.fail(`Dependencies were not installed correctly, run
|
|
110
|
+
|
|
111
|
+
mintlify install
|
|
112
|
+
|
|
113
|
+
`);
|
|
93
114
|
}
|
|
94
|
-
}
|
|
95
|
-
if (!(await nodeModulesExists())) {
|
|
96
|
-
logger.fail(`Dependencies weren\'t installed, run
|
|
97
|
-
|
|
98
|
-
mintlify install
|
|
99
|
-
|
|
100
|
-
`);
|
|
101
115
|
process.exit(1);
|
|
102
116
|
}
|
|
103
117
|
const relativePath = path.relative(CLIENT_PATH, CMD_EXEC_PATH);
|
|
104
118
|
shellExec(`yarn preconfigure ${relativePath}`);
|
|
105
|
-
logger.succeed("Local Mintlify instance
|
|
106
|
-
run();
|
|
119
|
+
logger.succeed("Local Mintlify instance started.");
|
|
120
|
+
run(argv.port || "3000");
|
|
107
121
|
};
|
|
108
|
-
const run = () => {
|
|
122
|
+
const run = (port) => {
|
|
109
123
|
shell.cd(CLIENT_PATH);
|
|
110
|
-
console.log(`🌿 ${Chalk.green(
|
|
111
|
-
|
|
112
|
-
|
|
124
|
+
console.log(`🌿 ${Chalk.green(`Your local preview is available at http://localhost:${port}`)}`);
|
|
125
|
+
console.log(`🌿 ${Chalk.green("Press Ctrl+C any time to stop the local preview.")}`);
|
|
126
|
+
// next-remote-watch can only receive ports as env variables
|
|
127
|
+
// https://github.com/hashicorp/next-remote-watch/issues/23
|
|
128
|
+
shell.exec(`PORT=${port} npm run dev-watch`, { async: true });
|
|
129
|
+
open(`http://localhost:${port}`);
|
|
113
130
|
listener();
|
|
114
131
|
};
|
|
115
132
|
export default dev;
|
|
@@ -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,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-preview/index.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"}
|
|
@@ -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":"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"}
|