mintlify 2.0.8 → 2.0.9

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/CONTRIBUTING.md CHANGED
@@ -5,3 +5,13 @@ Note - contributing requires `yarn` and it's recommended you install it as a glo
5
5
  Run `npm run local` to build and install the CLI locally.
6
6
 
7
7
  You need to run the command after every change you want to test.
8
+
9
+ ## Updating Version of Mint Client
10
+
11
+ The CLI uses GitHub releases to download specific versions of the client code used in `mintlify dev`. Older CLI versions will continue using the client code they were bundled with. Users need to update to a newer version of the CLI to get the newest client code. CLI contributors bump the client version used by the CLI whenever there are major changes.
12
+
13
+ Here's how to publish new client changes to the CLI:
14
+
15
+ 1. Publish a new GitHub release. You can click the releases menu at the right of the repo page. Make the release title the same as the new release tag. Optionally, you can also use the description to keep track of what changed in that release.
16
+ 2. Set `TARGET_MINT_VERSION` in `src/constants.ts` to to the new release tag.
17
+ 3. Publish a new CLI version to npm.
package/bin/constants.js CHANGED
@@ -2,7 +2,7 @@ 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.2";
5
+ export const TARGET_MINT_VERSION = "v0.0.3";
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();
@@ -1,4 +1,5 @@
1
1
  import Chalk from "chalk";
2
+ import child_process from "child_process";
2
3
  import open from "open";
3
4
  import fse, { pathExists } from "fs-extra";
4
5
  import inquirer from "inquirer";
