@mintlify/prebuild 1.0.1401 → 1.0.1403

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.
@@ -18,9 +18,12 @@ export type GenerateGraphqlDivisionsResult = {
18
18
  parsedReferences: Record<string, GraphqlReference>;
19
19
  };
20
20
  export type GraphqlSourceLoader = (source: string) => Promise<string>;
21
+ export type GenerateGraphqlDivisionsOptions = {
22
+ onSourceError?: (source: string, error: unknown) => void;
23
+ };
21
24
  export declare const getGraphqlRouteKey: (route: string) => string;
22
25
  /** Transform GraphQL navigation without reading or writing the filesystem. */
23
- export declare function generateGraphqlDivisionsFromDocsConfig(docsConfig: DocsConfig, loadSource: GraphqlSourceLoader): Promise<GenerateGraphqlDivisionsResult>;
26
+ export declare function generateGraphqlDivisionsFromDocsConfig(docsConfig: DocsConfig, loadSource: GraphqlSourceLoader, { onSourceError }?: GenerateGraphqlDivisionsOptions): Promise<GenerateGraphqlDivisionsResult>;
24
27
  export declare function generateGraphqlDivisions(docsConfig: DocsConfig, contentDirectoryPath: string, targetDir?: string): Promise<GenerateGraphqlDivisionsResult>;
25
28
  export declare function loadGraphqlSdlSource(source: string, contentDirectoryPath: string): Promise<string>;
26
29
  export declare const isRemoteGraphqlSource: (source: string) => boolean;
@@ -94,7 +94,7 @@ function mdxStub(page) {
94
94
  return `---\n${fields.join('\n')}\n---\n`;
95
95
  }
96
96
  /** Transform GraphQL navigation without reading or writing the filesystem. */
97
- export async function generateGraphqlDivisionsFromDocsConfig(docsConfig, loadSource) {
97
+ export async function generateGraphqlDivisionsFromDocsConfig(docsConfig, loadSource, { onSourceError } = {}) {
98
98
  const references = new Map();
99
99
  const parsedReferences = new Map();
100
100
  const pagesByRouteKey = new Map();
@@ -102,11 +102,17 @@ export async function generateGraphqlDivisionsFromDocsConfig(docsConfig, loadSou
102
102
  async function load(source) {
103
103
  let pending = references.get(source);
104
104
  if (!pending) {
105
- pending = loadSource(source).then((sdl) => {
105
+ const loaded = loadSource(source).then((sdl) => {
106
106
  const reference = parseGraphqlSdl(sdl);
107
107
  parsedReferences.set(source, reference);
108
108
  return reference;
109
109
  });
110
+ pending = onSourceError
111
+ ? loaded.catch((error) => {
112
+ onSourceError(source, error);
113
+ return undefined;
114
+ })
115
+ : loaded;
110
116
  references.set(source, pending);
111
117
  }
112
118
  return pending;
@@ -129,7 +135,10 @@ export async function generateGraphqlDivisionsFromDocsConfig(docsConfig, loadSou
129
135
  const selector = parseGraphqlSelector(page);
130
136
  if (!selector)
131
137
  return page;
132
- const generated = makeSelectedPage(await load(scope.source), scope.source, scope.directory, selector);
138
+ const reference = await load(scope.source);
139
+ if (!reference)
140
+ return page;
141
+ const generated = makeSelectedPage(reference, scope.source, scope.directory, selector);
133
142
  register(generated);
134
143
  bulkSuppressed.add(scope.owner);
135
144
  return generated.slug;
@@ -155,7 +164,10 @@ export async function generateGraphqlDivisionsFromDocsConfig(docsConfig, loadSou
155
164
  const processed = await processChildren(node, { source, directory, owner: value });
156
165
  if (bulkSuppressed.has(value))
157
166
  return processed;
158
- const generated = generatePages(await load(source), source, directory);
167
+ const reference = await load(source);
168
+ if (!reference)
169
+ return processed;
170
+ const generated = generatePages(reference, source, directory);
159
171
  const groups = [
160
172
  { group: 'Queries', pages: generated.queries.map(({ slug }) => slug) },
161
173
  { group: 'Mutations', pages: generated.mutations.map(({ slug }) => slug) },
@@ -91,16 +91,33 @@ function toGeneratedPage(page, config, directory, referenceSlugs, autogeneratedB
91
91
  ...(autogeneratedBySdk ? { autogeneratedBySdk: true } : {}),
92
92
  };
93
93
  }
94
+ function prefixSdkGroup(group, directory) {
95
+ return {
96
+ group: group.group,
97
+ pages: group.pages.map((entry) => typeof entry === 'string'
98
+ ? path.posix.join(directory, entry)
99
+ : prefixSdkGroup(entry, directory)),
100
+ };
101
+ }
102
+ function collectSdkGroupSlugs(groups, slugs = new Set()) {
103
+ for (const group of groups) {
104
+ for (const entry of group.pages) {
105
+ if (typeof entry === 'string')
106
+ slugs.add(entry);
107
+ else
108
+ collectSdkGroupSlugs([entry], slugs);
109
+ }
110
+ }
111
+ return slugs;
112
+ }
94
113
  function expandSdkGroups(reference, directory) {
95
114
  const pageBySlug = new Map(reference.pages.map((page) => [page.slug, page]));
96
- const groups = reference.groups.map((group) => ({
97
- group: group.group,
98
- pages: group.pages.map((slug) => path.posix.join(directory, slug)),
99
- }));
115
+ const groups = reference.groups.map((group) => prefixSdkGroup(group, directory));
116
+ const groupedSlugs = collectSdkGroupSlugs(reference.groups);
100
117
  const orphanedSlugs = reference.pages
101
118
  .filter((page) => !page.target?.parent)
102
119
  .map((page) => page.slug)
103
- .filter((slug) => !reference.groups.some((group) => group.pages.includes(slug)));
120
+ .filter((slug) => !groupedSlugs.has(slug));
104
121
  if (orphanedSlugs.length > 0 && pageBySlug.size > 0) {
105
122
  groups.push({
106
123
  group: 'Reference',
@@ -44,4 +44,4 @@ export { generateAsyncApiFromDocsConfig } from './generateAsyncApiFromDocsConfig
44
44
  export { getCustomLanguages } from './getCustomLanguages.js';
45
45
  export { generateGraphqlDivisions, generateGraphqlDivisionsFromDocsConfig, getGraphqlRouteKey, isRemoteGraphqlSource, loadGraphqlSdlSource, loadRemoteGraphqlSdl, writeGraphqlArtifacts, } from './generateGraphqlDivisions.js';
46
46
  export { assertNoGeneratedRouteCollisions, getGeneratedRouteKey, } from './generatedRouteCollisions.js';
47
- export type { GeneratedGraphqlPage, GenerateGraphqlDivisionsResult, GraphqlSourceLoader, } from './generateGraphqlDivisions.js';
47
+ export type { GeneratedGraphqlPage, GenerateGraphqlDivisionsOptions, GenerateGraphqlDivisionsResult, GraphqlSourceLoader, } from './generateGraphqlDivisions.js';