diff --git a/.pnp.cjs b/.pnp.cjs index 0fa45d2aabd..8f04498d126 100644 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -5217,7 +5217,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["@fern-api/configuration", "workspace:packages/cli/configuration"],\ ["@fern-api/core-utils", "workspace:packages/commons/core-utils"],\ - ["@fern-api/fdr-sdk", "npm:0.98.9-3b3a3fe5f"],\ + ["@fern-api/fdr-sdk", "npm:0.98.4-bf08716d8"],\ ["@fern-api/fs-utils", "workspace:packages/commons/fs-utils"],\ ["@fern-api/task-context", "workspace:packages/cli/task-context"],\ ["@fern-fern/fiddle-sdk", "npm:0.0.584"],\ @@ -5233,7 +5233,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["find-up", "npm:6.3.0"],\ ["jest", "virtual:816fb67d993b0978271f762d4ccbec7209ef2546c234ca6e241662d44336c8e32c1c3c07189cfe14b67974a4840e1ed140408a7403bf9deb68c1953445072efe#npm:29.7.0"],\ ["js-yaml", "npm:4.1.0"],\ - ["lodash-es", "npm:4.17.21"],\ ["organize-imports-cli", "npm:0.10.0"],\ ["prettier", "npm:2.8.8"],\ ["tinycolor2", "npm:1.6.0"],\ @@ -5248,7 +5247,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./packages/core/",\ "packageDependencies": [\ ["@fern-api/core", "workspace:packages/core"],\ - ["@fern-api/fdr-sdk", "npm:0.98.9-3b3a3fe5f"],\ + ["@fern-api/fdr-sdk", "npm:0.98.4-bf08716d8"],\ ["@fern-api/venus-api-sdk", "npm:0.0.38"],\ ["@fern-fern/fdr-test-sdk", "npm:0.0.5297"],\ ["@fern-fern/fiddle-sdk", "npm:0.0.584"],\ @@ -5364,7 +5363,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageDependencies": [\ ["@fern-api/docs-preview", "workspace:packages/cli/docs-preview"],\ ["@fern-api/docs-resolver", "workspace:packages/cli/docs-resolver"],\ - ["@fern-api/fdr-sdk", "npm:0.98.9-3b3a3fe5f"],\ + ["@fern-api/fdr-sdk", "npm:0.98.4-bf08716d8"],\ ["@fern-api/fs-utils", "workspace:packages/commons/fs-utils"],\ ["@fern-api/ir-sdk", "workspace:packages/ir-sdk"],\ ["@fern-api/logger", "workspace:packages/cli/logger"],\ @@ -5406,7 +5405,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@fern-api/configuration", "workspace:packages/cli/configuration"],\ ["@fern-api/core-utils", "workspace:packages/commons/core-utils"],\ ["@fern-api/docs-markdown-utils", "workspace:packages/cli/docs-markdown-utils"],\ - ["@fern-api/fdr-sdk", "npm:0.98.9-3b3a3fe5f"],\ + ["@fern-api/fdr-sdk", "npm:0.98.4-bf08716d8"],\ ["@fern-api/fs-utils", "workspace:packages/commons/fs-utils"],\ ["@fern-api/ir-generator", "workspace:packages/cli/generation/ir-generator"],\ ["@fern-api/ir-sdk", "workspace:packages/ir-sdk"],\ @@ -5491,10 +5490,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["@fern-api/fdr-sdk", [\ - ["npm:0.98.9-3b3a3fe5f", {\ - "packageLocation": "./.yarn/cache/@fern-api-fdr-sdk-npm-0.98.9-3b3a3fe5f-ec323dd942-95367a9b40.zip/node_modules/@fern-api/fdr-sdk/",\ + ["npm:0.98.4-bf08716d8", {\ + "packageLocation": "./.yarn/cache/@fern-api-fdr-sdk-npm-0.98.4-bf08716d8-668b36101b-79f9847bfd.zip/node_modules/@fern-api/fdr-sdk/",\ "packageDependencies": [\ - ["@fern-api/fdr-sdk", "npm:0.98.9-3b3a3fe5f"],\ + ["@fern-api/fdr-sdk", "npm:0.98.4-bf08716d8"],\ ["dayjs", "npm:1.11.11"],\ ["fast-deep-equal", "npm:3.1.3"],\ ["form-data", "npm:4.0.0"],\ @@ -6190,7 +6189,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@fern-api/configuration", "workspace:packages/cli/configuration"],\ ["@fern-api/core", "workspace:packages/core"],\ ["@fern-api/core-utils", "workspace:packages/commons/core-utils"],\ - ["@fern-api/fdr-sdk", "npm:0.98.9-3b3a3fe5f"],\ + ["@fern-api/fdr-sdk", "npm:0.98.4-bf08716d8"],\ ["@fern-api/ir-generator", "workspace:packages/cli/generation/ir-generator"],\ ["@fern-api/ir-sdk", "workspace:packages/ir-sdk"],\ ["@fern-api/task-context", "workspace:packages/cli/task-context"],\ @@ -6219,7 +6218,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@fern-api/core", "workspace:packages/core"],\ ["@fern-api/core-utils", "workspace:packages/commons/core-utils"],\ ["@fern-api/docs-resolver", "workspace:packages/cli/docs-resolver"],\ - ["@fern-api/fdr-sdk", "npm:0.98.9-3b3a3fe5f"],\ + ["@fern-api/fdr-sdk", "npm:0.98.4-bf08716d8"],\ ["@fern-api/fs-utils", "workspace:packages/commons/fs-utils"],\ ["@fern-api/ir-generator", "workspace:packages/cli/generation/ir-generator"],\ ["@fern-api/ir-migrations", "workspace:packages/cli/generation/ir-migrations"],\ diff --git a/.yarn/cache/@fern-api-fdr-sdk-npm-0.98.9-3b3a3fe5f-ec323dd942-95367a9b40.zip b/.yarn/cache/@fern-api-fdr-sdk-npm-0.98.4-bf08716d8-668b36101b-79f9847bfd.zip similarity index 81% rename from .yarn/cache/@fern-api-fdr-sdk-npm-0.98.9-3b3a3fe5f-ec323dd942-95367a9b40.zip rename to .yarn/cache/@fern-api-fdr-sdk-npm-0.98.4-bf08716d8-668b36101b-79f9847bfd.zip index 42577dbffdd..bb2bd622382 100644 Binary files a/.yarn/cache/@fern-api-fdr-sdk-npm-0.98.9-3b3a3fe5f-ec323dd942-95367a9b40.zip and b/.yarn/cache/@fern-api-fdr-sdk-npm-0.98.4-bf08716d8-668b36101b-79f9847bfd.zip differ diff --git a/packages/cli/configuration/fern/definition/docs.yml b/packages/cli/configuration/fern/definition/docs.yml index b9c5d957239..01029eaad80 100644 --- a/packages/cli/configuration/fern/definition/docs.yml +++ b/packages/cli/configuration/fern/definition/docs.yml @@ -14,7 +14,6 @@ types: # navigation tabs: optional> versions: optional> - landing-page: optional navigation: type: optional docs: The navigation config is skipped when multiple versions are present. @@ -164,7 +163,6 @@ types: VersionFileConfig: properties: tabs: optional> - landing-page: optional navigation: NavigationConfig NavigationConfig: @@ -422,10 +420,6 @@ types: SectionConfiguration: properties: section: string - path: - type: optional - docs: | - The relative path to the markdown file that will be displayed when the section is clicked. contents: list collapsed: optional slug: optional diff --git a/packages/cli/configuration/package.json b/packages/cli/configuration/package.json index 72054273ff2..3f96a072b5d 100644 --- a/packages/cli/configuration/package.json +++ b/packages/cli/configuration/package.json @@ -29,14 +29,13 @@ }, "dependencies": { "@fern-api/core-utils": "workspace:*", - "@fern-api/fdr-sdk": "0.98.9-3b3a3fe5f", + "@fern-api/fdr-sdk": "0.98.4-bf08716d8", "@fern-api/fs-utils": "workspace:*", "@fern-api/task-context": "workspace:*", "@fern-fern/fiddle-sdk": "0.0.584", "dockerode": "^4.0.2", "find-up": "^6.3.0", "js-yaml": "^4.1.0", - "lodash-es": "^4.17.21", "tinycolor2": "^1.6.0", "zod": "^3.22.3" }, @@ -44,7 +43,6 @@ "@types/dockerode": "^3.3.9", "@types/jest": "^29.0.3", "@types/js-yaml": "^4.0.8", - "@types/lodash-es": "^4.17.12", "@types/node": "^18.7.18", "@types/tinycolor2": "^1.4.6", "depcheck": "^1.4.6", diff --git a/packages/cli/configuration/src/docs-yml/ParsedDocsConfiguration.ts b/packages/cli/configuration/src/docs-yml/ParsedDocsConfiguration.ts index 699181c39d2..5a386c6e721 100644 --- a/packages/cli/configuration/src/docs-yml/ParsedDocsConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/ParsedDocsConfiguration.ts @@ -12,7 +12,7 @@ export interface ParsedDocsConfiguration { pages: Record; /* navigation */ - landingPage: DocsNavigationItem.Page | undefined; + // tabs?: Record; navigation: DocsNavigationConfiguration; navbarLinks: DocsV1Write.NavbarLink[] | undefined; footerLinks: DocsV1Write.FooterLink[] | undefined; @@ -131,7 +131,7 @@ export interface VersionedDocsNavigation { } export interface VersionInfo { - landingPage: DocsNavigationItem.Page | undefined; + // tabs?: Record; navigation: UntabbedDocsNavigation | TabbedDocsNavigation; version: string; availability: VersionAvailability | undefined; @@ -200,7 +200,6 @@ export declare namespace DocsNavigationItem { slug: string | undefined; hidden: boolean | undefined; skipUrlSlug: boolean | undefined; - overviewAbsolutePath: AbsoluteFilePath | undefined; } export interface ApiSection { @@ -211,7 +210,7 @@ export declare namespace DocsNavigationItem { audiences: Audiences; showErrors: boolean; snippetsConfiguration: SnippetsConfiguration | undefined; - overviewAbsolutePath: AbsoluteFilePath | undefined; + summaryAbsolutePath: AbsoluteFilePath | undefined; navigation: ParsedApiReferenceLayoutItem[]; hidden: boolean | undefined; slug: string | undefined; @@ -256,7 +255,7 @@ export declare namespace ParsedApiReferenceLayoutItem { type: "section"; title: string; // title referencedSubpackages: string[]; // subpackage IDs - overviewAbsolutePath: AbsoluteFilePath | undefined; + summaryAbsolutePath: AbsoluteFilePath | undefined; contents: ParsedApiReferenceLayoutItem[]; slug: string | undefined; hidden: boolean | undefined; @@ -267,7 +266,7 @@ export declare namespace ParsedApiReferenceLayoutItem { type: "package"; title: string | undefined; // defaults to subpackage title package: string; // subpackage ID - overviewAbsolutePath: AbsoluteFilePath | undefined; + summaryAbsolutePath: AbsoluteFilePath | undefined; contents: ParsedApiReferenceLayoutItem[]; slug: string | undefined; hidden: boolean | undefined; diff --git a/packages/cli/configuration/src/docs-yml/getAllPages.ts b/packages/cli/configuration/src/docs-yml/getAllPages.ts index 85dc968ada4..90c7b395b8a 100644 --- a/packages/cli/configuration/src/docs-yml/getAllPages.ts +++ b/packages/cli/configuration/src/docs-yml/getAllPages.ts @@ -6,123 +6,157 @@ import { DocsNavigationItem, ParsedApiReferenceLayoutItem } from "./ParsedDocsConfiguration"; -import { compact } from "lodash-es"; -const BATCH_SIZE = 100; // Define a reasonable batch size - -async function loadBatch( - files: AbsoluteFilePath[], - absolutePathToFernFolder: AbsoluteFilePath -): Promise> { - const pairs = await Promise.all( - files.map(async (file) => { - const content = await readFile(file, "utf-8"); - return [relativize(absolutePathToFernFolder, file), content]; - }) - ); - return Object.fromEntries(pairs); -} - -export async function loadAllPages( - filesPromise: Promise, - absolutePathToFernFolder: AbsoluteFilePath -): Promise> { - const files = await filesPromise; - const result: Record = {}; - - for (let i = 0; i < files.length; i += BATCH_SIZE) { - const batch = files.slice(i, i + BATCH_SIZE); - const batchResult = await loadBatch(batch, absolutePathToFernFolder); - Object.assign(result, batchResult); - } - - return result; -} - -export function getAllPages({ - landingPage, - navigation +export async function getAllPages({ + navigation, + absolutePathToFernFolder }: { - landingPage: DocsNavigationItem.Page | undefined; navigation: DocsNavigationConfiguration; -}): AbsoluteFilePath[] { - return compact([landingPage?.absolutePath, ...getAllPagesFromNavigationConfig(navigation)]); -} - -function getAllPagesFromNavigationConfig(navigation: DocsNavigationConfiguration): AbsoluteFilePath[] { + absolutePathToFernFolder: AbsoluteFilePath; +}): Promise> { switch (navigation.type) { case "tabbed": - return navigation.items.flatMap((tab) => { - if (tab.child.type === "layout") { - return tab.child.layout.flatMap((item) => { - return getAllPagesFromNavigationItem({ - item - }); - }); - } else if (tab.child.type === "changelog") { - return tab.child.changelog; - } - return []; - }); + return combineMaps( + await Promise.all( + navigation.items.map(async (tab) => { + if (tab.child.type === "layout") { + return combineMaps( + await Promise.all( + tab.child.layout.map(async (item) => { + return await getAllPagesFromNavigationItem({ + item, + absolutePathToFernFolder + }); + }) + ) + ); + } else if (tab.child.type === "changelog") { + return combineMaps( + await Promise.all( + tab.child.changelog.map(async (filepath) => ({ + [await relativize(absolutePathToFernFolder, filepath)]: ( + await readFile(filepath) + ).toString() + })) + ) + ); + } + return {}; + }) + ) + ); case "untabbed": - return navigation.items.flatMap((item) => { - return getAllPagesFromNavigationItem({ - item - }); - }); + return combineMaps( + await Promise.all( + navigation.items.map(async (item) => { + return await getAllPagesFromNavigationItem({ + item, + absolutePathToFernFolder + }); + }) + ) + ); case "versioned": - return navigation.versions.flatMap((version) => { - return getAllPages({ - landingPage: version.landingPage, - navigation: version.navigation - }); - }); + return combineMaps( + await Promise.all( + navigation.versions.map(async (version) => { + return await getAllPages({ + navigation: version.navigation, + absolutePathToFernFolder + }); + }) + ) + ); default: assertNever(navigation); } } -export function getAllPagesFromNavigationItem({ item }: { item: DocsNavigationItem }): AbsoluteFilePath[] { +export async function getAllPagesFromNavigationItem({ + item, + absolutePathToFernFolder +}: { + item: DocsNavigationItem; + absolutePathToFernFolder: AbsoluteFilePath; +}): Promise> { switch (item.type) { - case "apiSection": - return compact([ - item.overviewAbsolutePath, - ...item.navigation.flatMap((apiNavigation) => - getAllPagesFromApiReferenceLayoutItem({ item: apiNavigation }) + case "apiSection": { + const toRet = combineMaps( + await Promise.all( + item.navigation.map((apiNavigation) => + getAllPagesFromApiReferenceLayoutItem({ item: apiNavigation, absolutePathToFernFolder }) + ) ) - ]); + ); + if (item.summaryAbsolutePath != null) { + toRet[await relativize(absolutePathToFernFolder, item.summaryAbsolutePath)] = ( + await readFile(item.summaryAbsolutePath) + ).toString(); + } + return toRet; + } case "link": - return []; + return {}; case "page": - return [item.absolutePath]; + return { + [await relativize(absolutePathToFernFolder, item.absolutePath)]: ( + await readFile(item.absolutePath) + ).toString() + }; case "section": - return compact([ - item.overviewAbsolutePath, - ...item.contents.flatMap((subItem) => { - return getAllPagesFromNavigationItem({ item: subItem }); - }) - ]); + return combineMaps( + await Promise.all( + item.contents.map(async (sectionItem) => { + return await getAllPagesFromNavigationItem({ item: sectionItem, absolutePathToFernFolder }); + }) + ) + ); case "changelog": - return item.changelog; + return combineMaps( + await Promise.all( + item.changelog.map(async (filepath) => ({ + [await relativize(absolutePathToFernFolder, filepath)]: (await readFile(filepath)).toString() + })) + ) + ); default: assertNever(item); } } -// function combineMaps(maps: Record[]) { -// return maps.reduce((acc, record) => ({ ...acc, ...record }), {}); -// } +function combineMaps(maps: Record[]) { + return maps.reduce((acc, record) => ({ ...acc, ...record }), {}); +} -function getAllPagesFromApiReferenceLayoutItem({ item }: { item: ParsedApiReferenceLayoutItem }): AbsoluteFilePath[] { +async function getAllPagesFromApiReferenceLayoutItem({ + item, + absolutePathToFernFolder +}: { + item: ParsedApiReferenceLayoutItem; + absolutePathToFernFolder: AbsoluteFilePath; +}): Promise> { if (item.type === "page") { - return [item.absolutePath]; + return { + [await relativize(absolutePathToFernFolder, item.absolutePath)]: ( + await readFile(item.absolutePath) + ).toString() + }; } else if (item.type === "package" || item.type === "section") { - return compact([ - item.overviewAbsolutePath, - ...item.contents.flatMap((subItem) => { - return getAllPagesFromApiReferenceLayoutItem({ item: subItem }); - }) - ]); + const toRet = combineMaps( + await Promise.all( + item.contents.map(async (subItem) => { + return await getAllPagesFromApiReferenceLayoutItem({ item: subItem, absolutePathToFernFolder }); + }) + ) + ); + + if (item.summaryAbsolutePath != null) { + toRet[await relativize(absolutePathToFernFolder, item.summaryAbsolutePath)] = ( + await readFile(item.summaryAbsolutePath) + ).toString(); + } + + return toRet; } - return []; + return {}; } diff --git a/packages/cli/configuration/src/docs-yml/parseDocsConfiguration.ts b/packages/cli/configuration/src/docs-yml/parseDocsConfiguration.ts index bdf839c09c4..328c22001f7 100644 --- a/packages/cli/configuration/src/docs-yml/parseDocsConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/parseDocsConfiguration.ts @@ -5,8 +5,6 @@ import { TaskContext } from "@fern-api/task-context"; import { readFile } from "fs/promises"; import yaml from "js-yaml"; import { WithoutQuestionMarks } from "../commons/WithoutQuestionMarks"; -import { convertColorsConfiguration } from "./convertColorsConfiguration"; -import { getAllPages, loadAllPages } from "./getAllPages"; import { AbsoluteJsFileConfig, DocsNavigationConfiguration, @@ -23,7 +21,9 @@ import { UntabbedDocsNavigation, VersionInfo } from "./ParsedDocsConfiguration"; -import { FernDocsConfig as RawDocs, NavigationConfig, Serializer, VersionConfig } from "./schemas"; +import { convertColorsConfiguration } from "./convertColorsConfiguration"; +import { getAllPages } from "./getAllPages"; +import { NavigationConfig, FernDocsConfig as RawDocs, Serializer, VersionConfig } from "./schemas"; export async function parseDocsConfiguration({ rawDocsConfiguration, @@ -67,8 +67,6 @@ export async function parseDocsConfiguration({ js: rawJsConfig } = rawDocsConfiguration; - const landingPage = parsePageConfig(rawDocsConfiguration.landingPage, absoluteFilepathToDocsConfig); - const convertedNavigationPromise = getNavigationConfiguration({ tabs, versions, @@ -78,11 +76,8 @@ export async function parseDocsConfiguration({ context }); - const pagesPromise = loadAllPages( - convertedNavigationPromise.then((convertedNavigation) => - getAllPages({ navigation: convertedNavigation, landingPage }) - ), - absoluteFilepathToDocsConfig + const pagesPromise = convertedNavigationPromise.then((convertedNavigation) => + getAllPages({ navigation: convertedNavigation, absolutePathToFernFolder }) ); const logo = convertLogoReference(rawLogo, absoluteFilepathToDocsConfig); @@ -122,7 +117,7 @@ export async function parseDocsConfiguration({ pages, /* navigation */ - landingPage, + // tabs, navigation, navbarLinks: convertNavbarLinks(navbarLinks), footerLinks: convertFooterLinks(footerLinks), @@ -333,7 +328,7 @@ async function getNavigationConfiguration({ context }); versionedNavbars.push({ - landingPage: parsePageConfig(result.landingPage, absoluteFilepathToVersionFile), + // tabs: result.tabs, version: version.displayName, navigation, availability: version.availability, @@ -576,7 +571,14 @@ async function convertNavigationItem({ context: TaskContext; }): Promise { if (isRawPageConfig(rawConfig)) { - return parsePageConfig(rawConfig, absolutePathToConfig); + return { + type: "page", + title: rawConfig.page, + absolutePath: resolveFilepath(rawConfig.path, absolutePathToConfig), + slug: rawConfig.slug, + icon: rawConfig.icon, + hidden: rawConfig.hidden + }; } if (isRawSectionConfig(rawConfig)) { return { @@ -591,8 +593,7 @@ async function convertNavigationItem({ slug: rawConfig.slug ?? undefined, collapsed: rawConfig.collapsed ?? undefined, hidden: rawConfig.hidden ?? undefined, - skipUrlSlug: rawConfig.skipSlug ?? false, - overviewAbsolutePath: resolveFilepath(rawConfig.path, absolutePathToConfig) + skipUrlSlug: rawConfig.skipSlug ?? false }; } if (isRawApiSectionConfig(rawConfig)) { @@ -610,7 +611,7 @@ async function convertNavigationItem({ : undefined, navigation: rawConfig.layout?.flatMap((item) => parseApiReferenceLayoutItem(item, absolutePathToConfig)) ?? [], - overviewAbsolutePath: resolveFilepath(rawConfig.summary, absolutePathToConfig), + summaryAbsolutePath: resolveFilepath(rawConfig.summary, absolutePathToConfig), hidden: rawConfig.hidden ?? undefined, slug: rawConfig.slug, skipUrlSlug: rawConfig.skipSlug ?? false, @@ -640,31 +641,6 @@ async function convertNavigationItem({ assertNever(rawConfig); } -function parsePageConfig( - item: RawDocs.PageConfiguration, - absolutePathToConfig: AbsoluteFilePath -): DocsNavigationItem.Page; -function parsePageConfig( - item: RawDocs.PageConfiguration | undefined, - absolutePathToConfig: AbsoluteFilePath -): DocsNavigationItem.Page | undefined; -function parsePageConfig( - item: RawDocs.PageConfiguration | undefined, - absolutePathToConfig: AbsoluteFilePath -): DocsNavigationItem.Page | undefined { - if (item == null) { - return undefined; - } - return { - type: "page", - title: item.page, - absolutePath: resolveFilepath(item.path, absolutePathToConfig), - slug: item.slug, - icon: item.icon, - hidden: item.hidden - }; -} - function parseApiReferenceLayoutItem( item: RawDocs.ApiReferenceLayoutItem, absolutePathToConfig: AbsoluteFilePath @@ -675,7 +651,16 @@ function parseApiReferenceLayoutItem( // eslint-disable-next-line @typescript-eslint/no-explicit-any if (isRawPageConfig(item)) { - return [parsePageConfig(item, absolutePathToConfig)]; + return [ + { + type: "page", + title: item.page, + absolutePath: resolveFilepath(item.path, absolutePathToConfig), + slug: item.slug, + icon: item.icon, + hidden: item.hidden + } + ]; } else if (isRawLinkConfig(item)) { return [ { @@ -691,7 +676,7 @@ function parseApiReferenceLayoutItem( type: "section", title: item.section, referencedSubpackages: item.referencedPackages ?? [], - overviewAbsolutePath: resolveFilepath(item.summary, absolutePathToConfig), + summaryAbsolutePath: resolveFilepath(item.summary, absolutePathToConfig), contents: item.contents?.flatMap((value) => parseApiReferenceLayoutItem(value, absolutePathToConfig)) ?? [], slug: item.slug, @@ -718,7 +703,7 @@ function parseApiReferenceLayoutItem( type: "package", title: value.title, package: key, - overviewAbsolutePath: resolveFilepath(value.summary, absolutePathToConfig), + summaryAbsolutePath: resolveFilepath(value.summary, absolutePathToConfig), contents: value.contents?.flatMap((value) => parseApiReferenceLayoutItem(value, absolutePathToConfig)) ?? [], slug: value.slug, @@ -731,7 +716,7 @@ function parseApiReferenceLayoutItem( type: "package", title: undefined, package: key, - overviewAbsolutePath: undefined, + summaryAbsolutePath: undefined, contents: value.flatMap((value) => parseApiReferenceLayoutItem(value, absolutePathToConfig)), hidden: false, slug: undefined, diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/DocsConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/DocsConfiguration.ts index 35ac8e31af2..c140ac0b7bc 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/DocsConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/DocsConfiguration.ts @@ -10,7 +10,6 @@ export interface DocsConfiguration { title?: string; tabs?: Record; versions?: FernDocsConfig.VersionConfig[]; - landingPage?: FernDocsConfig.PageConfiguration; /** The navigation config is skipped when multiple versions are present. */ navigation?: FernDocsConfig.NavigationConfig; navbarLinks?: FernDocsConfig.NavbarLink[]; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/SectionConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/SectionConfiguration.ts index cd390124362..01349177447 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/SectionConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/SectionConfiguration.ts @@ -6,8 +6,6 @@ import * as FernDocsConfig from "../../.."; export interface SectionConfiguration { section: string; - /** The relative path to the markdown file that will be displayed when the section is clicked. */ - path?: string; contents: FernDocsConfig.NavigationItem[]; collapsed?: boolean; slug?: string; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/VersionFileConfig.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/VersionFileConfig.ts index adc57165bd2..b8622ddb7e2 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/VersionFileConfig.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/VersionFileConfig.ts @@ -6,6 +6,5 @@ import * as FernDocsConfig from "../../.."; export interface VersionFileConfig { tabs?: Record; - landingPage?: FernDocsConfig.PageConfiguration; navigation: FernDocsConfig.NavigationConfig; } diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/DocsConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/DocsConfiguration.ts index 4d510856696..27271bd3e62 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/DocsConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/DocsConfiguration.ts @@ -23,10 +23,6 @@ export const DocsConfiguration: core.serialization.ObjectSchema< versions: core.serialization .list(core.serialization.lazyObject(async () => (await import("../../..")).VersionConfig)) .optional(), - landingPage: core.serialization.property( - "landing-page", - core.serialization.lazyObject(async () => (await import("../../..")).PageConfiguration).optional() - ), navigation: core.serialization.lazy(async () => (await import("../../..")).NavigationConfig).optional(), navbarLinks: core.serialization.property( "navbar-links", @@ -60,7 +56,6 @@ export declare namespace DocsConfiguration { title?: string | null; tabs?: Record | null; versions?: serializers.VersionConfig.Raw[] | null; - "landing-page"?: serializers.PageConfiguration.Raw | null; navigation?: serializers.NavigationConfig.Raw | null; "navbar-links"?: serializers.NavbarLink.Raw[] | null; "footer-links"?: serializers.FooterLinksConfig.Raw | null; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/SectionConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/SectionConfiguration.ts index 0952825b74c..925abdf1fc0 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/SectionConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/SectionConfiguration.ts @@ -11,7 +11,6 @@ export const SectionConfiguration: core.serialization.ObjectSchema< FernDocsConfig.SectionConfiguration > = core.serialization.object({ section: core.serialization.string(), - path: core.serialization.string().optional(), contents: core.serialization.list(core.serialization.lazy(async () => (await import("../../..")).NavigationItem)), collapsed: core.serialization.boolean().optional(), slug: core.serialization.string().optional(), @@ -23,7 +22,6 @@ export const SectionConfiguration: core.serialization.ObjectSchema< export declare namespace SectionConfiguration { interface Raw { section: string; - path?: string | null; contents: serializers.NavigationItem.Raw[]; collapsed?: boolean | null; slug?: string | null; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/VersionFileConfig.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/VersionFileConfig.ts index 69a329e8266..2a216992756 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/VersionFileConfig.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/VersionFileConfig.ts @@ -16,17 +16,12 @@ export const VersionFileConfig: core.serialization.ObjectSchema< core.serialization.lazyObject(async () => (await import("../../..")).TabConfig) ) .optional(), - landingPage: core.serialization.property( - "landing-page", - core.serialization.lazyObject(async () => (await import("../../..")).PageConfiguration).optional() - ), navigation: core.serialization.lazy(async () => (await import("../../..")).NavigationConfig), }); export declare namespace VersionFileConfig { interface Raw { tabs?: Record | null; - "landing-page"?: serializers.PageConfiguration.Raw | null; navigation: serializers.NavigationConfig.Raw; } } diff --git a/packages/cli/docs-preview/package.json b/packages/cli/docs-preview/package.json index 6bdf7aa5c3d..582f22b3ee6 100644 --- a/packages/cli/docs-preview/package.json +++ b/packages/cli/docs-preview/package.json @@ -28,7 +28,7 @@ }, "dependencies": { "@fern-api/docs-resolver": "workspace:*", - "@fern-api/fdr-sdk": "0.98.9-3b3a3fe5f", + "@fern-api/fdr-sdk": "0.98.4-bf08716d8", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-sdk": "workspace:*", "@fern-api/logger": "workspace:*", diff --git a/packages/cli/docs-resolver/package.json b/packages/cli/docs-resolver/package.json index 3625836ed9f..13dc429e947 100644 --- a/packages/cli/docs-resolver/package.json +++ b/packages/cli/docs-resolver/package.json @@ -30,7 +30,7 @@ "@fern-api/configuration": "workspace:*", "@fern-api/core-utils": "workspace:*", "@fern-api/docs-markdown-utils": "workspace:*", - "@fern-api/fdr-sdk": "0.98.9-3b3a3fe5f", + "@fern-api/fdr-sdk": "0.98.4-bf08716d8", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-generator": "workspace:*", "@fern-api/ir-sdk": "workspace:*", diff --git a/packages/cli/docs-resolver/src/ApiReferenceNodeConverter.ts b/packages/cli/docs-resolver/src/ApiReferenceNodeConverter.ts index 3a05de3c92d..920dda49ca6 100644 --- a/packages/cli/docs-resolver/src/ApiReferenceNodeConverter.ts +++ b/packages/cli/docs-resolver/src/ApiReferenceNodeConverter.ts @@ -39,14 +39,14 @@ export class ApiReferenceNodeConverter { const idgen = NodeIdGenerator.init(this.apiDefinitionId); this.#overviewPageId = - this.apiSection.overviewAbsolutePath != null - ? FernNavigation.PageId(this.toRelativeFilepath(this.apiSection.overviewAbsolutePath)) + this.apiSection.summaryAbsolutePath != null + ? FernNavigation.PageId(this.toRelativeFilepath(this.apiSection.summaryAbsolutePath)) : undefined; // the overview page markdown could contain a full slug, which would be used as the base slug for the API section. const maybeFullSlug = - this.apiSection.overviewAbsolutePath != null - ? this.markdownFilesToFullSlugs.get(this.apiSection.overviewAbsolutePath) + this.apiSection.summaryAbsolutePath != null + ? this.markdownFilesToFullSlugs.get(this.apiSection.summaryAbsolutePath) : undefined; this.#slug = parentSlug.apply({ @@ -154,12 +154,12 @@ export class ApiReferenceNodeConverter { idgen: NodeIdGenerator ): FernNavigation.ApiPackageNode { const overviewPageId = - pkg.overviewAbsolutePath != null - ? FernNavigation.PageId(this.toRelativeFilepath(pkg.overviewAbsolutePath)) + pkg.summaryAbsolutePath != null + ? FernNavigation.PageId(this.toRelativeFilepath(pkg.summaryAbsolutePath)) : undefined; const maybeFullSlug = - pkg.overviewAbsolutePath != null ? this.markdownFilesToFullSlugs.get(pkg.overviewAbsolutePath) : undefined; + pkg.summaryAbsolutePath != null ? this.markdownFilesToFullSlugs.get(pkg.summaryAbsolutePath) : undefined; const subpackage = this.#holder.getSubpackage(pkg.package); @@ -241,13 +241,13 @@ export class ApiReferenceNodeConverter { idgen: NodeIdGenerator ): FernNavigation.ApiPackageNode { const overviewPageId = - section.overviewAbsolutePath != null - ? FernNavigation.PageId(this.toRelativeFilepath(section.overviewAbsolutePath)) + section.summaryAbsolutePath != null + ? FernNavigation.PageId(this.toRelativeFilepath(section.summaryAbsolutePath)) : undefined; const maybeFullSlug = - section.overviewAbsolutePath != null - ? this.markdownFilesToFullSlugs.get(section.overviewAbsolutePath) + section.summaryAbsolutePath != null + ? this.markdownFilesToFullSlugs.get(section.summaryAbsolutePath) : undefined; const nodeId = idgen.append(`section:${kebabCase(section.title)}`); diff --git a/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts b/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts index 6da6e0aab03..6cbb5ecee2a 100644 --- a/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts +++ b/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts @@ -233,15 +233,24 @@ export class DocsDefinitionResolver { private async convertNavigationConfig(): Promise { const slug = FernNavigation.SlugGenerator.init(FernNavigation.utils.slugjoin(this.getDocsBasePath())); - const landingPage = this.parsedDocsConfig.landingPage; switch (this.parsedDocsConfig.navigation.type) { + case "untabbed": { + const items = await Promise.all( + this.parsedDocsConfig.navigation.items.map((item) => this.convertNavigationItem(item, slug)) + ); + return { items }; + } + case "tabbed": { + return { + tabsV2: await this.convertTabbedNavigation(this.parsedDocsConfig.navigation.items, slug) + }; + } case "versioned": { const versions = await Promise.all( this.parsedDocsConfig.navigation.versions.map( async (version): Promise => { const versionSlug = slug.setVersionSlug(version.slug ?? kebabCase(version.version)); const convertedNavigation = await this.convertUnversionedNavigationConfig({ - landingPage: version.landingPage, navigationConfig: version.navigation, parentSlug: versionSlug }); @@ -259,13 +268,6 @@ export class DocsDefinitionResolver { ); return { versions }; } - case "untabbed": - case "tabbed": - return this.convertUnversionedNavigationConfig({ - landingPage: this.parsedDocsConfig.landingPage, - navigationConfig: this.parsedDocsConfig.navigation, - parentSlug: slug - }); default: assertNever(this.parsedDocsConfig.navigation); } @@ -299,14 +301,12 @@ export class DocsDefinitionResolver { return { type: "section", title: item.title, - items: sectionItems, urlSlugOverride: item.slug, collapsed: item.collapsed, icon: item.icon, hidden: item.hidden, - skipUrlSlug: item.skipUrlSlug, - overviewPageId: this.toRelativeFilepath(item.overviewAbsolutePath) + skipUrlSlug: item.skipUrlSlug }; } case "apiSection": { @@ -373,38 +373,23 @@ export class DocsDefinitionResolver { } private async convertUnversionedNavigationConfig({ - landingPage: landingPageConfig, navigationConfig, parentSlug }: { - landingPage: docsYml.DocsNavigationItem.Page | undefined; navigationConfig: docsYml.UnversionedNavigationConfiguration; parentSlug: FernNavigation.SlugGenerator; }): Promise { - const landingPage = - landingPageConfig != null - ? { - id: this.toRelativeFilepath(landingPageConfig.absolutePath), - urlSlugOverride: landingPageConfig.slug, - fullSlug: this.markdownFilesToFullSlugs.get(landingPageConfig.absolutePath)?.split("/"), - hidden: landingPageConfig.hidden, - title: landingPageConfig.title, - icon: landingPageConfig.icon - } - : undefined; switch (navigationConfig.type) { case "untabbed": { const untabs = await Promise.all( navigationConfig.items.map((item) => this.convertNavigationItem(item, parentSlug)) ); return { - landingPage, items: untabs }; } case "tabbed": { return { - landingPage, tabsV2: await this.convertTabbedNavigation(navigationConfig.items, parentSlug) }; } diff --git a/packages/cli/generation/remote-generation/remote-workspace-runner/package.json b/packages/cli/generation/remote-generation/remote-workspace-runner/package.json index 6c1ea11800b..8f27f27b7b8 100644 --- a/packages/cli/generation/remote-generation/remote-workspace-runner/package.json +++ b/packages/cli/generation/remote-generation/remote-workspace-runner/package.json @@ -32,7 +32,7 @@ "@fern-api/core": "workspace:*", "@fern-api/core-utils": "workspace:*", "@fern-api/docs-resolver": "workspace:*", - "@fern-api/fdr-sdk": "0.98.9-3b3a3fe5f", + "@fern-api/fdr-sdk": "0.98.4-bf08716d8", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-generator": "workspace:*", "@fern-api/ir-migrations": "workspace:*", diff --git a/packages/cli/register/package.json b/packages/cli/register/package.json index 0b3c1edb0bb..2fbb3987e82 100644 --- a/packages/cli/register/package.json +++ b/packages/cli/register/package.json @@ -31,7 +31,7 @@ "@fern-api/configuration": "workspace:*", "@fern-api/core": "workspace:*", "@fern-api/core-utils": "workspace:*", - "@fern-api/fdr-sdk": "0.98.9-3b3a3fe5f", + "@fern-api/fdr-sdk": "0.98.4-bf08716d8", "@fern-api/ir-generator": "workspace:*", "@fern-api/ir-sdk": "workspace:*", "@fern-api/task-context": "workspace:*", diff --git a/packages/core/package.json b/packages/core/package.json index ee111863e29..ec35b32e792 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -27,7 +27,7 @@ "depcheck": "depcheck" }, "dependencies": { - "@fern-api/fdr-sdk": "0.98.9-3b3a3fe5f", + "@fern-api/fdr-sdk": "0.98.4-bf08716d8", "@fern-api/venus-api-sdk": "0.0.38", "@fern-fern/fdr-test-sdk": "^0.0.5297", "@fern-fern/fiddle-sdk": "0.0.584" diff --git a/yarn.lock b/yarn.lock index 754237068bf..ceda3b2f9de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1951,14 +1951,13 @@ __metadata: resolution: "@fern-api/configuration@workspace:packages/cli/configuration" dependencies: "@fern-api/core-utils": "workspace:*" - "@fern-api/fdr-sdk": 0.98.9-3b3a3fe5f + "@fern-api/fdr-sdk": 0.98.4-bf08716d8 "@fern-api/fs-utils": "workspace:*" "@fern-api/task-context": "workspace:*" "@fern-fern/fiddle-sdk": 0.0.584 "@types/dockerode": ^3.3.9 "@types/jest": ^29.0.3 "@types/js-yaml": ^4.0.8 - "@types/lodash-es": ^4.17.12 "@types/node": ^18.7.18 "@types/tinycolor2": ^1.4.6 depcheck: ^1.4.6 @@ -1967,7 +1966,6 @@ __metadata: find-up: ^6.3.0 jest: ^29.7.0 js-yaml: ^4.1.0 - lodash-es: ^4.17.21 organize-imports-cli: ^0.10.0 prettier: ^2.7.1 tinycolor2: ^1.6.0 @@ -2000,7 +1998,7 @@ __metadata: version: 0.0.0-use.local resolution: "@fern-api/core@workspace:packages/core" dependencies: - "@fern-api/fdr-sdk": 0.98.9-3b3a3fe5f + "@fern-api/fdr-sdk": 0.98.4-bf08716d8 "@fern-api/venus-api-sdk": 0.0.38 "@fern-fern/fdr-test-sdk": ^0.0.5297 "@fern-fern/fiddle-sdk": 0.0.584 @@ -2086,7 +2084,7 @@ __metadata: resolution: "@fern-api/docs-preview@workspace:packages/cli/docs-preview" dependencies: "@fern-api/docs-resolver": "workspace:*" - "@fern-api/fdr-sdk": 0.98.9-3b3a3fe5f + "@fern-api/fdr-sdk": 0.98.4-bf08716d8 "@fern-api/fs-utils": "workspace:*" "@fern-api/ir-sdk": "workspace:*" "@fern-api/logger": "workspace:*" @@ -2126,7 +2124,7 @@ __metadata: "@fern-api/configuration": "workspace:*" "@fern-api/core-utils": "workspace:*" "@fern-api/docs-markdown-utils": "workspace:*" - "@fern-api/fdr-sdk": 0.98.9-3b3a3fe5f + "@fern-api/fdr-sdk": 0.98.4-bf08716d8 "@fern-api/fs-utils": "workspace:*" "@fern-api/ir-generator": "workspace:*" "@fern-api/ir-sdk": "workspace:*" @@ -2205,9 +2203,9 @@ __metadata: languageName: unknown linkType: soft -"@fern-api/fdr-sdk@npm:0.98.9-3b3a3fe5f": - version: 0.98.9-3b3a3fe5f - resolution: "@fern-api/fdr-sdk@npm:0.98.9-3b3a3fe5f" +"@fern-api/fdr-sdk@npm:0.98.4-bf08716d8": + version: 0.98.4-bf08716d8 + resolution: "@fern-api/fdr-sdk@npm:0.98.4-bf08716d8" dependencies: dayjs: ^1.11.11 fast-deep-equal: ^3.1.3 @@ -2219,7 +2217,7 @@ __metadata: tinycolor2: ^1.6.0 title: ^3.5.3 url-join: 5.0.0 - checksum: 95367a9b40741630793430ca56f0b2e97be5a49642de0a3e202d43687ea9bc3c66c796b6de1bcb60e1f3a18d2c8ba066f4954631fbddb4c478d74b157eb875b0 + checksum: 79f9847bfd0856da07ddc153583bae663aa7c6880ff60ac58033a41e5303a94c4c4c36a1f265632d8fb2de1ba3222774ea47c5c01f7354c52a214cb09aa461a4 languageName: node linkType: hard @@ -2867,7 +2865,7 @@ __metadata: "@fern-api/configuration": "workspace:*" "@fern-api/core": "workspace:*" "@fern-api/core-utils": "workspace:*" - "@fern-api/fdr-sdk": 0.98.9-3b3a3fe5f + "@fern-api/fdr-sdk": 0.98.4-bf08716d8 "@fern-api/ir-generator": "workspace:*" "@fern-api/ir-sdk": "workspace:*" "@fern-api/task-context": "workspace:*" @@ -2894,7 +2892,7 @@ __metadata: "@fern-api/core": "workspace:*" "@fern-api/core-utils": "workspace:*" "@fern-api/docs-resolver": "workspace:*" - "@fern-api/fdr-sdk": 0.98.9-3b3a3fe5f + "@fern-api/fdr-sdk": 0.98.4-bf08716d8 "@fern-api/fs-utils": "workspace:*" "@fern-api/ir-generator": "workspace:*" "@fern-api/ir-migrations": "workspace:*"