From 813276cd914af7cd2657a9e3af10b47bb17b0365 Mon Sep 17 00:00:00 2001 From: Deep Singhvi Date: Thu, 16 Jan 2025 11:42:21 -0500 Subject: [PATCH] feat(docs): allow for server side feature flags (#5627) --- docs-yml.schema.json | 155 ++++++++++++++++++ fern/apis/docs-yml/definition/docs.yml | 44 ++++- fern/pages/changelogs/cli/2025-01-16.mdx | 24 +++ .../{2025-01-15.mdx => 2025-01-16.mdx} | 0 packages/cli/cli/versions.yml | 27 +++ .../cli/configuration-loader/package.json | 2 +- .../src/docs-yml/parseDocsConfiguration.ts | 67 ++++++-- packages/cli/configuration/package.json | 2 +- .../src/docs-yml/ParsedDocsConfiguration.ts | 36 +++- .../docs/types/ApiReferenceConfiguration.ts | 2 +- .../ApiReferenceEndpointConfiguration.ts | 4 +- ...eferencePackageConfigurationWithOptions.ts | 4 +- .../types/ApiReferenceSectionConfiguration.ts | 4 +- .../docs/types/ChangelogConfiguration.ts | 2 +- .../api/resources/docs/types/FeatureFlag.ts | 12 ++ .../docs/types/FeatureFlagConfiguration.ts | 16 ++ .../resources/docs/types/PageConfiguration.ts | 2 +- .../docs/types/SectionConfiguration.ts | 2 +- .../sdk/api/resources/docs/types/TabConfig.ts | 2 +- .../api/resources/docs/types/VersionConfig.ts | 2 +- .../resources/docs/types/WithFeatureFlags.ts | 9 + .../sdk/api/resources/docs/types/index.ts | 3 + .../docs/types/ApiReferenceConfiguration.ts | 6 +- .../ApiReferenceEndpointConfiguration.ts | 6 +- ...eferencePackageConfigurationWithOptions.ts | 6 +- .../types/ApiReferenceSectionConfiguration.ts | 6 +- .../docs/types/ChangelogConfiguration.ts | 6 +- .../resources/docs/types/FeatureFlag.ts | 22 +++ .../docs/types/FeatureFlagConfiguration.ts | 21 +++ .../resources/docs/types/PageConfiguration.ts | 6 +- .../docs/types/SectionConfiguration.ts | 6 +- .../resources/docs/types/TabConfig.ts | 6 +- .../resources/docs/types/VersionConfig.ts | 6 +- .../resources/docs/types/WithFeatureFlags.ts | 21 +++ .../resources/docs/types/index.ts | 3 + .../cli/docs-importers/commons/package.json | 2 +- .../cli/docs-importers/mintlify/package.json | 2 +- packages/cli/docs-markdown-utils/package.json | 2 +- packages/cli/docs-preview/package.json | 4 +- .../cli/docs-preview/src/runPreviewServer.ts | 1 + packages/cli/docs-resolver/package.json | 4 +- .../src/ApiReferenceNodeConverter.ts | 39 +++-- .../src/ApiReferenceNodeConverterLatest.ts | 48 ++++-- .../src/ChangelogNodeConverter.ts | 12 +- .../src/DocsDefinitionResolver.ts | 19 ++- .../cli/docs-resolver/src/utils/toPageNode.ts | 3 +- .../docs-resolver/src/visitNavigationAst.ts | 1 + packages/cli/ete-tests/package.json | 2 +- .../remote-workspace-runner/package.json | 2 +- packages/cli/register/package.json | 2 +- .../ir-to-fdr-converter/convertTypeShape.ts | 1 + packages/cli/yaml/docs-validator/package.json | 4 +- .../src/docsAst/visitNavigationAst.ts | 1 + packages/core/package.json | 2 +- pnpm-lock.yaml | 83 ++++++---- 55 files changed, 628 insertions(+), 148 deletions(-) create mode 100644 fern/pages/changelogs/cli/2025-01-16.mdx rename fern/pages/changelogs/ts-express/{2025-01-15.mdx => 2025-01-16.mdx} (100%) create mode 100644 packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/FeatureFlag.ts create mode 100644 packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/FeatureFlagConfiguration.ts create mode 100644 packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/WithFeatureFlags.ts create mode 100644 packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/FeatureFlag.ts create mode 100644 packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/FeatureFlagConfiguration.ts create mode 100644 packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/WithFeatureFlags.ts diff --git a/docs-yml.schema.json b/docs-yml.schema.json index f3e9159570c..ca8aa3c8697 100644 --- a/docs-yml.schema.json +++ b/docs-yml.schema.json @@ -551,6 +551,71 @@ } ] }, + "docs.FeatureFlag": { + "type": "object", + "properties": { + "flag": { + "type": "string" + }, + "fallback-value": { + "oneOf": [ + { + "type": [ + "string", + "number", + "boolean", + "object", + "array", + "null" + ] + }, + { + "type": "null" + } + ] + }, + "match": { + "oneOf": [ + { + "type": [ + "string", + "number", + "boolean", + "object", + "array", + "null" + ] + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "flag" + ], + "additionalProperties": false + }, + "docs.FeatureFlagConfiguration": { + "anyOf": [ + { + "type": "string", + "description": "The name of the feature flag, We assume that it is a boolean feature flag that needs to be evaluated to true." + }, + { + "$ref": "#/definitions/docs.FeatureFlag", + "description": "A single feature flag with a configurable name, fallback value, and match value. Especially useful for non boolean feature flags." + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/docs.FeatureFlag" + }, + "description": "A list of feature flags. If any of the feature flags are satisifed, we will show all content." + } + ] + }, "docs.ChangelogFolderRelativePath": { "type": "string" }, @@ -577,6 +642,16 @@ } ] }, + "feature-flag": { + "oneOf": [ + { + "$ref": "#/definitions/docs.FeatureFlagConfiguration" + }, + { + "type": "null" + } + ] + }, "display-name": { "type": "string" }, @@ -678,6 +753,16 @@ } ] }, + "feature-flag": { + "oneOf": [ + { + "$ref": "#/definitions/docs.FeatureFlagConfiguration" + }, + { + "type": "null" + } + ] + }, "display-name": { "type": "string" }, @@ -734,6 +819,16 @@ } ] }, + "feature-flag": { + "oneOf": [ + { + "$ref": "#/definitions/docs.FeatureFlagConfiguration" + }, + { + "type": "null" + } + ] + }, "page": { "type": "string" }, @@ -800,6 +895,16 @@ } ] }, + "feature-flag": { + "oneOf": [ + { + "$ref": "#/definitions/docs.FeatureFlagConfiguration" + }, + { + "type": "null" + } + ] + }, "section": { "type": "string" }, @@ -1049,6 +1154,16 @@ } ] }, + "feature-flag": { + "oneOf": [ + { + "$ref": "#/definitions/docs.FeatureFlagConfiguration" + }, + { + "type": "null" + } + ] + }, "title": { "oneOf": [ { @@ -1171,6 +1286,16 @@ } ] }, + "feature-flag": { + "oneOf": [ + { + "$ref": "#/definitions/docs.FeatureFlagConfiguration" + }, + { + "type": "null" + } + ] + }, "section": { "type": "string" }, @@ -1289,6 +1414,16 @@ } ] }, + "feature-flag": { + "oneOf": [ + { + "$ref": "#/definitions/docs.FeatureFlagConfiguration" + }, + { + "type": "null" + } + ] + }, "endpoint": { "type": "string" }, @@ -1424,6 +1559,16 @@ } ] }, + "feature-flag": { + "oneOf": [ + { + "$ref": "#/definitions/docs.FeatureFlagConfiguration" + }, + { + "type": "null" + } + ] + }, "api": { "type": "string" }, @@ -1612,6 +1757,16 @@ } ] }, + "feature-flag": { + "oneOf": [ + { + "$ref": "#/definitions/docs.FeatureFlagConfiguration" + }, + { + "type": "null" + } + ] + }, "changelog": { "$ref": "#/definitions/docs.ChangelogFolderRelativePath" }, diff --git a/fern/apis/docs-yml/definition/docs.yml b/fern/apis/docs-yml/definition/docs.yml index e24fe589c51..368c4a64df6 100644 --- a/fern/apis/docs-yml/definition/docs.yml +++ b/fern/apis/docs-yml/definition/docs.yml @@ -161,7 +161,7 @@ types: TabId: string TabConfig: - extends: WithPermissions + extends: [WithPermissions, WithFeatureFlags] properties: display-name: string icon: optional @@ -230,7 +230,7 @@ types: VersionConfig: - extends: WithPermissions + extends: [WithPermissions, WithFeatureFlags] properties: display-name: string path: @@ -450,6 +450,32 @@ types: orphaned: type: optional docs: When `orphaned` is set to `true`, the roles will not inherit from parents. + + FeatureFlag: + properties: + flag: + type: string + docs: The name of the feature flag to check. + fallback-value: + type: optional + docs: The default value to use if the feature flag is not set. If not specified, defaults to false. + match: + type: optional + docs: The value that the feature flag should match for the content to be shown. If not specified, content is shown when the flag is true. + + FeatureFlagConfiguration: + discriminated: false + union: + - type: string + docs: The name of the feature flag, We assume that it is a boolean feature flag that needs to be evaluated to true. + - type: FeatureFlag + docs: A single feature flag with a configurable name, fallback value, and match value. Especially useful for non boolean feature flags. + - type: list + docs: A list of feature flags. If any of the feature flags are satisifed, we will show all content. + + WithFeatureFlags: + properties: + feature-flag: optional FontConfig: properties: @@ -527,7 +553,7 @@ types: @default: `normal`. PageConfiguration: - extends: WithPermissions + extends: [WithPermissions, WithFeatureFlags] properties: page: string path: string @@ -536,7 +562,7 @@ types: hidden: optional ChangelogConfiguration: - extends: WithPermissions + extends: [WithPermissions, WithFeatureFlags] properties: changelog: ChangelogFolderRelativePath title: optional # defaults to "Changelog" @@ -546,7 +572,7 @@ types: # skip-slug: optional # skip-slug is not needed for changelog SectionConfiguration: - extends: WithPermissions + extends: [WithPermissions, WithFeatureFlags] properties: section: string path: @@ -561,7 +587,7 @@ types: skip-slug: optional ApiReferenceConfiguration: - extends: WithPermissions + extends: [WithPermissions, WithFeatureFlags] properties: api: string "api-name": @@ -621,7 +647,7 @@ types: - LinkConfiguration ApiReferenceSectionConfiguration: - extends: WithPermissions + extends: [WithPermissions, WithFeatureFlags] properties: section: type: string @@ -649,7 +675,7 @@ types: - ApiReferencePackageConfigurationWithOptions ApiReferencePackageConfigurationWithOptions: - extends: WithPermissions + extends: [WithPermissions, WithFeatureFlags] properties: title: optional summary: @@ -666,7 +692,7 @@ types: docs: Settings for the api playground that is applied only to descendants of this api package. ApiReferenceEndpointConfiguration: - extends: WithPermissions + extends: [WithPermissions, WithFeatureFlags] properties: endpoint: string title: optional diff --git a/fern/pages/changelogs/cli/2025-01-16.mdx b/fern/pages/changelogs/cli/2025-01-16.mdx new file mode 100644 index 00000000000..8b1129e59e8 --- /dev/null +++ b/fern/pages/changelogs/cli/2025-01-16.mdx @@ -0,0 +1,24 @@ +## 0.50.4 +**`(internal):`** The docs.yml now supports a separate configurtation for `feature-flags` which allows Fern to render +pieces of content depending on whether or not certain feature flags are enabled for particular user. + +This feature is in alpha stage; please contact support@buildwithfern.com to learn more! + +```yml docs.yml +navigation: + - page: Page 1 + feature-flag: my-feature-flag-a # single boolean flag + - page: Page 2 + feature: # multiple boolean flags + - flag: my-feature-flag-a + - flag: my-feature-flag-b + - section: Section Title + viewers: role-a + feature-flag: # configurable match + flag: my-feature-flag-a + fallback-value: "ga" + match: "beta" + layout: [] +``` + + diff --git a/fern/pages/changelogs/ts-express/2025-01-15.mdx b/fern/pages/changelogs/ts-express/2025-01-16.mdx similarity index 100% rename from fern/pages/changelogs/ts-express/2025-01-15.mdx rename to fern/pages/changelogs/ts-express/2025-01-16.mdx diff --git a/packages/cli/cli/versions.yml b/packages/cli/cli/versions.yml index ecd33ec3bf3..d04faa25486 100644 --- a/packages/cli/cli/versions.yml +++ b/packages/cli/cli/versions.yml @@ -1,3 +1,30 @@ +- changelogEntry: + - summary: | + The docs.yml now supports a separate configurtation for `feature-flags` which allows Fern to render + pieces of content depending on whether or not certain feature flags are enabled for particular user. + + This feature is in alpha stage; please contact support@buildwithfern.com to learn more! + + ```yml docs.yml + navigation: + - page: Page 1 + feature-flag: my-feature-flag-a # single boolean flag + - page: Page 2 + feature: # multiple boolean flags + - flag: my-feature-flag-a + - flag: my-feature-flag-b + - section: Section Title + viewers: role-a + feature-flag: # configurable match + flag: my-feature-flag-a + fallback-value: "ga" + match: "beta" + layout: [] + ``` + type: internal + irVersion: 55 + version: 0.50.4 + - changelogEntry: - summary: | Fixes an issue where optional, nullable properties resulted in a double optional in the diff --git a/packages/cli/configuration-loader/package.json b/packages/cli/configuration-loader/package.json index 12b31b5c1b0..0aba46a0bd2 100644 --- a/packages/cli/configuration-loader/package.json +++ b/packages/cli/configuration-loader/package.json @@ -32,7 +32,7 @@ "@fern-api/fs-utils": "workspace:*", "@fern-api/task-context": "workspace:*", "@fern-api/fern-definition-schema": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.127.5-c465d2cf0", + "@fern-fern/fdr-cjs-sdk": "0.127.5-72dd47f6f", "@fern-fern/fiddle-sdk": "0.0.584", "@fern-fern/generators-sdk": "0.114.0-5745f9e74", "find-up": "^6.3.0", diff --git a/packages/cli/configuration-loader/src/docs-yml/parseDocsConfiguration.ts b/packages/cli/configuration-loader/src/docs-yml/parseDocsConfiguration.ts index 871c6280564..42e8518e682 100644 --- a/packages/cli/configuration-loader/src/docs-yml/parseDocsConfiguration.ts +++ b/packages/cli/configuration-loader/src/docs-yml/parseDocsConfiguration.ts @@ -380,7 +380,8 @@ async function getNavigationConfiguration({ availability: version.availability, slug: version.slug, viewers: parseRoles(version.viewers), - orphaned: version.orphaned + orphaned: version.orphaned, + featureFlags: convertFeatureFlag(version.featureFlag) }); } return { @@ -391,6 +392,37 @@ async function getNavigationConfiguration({ throw new Error("Unexpected. Docs have neither navigation or versions defined."); } +function convertFeatureFlag( + flag: docsYml.RawSchemas.FeatureFlagConfiguration | undefined +): CjsFdrSdk.navigation.latest.FeatureFlagOptions[] | undefined { + if (flag == null) { + return undefined; + } + if (typeof flag === "string") { + return [ + { + flag, + match: true, + fallbackValue: undefined + } + ]; + } else if (Array.isArray(flag)) { + return flag.map((flagItem) => ({ + flag: flagItem.flag, + match: flagItem.match, + fallbackValue: flagItem.fallbackValue + })); + } else { + return [ + { + flag: flag.flag, + match: flag.match ?? true, + fallbackValue: flag.fallbackValue + } + ]; + } +} + async function convertTypographyConfiguration({ rawTypography, absoluteFilepathToDocsConfig @@ -531,7 +563,8 @@ async function convertNavigationTabConfiguration({ layout }, viewers: parseRoles(tab.viewers), - orphaned: tab.orphaned + orphaned: tab.orphaned, + featureFlags: convertFeatureFlag(tab.featureFlag) }; } @@ -547,7 +580,8 @@ async function convertNavigationTabConfiguration({ href: tab.href }, viewers: parseRoles(tab.viewers), - orphaned: tab.orphaned + orphaned: tab.orphaned, + featureFlags: convertFeatureFlag(tab.featureFlag) }; } @@ -563,7 +597,8 @@ async function convertNavigationTabConfiguration({ changelog: await listFiles(resolveFilepath(tab.changelog, absolutePathToConfig), "{md,mdx}") }, viewers: parseRoles(tab.viewers), - orphaned: tab.orphaned + orphaned: tab.orphaned, + featureFlags: convertFeatureFlag(tab.featureFlag) }; } @@ -643,7 +678,8 @@ async function convertNavigationItem({ skipUrlSlug: rawConfig.skipSlug ?? false, overviewAbsolutePath: resolveFilepath(rawConfig.path, absolutePathToConfig), viewers: parseRoles(rawConfig.viewers), - orphaned: rawConfig.orphaned + orphaned: rawConfig.orphaned, + featureFlags: convertFeatureFlag(rawConfig.featureFlag) }; } if (isRawApiSectionConfig(rawConfig)) { @@ -671,7 +707,8 @@ async function convertNavigationItem({ paginated: rawConfig.paginated ?? false, playground: rawConfig.playground, viewers: parseRoles(rawConfig.viewers), - orphaned: rawConfig.orphaned + orphaned: rawConfig.orphaned, + featureFlags: convertFeatureFlag(rawConfig.featureFlag) }; } if (isRawLinkConfig(rawConfig)) { @@ -691,7 +728,8 @@ async function convertNavigationItem({ title: rawConfig.title ?? DEFAULT_CHANGELOG_TITLE, slug: rawConfig.slug, viewers: parseRoles(rawConfig.viewers), - orphaned: rawConfig.orphaned + orphaned: rawConfig.orphaned, + featureFlags: convertFeatureFlag(rawConfig.featureFlag) }; } assertNever(rawConfig); @@ -722,7 +760,8 @@ function parsePageConfig( // TODO: implement noindex noindex: undefined, viewers: parseRoles(item.viewers), - orphaned: item.orphaned + orphaned: item.orphaned, + featureFlags: convertFeatureFlag(item.featureFlag) }; } @@ -761,7 +800,8 @@ function parseApiReferenceLayoutItem( icon: item.icon, playground: item.playground, viewers: parseRoles(item.viewers), - orphaned: item.orphaned + orphaned: item.orphaned, + featureFlags: convertFeatureFlag(item.featureFlag) } ]; } else if (isRawApiRefEndpointConfiguration(item)) { @@ -775,7 +815,8 @@ function parseApiReferenceLayoutItem( hidden: item.hidden, playground: item.playground, viewers: parseRoles(item.viewers), - orphaned: item.orphaned + orphaned: item.orphaned, + featureFlags: convertFeatureFlag(item.featureFlag) } ]; } @@ -794,7 +835,8 @@ function parseApiReferenceLayoutItem( icon: value.icon, playground: value.playground, viewers: parseRoles(value.viewers), - orphaned: value.orphaned + orphaned: value.orphaned, + featureFlags: convertFeatureFlag(value.featureFlag) }; } return { @@ -809,7 +851,8 @@ function parseApiReferenceLayoutItem( icon: undefined, playground: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; }); } diff --git a/packages/cli/configuration/package.json b/packages/cli/configuration/package.json index 6af8c63c1ed..4ced8ab7a9e 100644 --- a/packages/cli/configuration/package.json +++ b/packages/cli/configuration/package.json @@ -30,7 +30,7 @@ "@fern-api/core-utils": "workspace:*", "@fern-api/path-utils": "workspace:*", "@fern-api/fern-definition-schema": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.127.5-c465d2cf0", + "@fern-fern/fdr-cjs-sdk": "0.127.5-72dd47f6f", "@fern-fern/fiddle-sdk": "0.0.584", "zod": "^3.22.3" }, diff --git a/packages/cli/configuration/src/docs-yml/ParsedDocsConfiguration.ts b/packages/cli/configuration/src/docs-yml/ParsedDocsConfiguration.ts index 19f7ed9398e..ecb870c31ed 100644 --- a/packages/cli/configuration/src/docs-yml/ParsedDocsConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/ParsedDocsConfiguration.ts @@ -141,7 +141,9 @@ export interface VersionedDocsNavigation { versions: VersionInfo[]; } -export interface VersionInfo extends CjsFdrSdk.navigation.v1.WithPermissions { +export interface VersionInfo + extends CjsFdrSdk.navigation.v1.WithPermissions, + CjsFdrSdk.navigation.latest.WithFeatureFlags { landingPage: DocsNavigationItem.Page | undefined; navigation: UntabbedDocsNavigation | TabbedDocsNavigation; version: string; @@ -153,7 +155,9 @@ export type DocsNavigationConfiguration = UntabbedDocsNavigation | TabbedDocsNav export type UnversionedNavigationConfiguration = UntabbedDocsNavigation | TabbedDocsNavigation; -export interface TabbedNavigation extends CjsFdrSdk.navigation.v1.WithPermissions { +export interface TabbedNavigation + extends CjsFdrSdk.navigation.v1.WithPermissions, + CjsFdrSdk.navigation.latest.WithFeatureFlags { // tab: string; title: string; icon: string | undefined; @@ -193,7 +197,9 @@ export type DocsNavigationItem = | DocsNavigationItem.Changelog; export declare namespace DocsNavigationItem { - export interface Page extends CjsFdrSdk.navigation.v1.WithPermissions { + export interface Page + extends CjsFdrSdk.navigation.v1.WithPermissions, + CjsFdrSdk.navigation.latest.WithFeatureFlags { type: "page"; title: string; icon: string | undefined; @@ -203,7 +209,9 @@ export declare namespace DocsNavigationItem { noindex: boolean | undefined; } - export interface Section extends CjsFdrSdk.navigation.v1.WithPermissions { + export interface Section + extends CjsFdrSdk.navigation.v1.WithPermissions, + CjsFdrSdk.navigation.latest.WithFeatureFlags { type: "section"; title: string; icon: string | undefined; @@ -215,7 +223,9 @@ export declare namespace DocsNavigationItem { overviewAbsolutePath: AbsoluteFilePath | undefined; } - export interface ApiSection extends CjsFdrSdk.navigation.v1.WithPermissions { + export interface ApiSection + extends CjsFdrSdk.navigation.v1.WithPermissions, + CjsFdrSdk.navigation.latest.WithFeatureFlags { type: "apiSection"; title: string; icon: string | undefined; @@ -242,7 +252,9 @@ export declare namespace DocsNavigationItem { icon: string | undefined; } - export interface Changelog extends CjsFdrSdk.navigation.v1.WithPermissions { + export interface Changelog + extends CjsFdrSdk.navigation.v1.WithPermissions, + CjsFdrSdk.navigation.latest.WithFeatureFlags { type: "changelog"; changelog: AbsoluteFilePath[]; title: string; @@ -266,7 +278,9 @@ export declare namespace DocsNavigationItem { } export declare namespace ParsedApiReferenceLayoutItem { - export interface Section extends CjsFdrSdk.navigation.v1.WithPermissions { + export interface Section + extends CjsFdrSdk.navigation.v1.WithPermissions, + CjsFdrSdk.navigation.latest.WithFeatureFlags { type: "section"; title: string; // title referencedSubpackages: string[]; // subpackage IDs @@ -278,7 +292,9 @@ export declare namespace ParsedApiReferenceLayoutItem { skipUrlSlug: boolean | undefined; playground: PlaygroundSettings | undefined; } - export interface Package extends CjsFdrSdk.navigation.v1.WithPermissions { + export interface Package + extends CjsFdrSdk.navigation.v1.WithPermissions, + CjsFdrSdk.navigation.latest.WithFeatureFlags { type: "package"; title: string | undefined; // defaults to subpackage title package: string; // subpackage ID @@ -291,7 +307,9 @@ export declare namespace ParsedApiReferenceLayoutItem { playground: PlaygroundSettings | undefined; } - export interface Endpoint extends CjsFdrSdk.navigation.v1.WithPermissions { + export interface Endpoint + extends CjsFdrSdk.navigation.v1.WithPermissions, + CjsFdrSdk.navigation.latest.WithFeatureFlags { type: "endpoint"; endpoint: string; // endpoint locator title: string | undefined; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceConfiguration.ts index e513c4d10a4..ce163e7cd78 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceConfiguration.ts @@ -4,7 +4,7 @@ import * as FernDocsConfig from "../../../index"; -export interface ApiReferenceConfiguration extends FernDocsConfig.WithPermissions { +export interface ApiReferenceConfiguration extends FernDocsConfig.WithPermissions, FernDocsConfig.WithFeatureFlags { api: string; /** Name of API that we are referencing */ apiName?: string; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceEndpointConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceEndpointConfiguration.ts index 9196143119e..153e799810d 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceEndpointConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceEndpointConfiguration.ts @@ -4,7 +4,9 @@ import * as FernDocsConfig from "../../../index"; -export interface ApiReferenceEndpointConfiguration extends FernDocsConfig.WithPermissions { +export interface ApiReferenceEndpointConfiguration + extends FernDocsConfig.WithPermissions, + FernDocsConfig.WithFeatureFlags { endpoint: string; title?: string; slug?: string; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferencePackageConfigurationWithOptions.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferencePackageConfigurationWithOptions.ts index 7e0f80ac932..3aa889adf8e 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferencePackageConfigurationWithOptions.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferencePackageConfigurationWithOptions.ts @@ -4,7 +4,9 @@ import * as FernDocsConfig from "../../../index"; -export interface ApiReferencePackageConfigurationWithOptions extends FernDocsConfig.WithPermissions { +export interface ApiReferencePackageConfigurationWithOptions + extends FernDocsConfig.WithPermissions, + FernDocsConfig.WithFeatureFlags { title?: string; /** Relative path to the markdown file. This summary is displayed at the top of the API section. */ summary?: string; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceSectionConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceSectionConfiguration.ts index f7f90f078ee..4d1e864f09c 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceSectionConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ApiReferenceSectionConfiguration.ts @@ -4,7 +4,9 @@ import * as FernDocsConfig from "../../../index"; -export interface ApiReferenceSectionConfiguration extends FernDocsConfig.WithPermissions { +export interface ApiReferenceSectionConfiguration + extends FernDocsConfig.WithPermissions, + FernDocsConfig.WithFeatureFlags { /** The title of the api package that will be displayed in the sidebar. */ section: string; /** This section will inherit the endpoints from the specified subpackage(s). If multiple packages are specified, they will be merged. */ diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ChangelogConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ChangelogConfiguration.ts index d86c6347482..852590b3fe5 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ChangelogConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/ChangelogConfiguration.ts @@ -4,7 +4,7 @@ import * as FernDocsConfig from "../../../index"; -export interface ChangelogConfiguration extends FernDocsConfig.WithPermissions { +export interface ChangelogConfiguration extends FernDocsConfig.WithPermissions, FernDocsConfig.WithFeatureFlags { changelog: FernDocsConfig.ChangelogFolderRelativePath; title?: string; slug?: string; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/FeatureFlag.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/FeatureFlag.ts new file mode 100644 index 00000000000..2ee801a7c10 --- /dev/null +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/FeatureFlag.ts @@ -0,0 +1,12 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +export interface FeatureFlag { + /** The name of the feature flag to check. */ + flag: string; + /** The default value to use if the feature flag is not set. If not specified, defaults to false. */ + fallbackValue?: unknown; + /** The value that the feature flag should match for the content to be shown. If not specified, content is shown when the flag is true. */ + match?: unknown; +} diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/FeatureFlagConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/FeatureFlagConfiguration.ts new file mode 100644 index 00000000000..3c3bd639e11 --- /dev/null +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/FeatureFlagConfiguration.ts @@ -0,0 +1,16 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +import * as FernDocsConfig from "../../../index"; + +export type FeatureFlagConfiguration = + /** + * The name of the feature flag, We assume that it is a boolean feature flag that needs to be evaluated to true. */ + | string + /** + * A single feature flag with a configurable name, fallback value, and match value. Especially useful for non boolean feature flags. */ + | FernDocsConfig.FeatureFlag + /** + * A list of feature flags. If any of the feature flags are satisifed, we will show all content. */ + | FernDocsConfig.FeatureFlag[]; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/PageConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/PageConfiguration.ts index 669c97b5edb..640f5ca6a90 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/PageConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/PageConfiguration.ts @@ -4,7 +4,7 @@ import * as FernDocsConfig from "../../../index"; -export interface PageConfiguration extends FernDocsConfig.WithPermissions { +export interface PageConfiguration extends FernDocsConfig.WithPermissions, FernDocsConfig.WithFeatureFlags { page: string; path: string; slug?: string; 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 37f385a7fa0..41aa53ad158 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 @@ -4,7 +4,7 @@ import * as FernDocsConfig from "../../../index"; -export interface SectionConfiguration extends FernDocsConfig.WithPermissions { +export interface SectionConfiguration extends FernDocsConfig.WithPermissions, FernDocsConfig.WithFeatureFlags { section: string; /** The relative path to the markdown file that will be displayed when the section is clicked. */ path?: string; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/TabConfig.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/TabConfig.ts index 7d030e8df87..20370f57d21 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/TabConfig.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/TabConfig.ts @@ -4,7 +4,7 @@ import * as FernDocsConfig from "../../../index"; -export interface TabConfig extends FernDocsConfig.WithPermissions { +export interface TabConfig extends FernDocsConfig.WithPermissions, FernDocsConfig.WithFeatureFlags { displayName: string; icon?: string; slug?: string; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/VersionConfig.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/VersionConfig.ts index 2e96a40b672..e5cdcfe8623 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/VersionConfig.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/VersionConfig.ts @@ -4,7 +4,7 @@ import * as FernDocsConfig from "../../../index"; -export interface VersionConfig extends FernDocsConfig.WithPermissions { +export interface VersionConfig extends FernDocsConfig.WithPermissions, FernDocsConfig.WithFeatureFlags { displayName: string; /** The relative path to the version's docs.yml file. */ path: string; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/WithFeatureFlags.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/WithFeatureFlags.ts new file mode 100644 index 00000000000..e156c7e2ca4 --- /dev/null +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/WithFeatureFlags.ts @@ -0,0 +1,9 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +import * as FernDocsConfig from "../../../index"; + +export interface WithFeatureFlags { + featureFlag?: FernDocsConfig.FeatureFlagConfiguration; +} diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/index.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/index.ts index 7e07300f17f..6c1ad66ba88 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/index.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/index.ts @@ -35,6 +35,9 @@ export * from "./AudienceId"; export * from "./RoleId"; export * from "./Role"; export * from "./WithPermissions"; +export * from "./FeatureFlag"; +export * from "./FeatureFlagConfiguration"; +export * from "./WithFeatureFlags"; export * from "./FontConfig"; export * from "./FontWeight"; export * from "./FontStyle"; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceConfiguration.ts index f3c3a5eb6d2..6979ad2fc25 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceConfiguration.ts @@ -9,6 +9,7 @@ import { AudienceId } from "./AudienceId"; import { SnippetsConfiguration } from "./SnippetsConfiguration"; import { PlaygroundSettings } from "./PlaygroundSettings"; import { WithPermissions } from "./WithPermissions"; +import { WithFeatureFlags } from "./WithFeatureFlags"; export const ApiReferenceConfiguration: core.serialization.ObjectSchema< serializers.ApiReferenceConfiguration.Raw, @@ -32,10 +33,11 @@ export const ApiReferenceConfiguration: core.serialization.ObjectSchema< paginated: core.serialization.boolean().optional(), playground: PlaygroundSettings.optional(), }) - .extend(WithPermissions); + .extend(WithPermissions) + .extend(WithFeatureFlags); export declare namespace ApiReferenceConfiguration { - export interface Raw extends WithPermissions.Raw { + export interface Raw extends WithPermissions.Raw, WithFeatureFlags.Raw { api: string; "api-name"?: string | null; openrpc?: string | null; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceEndpointConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceEndpointConfiguration.ts index 6a3a8a5355f..27982c46758 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceEndpointConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceEndpointConfiguration.ts @@ -7,6 +7,7 @@ import * as FernDocsConfig from "../../../../api/index"; import * as core from "../../../../core"; import { PlaygroundSettings } from "./PlaygroundSettings"; import { WithPermissions } from "./WithPermissions"; +import { WithFeatureFlags } from "./WithFeatureFlags"; export const ApiReferenceEndpointConfiguration: core.serialization.ObjectSchema< serializers.ApiReferenceEndpointConfiguration.Raw, @@ -20,10 +21,11 @@ export const ApiReferenceEndpointConfiguration: core.serialization.ObjectSchema< hidden: core.serialization.boolean().optional(), playground: PlaygroundSettings.optional(), }) - .extend(WithPermissions); + .extend(WithPermissions) + .extend(WithFeatureFlags); export declare namespace ApiReferenceEndpointConfiguration { - export interface Raw extends WithPermissions.Raw { + export interface Raw extends WithPermissions.Raw, WithFeatureFlags.Raw { endpoint: string; title?: string | null; slug?: string | null; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferencePackageConfigurationWithOptions.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferencePackageConfigurationWithOptions.ts index cd4485d3451..2fb6a453808 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferencePackageConfigurationWithOptions.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferencePackageConfigurationWithOptions.ts @@ -7,6 +7,7 @@ import * as FernDocsConfig from "../../../../api/index"; import * as core from "../../../../core"; import { PlaygroundSettings } from "./PlaygroundSettings"; import { WithPermissions } from "./WithPermissions"; +import { WithFeatureFlags } from "./WithFeatureFlags"; export const ApiReferencePackageConfigurationWithOptions: core.serialization.ObjectSchema< serializers.ApiReferencePackageConfigurationWithOptions.Raw, @@ -22,10 +23,11 @@ export const ApiReferencePackageConfigurationWithOptions: core.serialization.Obj skipSlug: core.serialization.property("skip-slug", core.serialization.boolean().optional()), playground: PlaygroundSettings.optional(), }) - .extend(WithPermissions); + .extend(WithPermissions) + .extend(WithFeatureFlags); export declare namespace ApiReferencePackageConfigurationWithOptions { - export interface Raw extends WithPermissions.Raw { + export interface Raw extends WithPermissions.Raw, WithFeatureFlags.Raw { title?: string | null; summary?: string | null; contents?: serializers.ApiReferenceLayoutItem.Raw[] | null; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceSectionConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceSectionConfiguration.ts index 29518f1b355..45a03937c2b 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceSectionConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ApiReferenceSectionConfiguration.ts @@ -7,6 +7,7 @@ import * as FernDocsConfig from "../../../../api/index"; import * as core from "../../../../core"; import { PlaygroundSettings } from "./PlaygroundSettings"; import { WithPermissions } from "./WithPermissions"; +import { WithFeatureFlags } from "./WithFeatureFlags"; export const ApiReferenceSectionConfiguration: core.serialization.ObjectSchema< serializers.ApiReferenceSectionConfiguration.Raw, @@ -26,10 +27,11 @@ export const ApiReferenceSectionConfiguration: core.serialization.ObjectSchema< skipSlug: core.serialization.property("skip-slug", core.serialization.boolean().optional()), playground: PlaygroundSettings.optional(), }) - .extend(WithPermissions); + .extend(WithPermissions) + .extend(WithFeatureFlags); export declare namespace ApiReferenceSectionConfiguration { - export interface Raw extends WithPermissions.Raw { + export interface Raw extends WithPermissions.Raw, WithFeatureFlags.Raw { section: string; "referenced-packages"?: string[] | null; summary?: string | null; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ChangelogConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ChangelogConfiguration.ts index a9e55dc8c30..1b34c4c493a 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ChangelogConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/ChangelogConfiguration.ts @@ -7,6 +7,7 @@ import * as FernDocsConfig from "../../../../api/index"; import * as core from "../../../../core"; import { ChangelogFolderRelativePath } from "./ChangelogFolderRelativePath"; import { WithPermissions } from "./WithPermissions"; +import { WithFeatureFlags } from "./WithFeatureFlags"; export const ChangelogConfiguration: core.serialization.ObjectSchema< serializers.ChangelogConfiguration.Raw, @@ -19,10 +20,11 @@ export const ChangelogConfiguration: core.serialization.ObjectSchema< icon: core.serialization.string().optional(), hidden: core.serialization.boolean().optional(), }) - .extend(WithPermissions); + .extend(WithPermissions) + .extend(WithFeatureFlags); export declare namespace ChangelogConfiguration { - export interface Raw extends WithPermissions.Raw { + export interface Raw extends WithPermissions.Raw, WithFeatureFlags.Raw { changelog: ChangelogFolderRelativePath.Raw; title?: string | null; slug?: string | null; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/FeatureFlag.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/FeatureFlag.ts new file mode 100644 index 00000000000..c8216e287f3 --- /dev/null +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/FeatureFlag.ts @@ -0,0 +1,22 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +import * as serializers from "../../../index"; +import * as FernDocsConfig from "../../../../api/index"; +import * as core from "../../../../core"; + +export const FeatureFlag: core.serialization.ObjectSchema = + core.serialization.object({ + flag: core.serialization.string(), + fallbackValue: core.serialization.property("fallback-value", core.serialization.unknown().optional()), + match: core.serialization.unknown().optional(), + }); + +export declare namespace FeatureFlag { + export interface Raw { + flag: string; + "fallback-value"?: unknown | null; + match?: unknown | null; + } +} diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/FeatureFlagConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/FeatureFlagConfiguration.ts new file mode 100644 index 00000000000..4387816de93 --- /dev/null +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/FeatureFlagConfiguration.ts @@ -0,0 +1,21 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ + +import * as serializers from "../../../index"; +import * as FernDocsConfig from "../../../../api/index"; +import * as core from "../../../../core"; +import { FeatureFlag } from "./FeatureFlag"; + +export const FeatureFlagConfiguration: core.serialization.Schema< + serializers.FeatureFlagConfiguration.Raw, + FernDocsConfig.FeatureFlagConfiguration +> = core.serialization.undiscriminatedUnion([ + core.serialization.string(), + FeatureFlag, + core.serialization.list(FeatureFlag), +]); + +export declare namespace FeatureFlagConfiguration { + export type Raw = string | FeatureFlag.Raw | FeatureFlag.Raw[]; +} diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/PageConfiguration.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/PageConfiguration.ts index 09bb5beafda..3a29c7f9385 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/PageConfiguration.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/PageConfiguration.ts @@ -6,6 +6,7 @@ import * as serializers from "../../../index"; import * as FernDocsConfig from "../../../../api/index"; import * as core from "../../../../core"; import { WithPermissions } from "./WithPermissions"; +import { WithFeatureFlags } from "./WithFeatureFlags"; export const PageConfiguration: core.serialization.ObjectSchema< serializers.PageConfiguration.Raw, @@ -18,10 +19,11 @@ export const PageConfiguration: core.serialization.ObjectSchema< icon: core.serialization.string().optional(), hidden: core.serialization.boolean().optional(), }) - .extend(WithPermissions); + .extend(WithPermissions) + .extend(WithFeatureFlags); export declare namespace PageConfiguration { - export interface Raw extends WithPermissions.Raw { + export interface Raw extends WithPermissions.Raw, WithFeatureFlags.Raw { page: string; path: string; slug?: string | 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 bef3602d470..f21171bfe43 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 @@ -6,6 +6,7 @@ import * as serializers from "../../../index"; import * as FernDocsConfig from "../../../../api/index"; import * as core from "../../../../core"; import { WithPermissions } from "./WithPermissions"; +import { WithFeatureFlags } from "./WithFeatureFlags"; export const SectionConfiguration: core.serialization.ObjectSchema< serializers.SectionConfiguration.Raw, @@ -21,10 +22,11 @@ export const SectionConfiguration: core.serialization.ObjectSchema< hidden: core.serialization.boolean().optional(), skipSlug: core.serialization.property("skip-slug", core.serialization.boolean().optional()), }) - .extend(WithPermissions); + .extend(WithPermissions) + .extend(WithFeatureFlags); export declare namespace SectionConfiguration { - export interface Raw extends WithPermissions.Raw { + export interface Raw extends WithPermissions.Raw, WithFeatureFlags.Raw { section: string; path?: string | null; contents: serializers.NavigationItem.Raw[]; diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/TabConfig.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/TabConfig.ts index 1a7651c5bb1..63394abc58a 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/TabConfig.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/TabConfig.ts @@ -7,6 +7,7 @@ import * as FernDocsConfig from "../../../../api/index"; import * as core from "../../../../core"; import { ChangelogFolderRelativePath } from "./ChangelogFolderRelativePath"; import { WithPermissions } from "./WithPermissions"; +import { WithFeatureFlags } from "./WithFeatureFlags"; export const TabConfig: core.serialization.ObjectSchema = core.serialization @@ -19,10 +20,11 @@ export const TabConfig: core.serialization.ObjectSchema = core.serialization.object({ + featureFlag: core.serialization.property("feature-flag", FeatureFlagConfiguration.optional()), +}); + +export declare namespace WithFeatureFlags { + export interface Raw { + "feature-flag"?: FeatureFlagConfiguration.Raw | null; + } +} diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/index.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/index.ts index 7e07300f17f..6c1ad66ba88 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/index.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/index.ts @@ -35,6 +35,9 @@ export * from "./AudienceId"; export * from "./RoleId"; export * from "./Role"; export * from "./WithPermissions"; +export * from "./FeatureFlag"; +export * from "./FeatureFlagConfiguration"; +export * from "./WithFeatureFlags"; export * from "./FontConfig"; export * from "./FontWeight"; export * from "./FontStyle"; diff --git a/packages/cli/docs-importers/commons/package.json b/packages/cli/docs-importers/commons/package.json index ff9da159ec5..4438d2189e1 100644 --- a/packages/cli/docs-importers/commons/package.json +++ b/packages/cli/docs-importers/commons/package.json @@ -30,7 +30,7 @@ "@fern-api/configuration": "workspace:*", "@fern-api/fs-utils": "workspace:*", "@fern-api/task-context": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.127.5-c465d2cf0", + "@fern-fern/fdr-cjs-sdk": "0.127.5-72dd47f6f", "js-yaml": "^4.1.0" }, "devDependencies": { diff --git a/packages/cli/docs-importers/mintlify/package.json b/packages/cli/docs-importers/mintlify/package.json index c8aef645286..8e0685f7f95 100644 --- a/packages/cli/docs-importers/mintlify/package.json +++ b/packages/cli/docs-importers/mintlify/package.json @@ -33,7 +33,7 @@ "@fern-api/fs-utils": "workspace:*", "@fern-api/logger": "workspace:*", "@fern-api/task-context": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.127.5-c465d2cf0", + "@fern-fern/fdr-cjs-sdk": "0.127.5-72dd47f6f", "gray-matter": "^4.0.3" }, "devDependencies": { diff --git a/packages/cli/docs-markdown-utils/package.json b/packages/cli/docs-markdown-utils/package.json index 5572589c4a8..1958797cbe9 100644 --- a/packages/cli/docs-markdown-utils/package.json +++ b/packages/cli/docs-markdown-utils/package.json @@ -29,7 +29,7 @@ "dependencies": { "@fern-api/fs-utils": "workspace:*", "@fern-api/task-context": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.127.5-c465d2cf0", + "@fern-fern/fdr-cjs-sdk": "0.127.5-72dd47f6f", "gray-matter": "^4.0.3", "mdast-util-from-markdown": "^2.0.2", "mdast-util-gfm": "^3.0.0", diff --git a/packages/cli/docs-preview/package.json b/packages/cli/docs-preview/package.json index 1eec76e338d..455e7c94539 100644 --- a/packages/cli/docs-preview/package.json +++ b/packages/cli/docs-preview/package.json @@ -29,7 +29,7 @@ "dependencies": { "@fern-api/core-utils": "workspace:*", "@fern-api/docs-resolver": "workspace:*", - "@fern-api/fdr-sdk": "0.127.5-c465d2cf0", + "@fern-api/fdr-sdk": "0.128.0-8c361ea2b", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-sdk": "workspace:*", "@fern-api/lazy-fern-workspace": "workspace:*", @@ -66,4 +66,4 @@ "@types/xml2js": "^0.4.14", "vitest": "^2.1.8" } -} +} \ No newline at end of file diff --git a/packages/cli/docs-preview/src/runPreviewServer.ts b/packages/cli/docs-preview/src/runPreviewServer.ts index 04abc13c95e..601a70232c5 100644 --- a/packages/cli/docs-preview/src/runPreviewServer.ts +++ b/packages/cli/docs-preview/src/runPreviewServer.ts @@ -22,6 +22,7 @@ const EMPTY_DOCS_DEFINITION: DocsV1Read.DocsDefinition = { files: {}, filesV2: {}, config: { + hideNavLinks: undefined, navigation: undefined, root: undefined, title: undefined, diff --git a/packages/cli/docs-resolver/package.json b/packages/cli/docs-resolver/package.json index c30245a751d..77ae99e60e9 100644 --- a/packages/cli/docs-resolver/package.json +++ b/packages/cli/docs-resolver/package.json @@ -31,8 +31,8 @@ "@fern-api/configuration-loader": "workspace:*", "@fern-api/core-utils": "workspace:*", "@fern-api/docs-markdown-utils": "workspace:*", - "@fern-api/docs-parsers": "^0.0.37", - "@fern-api/fdr-sdk": "0.127.5-c465d2cf0", + "@fern-api/docs-parsers": "^0.0.38", + "@fern-api/fdr-sdk": "0.128.0-8c361ea2b", "@fern-api/lazy-fern-workspace": "workspace:*", "@fern-api/ui-core-utils": "0.127.5-c465d2cf0", "@fern-api/fs-utils": "workspace:*", diff --git a/packages/cli/docs-resolver/src/ApiReferenceNodeConverter.ts b/packages/cli/docs-resolver/src/ApiReferenceNodeConverter.ts index 1702ff82daf..35282c1547e 100644 --- a/packages/cli/docs-resolver/src/ApiReferenceNodeConverter.ts +++ b/packages/cli/docs-resolver/src/ApiReferenceNodeConverter.ts @@ -115,7 +115,8 @@ export class ApiReferenceNodeConverter { playground: this.#convertPlaygroundSettings(this.apiSection.playground), authed: undefined, viewers: this.apiSection.viewers, - orphaned: this.apiSection.orphaned + orphaned: this.apiSection.orphaned, + featureFlags: this.apiSection.featureFlags }; } @@ -220,7 +221,8 @@ export class ApiReferenceNodeConverter { playground: this.#convertPlaygroundSettings(pkg.playground), authed: undefined, viewers: pkg.viewers, - orphaned: pkg.orphaned + orphaned: pkg.orphaned, + featureFlags: pkg.featureFlags }; } else { this.taskContext.logger.warn( @@ -249,7 +251,8 @@ export class ApiReferenceNodeConverter { playground: this.#convertPlaygroundSettings(pkg.playground), authed: undefined, viewers: pkg.viewers, - orphaned: pkg.orphaned + orphaned: pkg.orphaned, + featureFlags: pkg.featureFlags }; } } @@ -316,7 +319,8 @@ export class ApiReferenceNodeConverter { playground: this.#convertPlaygroundSettings(section.playground), authed: undefined, viewers: section.viewers, - orphaned: section.orphaned + orphaned: section.orphaned, + featureFlags: section.featureFlags }; } @@ -361,7 +365,8 @@ export class ApiReferenceNodeConverter { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; } @@ -376,7 +381,8 @@ export class ApiReferenceNodeConverter { hidden: undefined, playground: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }, apiDefinitionPackageId, parentSlug @@ -420,7 +426,8 @@ export class ApiReferenceNodeConverter { playground: this.#convertPlaygroundSettings(endpointItem.playground), authed: undefined, viewers: endpointItem.viewers, - orphaned: endpointItem.orphaned + orphaned: endpointItem.orphaned, + featureFlags: endpointItem.featureFlags }; } @@ -456,7 +463,8 @@ export class ApiReferenceNodeConverter { playground: this.#convertPlaygroundSettings(endpointItem.playground), authed: undefined, viewers: endpointItem.viewers, - orphaned: endpointItem.orphaned + orphaned: endpointItem.orphaned, + featureFlags: endpointItem.featureFlags }; } @@ -492,7 +500,8 @@ export class ApiReferenceNodeConverter { availability: undefined, authed: undefined, viewers: endpointItem.viewers, - orphaned: endpointItem.orphaned + orphaned: endpointItem.orphaned, + featureFlags: endpointItem.featureFlags }; } @@ -560,7 +569,8 @@ export class ApiReferenceNodeConverter { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }); }); @@ -585,7 +595,8 @@ export class ApiReferenceNodeConverter { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }); }); @@ -610,7 +621,8 @@ export class ApiReferenceNodeConverter { availability: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }); }); @@ -646,7 +658,8 @@ export class ApiReferenceNodeConverter { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }); } }); diff --git a/packages/cli/docs-resolver/src/ApiReferenceNodeConverterLatest.ts b/packages/cli/docs-resolver/src/ApiReferenceNodeConverterLatest.ts index 36cf320511c..e307c62678b 100644 --- a/packages/cli/docs-resolver/src/ApiReferenceNodeConverterLatest.ts +++ b/packages/cli/docs-resolver/src/ApiReferenceNodeConverterLatest.ts @@ -131,7 +131,8 @@ export class ApiReferenceNodeConverterLatest { playground: this.#convertPlaygroundSettings(this.apiSection.playground), authed: undefined, viewers: this.apiSection.viewers, - orphaned: this.apiSection.orphaned + orphaned: this.apiSection.orphaned, + featureFlags: this.apiSection.featureFlags }; } @@ -266,7 +267,8 @@ export class ApiReferenceNodeConverterLatest { playground: this.#convertPlaygroundSettings(pkg.playground), authed: undefined, viewers: pkg.viewers, - orphaned: pkg.orphaned + orphaned: pkg.orphaned, + featureFlags: pkg.featureFlags }; this.#topLevelSubpackages.set(subpackage.id, subpackageNode); @@ -298,7 +300,8 @@ export class ApiReferenceNodeConverterLatest { playground: this.#convertPlaygroundSettings(pkg.playground), authed: undefined, viewers: pkg.viewers, - orphaned: pkg.orphaned + orphaned: pkg.orphaned, + featureFlags: pkg.featureFlags }; this.#topLevelSubpackages.set(pkg.package, sectionNode); @@ -369,7 +372,8 @@ export class ApiReferenceNodeConverterLatest { playground: this.#convertPlaygroundSettings(section.playground), authed: undefined, viewers: section.viewers, - orphaned: section.orphaned + orphaned: section.orphaned, + featureFlags: section.featureFlags }; } @@ -415,7 +419,8 @@ export class ApiReferenceNodeConverterLatest { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; this.#topLevelSubpackages.set(subpackageId, subpackageNode); @@ -433,7 +438,8 @@ export class ApiReferenceNodeConverterLatest { hidden: undefined, playground: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }, parentSlug ); @@ -472,7 +478,8 @@ export class ApiReferenceNodeConverterLatest { playground: this.#convertPlaygroundSettings(endpointItem.playground), authed: undefined, viewers: endpointItem.viewers, - orphaned: endpointItem.orphaned + orphaned: endpointItem.orphaned, + featureFlags: endpointItem.featureFlags }; } @@ -504,7 +511,8 @@ export class ApiReferenceNodeConverterLatest { playground: this.#convertPlaygroundSettings(endpointItem.playground), authed: undefined, viewers: endpointItem.viewers, - orphaned: endpointItem.orphaned + orphaned: endpointItem.orphaned, + featureFlags: endpointItem.featureFlags }; } @@ -534,7 +542,8 @@ export class ApiReferenceNodeConverterLatest { availability: undefined, authed: undefined, viewers: endpointItem.viewers, - orphaned: endpointItem.orphaned + orphaned: endpointItem.orphaned, + featureFlags: endpointItem.featureFlags }; } @@ -601,7 +610,8 @@ export class ApiReferenceNodeConverterLatest { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; this.#topLevelSubpackages.set(subpackageId, subpackageNode); additionalChildren.push(subpackageNode); @@ -634,7 +644,8 @@ export class ApiReferenceNodeConverterLatest { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; if (endpoint.namespace != null && endpoint.namespace.length > 0) { @@ -673,7 +684,8 @@ export class ApiReferenceNodeConverterLatest { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; } if (newSubpackageCursor != null && newSubpackageCursor.type === "apiPackage") { @@ -712,7 +724,8 @@ export class ApiReferenceNodeConverterLatest { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; if (webSocket.namespace != null && webSocket.namespace.length > 0) { const firstNamespacePart = camelCase(webSocket.namespace[0]); @@ -746,7 +759,8 @@ export class ApiReferenceNodeConverterLatest { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; } if (newSubpackageCursor != null && newSubpackageCursor.type === "apiPackage") { @@ -784,7 +798,8 @@ export class ApiReferenceNodeConverterLatest { availability: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; if (webhook.namespace != null && webhook.namespace.length > 0) { @@ -819,7 +834,8 @@ export class ApiReferenceNodeConverterLatest { playground: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; } if (newSubpackageCursor != null && newSubpackageCursor.type === "apiPackage") { diff --git a/packages/cli/docs-resolver/src/ChangelogNodeConverter.ts b/packages/cli/docs-resolver/src/ChangelogNodeConverter.ts index 3089a7e39a2..72a663d34c0 100644 --- a/packages/cli/docs-resolver/src/ChangelogNodeConverter.ts +++ b/packages/cli/docs-resolver/src/ChangelogNodeConverter.ts @@ -94,7 +94,8 @@ export class ChangelogNodeConverter { noindex: undefined, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; }); @@ -116,7 +117,8 @@ export class ChangelogNodeConverter { noindex: undefined, authed: undefined, viewers: opts.viewers, - orphaned: opts.orphaned + orphaned: opts.orphaned, + featureFlags: undefined }; } @@ -151,7 +153,8 @@ export class ChangelogNodeConverter { children: this.groupByMonth(id, entries, parentSlug), authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; }), "year", @@ -185,7 +188,8 @@ export class ChangelogNodeConverter { children: entries, authed: undefined, viewers: undefined, - orphaned: undefined + orphaned: undefined, + featureFlags: undefined }; }), "month", diff --git a/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts b/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts index ac7dfa5feac..fbb6cbc4550 100644 --- a/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts +++ b/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts @@ -297,6 +297,7 @@ export class DocsDefinitionResolver { private async convertDocsConfiguration(): Promise { const root = await this.toRootNode(); const config: DocsV1Write.DocsConfig = { + hideNavLinks: undefined, title: this.parsedDocsConfig.title, logoHeight: this.parsedDocsConfig.logo?.height, logoHref: this.parsedDocsConfig.logo?.href ? DocsV1Write.Url(this.parsedDocsConfig.logo?.href) : undefined, @@ -418,7 +419,8 @@ export class DocsDefinitionResolver { authed: undefined, viewers: undefined, orphaned: undefined, - roles: this.parsedDocsConfig.roles?.map((role) => FernNavigation.RoleId(role)) + roles: this.parsedDocsConfig.roles?.map((role) => FernNavigation.RoleId(role)), + featureFlags: undefined }; } @@ -460,7 +462,8 @@ export class DocsDefinitionResolver { orphaned: landingPageConfig.orphaned, pageId, authed: undefined, - noindex: undefined + noindex: undefined, + featureFlags: landingPageConfig.featureFlags }; } @@ -528,7 +531,8 @@ export class DocsDefinitionResolver { viewers: version.viewers, orphaned: version.orphaned, icon: undefined, - pointsTo: undefined + pointsTo: undefined, + featureFlags: version.featureFlags }; } @@ -732,7 +736,8 @@ export class DocsDefinitionResolver { orphaned: item.orphaned, pageId, authed: undefined, - noindex: undefined + noindex: undefined, + featureFlags: item.featureFlags }; } @@ -765,7 +770,8 @@ export class DocsDefinitionResolver { children: await Promise.all(item.contents.map((child) => this.toNavigationChild(id, child, slug))), authed: undefined, pointsTo: undefined, - noindex: undefined + noindex: undefined, + featureFlags: item.featureFlags }; } @@ -847,7 +853,8 @@ export class DocsDefinitionResolver { viewers: item.viewers, orphaned: item.orphaned, pointsTo: undefined, - child: await this.toSidebarRootNode(id, layout, slug) + child: await this.toSidebarRootNode(id, layout, slug), + featureFlags: item.featureFlags }; } diff --git a/packages/cli/docs-resolver/src/utils/toPageNode.ts b/packages/cli/docs-resolver/src/utils/toPageNode.ts index 612aeced7a7..ce1d1bd2279 100644 --- a/packages/cli/docs-resolver/src/utils/toPageNode.ts +++ b/packages/cli/docs-resolver/src/utils/toPageNode.ts @@ -37,6 +37,7 @@ export function toPageNode({ noindex: page.noindex, authed: undefined, viewers: page.viewers, - orphaned: page.orphaned + orphaned: page.orphaned, + featureFlags: page.featureFlags }; } diff --git a/packages/cli/docs-resolver/src/visitNavigationAst.ts b/packages/cli/docs-resolver/src/visitNavigationAst.ts index 000bb930af1..bfd929c0265 100644 --- a/packages/cli/docs-resolver/src/visitNavigationAst.ts +++ b/packages/cli/docs-resolver/src/visitNavigationAst.ts @@ -94,6 +94,7 @@ async function visitNavigationItem({ flattened: noop, path: noop, page: noop, + featureFlag: noop, contents: async (items: docsYml.RawSchemas.NavigationItem[] | undefined): Promise => { if (items == null) { return; diff --git a/packages/cli/ete-tests/package.json b/packages/cli/ete-tests/package.json index 92bca5cd60f..03f28019d32 100644 --- a/packages/cli/ete-tests/package.json +++ b/packages/cli/ete-tests/package.json @@ -28,7 +28,7 @@ }, "dependencies": { "@fern-api/configuration": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.127.5-c465d2cf0", + "@fern-fern/fdr-cjs-sdk": "0.127.5-72dd47f6f", "@fern-api/fs-utils": "workspace:*", "@fern-api/logging-execa": "workspace:*", "@fern-typescript/fetcher": "workspace:*", 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 a8978fb0f06..789599f97e3 100644 --- a/packages/cli/generation/remote-generation/remote-workspace-runner/package.json +++ b/packages/cli/generation/remote-generation/remote-workspace-runner/package.json @@ -34,7 +34,7 @@ "@fern-api/core-utils": "workspace:*", "@fern-api/docs-resolver": "workspace:*", "@fern-api/logging-execa": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.127.5-c465d2cf0", + "@fern-fern/fdr-cjs-sdk": "0.127.5-72dd47f6f", "@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 792c6b8d040..689eca31c8e 100644 --- a/packages/cli/register/package.json +++ b/packages/cli/register/package.json @@ -33,7 +33,7 @@ "@fern-api/configuration": "workspace:*", "@fern-api/core": "workspace:*", "@fern-api/core-utils": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.127.5-c465d2cf0", + "@fern-fern/fdr-cjs-sdk": "0.127.5-72dd47f6f", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-generator": "workspace:*", "@fern-api/ir-sdk": "workspace:*", diff --git a/packages/cli/register/src/ir-to-fdr-converter/convertTypeShape.ts b/packages/cli/register/src/ir-to-fdr-converter/convertTypeShape.ts index e78c239bfd1..fe42a73b086 100644 --- a/packages/cli/register/src/ir-to-fdr-converter/convertTypeShape.ts +++ b/packages/cli/register/src/ir-to-fdr-converter/convertTypeShape.ts @@ -248,6 +248,7 @@ export function convertTypeReference(irTypeReference: Ir.types.TypeReference): F base64: () => { return { type: "base64", + mimeType: undefined, default: undefined }; }, diff --git a/packages/cli/yaml/docs-validator/package.json b/packages/cli/yaml/docs-validator/package.json index c2c02de856c..63d90822252 100644 --- a/packages/cli/yaml/docs-validator/package.json +++ b/packages/cli/yaml/docs-validator/package.json @@ -31,7 +31,7 @@ "@fern-api/core-utils": "workspace:*", "@fern-api/docs-markdown-utils": "workspace:*", "@fern-api/docs-resolver": "workspace:*", - "@fern-api/fdr-sdk": "0.127.5-c465d2cf0", + "@fern-api/fdr-sdk": "0.128.0-8c361ea2b", "@fern-api/fern-definition-schema": "workspace:*", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-generator": "workspace:*", @@ -72,4 +72,4 @@ "@types/js-yaml": "^4.0.8", "vitest": "^2.1.8" } -} +} \ No newline at end of file diff --git a/packages/cli/yaml/docs-validator/src/docsAst/visitNavigationAst.ts b/packages/cli/yaml/docs-validator/src/docsAst/visitNavigationAst.ts index ca4c9164b42..6577a50c8bf 100644 --- a/packages/cli/yaml/docs-validator/src/docsAst/visitNavigationAst.ts +++ b/packages/cli/yaml/docs-validator/src/docsAst/visitNavigationAst.ts @@ -115,6 +115,7 @@ async function visitNavigationItem({ paginated: noop, playground: noop, flattened: noop, + featureFlag: noop, path: async (path: string | undefined): Promise => { if (path == null) { return; diff --git a/packages/core/package.json b/packages/core/package.json index 78011e21569..6160417ede2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -27,7 +27,7 @@ "depcheck": "depcheck" }, "dependencies": { - "@fern-fern/fdr-cjs-sdk": "0.127.5-c465d2cf0", + "@fern-fern/fdr-cjs-sdk": "0.127.5-72dd47f6f", "@fern-fern/generators-sdk": "0.114.0-5745f9e74", "@fern-api/venus-api-sdk": "0.10.2", "@fern-fern/fdr-test-sdk": "^0.0.5297", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23b7d718c98..1989592180d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4645,8 +4645,8 @@ importers: specifier: workspace:* version: link:../../commons/path-utils '@fern-fern/fdr-cjs-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0 + specifier: 0.127.5-72dd47f6f + version: 0.127.5-72dd47f6f '@fern-fern/fiddle-sdk': specifier: 0.0.584 version: 0.0.584 @@ -4700,8 +4700,8 @@ importers: specifier: workspace:* version: link:../task-context '@fern-fern/fdr-cjs-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0 + specifier: 0.127.5-72dd47f6f + version: 0.127.5-72dd47f6f '@fern-fern/fiddle-sdk': specifier: 0.0.584 version: 0.0.584 @@ -4782,8 +4782,8 @@ importers: specifier: workspace:* version: link:../../task-context '@fern-fern/fdr-cjs-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0 + specifier: 0.127.5-72dd47f6f + version: 0.127.5-72dd47f6f js-yaml: specifier: ^4.1.0 version: 4.1.0 @@ -4837,8 +4837,8 @@ importers: specifier: workspace:* version: link:../../task-context '@fern-fern/fdr-cjs-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0 + specifier: 0.127.5-72dd47f6f + version: 0.127.5-72dd47f6f gray-matter: specifier: ^4.0.3 version: 4.0.3 @@ -4877,8 +4877,8 @@ importers: specifier: workspace:* version: link:../task-context '@fern-fern/fdr-cjs-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0 + specifier: 0.127.5-72dd47f6f + version: 0.127.5-72dd47f6f gray-matter: specifier: ^4.0.3 version: 4.0.3 @@ -4959,8 +4959,8 @@ importers: specifier: workspace:* version: link:../docs-resolver '@fern-api/fdr-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0(typescript@5.7.2) + specifier: 0.128.0-8c361ea2b + version: 0.128.0-8c361ea2b(typescript@5.7.2) '@fern-api/fs-utils': specifier: workspace:* version: link:../../commons/fs-utils @@ -5080,11 +5080,11 @@ importers: specifier: workspace:* version: link:../docs-markdown-utils '@fern-api/docs-parsers': - specifier: ^0.0.37 - version: 0.0.37(@types/node@18.15.3)(jsdom@20.0.3)(sass@1.72.0)(terser@5.31.5)(typescript@5.7.2) + specifier: ^0.0.38 + version: 0.0.38(@types/node@18.15.3)(jsdom@20.0.3)(sass@1.72.0)(terser@5.31.5)(typescript@5.7.2) '@fern-api/fdr-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0(typescript@5.7.2) + specifier: 0.128.0-8c361ea2b + version: 0.128.0-8c361ea2b(typescript@5.7.2) '@fern-api/fs-utils': specifier: workspace:* version: link:../../commons/fs-utils @@ -5171,8 +5171,8 @@ importers: specifier: workspace:* version: link:../../commons/logging-execa '@fern-fern/fdr-cjs-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0 + specifier: 0.127.5-72dd47f6f + version: 0.127.5-72dd47f6f '@fern-typescript/fetcher': specifier: workspace:* version: link:../../../generators/typescript/utils/core-utilities/fetcher @@ -6023,8 +6023,8 @@ importers: specifier: workspace:* version: link:../../../workspace/loader '@fern-fern/fdr-cjs-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0 + specifier: 0.127.5-72dd47f6f + version: 0.127.5-72dd47f6f '@fern-fern/fiddle-sdk': specifier: 0.0.584 version: 0.0.584 @@ -6523,8 +6523,8 @@ importers: specifier: workspace:* version: link:../task-context '@fern-fern/fdr-cjs-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0 + specifier: 0.127.5-72dd47f6f + version: 0.127.5-72dd47f6f lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -7029,8 +7029,8 @@ importers: specifier: workspace:* version: link:../../docs-resolver '@fern-api/fdr-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0(typescript@5.7.2) + specifier: 0.128.0-8c361ea2b + version: 0.128.0-8c361ea2b(typescript@5.7.2) '@fern-api/fern-definition-schema': specifier: workspace:* version: link:../../fern-definition/schema @@ -7442,8 +7442,8 @@ importers: specifier: 0.10.2 version: 0.10.2 '@fern-fern/fdr-cjs-sdk': - specifier: 0.127.5-c465d2cf0 - version: 0.127.5-c465d2cf0 + specifier: 0.127.5-72dd47f6f + version: 0.127.5-72dd47f6f '@fern-fern/fdr-test-sdk': specifier: ^0.0.5297 version: 0.0.5297 @@ -8752,8 +8752,8 @@ packages: '@fern-api/core-utils@0.4.24-rc1': resolution: {integrity: sha512-aYu4lQK2qZIKzTF9TeFrICTPJ/zGEZUEWQmZt6pJeHu+R6afrcCBNkUleWU1OpHlDbe+xXUUBOktRg0PM9Hywg==} - '@fern-api/docs-parsers@0.0.37': - resolution: {integrity: sha512-oyPIsebyihcLHbngjPYsXLL40FcXPYcpgLigqk1Lt+eUnMf9HsT/NLUo6cXMjV4djmdKNDXwYG5HzCzNpvq7Sw==} + '@fern-api/docs-parsers@0.0.38': + resolution: {integrity: sha512-eOV1ph/XxlrYbmkDwZnbZnszbRKxDi++En4OcfWPEMiFUsSxgVY8v54CP+xXElOs2e1zqLvohZdTywkCaGRa5g==} '@fern-api/dynamic-ir-sdk@53.24.0': resolution: {integrity: sha512-4XvzvSsh7lNZz5oYN0LH+FRpFGxg9TjfdipSJMpgHvPShe85m/tcfbOzbS0DHBpQGlKb/gHQtQRPAoBR1wdDAw==} @@ -8761,8 +8761,8 @@ packages: '@fern-api/dynamic-ir-sdk@54.0.0': resolution: {integrity: sha512-5ewX7042AGuw697jA6ubulCIQbfTM2HC8UbHxTakE0px871HJTRwHNT2Y9o2kjMbsRXTzyYdb5lOVr+85sc/KQ==} - '@fern-api/fdr-sdk@0.127.5-c465d2cf0': - resolution: {integrity: sha512-oOq1EhoPyESkaPRhzCaOEpQD6azQTB+TB8Sq0CKdZcA2Kmutz5zHujaoTPjCmzeJ97SX/3ETk9baOzL+8/XCaQ==} + '@fern-api/fdr-sdk@0.128.0-8c361ea2b': + resolution: {integrity: sha512-9PRrG7Qy7+FpnifT7MwqmKrrQkSvlw9GzA+Kav/th8o3JcIDuxALkhH+Ra4L60BdGl4V6en+zeUnHexqNzsTUA==} '@fern-api/logger@0.4.24-rc1': resolution: {integrity: sha512-yh0E2F3K3IPnJZcE4dv+u8I51iKgTgv/reinKo4K5YmYEG1iLtw5vBEYMOPkQmsYFPAKIh++OMB/6TrsahMWew==} @@ -8779,14 +8779,17 @@ packages: '@fern-api/ui-core-utils@0.127.5-c465d2cf0': resolution: {integrity: sha512-vZFrH/RhvKnyrShpMT9/k0I+NsgFPjovKc3V6OjYgrZcrVnFe6uDaAwIZs3E/V1U42P9wknhaaMmyMFRlv5ibA==} + '@fern-api/ui-core-utils@0.128.0-8c361ea2b': + resolution: {integrity: sha512-x6aYjlMIXWRFa0yKvHES4JCIoOYWKKVEA+pZQTcijb9jvhZ528taL3NvSSb97/q+Elv45L93tUjQ8W0/utzo9Q==} + '@fern-api/venus-api-sdk@0.10.2': resolution: {integrity: sha512-BD18ZNJeWYvztRXSUWY2lfZ8jFUbNAfHWctvIsWyXgI7C8EL3N0+CWUGD5cZ1QqRnq42nm6XJdWRKhny3yrz4g==} '@fern-fern/docs-config@0.0.80': resolution: {integrity: sha512-wAZCNxwM4qIPn3idoIihPP65KWPjNuoTSfdP4+5f8K2jJLgs5cdkY0pm4cQlGWvi5K6b+lfbUWDaslnXscJ2gQ==} - '@fern-fern/fdr-cjs-sdk@0.127.5-c465d2cf0': - resolution: {integrity: sha512-hKaQTkKbREh9VgaEitIxlD0l0tuTzYc8ohkfvyiARaozYC+IfFJPF5JopvXYZIr+DxQCudRkauMrK2XxgHoHRA==} + '@fern-fern/fdr-cjs-sdk@0.127.5-72dd47f6f': + resolution: {integrity: sha512-0rdM8Aknc0rUsQD/m86fr9Zfdlm5q2pP45KMZO7BAaxTdRs4kth1CHjkuPdQ9HNw6KnGiomdZvdzCpYZmXtZVw==} '@fern-fern/fdr-test-sdk@0.0.5297': resolution: {integrity: sha512-jrZUZ6oIA64LHtrv77xEq0X7qJhT9xRMGWhKcLjIUArMsD7h6KMWUHVdoB/1MP0Mz/uL/E2xmM31SOgJicpIcA==} @@ -15633,7 +15636,7 @@ snapshots: lodash-es: 4.17.21 strip-ansi: 7.1.0 - '@fern-api/docs-parsers@0.0.37(@types/node@18.15.3)(jsdom@20.0.3)(sass@1.72.0)(terser@5.31.5)(typescript@5.7.2)': + '@fern-api/docs-parsers@0.0.38(@types/node@18.15.3)(jsdom@20.0.3)(sass@1.72.0)(terser@5.31.5)(typescript@5.7.2)': dependencies: '@fern-api/logger': 0.4.24-rc1 '@fern-api/ui-core-utils': 0.0.0 @@ -15666,9 +15669,9 @@ snapshots: '@fern-api/dynamic-ir-sdk@54.0.0': {} - '@fern-api/fdr-sdk@0.127.5-c465d2cf0(typescript@5.7.2)': + '@fern-api/fdr-sdk@0.128.0-8c361ea2b(typescript@5.7.2)': dependencies: - '@fern-api/ui-core-utils': 0.127.5-c465d2cf0 + '@fern-api/ui-core-utils': 0.128.0-8c361ea2b '@ungap/structured-clone': 1.2.0 dayjs: 1.11.11 es-toolkit: 1.30.1 @@ -15721,6 +15724,14 @@ snapshots: title: 3.5.3 ua-parser-js: 1.0.37 + '@fern-api/ui-core-utils@0.128.0-8c361ea2b': + dependencies: + date-fns: 4.1.0 + date-fns-tz: 3.2.0(date-fns@4.1.0) + strip-ansi: 7.1.0 + title: 3.5.3 + ua-parser-js: 1.0.37 + '@fern-api/venus-api-sdk@0.10.2': dependencies: form-data: 4.0.0 @@ -15735,7 +15746,7 @@ snapshots: '@fern-fern/docs-config@0.0.80': {} - '@fern-fern/fdr-cjs-sdk@0.127.5-c465d2cf0': + '@fern-fern/fdr-cjs-sdk@0.127.5-72dd47f6f': dependencies: form-data: 4.0.0 formdata-node: 6.0.3