mintlify 1.3.0 → 2.0.1

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.
Files changed (59) hide show
  1. package/CONTRIBUTING.md +2 -0
  2. package/README.md +1 -1
  3. package/bin/index.js +0 -0
  4. package/bin/local-preview/index.js +12 -60
  5. package/bin/local-preview/index.js.map +1 -1
  6. package/bin/local-preview/listener/categorizeFiles.js +47 -0
  7. package/bin/local-preview/listener/categorizeFiles.js.map +1 -0
  8. package/bin/local-preview/listener/generate.js +89 -0
  9. package/bin/local-preview/listener/generate.js.map +1 -0
  10. package/bin/local-preview/listener/index.js +135 -0
  11. package/bin/local-preview/listener/index.js.map +1 -0
  12. package/bin/local-preview/listener/update.js +41 -0
  13. package/bin/local-preview/listener/update.js.map +1 -0
  14. package/bin/local-preview/listener/utils/createPage.js +167 -0
  15. package/bin/local-preview/listener/utils/createPage.js.map +1 -0
  16. package/bin/local-preview/listener/utils/fileIsMdxOrMd.js +12 -0
  17. package/bin/local-preview/listener/utils/fileIsMdxOrMd.js.map +1 -0
  18. package/bin/local-preview/listener/utils/getOpenApiContext.js +57 -0
  19. package/bin/local-preview/listener/utils/getOpenApiContext.js.map +1 -0
  20. package/bin/local-preview/listener/utils/mintConfigFile.js +22 -0
  21. package/bin/local-preview/listener/utils/mintConfigFile.js.map +1 -0
  22. package/bin/local-preview/listener/utils/toTitleCase.js +36 -0
  23. package/bin/local-preview/listener/utils/toTitleCase.js.map +1 -0
  24. package/bin/local-preview/listener/utils/types.js +2 -0
  25. package/bin/local-preview/listener/utils/types.js.map +1 -0
  26. package/bin/local-preview/listener/utils.js +62 -0
  27. package/bin/local-preview/listener/utils.js.map +1 -0
  28. package/bin/scraping/detectFramework.js +1 -1
  29. package/bin/scraping/detectFramework.js.map +1 -1
  30. package/bin/scraping/scrapePageCommands.js +2 -2
  31. package/bin/scraping/scrapePageCommands.js.map +1 -1
  32. package/bin/scraping/site-scrapers/alternateGroupTitle.js +1 -1
  33. package/bin/scraping/site-scrapers/alternateGroupTitle.js.map +1 -1
  34. package/bin/scraping/site-scrapers/openNestedDocusaurusMenus.js +3 -3
  35. package/bin/scraping/site-scrapers/openNestedDocusaurusMenus.js.map +1 -1
  36. package/bin/scraping/site-scrapers/openNestedGitbookMenus.js +1 -2
  37. package/bin/scraping/site-scrapers/openNestedGitbookMenus.js.map +1 -1
  38. package/package.json +12 -5
  39. package/src/local-preview/index.ts +14 -74
  40. package/src/local-preview/listener/categorizeFiles.ts +55 -0
  41. package/src/local-preview/listener/generate.ts +110 -0
  42. package/src/local-preview/listener/index.ts +169 -0
  43. package/src/local-preview/listener/update.ts +45 -0
  44. package/src/local-preview/listener/utils/createPage.ts +211 -0
  45. package/src/local-preview/listener/utils/fileIsMdxOrMd.ts +11 -0
  46. package/src/local-preview/{utils → listener/utils}/getOpenApiContext.ts +0 -0
  47. package/src/local-preview/listener/utils/mintConfigFile.ts +28 -0
  48. package/src/local-preview/listener/utils/toTitleCase.ts +40 -0
  49. package/src/local-preview/listener/utils/types.ts +1 -0
  50. package/src/local-preview/listener/utils.ts +69 -0
  51. package/src/scraping/scrapePageCommands.ts +2 -2
  52. package/tsconfig.json +6 -5
  53. package/src/local-preview/utils/categorizeFiles.ts +0 -82
  54. package/src/local-preview/utils/injectFavicons.ts +0 -76
  55. package/src/local-preview/utils/listener.ts +0 -124
  56. package/src/local-preview/utils/metadata.ts +0 -151
  57. package/src/local-preview/utils/mintConfigFile.ts +0 -48
  58. package/src/local-preview/utils/openApiCheck.ts +0 -18
  59. package/src/local-preview/utils/slugToTitle.ts +0 -7
package/CONTRIBUTING.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Running CLI Locally
2
2
 