@@ -40,7 +41,7 @@ const promptForYarn = async () => {
40
41
  const dev = async (argv) => {
41
42
  shell.cd(HOME_DIR);
42
43
  await promptForYarn();
43
- const logger = buildLogger("Starting a local Mintlify instance...");
44
+ const logger = buildLogger("Preparing local Mintlify instance...");
44
45
  await fse.ensureDir(path.join(DOT_MINTLIFY, "mint"));
45
46
  const MINT_PATH = path.join(DOT_MINTLIFY, "mint");
46
47
  shell.cd(MINT_PATH);
@@ -116,17 +117,37 @@ const dev = async (argv) => {
116
117
  }
117
118
  const relativePath = path.relative(CLIENT_PATH, CMD_EXEC_PATH);
118
119
  shellExec(`yarn preconfigure ${relativePath}`);
119
- logger.succeed("Local Mintlify instance started.");
120
+ logger.succeed("Local Mintlify instance is ready. Launching your site now.");
120
121
  run(argv.port || "3000");
121
122
  };
122
123
  const run = (port) => {
123
124
  shell.cd(CLIENT_PATH);
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
125
  // next-remote-watch can only receive ports as env variables
127
126
  // 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}`);
127
+ const mintlifyDevProcess = child_process.spawn("npm run dev-watch", {
128
+ env: {
129
+ ...process.env,
130
+ PORT: port,
131
+ },
132
+ cwd: CLIENT_PATH,
133
+ stdio: "pipe",
134
+ shell: true,
135
+ });
136
+ mintlifyDevProcess.stdout.on("data", (data) => {
137
+ const output = data.toString();
138
+ console.log(output);
139
+ if (output.startsWith("> Ready on http://localhost:")) {
140
+ console.log(`🌿 ${Chalk.green(`Your local preview is available at http://localhost:${port}`)}`);
141
+ console.log(`🌿 ${Chalk.green("Press Ctrl+C any time to stop the local preview.")}`);
142
+ open(`http://localhost:${port}`);
143
+ }
144
+ });
145
+ const onExit = () => {
146
+ mintlifyDevProcess.kill("SIGINT");
147
+ process.exit(0);
148
+ };
149
+ process.on("SIGINT", onExit);
150
+ process.on("SIGTERM", onExit);
130
151
  listener();
131
152
  };
132
153
  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;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,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAG3C,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;IACnC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;IAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,aAAa,EAAE;QAClB,MAAM,QAAQ;aACX,MAAM,CAAC;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,gDAAgD;gBACzD,OAAO,EAAE,IAAI;aACd;SACF,CAAC;aACD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;YACpB,IAAI,OAAO,EAAE;gBACX,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;aACzC;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;aACxC;QACH,CAAC,CAAC,CAAC;KACN;AACH,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,KAAK,EAAE,IAAwB,EAAE,EAAE;IAC7C,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACnB,MAAM,aAAa,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,WAAW,CAAC,uCAAuC,CAAC,CAAC;IACpE,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAClD,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAEpB,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC7C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE;QACjD,MAAM,CAAC,IAAI,CACT,0EAA0E,CAC3E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,gEAAgE;IAChE,IAAI,QAAQ,EAAE;QACZ,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;QAEzD,gGAAgG;QAChG,sGAAsG;QACtG,IAAI,kBAAkB,GAAG,CAAC,iBAAiB,CAAC;QAE5C,0FAA0F;QAC1F,kFAAkF;QAClF,IAAI,iBAAiB,EAAE;YACrB,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC3D,IAAI,WAAW,KAAK,mBAAmB,EAAE;gBACvC,kBAAkB,GAAG,IAAI,CAAC;aAC3B;SACF;QAED,IAAI,kBAAkB,EAAE;YACtB,+BAA+B;YAC/B,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAE5B,MAAM,CAAC,IAAI,GAAG,mCAAmC,CAAC;YAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC;gBAC7D,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,mBAAmB;aACzB,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,GAAG,kCAAkC,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAErD,iBAAiB;YACjB,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAW,CAAC,CAAC,CAAC;YAClE,SAAS,CAAC,sBAAsB,CAAC,CAAC;YAElC,oDAAoD;YACpD,iEAAiE;YACjE,uFAAuF;YACvF,2DAA2D;YAC3D,MAAM,mBAAmB,GAAG,SAAS,CACnC,gDAAgD,CACjD,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAEhB,kBAAkB;YAClB,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEzB,GAAG,CAAC,QAAQ,CACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EACnD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CACvB,CAAC;YAEF,yCAAyC;YACzC,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;YAErD,qDAAqD;YACrD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;YAE1D,MAAM,CAAC,IAAI,GAAG,4BAA4B,CAAC;YAE3C,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YACtB,SAAS,CAAC,MAAM,CAAC,CAAC;SACnB;KACF;IAED,IAAI,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,EAAE;QAChC,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,CAAC,IAAI,CAAC;;;;OAIX,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,CAAC,IAAI,CAAC;;;;OAIX,CAAC,CAAC;SACJ;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC/D,SAAS,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACnD,GAAG,CAAE,IAAI,CAAC,IAAe,IAAI,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE;IAC3B,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CACT,MAAM,KAAK,CAAC,KAAK,CACf,uDAAuD,IAAI,EAAE,CAC9D,EAAE,CACJ,CAAC;IACF,OAAO,CAAC,GAAG,CACT,MAAM,KAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,EAAE,CACxE,CAAC;IAEF,4DAA4D;IAC5D,2DAA2D;IAC3D,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,oBAAoB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC;AACb,CAAC,CAAC;AAEF,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-preview/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import chokidar from "chokidar";
2
2
  import fse from "fs-extra";
3
3
  import pathUtil from "path";
4
+ import Chalk from "chalk";
5
+ import mintValidation from "@mintlify/validation";
4
6
  import { openApiCheck } from "./utils.js";
5
7
  import { updateGeneratedNav, updateOpenApiFiles } from "./update.js";
6
8
  import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
@@ -144,7 +146,28 @@ const onUpdateEvent = async (filename) => {
144
146
  break;
145
147
  case "mintConfig":
146
148
  regenerateNav = true;
147
- await fse.copy(filePath, targetPath);
149
+ const mintJsonFileContent = (await readFile(filePath)).toString();
150
+ try {
151
+ const mintConfig = JSON.parse(mintJsonFileContent);
152
+ const { status, errors, warnings } = mintValidation.validateMintConfig(mintConfig);
153
+ errors.forEach((error) => {
154
+ console.error(`🚨 ${Chalk.red(error)}`);
155
+ });
156
+ warnings.forEach((warning) => {
157
+ console.warn(`⚠️ ${Chalk.yellow(warning)}`);
158
+ });
159
+ if (status === "success") {
160
+ await fse.copy(filePath, targetPath);
161
+ }
162
+ }
163
+ catch (error) {
164
+ if (error.name === "SyntaxError") {
165
+ console.error(`🚨 ${Chalk.red("mint.json has invalid JSON. You are likely missing a comma or a bracket. You can paste your mint.json file into https://jsonlint.com/ to get a more specific error message.")}`);
166
+ }
167
+ else {
168
+ console.error(`🚨 ${Chalk.red(error.message)}`);
169
+ }
170
+ }
148
171
  break;
149
172
  case "potentialYamlOpenApiSpec":
150
173
  case "potentialJsonOpenApiSpec":
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/local-preview/listener/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/local-preview/listener/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,QAAQ,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;AAE/B,MAAM,QAAQ,GAAG,GAAG,EAAE;IACpB,QAAQ;SACL,KAAK,CAAC,aAAa,EAAE;QACpB,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC;QAC1C,GAAG,EAAE,aAAa;KACnB,CAAC;SACD,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;QACpC,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/C,QAAQ,QAAQ,EAAE;gBAChB,KAAK,MAAM;oBACT,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;oBAChD,MAAM;gBACR,KAAK,YAAY;oBACf,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;oBAC9C,MAAM;gBACR,KAAK,YAAY;oBACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;oBAC7C,MAAM;aACT;SACF;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC;SACD,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;QACvC,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/C,QAAQ,QAAQ,EAAE;gBAChB,KAAK,MAAM;oBACT,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;oBAC1C,MAAM;gBACR,KAAK,YAAY;oBACf,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;oBAC/C,MAAM;gBACR,KAAK,YAAY;oBACf,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;oBAC9C,MAAM;aACT;SACF;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC;SACD,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;QACvC,IAAI;YACF,MAAM,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,aAAa,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAC9D,IACE,iBAAiB,KAAK,MAAM;gBAC5B,iBAAiB,KAAK,SAAS;gBAC/B,iBAAiB,KAAK,YAAY;gBAClC,iBAAiB,KAAK,YAAY,EAClC;gBACA,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;aAC9B;YACD,QAAQ,iBAAiB,EAAE;gBACzB,KAAK,MAAM;oBACT,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;oBACzC,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;oBAC5C,MAAM;gBACR,KAAK,YAAY;oBACf,OAAO,CAAC,GAAG,CACT,8EAA8E,CAC/E,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,KAAK,0BAA0B,CAAC;gBAChC,KAAK,0BAA0B;oBAC7B,MAAM,kBAAkB,EAAE,CAAC;oBAC3B,MAAM,kBAAkB,EAAE,CAAC;oBAC3B,MAAM;gBACR,KAAK,YAAY;oBACf,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;oBAC/C,MAAM;aACT;SACF;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,iBAAwC,EACxC,QAAgB,EACR,EAAE;IACV,QAAQ,iBAAiB,EAAE;QACzB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/D,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAClE,KAAK,0BAA0B,CAAC;QAChC,KAAK,0BAA0B;YAC7B,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC1E,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACxD;YACE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACvC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAyB,EAAE;IACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,aAAa,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC9D,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,QAAQ,GACV,iBAAiB,KAAK,0BAA0B;QAChD,iBAAiB,KAAK,0BAA0B;QAC9C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,iBAAiB,CAAC;IACxB,QAAQ,iBAAiB,EAAE;QACzB,KAAK,MAAM;YACT,aAAa,GAAG,IAAI,CAAC;YACrB,MAAM,UAAU,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,UAAU,CACtC,QAAQ,EACR,UAAU,EACV,aAAa,EACb,EAAE,CACH,CAAC;YACF,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,EAAE;gBAC5C,IAAI,EAAE,GAAG;aACV,CAAC,CAAC;YACH,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,YAAY;YACf,aAAa,GAAG,IAAI,CAAC;YAErB,MAAM,mBAAmB,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClE,IAAI;gBACF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACnD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAChC,cAAc,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAEhD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvB,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBAEH,IAAI,MAAM,KAAK,SAAS,EAAE;oBACxB,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;iBACtC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;oBAChC,OAAO,CAAC,KAAK,CACX,MAAM,KAAK,CAAC,GAAG,CACb,6KAA6K,CAC9K,EAAE,CACJ,CAAC;iBACH;qBAAM;oBACL,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;iBACjD;aACF;YAED,MAAM;QACR,KAAK,0BAA0B,CAAC;QAChC,KAAK,0BAA0B;YAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,MAAM,WAAW,GAAG,MAAM,YAAY,CACpC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CACvC,CAAC;YACF,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;YAClC,IAAI,SAAS,EAAE;gBACb,8GAA8G;gBAC9G,MAAM,kBAAkB,EAAE,CAAC;gBAC3B,aAAa,GAAG,IAAI,CAAC;gBACrB,QAAQ,GAAG,SAAS,CAAC;aACtB;YACD,MAAM;QACR,KAAK,YAAY;YACf,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACrC,MAAM;KACT;IACD,IAAI,aAAa,EAAE;QACjB,2GAA2G;QAC3G,MAAM,kBAAkB,EAAE,CAAC;KAC5B;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "mintlify",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
4
4
  "description": "The Mintlify CLI",
5
5
  "engines": {
6
6
  "node": ">=18.0.0"
7
7
  },
8
+ "license": "Elastic-2.0",
8
9
  "scripts": {
9
10
  "prepare": "npm run build",
10
11
  "build": "tsc",
@@ -19,6 +20,7 @@
19
20
  "type": "module",
20
21
  "dependencies": {
21
22
  "@apidevtools/swagger-parser": "^10.1.0",
23
+ "@mintlify/validation": "^0.1.3",
22
24
  "@octokit/rest": "^19.0.5",
23
25
  "axios": "^1.2.2",
24
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.2";
6
+ export const TARGET_MINT_VERSION = "v0.0.3";
7
7
 
8
8
  // package installation location
9
9
  export const INSTALL_PATH = url.fileURLToPath(new URL(".", import.meta.url));
@@ -1,4 +1,5 @@
1
1
  import Chalk from "chalk";
2
+ import child_process from "child_process";
2
3
  import open from "open";
3
4
  import fse, { pathExists } from "fs-extra";
4
5
  import inquirer from "inquirer";
@@ -51,7 +52,7 @@ const promptForYarn = async () => {
51
52
  const dev = async (argv: ArgumentsCamelCase) => {
52
53
  shell.cd(HOME_DIR);
53
54
  await promptForYarn();
54
- const logger = buildLogger("Starting a local Mintlify instance...");
55
+ const logger = buildLogger("Preparing local Mintlify instance...");
55
56
  await fse.ensureDir(path.join(DOT_MINTLIFY, "mint"));
56
57
  const MINT_PATH = path.join(DOT_MINTLIFY, "mint");
57
58
  shell.cd(MINT_PATH);
@@ -151,26 +152,45 @@ const dev = async (argv: ArgumentsCamelCase) => {
151
152
 
152
153
  const relativePath = path.relative(CLIENT_PATH, CMD_EXEC_PATH);
153
154
  shellExec(`yarn preconfigure ${relativePath}`);
154
- logger.succeed("Local Mintlify instance started.");
155
+ logger.succeed("Local Mintlify instance is ready. Launching your site now.");
155
156
  run((argv.port as string) || "3000");
156
157
  };
157
158
 
158
159
  const run = (port: string) => {
159
160
  shell.cd(CLIENT_PATH);
160
- console.log(
161
- `🌿 ${Chalk.green(
162
- `Your local preview is available at http://localhost:${port}`
163
- )}`
164
- );
165
- console.log(
166
- `🌿 ${Chalk.green("Press Ctrl+C any time to stop the local preview.")}`
167
- );
168
161
 
169
162
  // next-remote-watch can only receive ports as env variables
170
163
  // https://github.com/hashicorp/next-remote-watch/issues/23
171
- shell.exec(`PORT=${port} npm run dev-watch`, { async: true });
172
-
173
- open(`http://localhost:${port}`);
164
+ const mintlifyDevProcess = child_process.spawn("npm run dev-watch", {
165
+ env: {
166
+ ...process.env,
167
+ PORT: port,
168
+ },
169
+ cwd: CLIENT_PATH,
170
+ stdio: "pipe",
171
+ shell: true,
172
+ });
173
+ mintlifyDevProcess.stdout.on("data", (data) => {
174
+ const output = data.toString();
175
+ console.log(output);
176
+ if (output.startsWith("> Ready on http://localhost:")) {
177
+ console.log(
178
+ `🌿 ${Chalk.green(
179
+ `Your local preview is available at http://localhost:${port}`
180
+ )}`
181
+ );
182
+ console.log(
183
+ `🌿 ${Chalk.green("Press Ctrl+C any time to stop the local preview.")}`
184
+ );
185
+ open(`http://localhost:${port}`);
186
+ }
187
+ });
188
+ const onExit = () => {
189
+ mintlifyDevProcess.kill("SIGINT");
190
+ process.exit(0);
191
+ };
192
+ process.on("SIGINT", onExit);
193
+ process.on("SIGTERM", onExit);
174
194
  listener();
175
195
  };
176
196
 
@@ -1,6 +1,8 @@
1
1
  import chokidar from "chokidar";
2
2
  import fse from "fs-extra";
3
3
  import pathUtil from "path";
4
+ import Chalk from "chalk";
5
+ import mintValidation from "@mintlify/validation";
4
6
  import { openApiCheck } from "./utils.js";
5
7
  import { updateGeneratedNav, updateOpenApiFiles } from "./update.js";
6
8
  import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
@@ -159,7 +161,36 @@ const onUpdateEvent = async (filename: string): Promise<FileCategory> => {
159
161
  break;
160
162
  case "mintConfig":
161
163
  regenerateNav = true;
162
- await fse.copy(filePath, targetPath);
164
+
165
+ const mintJsonFileContent = (await readFile(filePath)).toString();
166
+ try {
167
+ const mintConfig = JSON.parse(mintJsonFileContent);
168
+ const { status, errors, warnings } =
169
+ mintValidation.validateMintConfig(mintConfig);
170
+
171
+ errors.forEach((error) => {
172
+ console.error(`🚨 ${Chalk.red(error)}`);
173
+ });
174
+
175
+ warnings.forEach((warning) => {
176
+ console.warn(`⚠️ ${Chalk.yellow(warning)}`);
177
+ });
178
+
179
+ if (status === "success") {
180
+ await fse.copy(filePath, targetPath);
181
+ }
182
+ } catch (error) {
183
+ if (error.name === "SyntaxError") {
184
+ console.error(
185
+ `🚨 ${Chalk.red(
186
+ "mint.json has invalid JSON. You are likely missing a comma or a bracket. You can paste your mint.json file into https://jsonlint.com/ to get a more specific error message."
187
+ )}`
188
+ );
189
+ } else {
190
+ console.error(`🚨 ${Chalk.red(error.message)}`);
191
+ }
192
+ }
193
+
163
194
  break;
164
195
  case "potentialYamlOpenApiSpec":
165
196
  case "potentialJsonOpenApiSpec":