@thallylabs/migrate 0.2.46 → 0.2.48
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 +99 -7
- package/dist/index.d.ts +4 -2
- package/dist/index.js +654 -136
- package/dist/index.js.map +1 -1
- package/dist/url-migration.d.ts +2 -2
- package/dist/url-migration.js +137 -19
- package/dist/url-migration.js.map +1 -1
- package/dist/{url-run-D-E4dr2h.d.ts → url-run-0BYlnvvB.d.ts} +6 -0
- package/package.json +1 -1
package/dist/url-migration.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { h as MigrationCapture } from './url-run-
|
|
2
|
-
export { a as MigrationAsset, f as MigrationBundle, i as MigrationCaptureProvider, j as MigrationCaptureState, k as MigrationCapturedAsset, g as MigrationDocsConfig, l as MigrationEvidence, m as MigrationFetchRequest, n as MigrationFetchResponse, d as MigrationFetcher, o as MigrationJournalAsset, b as MigrationNavigationGroup, p as MigrationNavigationOccurrence, q as MigrationNavigationTab, M as MigrationPage, e as MigrationPlatform, c as MigrationWarning, R as RenderedMigrationFile, U as UrlMigrationCheckpoint, r as UrlMigrationCheckpointDelta, s as UrlMigrationIssue, t as UrlMigrationRecord, u as UrlMigrationRun, v as UrlMigrationRunOptions, w as UrlMigrationValidation, x as classifyMigrationResponse, z as renderMigrationFiles, A as runUrlMigration, B as validateUrlMigration } from './url-run-
|
|
1
|
+
import { h as MigrationCapture } from './url-run-0BYlnvvB.js';
|
|
2
|
+
export { a as MigrationAsset, f as MigrationBundle, i as MigrationCaptureProvider, j as MigrationCaptureState, k as MigrationCapturedAsset, g as MigrationDocsConfig, l as MigrationEvidence, m as MigrationFetchRequest, n as MigrationFetchResponse, d as MigrationFetcher, o as MigrationJournalAsset, b as MigrationNavigationGroup, p as MigrationNavigationOccurrence, q as MigrationNavigationTab, M as MigrationPage, e as MigrationPlatform, c as MigrationWarning, R as RenderedMigrationFile, U as UrlMigrationCheckpoint, r as UrlMigrationCheckpointDelta, s as UrlMigrationIssue, t as UrlMigrationRecord, u as UrlMigrationRun, v as UrlMigrationRunOptions, w as UrlMigrationValidation, x as classifyMigrationResponse, z as renderMigrationFiles, A as runUrlMigration, B as validateUrlMigration } from './url-run-0BYlnvvB.js';
|
|
3
3
|
|
|
4
4
|
interface UrlMigrationScope {
|
|
5
5
|
scopePath: string;
|
package/dist/url-migration.js
CHANGED
|
@@ -2397,6 +2397,50 @@ function salvageFrontmatterLines(matter) {
|
|
|
2397
2397
|
}
|
|
2398
2398
|
return data;
|
|
2399
2399
|
}
|
|
2400
|
+
var KEY_LINE = /^[A-Za-z_][\w-]*:(?:\s|$)/;
|
|
2401
|
+
var QUOTED_KEY_LINE = /^[A-Za-z_][\w-]*:[ \t]*(["'])/;
|
|
2402
|
+
function closingQuote(line, from, quote) {
|
|
2403
|
+
for (let index = from; index < line.length; index++) {
|
|
2404
|
+
if (quote === '"' && line[index] === "\\") index++;
|
|
2405
|
+
else if (line[index] === quote) {
|
|
2406
|
+
if (quote === "'" && line[index + 1] === "'") index++;
|
|
2407
|
+
else return index;
|
|
2408
|
+
}
|
|
2409
|
+
}
|
|
2410
|
+
return -1;
|
|
2411
|
+
}
|
|
2412
|
+
function foldQuotedLineBreaks(matter) {
|
|
2413
|
+
const lines = matter.split(/\r?\n/);
|
|
2414
|
+
const folded = [];
|
|
2415
|
+
let changed = false;
|
|
2416
|
+
for (let start = 0; start < lines.length; start++) {
|
|
2417
|
+
const opening = QUOTED_KEY_LINE.exec(lines[start]);
|
|
2418
|
+
if (!opening || closingQuote(lines[start], opening[0].length, opening[1]) !== -1) {
|
|
2419
|
+
folded.push(lines[start]);
|
|
2420
|
+
continue;
|
|
2421
|
+
}
|
|
2422
|
+
const quote = opening[1];
|
|
2423
|
+
let value = lines[start].slice(opening[0].length).trimEnd();
|
|
2424
|
+
let end = start + 1;
|
|
2425
|
+
for (; end < lines.length; end++) {
|
|
2426
|
+
const line = lines[end];
|
|
2427
|
+
if (line.trim() === "" || KEY_LINE.test(line)) return void 0;
|
|
2428
|
+
const close = closingQuote(line, 0, quote);
|
|
2429
|
+
if (close === -1) {
|
|
2430
|
+
value += ` ${line.trim()}`;
|
|
2431
|
+
continue;
|
|
2432
|
+
}
|
|
2433
|
+
if (!/^\s*(?:#.*)?$/.test(line.slice(close + 1))) return void 0;
|
|
2434
|
+
value += ` ${line.slice(0, close).trimStart()}`;
|
|
2435
|
+
break;
|
|
2436
|
+
}
|
|
2437
|
+
if (end === lines.length) return void 0;
|
|
2438
|
+
folded.push(`${lines[start].slice(0, opening[0].length - 1)}${quote}${value}${quote}`);
|
|
2439
|
+
changed = true;
|
|
2440
|
+
start = end;
|
|
2441
|
+
}
|
|
2442
|
+
return changed ? folded.join("\n") : void 0;
|
|
2443
|
+
}
|
|
2400
2444
|
function parseFrontmatter(raw) {
|
|
2401
2445
|
const source = raw.charCodeAt(0) === 65279 ? raw.slice(1) : raw;
|
|
2402
2446
|
const opening = /^---([^\r\n]*)\r?\n/.exec(source);
|
|
@@ -2418,6 +2462,14 @@ function parseFrontmatter(raw) {
|
|
|
2418
2462
|
data: parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {}
|
|
2419
2463
|
};
|
|
2420
2464
|
} catch (err) {
|
|
2465
|
+
const foldedMatter = foldQuotedLineBreaks(matter);
|
|
2466
|
+
if (foldedMatter !== void 0) {
|
|
2467
|
+
try {
|
|
2468
|
+
const parsed = parseYaml2(foldedMatter);
|
|
2469
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return { content, data: parsed };
|
|
2470
|
+
} catch {
|
|
2471
|
+
}
|
|
2472
|
+
}
|
|
2421
2473
|
return {
|
|
2422
2474
|
content,
|
|
2423
2475
|
data: salvageFrontmatterLines(matter),
|
|
@@ -2525,6 +2577,7 @@ function normalizeMintlifyCodeFences(body, warn) {
|
|
|
2525
2577
|
}
|
|
2526
2578
|
|
|
2527
2579
|
// src/mdx.ts
|
|
2580
|
+
var MDX_COMPILE_OPTIONS = { outputFormat: "program", remarkPlugins: [remarkGfm2] };
|
|
2528
2581
|
function titleFromId(id) {
|
|
2529
2582
|
const value = id.split("/").at(-1) ?? id;
|
|
2530
2583
|
if (value === "introduction") return "Introduction";
|
|
@@ -2803,6 +2856,7 @@ function mintlifyHeadingSlug(text2) {
|
|
|
2803
2856
|
let id = "";
|
|
2804
2857
|
let afterDash = false;
|
|
2805
2858
|
let endsWithDash = false;
|
|
2859
|
+
let softDash = false;
|
|
2806
2860
|
chars.forEach((char, index) => {
|
|
2807
2861
|
const before = chars[index - 1];
|
|
2808
2862
|
const after = chars[index + 1];
|
|
@@ -2810,7 +2864,9 @@ function mintlifyHeadingSlug(text2) {
|
|
|
2810
2864
|
if (isWord(char)) {
|
|
2811
2865
|
id += char;
|
|
2812
2866
|
afterDash = false;
|
|
2867
|
+
softDash = false;
|
|
2813
2868
|
} else if (/[\s-]/.test(char) || char === "." && (isWord(after) || after === ",") || char === "(" && isWord(before) && (isWord(after) || after === "{") || char === ")" && after !== void 0 && !/\s/.test(after)) {
|
|
2869
|
+
softDash = /[\s-]/.test(char) ? false : id !== "" && !afterDash || softDash;
|
|
2814
2870
|
if (id && !afterDash) id += "-";
|
|
2815
2871
|
afterDash = true;
|
|
2816
2872
|
endsWithDash = true;
|
|
@@ -2818,24 +2874,28 @@ function mintlifyHeadingSlug(text2) {
|
|
|
2818
2874
|
afterDash = false;
|
|
2819
2875
|
}
|
|
2820
2876
|
});
|
|
2821
|
-
return endsWithDash ? id.replace(/-$/, "") : id;
|
|
2877
|
+
return endsWithDash || softDash ? id.replace(/-$/, "") : id;
|
|
2822
2878
|
}
|
|
2823
2879
|
function thallyHeadingSlug(text2) {
|
|
2824
2880
|
return text2.normalize("NFC").toLowerCase().replace(/[^\p{L}\p{M}\p{N}]+/gu, "-").replace(/(^-|-$)/g, "");
|
|
2825
2881
|
}
|
|
2882
|
+
var LINK_DESTINATION = String.raw`\]\((?:[^()]|\([^()]*\))*\)`;
|
|
2883
|
+
var TYPESET_PROTECTED = new RegExp(`(\`[^\`]*\`|<[^>]*>|${LINK_DESTINATION})`);
|
|
2826
2884
|
function typesetQuotes(text2) {
|
|
2827
2885
|
const opensClosed = text2.startsWith('"') && !text2.trimEnd().endsWith('"');
|
|
2828
|
-
return text2.split(
|
|
2886
|
+
return text2.split(TYPESET_PROTECTED).map((part, index) => {
|
|
2829
2887
|
if (index % 2) return part;
|
|
2830
2888
|
return part.replace(/(^|[\s([{\u2014\u2013])"/g, (match, before) => opensClosed && index === 0 && before === "" ? match : `${before}\u201C`).replace(/"/g, "\u201D").replace(/(^|[\s([{\u2014\u2013\u201c])'(?=\S)(?!<|<)/g, "$1\u2018").replace(/'/g, "\u2019");
|
|
2831
2889
|
}).join("");
|
|
2832
2890
|
}
|
|
2833
2891
|
function typesetEllipses(text2) {
|
|
2834
|
-
return text2.split(
|
|
2892
|
+
return text2.split(TYPESET_PROTECTED).map((part, index) => index % 2 ? part : part.replace(/\.{3}/g, "\u2026")).join("");
|
|
2835
2893
|
}
|
|
2894
|
+
var LINK_HOLDING_CODE = new RegExp(`(\`[^\`]*\`)|!?\\[((?:\`[^\`]*\`|[^\\]\`])*)${LINK_DESTINATION}`, "g");
|
|
2895
|
+
var PLAIN_LINK = new RegExp(`!?\\[([^\\]]*)${LINK_DESTINATION}`, "g");
|
|
2836
2896
|
function plainHeadingText(source) {
|
|
2837
|
-
const unlinked = !source.includes("`") ? source : source.replace(
|
|
2838
|
-
return unlinked.split(/(`[^`]*`)/).map((part, index) => index % 2 ? part.slice(1, -1) : part.replace(/\{\/\*[\s\S]*?\*\/\}/g, " ").replace(
|
|
2897
|
+
const unlinked = !source.includes("`") ? source : source.replace(LINK_HOLDING_CODE, (_match, code, text2 = "") => code ?? text2);
|
|
2898
|
+
return unlinked.split(/(`[^`]*`)/).map((part, index) => index % 2 ? part.slice(1, -1) : part.replace(/\{\/\*[\s\S]*?\*\/\}/g, " ").replace(PLAIN_LINK, "$1").replace(/<\/?[A-Za-z][^>]*>/g, "").replace(/(?<!\\)(\*\*|__|~~|\*)/g, "").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/\\([\\`*_{}[\]()#+.!&<>|~-])/g, "$1")).join("");
|
|
2839
2899
|
}
|
|
2840
2900
|
function staticAttributeString(value) {
|
|
2841
2901
|
if (typeof value === "string") return value;
|
|
@@ -2985,7 +3045,7 @@ function maskCode(body) {
|
|
|
2985
3045
|
}
|
|
2986
3046
|
continue;
|
|
2987
3047
|
}
|
|
2988
|
-
if (fenceMatch) {
|
|
3048
|
+
if (fenceMatch && !(fenceMatch[1][0] === "`" && line.slice(fenceMatch[0].length).includes("`"))) {
|
|
2989
3049
|
codeFence = fenceMatch[1];
|
|
2990
3050
|
fenceBuffer = [line];
|
|
2991
3051
|
continue;
|
|
@@ -3249,6 +3309,28 @@ function normalizeDocusaurusTabs(body) {
|
|
|
3249
3309
|
}
|
|
3250
3310
|
return result.replace(/<ThallyTabs\b/g, "<Tabs").replace(/<\/ThallyTabs>/g, "</Tabs>");
|
|
3251
3311
|
}
|
|
3312
|
+
function normalizeStrayTabItems(body) {
|
|
3313
|
+
const tags = [...body.matchAll(/<TabItem\b([^<>]*)>|<\/TabItem>/g)].filter((tag) => !/\/$/.test(tag[1] ?? ""));
|
|
3314
|
+
const openers = [];
|
|
3315
|
+
const paired = /* @__PURE__ */ new Set();
|
|
3316
|
+
tags.forEach((tag, index) => {
|
|
3317
|
+
if (tag[0] !== "</TabItem>") openers.push(index);
|
|
3318
|
+
else if (openers.length > 0) {
|
|
3319
|
+
paired.add(openers.pop());
|
|
3320
|
+
paired.add(index);
|
|
3321
|
+
}
|
|
3322
|
+
});
|
|
3323
|
+
let result = "";
|
|
3324
|
+
let cursor = 0;
|
|
3325
|
+
tags.forEach((tag, index) => {
|
|
3326
|
+
if (!paired.has(index)) return;
|
|
3327
|
+
const attributes = tag[1] ?? "";
|
|
3328
|
+
const title = attributes.match(/\blabel=(?:"([^"]*)"|'([^']*)')/)?.slice(1).find(Boolean) ?? attributes.match(/\bvalue=(?:"([^"]*)"|'([^']*)')/)?.slice(1).find(Boolean) ?? "Tab";
|
|
3329
|
+
result += `${body.slice(cursor, tag.index)}${tag[0] === "</TabItem>" ? "</Tab>" : `<Tab title="${title.replace(/"/g, """)}">`}`;
|
|
3330
|
+
cursor = tag.index + tag[0].length;
|
|
3331
|
+
});
|
|
3332
|
+
return result + body.slice(cursor);
|
|
3333
|
+
}
|
|
3252
3334
|
var TAB_FENCE_OPEN = /^(`{3,}|~{3,})(\S*)\s+tab\b(.*)$/;
|
|
3253
3335
|
function normalizeDocusaurusTabBlocks(body) {
|
|
3254
3336
|
const lines = body.split("\n");
|
|
@@ -3472,6 +3554,37 @@ function pinStepsTitleSize(body) {
|
|
|
3472
3554
|
}
|
|
3473
3555
|
return result + body.slice(cursor);
|
|
3474
3556
|
}
|
|
3557
|
+
function addMintlifyVideoAttributes(body) {
|
|
3558
|
+
if (!body.includes("<video")) return body;
|
|
3559
|
+
let result = "";
|
|
3560
|
+
let cursor = 0;
|
|
3561
|
+
for (const match of body.matchAll(/<video(?=[\s/>])/g)) {
|
|
3562
|
+
if (match.index < cursor) continue;
|
|
3563
|
+
const tag = readTagEnd(body, match.index + match[0].length);
|
|
3564
|
+
if (tag === UNTERMINATED) break;
|
|
3565
|
+
if (!tag) continue;
|
|
3566
|
+
let attributes;
|
|
3567
|
+
try {
|
|
3568
|
+
attributes = descriptionParser.parse(`<video${tag.attributes}/>`).children?.[0]?.attributes ?? [];
|
|
3569
|
+
} catch {
|
|
3570
|
+
continue;
|
|
3571
|
+
}
|
|
3572
|
+
const named = (name) => attributes.find((attribute) => attribute.type === "mdxJsxAttribute" && attribute.name?.toLowerCase() === name.toLowerCase());
|
|
3573
|
+
const autoPlay = named("autoPlay");
|
|
3574
|
+
const start = autoPlay?.position?.start.offset;
|
|
3575
|
+
const end = autoPlay?.position?.end.offset;
|
|
3576
|
+
const off = typeof autoPlay?.value === "object" && autoPlay.value?.value?.trim() === "false";
|
|
3577
|
+
const missing = ["muted", "loop", "playsInline"].filter((name) => !named(name));
|
|
3578
|
+
if (!autoPlay || off || missing.length === 0 || start === void 0 || end === void 0) continue;
|
|
3579
|
+
const at = match.index + end;
|
|
3580
|
+
const indent = body.slice(body.lastIndexOf("\n", match.index + start - 1) + 1, match.index + start);
|
|
3581
|
+
const eol = /^[ \t]*(\r?\n)/.exec(body.slice(at))?.[1];
|
|
3582
|
+
const insert = eol && /^[ \t]*$/.test(indent) ? missing.map((name) => `${eol}${indent}${name}`).join("") : missing.map((name) => ` ${name}`).join("");
|
|
3583
|
+
result += body.slice(cursor, at) + insert;
|
|
3584
|
+
cursor = at;
|
|
3585
|
+
}
|
|
3586
|
+
return result + body.slice(cursor);
|
|
3587
|
+
}
|
|
3475
3588
|
function isKnownComponentName(name, body) {
|
|
3476
3589
|
if (isThallyBuiltinComponent(name)) return true;
|
|
3477
3590
|
if (new RegExp(`^\\s*export\\s+(?:const|function|default\\s+function)\\s+${name}\\b`, "m").test(body)) return true;
|
|
@@ -3501,7 +3614,7 @@ function escapeOrphanCapitalizedTags(body) {
|
|
|
3501
3614
|
}
|
|
3502
3615
|
if (edits.length === 0) return body;
|
|
3503
3616
|
try {
|
|
3504
|
-
compileSync(body,
|
|
3617
|
+
compileSync(body, MDX_COMPILE_OPTIONS);
|
|
3505
3618
|
return body;
|
|
3506
3619
|
} catch {
|
|
3507
3620
|
}
|
|
@@ -3627,20 +3740,18 @@ function normalizeMdx(body, platform, unwrapMdxCodeBlocks = true) {
|
|
|
3627
3740
|
));
|
|
3628
3741
|
rewritten = rewritten.replace(/^\n{2,}/, "\n");
|
|
3629
3742
|
}
|
|
3743
|
+
if (runMintlify && rewritten.includes("<TabItem")) rewritten = replaceOutsideCode(rewritten, normalizeDocusaurusTabs);
|
|
3630
3744
|
if (runMintlify) rewritten = normalizeMintlifyParameterAnchors(rewritten);
|
|
3631
3745
|
rewritten = unwrapHtmlCommentInMdxComment(rewritten);
|
|
3632
3746
|
rewritten = replaceOutsideCode(rewritten, (segment) => {
|
|
3633
3747
|
let result = convertHtmlStyleAttributes(segment).replace(/<!--([\s\S]*?)-->/g, (_match, content) => mdxComment(content)).replace(/<Danger(\s[^>]*)?>/g, "<Error$1>").replace(/<\/Danger>/g, "</Error>").replace(/<Warn(\s[^>]*)?>/g, "<Warning$1>").replace(/<\/Warn>/g, "</Warning>").replace(/<Tree\.Folder/g, "<Folder").replace(/<\/Tree\.Folder>/g, "</Folder>").replace(/<Tree\.File/g, "<File").replace(/<\/Tree\.File>/g, "</File>");
|
|
3634
3748
|
if (runDocusaurus) {
|
|
3635
|
-
result = result.replace(/<
|
|
3636
|
-
const title = attributes.match(/\blabel=(?:"([^"]*)"|'([^']*)')/)?.slice(1).find(Boolean) ?? attributes.match(/\bvalue=(?:"([^"]*)"|'([^']*)')/)?.slice(1).find(Boolean) ?? "Tab";
|
|
3637
|
-
return `<Tab title="${title.replace(/"/g, """)}">`;
|
|
3638
|
-
}).replace(/<\/TabItem>/g, "</Tab>");
|
|
3639
|
-
result = normalizeDocusaurusLinkTags(result).replace(/<(?:DocCardList|TOCInline)\b[^<>]*\/>/g, "");
|
|
3749
|
+
result = normalizeDocusaurusLinkTags(normalizeStrayTabItems(result)).replace(/<(?:DocCardList|TOCInline)\b[^<>]*\/>/g, "");
|
|
3640
3750
|
}
|
|
3641
3751
|
if (runMintlify) {
|
|
3642
|
-
result = normalizeMintlifyUpdateLabels(result).replace(/<FileTree(\s[^>]*)?>/g, "<Tree$1>").replace(/<\/FileTree>/g, "</Tree>").replace(/<GitHub\.Repo/g, "<GitHub").replace(/<\/GitHub\.Repo>/g, "</GitHub>").replace(/<Callout(\s[^<>]*)?>/g, (tag) => tag.replace(/(\s)type=(?:"[^"]*"|'[^']*'|\{[^{}]*\})/, '$1type="info"')).replace(/<Column(\s[^>]*)?>/g, "<div$1>").replace(/<\/Column>/g, "</div>");
|
|
3752
|
+
result = normalizeMintlifyUpdateLabels(normalizeStrayTabItems(result)).replace(/<FileTree(\s[^>]*)?>/g, "<Tree$1>").replace(/<\/FileTree>/g, "</Tree>").replace(/<GitHub\.Repo/g, "<GitHub").replace(/<\/GitHub\.Repo>/g, "</GitHub>").replace(/<Callout(\s[^<>]*)?>/g, (tag) => tag.replace(/(\s)type=(?:"[^"]*"|'[^']*'|\{[^{}]*\})/, '$1type="info"')).replace(/<Column(\s[^>]*)?>/g, "<div$1>").replace(/<\/Column>/g, "</div>");
|
|
3643
3753
|
result = pinStepsTitleSize(result);
|
|
3754
|
+
result = addMintlifyVideoAttributes(result);
|
|
3644
3755
|
}
|
|
3645
3756
|
if (runFern) {
|
|
3646
3757
|
result = result.replace(/<CodeBlocks(\s[^>]*)?>/g, "<CodeGroup$1>").replace(/<\/CodeBlocks>/g, "</CodeGroup>").replace(/<ParameterField\b/g, "<ParamField").replace(/<\/ParameterField>/g, "</ParamField>").replace(/<Cards(\s[^>]*)?>/g, "<CardGroup$1>").replace(/<\/Cards>/g, "</CardGroup>").replace(/<Success(\s[^>]*)?>/g, "<Tip$1>").replace(/<\/Success>/g, "</Tip>").replace(/<Launch(\s[^>]*)?>/g, "<Note$1>").replace(/<\/Launch>/g, "</Note>").replace(/<Files(\s[^>]*)?>\n?/g, "").replace(/<\/Files>/g, "");
|
|
@@ -3651,7 +3762,7 @@ function normalizeMdx(body, platform, unwrapMdxCodeBlocks = true) {
|
|
|
3651
3762
|
const normalized = escapeOrphanCapitalizedTags(provideScopedGlobalReferences(rewritten));
|
|
3652
3763
|
if (runDocusaurus && sourceBody !== body) {
|
|
3653
3764
|
try {
|
|
3654
|
-
compileSync(normalized,
|
|
3765
|
+
compileSync(normalized, MDX_COMPILE_OPTIONS);
|
|
3655
3766
|
} catch {
|
|
3656
3767
|
return normalizeMdx(body, platform, false);
|
|
3657
3768
|
}
|
|
@@ -3713,14 +3824,20 @@ function parseMarkdownPage(input) {
|
|
|
3713
3824
|
const normalized = normalizeMdx(parsed.content, input.platform);
|
|
3714
3825
|
const body = removeUndefinedExpressions(injectReactHookImports(input.platform === "mintlify" ? normalizeMintlifyCodeFences(normalized, input.warn) : normalized), input.warn).trim();
|
|
3715
3826
|
const keywords = Array.isArray(parsed.data.keywords) ? parsed.data.keywords.filter((value) => typeof value === "string") : [];
|
|
3716
|
-
const
|
|
3827
|
+
const namesOperation = typeof parsed.data.openapi === "string" && Boolean(parsed.data.openapi.trim());
|
|
3828
|
+
const heading = input.platform === "mintlify" && !namesOperation ? void 0 : leadingPageHeading(body);
|
|
3717
3829
|
const authoredTitle = typeof parsed.data.title === "string" && parsed.data.title.trim() ? parsed.data.title.trim() : heading?.title;
|
|
3718
3830
|
const title = authoredTitle ?? titleFromId(identity.navigationId);
|
|
3719
|
-
const namesOperation = typeof parsed.data.openapi === "string" && Boolean(parsed.data.openapi.trim());
|
|
3720
3831
|
const sidebarTitle = input.platform === "docusaurus" ? parsed.data.sidebar_label : parsed.data.sidebarTitle;
|
|
3721
3832
|
const navTitle = typeof sidebarTitle === "string" && sidebarTitle.trim() ? sidebarTitle.trim() : typeof parsed.data.navTitle === "string" && parsed.data.navTitle.trim() ? parsed.data.navTitle.trim() : void 0;
|
|
3722
|
-
const
|
|
3723
|
-
const
|
|
3833
|
+
const iconObject = parsed.data.icon && typeof parsed.data.icon === "object" && !Array.isArray(parsed.data.icon) ? parsed.data.icon : void 0;
|
|
3834
|
+
const iconSource = iconObject ? iconObject.name : parsed.data.icon;
|
|
3835
|
+
const icon = typeof iconSource === "string" && iconSource.trim() ? iconSource.trim() : void 0;
|
|
3836
|
+
const iconStyle = (value) => typeof value === "string" && ["regular", "solid", "outline", "brands"].includes(value) ? value : void 0;
|
|
3837
|
+
const iconType = icon ? iconStyle(iconObject?.style) ?? iconStyle(parsed.data.iconType) : void 0;
|
|
3838
|
+
if (icon && typeof iconObject?.library === "string" && input.siteIconLibrary !== void 0 && iconObject.library !== input.siteIconLibrary) {
|
|
3839
|
+
input.warn?.(`Page "${identity.id}": its icon names the "${iconObject.library}" icon library, but this site uses "${input.siteIconLibrary}", so the icon "${icon}" is looked up there and may show a different icon or none. Use an icon name from "${input.siteIconLibrary}", or set icons.library in docs.json to "${iconObject.library}".`);
|
|
3840
|
+
}
|
|
3724
3841
|
const meta = {};
|
|
3725
3842
|
for (const [source, field] of PAGE_META_FIELDS) {
|
|
3726
3843
|
const value = parsed.data[source];
|
|
@@ -6812,11 +6929,12 @@ import { existsSync as existsSync2, lstatSync as lstatSync2, readFileSync as rea
|
|
|
6812
6929
|
import { basename, dirname as dirname2, extname as extname3, posix as posix2, relative as relative3, resolve as resolve3 } from "path";
|
|
6813
6930
|
import postcss2 from "postcss";
|
|
6814
6931
|
import selectorParser2 from "postcss-selector-parser";
|
|
6932
|
+
import remarkGfm3 from "remark-gfm";
|
|
6815
6933
|
import remarkMdx5 from "remark-mdx";
|
|
6816
6934
|
import remarkParse6 from "remark-parse";
|
|
6817
6935
|
import ts3 from "typescript";
|
|
6818
6936
|
import { unified as unified6 } from "unified";
|
|
6819
|
-
var parser3 = unified6().use(remarkParse6).use(remarkMdx5);
|
|
6937
|
+
var parser3 = unified6().use(remarkParse6).use(remarkGfm3).use(remarkMdx5);
|
|
6820
6938
|
var DOCUSAURUS_THEME_SHIMS = {
|
|
6821
6939
|
"@theme/CodeBlock": {
|
|
6822
6940
|
filename: "docusaurus-code-block.tsx",
|