3
+ Note - contributing 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.
4
+
3
5
  Run `npm run local` to build and install the CLI locally.
4
6
 
5
7
  You need to run the command after every change you want to test.
package/README.md CHANGED
@@ -19,7 +19,7 @@
19
19
  </p>
20
20
  <p>
21
21
 
22
- [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen?logo=github)](/) [![Website](https://img.shields.io/website?url=https%3A%2F%2Fmintlify.com&logo=mintlify)](https://mintlify.com) [![Tests](https://github.com/mintlify/mint/actions/workflows/manual.yml/badge.svg)](https://github.com/mintlify/mint/actions) [![Tweet](https://img.shields.io/twitter/url?url=https%3A%2F%2Fmintlify.com%2F)](https://twitter.com/intent/tweet?url=&text=Check%20out%20%40mintlify) [![Chat on Discord](https://img.shields.io/badge/chat-Discord-7289DA?logo=discord)](https://discord.gg/MPNgtSZkgK) [![Discuss on GitHub](https://img.shields.io/badge/discussions-GitHub-333333?logo=github)](https://github.com/mintlify/mint/discussions)
22
+ [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen?logo=github)](/) [![Website](https://img.shields.io/website?url=https%3A%2F%2Fmintlify.com&logo=mintlify)](https://mintlify.com) [![Unit Tests](https://github.com/mintlify/mint/actions/workflows/unit-tests.yaml/badge.svg)](https://github.com/mintlify/mint/actions/workflows/unit-tests.yaml) [![Tweet](https://img.shields.io/twitter/url?url=https%3A%2F%2Fmintlify.com%2F)](https://twitter.com/intent/tweet?url=&text=Check%20out%20%40mintlify) [![Chat on Discord](https://img.shields.io/badge/chat-Discord-7289DA?logo=discord)](https://discord.gg/MPNgtSZkgK) [![Discuss on GitHub](https://img.shields.io/badge/discussions-GitHub-333333?logo=github)](https://github.com/mintlify/mint/discussions)
23
23
 
24
24
  </p>
25
25
  <p>
package/bin/index.js CHANGED
File without changes
@@ -1,67 +1,13 @@
1
1
  import Chalk from "chalk";
2
2
  import open from "open";
3
- import { promises as _promises } from "fs";
4
3
  import fse, { pathExists } from "fs-extra";
5
4
  import inquirer from "inquirer";
6
5
  import { isInternetAvailable } from "is-internet-available";
7
6
  import path from "path";
8
7
  import shell from "shelljs";
9
- import categorizeFiles from "./utils/categorizeFiles.js";
10
- import { CMD_EXEC_PATH, CLIENT_PATH, HOME_DIR, DOT_MINTLIFY, } from "../constants.js";
11
- import { injectFavicons } from "./utils/injectFavicons.js";
12
- import listener from "./utils/listener.js";
13
- import { createPage, createMetadataFileFromPages } from "./utils/metadata.js";
14
- import { updateConfigFile } from "./utils/mintConfigFile.js";
8
+ import { CLIENT_PATH, HOME_DIR, DOT_MINTLIFY, CMD_EXEC_PATH, } from "../constants.js";
15
9
  import { buildLogger, ensureYarn } from "../util.js";
16
- const { readFile } = _promises;
17
- const copyFiles = async (logger) => {
18
- logger.start("Syncing doc files...");
19
- shell.cd(CMD_EXEC_PATH);
20
- const { markdownFiles, staticFiles, openApi } = await categorizeFiles();
21
- const configObj = await updateConfigFile(logger);
22
- const openApiTargetPath = path.join(CLIENT_PATH, "src", "openapi.json");
23
- if (openApi) {
24
- logger.succeed("OpenApi file synced");
25
- await fse.outputFile(openApiTargetPath, JSON.stringify(openApi), {
26
- flag: "w",
27
- });
28
- }
29
- else {
30
- await fse.outputFile(openApiTargetPath, "{}", { flag: "w" });
31
- }
32
- let pages = {};
33
- const mdPromises = [];
34
- markdownFiles.forEach((filename) => {
35
- mdPromises.push((async () => {
36
- const sourcePath = path.join(CMD_EXEC_PATH, filename);
37
- const pagesDir = path.join(CLIENT_PATH, "src", "pages");
38
- const targetPath = path.join(pagesDir, filename);
39
- await fse.remove(targetPath);
40
- await fse.copy(sourcePath, targetPath);
41
- const fileContent = await readFile(sourcePath);
42
- const contentStr = fileContent.toString();
43
- const page = createPage(filename, contentStr, openApi);
44
- pages = Object.assign(Object.assign({}, pages), page);
45
- })());
46
- });
47
- const staticFilePromises = [];
48
- staticFiles.forEach((filename) => {
49
- staticFilePromises.push((async () => {
50
- const sourcePath = path.join(CMD_EXEC_PATH, filename);
51
- const publicDir = path.join(CLIENT_PATH, "public");
52
- const targetPath = path.join(publicDir, filename);
53
- await fse.remove(targetPath);
54
- await fse.copy(sourcePath, targetPath);
55
- })());
56
- });
57
- await Promise.all([
58
- ...mdPromises,
59
- ...staticFilePromises,
60
- await injectFavicons(configObj, logger),
61
- ]);
62
- createMetadataFileFromPages(pages, configObj);
63
- logger.succeed("All files synced");
64
- };
10
+ import listener from "./listener/index.js";
65
11
  const shellExec = (cmd) => {
66
12
  return shell.exec(cmd, { silent: true });
67
13
  };
@@ -95,7 +41,12 @@ const dev = async () => {
95
41
  await promptForYarn();
96
42
  const logger = buildLogger("Starting a local Mintlify instance...");
97
43
  await fse.ensureDir(path.join(DOT_MINTLIFY, "mint"));
98
- shell.cd(path.join(HOME_DIR, ".mintlify", "mint"));
44
+ const MINT_PATH = path.join(DOT_MINTLIFY, "mint");
45
+ shell.cd(MINT_PATH);
46
+ const gitPullStatus = shellExec("git show").stdout;
47
+ if (gitPullStatus.startsWith("commit 78d764335877932a0dc305d615411dedd18bd18a")) {
48
+ await fse.emptyDir(MINT_PATH);
49
+ }
99
50
  let runYarn = true;
100
51
  const gitInstalled = shell.which("git");
101
52
  let firstInstallation = false;
@@ -117,7 +68,7 @@ const dev = async () => {
117
68
  if (internet && gitInstalled) {
118
69
  shellExec("git config core.sparseCheckout true");
119
70
  shellExec('echo "client/" >> .git/info/sparse-checkout');
120
- pullOutput = shellExec("git pull mint-origin legacy-components-import").stdout;
71
+ pullOutput = shellExec("git pull mint-origin main").stdout;
121
72
  shellExec("git config core.sparseCheckout false");
122
73
  shellExec("rm .git/info/sparse-checkout");
123
74
  }
@@ -147,13 +98,14 @@ const dev = async () => {
147
98
  `);
148
99
  process.exit(1);
149
100
  }
150
- await copyFiles(logger);
101
+ shellExec(`yarn preconfigure ../../../../..${CMD_EXEC_PATH}`);
102
+ logger.succeed("Local Mintlify instance initialized");
151
103
  run();
152
104
  };
153
105
  const run = () => {
154
106
  shell.cd(CLIENT_PATH);
155
107
  console.log(`🌿 ${Chalk.green("Navigate to your local preview at http://localhost:3000")}`);
156
- shell.exec("npm run dev", { async: true });
108
+ shell.exec("npm run dev-watch", { async: true });
157
109
  open("http://localhost:3000");
158
110
  listener();
159
111
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-preview/index.ts"],"names":[],"mappings":"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"}
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,89 @@
1
+ // TODO - add types
2
+ import { promises as _promises } from "fs";
3
+ import { outputFile } from "fs-extra";
4
+ import path from "path";
5
+ import createPage from "./utils/createPage.js";
6
+ import categorizeFiles from "./categorizeFiles.js";
7
+ import { CMD_EXEC_PATH } from "../../constants.js";
8
+ import { getConfigObj } from "./utils/mintConfigFile.js";
9
+ const { readFile } = _promises;
10
+ // TODO: Put in prebuild package
11
+ const generateNavFromPages = (pages, mintConfigNav) => {
12
+ const createNav = (nav) => {
13
+ return {
14
+ group: nav.group,
15
+ version: nav.version,
16
+ pages: nav.pages.map((page) => {
17
+ if (typeof page === "string") {
18
+ return pages[page];
19
+ }
20
+ return createNav(page);
21
+ }),
22
+ };
23
+ };
24
+ if (mintConfigNav == null) {
25
+ return;
26
+ }
27
+ let navFile = mintConfigNav.map((nav) => createNav(nav));
28
+ const filterOutNullInPages = (pages) => {
29
+ const newPages = [];
30
+ pages.forEach((page) => {
31
+ if (page == null) {
32
+ return;
33
+ }
34
+ if (page?.pages) {
35
+ const newGroup = filterOutNullInGroup(page);
36
+ newPages.push(newGroup);
37
+ }
38
+ else {
39
+ newPages.push(page);
40
+ }
41
+ });
42
+ return newPages;
43
+ };
44
+ const filterOutNullInGroup = (group) => {
45
+ const newPages = filterOutNullInPages(group.pages);
46
+ const newGroup = {
47
+ ...group,
48
+ pages: newPages,
49
+ };
50
+ return newGroup;
51
+ };
52
+ const newNavFile = navFile.map((group) => {
53
+ return filterOutNullInGroup(group);
54
+ });
55
+ return newNavFile;
56
+ };
57
+ // TODO: Put in prebuild package
58
+ const createPagesAcc = async (contentDirectoryPath, contentFilenames, openApiFiles, clientPath, writeFiles = false) => {
59
+ let pagesAcc = {};
60
+ const contentPromises = [];
61
+ contentFilenames.forEach((filename) => {
62
+ contentPromises.push((async () => {
63
+ const sourcePath = path.join(contentDirectoryPath, filename);
64
+ const contentStr = (await readFile(sourcePath)).toString();
65
+ const { slug, pageMetadata, pageContent } = await createPage(filename, contentStr, contentDirectoryPath, openApiFiles);
66
+ if (clientPath && writeFiles) {
67
+ const targetPath = path.join(clientPath, "src", "_props", filename);
68
+ await outputFile(targetPath, pageContent, {
69
+ flag: "w",
70
+ });
71
+ }
72
+ pagesAcc = {
73
+ ...pagesAcc,
74
+ [slug]: pageMetadata,
75
+ };
76
+ })());
77
+ });
78
+ await Promise.all(contentPromises);
79
+ return pagesAcc;
80
+ };
81
+ export const generateNav = async () => {
82
+ const { contentFilenames, openApiFiles } = await categorizeFiles(CMD_EXEC_PATH);
83
+ const [pageAcc, configObj] = await Promise.all([
84
+ createPagesAcc(CMD_EXEC_PATH, contentFilenames, openApiFiles),
85
+ getConfigObj(CMD_EXEC_PATH),
86
+ ]);
87
+ return generateNavFromPages(pageAcc, configObj?.navigation);
88
+ };
89
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/local-preview/listener/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import chokidar from "chokidar";
2
+ import fse from "fs-extra";
3
+ import pathUtil from "path";
4
+ import { fileIsMdxOrMd } from "./utils/fileIsMdxOrMd.js";
5
+ import { openApiCheck } from "./utils.js";
6
+ import { updateGeneratedNav, updateOpenApiFiles } from "./update.js";
7
+ import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
8
+ import { promises as _promises } from "fs";
9
+ import createPage from "./utils/createPage.js";
10
+ const { readFile } = _promises;
11
+ const listener = () => {
12
+ chokidar
13
+ .watch(CMD_EXEC_PATH, {
14
+ ignoreInitial: true,
15
+ ignored: ["node_modules", ".git"],
16
+ cwd: CMD_EXEC_PATH,
17
+ })
18
+ .on("all", async (event, filename) => {
19
+ if (event === "unlink" || event === "unlinkDir") {
20
+ if (fileIsMdxOrMd(filename)) {
21
+ const targetPath = pathUtil.join(CLIENT_PATH, "src", "_props", filename);
22
+ await fse.remove(targetPath);
23
+ console.log(`${filename.startsWith("_snippets") ? "Snippet" : "Page"} deleted: `, filename);
24
+ }
25
+ else if (filename === "mint.json") {
26
+ const targetPath = pathUtil.join(CLIENT_PATH, "src", "_props", "mint.json");
27
+ await fse.remove(targetPath);
28
+ console.log("⚠️ mint.json deleted. Please create a new mint.json file as it is mandatory.");
29
+ process.exit(1);
30
+ }
31
+ else {
32
+ const extension = pathUtil.parse(filename).ext.slice(1);
33
+ if (extension &&
34
+ (extension === "json" ||
35
+ extension === "yaml" ||
36
+ extension === "yml")) {
37
+ await updateOpenApiFiles();
38
+ await updateGeneratedNav();
39
+ return;
40
+ }
41
+ // all other files
42
+ const targetPath = pathUtil.join(CLIENT_PATH, "public", filename);
43
+ await fse.remove(targetPath);
44
+ console.log("Static file deleted: ", filename);
45
+ }
46
+ }
47
+ else {
48
+ const filePath = pathUtil.join(CMD_EXEC_PATH, filename);
49
+ let regenerateNav = false;
50
+ if (fileIsMdxOrMd(filename)) {
51
+ const targetPath = pathUtil.join(CLIENT_PATH, "src", "_props", filename);
52
+ if (filename.startsWith("_snippets")) {
53
+ const sourcePath = pathUtil.join(CMD_EXEC_PATH, filename);
54
+ await fse.remove(targetPath);
55
+ await fse.copy(sourcePath, targetPath);
56
+ return;
57
+ }
58
+ regenerateNav = true;
59
+ const contentStr = (await readFile(filePath)).toString();
60
+ const { pageContent } = await createPage(filename, contentStr, CMD_EXEC_PATH, []);
61
+ await fse.outputFile(targetPath, pageContent, {
62
+ flag: "w",
63
+ });
64
+ switch (event) {
65
+ case "add":
66
+ case "addDir":
67
+ console.log("New page detected: ", filename);
68
+ break;
69
+ default:
70
+ console.log("Page edited: ", filename);
71
+ break;
72
+ }
73
+ }
74
+ else if (filename === "mint.json") {
75
+ regenerateNav = true;
76
+ const targetPath = pathUtil.join(CLIENT_PATH, "src", "_props", "mint.json");
77
+ await fse.copy(filePath, targetPath);
78
+ switch (event) {
79
+ case "add":
80
+ case "addDir":
81
+ console.log("Config added");
82
+ break;
83
+ default:
84
+ console.log("Config edited");
85
+ break;
86
+ }
87
+ }
88
+ else {
89
+ const extension = pathUtil.parse(filename).ext.slice(1);
90
+ let isOpenApi = false;
91
+ if (extension &&
92
+ (extension === "json" ||
93
+ extension === "yaml" ||
94
+ extension === "yml")) {
95
+ const openApiInfo = await openApiCheck(pathUtil.join(CMD_EXEC_PATH, filename));
96
+ isOpenApi = openApiInfo.isOpenApi;
97
+ if (isOpenApi) {
98
+ await updateOpenApiFiles();
99
+ regenerateNav = true;
100
+ }
101
+ }
102
+ if (!isOpenApi) {
103
+ // all other files
104
+ const targetPath = pathUtil.join(CLIENT_PATH, "public", filename);
105
+ await fse.copy(filePath, targetPath);
106
+ }
107
+ switch (event) {
108
+ case "add":
109
+ case "addDir":
110
+ if (isOpenApi) {
111
+ console.log("OpenApi file added: ", filename);
112
+ }
113
+ else {
114
+ console.log("Static file added: ", filename);
115
+ }
116
+ break;
117
+ default:
118
+ if (isOpenApi) {
119
+ console.log("OpenApi file edited: ", filename);
120
+ }
121
+ else {
122
+ console.log("Static file edited: ", filename);
123
+ }
124
+ break;
125
+ }
126
+ }
127
+ if (regenerateNav) {
128
+ // TODO: Instead of re-generating the entire nav, optimize by just updating the specific page that changed.
129
+ await updateGeneratedNav();
130
+ }
131
+ }
132
+ });
133
+ };
134
+ export default listener;
135
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/local-preview/listener/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ // TODO: Add Types
2
+ import fse from "fs-extra";
3
+ import { promises as _promises } from "fs";
4
+ import { getConfigPath } from "./utils/mintConfigFile.js";
5
+ import { CLIENT_PATH, CMD_EXEC_PATH } from "../../constants.js";
6
+ import { join } from "path";
7
+ import { generateNav } from "./generate.js";
8
+ import categorizeFiles from "./categorizeFiles.js";
9
+ const { readFile } = _promises;
10
+ // 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
+ export const updateGeneratedNav = async () => {
28
+ const generatedNav = await generateNav();
29
+ const targetPath = join(CLIENT_PATH, "src", "_props", "generatedNav.json");
30
+ await fse.outputFile(targetPath, JSON.stringify(generatedNav, null, 2), {
31
+ flag: "w",
32
+ });
33
+ };
34
+ export const updateOpenApiFiles = async () => {
35
+ const { openApiFiles } = await categorizeFiles(CMD_EXEC_PATH);
36
+ const targetPath = join(CLIENT_PATH, "src", "_props", "openApiFiles.json");
37
+ await fse.outputFile(targetPath, JSON.stringify(openApiFiles, null, 2), {
38
+ flag: "w",
39
+ });
40
+ };
41
+ //# sourceMappingURL=update.js.map
@@ -0,0 +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,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,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,MAAM,sBAAsB,CAAC;AAEnD,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;AAE/B,gCAAgC;AAEhC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,oBAA4B,EAAE,EAAE;IACrE,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IACnE,MAAM,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACnC,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAE7D,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,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClD,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;KACnD;SAAM;QACL,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,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"}