@mintlify/previewing 4.0.1153 → 4.0.1154

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.
@@ -1,98 +1,4 @@
1
- import { findAndRemoveImports, hasImports, optionallyAddLeadingSlash, optionallyRemoveLeadingSlash, replaceVariables, resolveAllImports as baseResolveAllImports, resolveImportPath, topologicalSort, } from '@mintlify/common';
2
- import { preparseMdxTree } from '@mintlify/prebuild';
3
- import fse from 'fs-extra';
4
- import { join } from 'path';
5
- import { CMD_EXEC_PATH, NEXT_PUBLIC_PATH } from '../../constants.js';
6
- import { getCurrentVariables, handleParseError } from './utils.js';
7
- const getImportSourcePath = async (filename) => {
8
- const generatedPath = join(NEXT_PUBLIC_PATH, filename);
9
- if (await fse.pathExists(generatedPath)) {
10
- return {
11
- baseDir: NEXT_PUBLIC_PATH,
12
- path: generatedPath,
13
- };
14
- }
15
- const originalPath = join(CMD_EXEC_PATH, filename);
16
- if (await fse.pathExists(originalPath)) {
17
- return {
18
- baseDir: CMD_EXEC_PATH,
19
- path: originalPath,
20
- };
21
- }
22
- return null;
23
- };
24
- const parseSnippetWithImports = async ({ filename, variables, snippetsByFilename, }) => {
25
- const normalizedFilename = optionallyAddLeadingSlash(filename);
26
- if (snippetsByFilename.has(normalizedFilename)) {
27
- return;
28
- }
29
- const importSource = await getImportSourcePath(optionallyRemoveLeadingSlash(normalizedFilename));
30
- if (importSource == null) {
31
- return;
32
- }
33
- const content = replaceVariables((await fse.readFile(importSource.path)).toString(), variables);
34
- const tree = await preparseMdxTree(content, importSource.baseDir, importSource.path, handleParseError);
35
- const importData = await findAndRemoveImports(tree);
36
- const fileWithImports = {
37
- filename: normalizedFilename,
38
- ...importData,
39
- };
40
- snippetsByFilename.set(normalizedFilename, fileWithImports);
41
- await Promise.all(Object.keys(importData.importMap).map(async (source) => {
42
- const resolvedPath = resolveImportPath(source, normalizedFilename);
43
- if (resolvedPath == null) {
44
- return;
45
- }
46
- await parseSnippetWithImports({
47
- filename: resolvedPath,
48
- variables,
49
- snippetsByFilename,
50
- });
51
- }));
52
- };
53
- const resolveSnippetImports = async (snippetsByFilename) => {
54
- const graph = {};
55
- for (const snippet of snippetsByFilename.values()) {
56
- graph[snippet.filename] = Object.keys(snippet.importMap)
57
- .map((source) => resolveImportPath(source, snippet.filename))
58
- .filter((resolvedPath) => {
59
- return resolvedPath != null && snippetsByFilename.has(resolvedPath);
60
- });
61
- }
62
- const orderedFilenames = topologicalSort(graph).reverse();
63
- const resolvedSnippets = [];
64
- for (const filename of orderedFilenames) {
65
- const snippet = snippetsByFilename.get(filename);
66
- if (snippet == null) {
67
- continue;
68
- }
69
- const tree = hasImports(snippet)
70
- ? await baseResolveAllImports({
71
- snippets: resolvedSnippets,
72
- fileWithImports: snippet,
73
- })
74
- : snippet.tree;
75
- resolvedSnippets.push({ filename: snippet.filename, tree });
76
- }
77
- return resolvedSnippets;
78
- };
1
+ import { resolveImportsFromImportClosure } from './resolve-imports-from-import-closure.js';
79
2
  export const resolvePageImports = async (fileWithImports) => {
80
- const variables = await getCurrentVariables();
81
- const snippetsByFilename = new Map();
82
- await Promise.all(Object.keys(fileWithImports.importMap).map(async (source) => {
83
- const resolvedPath = resolveImportPath(source, fileWithImports.filename);
84
- if (resolvedPath == null) {
85
- return;
86
- }
87
- await parseSnippetWithImports({
88
- filename: resolvedPath,
89
- variables,
90
- snippetsByFilename,
91
- });
92
- }));
93
- const snippets = await resolveSnippetImports(snippetsByFilename);
94
- return await baseResolveAllImports({
95
- snippets,
96
- fileWithImports,
97
- });
3
+ return await resolveImportsFromImportClosure(fileWithImports);
98
4
  };