@fern-api/fdr-sdk 1.2.35-b081075b10 → 1.2.35-cd97ec72fc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/js/navigation/ledger-root-builder.js +223 -314
- package/dist/js/navigation/ledger-root-builder.js.map +1 -1
- package/dist/js/navigation/ledger-root-builder.mjs +223 -314
- package/dist/js/navigation/ledger-root-builder.mjs.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/navigation/ledger-root-builder.d.ts +2 -2
- package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/orpc-client/api/shared.ts","../../../src/orpc-client/shared.ts","../../../src/navigation/types/latest.ts","../../../../commons/core-utils/src/isNonNullish.ts","../../../src/navigation/versions/latest/slugjoin.ts","../../../src/navigation/ledger-root-builder.ts"],"sourcesContent":["import * as z from \"zod\";\nimport { ApiDefinitionIdSchema, HttpMethod, HttpMethodSchema } from \"../shared.js\";\n\nexport { ApiDefinitionIdSchema, HttpMethod, HttpMethodSchema };\n\nexport const TypeIdSchema = z.string();\nexport type TypeId = z.infer<typeof TypeIdSchema>;\nexport function TypeId(value: string): TypeId {\n return value;\n}\n\nexport const EndpointIdSchema = z.string();\nexport type EndpointId = z.infer<typeof EndpointIdSchema>;\nexport function EndpointId(value: string): EndpointId {\n return value;\n}\n\nexport const WebSocketIdSchema = z.string();\nexport type WebSocketId = z.infer<typeof WebSocketIdSchema>;\nexport function WebSocketId(value: string): WebSocketId {\n return value;\n}\n\nexport const WebhookIdSchema = z.string();\nexport type WebhookId = z.infer<typeof WebhookIdSchema>;\nexport function WebhookId(value: string): WebhookId {\n return value;\n}\n\nexport const GraphQlOperationIdSchema = z.string();\nexport type GraphQlOperationId = z.infer<typeof GraphQlOperationIdSchema>;\nexport function GraphQlOperationId(value: string): GraphQlOperationId {\n return value;\n}\n\nexport const GraphQlTypeCategorySchema = z.enum([\"object\", \"input\", \"enum\", \"scalar\", \"interface\", \"union\"]);\nexport type GraphQlTypeCategory = z.infer<typeof GraphQlTypeCategorySchema>;\n\nexport const EnvironmentIdSchema = z.string();\nexport type EnvironmentId = z.infer<typeof EnvironmentIdSchema>;\nexport function EnvironmentId(value: string): EnvironmentId {\n return value;\n}\n\nexport const PropertyKeySchema = z.string();\nexport type PropertyKey = z.infer<typeof PropertyKeySchema>;\nexport function PropertyKey(value: string): PropertyKey {\n return value;\n}\n\nexport const AuthSchemeIdSchema = z.string();\nexport type AuthSchemeId = z.infer<typeof AuthSchemeIdSchema>;\nexport function AuthSchemeId(value: string): AuthSchemeId {\n return value;\n}\n\nexport const SubpackageIdSchema = z.string();\nexport type SubpackageId = z.infer<typeof SubpackageIdSchema>;\nexport function SubpackageId(value: string): SubpackageId {\n return value;\n}\n\nexport const WebSocketMessageIdSchema = z.string();\nexport type WebSocketMessageId = z.infer<typeof WebSocketMessageIdSchema>;\nexport function WebSocketMessageId(value: string): WebSocketMessageId {\n return value;\n}\n\nexport const FileIdSchema: z.ZodType<FileId> = z.string() as any;\nexport type FileId = string & { FileId: void };\nexport function FileId(value: string): FileId {\n return value as unknown as FileId;\n}\n\nexport const MultipleAuthTypeSchema = z.object({\n schemes: z.array(AuthSchemeIdSchema)\n});\nexport type MultipleAuthType = z.infer<typeof MultipleAuthTypeSchema>;\n\nexport const GrpcMethodSchema = z.enum([\"UNARY\", \"CLIENT_STREAM\", \"SERVER_STREAM\", \"BIDIRECTIONAL_STREAM\"]);\n\nexport const AvailabilitySchema = z.enum([\n \"Alpha\",\n \"Stable\",\n \"GenerallyAvailable\",\n \"InDevelopment\",\n \"PreRelease\",\n \"Deprecated\",\n \"Beta\",\n \"Preview\",\n \"Legacy\"\n]);\n\nexport const WebSocketMessageOriginSchema = z.enum([\"client\", \"server\"]);\nexport type WebSocketMessageOrigin = z.infer<typeof WebSocketMessageOriginSchema>;\n\nexport const WebhookHttpMethodSchema = z.enum([\"GET\", \"POST\"]);\nexport type WebhookHttpMethod = z.infer<typeof WebhookHttpMethodSchema>;\n\nexport const WithDescriptionSchema = z.object({\n description: z.string().nullish()\n});\nexport type WithDescription = z.infer<typeof WithDescriptionSchema>;\n\nexport const WithAvailabilitySchema = z.object({\n availability: AvailabilitySchema.nullish()\n});\nexport type WithAvailability = z.infer<typeof WithAvailabilitySchema>;\n\nexport const EnvironmentSchema = z.object({\n id: EnvironmentIdSchema,\n baseUrl: z.string(),\n audiences: z.array(z.string()).nullish()\n});\nexport type Environment = z.infer<typeof EnvironmentSchema>;\n\nexport const RestProtocolSchema = z.object({});\n\nexport const OpenRpcProtocolSchema = z.object({\n methodName: z.string()\n});\n\nexport const GrpcProtocolSchema = z.object({\n methodName: z.string(),\n methodType: GrpcMethodSchema.nullish()\n});\n\nexport const ProtocolSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"rest\"), ...RestProtocolSchema.shape }),\n z.object({ type: z.literal(\"openrpc\"), ...OpenRpcProtocolSchema.shape }),\n z.object({ type: z.literal(\"grpc\"), ...GrpcProtocolSchema.shape })\n]);\nexport type Protocol = z.infer<typeof ProtocolSchema>;\n\nexport const ObjectPropertyAccessSchema = z.enum([\"READ_ONLY\", \"WRITE_ONLY\"]);\nexport type ObjectPropertyAccess = z.infer<typeof ObjectPropertyAccessSchema>;\n\nexport const TypeReferenceIdDefaultSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"enum\"), value: z.string() })\n]);\nexport type TypeReferenceIdDefault = z.infer<typeof TypeReferenceIdDefaultSchema>;\n\nconst _numberNullish = z.number().nullish();\nconst _numberIntNullish = z.number().int().nullish();\n\nfunction coerceNumber(val: unknown): unknown {\n if (typeof val === \"string\" && val.trim() !== \"\") {\n const num = Number(val);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n return val;\n}\n\nconst coercedNumberNullish = z.preprocess(coerceNumber, z.number().nullish()) as unknown as typeof _numberNullish;\nconst coercedNumberIntNullish = z.preprocess(\n coerceNumber,\n z.number().int().nullish()\n) as unknown as typeof _numberIntNullish;\n\nexport const IntegerTypeSchema = z.object({\n minimum: coercedNumberIntNullish,\n maximum: coercedNumberIntNullish,\n exclusiveMinimum: coercedNumberIntNullish,\n exclusiveMaximum: coercedNumberIntNullish,\n multipleOf: coercedNumberIntNullish,\n default: coercedNumberIntNullish\n});\nexport type IntegerType = z.infer<typeof IntegerTypeSchema>;\n\nexport const DoubleTypeSchema = z.object({\n minimum: coercedNumberNullish,\n maximum: coercedNumberNullish,\n exclusiveMinimum: coercedNumberNullish,\n exclusiveMaximum: coercedNumberNullish,\n multipleOf: coercedNumberNullish,\n default: coercedNumberNullish\n});\nexport type DoubleType = z.infer<typeof DoubleTypeSchema>;\n\nexport const StringTypeSchema = z.object({\n format: z.string().nullish(),\n regex: z.string().nullish(),\n minLength: z.number().int().nullish(),\n maxLength: z.number().int().nullish(),\n default: z.string().nullish()\n});\nexport type StringType = z.infer<typeof StringTypeSchema>;\n\nexport const LongTypeSchema = z.object({\n minimum: coercedNumberNullish,\n maximum: coercedNumberNullish,\n exclusiveMinimum: coercedNumberNullish,\n exclusiveMaximum: coercedNumberNullish,\n multipleOf: coercedNumberNullish,\n default: coercedNumberNullish\n});\nexport type LongType = z.infer<typeof LongTypeSchema>;\n\nconst _booleanNullish = z.boolean().nullish();\n\nexport const BooleanTypeSchema = z.object({\n default: z.preprocess((val) => {\n if (typeof val === \"string\") {\n if (val.toLowerCase() === \"true\") {\n return true;\n }\n if (val.toLowerCase() === \"false\") {\n return false;\n }\n }\n return val;\n }, z.boolean().nullish()) as unknown as typeof _booleanNullish\n});\nexport type BooleanType = z.infer<typeof BooleanTypeSchema>;\n\nexport const DatetimeTypeSchema = z.object({\n default: z.string().nullish()\n});\nexport type DatetimeType = z.infer<typeof DatetimeTypeSchema>;\n\nexport const UuidTypeSchema = z.object({\n default: z.string().nullish()\n});\nexport type UuidType = z.infer<typeof UuidTypeSchema>;\n\nexport const Base64TypeSchema = z.object({\n default: z.string().nullish(),\n mimeType: z.string().nullish()\n});\nexport type Base64Type = z.infer<typeof Base64TypeSchema>;\n\nexport const DateTypeSchema = z.object({\n default: z.string().nullish()\n});\nexport type DateType = z.infer<typeof DateTypeSchema>;\n\nexport const BigIntegerTypeSchema = z.object({\n default: z.string().nullish()\n});\nexport type BigIntegerType = z.infer<typeof BigIntegerTypeSchema>;\n\nexport const UintTypeSchema = z.object({\n minimum: coercedNumberIntNullish,\n maximum: coercedNumberIntNullish,\n exclusiveMinimum: coercedNumberIntNullish,\n exclusiveMaximum: coercedNumberIntNullish,\n multipleOf: coercedNumberIntNullish,\n default: coercedNumberIntNullish\n});\nexport type UintType = z.infer<typeof UintTypeSchema>;\n\nexport const Uint64TypeSchema = z.object({\n minimum: coercedNumberNullish,\n maximum: coercedNumberNullish,\n exclusiveMinimum: coercedNumberNullish,\n exclusiveMaximum: coercedNumberNullish,\n multipleOf: coercedNumberNullish,\n default: coercedNumberNullish\n});\nexport type Uint64Type = z.infer<typeof Uint64TypeSchema>;\n\nexport const ScalarTypeSchema = z.object({\n name: z.string(),\n description: z.string().nullish(),\n default: z.unknown().nullish()\n});\nexport type ScalarType = z.infer<typeof ScalarTypeSchema>;\n\nexport const PrimitiveTypeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"integer\"), ...IntegerTypeSchema.shape }),\n z.object({ type: z.literal(\"double\"), ...DoubleTypeSchema.shape }),\n z.object({ type: z.literal(\"string\"), ...StringTypeSchema.shape }),\n z.object({ type: z.literal(\"long\"), ...LongTypeSchema.shape }),\n z.object({ type: z.literal(\"boolean\"), ...BooleanTypeSchema.shape }),\n z.object({ type: z.literal(\"datetime\"), ...DatetimeTypeSchema.shape }),\n z.object({ type: z.literal(\"uuid\"), ...UuidTypeSchema.shape }),\n z.object({ type: z.literal(\"base64\"), ...Base64TypeSchema.shape }),\n z.object({ type: z.literal(\"date\"), ...DateTypeSchema.shape }),\n z.object({ type: z.literal(\"bigInteger\"), ...BigIntegerTypeSchema.shape }),\n z.object({ type: z.literal(\"uint\"), ...UintTypeSchema.shape }),\n z.object({ type: z.literal(\"uint64\"), ...Uint64TypeSchema.shape }),\n z.object({ type: z.literal(\"scalar\"), ...ScalarTypeSchema.shape })\n]);\nexport type PrimitiveType = z.infer<typeof PrimitiveTypeSchema>;\n\nexport const LiteralTypeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"booleanLiteral\"), value: z.boolean() }),\n z.object({ type: z.literal(\"stringLiteral\"), value: z.string() })\n]);\nexport type LiteralType = z.infer<typeof LiteralTypeSchema>;\n\nexport type TypeReference =\n | TypeReference.Id\n | TypeReference.Primitive\n | TypeReference.Optional\n | TypeReference.Nullable\n | TypeReference.List\n | TypeReference.Set\n | TypeReference.Map\n | TypeReference.Literal\n | TypeReference.Unknown;\n\nexport namespace TypeReference {\n export interface Id {\n type: \"id\";\n value: string;\n default?: TypeReferenceIdDefault | null;\n }\n export interface Primitive {\n type: \"primitive\";\n value: PrimitiveType;\n }\n export interface Optional {\n type: \"optional\";\n itemType: TypeReference;\n defaultValue?: unknown | null;\n }\n export interface Nullable {\n type: \"nullable\";\n itemType: TypeReference;\n }\n export interface List {\n type: \"list\";\n itemType: TypeReference;\n minItems?: number | null;\n maxItems?: number | null;\n }\n export interface Set {\n type: \"set\";\n itemType: TypeReference;\n minItems?: number | null;\n maxItems?: number | null;\n }\n export interface Map {\n type: \"map\";\n keyType: TypeReference;\n valueType: TypeReference;\n minProperties?: number | null;\n maxProperties?: number | null;\n }\n export interface Literal {\n type: \"literal\";\n value: LiteralType;\n }\n export interface Unknown {\n type: \"unknown\";\n }\n}\n\nexport const TypeReferenceSchema: z.ZodType<TypeReference> = z.lazy(() =>\n z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"id\"),\n value: TypeIdSchema,\n default: TypeReferenceIdDefaultSchema.nullish()\n }),\n z.object({\n type: z.literal(\"primitive\"),\n value: PrimitiveTypeSchema\n }),\n z.object({\n type: z.literal(\"optional\"),\n itemType: TypeReferenceSchema,\n defaultValue: z.unknown().nullish()\n }),\n z.object({\n type: z.literal(\"nullable\"),\n itemType: TypeReferenceSchema\n }),\n z.object({\n type: z.literal(\"list\"),\n itemType: TypeReferenceSchema,\n minItems: z.number().int().nullish(),\n maxItems: z.number().int().nullish()\n }),\n z.object({\n type: z.literal(\"set\"),\n itemType: TypeReferenceSchema,\n minItems: z.number().int().nullish(),\n maxItems: z.number().int().nullish()\n }),\n z.object({\n type: z.literal(\"map\"),\n keyType: TypeReferenceSchema,\n valueType: TypeReferenceSchema,\n minProperties: z.number().int().nullish(),\n maxProperties: z.number().int().nullish()\n }),\n z.object({\n type: z.literal(\"literal\"),\n value: LiteralTypeSchema\n }),\n z.object({\n type: z.literal(\"unknown\")\n })\n ])\n);\n\nexport interface GraphQlArgument {\n description?: string | null;\n availability?: z.infer<typeof AvailabilitySchema> | null;\n name: string;\n type: TypeReference;\n defaultValue?: unknown | null;\n}\nexport const GraphQlArgumentSchema: z.ZodType<GraphQlArgument> = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n name: z.string(),\n type: TypeReferenceSchema,\n defaultValue: z.unknown().nullish()\n});\n\nexport const ObjectPropertySchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: PropertyKeySchema,\n valueType: TypeReferenceSchema,\n propertyAccess: ObjectPropertyAccessSchema.nullish(),\n arguments: z.array(GraphQlArgumentSchema).nullish()\n});\nexport type ObjectProperty = z.infer<typeof ObjectPropertySchema>;\n\nexport const ObjectTypeSchema = z.object({\n extends: z.array(TypeIdSchema),\n properties: z.array(ObjectPropertySchema),\n extraProperties: TypeReferenceSchema.nullish()\n});\nexport type ObjectType = z.infer<typeof ObjectTypeSchema>;\n\nexport const EnumValueSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n value: z.string()\n});\nexport type EnumValue = z.infer<typeof EnumValueSchema>;\n\nexport const EnumTypeSchema = z.object({\n default: z.string().nullish(),\n values: z.array(EnumValueSchema)\n});\nexport type EnumType = z.infer<typeof EnumTypeSchema>;\n\nexport const DiscriminatedUnionVariantSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n discriminantValue: z.string(),\n displayName: z.string().nullish(),\n additionalProperties: ObjectTypeSchema\n});\nexport type DiscriminatedUnionVariant = z.infer<typeof DiscriminatedUnionVariantSchema>;\n\nexport const DiscriminatedUnionTypeSchema = z.object({\n discriminant: z.string(),\n variants: z.array(DiscriminatedUnionVariantSchema)\n});\nexport type DiscriminatedUnionType = z.infer<typeof DiscriminatedUnionTypeSchema>;\n\nexport const ContentTypeSchema = z.union([z.string(), z.array(z.string())]);\nexport type ContentType = z.infer<typeof ContentTypeSchema>;\n\nexport const FilePropertySingleSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: PropertyKeySchema,\n isOptional: z.boolean(),\n contentType: ContentTypeSchema.nullish()\n});\nexport type FilePropertySingle = z.infer<typeof FilePropertySingleSchema>;\n\nexport const FilePropertyArraySchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: PropertyKeySchema,\n isOptional: z.boolean(),\n contentType: ContentTypeSchema.nullish()\n});\nexport type FilePropertyArray = z.infer<typeof FilePropertyArraySchema>;\n\nexport const FormDataFilePropertySchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"file\"), ...FilePropertySingleSchema.shape }),\n z.object({ type: z.literal(\"fileArray\"), ...FilePropertyArraySchema.shape })\n]);\nexport type FormDataFileProperty = z.infer<typeof FormDataFilePropertySchema>;\n\nexport const FormDataBodyPropertySchema = z.object({\n ...ObjectPropertySchema.shape,\n contentType: ContentTypeSchema.nullish(),\n exploded: z.boolean().nullish()\n});\nexport type FormDataBodyProperty = z.infer<typeof FormDataBodyPropertySchema>;\n\nexport const FormDataPropertySchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"file\"), value: FormDataFilePropertySchema }),\n z.object({ type: z.literal(\"bodyProperty\"), ...FormDataBodyPropertySchema.shape })\n]);\nexport type FormDataProperty = z.infer<typeof FormDataPropertySchema>;\n\nexport const FormDataRequestSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n name: z.string(),\n properties: z.array(FormDataPropertySchema)\n});\nexport type FormDataRequest = z.infer<typeof FormDataRequestSchema>;\n\nexport const EndpointPathPartSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"literal\"), value: z.string() }),\n z.object({ type: z.literal(\"pathParameter\"), value: PropertyKeySchema })\n]);\nexport type EndpointPathPart = z.infer<typeof EndpointPathPartSchema>;\n\nexport const PathParameterSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: PropertyKeySchema,\n type: TypeReferenceSchema,\n explode: z.boolean().nullish()\n});\nexport type PathParameter = z.infer<typeof PathParameterSchema>;\n\nexport const EndpointPathSchema = z.object({\n parts: z.array(EndpointPathPartSchema),\n pathParameters: z.array(PathParameterSchema)\n});\nexport type EndpointPath = z.infer<typeof EndpointPathSchema>;\n\nexport const QueryParameterSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: z.string(),\n type: TypeReferenceSchema,\n explode: z.boolean().nullish()\n});\nexport type QueryParameter = z.infer<typeof QueryParameterSchema>;\n\nexport const HeaderSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: z.string(),\n type: TypeReferenceSchema\n});\nexport type Header = z.infer<typeof HeaderSchema>;\n\nexport const JsonBodyShapeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema })\n]);\nexport type JsonBodyShape = z.infer<typeof JsonBodyShapeSchema>;\n\nexport const FileDownloadResponseBodyShapeSchema = z.object({\n contentType: z.string().nullish()\n});\nexport type FileDownloadResponseBodyShape = z.infer<typeof FileDownloadResponseBodyShapeSchema>;\n\nexport const StreamResponseV2Schema = z.object({\n terminator: z.string().nullish(),\n shape: JsonBodyShapeSchema\n});\nexport type StreamResponseV2 = z.infer<typeof StreamResponseV2Schema>;\n\nexport const StreamConditionSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"booleanRequestProperty\"), value: PropertyKeySchema })\n]);\nexport type StreamCondition = z.infer<typeof StreamConditionSchema>;\n\nexport const FilenameWithDataSchema = z.object({\n filename: z.string(),\n data: FileIdSchema\n});\nexport type FilenameWithData = z.infer<typeof FilenameWithDataSchema>;\n\nexport const FormValueSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n z.object({ type: z.literal(\"filename\"), value: z.string() }),\n z.object({ type: z.literal(\"filenames\"), value: z.array(z.string()) }),\n z.object({ type: z.literal(\"filenameWithData\"), ...FilenameWithDataSchema.shape }),\n z.object({ type: z.literal(\"filenamesWithData\"), value: z.array(FilenameWithDataSchema) }),\n z.object({ type: z.literal(\"exploded\"), value: z.array(z.unknown()) })\n]);\nexport type FormValue = z.infer<typeof FormValueSchema>;\n\nexport const BytesValueSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"base64\"), value: z.string() })\n]);\nexport type BytesValue = z.infer<typeof BytesValueSchema>;\n\n// The form variant uses z.unknown() for record values instead of FormValueSchema to be\n// forward-compatible with new form value types and to tolerate form values produced by\n// the AI example enhancer (which may not conform to the strict FormValueSchema).\n// Example data is display-only and does not require strict validation at registration time.\nexport const ExampleEndpointRequestSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n z.object({ type: z.literal(\"form\"), value: z.record(z.string(), z.unknown()) }),\n z.object({ type: z.literal(\"bytes\"), value: BytesValueSchema })\n]);\nexport type ExampleEndpointRequest = z.infer<typeof ExampleEndpointRequestSchema>;\n\nexport const ExampleServerSentEventSchema = z.object({\n event: z.string(),\n data: z.unknown()\n});\nexport type ExampleServerSentEvent = z.infer<typeof ExampleServerSentEventSchema>;\n\nexport const ExampleEndpointResponseSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n z.object({ type: z.literal(\"filename\"), value: z.unknown() }),\n z.object({ type: z.literal(\"stream\"), value: z.array(z.unknown()) }),\n z.object({ type: z.literal(\"sse\"), value: z.array(ExampleServerSentEventSchema) })\n]);\nexport type ExampleEndpointResponse = z.infer<typeof ExampleEndpointResponseSchema>;\n\nexport const ErrorDeclarationSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n type: TypeReferenceSchema.nullish(),\n statusCode: z.number().int()\n});\nexport type ErrorDeclaration = z.infer<typeof ErrorDeclarationSchema>;\n\nexport const ExampleErrorResponseSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\"), value: z.unknown() })\n]);\nexport type ExampleErrorResponse = z.infer<typeof ExampleErrorResponseSchema>;\n\nexport const ErrorExampleSchema = z.object({\n description: z.string().nullish(),\n name: z.string().nullish(),\n responseBody: ExampleErrorResponseSchema\n});\nexport type ErrorExample = z.infer<typeof ErrorExampleSchema>;\n\nexport const GraphQlOperationTypeSchema = z.enum([\"QUERY\", \"MUTATION\", \"SUBSCRIPTION\"]);\nexport type GraphQlOperationType = z.infer<typeof GraphQlOperationTypeSchema>;\n\nexport const GraphQlExampleSchema = z.object({\n description: z.string().nullish(),\n name: z.string().nullish(),\n query: z.string(),\n variables: z.record(z.string(), z.unknown()).nullish(),\n response: z.unknown().nullish()\n});\nexport type GraphQlExample = z.infer<typeof GraphQlExampleSchema>;\n\nexport const CodeSnippetSchema = z.object({\n description: z.string().nullish(),\n name: z.string().nullish(),\n language: z.string(),\n install: z.string().nullish(),\n code: z.string(),\n generated: z.boolean()\n});\nexport type CodeSnippet = z.infer<typeof CodeSnippetSchema>;\n\nexport const GraphQlOperationSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n id: GraphQlOperationIdSchema,\n operationType: GraphQlOperationTypeSchema,\n name: z.string(),\n displayName: z.string().nullish(),\n fieldPath: z.array(z.string()).nullish(),\n arguments: z.array(GraphQlArgumentSchema).nullish(),\n returnType: TypeReferenceSchema,\n examples: z.array(GraphQlExampleSchema).nullish(),\n snippets: z.record(z.string(), z.array(CodeSnippetSchema)).nullish()\n});\nexport type GraphQlOperation = z.infer<typeof GraphQlOperationSchema>;\n\nexport const WebhookPayloadShapeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema }),\n z.object({ type: z.literal(\"formData\"), ...FormDataRequestSchema.shape })\n]);\nexport type WebhookPayloadShape = z.infer<typeof WebhookPayloadShapeSchema>;\n\nexport const WebhookPayloadSchema = z.object({\n description: z.string().nullish(),\n type: WebhookPayloadShapeSchema\n});\nexport type WebhookPayload = z.infer<typeof WebhookPayloadSchema>;\n\nexport const ExampleWebhookPayloadSchema = z.object({\n name: z.string().nullish(),\n payload: z.unknown()\n});\nexport type ExampleWebhookPayload = z.infer<typeof ExampleWebhookPayloadSchema>;\n\nexport const WebSocketMessageBodyShapeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema })\n]);\nexport type WebSocketMessageBodyShape = z.infer<typeof WebSocketMessageBodyShapeSchema>;\n\nexport const WebSocketMessageSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n type: WebSocketMessageIdSchema,\n displayName: z.string().nullish(),\n origin: WebSocketMessageOriginSchema,\n body: WebSocketMessageBodyShapeSchema\n});\nexport type WebSocketMessage = z.infer<typeof WebSocketMessageSchema>;\n\nexport const ExampleWebSocketMessageSchema = z.object({\n type: WebSocketMessageIdSchema,\n body: z.unknown()\n});\nexport type ExampleWebSocketMessage = z.infer<typeof ExampleWebSocketMessageSchema>;\n\nexport const ExampleWebSocketSessionSchema = z.object({\n description: z.string().nullish(),\n name: z.string().nullish(),\n path: z.string(),\n pathParameters: z.record(PropertyKeySchema, z.unknown()),\n queryParameters: z.record(z.string(), z.unknown()),\n headers: z.record(z.string(), z.unknown()),\n messages: z.array(ExampleWebSocketMessageSchema)\n});\nexport type ExampleWebSocketSession = z.infer<typeof ExampleWebSocketSessionSchema>;\n\nexport type ApiNavigationConfigItem =\n | ApiNavigationConfigItem.Subpackage\n | ApiNavigationConfigItem.EndpointId\n | ApiNavigationConfigItem.WebsocketId\n | ApiNavigationConfigItem.WebhookId\n | ApiNavigationConfigItem.GraphqlOperationId;\n\nexport namespace ApiNavigationConfigItem {\n export interface Subpackage {\n type: \"subpackage\";\n subpackageId: string;\n items: ApiNavigationConfigItem[];\n }\n export interface EndpointId {\n type: \"endpointId\";\n value: string;\n }\n export interface WebsocketId {\n type: \"websocketId\";\n value: string;\n }\n export interface WebhookId {\n type: \"webhookId\";\n value: string;\n }\n export interface GraphqlOperationId {\n type: \"graphqlOperationId\";\n value: string;\n }\n}\n\nexport const ApiNavigationConfigItemSchema: z.ZodType<ApiNavigationConfigItem> = z.lazy(() =>\n z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"subpackage\"),\n subpackageId: SubpackageIdSchema,\n items: z.array(ApiNavigationConfigItemSchema)\n }),\n z.object({ type: z.literal(\"endpointId\"), value: EndpointIdSchema }),\n z.object({ type: z.literal(\"websocketId\"), value: WebSocketIdSchema }),\n z.object({ type: z.literal(\"webhookId\"), value: WebhookIdSchema }),\n z.object({ type: z.literal(\"graphqlOperationId\"), value: GraphQlOperationIdSchema })\n ])\n);\n\nexport const ApiNavigationConfigRootSchema = z.object({\n items: z.array(ApiNavigationConfigItemSchema)\n});\nexport type ApiNavigationConfigRoot = z.infer<typeof ApiNavigationConfigRootSchema>;\n\nexport const BearerAuthSchema = z.object({\n description: z.string().nullish(),\n tokenName: z.string().nullish()\n});\nexport type BearerAuth = z.infer<typeof BearerAuthSchema>;\n\nexport const BasicAuthSchema = z.object({\n description: z.string().nullish(),\n usernameName: z.string().nullish(),\n passwordName: z.string().nullish(),\n passwordAlwaysEmpty: z.boolean().nullish()\n});\nexport type BasicAuth = z.infer<typeof BasicAuthSchema>;\n\nexport const HeaderAuthSchema = z.object({\n description: z.string().nullish(),\n nameOverride: z.string().nullish(),\n headerWireValue: z.string(),\n prefix: z.string().nullish()\n});\nexport type HeaderAuth = z.infer<typeof HeaderAuthSchema>;\n\nexport const OAuthClientCredentialsReferencedEndpointSchema = z.object({\n description: z.string().nullish(),\n endpointId: EndpointIdSchema,\n accessTokenLocator: z.string(),\n headerName: z.string().nullish(),\n tokenPrefix: z.string().nullish()\n});\nexport type OAuthClientCredentialsReferencedEndpoint = z.infer<typeof OAuthClientCredentialsReferencedEndpointSchema>;\n\nexport const OAuthClientCredentialsSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"referencedEndpoint\"),\n ...OAuthClientCredentialsReferencedEndpointSchema.shape\n })\n]);\nexport type OAuthClientCredentials = z.infer<typeof OAuthClientCredentialsSchema>;\n\nexport const OAuthSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"clientCredentials\"), value: OAuthClientCredentialsSchema })\n]);\nexport type OAuth = z.infer<typeof OAuthSchema>;\n\nexport const ApiAuthSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"bearerAuth\"), ...BearerAuthSchema.shape }),\n z.object({ type: z.literal(\"basicAuth\"), ...BasicAuthSchema.shape }),\n z.object({ type: z.literal(\"header\"), ...HeaderAuthSchema.shape }),\n z.object({ type: z.literal(\"oAuth\"), value: OAuthSchema })\n]);\nexport type ApiAuth = z.infer<typeof ApiAuthSchema>;\n","import * as z from \"zod\";\n\n// ── Org / API identifiers ──────────────────────────────────────────────\n\nexport const OrgIdSchema = z.string();\nexport type OrgId = z.infer<typeof OrgIdSchema>;\nexport function OrgId(value: string): OrgId {\n return value;\n}\n\nexport const ApiIdSchema = z.string();\nexport type ApiId = z.infer<typeof ApiIdSchema>;\nexport function ApiId(value: string): ApiId {\n return value;\n}\n\nexport const ApiDefinitionIdSchema = z.string().uuid();\nexport type ApiDefinitionId = z.infer<typeof ApiDefinitionIdSchema>;\nexport function ApiDefinitionId(value: string): ApiDefinitionId {\n return value;\n}\n\n// ── HTTP / Endpoint schemas ─────────────────────────────────────────────\n\nexport const HttpMethodSchema = z.enum([\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"HEAD\"]);\nexport type HttpMethod = z.infer<typeof HttpMethodSchema>;\n\nexport const HttpMethod = {\n Get: \"GET\",\n Post: \"POST\",\n Put: \"PUT\",\n Patch: \"PATCH\",\n Delete: \"DELETE\",\n Head: \"HEAD\"\n} as const;\n\nexport const UrlSchema: z.ZodType<Url> = z.string() as any;\nexport type Url = string & { Url: void };\nexport function Url(value: string): Url {\n return value as unknown as Url;\n}\n\nexport const EndpointPathLiteralSchema = z.string();\nexport type EndpointPathLiteral = z.infer<typeof EndpointPathLiteralSchema>;\nexport function EndpointPathLiteral(value: string): EndpointPathLiteral {\n return value;\n}\n\nexport const EndpointIdentifierSchema = z.object({\n path: z.string(),\n method: HttpMethodSchema,\n identifierOverride: z.string().nullish()\n});\nexport type EndpointIdentifier = z.infer<typeof EndpointIdentifierSchema>;\n\n// ── SDK request schema ──────────────────────────────────────────────────\n\nexport type SdkRequest =\n | { type: \"typescript\"; package: string; version: string | undefined }\n | { type: \"python\"; package: string; version: string | undefined }\n | { type: \"go\"; githubRepo: string; version: string | undefined }\n | { type: \"ruby\"; gem: string; version: string | undefined }\n | { type: \"java\"; group: string; artifact: string; version: string | undefined }\n | { type: \"csharp\"; package: string; version: string | undefined };\n\nexport const SdkRequestSchema: z.ZodType<SdkRequest> = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"typescript\"), package: z.string(), version: z.string().nullish() }),\n z.object({ type: z.literal(\"python\"), package: z.string(), version: z.string().nullish() }),\n z.object({ type: z.literal(\"go\"), githubRepo: z.string(), version: z.string().nullish() }),\n z.object({ type: z.literal(\"ruby\"), gem: z.string(), version: z.string().nullish() }),\n z.object({\n type: z.literal(\"java\"),\n group: z.string(),\n artifact: z.string(),\n version: z.string().nullish()\n }),\n z.object({ type: z.literal(\"csharp\"), package: z.string(), version: z.string().nullish() })\n]) as any;\n\n// ── Additional identifiers ─────────────────────────────────────────────\n\nexport const DocsConfigIdSchema = z.string();\nexport type DocsConfigId = z.infer<typeof DocsConfigIdSchema>;\nexport function DocsConfigId(value: string): DocsConfigId {\n return value;\n}\n\nexport const GrpcIdSchema = z.string();\nexport type GrpcId = z.infer<typeof GrpcIdSchema>;\nexport function GrpcId(value: string): GrpcId {\n return value;\n}\n\nexport const PageIdSchema = z.string();\nexport type PageId = z.infer<typeof PageIdSchema>;\nexport function PageId(value: string): PageId {\n return value;\n}\n\nexport const RoleIdSchema = z.string();\nexport type RoleId = z.infer<typeof RoleIdSchema>;\nexport function RoleId(value: string): RoleId {\n return value;\n}\n\nexport const TokenIdSchema = z.string();\nexport type TokenId = z.infer<typeof TokenIdSchema>;\n\nexport const VersionIdSchema = z.string();\nexport type VersionId = z.infer<typeof VersionIdSchema>;\nexport function VersionId(value: string): VersionId {\n return value;\n}\n\n// ── Enums ──────────────────────────────────────────────────────────────\n\nexport const LinkTarget = {\n Blank: \"_blank\",\n Self: \"_self\",\n Parent: \"_parent\",\n Top: \"_top\"\n} as const;\nexport type LinkTarget = (typeof LinkTarget)[keyof typeof LinkTarget];\n\nexport const GrpcMethod = {\n Unary: \"UNARY\",\n ClientStream: \"CLIENT_STREAM\",\n ServerStream: \"SERVER_STREAM\",\n BidirectionalStream: \"BIDIRECTIONAL_STREAM\"\n} as const;\nexport type GrpcMethod = (typeof GrpcMethod)[keyof typeof GrpcMethod];\n\nexport const Availability = {\n Alpha: \"Alpha\",\n Stable: \"Stable\",\n GenerallyAvailable: \"GenerallyAvailable\",\n InDevelopment: \"InDevelopment\",\n PreRelease: \"PreRelease\",\n Deprecated: \"Deprecated\",\n Beta: \"Beta\",\n Preview: \"Preview\",\n Legacy: \"Legacy\"\n} as const;\nexport type Availability = (typeof Availability)[keyof typeof Availability];\n\nexport const SupportedLanguage = {\n Curl: \"curl\",\n Python: \"python\",\n Javascript: \"javascript\",\n Js: \"js\",\n Node: \"node\",\n Typescript: \"typescript\",\n Ts: \"ts\",\n Go: \"go\",\n Ruby: \"ruby\",\n Csharp: \"csharp\",\n Php: \"php\",\n Swift: \"swift\",\n Rust: \"rust\"\n} as const;\nexport type SupportedLanguage = (typeof SupportedLanguage)[keyof typeof SupportedLanguage];\n\nexport const HttpSnippetLanguage = {\n Curl: \"curl\",\n Csharp: \"csharp\",\n Go: \"go\",\n Java: \"java\",\n Javascript: \"javascript\",\n Php: \"php\",\n Python: \"python\",\n Ruby: \"ruby\",\n Swift: \"swift\",\n Rust: \"rust\",\n Typescript: \"typescript\"\n} as const;\nexport type HttpSnippetLanguage = (typeof HttpSnippetLanguage)[keyof typeof HttpSnippetLanguage];\n\n// ── Error types ────────────────────────────────────────────────────────\n\nexport interface InvalidDomainErrorBody {\n /** Value the domain should end with (i.e. docs.buildwithfern.com or dev.docs.buildwithfern.com) */\n requiredDomainSuffix: string;\n}\n\n// ── Docs types ─────────────────────────────────────────────────────────\n\nexport interface AnnouncementConfig {\n /** The text to display in the banner, using markdown. */\n text: string;\n}\n\n// ── Snippet types ──────────────────────────────────────────────────────\n\nexport type SnippetsByEndpointMethod = Partial<Record<HttpMethod, Snippet[]>>;\n\nexport const SnippetsByEndpointMethodSchema: z.ZodType<SnippetsByEndpointMethod> = z.record(\n HttpMethodSchema,\n z.array(z.unknown())\n) as any;\n\n// ── SDK types for snippets ────────────────────────────────────────────\n\nexport interface TypeScriptSdk {\n package: string;\n version: string;\n}\n\nexport interface PythonSdk {\n package: string;\n version: string;\n}\n\nexport interface GoSdk {\n githubRepo: string;\n version: string;\n}\n\nexport interface RubySdk {\n gem: string;\n version: string;\n}\n\nexport interface CsharpSdk {\n package: string;\n version: string;\n}\n\nexport interface JavaSdk {\n group: string;\n artifact: string;\n version: string;\n}\n\nexport interface TypeScriptSnippet {\n sdk: TypeScriptSdk;\n client: string;\n}\n\nexport interface PythonSnippet {\n sdk: PythonSdk;\n async_client: string;\n sync_client: string;\n}\n\nexport interface GoSnippet {\n sdk: GoSdk;\n client: string;\n}\n\nexport interface RubySnippet {\n sdk: RubySdk;\n client: string;\n}\n\nexport interface CsharpSnippet {\n sdk: CsharpSdk;\n client: string;\n}\n\nexport interface JavaSnippet {\n sdk: JavaSdk;\n async_client: string;\n sync_client: string;\n}\n\n// ── Snippet discriminated union ───────────────────────────────────────\n\n// ── Snippet code types (used to deserialize snippet data from DB) ────\n\nexport interface TypeScriptSnippetCode {\n client: string;\n}\n\nexport interface PythonSnippetCode {\n async_client: string;\n sync_client: string;\n}\n\nexport interface GoSnippetCode {\n client: string;\n}\n\nexport interface RubySnippetCode {\n client: string;\n}\n\nexport interface JavaSnippetCode {\n async_client: string;\n sync_client: string;\n}\n\nexport interface CsharpSnippetCode {\n client: string;\n}\n\n// ── Sdk type (SdkRequest with required version) ─────────────────────\n\nexport const SdkSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"typescript\"), package: z.string(), version: z.string() }),\n z.object({ type: z.literal(\"python\"), package: z.string(), version: z.string() }),\n z.object({ type: z.literal(\"go\"), githubRepo: z.string(), version: z.string() }),\n z.object({ type: z.literal(\"ruby\"), gem: z.string(), version: z.string() }),\n z.object({\n type: z.literal(\"java\"),\n group: z.string(),\n artifact: z.string(),\n version: z.string()\n }),\n z.object({ type: z.literal(\"csharp\"), package: z.string(), version: z.string() })\n]);\nexport type Sdk = z.infer<typeof SdkSchema>;\n\n// ── Template type (generic template placeholder) ────────────────────\nexport type Template = unknown;\n\nexport type Snippet = Snippet.Typescript | Snippet.Python | Snippet.Java | Snippet.Go | Snippet.Ruby | Snippet.Csharp;\n\nexport namespace Snippet {\n interface _Base {\n exampleIdentifier: string | undefined;\n }\n\n export interface Typescript extends TypeScriptSnippet, _Base {\n type: \"typescript\";\n }\n\n export interface Python extends PythonSnippet, _Base {\n type: \"python\";\n }\n\n export interface Java extends JavaSnippet, _Base {\n type: \"java\";\n }\n\n export interface Go extends GoSnippet, _Base {\n type: \"go\";\n }\n\n export interface Ruby extends RubySnippet, _Base {\n type: \"ruby\";\n }\n\n export interface Csharp extends CsharpSnippet, _Base {\n type: \"csharp\";\n }\n}\n","import type {\n EndpointId,\n EnvironmentId,\n FileId,\n GraphQlOperationId,\n GraphQlOperationType,\n GraphQlTypeCategory,\n TypeId,\n WebhookId,\n WebSocketId\n} from \"../../orpc-client/api/shared.js\";\nimport type {\n AnnouncementConfig,\n ApiDefinitionId,\n Availability,\n GrpcId,\n GrpcMethod,\n HttpMethod,\n LinkTarget,\n PageId,\n RoleId,\n Url,\n VersionId\n} from \"../../orpc-client/shared.js\";\n\nexport type Slug = string & {\n navigation_latest_Slug: void;\n};\n\nexport function Slug(value: string): Slug {\n return value as unknown as Slug;\n}\n\nexport type TabId = string & {\n navigation_latest_TabId: void;\n};\n\nexport function TabId(value: string): TabId {\n return value as unknown as TabId;\n}\n\nexport type NodeId = string & {\n navigation_latest_NodeId: void;\n};\n\nexport function NodeId(value: string): NodeId {\n return value as unknown as NodeId;\n}\n\nexport type ProductId = string & {\n navigation_latest_ProductId: void;\n};\n\nexport function ProductId(value: string): ProductId {\n return value as unknown as ProductId;\n}\n\nexport type VariantId = string & {\n navigation_latest_VariantId: void;\n};\n\nexport function VariantId(value: string): VariantId {\n return value as unknown as VariantId;\n}\n\nexport type RootChild = VersionedNode | UnversionedNode | ProductGroupNode;\n\nexport type ProductNode = InternalProductNode | ExternalProductNode;\n\nexport type ProductChild = VersionedNode | UnversionedNode;\n\nexport type VersionChild = TabbedNode | SidebarRootNode | VariantedNode;\n\nexport type VariantChild = ApiReferenceNode | SectionNode | SidebarGroupNode | PageNode | LinkNode | ChangelogNode;\n\nexport type TabChild = TabNode | LinkNode | ChangelogNode;\n\nexport type SidebarRootChild = SidebarGroupNode | ApiReferenceNode | SectionNode | VariantedNode;\n\nexport type NavigationChild = ApiReferenceNode | SectionNode | PageNode | LinkNode | ChangelogNode | VariantedNode;\n\nexport type ApiPackageChild =\n | ApiPackageNode\n | EndpointNode\n | EndpointPairNode\n | WebSocketNode\n | WebhookNode\n | GrpcNode\n | GraphQlNode\n | GraphQlTypeNode\n | PageNode\n | LinkNode;\n\nexport interface WithNodeId {\n id: NodeId;\n collapsed: boolean | \"open-by-default\" | undefined;\n}\n\nexport interface WithPermissions {\n viewers: RoleId[] | undefined;\n orphaned: boolean | undefined;\n}\n\nexport interface WithFeatureFlags {\n featureFlags: FeatureFlagOptions[] | undefined;\n}\n\nexport interface WithNodeMetadata extends WithNodeId, WithPermissions, WithFeatureFlags {\n title: string;\n slug: Slug;\n canonicalSlug: Slug | undefined;\n icon: string | undefined;\n hidden: boolean | undefined;\n authed: boolean | undefined;\n}\n\nexport interface WithPage {\n pageId: PageId;\n noindex: boolean | undefined;\n}\n\nexport interface WithOverviewPage {\n overviewPageId: PageId | undefined;\n noindex: boolean | undefined;\n}\n\nexport interface WithApiDefinitionId {\n apiDefinitionId: ApiDefinitionId;\n availability: Availability | undefined;\n}\n\nexport interface WithRedirect {\n pointsTo: Slug | undefined;\n}\n\nexport interface FeatureFlagOptions {\n flag: string;\n fallbackValue: unknown | undefined;\n match: unknown | undefined;\n}\n\nexport interface BreadcrumbItem {\n title: string;\n pointsTo: Slug | undefined;\n}\n\nexport interface PlaygroundButtonSettings {\n href: Url | undefined;\n}\n\nexport interface PlaygroundSettings {\n environments: EnvironmentId[] | undefined;\n button: PlaygroundButtonSettings | undefined;\n \"limit-websocket-messages-per-connection\": number | undefined;\n hidden: boolean | undefined;\n}\n\nexport type { GraphQlOperationType };\nexport type { GraphQlTypeCategory };\n\nexport interface ProductGroupNode extends WithNodeId {\n type: \"productgroup\";\n landingPage: LandingPageNode | undefined;\n children: ProductNode[];\n}\n\nexport interface VersionedNode extends WithNodeId {\n type: \"versioned\";\n children: VersionNode[];\n}\n\nexport interface UnversionedNode extends WithNodeId {\n type: \"unversioned\";\n child: VersionChild;\n landingPage: LandingPageNode | undefined;\n}\n\nexport interface VariantedNode extends WithNodeId {\n type: \"varianted\";\n children: VariantNode[];\n}\n\nexport interface TabbedNode extends WithNodeId {\n type: \"tabbed\";\n children: TabChild[];\n}\n\nexport interface SidebarRootNode extends WithNodeId {\n type: \"sidebarRoot\";\n children: SidebarRootChild[];\n}\n\nexport interface SidebarGroupNode extends WithNodeId {\n type: \"sidebarGroup\";\n children: NavigationChild[];\n}\n\nexport interface EndpointPairNode extends WithNodeId {\n type: \"endpointPair\";\n stream: EndpointNode;\n nonStream: EndpointNode;\n}\n\nexport interface LinkNode extends WithNodeId {\n type: \"link\";\n title: string;\n icon: string | undefined;\n url: Url;\n target: LinkTarget | undefined;\n}\n\nexport interface RootNode extends WithNodeMetadata, WithRedirect {\n type: \"root\";\n version: \"v2\";\n child: RootChild;\n roles: RoleId[] | undefined;\n}\n\nexport interface InternalProductNode extends WithNodeMetadata, WithRedirect {\n type: \"product\";\n default: boolean;\n productId: ProductId;\n child: ProductChild;\n subtitle: string;\n image: FileId | undefined;\n announcement: AnnouncementConfig | undefined;\n}\n\nexport interface ExternalProductNode extends WithNodeId, WithPermissions, WithFeatureFlags {\n type: \"productLink\";\n default: boolean;\n productId: ProductId;\n title: string;\n href: Url;\n target: LinkTarget | undefined;\n subtitle: string;\n icon: string | undefined;\n image: FileId | undefined;\n hidden: boolean | undefined;\n authed: boolean | undefined;\n}\n\nexport interface VersionNode extends WithNodeMetadata, WithRedirect {\n type: \"version\";\n default: boolean;\n versionId: VersionId;\n child: VersionChild;\n availability: Availability | undefined;\n landingPage: LandingPageNode | undefined;\n announcement: AnnouncementConfig | undefined;\n}\n\nexport interface VariantNode extends WithNodeMetadata, WithRedirect {\n type: \"variant\";\n default: boolean;\n variantId: VariantId;\n subtitle: string | undefined;\n image: FileId | undefined;\n children: VariantChild[];\n}\n\nexport interface TabNode extends WithNodeMetadata, WithRedirect {\n type: \"tab\";\n child: SidebarRootNode;\n}\n\nexport interface PageNode extends WithNodeMetadata, WithPage {\n type: \"page\";\n availability: Availability | undefined;\n}\n\nexport interface LandingPageNode extends WithNodeMetadata, WithPage {\n type: \"landingPage\";\n}\n\nexport interface SectionNode extends WithNodeMetadata, WithOverviewPage, WithRedirect {\n type: \"section\";\n collapsible: boolean | undefined;\n collapsedByDefault: boolean | undefined;\n children: NavigationChild[];\n availability: Availability | undefined;\n}\n\nexport interface ChangelogNode extends WithNodeMetadata, WithOverviewPage {\n type: \"changelog\";\n children: ChangelogYearNode[];\n}\n\nexport interface ChangelogYearNode extends WithNodeMetadata {\n type: \"changelogYear\";\n year: number;\n children: ChangelogMonthNode[];\n}\n\nexport interface ChangelogMonthNode extends WithNodeMetadata {\n type: \"changelogMonth\";\n month: number;\n children: ChangelogEntryNode[];\n}\n\nexport interface ChangelogEntryNode extends WithNodeMetadata, WithPage {\n type: \"changelogEntry\";\n date: string;\n tags: string[] | undefined;\n}\n\nexport interface ApiReferenceNode extends WithNodeMetadata, WithOverviewPage, WithApiDefinitionId, WithRedirect {\n type: \"apiReference\";\n paginated: boolean | undefined;\n showErrors: boolean | undefined;\n hideTitle: boolean | undefined;\n children: ApiPackageChild[];\n changelog: ChangelogNode | undefined;\n playground: PlaygroundSettings | undefined;\n postmanCollectionUrl: string | undefined;\n}\n\nexport interface EndpointNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"endpoint\";\n method: HttpMethod;\n endpointId: EndpointId;\n isResponseStream: boolean | undefined;\n playground: PlaygroundSettings | undefined;\n}\n\nexport interface WebSocketNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"webSocket\";\n webSocketId: WebSocketId;\n playground: PlaygroundSettings | undefined;\n}\n\nexport interface WebhookNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"webhook\";\n method: HttpMethod;\n webhookId: WebhookId;\n}\n\nexport interface GrpcNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"grpc\";\n method: GrpcMethod;\n grpcId: GrpcId;\n}\n\nexport interface GraphQlNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"graphql\";\n operationType: GraphQlOperationType;\n graphqlOperationId: GraphQlOperationId;\n /** Additional operation IDs when this node represents a namespace group (e.g. fieldPath grouping). */\n graphqlOperationIds: GraphQlOperationId[] | undefined;\n playground: PlaygroundSettings | undefined;\n}\n\n/**\n * A navigation node representing a single GraphQL schema type (object, input,\n * enum, scalar, interface, or union) as opposed to a GraphQL operation.\n *\n * This node is a navigable leaf, mirroring {@link GraphQlNode}. Generating these\n * nodes from a schema (FER-10879) and rendering a dedicated type page\n * (FER-10880) are tracked separately.\n */\nexport interface GraphQlTypeNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"graphqlType\";\n typeId: TypeId;\n typeCategory: GraphQlTypeCategory;\n}\n\nexport interface ApiPackageNode extends WithNodeMetadata, WithOverviewPage, WithApiDefinitionId, WithRedirect {\n type: \"apiPackage\";\n children: ApiPackageChild[];\n playground: PlaygroundSettings | undefined;\n}\n","export function isNonNullish<T>(x: T | null | undefined): x is T {\n return x != null;\n}\n\nexport function assertNonNullish<T>(x: T | null | undefined, message?: string): asserts x is T {\n if (x == null) {\n throw new Error(message ?? \"Value is null or undefined\");\n }\n}\n","import { isNonNullish } from \"@fern-api/ui-core-utils\";\nimport urljoin from \"url-join\";\n\nimport { Slug } from \".\";\n\n// normalizes slug parts and joins them with a single slash\nexport function slugjoin(...parts: (string | string[] | null | undefined)[]): Slug {\n const slugArray = parts\n .filter(isNonNullish)\n .flatMap((part) => (typeof part === \"string\" ? [part.trim()] : part.map((part) => part.trim())))\n .map((part) => decodeURIComponent(part));\n\n const joined = urljoin(slugArray) ?? \"\";\n const normalized = joined\n .replaceAll(\"//*\", \"/\") // Remove duplicate slashes\n .replace(/^\\//, \"\") // Remove leading slash\n .replace(/\\/$/, \"\"); // Remove trailing slash\n\n return Slug(normalized);\n}\n","import type { NavResponse, VersionMetadataResponse } from \"../orpc-client/docs-ledger/contract.js\";\nimport * as FernNavigation from \"./index.js\";\n\n/**\n * Reconstruct a FernNavigation `RootNode` from the decomposed ledger model\n * (segments + per-segment nav) instead of an embedded `config.root` blob.\n *\n * This is the \"slower fallback\" referenced in the ledger loader refactor: the\n * route/segment-first hot path resolves a single page + its local sidebar\n * without materialising the whole tree, but compatibility methods that need\n * the full root (`getRoot`, `unsafe_getFullRoot`, `findNode`, `getProductList`,\n * …) reconstruct it here.\n *\n * ── Design notes ──────────────────────────────────────────────────────────\n *\n * The transform (`docsPublishTransform.ts`) decomposes a V1 RootNode into:\n * - segment_details: product / version / variant / tab dimensions\n * - segments: a (locale × product × version × variant × tab × section) scope\n * with a `metadata.type` descriptor (section | apiReference | apiPackage |\n * changelog | tabRoot)\n * - artifacts: the leaf nodes (pages, endpoints, links, changelog entries)\n * - nav: routing (fullPath) + sidebar ordering (displaySortOrder)\n *\n * Reconstruction inverts this:\n * 1. Group segments by their (product, version, variant, tab) scope.\n * 2. Within a scope, build the sidebar by nesting `section` segments via\n * their `section` path string (\"models/command\" is a child of \"models\").\n * 3. Assemble scopes into tabbed / sidebarRoot, versioned, productgroup, or\n * unversioned scaffolding based on which dimensions are present.\n *\n * Node slugs are grounded in the stored canonical `fullPath` (the nav row that\n * carries `displaySortOrder`) wherever an artifact exists, so we don't have to\n * re-derive default-slug elision. Structural nodes without their own route\n * (products / versions / sections without an overview) derive a slug via\n * {@link FernNavigation.slugjoin} from the scope prefix.\n *\n * API reference segments are emitted as `paginated` ApiReferenceNodes whose\n * children are populated from the segment's nav routes (endpoint/webhook stubs\n * built via {@link apiLeafNodeFromNavRouteInternal}). This mirrors V2 parity:\n * `findNode` and the slug map locate endpoint pages via the tree, while the\n * full API definition content is still loaded on demand at render time.\n */\n\ntype Segment = VersionMetadataResponse[\"segments\"][number];\ntype SegmentDetail = NonNullable<Segment[\"product\"]>;\ntype NavRoute = NavResponse[\"routes\"][number];\n\nexport interface BuildRootOptions {\n /** The deployment's root slug — the cleaned basepath (e.g. \"\" or \"docs\"). */\n basePath: string;\n /** The site title (RootNode.title). */\n title: string;\n /** Segments for the resolved locale (already locale-deduped by the DAO). */\n segments: Segment[];\n /** Per-segment sidebar nav entries, keyed by segmentHash. */\n navBySegment: Map<string, NavRoute[]>;\n}\n\n// ── id / slug helpers ──────────────────────────────────────────────────────\n\n/**\n * Per-build state. Created once per {@link buildFullRootFromSegments} call and\n * threaded through the builders so concurrent invocations never share state.\n * This matters under Vercel Fluid Compute, where concurrent requests can share\n * a single module instance — module-level mutable state would let one build's\n * ids/basepath bleed into another.\n */\ninterface BuildContext {\n nodeId: (key: string) => FernNavigation.NodeId;\n /** Slug for a content artifact/section, prefixed with the deployment basepath. */\n contentSlug: (relativePath: string) => FernNavigation.Slug;\n}\n\nfunction createBuildContext(basePath: string): BuildContext {\n // Tracks how many times each id key has been handed out, so collisions get\n // a deterministic `-N` suffix. NodeIds only need to be unique within a\n // single tree; keying them off content (slug/scope) instead of a running\n // counter makes them stable across builds — so client state keyed by\n // node.id (e.g. playground form state in localStorage) survives republish\n // as long as the node's slug/position is unchanged.\n const seen = new Map<string, number>();\n // Nav `fullPath`s are stored relative to the docs root (no basepath);\n // FernNavigation slugs include the basepath prefix, so content node slugs\n // are joined onto this prefix.\n const basePrefix = basePath.replace(/^\\/+|\\/+$/g, \"\");\n return {\n nodeId: (key) => {\n const count = seen.get(key) ?? 0;\n seen.set(key, count + 1);\n return FernNavigation.NodeId(count === 0 ? key : `${key}-${count}`);\n },\n contentSlug: (relativePath) => {\n const clean = relativePath.replace(/^\\/+|\\/+$/g, \"\");\n return basePrefix === \"\" ? FernNavigation.Slug(clean) : FernNavigation.slugjoin(basePrefix, clean);\n }\n };\n}\n\nfunction asSlug(path: string): FernNavigation.Slug {\n return FernNavigation.Slug(path.replace(/^\\/+|\\/+$/g, \"\"));\n}\n\n/** Read a string field off an unknown metadata blob. */\nfunction metaStr(metadata: unknown, key: string): string | undefined {\n if (metadata != null && typeof metadata === \"object\" && key in metadata) {\n const v = (metadata as Record<string, unknown>)[key];\n return typeof v === \"string\" ? v : undefined;\n }\n return undefined;\n}\n\nfunction metaBool(metadata: unknown, key: string): boolean | undefined {\n if (metadata != null && typeof metadata === \"object\" && key in metadata) {\n const v = (metadata as Record<string, unknown>)[key];\n return typeof v === \"boolean\" ? v : undefined;\n }\n return undefined;\n}\n\n/** Read the `collapsed` field which can be boolean or \"open-by-default\". */\nfunction metaCollapsed(metadata: unknown): boolean | \"open-by-default\" | undefined {\n if (metadata != null && typeof metadata === \"object\" && \"collapsed\" in metadata) {\n const v = (metadata as Record<string, unknown>).collapsed;\n if (typeof v === \"boolean\") {\n return v;\n }\n if (v === \"open-by-default\") {\n return \"open-by-default\";\n }\n }\n return undefined;\n}\n\n/** Extract a string array from a metadata blob (e.g. page-level `viewers`). */\nfunction metaStrArr(metadata: unknown, key: string): string[] | undefined {\n if (metadata != null && typeof metadata === \"object\" && key in metadata) {\n const v = (metadata as Record<string, unknown>)[key];\n if (Array.isArray(v)) {\n return v.filter((x): x is string => typeof x === \"string\");\n }\n }\n return undefined;\n}\n\n/** Map raw viewer role strings to branded RoleIds, or undefined when empty. */\nfunction toViewers(viewers: string[] | undefined): FernNavigation.RoleId[] | undefined {\n if (viewers == null || viewers.length === 0) {\n return undefined;\n }\n return viewers.map((v) => FernNavigation.RoleId(v));\n}\n\n/**\n * Merge segment-level viewers with the owning variant's viewers so that\n * variant-level RBAC restrictions propagate into section/apiReference/changelog\n * nodes. Without this, removing the variant filter from `inScope` would allow\n * cross-variant prev/next links to disclose restricted content.\n */\nfunction mergeVariantViewers(seg: Segment): FernNavigation.RoleId[] | undefined {\n const segViewers = metaStrArr(seg.metadata, \"viewers\");\n const variantViewers = seg.variant?.viewers;\n if ((segViewers == null || segViewers.length === 0) && (variantViewers == null || variantViewers.length === 0)) {\n return undefined;\n }\n const merged = new Set<string>();\n if (segViewers != null) {\n for (const v of segViewers) {\n merged.add(v);\n }\n }\n if (variantViewers != null) {\n for (const v of variantViewers) {\n merged.add(v);\n }\n }\n return merged.size > 0 ? [...merged].map((v) => FernNavigation.RoleId(v)) : undefined;\n}\n\nfunction detailSlug(detail: SegmentDetail): string {\n return metaStr(detail.metadata, \"slug\") ?? \"\";\n}\n\nfunction detailIsDefault(detail: SegmentDetail): boolean {\n return metaBool(detail.metadata, \"default\") ?? false;\n}\n\n// ── scope grouping ───────────────────────────────────────────────────────\n\n/** Stable identity for a (product, version, variant, tab) scope. */\nfunction scopeKey(seg: Segment): string {\n return [seg.product?.id ?? \"\", seg.version?.id ?? \"\", seg.variant?.id ?? \"\", seg.tab?.id ?? \"\"].join(\"|\");\n}\n\n// ── artifact → node conversion ─────────────────────────────────────────────\n\nfunction withMetadataDefaults(base: {\n id: FernNavigation.NodeId;\n title: string;\n slug: FernNavigation.Slug;\n icon: string | undefined;\n hidden: boolean | undefined;\n viewers?: FernNavigation.RoleId[];\n}): {\n id: FernNavigation.NodeId;\n title: string;\n slug: FernNavigation.Slug;\n canonicalSlug: FernNavigation.Slug | undefined;\n icon: string | undefined;\n hidden: boolean | undefined;\n authed: boolean | undefined;\n collapsed: boolean | undefined;\n viewers: FernNavigation.RoleId[] | undefined;\n orphaned: boolean | undefined;\n featureFlags: FernNavigation.FeatureFlagOptions[] | undefined;\n} {\n const { viewers, ...rest } = base;\n return {\n ...rest,\n canonicalSlug: undefined,\n authed: undefined,\n collapsed: undefined,\n // Normalise empty arrays to undefined so unrestricted nodes don't add\n // filter-level noise; a non-empty array engages the RBAC view gate.\n viewers: viewers != null && viewers.length > 0 ? viewers : undefined,\n orphaned: undefined,\n featureFlags: undefined\n };\n}\n\n/**\n * Convert one sidebar nav artifact into a leaf navigation node. Returns\n * undefined for artifacts that don't become standalone sidebar nodes here\n * (endpoints live under paginated apiReferences; overview pages are folded\n * into their owning section).\n */\nfunction artifactToNode(ctx: BuildContext, route: NavRoute): FernNavigation.NavigationChild | undefined {\n const md = route.metadata;\n const title = metaStr(md, \"title\") ?? \"\";\n const icon = metaStr(md, \"icon\");\n const viewers = toViewers(metaStrArr(md, \"viewers\"));\n const slug = ctx.contentSlug(route.fullPath ?? \"\");\n\n switch (route.type) {\n case \"markdown\": {\n // Overview pages are represented on their section, not as a sibling.\n if (metaBool(md, \"isOverview\")) {\n return undefined;\n }\n const pageId = metaStr(md, \"pageId\") ?? \"\";\n const node: FernNavigation.PageNode = {\n type: \"page\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`page:${slug}`),\n title,\n slug,\n icon,\n hidden: route.hidden,\n viewers\n }),\n pageId: FernNavigation.PageId(pageId),\n noindex: metaBool(md, \"noindex\"),\n availability: undefined\n };\n return node;\n }\n case \"link\": {\n const node: FernNavigation.LinkNode = {\n type: \"link\",\n id: ctx.nodeId(`link:${metaStr(md, \"url\") ?? route.fullPath ?? \"\"}`),\n collapsed: undefined,\n title,\n icon,\n url: FernNavigation.Url(metaStr(md, \"url\") ?? \"\"),\n target: undefined\n };\n return node;\n }\n // API leaf types are handled by apiReferenceNode (which calls\n // apiLeafNodeFromNavRouteInternal), not by section-level artifact\n // conversion. Returning undefined here prevents them from appearing\n // as duplicate siblings alongside the apiReference node.\n case \"rest\":\n case \"asyncapi\":\n case \"webhook\":\n case \"grpc\":\n case \"graphql\":\n return undefined;\n default:\n return undefined;\n }\n}\n\n// ── API-leaf node construction (route/segment-first explorer scoping) ──────\n\n/**\n * The HTTP-method-bearing nav route types emitted by the publish transform for\n * API leaves. Used by both the root builder (to populate apiReference children)\n * and the route/segment-first explorer reads (to resolve endpoint/webhook\n * navigation nodes from a single API segment's nav without walking the full\n * reconstructed root). See ADR 0013 §API-explorer methods.\n */\nexport type ApiLeafNode =\n | FernNavigation.EndpointNode\n | FernNavigation.WebhookNode\n | FernNavigation.WebSocketNode\n | FernNavigation.GrpcNode\n | FernNavigation.GraphQlNode;\n\n/**\n * Convert one API-leaf nav route into its navigation node, or undefined when\n * the route is not an API leaf carrying the required identifiers.\n *\n * @internal Exported for the ledger loader's scoped explorer methods.\n */\nexport function apiLeafNodeFromNavRoute(\n route: NavRoute,\n basePath: string,\n segmentApiDefinitionId: string\n): ApiLeafNode | undefined {\n const ctx = createBuildContext(basePath);\n return apiLeafNodeFromNavRouteInternal(ctx, route, segmentApiDefinitionId);\n}\n\nfunction apiLeafNodeFromNavRouteInternal(\n ctx: BuildContext,\n route: NavRoute,\n segmentApiDefinitionId: string\n): ApiLeafNode | undefined {\n const md = route.metadata;\n const apiDefinitionId = FernNavigation.ApiDefinitionId(metaStr(md, \"apiDefinitionId\") ?? segmentApiDefinitionId);\n const slug = ctx.contentSlug(route.fullPath ?? \"\");\n const title = metaStr(md, \"title\") ?? \"\";\n const icon = metaStr(md, \"icon\");\n const viewers = toViewers(metaStrArr(md, \"viewers\"));\n const meta = withMetadataDefaults({\n id: ctx.nodeId(`api-leaf:${slug}`),\n title,\n slug,\n icon,\n hidden: route.hidden,\n viewers\n });\n\n if (route.type === \"rest\") {\n const endpointId = metaStr(md, \"endpointId\");\n const method = metaStr(md, \"method\");\n if (endpointId == null || method == null) {\n return undefined;\n }\n return {\n type: \"endpoint\",\n ...meta,\n method: method as FernNavigation.EndpointNode[\"method\"],\n endpointId: FernNavigation.EndpointId(endpointId),\n apiDefinitionId,\n isResponseStream: metaBool(md, \"isResponseStream\"),\n availability: undefined,\n playground: undefined\n };\n }\n\n if (route.type === \"webhook\") {\n const webhookId = metaStr(md, \"webhookId\");\n const method = metaStr(md, \"method\");\n if (webhookId == null || method == null) {\n return undefined;\n }\n return {\n type: \"webhook\",\n ...meta,\n method: method as FernNavigation.WebhookNode[\"method\"],\n webhookId: FernNavigation.WebhookId(webhookId),\n apiDefinitionId,\n availability: undefined\n };\n }\n\n if (route.type === \"asyncapi\") {\n const webSocketId = metaStr(md, \"webSocketId\");\n if (webSocketId == null) {\n return undefined;\n }\n return {\n type: \"webSocket\",\n ...meta,\n webSocketId: FernNavigation.WebSocketId(webSocketId),\n apiDefinitionId,\n availability: undefined,\n playground: undefined\n };\n }\n\n if (route.type === \"grpc\") {\n const grpcId = metaStr(md, \"grpcId\");\n const method = metaStr(md, \"method\");\n if (grpcId == null || method == null) {\n return undefined;\n }\n return {\n type: \"grpc\",\n ...meta,\n method: method as FernNavigation.GrpcNode[\"method\"],\n grpcId: FernNavigation.GrpcId(grpcId),\n apiDefinitionId,\n availability: undefined\n };\n }\n\n if (route.type === \"graphql\") {\n const graphqlOperationId = metaStr(md, \"graphqlOperationId\");\n const operationType = metaStr(md, \"operationType\");\n if (graphqlOperationId == null || operationType == null) {\n return undefined;\n }\n return {\n type: \"graphql\",\n ...meta,\n operationType: operationType as FernNavigation.GraphQlNode[\"operationType\"],\n graphqlOperationId: FernNavigation.GraphQlOperationId(graphqlOperationId),\n graphqlOperationIds: undefined,\n apiDefinitionId,\n availability: undefined,\n playground: undefined\n };\n }\n\n return undefined;\n}\n\n/**\n * Collect every endpoint/webhook navigation node from a single API segment's\n * nav routes. The root builder now populates apiReference children directly,\n * but this helper is still used by the ledger loader's per-apiDefinitionId\n * explorer methods (getApiLeafNodes) which scope to a single API definition.\n *\n * @internal Exported for the ledger loader's scoped explorer methods.\n */\nexport function collectApiLeafNodesFromNav(\n routes: NavRoute[],\n basePath: string,\n segmentApiDefinitionId: string\n): ApiLeafNode[] {\n const ctx = createBuildContext(basePath);\n return routes\n .map((route) => apiLeafNodeFromNavRouteInternal(ctx, route, segmentApiDefinitionId))\n .filter((node): node is ApiLeafNode => node != null);\n}\n\n/** Read the apiDefinitionId off a segment's metadata, or undefined. */\nexport function segmentApiDefinitionId(metadata: unknown): string | undefined {\n return metaStr(metadata, \"apiDefinitionId\");\n}\n\n// ── section-tree assembly within one scope ───────────────────────────────\n\ninterface ScopedSegment {\n seg: Segment;\n nav: NavRoute[];\n}\n\n/** Find the overview artifact (isOverview) within a segment's nav, if any. */\nfunction overviewRoute(nav: NavRoute[]): NavRoute | undefined {\n return nav.find((r) => r.type === \"markdown\" && metaBool(r.metadata, \"isOverview\"));\n}\n\nfunction sectionNode(\n ctx: BuildContext,\n scoped: ScopedSegment,\n sectionChildren: FernNavigation.NavigationChild[]\n): FernNavigation.SectionNode {\n const { seg, nav } = scoped;\n const overview = overviewRoute(nav);\n const overviewPageId = overview != null ? metaStr(overview.metadata, \"pageId\") : undefined;\n const slug = ctx.contentSlug(overview?.fullPath ?? seg.section);\n\n const leafChildren = nav\n .map((r) => artifactToNode(ctx, r))\n .filter((n): n is FernNavigation.NavigationChild => n != null);\n\n const defaults = withMetadataDefaults({\n id: ctx.nodeId(`section:${slug}`),\n title: metaStr(seg.metadata, \"title\") ?? \"\",\n slug,\n icon: metaStr(seg.metadata, \"icon\"),\n hidden: seg.hidden,\n viewers: mergeVariantViewers(seg)\n });\n\n return {\n type: \"section\",\n ...defaults,\n collapsed: metaCollapsed(seg.metadata) ?? defaults.collapsed,\n overviewPageId: overviewPageId != null ? FernNavigation.PageId(overviewPageId) : undefined,\n noindex: undefined,\n collapsible: metaBool(seg.metadata, \"collapsible\"),\n collapsedByDefault: metaBool(seg.metadata, \"collapsedByDefault\"),\n availability: undefined,\n pointsTo: undefined,\n children: [...leafChildren, ...sectionChildren]\n };\n}\n\n/**\n * Find direct child apiPackage segments of `parentSection`. A direct child has\n * `parentSectionPath(seg.section) === parentSection`, or is an orphaned segment\n * whose nearest existing ancestor is `parentSection`.\n */\nfunction directChildApiPackages(parentSection: string, scopeSegs: ScopedSegment[]): ScopedSegment[] {\n const sectionPaths = new Set(scopeSegs.map((s) => s.seg.section));\n return scopeSegs\n .filter((s) => {\n if (metaStr(s.seg.metadata, \"type\") !== \"apiPackage\") {\n return false;\n }\n const parent = parentSectionPath(s.seg.section);\n if (parent === parentSection) {\n return true;\n }\n // Orphaned: parent doesn't exist, adopt if nearest ancestor is parentSection.\n if (!sectionPaths.has(parent)) {\n return nearestExistingAncestor(s.seg.section, sectionPaths) === parentSection;\n }\n return false;\n })\n .sort((a, b) => a.seg.sortOrder - b.seg.sortOrder);\n}\n\n/**\n * Build the children of an API section (apiReference or apiPackage) by combining\n * the segment's own leaf nodes with nested apiPackage children.\n */\nfunction buildApiChildren(\n ctx: BuildContext,\n scoped: ScopedSegment,\n scopeSegs: ScopedSegment[],\n apiDefinitionId: string\n): FernNavigation.ApiPackageChild[] {\n const { seg, nav } = scoped;\n\n // Build leaf nodes from this segment's own nav routes (not descendants).\n const rawLeafNodes: ApiLeafNode[] = nav\n .map((route) => apiLeafNodeFromNavRouteInternal(ctx, route, apiDefinitionId))\n .filter((node): node is ApiLeafNode => node != null);\n\n // Merge stream/non-stream endpoint pairs into EndpointPairNodes.\n const leafNodes = mergeEndpointPairs(ctx, rawLeafNodes, nav);\n\n // Build nested ApiPackageNodes from direct child apiPackage segments.\n const childPackages = directChildApiPackages(seg.section, scopeSegs);\n const packageNodes: FernNavigation.ApiPackageChild[] = childPackages.map((child) =>\n apiPackageChildNode(ctx, child, scopeSegs, apiDefinitionId)\n );\n\n // Interleave: leaf nodes first (in their nav sort order), then package nodes\n // (in their segment sort order). This matches v2's structure where direct\n // artifacts precede sub-packages.\n return [...leafNodes, ...packageNodes];\n}\n\n/**\n * Build an ApiPackageNode from an apiPackage segment, recursively nesting any\n * deeper sub-packages.\n */\nfunction apiPackageChildNode(\n ctx: BuildContext,\n scoped: ScopedSegment,\n scopeSegs: ScopedSegment[],\n parentApiDefinitionId: string\n): FernNavigation.ApiPackageNode {\n const { seg, nav } = scoped;\n const overview = overviewRoute(nav);\n const overviewPageId = overview != null ? metaStr(overview.metadata, \"pageId\") : undefined;\n const apiDefinitionId = metaStr(seg.metadata, \"apiDefinitionId\") ?? parentApiDefinitionId;\n const slug = ctx.contentSlug(overview?.fullPath ?? nav[0]?.fullPath ?? seg.section);\n\n const children = buildApiChildren(ctx, scoped, scopeSegs, apiDefinitionId);\n\n return {\n type: \"apiPackage\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`api-pkg:${slug}`),\n title: metaStr(seg.metadata, \"title\") ?? \"\",\n slug,\n icon: metaStr(seg.metadata, \"icon\"),\n hidden: seg.hidden,\n viewers: toViewers(metaStrArr(seg.metadata, \"viewers\"))\n }),\n apiDefinitionId: FernNavigation.ApiDefinitionId(apiDefinitionId),\n availability: metaStr(seg.metadata, \"availability\") as FernNavigation.ApiPackageNode[\"availability\"],\n overviewPageId: overviewPageId != null ? FernNavigation.PageId(overviewPageId) : undefined,\n noindex: undefined,\n pointsTo: undefined,\n children,\n playground: undefined\n };\n}\n\n/**\n * Merge endpoint nodes that were originally part of an `endpointPair` in the V1\n * tree. The publish transform stamps both artifacts with a shared\n * `endpointPairKey` in their route metadata; this function groups endpoints by\n * that key and reconstructs `EndpointPairNode`s — matching the v2 nav tree\n * structure where stream/non-stream variants share a single page with a toggle.\n */\nfunction mergeEndpointPairs(\n ctx: BuildContext,\n leafNodes: ApiLeafNode[],\n allNav: NavRoute[]\n): FernNavigation.ApiPackageChild[] {\n // Build a lookup from endpointId → endpointPairKey using route metadata.\n // Only REST routes carry `endpointPairKey`.\n const endpointIdToPairKey = new Map<string, string>();\n for (const route of allNav) {\n if (route.type !== \"rest\") {\n continue;\n }\n const pairKey = metaStr(route.metadata, \"endpointPairKey\");\n const endpointId = metaStr(route.metadata, \"endpointId\");\n if (pairKey != null && endpointId != null) {\n endpointIdToPairKey.set(endpointId, pairKey);\n }\n }\n\n // If no pair keys exist (pre-existing data without the key), return as-is.\n if (endpointIdToPairKey.size === 0) {\n return leafNodes;\n }\n\n const result: FernNavigation.ApiPackageChild[] = [];\n // Track which pair keys we've already merged so we only emit the pair once.\n const mergedPairKeys = new Map<string, number>();\n\n for (const node of leafNodes) {\n if (node.type !== \"endpoint\") {\n result.push(node);\n continue;\n }\n\n const pairKey = endpointIdToPairKey.get(String(node.endpointId));\n if (pairKey == null) {\n result.push(node);\n continue;\n }\n\n const existingIdx = mergedPairKeys.get(pairKey);\n if (existingIdx == null) {\n // First endpoint of the pair — push it and record its position.\n mergedPairKeys.set(pairKey, result.length);\n result.push(node);\n } else {\n // Second endpoint — merge with the first into an EndpointPairNode.\n const first = result[existingIdx];\n if (first == null || first.type !== \"endpoint\") {\n result.push(node);\n continue;\n }\n\n // Determine which is stream and which is non-stream.\n const stream = node.isResponseStream ? node : first;\n const nonStream = node.isResponseStream ? first : node;\n\n const pairNode: FernNavigation.EndpointPairNode = {\n id: ctx.nodeId(`endpoint-pair:${pairKey}`),\n type: \"endpointPair\",\n collapsed: undefined,\n stream,\n nonStream\n };\n result[existingIdx] = pairNode;\n }\n }\n\n return result;\n}\n\nfunction apiReferenceNode(\n ctx: BuildContext,\n scoped: ScopedSegment,\n scopeSegs: ScopedSegment[]\n): FernNavigation.ApiReferenceNode {\n const { seg, nav } = scoped;\n const overview = overviewRoute(nav);\n const overviewPageId = overview != null ? metaStr(overview.metadata, \"pageId\") : undefined;\n const apiDefinitionId = metaStr(seg.metadata, \"apiDefinitionId\") ?? \"\";\n const slug = ctx.contentSlug(overview?.fullPath ?? nav[0]?.fullPath ?? seg.section);\n\n const children = buildApiChildren(ctx, scoped, scopeSegs, apiDefinitionId);\n\n return {\n type: \"apiReference\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`api:${slug}`),\n title: metaStr(seg.metadata, \"title\") ?? \"\",\n slug,\n icon: metaStr(seg.metadata, \"icon\"),\n hidden: seg.hidden,\n viewers: mergeVariantViewers(seg)\n }),\n apiDefinitionId: FernNavigation.ApiDefinitionId(apiDefinitionId),\n availability: undefined,\n overviewPageId: overviewPageId != null ? FernNavigation.PageId(overviewPageId) : undefined,\n noindex: undefined,\n paginated: true,\n showErrors: metaBool(seg.metadata, \"showErrors\"),\n hideTitle: metaBool(seg.metadata, \"hideTitle\"),\n pointsTo: undefined,\n children,\n changelog: undefined,\n playground: undefined,\n postmanCollectionUrl: undefined\n };\n}\n\nfunction changelogNode(ctx: BuildContext, scoped: ScopedSegment): FernNavigation.ChangelogNode {\n const { seg, nav } = scoped;\n const overview = overviewRoute(nav);\n const overviewPageId = overview != null ? metaStr(overview.metadata, \"pageId\") : undefined;\n\n // Group changelog entries by year → month. Entry dates are ISO strings.\n const entries = nav.filter((r) => r.type === \"changelog\");\n const byYear = new Map<number, Map<number, FernNavigation.ChangelogEntryNode[]>>();\n for (const r of entries) {\n const dateStr = metaStr(r.metadata, \"date\");\n const date = dateStr != null ? new Date(dateStr) : new Date(0);\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth() + 1;\n const entry: FernNavigation.ChangelogEntryNode = {\n type: \"changelogEntry\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`cl-entry:${r.fullPath ?? metaStr(r.metadata, \"pageId\") ?? \"\"}`),\n title: metaStr(r.metadata, \"title\") ?? \"\",\n slug: ctx.contentSlug(r.fullPath ?? \"\"),\n icon: metaStr(r.metadata, \"icon\"),\n hidden: r.hidden,\n viewers: toViewers(metaStrArr(r.metadata, \"viewers\"))\n }),\n pageId: FernNavigation.PageId(metaStr(r.metadata, \"pageId\") ?? \"\"),\n noindex: undefined,\n date: dateStr ?? \"\",\n tags: undefined\n };\n let months = byYear.get(year);\n if (months == null) {\n months = new Map();\n byYear.set(year, months);\n }\n const arr = months.get(month) ?? [];\n arr.push(entry);\n months.set(month, arr);\n }\n\n const baseSlug = ctx.contentSlug(overview?.fullPath ?? seg.section);\n const years: FernNavigation.ChangelogYearNode[] = [...byYear.entries()]\n .sort((a, b) => b[0] - a[0])\n .map(([year, months]) => ({\n type: \"changelogYear\" as const,\n ...withMetadataDefaults({\n id: ctx.nodeId(`cl-year:${baseSlug}/${year}`),\n title: String(year),\n slug: asSlug(`${baseSlug}/${year}`),\n icon: undefined,\n hidden: undefined\n }),\n year,\n children: [...months.entries()]\n .sort((a, b) => b[0] - a[0])\n .map(([month, children]) => ({\n type: \"changelogMonth\" as const,\n ...withMetadataDefaults({\n id: ctx.nodeId(`cl-month:${baseSlug}/${year}/${month}`),\n title: String(month),\n slug: asSlug(`${baseSlug}/${year}/${month}`),\n icon: undefined,\n hidden: undefined\n }),\n month,\n children\n }))\n }));\n\n return {\n type: \"changelog\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`changelog:${baseSlug}`),\n title: metaStr(seg.metadata, \"title\") ?? \"\",\n slug: baseSlug,\n icon: metaStr(seg.metadata, \"icon\"),\n hidden: seg.hidden,\n viewers: mergeVariantViewers(seg)\n }),\n overviewPageId: overviewPageId != null ? FernNavigation.PageId(overviewPageId) : undefined,\n noindex: undefined,\n children: years\n };\n}\n\n/** The immediate parent section path of a section path (\"a/b/c\" → \"a/b\", \"a\" → \"\"). */\nfunction parentSectionPath(sectionPath: string): string {\n const idx = sectionPath.lastIndexOf(\"/\");\n return idx === -1 ? \"\" : sectionPath.slice(0, idx);\n}\n\n/** Walk up the section path hierarchy to find the nearest ancestor that exists in the set. */\nfunction nearestExistingAncestor(sectionPath: string, existing: Set<string>): string {\n let current = parentSectionPath(sectionPath);\n while (current !== \"\") {\n if (existing.has(current)) {\n return current;\n }\n current = parentSectionPath(current);\n }\n return \"\";\n}\n\n/**\n * Build the section/api/changelog nodes whose immediate parent is `parentPath`,\n * recursing into nested sections. Also picks up orphaned segments whose parent\n * section doesn't exist but whose nearest existing ancestor is `parentPath`.\n */\nfunction buildSectionTree(\n ctx: BuildContext,\n scopeSegs: ScopedSegment[],\n parentPath: string\n): FernNavigation.NavigationChild[] {\n const sectionPaths = new Set(scopeSegs.map((s) => s.seg.section));\n const direct = scopeSegs\n .filter((s) => {\n const sec = s.seg.section;\n const type = metaStr(s.seg.metadata, \"type\");\n if (sec === \"\" || type === \"tabRoot\") {\n return false;\n }\n const parent = parentSectionPath(sec);\n if (parent === parentPath) {\n return true;\n }\n // Orphaned segment: parent doesn't exist, walk up to find nearest\n // existing ancestor. If it's parentPath, adopt this segment.\n if (!sectionPaths.has(parent)) {\n return nearestExistingAncestor(sec, sectionPaths) === parentPath;\n }\n return false;\n })\n .sort((a, b) => a.seg.sortOrder - b.seg.sortOrder);\n\n return direct.map((s) => {\n const type = metaStr(s.seg.metadata, \"type\");\n if (type === \"apiReference\" || type === \"apiPackage\") {\n return apiReferenceNode(ctx, s, scopeSegs);\n }\n if (type === \"changelog\") {\n return changelogNode(ctx, s);\n }\n // section (or unrecognised) → recurse for nested sections.\n return sectionNode(ctx, s, buildSectionTree(ctx, scopeSegs, s.seg.section));\n });\n}\n\n// ── build a sidebarRoot for a single scope ─────────────────────────────────\n\n/**\n * Assemble the children of a scope's sidebar root in cross-segment order.\n * `tabRoot` segments contribute their page/link artifacts inline at their\n * sort position; depth-0 `section`/`apiReference`/`changelog` segments become\n * their own nodes (with nested sections attached recursively).\n *\n * Segments whose parent section path doesn't correspond to any existing\n * segment are \"orphaned\" and emitted at the top level. This happens when\n * the publish transform skips segment creation for an apiReference with no\n * direct artifacts (e.g. no overview page), leaving only apiPackage children\n * like `rest-api/store` with no `rest-api` parent segment.\n */\nfunction buildSidebarRootChildren(ctx: BuildContext, scopeSegs: ScopedSegment[]): FernNavigation.SidebarRootChild[] {\n const ordered = [...scopeSegs].sort((a, b) => a.seg.sortOrder - b.seg.sortOrder);\n const sectionPaths = new Set(ordered.map((s) => s.seg.section));\n const flat: FernNavigation.NavigationChild[] = [];\n\n for (const s of ordered) {\n const type = metaStr(s.seg.metadata, \"type\");\n const sec = s.seg.section;\n\n if (type === \"tabRoot\" || sec === \"\") {\n // Top-level pages/links of this sidebar root, in nav order.\n for (const r of s.nav) {\n const node = artifactToNode(ctx, r);\n if (node != null) {\n flat.push(node);\n }\n }\n continue;\n }\n\n // Emit segments at root level if they are depth-0 OR orphaned (nearest\n // existing ancestor is root \"\"). Deeper segments with existing parents\n // are attached via buildSectionTree recursion.\n const parent = parentSectionPath(sec);\n const isRootLevel =\n parent === \"\" || (!sectionPaths.has(parent) && nearestExistingAncestor(sec, sectionPaths) === \"\");\n if (isRootLevel) {\n if (type === \"apiReference\" || type === \"apiPackage\") {\n flat.push(apiReferenceNode(ctx, s, scopeSegs));\n } else if (type === \"changelog\") {\n flat.push(changelogNode(ctx, s));\n } else {\n flat.push(sectionNode(ctx, s, buildSectionTree(ctx, scopeSegs, sec)));\n }\n }\n }\n\n return groupSidebarRootChildren(ctx, flat);\n}\n\n/**\n * `SidebarRootChild` only permits SidebarGroupNode / ApiReferenceNode /\n * SectionNode / VariantedNode. Non-collapsible sections and apiReferences\n * pass through as direct root children (rendered as static headings);\n * collapsible sections, pages, links, and changelogs are wrapped into a\n * SidebarGroupNode so they render via SidebarNavigationChild → collapsible\n * (mirroring the V1→latest migration in NavigationConfigConverter).\n */\nfunction groupSidebarRootChildren(\n ctx: BuildContext,\n children: FernNavigation.NavigationChild[]\n): FernNavigation.SidebarRootChild[] {\n const out: FernNavigation.SidebarRootChild[] = [];\n let run: FernNavigation.NavigationChild[] = [];\n\n const flushRun = () => {\n if (run.length > 0) {\n // Key off the first child's (already-stable) id so the group id is\n // stable across builds and unique per run.\n out.push({\n type: \"sidebarGroup\",\n id: ctx.nodeId(`sidebar-group:${run[0]?.id ?? \"\"}`),\n collapsed: undefined,\n children: run\n });\n run = [];\n }\n };\n\n for (const child of children) {\n if (child.type === \"apiReference\" || child.type === \"varianted\") {\n flushRun();\n out.push(child);\n } else if (\n child.type === \"section\" &&\n (child.collapsible === false || (child.collapsible == null && child.collapsed === false))\n ) {\n // Match SidebarVariantedNode's isStaticHeader logic: a section\n // is a static root heading only when explicitly non-collapsible\n // or when collapsible is unset and collapsed is explicitly false.\n flushRun();\n out.push(child);\n } else {\n run.push(child);\n }\n }\n flushRun();\n return out;\n}\n\nfunction buildSidebarRoot(ctx: BuildContext, scopeSegs: ScopedSegment[]): FernNavigation.SidebarRootNode {\n const first = scopeSegs[0];\n return {\n type: \"sidebarRoot\",\n id: ctx.nodeId(`sidebar:${first != null ? scopeKey(first.seg) : \"root\"}`),\n collapsed: undefined,\n children: buildSidebarRootChildren(ctx, scopeSegs)\n };\n}\n\n// ── public entrypoint ───────────────────────────────────────────────────────\n\n/**\n * Build a full (un-pruned) `RootNode` from the decomposed ledger model.\n */\nexport function buildFullRootFromSegments(options: BuildRootOptions): FernNavigation.RootNode {\n const { basePath, title, segments, navBySegment } = options;\n // Per-call state — never shared across concurrent builds.\n const ctx = createBuildContext(basePath);\n\n const scoped: ScopedSegment[] = segments\n // Infrastructure segments (files/redirects) are filtered server-side,\n // but guard here too.\n .filter((seg) => {\n const t = metaStr(seg.metadata, \"type\");\n return t !== \"files\" && t !== \"redirects\";\n })\n .map((seg) => ({ seg, nav: navBySegment.get(seg.segmentHash) ?? [] }));\n\n const rootSlug = asSlug(basePath);\n\n // Group by scope identity.\n const scopesByKey = new Map<string, ScopedSegment[]>();\n for (const s of scoped) {\n const key = scopeKey(s.seg);\n const arr = scopesByKey.get(key) ?? [];\n arr.push(s);\n scopesByKey.set(key, arr);\n }\n\n const products = uniqueDetails(scoped, \"product\");\n const versions = uniqueDetails(scoped, \"version\");\n const tabs = uniqueDetails(scoped, \"tab\");\n\n let child: FernNavigation.RootChild;\n\n if (products.length > 0) {\n child = buildProductGroup(ctx, products, scoped, rootSlug);\n } else if (versions.length > 0) {\n child = buildVersioned(ctx, versions, scoped, rootSlug, undefined);\n } else {\n child = buildUnversioned(ctx, scoped, rootSlug, tabs.length > 0);\n }\n\n // Derive root.pointsTo from the default child's metadata so root-slug\n // visits redirect correctly even when mutableUpdatePointsTo is skipped\n // (structure-only roots). On the full root mutableUpdatePointsTo\n // recomputes this via tree traversal; this seed value is only visible\n // on structure-only roots where the traversal is intentionally skipped.\n let rootPointsTo: FernNavigation.Slug | undefined;\n if (child.type === \"productgroup\") {\n const defaultProduct = child.children.find((p) => p.default) ?? child.children[0];\n rootPointsTo = defaultProduct?.type === \"product\" ? defaultProduct.pointsTo : undefined;\n } else if (child.type === \"versioned\") {\n const defaultVersion = child.children.find((v) => v.default) ?? child.children[0];\n rootPointsTo = defaultVersion?.pointsTo;\n }\n\n const root: FernNavigation.RootNode = {\n type: \"root\",\n version: \"v2\",\n ...withMetadataDefaults({ id: ctx.nodeId(\"root\"), title, slug: rootSlug, icon: undefined, hidden: undefined }),\n roles: undefined,\n pointsTo: rootPointsTo,\n child\n };\n\n return root;\n}\n\n// ── scaffolding builders ────────────────────────────────────────────────────\n\n/**\n * Collapse segment details by logical slug identity (not DB id).\n * Old publishes can leave stale detail rows that share the same slug\n * but lack metadata fields (e.g. `pointsTo`). When duplicates exist\n * we prefer the detail with the most complete metadata.\n */\nfunction uniqueDetails(scoped: ScopedSegment[], dim: \"product\" | \"version\" | \"tab\"): SegmentDetail[] {\n const bySlug = new Map<string, SegmentDetail>();\n for (const s of scoped) {\n const d = s.seg[dim];\n if (d == null) {\n continue;\n }\n const slug = detailSlug(d);\n const existing = bySlug.get(slug);\n if (existing == null) {\n bySlug.set(slug, d);\n } else if (metaStr(d.metadata, \"pointsTo\") != null && metaStr(existing.metadata, \"pointsTo\") == null) {\n bySlug.set(slug, d);\n }\n }\n return [...bySlug.values()].sort((a, b) => a.sortOrder - b.sortOrder);\n}\n\nfunction scopeSlugPrefix(rootSlug: FernNavigation.Slug, ...details: (SegmentDetail | null | undefined)[]): string {\n const parts: string[] = [rootSlug];\n for (const d of details) {\n if (d != null && !detailIsDefault(d)) {\n const s = detailSlug(d);\n if (s !== \"\") {\n parts.push(s);\n }\n }\n }\n return FernNavigation.slugjoin(...parts);\n}\n\nfunction buildTabbedOrSidebar(\n ctx: BuildContext,\n scopeSegs: ScopedSegment[],\n tabsPresent: boolean\n): FernNavigation.SidebarRootNode | FernNavigation.TabbedNode {\n if (!tabsPresent) {\n return buildSidebarRoot(ctx, scopeSegs);\n }\n // Group this scope's segments by tab.\n const tabDetails = uniqueDetails(scopeSegs, \"tab\");\n const children: FernNavigation.TabChild[] = tabDetails.map((tab): FernNavigation.TabChild => {\n const tabType = metaStr(tab.metadata, \"tab_type\");\n const tabSlug = asSlug(scopeSlugPrefix(FernNavigation.Slug(\"\"), tab));\n\n if (tabType === \"link\") {\n return {\n type: \"link\",\n id: ctx.nodeId(`link:${metaStr(tab.metadata, \"url\") ?? tabSlug}`),\n collapsed: undefined,\n title: tab.displayName,\n icon: tab.icon ?? undefined,\n url: FernNavigation.Url(metaStr(tab.metadata, \"url\") ?? \"\"),\n target: undefined\n };\n }\n\n if (tabType === \"changelog\") {\n const tabSegs = scopeSegs.filter((s) => s.seg.tab?.id === tab.id);\n const changelogSeg = tabSegs.find((s) => metaStr(s.seg.metadata, \"type\") === \"changelog\");\n if (changelogSeg != null) {\n return changelogNode(ctx, changelogSeg);\n }\n // Fallback: empty changelog node for the tab\n return {\n type: \"changelog\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`changelog:${tabSlug}`),\n title: tab.displayName,\n slug: tabSlug,\n icon: tab.icon ?? undefined,\n hidden: tab.hidden,\n viewers: toViewers(tab.viewers)\n }),\n overviewPageId: undefined,\n noindex: undefined,\n children: []\n };\n }\n\n // Default: regular tab\n const tabSegs = scopeSegs.filter((s) => s.seg.tab?.id === tab.id);\n const metaPointsTo = metaStr(tab.metadata, \"pointsTo\");\n return {\n type: \"tab\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`tab:${tabSlug}`),\n title: tab.displayName,\n slug: tabSlug,\n icon: tab.icon ?? undefined,\n hidden: tab.hidden,\n viewers: toViewers(tab.viewers)\n }),\n pointsTo: metaPointsTo != null ? ctx.contentSlug(metaPointsTo) : undefined,\n child: buildSidebarRoot(ctx, tabSegs)\n };\n });\n const first = scopeSegs[0];\n return {\n type: \"tabbed\",\n id: ctx.nodeId(`tabbed:${first != null ? scopeKey(first.seg) : \"root\"}`),\n collapsed: undefined,\n children\n };\n}\n\nfunction buildUnversioned(\n ctx: BuildContext,\n scopeSegs: ScopedSegment[],\n rootSlug: FernNavigation.Slug,\n tabsPresent: boolean\n): FernNavigation.UnversionedNode {\n void rootSlug;\n const first = scopeSegs[0];\n return {\n type: \"unversioned\",\n id: ctx.nodeId(`unversioned:${first?.seg.product?.id ?? \"root\"}`),\n collapsed: undefined,\n landingPage: undefined,\n child: buildTabbedOrSidebar(ctx, scopeSegs, tabsPresent)\n };\n}\n\nfunction buildVersioned(\n ctx: BuildContext,\n versions: SegmentDetail[],\n scoped: ScopedSegment[],\n rootSlug: FernNavigation.Slug,\n productPrefix: string | undefined\n): FernNavigation.VersionedNode {\n const children: FernNavigation.VersionNode[] = versions.map((version) => {\n const versionSegs = scoped.filter((s) => s.seg.version?.id === version.id);\n const tabsPresent = uniqueDetails(versionSegs, \"tab\").length > 0;\n const prefix = productPrefix != null ? productPrefix : (rootSlug as string);\n const slug = version.metadata != null && detailIsDefault(version) ? prefix : scopeSlugPrefix(rootSlug, version);\n const node: FernNavigation.VersionNode = {\n type: \"version\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`version:${slug}`),\n title: version.displayName,\n slug: asSlug(slug),\n icon: version.icon ?? undefined,\n hidden: version.hidden,\n viewers: toViewers(version.viewers)\n }),\n default: detailIsDefault(version),\n versionId: FernNavigation.VersionId(version.id),\n availability: undefined,\n landingPage: undefined,\n announcement: undefined,\n pointsTo:\n metaStr(version.metadata, \"pointsTo\") != null\n ? ctx.contentSlug(metaStr(version.metadata, \"pointsTo\")!)\n : undefined,\n child: buildTabbedOrSidebar(ctx, versionSegs, tabsPresent)\n };\n return node;\n });\n return {\n type: \"versioned\",\n id: ctx.nodeId(`versioned:${productPrefix ?? \"root\"}`),\n collapsed: undefined,\n children\n };\n}\n\nfunction buildProductGroup(\n ctx: BuildContext,\n products: SegmentDetail[],\n scoped: ScopedSegment[],\n rootSlug: FernNavigation.Slug\n): FernNavigation.ProductGroupNode {\n const children: FernNavigation.ProductNode[] = products.map((product) => {\n const productSegs = scoped.filter((s) => s.seg.product?.id === product.id);\n const versions = uniqueDetails(productSegs, \"version\");\n const tabsPresent = uniqueDetails(productSegs, \"tab\").length > 0;\n const productPrefix = scopeSlugPrefix(rootSlug, product);\n\n // ProductChild is VersionedNode | UnversionedNode — a version-less\n // product wraps its sidebar/tabs in an UnversionedNode.\n const productChild: FernNavigation.ProductChild =\n versions.length > 0\n ? buildVersioned(ctx, versions, productSegs, rootSlug, productPrefix)\n : buildUnversioned(ctx, productSegs, rootSlug, tabsPresent);\n\n const node: FernNavigation.InternalProductNode = {\n type: \"product\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`product:${productPrefix}`),\n title: product.displayName,\n slug: asSlug(detailIsDefault(product) ? (rootSlug as string) : productPrefix),\n icon: product.icon ?? undefined,\n hidden: product.hidden,\n viewers: toViewers(product.viewers)\n }),\n default: detailIsDefault(product),\n productId: FernNavigation.ProductId(product.id),\n subtitle: metaStr(product.metadata, \"subtitle\") ?? \"\",\n image: undefined,\n announcement: undefined,\n pointsTo:\n metaStr(product.metadata, \"pointsTo\") != null\n ? ctx.contentSlug(metaStr(product.metadata, \"pointsTo\")!)\n : undefined,\n child: productChild\n };\n return node;\n });\n return {\n type: \"productgroup\",\n id: ctx.nodeId(\"productgroup\"),\n collapsed: undefined,\n landingPage: undefined,\n children\n };\n}\n\n// (root keeps the bare \"root\" id; it is the single tree root.)\n"],"mappings":"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","names":["z","part","segmentApiDefinitionId","tabSegs"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/orpc-client/api/shared.ts","../../../src/orpc-client/shared.ts","../../../src/navigation/types/latest.ts","../../../../commons/core-utils/src/isNonNullish.ts","../../../src/navigation/versions/latest/slugjoin.ts","../../../src/navigation/ledger-root-builder.ts"],"sourcesContent":["import * as z from \"zod\";\nimport { ApiDefinitionIdSchema, HttpMethod, HttpMethodSchema } from \"../shared.js\";\n\nexport { ApiDefinitionIdSchema, HttpMethod, HttpMethodSchema };\n\nexport const TypeIdSchema = z.string();\nexport type TypeId = z.infer<typeof TypeIdSchema>;\nexport function TypeId(value: string): TypeId {\n return value;\n}\n\nexport const EndpointIdSchema = z.string();\nexport type EndpointId = z.infer<typeof EndpointIdSchema>;\nexport function EndpointId(value: string): EndpointId {\n return value;\n}\n\nexport const WebSocketIdSchema = z.string();\nexport type WebSocketId = z.infer<typeof WebSocketIdSchema>;\nexport function WebSocketId(value: string): WebSocketId {\n return value;\n}\n\nexport const WebhookIdSchema = z.string();\nexport type WebhookId = z.infer<typeof WebhookIdSchema>;\nexport function WebhookId(value: string): WebhookId {\n return value;\n}\n\nexport const GraphQlOperationIdSchema = z.string();\nexport type GraphQlOperationId = z.infer<typeof GraphQlOperationIdSchema>;\nexport function GraphQlOperationId(value: string): GraphQlOperationId {\n return value;\n}\n\nexport const GraphQlTypeCategorySchema = z.enum([\"object\", \"input\", \"enum\", \"scalar\", \"interface\", \"union\"]);\nexport type GraphQlTypeCategory = z.infer<typeof GraphQlTypeCategorySchema>;\n\nexport const EnvironmentIdSchema = z.string();\nexport type EnvironmentId = z.infer<typeof EnvironmentIdSchema>;\nexport function EnvironmentId(value: string): EnvironmentId {\n return value;\n}\n\nexport const PropertyKeySchema = z.string();\nexport type PropertyKey = z.infer<typeof PropertyKeySchema>;\nexport function PropertyKey(value: string): PropertyKey {\n return value;\n}\n\nexport const AuthSchemeIdSchema = z.string();\nexport type AuthSchemeId = z.infer<typeof AuthSchemeIdSchema>;\nexport function AuthSchemeId(value: string): AuthSchemeId {\n return value;\n}\n\nexport const SubpackageIdSchema = z.string();\nexport type SubpackageId = z.infer<typeof SubpackageIdSchema>;\nexport function SubpackageId(value: string): SubpackageId {\n return value;\n}\n\nexport const WebSocketMessageIdSchema = z.string();\nexport type WebSocketMessageId = z.infer<typeof WebSocketMessageIdSchema>;\nexport function WebSocketMessageId(value: string): WebSocketMessageId {\n return value;\n}\n\nexport const FileIdSchema: z.ZodType<FileId> = z.string() as any;\nexport type FileId = string & { FileId: void };\nexport function FileId(value: string): FileId {\n return value as unknown as FileId;\n}\n\nexport const MultipleAuthTypeSchema = z.object({\n schemes: z.array(AuthSchemeIdSchema)\n});\nexport type MultipleAuthType = z.infer<typeof MultipleAuthTypeSchema>;\n\nexport const GrpcMethodSchema = z.enum([\"UNARY\", \"CLIENT_STREAM\", \"SERVER_STREAM\", \"BIDIRECTIONAL_STREAM\"]);\n\nexport const AvailabilitySchema = z.enum([\n \"Alpha\",\n \"Stable\",\n \"GenerallyAvailable\",\n \"InDevelopment\",\n \"PreRelease\",\n \"Deprecated\",\n \"Beta\",\n \"Preview\",\n \"Legacy\"\n]);\n\nexport const WebSocketMessageOriginSchema = z.enum([\"client\", \"server\"]);\nexport type WebSocketMessageOrigin = z.infer<typeof WebSocketMessageOriginSchema>;\n\nexport const WebhookHttpMethodSchema = z.enum([\"GET\", \"POST\"]);\nexport type WebhookHttpMethod = z.infer<typeof WebhookHttpMethodSchema>;\n\nexport const WithDescriptionSchema = z.object({\n description: z.string().nullish()\n});\nexport type WithDescription = z.infer<typeof WithDescriptionSchema>;\n\nexport const WithAvailabilitySchema = z.object({\n availability: AvailabilitySchema.nullish()\n});\nexport type WithAvailability = z.infer<typeof WithAvailabilitySchema>;\n\nexport const EnvironmentSchema = z.object({\n id: EnvironmentIdSchema,\n baseUrl: z.string(),\n audiences: z.array(z.string()).nullish()\n});\nexport type Environment = z.infer<typeof EnvironmentSchema>;\n\nexport const RestProtocolSchema = z.object({});\n\nexport const OpenRpcProtocolSchema = z.object({\n methodName: z.string()\n});\n\nexport const GrpcProtocolSchema = z.object({\n methodName: z.string(),\n methodType: GrpcMethodSchema.nullish()\n});\n\nexport const ProtocolSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"rest\"), ...RestProtocolSchema.shape }),\n z.object({ type: z.literal(\"openrpc\"), ...OpenRpcProtocolSchema.shape }),\n z.object({ type: z.literal(\"grpc\"), ...GrpcProtocolSchema.shape })\n]);\nexport type Protocol = z.infer<typeof ProtocolSchema>;\n\nexport const ObjectPropertyAccessSchema = z.enum([\"READ_ONLY\", \"WRITE_ONLY\"]);\nexport type ObjectPropertyAccess = z.infer<typeof ObjectPropertyAccessSchema>;\n\nexport const TypeReferenceIdDefaultSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"enum\"), value: z.string() })\n]);\nexport type TypeReferenceIdDefault = z.infer<typeof TypeReferenceIdDefaultSchema>;\n\nconst _numberNullish = z.number().nullish();\nconst _numberIntNullish = z.number().int().nullish();\n\nfunction coerceNumber(val: unknown): unknown {\n if (typeof val === \"string\" && val.trim() !== \"\") {\n const num = Number(val);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n return val;\n}\n\nconst coercedNumberNullish = z.preprocess(coerceNumber, z.number().nullish()) as unknown as typeof _numberNullish;\nconst coercedNumberIntNullish = z.preprocess(\n coerceNumber,\n z.number().int().nullish()\n) as unknown as typeof _numberIntNullish;\n\nexport const IntegerTypeSchema = z.object({\n minimum: coercedNumberIntNullish,\n maximum: coercedNumberIntNullish,\n exclusiveMinimum: coercedNumberIntNullish,\n exclusiveMaximum: coercedNumberIntNullish,\n multipleOf: coercedNumberIntNullish,\n default: coercedNumberIntNullish\n});\nexport type IntegerType = z.infer<typeof IntegerTypeSchema>;\n\nexport const DoubleTypeSchema = z.object({\n minimum: coercedNumberNullish,\n maximum: coercedNumberNullish,\n exclusiveMinimum: coercedNumberNullish,\n exclusiveMaximum: coercedNumberNullish,\n multipleOf: coercedNumberNullish,\n default: coercedNumberNullish\n});\nexport type DoubleType = z.infer<typeof DoubleTypeSchema>;\n\nexport const StringTypeSchema = z.object({\n format: z.string().nullish(),\n regex: z.string().nullish(),\n minLength: z.number().int().nullish(),\n maxLength: z.number().int().nullish(),\n default: z.string().nullish()\n});\nexport type StringType = z.infer<typeof StringTypeSchema>;\n\nexport const LongTypeSchema = z.object({\n minimum: coercedNumberNullish,\n maximum: coercedNumberNullish,\n exclusiveMinimum: coercedNumberNullish,\n exclusiveMaximum: coercedNumberNullish,\n multipleOf: coercedNumberNullish,\n default: coercedNumberNullish\n});\nexport type LongType = z.infer<typeof LongTypeSchema>;\n\nconst _booleanNullish = z.boolean().nullish();\n\nexport const BooleanTypeSchema = z.object({\n default: z.preprocess((val) => {\n if (typeof val === \"string\") {\n if (val.toLowerCase() === \"true\") {\n return true;\n }\n if (val.toLowerCase() === \"false\") {\n return false;\n }\n }\n return val;\n }, z.boolean().nullish()) as unknown as typeof _booleanNullish\n});\nexport type BooleanType = z.infer<typeof BooleanTypeSchema>;\n\nexport const DatetimeTypeSchema = z.object({\n default: z.string().nullish()\n});\nexport type DatetimeType = z.infer<typeof DatetimeTypeSchema>;\n\nexport const UuidTypeSchema = z.object({\n default: z.string().nullish()\n});\nexport type UuidType = z.infer<typeof UuidTypeSchema>;\n\nexport const Base64TypeSchema = z.object({\n default: z.string().nullish(),\n mimeType: z.string().nullish()\n});\nexport type Base64Type = z.infer<typeof Base64TypeSchema>;\n\nexport const DateTypeSchema = z.object({\n default: z.string().nullish()\n});\nexport type DateType = z.infer<typeof DateTypeSchema>;\n\nexport const BigIntegerTypeSchema = z.object({\n default: z.string().nullish()\n});\nexport type BigIntegerType = z.infer<typeof BigIntegerTypeSchema>;\n\nexport const UintTypeSchema = z.object({\n minimum: coercedNumberIntNullish,\n maximum: coercedNumberIntNullish,\n exclusiveMinimum: coercedNumberIntNullish,\n exclusiveMaximum: coercedNumberIntNullish,\n multipleOf: coercedNumberIntNullish,\n default: coercedNumberIntNullish\n});\nexport type UintType = z.infer<typeof UintTypeSchema>;\n\nexport const Uint64TypeSchema = z.object({\n minimum: coercedNumberNullish,\n maximum: coercedNumberNullish,\n exclusiveMinimum: coercedNumberNullish,\n exclusiveMaximum: coercedNumberNullish,\n multipleOf: coercedNumberNullish,\n default: coercedNumberNullish\n});\nexport type Uint64Type = z.infer<typeof Uint64TypeSchema>;\n\nexport const ScalarTypeSchema = z.object({\n name: z.string(),\n description: z.string().nullish(),\n default: z.unknown().nullish()\n});\nexport type ScalarType = z.infer<typeof ScalarTypeSchema>;\n\nexport const PrimitiveTypeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"integer\"), ...IntegerTypeSchema.shape }),\n z.object({ type: z.literal(\"double\"), ...DoubleTypeSchema.shape }),\n z.object({ type: z.literal(\"string\"), ...StringTypeSchema.shape }),\n z.object({ type: z.literal(\"long\"), ...LongTypeSchema.shape }),\n z.object({ type: z.literal(\"boolean\"), ...BooleanTypeSchema.shape }),\n z.object({ type: z.literal(\"datetime\"), ...DatetimeTypeSchema.shape }),\n z.object({ type: z.literal(\"uuid\"), ...UuidTypeSchema.shape }),\n z.object({ type: z.literal(\"base64\"), ...Base64TypeSchema.shape }),\n z.object({ type: z.literal(\"date\"), ...DateTypeSchema.shape }),\n z.object({ type: z.literal(\"bigInteger\"), ...BigIntegerTypeSchema.shape }),\n z.object({ type: z.literal(\"uint\"), ...UintTypeSchema.shape }),\n z.object({ type: z.literal(\"uint64\"), ...Uint64TypeSchema.shape }),\n z.object({ type: z.literal(\"scalar\"), ...ScalarTypeSchema.shape })\n]);\nexport type PrimitiveType = z.infer<typeof PrimitiveTypeSchema>;\n\nexport const LiteralTypeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"booleanLiteral\"), value: z.boolean() }),\n z.object({ type: z.literal(\"stringLiteral\"), value: z.string() })\n]);\nexport type LiteralType = z.infer<typeof LiteralTypeSchema>;\n\nexport type TypeReference =\n | TypeReference.Id\n | TypeReference.Primitive\n | TypeReference.Optional\n | TypeReference.Nullable\n | TypeReference.List\n | TypeReference.Set\n | TypeReference.Map\n | TypeReference.Literal\n | TypeReference.Unknown;\n\nexport namespace TypeReference {\n export interface Id {\n type: \"id\";\n value: string;\n default?: TypeReferenceIdDefault | null;\n }\n export interface Primitive {\n type: \"primitive\";\n value: PrimitiveType;\n }\n export interface Optional {\n type: \"optional\";\n itemType: TypeReference;\n defaultValue?: unknown | null;\n }\n export interface Nullable {\n type: \"nullable\";\n itemType: TypeReference;\n }\n export interface List {\n type: \"list\";\n itemType: TypeReference;\n minItems?: number | null;\n maxItems?: number | null;\n }\n export interface Set {\n type: \"set\";\n itemType: TypeReference;\n minItems?: number | null;\n maxItems?: number | null;\n }\n export interface Map {\n type: \"map\";\n keyType: TypeReference;\n valueType: TypeReference;\n minProperties?: number | null;\n maxProperties?: number | null;\n }\n export interface Literal {\n type: \"literal\";\n value: LiteralType;\n }\n export interface Unknown {\n type: \"unknown\";\n }\n}\n\nexport const TypeReferenceSchema: z.ZodType<TypeReference> = z.lazy(() =>\n z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"id\"),\n value: TypeIdSchema,\n default: TypeReferenceIdDefaultSchema.nullish()\n }),\n z.object({\n type: z.literal(\"primitive\"),\n value: PrimitiveTypeSchema\n }),\n z.object({\n type: z.literal(\"optional\"),\n itemType: TypeReferenceSchema,\n defaultValue: z.unknown().nullish()\n }),\n z.object({\n type: z.literal(\"nullable\"),\n itemType: TypeReferenceSchema\n }),\n z.object({\n type: z.literal(\"list\"),\n itemType: TypeReferenceSchema,\n minItems: z.number().int().nullish(),\n maxItems: z.number().int().nullish()\n }),\n z.object({\n type: z.literal(\"set\"),\n itemType: TypeReferenceSchema,\n minItems: z.number().int().nullish(),\n maxItems: z.number().int().nullish()\n }),\n z.object({\n type: z.literal(\"map\"),\n keyType: TypeReferenceSchema,\n valueType: TypeReferenceSchema,\n minProperties: z.number().int().nullish(),\n maxProperties: z.number().int().nullish()\n }),\n z.object({\n type: z.literal(\"literal\"),\n value: LiteralTypeSchema\n }),\n z.object({\n type: z.literal(\"unknown\")\n })\n ])\n);\n\nexport interface GraphQlArgument {\n description?: string | null;\n availability?: z.infer<typeof AvailabilitySchema> | null;\n name: string;\n type: TypeReference;\n defaultValue?: unknown | null;\n}\nexport const GraphQlArgumentSchema: z.ZodType<GraphQlArgument> = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n name: z.string(),\n type: TypeReferenceSchema,\n defaultValue: z.unknown().nullish()\n});\n\nexport const ObjectPropertySchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: PropertyKeySchema,\n valueType: TypeReferenceSchema,\n propertyAccess: ObjectPropertyAccessSchema.nullish(),\n arguments: z.array(GraphQlArgumentSchema).nullish()\n});\nexport type ObjectProperty = z.infer<typeof ObjectPropertySchema>;\n\nexport const ObjectTypeSchema = z.object({\n extends: z.array(TypeIdSchema),\n properties: z.array(ObjectPropertySchema),\n extraProperties: TypeReferenceSchema.nullish()\n});\nexport type ObjectType = z.infer<typeof ObjectTypeSchema>;\n\nexport const EnumValueSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n value: z.string()\n});\nexport type EnumValue = z.infer<typeof EnumValueSchema>;\n\nexport const EnumTypeSchema = z.object({\n default: z.string().nullish(),\n values: z.array(EnumValueSchema)\n});\nexport type EnumType = z.infer<typeof EnumTypeSchema>;\n\nexport const DiscriminatedUnionVariantSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n discriminantValue: z.string(),\n displayName: z.string().nullish(),\n additionalProperties: ObjectTypeSchema\n});\nexport type DiscriminatedUnionVariant = z.infer<typeof DiscriminatedUnionVariantSchema>;\n\nexport const DiscriminatedUnionTypeSchema = z.object({\n discriminant: z.string(),\n variants: z.array(DiscriminatedUnionVariantSchema)\n});\nexport type DiscriminatedUnionType = z.infer<typeof DiscriminatedUnionTypeSchema>;\n\nexport const ContentTypeSchema = z.union([z.string(), z.array(z.string())]);\nexport type ContentType = z.infer<typeof ContentTypeSchema>;\n\nexport const FilePropertySingleSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: PropertyKeySchema,\n isOptional: z.boolean(),\n contentType: ContentTypeSchema.nullish()\n});\nexport type FilePropertySingle = z.infer<typeof FilePropertySingleSchema>;\n\nexport const FilePropertyArraySchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: PropertyKeySchema,\n isOptional: z.boolean(),\n contentType: ContentTypeSchema.nullish()\n});\nexport type FilePropertyArray = z.infer<typeof FilePropertyArraySchema>;\n\nexport const FormDataFilePropertySchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"file\"), ...FilePropertySingleSchema.shape }),\n z.object({ type: z.literal(\"fileArray\"), ...FilePropertyArraySchema.shape })\n]);\nexport type FormDataFileProperty = z.infer<typeof FormDataFilePropertySchema>;\n\nexport const FormDataBodyPropertySchema = z.object({\n ...ObjectPropertySchema.shape,\n contentType: ContentTypeSchema.nullish(),\n exploded: z.boolean().nullish()\n});\nexport type FormDataBodyProperty = z.infer<typeof FormDataBodyPropertySchema>;\n\nexport const FormDataPropertySchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"file\"), value: FormDataFilePropertySchema }),\n z.object({ type: z.literal(\"bodyProperty\"), ...FormDataBodyPropertySchema.shape })\n]);\nexport type FormDataProperty = z.infer<typeof FormDataPropertySchema>;\n\nexport const FormDataRequestSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n name: z.string(),\n properties: z.array(FormDataPropertySchema)\n});\nexport type FormDataRequest = z.infer<typeof FormDataRequestSchema>;\n\nexport const EndpointPathPartSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"literal\"), value: z.string() }),\n z.object({ type: z.literal(\"pathParameter\"), value: PropertyKeySchema })\n]);\nexport type EndpointPathPart = z.infer<typeof EndpointPathPartSchema>;\n\nexport const PathParameterSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: PropertyKeySchema,\n type: TypeReferenceSchema,\n explode: z.boolean().nullish()\n});\nexport type PathParameter = z.infer<typeof PathParameterSchema>;\n\nexport const EndpointPathSchema = z.object({\n parts: z.array(EndpointPathPartSchema),\n pathParameters: z.array(PathParameterSchema)\n});\nexport type EndpointPath = z.infer<typeof EndpointPathSchema>;\n\nexport const QueryParameterSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: z.string(),\n type: TypeReferenceSchema,\n explode: z.boolean().nullish()\n});\nexport type QueryParameter = z.infer<typeof QueryParameterSchema>;\n\nexport const HeaderSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n key: z.string(),\n type: TypeReferenceSchema\n});\nexport type Header = z.infer<typeof HeaderSchema>;\n\nexport const JsonBodyShapeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema })\n]);\nexport type JsonBodyShape = z.infer<typeof JsonBodyShapeSchema>;\n\nexport const FileDownloadResponseBodyShapeSchema = z.object({\n contentType: z.string().nullish()\n});\nexport type FileDownloadResponseBodyShape = z.infer<typeof FileDownloadResponseBodyShapeSchema>;\n\nexport const StreamResponseV2Schema = z.object({\n terminator: z.string().nullish(),\n shape: JsonBodyShapeSchema\n});\nexport type StreamResponseV2 = z.infer<typeof StreamResponseV2Schema>;\n\nexport const StreamConditionSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"booleanRequestProperty\"), value: PropertyKeySchema })\n]);\nexport type StreamCondition = z.infer<typeof StreamConditionSchema>;\n\nexport const FilenameWithDataSchema = z.object({\n filename: z.string(),\n data: FileIdSchema\n});\nexport type FilenameWithData = z.infer<typeof FilenameWithDataSchema>;\n\nexport const FormValueSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n z.object({ type: z.literal(\"filename\"), value: z.string() }),\n z.object({ type: z.literal(\"filenames\"), value: z.array(z.string()) }),\n z.object({ type: z.literal(\"filenameWithData\"), ...FilenameWithDataSchema.shape }),\n z.object({ type: z.literal(\"filenamesWithData\"), value: z.array(FilenameWithDataSchema) }),\n z.object({ type: z.literal(\"exploded\"), value: z.array(z.unknown()) })\n]);\nexport type FormValue = z.infer<typeof FormValueSchema>;\n\nexport const BytesValueSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"base64\"), value: z.string() })\n]);\nexport type BytesValue = z.infer<typeof BytesValueSchema>;\n\n// The form variant uses z.unknown() for record values instead of FormValueSchema to be\n// forward-compatible with new form value types and to tolerate form values produced by\n// the AI example enhancer (which may not conform to the strict FormValueSchema).\n// Example data is display-only and does not require strict validation at registration time.\nexport const ExampleEndpointRequestSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n z.object({ type: z.literal(\"form\"), value: z.record(z.string(), z.unknown()) }),\n z.object({ type: z.literal(\"bytes\"), value: BytesValueSchema })\n]);\nexport type ExampleEndpointRequest = z.infer<typeof ExampleEndpointRequestSchema>;\n\nexport const ExampleServerSentEventSchema = z.object({\n event: z.string(),\n data: z.unknown()\n});\nexport type ExampleServerSentEvent = z.infer<typeof ExampleServerSentEventSchema>;\n\nexport const ExampleEndpointResponseSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\"), value: z.unknown() }),\n z.object({ type: z.literal(\"filename\"), value: z.unknown() }),\n z.object({ type: z.literal(\"stream\"), value: z.array(z.unknown()) }),\n z.object({ type: z.literal(\"sse\"), value: z.array(ExampleServerSentEventSchema) })\n]);\nexport type ExampleEndpointResponse = z.infer<typeof ExampleEndpointResponseSchema>;\n\nexport const ErrorDeclarationSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n type: TypeReferenceSchema.nullish(),\n statusCode: z.number().int()\n});\nexport type ErrorDeclaration = z.infer<typeof ErrorDeclarationSchema>;\n\nexport const ExampleErrorResponseSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"json\"), value: z.unknown() })\n]);\nexport type ExampleErrorResponse = z.infer<typeof ExampleErrorResponseSchema>;\n\nexport const ErrorExampleSchema = z.object({\n description: z.string().nullish(),\n name: z.string().nullish(),\n responseBody: ExampleErrorResponseSchema\n});\nexport type ErrorExample = z.infer<typeof ErrorExampleSchema>;\n\nexport const GraphQlOperationTypeSchema = z.enum([\"QUERY\", \"MUTATION\", \"SUBSCRIPTION\"]);\nexport type GraphQlOperationType = z.infer<typeof GraphQlOperationTypeSchema>;\n\nexport const GraphQlExampleSchema = z.object({\n description: z.string().nullish(),\n name: z.string().nullish(),\n query: z.string(),\n variables: z.record(z.string(), z.unknown()).nullish(),\n response: z.unknown().nullish()\n});\nexport type GraphQlExample = z.infer<typeof GraphQlExampleSchema>;\n\nexport const CodeSnippetSchema = z.object({\n description: z.string().nullish(),\n name: z.string().nullish(),\n language: z.string(),\n install: z.string().nullish(),\n code: z.string(),\n generated: z.boolean()\n});\nexport type CodeSnippet = z.infer<typeof CodeSnippetSchema>;\n\nexport const GraphQlOperationSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n id: GraphQlOperationIdSchema,\n operationType: GraphQlOperationTypeSchema,\n name: z.string(),\n displayName: z.string().nullish(),\n fieldPath: z.array(z.string()).nullish(),\n arguments: z.array(GraphQlArgumentSchema).nullish(),\n returnType: TypeReferenceSchema,\n examples: z.array(GraphQlExampleSchema).nullish(),\n snippets: z.record(z.string(), z.array(CodeSnippetSchema)).nullish()\n});\nexport type GraphQlOperation = z.infer<typeof GraphQlOperationSchema>;\n\nexport const WebhookPayloadShapeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema }),\n z.object({ type: z.literal(\"formData\"), ...FormDataRequestSchema.shape })\n]);\nexport type WebhookPayloadShape = z.infer<typeof WebhookPayloadShapeSchema>;\n\nexport const WebhookPayloadSchema = z.object({\n description: z.string().nullish(),\n type: WebhookPayloadShapeSchema\n});\nexport type WebhookPayload = z.infer<typeof WebhookPayloadSchema>;\n\nexport const ExampleWebhookPayloadSchema = z.object({\n name: z.string().nullish(),\n payload: z.unknown()\n});\nexport type ExampleWebhookPayload = z.infer<typeof ExampleWebhookPayloadSchema>;\n\nexport const WebSocketMessageBodyShapeSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"object\"), ...ObjectTypeSchema.shape }),\n z.object({ type: z.literal(\"reference\"), value: TypeReferenceSchema })\n]);\nexport type WebSocketMessageBodyShape = z.infer<typeof WebSocketMessageBodyShapeSchema>;\n\nexport const WebSocketMessageSchema = z.object({\n description: z.string().nullish(),\n availability: AvailabilitySchema.nullish(),\n type: WebSocketMessageIdSchema,\n displayName: z.string().nullish(),\n origin: WebSocketMessageOriginSchema,\n body: WebSocketMessageBodyShapeSchema\n});\nexport type WebSocketMessage = z.infer<typeof WebSocketMessageSchema>;\n\nexport const ExampleWebSocketMessageSchema = z.object({\n type: WebSocketMessageIdSchema,\n body: z.unknown()\n});\nexport type ExampleWebSocketMessage = z.infer<typeof ExampleWebSocketMessageSchema>;\n\nexport const ExampleWebSocketSessionSchema = z.object({\n description: z.string().nullish(),\n name: z.string().nullish(),\n path: z.string(),\n pathParameters: z.record(PropertyKeySchema, z.unknown()),\n queryParameters: z.record(z.string(), z.unknown()),\n headers: z.record(z.string(), z.unknown()),\n messages: z.array(ExampleWebSocketMessageSchema)\n});\nexport type ExampleWebSocketSession = z.infer<typeof ExampleWebSocketSessionSchema>;\n\nexport type ApiNavigationConfigItem =\n | ApiNavigationConfigItem.Subpackage\n | ApiNavigationConfigItem.EndpointId\n | ApiNavigationConfigItem.WebsocketId\n | ApiNavigationConfigItem.WebhookId\n | ApiNavigationConfigItem.GraphqlOperationId;\n\nexport namespace ApiNavigationConfigItem {\n export interface Subpackage {\n type: \"subpackage\";\n subpackageId: string;\n items: ApiNavigationConfigItem[];\n }\n export interface EndpointId {\n type: \"endpointId\";\n value: string;\n }\n export interface WebsocketId {\n type: \"websocketId\";\n value: string;\n }\n export interface WebhookId {\n type: \"webhookId\";\n value: string;\n }\n export interface GraphqlOperationId {\n type: \"graphqlOperationId\";\n value: string;\n }\n}\n\nexport const ApiNavigationConfigItemSchema: z.ZodType<ApiNavigationConfigItem> = z.lazy(() =>\n z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"subpackage\"),\n subpackageId: SubpackageIdSchema,\n items: z.array(ApiNavigationConfigItemSchema)\n }),\n z.object({ type: z.literal(\"endpointId\"), value: EndpointIdSchema }),\n z.object({ type: z.literal(\"websocketId\"), value: WebSocketIdSchema }),\n z.object({ type: z.literal(\"webhookId\"), value: WebhookIdSchema }),\n z.object({ type: z.literal(\"graphqlOperationId\"), value: GraphQlOperationIdSchema })\n ])\n);\n\nexport const ApiNavigationConfigRootSchema = z.object({\n items: z.array(ApiNavigationConfigItemSchema)\n});\nexport type ApiNavigationConfigRoot = z.infer<typeof ApiNavigationConfigRootSchema>;\n\nexport const BearerAuthSchema = z.object({\n description: z.string().nullish(),\n tokenName: z.string().nullish()\n});\nexport type BearerAuth = z.infer<typeof BearerAuthSchema>;\n\nexport const BasicAuthSchema = z.object({\n description: z.string().nullish(),\n usernameName: z.string().nullish(),\n passwordName: z.string().nullish(),\n passwordAlwaysEmpty: z.boolean().nullish()\n});\nexport type BasicAuth = z.infer<typeof BasicAuthSchema>;\n\nexport const HeaderAuthSchema = z.object({\n description: z.string().nullish(),\n nameOverride: z.string().nullish(),\n headerWireValue: z.string(),\n prefix: z.string().nullish()\n});\nexport type HeaderAuth = z.infer<typeof HeaderAuthSchema>;\n\nexport const OAuthClientCredentialsReferencedEndpointSchema = z.object({\n description: z.string().nullish(),\n endpointId: EndpointIdSchema,\n accessTokenLocator: z.string(),\n headerName: z.string().nullish(),\n tokenPrefix: z.string().nullish()\n});\nexport type OAuthClientCredentialsReferencedEndpoint = z.infer<typeof OAuthClientCredentialsReferencedEndpointSchema>;\n\nexport const OAuthClientCredentialsSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"referencedEndpoint\"),\n ...OAuthClientCredentialsReferencedEndpointSchema.shape\n })\n]);\nexport type OAuthClientCredentials = z.infer<typeof OAuthClientCredentialsSchema>;\n\nexport const OAuthSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"clientCredentials\"), value: OAuthClientCredentialsSchema })\n]);\nexport type OAuth = z.infer<typeof OAuthSchema>;\n\nexport const ApiAuthSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"bearerAuth\"), ...BearerAuthSchema.shape }),\n z.object({ type: z.literal(\"basicAuth\"), ...BasicAuthSchema.shape }),\n z.object({ type: z.literal(\"header\"), ...HeaderAuthSchema.shape }),\n z.object({ type: z.literal(\"oAuth\"), value: OAuthSchema })\n]);\nexport type ApiAuth = z.infer<typeof ApiAuthSchema>;\n","import * as z from \"zod\";\n\n// ── Org / API identifiers ──────────────────────────────────────────────\n\nexport const OrgIdSchema = z.string();\nexport type OrgId = z.infer<typeof OrgIdSchema>;\nexport function OrgId(value: string): OrgId {\n return value;\n}\n\nexport const ApiIdSchema = z.string();\nexport type ApiId = z.infer<typeof ApiIdSchema>;\nexport function ApiId(value: string): ApiId {\n return value;\n}\n\nexport const ApiDefinitionIdSchema = z.string().uuid();\nexport type ApiDefinitionId = z.infer<typeof ApiDefinitionIdSchema>;\nexport function ApiDefinitionId(value: string): ApiDefinitionId {\n return value;\n}\n\n// ── HTTP / Endpoint schemas ─────────────────────────────────────────────\n\nexport const HttpMethodSchema = z.enum([\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\", \"HEAD\"]);\nexport type HttpMethod = z.infer<typeof HttpMethodSchema>;\n\nexport const HttpMethod = {\n Get: \"GET\",\n Post: \"POST\",\n Put: \"PUT\",\n Patch: \"PATCH\",\n Delete: \"DELETE\",\n Head: \"HEAD\"\n} as const;\n\nexport const UrlSchema: z.ZodType<Url> = z.string() as any;\nexport type Url = string & { Url: void };\nexport function Url(value: string): Url {\n return value as unknown as Url;\n}\n\nexport const EndpointPathLiteralSchema = z.string();\nexport type EndpointPathLiteral = z.infer<typeof EndpointPathLiteralSchema>;\nexport function EndpointPathLiteral(value: string): EndpointPathLiteral {\n return value;\n}\n\nexport const EndpointIdentifierSchema = z.object({\n path: z.string(),\n method: HttpMethodSchema,\n identifierOverride: z.string().nullish()\n});\nexport type EndpointIdentifier = z.infer<typeof EndpointIdentifierSchema>;\n\n// ── SDK request schema ──────────────────────────────────────────────────\n\nexport type SdkRequest =\n | { type: \"typescript\"; package: string; version: string | undefined }\n | { type: \"python\"; package: string; version: string | undefined }\n | { type: \"go\"; githubRepo: string; version: string | undefined }\n | { type: \"ruby\"; gem: string; version: string | undefined }\n | { type: \"java\"; group: string; artifact: string; version: string | undefined }\n | { type: \"csharp\"; package: string; version: string | undefined };\n\nexport const SdkRequestSchema: z.ZodType<SdkRequest> = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"typescript\"), package: z.string(), version: z.string().nullish() }),\n z.object({ type: z.literal(\"python\"), package: z.string(), version: z.string().nullish() }),\n z.object({ type: z.literal(\"go\"), githubRepo: z.string(), version: z.string().nullish() }),\n z.object({ type: z.literal(\"ruby\"), gem: z.string(), version: z.string().nullish() }),\n z.object({\n type: z.literal(\"java\"),\n group: z.string(),\n artifact: z.string(),\n version: z.string().nullish()\n }),\n z.object({ type: z.literal(\"csharp\"), package: z.string(), version: z.string().nullish() })\n]) as any;\n\n// ── Additional identifiers ─────────────────────────────────────────────\n\nexport const DocsConfigIdSchema = z.string();\nexport type DocsConfigId = z.infer<typeof DocsConfigIdSchema>;\nexport function DocsConfigId(value: string): DocsConfigId {\n return value;\n}\n\nexport const GrpcIdSchema = z.string();\nexport type GrpcId = z.infer<typeof GrpcIdSchema>;\nexport function GrpcId(value: string): GrpcId {\n return value;\n}\n\nexport const PageIdSchema = z.string();\nexport type PageId = z.infer<typeof PageIdSchema>;\nexport function PageId(value: string): PageId {\n return value;\n}\n\nexport const RoleIdSchema = z.string();\nexport type RoleId = z.infer<typeof RoleIdSchema>;\nexport function RoleId(value: string): RoleId {\n return value;\n}\n\nexport const TokenIdSchema = z.string();\nexport type TokenId = z.infer<typeof TokenIdSchema>;\n\nexport const VersionIdSchema = z.string();\nexport type VersionId = z.infer<typeof VersionIdSchema>;\nexport function VersionId(value: string): VersionId {\n return value;\n}\n\n// ── Enums ──────────────────────────────────────────────────────────────\n\nexport const LinkTarget = {\n Blank: \"_blank\",\n Self: \"_self\",\n Parent: \"_parent\",\n Top: \"_top\"\n} as const;\nexport type LinkTarget = (typeof LinkTarget)[keyof typeof LinkTarget];\n\nexport const GrpcMethod = {\n Unary: \"UNARY\",\n ClientStream: \"CLIENT_STREAM\",\n ServerStream: \"SERVER_STREAM\",\n BidirectionalStream: \"BIDIRECTIONAL_STREAM\"\n} as const;\nexport type GrpcMethod = (typeof GrpcMethod)[keyof typeof GrpcMethod];\n\nexport const Availability = {\n Alpha: \"Alpha\",\n Stable: \"Stable\",\n GenerallyAvailable: \"GenerallyAvailable\",\n InDevelopment: \"InDevelopment\",\n PreRelease: \"PreRelease\",\n Deprecated: \"Deprecated\",\n Beta: \"Beta\",\n Preview: \"Preview\",\n Legacy: \"Legacy\"\n} as const;\nexport type Availability = (typeof Availability)[keyof typeof Availability];\n\nexport const SupportedLanguage = {\n Curl: \"curl\",\n Python: \"python\",\n Javascript: \"javascript\",\n Js: \"js\",\n Node: \"node\",\n Typescript: \"typescript\",\n Ts: \"ts\",\n Go: \"go\",\n Ruby: \"ruby\",\n Csharp: \"csharp\",\n Php: \"php\",\n Swift: \"swift\",\n Rust: \"rust\"\n} as const;\nexport type SupportedLanguage = (typeof SupportedLanguage)[keyof typeof SupportedLanguage];\n\nexport const HttpSnippetLanguage = {\n Curl: \"curl\",\n Csharp: \"csharp\",\n Go: \"go\",\n Java: \"java\",\n Javascript: \"javascript\",\n Php: \"php\",\n Python: \"python\",\n Ruby: \"ruby\",\n Swift: \"swift\",\n Rust: \"rust\",\n Typescript: \"typescript\"\n} as const;\nexport type HttpSnippetLanguage = (typeof HttpSnippetLanguage)[keyof typeof HttpSnippetLanguage];\n\n// ── Error types ────────────────────────────────────────────────────────\n\nexport interface InvalidDomainErrorBody {\n /** Value the domain should end with (i.e. docs.buildwithfern.com or dev.docs.buildwithfern.com) */\n requiredDomainSuffix: string;\n}\n\n// ── Docs types ─────────────────────────────────────────────────────────\n\nexport interface AnnouncementConfig {\n /** The text to display in the banner, using markdown. */\n text: string;\n}\n\n// ── Snippet types ──────────────────────────────────────────────────────\n\nexport type SnippetsByEndpointMethod = Partial<Record<HttpMethod, Snippet[]>>;\n\nexport const SnippetsByEndpointMethodSchema: z.ZodType<SnippetsByEndpointMethod> = z.record(\n HttpMethodSchema,\n z.array(z.unknown())\n) as any;\n\n// ── SDK types for snippets ────────────────────────────────────────────\n\nexport interface TypeScriptSdk {\n package: string;\n version: string;\n}\n\nexport interface PythonSdk {\n package: string;\n version: string;\n}\n\nexport interface GoSdk {\n githubRepo: string;\n version: string;\n}\n\nexport interface RubySdk {\n gem: string;\n version: string;\n}\n\nexport interface CsharpSdk {\n package: string;\n version: string;\n}\n\nexport interface JavaSdk {\n group: string;\n artifact: string;\n version: string;\n}\n\nexport interface TypeScriptSnippet {\n sdk: TypeScriptSdk;\n client: string;\n}\n\nexport interface PythonSnippet {\n sdk: PythonSdk;\n async_client: string;\n sync_client: string;\n}\n\nexport interface GoSnippet {\n sdk: GoSdk;\n client: string;\n}\n\nexport interface RubySnippet {\n sdk: RubySdk;\n client: string;\n}\n\nexport interface CsharpSnippet {\n sdk: CsharpSdk;\n client: string;\n}\n\nexport interface JavaSnippet {\n sdk: JavaSdk;\n async_client: string;\n sync_client: string;\n}\n\n// ── Snippet discriminated union ───────────────────────────────────────\n\n// ── Snippet code types (used to deserialize snippet data from DB) ────\n\nexport interface TypeScriptSnippetCode {\n client: string;\n}\n\nexport interface PythonSnippetCode {\n async_client: string;\n sync_client: string;\n}\n\nexport interface GoSnippetCode {\n client: string;\n}\n\nexport interface RubySnippetCode {\n client: string;\n}\n\nexport interface JavaSnippetCode {\n async_client: string;\n sync_client: string;\n}\n\nexport interface CsharpSnippetCode {\n client: string;\n}\n\n// ── Sdk type (SdkRequest with required version) ─────────────────────\n\nexport const SdkSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"typescript\"), package: z.string(), version: z.string() }),\n z.object({ type: z.literal(\"python\"), package: z.string(), version: z.string() }),\n z.object({ type: z.literal(\"go\"), githubRepo: z.string(), version: z.string() }),\n z.object({ type: z.literal(\"ruby\"), gem: z.string(), version: z.string() }),\n z.object({\n type: z.literal(\"java\"),\n group: z.string(),\n artifact: z.string(),\n version: z.string()\n }),\n z.object({ type: z.literal(\"csharp\"), package: z.string(), version: z.string() })\n]);\nexport type Sdk = z.infer<typeof SdkSchema>;\n\n// ── Template type (generic template placeholder) ────────────────────\nexport type Template = unknown;\n\nexport type Snippet = Snippet.Typescript | Snippet.Python | Snippet.Java | Snippet.Go | Snippet.Ruby | Snippet.Csharp;\n\nexport namespace Snippet {\n interface _Base {\n exampleIdentifier: string | undefined;\n }\n\n export interface Typescript extends TypeScriptSnippet, _Base {\n type: \"typescript\";\n }\n\n export interface Python extends PythonSnippet, _Base {\n type: \"python\";\n }\n\n export interface Java extends JavaSnippet, _Base {\n type: \"java\";\n }\n\n export interface Go extends GoSnippet, _Base {\n type: \"go\";\n }\n\n export interface Ruby extends RubySnippet, _Base {\n type: \"ruby\";\n }\n\n export interface Csharp extends CsharpSnippet, _Base {\n type: \"csharp\";\n }\n}\n","import type {\n EndpointId,\n EnvironmentId,\n FileId,\n GraphQlOperationId,\n GraphQlOperationType,\n GraphQlTypeCategory,\n TypeId,\n WebhookId,\n WebSocketId\n} from \"../../orpc-client/api/shared.js\";\nimport type {\n AnnouncementConfig,\n ApiDefinitionId,\n Availability,\n GrpcId,\n GrpcMethod,\n HttpMethod,\n LinkTarget,\n PageId,\n RoleId,\n Url,\n VersionId\n} from \"../../orpc-client/shared.js\";\n\nexport type Slug = string & {\n navigation_latest_Slug: void;\n};\n\nexport function Slug(value: string): Slug {\n return value as unknown as Slug;\n}\n\nexport type TabId = string & {\n navigation_latest_TabId: void;\n};\n\nexport function TabId(value: string): TabId {\n return value as unknown as TabId;\n}\n\nexport type NodeId = string & {\n navigation_latest_NodeId: void;\n};\n\nexport function NodeId(value: string): NodeId {\n return value as unknown as NodeId;\n}\n\nexport type ProductId = string & {\n navigation_latest_ProductId: void;\n};\n\nexport function ProductId(value: string): ProductId {\n return value as unknown as ProductId;\n}\n\nexport type VariantId = string & {\n navigation_latest_VariantId: void;\n};\n\nexport function VariantId(value: string): VariantId {\n return value as unknown as VariantId;\n}\n\nexport type RootChild = VersionedNode | UnversionedNode | ProductGroupNode;\n\nexport type ProductNode = InternalProductNode | ExternalProductNode;\n\nexport type ProductChild = VersionedNode | UnversionedNode;\n\nexport type VersionChild = TabbedNode | SidebarRootNode | VariantedNode;\n\nexport type VariantChild = ApiReferenceNode | SectionNode | SidebarGroupNode | PageNode | LinkNode | ChangelogNode;\n\nexport type TabChild = TabNode | LinkNode | ChangelogNode;\n\nexport type SidebarRootChild = SidebarGroupNode | ApiReferenceNode | SectionNode | VariantedNode;\n\nexport type NavigationChild = ApiReferenceNode | SectionNode | PageNode | LinkNode | ChangelogNode | VariantedNode;\n\nexport type ApiPackageChild =\n | ApiPackageNode\n | EndpointNode\n | EndpointPairNode\n | WebSocketNode\n | WebhookNode\n | GrpcNode\n | GraphQlNode\n | GraphQlTypeNode\n | PageNode\n | LinkNode;\n\nexport interface WithNodeId {\n id: NodeId;\n collapsed: boolean | \"open-by-default\" | undefined;\n}\n\nexport interface WithPermissions {\n viewers: RoleId[] | undefined;\n orphaned: boolean | undefined;\n}\n\nexport interface WithFeatureFlags {\n featureFlags: FeatureFlagOptions[] | undefined;\n}\n\nexport interface WithNodeMetadata extends WithNodeId, WithPermissions, WithFeatureFlags {\n title: string;\n slug: Slug;\n canonicalSlug: Slug | undefined;\n icon: string | undefined;\n hidden: boolean | undefined;\n authed: boolean | undefined;\n}\n\nexport interface WithPage {\n pageId: PageId;\n noindex: boolean | undefined;\n}\n\nexport interface WithOverviewPage {\n overviewPageId: PageId | undefined;\n noindex: boolean | undefined;\n}\n\nexport interface WithApiDefinitionId {\n apiDefinitionId: ApiDefinitionId;\n availability: Availability | undefined;\n}\n\nexport interface WithRedirect {\n pointsTo: Slug | undefined;\n}\n\nexport interface FeatureFlagOptions {\n flag: string;\n fallbackValue: unknown | undefined;\n match: unknown | undefined;\n}\n\nexport interface BreadcrumbItem {\n title: string;\n pointsTo: Slug | undefined;\n}\n\nexport interface PlaygroundButtonSettings {\n href: Url | undefined;\n}\n\nexport interface PlaygroundSettings {\n environments: EnvironmentId[] | undefined;\n button: PlaygroundButtonSettings | undefined;\n \"limit-websocket-messages-per-connection\": number | undefined;\n hidden: boolean | undefined;\n}\n\nexport type { GraphQlOperationType };\nexport type { GraphQlTypeCategory };\n\nexport interface ProductGroupNode extends WithNodeId {\n type: \"productgroup\";\n landingPage: LandingPageNode | undefined;\n children: ProductNode[];\n}\n\nexport interface VersionedNode extends WithNodeId {\n type: \"versioned\";\n children: VersionNode[];\n}\n\nexport interface UnversionedNode extends WithNodeId {\n type: \"unversioned\";\n child: VersionChild;\n landingPage: LandingPageNode | undefined;\n}\n\nexport interface VariantedNode extends WithNodeId {\n type: \"varianted\";\n children: VariantNode[];\n}\n\nexport interface TabbedNode extends WithNodeId {\n type: \"tabbed\";\n children: TabChild[];\n}\n\nexport interface SidebarRootNode extends WithNodeId {\n type: \"sidebarRoot\";\n children: SidebarRootChild[];\n}\n\nexport interface SidebarGroupNode extends WithNodeId {\n type: \"sidebarGroup\";\n children: NavigationChild[];\n}\n\nexport interface EndpointPairNode extends WithNodeId {\n type: \"endpointPair\";\n stream: EndpointNode;\n nonStream: EndpointNode;\n}\n\nexport interface LinkNode extends WithNodeId {\n type: \"link\";\n title: string;\n icon: string | undefined;\n url: Url;\n target: LinkTarget | undefined;\n}\n\nexport interface RootNode extends WithNodeMetadata, WithRedirect {\n type: \"root\";\n version: \"v2\";\n child: RootChild;\n roles: RoleId[] | undefined;\n}\n\nexport interface InternalProductNode extends WithNodeMetadata, WithRedirect {\n type: \"product\";\n default: boolean;\n productId: ProductId;\n child: ProductChild;\n subtitle: string;\n image: FileId | undefined;\n announcement: AnnouncementConfig | undefined;\n}\n\nexport interface ExternalProductNode extends WithNodeId, WithPermissions, WithFeatureFlags {\n type: \"productLink\";\n default: boolean;\n productId: ProductId;\n title: string;\n href: Url;\n target: LinkTarget | undefined;\n subtitle: string;\n icon: string | undefined;\n image: FileId | undefined;\n hidden: boolean | undefined;\n authed: boolean | undefined;\n}\n\nexport interface VersionNode extends WithNodeMetadata, WithRedirect {\n type: \"version\";\n default: boolean;\n versionId: VersionId;\n child: VersionChild;\n availability: Availability | undefined;\n landingPage: LandingPageNode | undefined;\n announcement: AnnouncementConfig | undefined;\n}\n\nexport interface VariantNode extends WithNodeMetadata, WithRedirect {\n type: \"variant\";\n default: boolean;\n variantId: VariantId;\n subtitle: string | undefined;\n image: FileId | undefined;\n children: VariantChild[];\n}\n\nexport interface TabNode extends WithNodeMetadata, WithRedirect {\n type: \"tab\";\n child: SidebarRootNode;\n}\n\nexport interface PageNode extends WithNodeMetadata, WithPage {\n type: \"page\";\n availability: Availability | undefined;\n}\n\nexport interface LandingPageNode extends WithNodeMetadata, WithPage {\n type: \"landingPage\";\n}\n\nexport interface SectionNode extends WithNodeMetadata, WithOverviewPage, WithRedirect {\n type: \"section\";\n collapsible: boolean | undefined;\n collapsedByDefault: boolean | undefined;\n children: NavigationChild[];\n availability: Availability | undefined;\n}\n\nexport interface ChangelogNode extends WithNodeMetadata, WithOverviewPage {\n type: \"changelog\";\n children: ChangelogYearNode[];\n}\n\nexport interface ChangelogYearNode extends WithNodeMetadata {\n type: \"changelogYear\";\n year: number;\n children: ChangelogMonthNode[];\n}\n\nexport interface ChangelogMonthNode extends WithNodeMetadata {\n type: \"changelogMonth\";\n month: number;\n children: ChangelogEntryNode[];\n}\n\nexport interface ChangelogEntryNode extends WithNodeMetadata, WithPage {\n type: \"changelogEntry\";\n date: string;\n tags: string[] | undefined;\n}\n\nexport interface ApiReferenceNode extends WithNodeMetadata, WithOverviewPage, WithApiDefinitionId, WithRedirect {\n type: \"apiReference\";\n paginated: boolean | undefined;\n showErrors: boolean | undefined;\n hideTitle: boolean | undefined;\n children: ApiPackageChild[];\n changelog: ChangelogNode | undefined;\n playground: PlaygroundSettings | undefined;\n postmanCollectionUrl: string | undefined;\n}\n\nexport interface EndpointNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"endpoint\";\n method: HttpMethod;\n endpointId: EndpointId;\n isResponseStream: boolean | undefined;\n playground: PlaygroundSettings | undefined;\n}\n\nexport interface WebSocketNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"webSocket\";\n webSocketId: WebSocketId;\n playground: PlaygroundSettings | undefined;\n}\n\nexport interface WebhookNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"webhook\";\n method: HttpMethod;\n webhookId: WebhookId;\n}\n\nexport interface GrpcNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"grpc\";\n method: GrpcMethod;\n grpcId: GrpcId;\n}\n\nexport interface GraphQlNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"graphql\";\n operationType: GraphQlOperationType;\n graphqlOperationId: GraphQlOperationId;\n /** Additional operation IDs when this node represents a namespace group (e.g. fieldPath grouping). */\n graphqlOperationIds: GraphQlOperationId[] | undefined;\n playground: PlaygroundSettings | undefined;\n}\n\n/**\n * A navigation node representing a single GraphQL schema type (object, input,\n * enum, scalar, interface, or union) as opposed to a GraphQL operation.\n *\n * This node is a navigable leaf, mirroring {@link GraphQlNode}. Generating these\n * nodes from a schema (FER-10879) and rendering a dedicated type page\n * (FER-10880) are tracked separately.\n */\nexport interface GraphQlTypeNode extends WithNodeMetadata, WithApiDefinitionId {\n type: \"graphqlType\";\n typeId: TypeId;\n typeCategory: GraphQlTypeCategory;\n}\n\nexport interface ApiPackageNode extends WithNodeMetadata, WithOverviewPage, WithApiDefinitionId, WithRedirect {\n type: \"apiPackage\";\n children: ApiPackageChild[];\n playground: PlaygroundSettings | undefined;\n}\n","export function isNonNullish<T>(x: T | null | undefined): x is T {\n return x != null;\n}\n\nexport function assertNonNullish<T>(x: T | null | undefined, message?: string): asserts x is T {\n if (x == null) {\n throw new Error(message ?? \"Value is null or undefined\");\n }\n}\n","import { isNonNullish } from \"@fern-api/ui-core-utils\";\nimport urljoin from \"url-join\";\n\nimport { Slug } from \".\";\n\n// normalizes slug parts and joins them with a single slash\nexport function slugjoin(...parts: (string | string[] | null | undefined)[]): Slug {\n const slugArray = parts\n .filter(isNonNullish)\n .flatMap((part) => (typeof part === \"string\" ? [part.trim()] : part.map((part) => part.trim())))\n .map((part) => decodeURIComponent(part));\n\n const joined = urljoin(slugArray) ?? \"\";\n const normalized = joined\n .replaceAll(\"//*\", \"/\") // Remove duplicate slashes\n .replace(/^\\//, \"\") // Remove leading slash\n .replace(/\\/$/, \"\"); // Remove trailing slash\n\n return Slug(normalized);\n}\n","import type { NavResponse, VersionMetadataResponse } from \"../orpc-client/docs-ledger/contract.js\";\nimport * as FernNavigation from \"./index.js\";\n\n/**\n * Reconstruct a FernNavigation `RootNode` from the decomposed ledger model\n * (segments + per-segment nav) instead of an embedded `config.root` blob.\n *\n * This is the \"slower fallback\" referenced in the ledger loader refactor: the\n * route/segment-first hot path resolves a single page + its local sidebar\n * without materialising the whole tree, but compatibility methods that need\n * the full root (`getRoot`, `unsafe_getFullRoot`, `findNode`, `getProductList`,\n * …) reconstruct it here.\n *\n * ── Design notes ──────────────────────────────────────────────────────────\n *\n * The transform (`docsPublishTransform.ts`) decomposes a V1 RootNode into:\n * - segment_details: product / version / variant / tab dimensions\n * - segments: a (locale × product × version × variant × tab × section) scope\n * with a `metadata.type` descriptor (section | apiReference | apiPackage |\n * changelog | tabRoot)\n * - artifacts: the leaf nodes (pages, endpoints, links, changelog entries)\n * - nav: routing (fullPath) + sidebar ordering (displaySortOrder)\n *\n * Reconstruction inverts this:\n * 1. Group segments by their (product, version, variant, tab) scope.\n * 2. Within a scope, build the sidebar by nesting `section` segments via\n * their `section` path string (\"models/command\" is a child of \"models\").\n * 3. Assemble scopes into tabbed / sidebarRoot, versioned, productgroup, or\n * unversioned scaffolding based on which dimensions are present.\n *\n * Node slugs are grounded in the stored canonical `fullPath` (the nav row that\n * carries `displaySortOrder`) wherever an artifact exists, so we don't have to\n * re-derive default-slug elision. Structural nodes without their own route\n * (products / versions / sections without an overview) derive a slug via\n * {@link FernNavigation.slugjoin} from the scope prefix.\n *\n * API reference segments are emitted as `paginated` ApiReferenceNodes whose\n * children are populated from the segment's nav routes (endpoint/webhook stubs\n * built via {@link apiLeafNodeFromNavRouteInternal}). This mirrors V2 parity:\n * `findNode` and the slug map locate endpoint pages via the tree, while the\n * full API definition content is still loaded on demand at render time.\n */\n\ntype Segment = VersionMetadataResponse[\"segments\"][number];\ntype SegmentDetail = NonNullable<Segment[\"product\"]>;\ntype NavRoute = NavResponse[\"routes\"][number];\n\n// ── typed metadata overlays ────────────────────────────────────────────────\n//\n// The contract stores metadata as `z.unknown()` (the publish transform owns\n// the schema). These interfaces document the known shapes and let us access\n// fields with normal property access instead of per-call runtime checks.\n// The cast helpers below are zero-cost at runtime — they trust the transform\n// pipeline rather than re-validating every field on every read.\n\n/** Segment-level metadata (`seg.metadata`). */\ninterface SegmentMeta {\n type?: string;\n title?: string;\n icon?: string;\n apiDefinitionId?: string;\n viewers?: string[];\n collapsed?: boolean | \"open-by-default\";\n collapsible?: boolean;\n collapsedByDefault?: boolean;\n showErrors?: boolean;\n hideTitle?: boolean;\n availability?: string;\n pointsTo?: string;\n}\n\n/** Nav route metadata (`route.metadata`). */\ninterface RouteMeta {\n title?: string;\n icon?: string;\n viewers?: string[];\n pageId?: string;\n isOverview?: boolean;\n noindex?: boolean;\n url?: string;\n endpointId?: string;\n method?: string;\n isResponseStream?: boolean;\n webhookId?: string;\n webSocketId?: string;\n grpcId?: string;\n graphqlOperationId?: string;\n operationType?: string;\n apiDefinitionId?: string;\n endpointPairKey?: string;\n date?: string;\n}\n\n/** Segment detail metadata (product / version / tab `.metadata`). */\ninterface DetailMeta {\n slug?: string;\n default?: boolean;\n pointsTo?: string;\n subtitle?: string;\n tab_type?: string;\n url?: string;\n}\n\n/** Zero-cost cast: trusts the transform pipeline wrote well-typed metadata. */\nconst segMeta = (seg: Segment): SegmentMeta => (seg.metadata ?? {}) as SegmentMeta;\nconst routeMeta = (route: NavRoute): RouteMeta => (route.metadata ?? {}) as RouteMeta;\nconst detailMeta = (detail: SegmentDetail): DetailMeta => (detail.metadata ?? {}) as DetailMeta;\n\nexport interface BuildRootOptions {\n /** The deployment's root slug — the cleaned basepath (e.g. \"\" or \"docs\"). */\n basePath: string;\n /** The site title (RootNode.title). */\n title: string;\n /** Segments for the resolved locale (already locale-deduped by the DAO). */\n segments: Segment[];\n /** Per-segment sidebar nav entries, keyed by segmentHash. */\n navBySegment: Map<string, NavRoute[]>;\n}\n\n// ── id / slug helpers ──────────────────────────────────────────────────────\n\n/**\n * Per-build state. Created once per {@link buildFullRootFromSegments} call and\n * threaded through the builders so concurrent invocations never share state.\n * This matters under Vercel Fluid Compute, where concurrent requests can share\n * a single module instance — module-level mutable state would let one build's\n * ids/basepath bleed into another.\n */\ninterface BuildContext {\n nodeId: (key: string) => FernNavigation.NodeId;\n /** Slug for a content artifact/section, prefixed with the deployment basepath. */\n contentSlug: (relativePath: string) => FernNavigation.Slug;\n}\n\nfunction createBuildContext(basePath: string): BuildContext {\n // Tracks how many times each id key has been handed out, so collisions get\n // a deterministic `-N` suffix. NodeIds only need to be unique within a\n // single tree; keying them off content (slug/scope) instead of a running\n // counter makes them stable across builds — so client state keyed by\n // node.id (e.g. playground form state in localStorage) survives republish\n // as long as the node's slug/position is unchanged.\n const seen = new Map<string, number>();\n // Nav `fullPath`s are stored relative to the docs root (no basepath);\n // FernNavigation slugs include the basepath prefix, so content node slugs\n // are joined onto this prefix.\n const basePrefix = basePath.replace(/^\\/+|\\/+$/g, \"\");\n return {\n nodeId: (key) => {\n const count = seen.get(key) ?? 0;\n seen.set(key, count + 1);\n return FernNavigation.NodeId(count === 0 ? key : `${key}-${count}`);\n },\n contentSlug: (relativePath) => {\n const clean = relativePath.replace(/^\\/+|\\/+$/g, \"\");\n return basePrefix === \"\" ? FernNavigation.Slug(clean) : FernNavigation.slugjoin(basePrefix, clean);\n }\n };\n}\n\nfunction asSlug(path: string): FernNavigation.Slug {\n return FernNavigation.Slug(path.replace(/^\\/+|\\/+$/g, \"\"));\n}\n\n/** Map raw viewer role strings to branded RoleIds, or undefined when empty. */\nfunction toViewers(viewers: string[] | undefined): FernNavigation.RoleId[] | undefined {\n if (viewers == null || viewers.length === 0) {\n return undefined;\n }\n return viewers.map((v) => FernNavigation.RoleId(v));\n}\n\n/**\n * Merge segment-level viewers with the owning variant's viewers so that\n * variant-level RBAC restrictions propagate into section/apiReference/changelog\n * nodes. Without this, removing the variant filter from `inScope` would allow\n * cross-variant prev/next links to disclose restricted content.\n */\nfunction mergeVariantViewers(seg: Segment): FernNavigation.RoleId[] | undefined {\n const all = [...(segMeta(seg).viewers ?? []), ...(seg.variant?.viewers ?? [])];\n return all.length > 0 ? [...new Set(all)].map((v) => FernNavigation.RoleId(v)) : undefined;\n}\n\nfunction detailSlug(detail: SegmentDetail): string {\n return detailMeta(detail).slug ?? \"\";\n}\n\nfunction detailIsDefault(detail: SegmentDetail): boolean {\n return detailMeta(detail).default ?? false;\n}\n\n/** Resolve a detail's `pointsTo` into a basepath-prefixed slug, or undefined. */\nfunction pointsToSlug(ctx: BuildContext, meta: { pointsTo?: string }): FernNavigation.Slug | undefined {\n return meta.pointsTo != null ? ctx.contentSlug(meta.pointsTo) : undefined;\n}\n\n// ── scope grouping ───────────────────────────────────────────────────────\n\n/** Stable identity for a (product, version, variant, tab) scope. */\nfunction scopeKey(seg: Segment): string {\n return [seg.product?.id ?? \"\", seg.version?.id ?? \"\", seg.variant?.id ?? \"\", seg.tab?.id ?? \"\"].join(\"|\");\n}\n\n// ── artifact → node conversion ─────────────────────────────────────────────\n\nfunction withMetadataDefaults(base: {\n id: FernNavigation.NodeId;\n title: string;\n slug: FernNavigation.Slug;\n icon: string | undefined;\n hidden: boolean | undefined;\n viewers?: FernNavigation.RoleId[];\n}): {\n id: FernNavigation.NodeId;\n title: string;\n slug: FernNavigation.Slug;\n canonicalSlug: FernNavigation.Slug | undefined;\n icon: string | undefined;\n hidden: boolean | undefined;\n authed: boolean | undefined;\n collapsed: boolean | undefined;\n viewers: FernNavigation.RoleId[] | undefined;\n orphaned: boolean | undefined;\n featureFlags: FernNavigation.FeatureFlagOptions[] | undefined;\n} {\n const { viewers, ...rest } = base;\n return {\n ...rest,\n canonicalSlug: undefined,\n authed: undefined,\n collapsed: undefined,\n // Normalise empty arrays to undefined so unrestricted nodes don't add\n // filter-level noise; a non-empty array engages the RBAC view gate.\n viewers: viewers != null && viewers.length > 0 ? viewers : undefined,\n orphaned: undefined,\n featureFlags: undefined\n };\n}\n\n/**\n * Convert one sidebar nav artifact into a leaf navigation node. Returns\n * undefined for artifacts that don't become standalone sidebar nodes here\n * (endpoints live under paginated apiReferences; overview pages are folded\n * into their owning section).\n */\nfunction artifactToNode(ctx: BuildContext, route: NavRoute): FernNavigation.NavigationChild | undefined {\n const md = routeMeta(route);\n const slug = ctx.contentSlug(route.fullPath ?? \"\");\n\n switch (route.type) {\n case \"markdown\": {\n if (md.isOverview) {\n return undefined;\n }\n return {\n type: \"page\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`page:${slug}`),\n title: md.title ?? \"\",\n slug,\n icon: md.icon,\n hidden: route.hidden,\n viewers: toViewers(md.viewers)\n }),\n pageId: FernNavigation.PageId(md.pageId ?? \"\"),\n noindex: md.noindex,\n availability: undefined\n };\n }\n case \"link\": {\n return {\n type: \"link\",\n id: ctx.nodeId(`link:${md.url ?? route.fullPath ?? \"\"}`),\n collapsed: undefined,\n title: md.title ?? \"\",\n icon: md.icon,\n url: FernNavigation.Url(md.url ?? \"\"),\n target: undefined\n };\n }\n // API leaf types are handled by apiReferenceNode (which calls\n // apiLeafNodeFromNavRouteInternal), not by section-level artifact\n // conversion. Returning undefined here prevents them from appearing\n // as duplicate siblings alongside the apiReference node.\n default:\n return undefined;\n }\n}\n\n// ── API-leaf node construction (route/segment-first explorer scoping) ──────\n\n/**\n * The HTTP-method-bearing nav route types emitted by the publish transform for\n * API leaves. Used by both the root builder (to populate apiReference children)\n * and the route/segment-first explorer reads (to resolve endpoint/webhook\n * navigation nodes from a single API segment's nav without walking the full\n * reconstructed root). See ADR 0013 §API-explorer methods.\n */\nexport type ApiLeafNode =\n | FernNavigation.EndpointNode\n | FernNavigation.WebhookNode\n | FernNavigation.WebSocketNode\n | FernNavigation.GrpcNode\n | FernNavigation.GraphQlNode;\n\n/**\n * Convert one API-leaf nav route into its navigation node, or undefined when\n * the route is not an API leaf carrying the required identifiers.\n *\n * @internal Exported for the ledger loader's scoped explorer methods.\n */\nexport function apiLeafNodeFromNavRoute(\n route: NavRoute,\n basePath: string,\n segmentApiDefId: string\n): ApiLeafNode | undefined {\n const ctx = createBuildContext(basePath);\n return apiLeafNodeFromNavRouteInternal(ctx, route, segmentApiDefId);\n}\n\nfunction apiLeafNodeFromNavRouteInternal(\n ctx: BuildContext,\n route: NavRoute,\n segmentApiDefId: string\n): ApiLeafNode | undefined {\n const md = routeMeta(route);\n const slug = ctx.contentSlug(route.fullPath ?? \"\");\n const base = {\n ...withMetadataDefaults({\n id: ctx.nodeId(`api-leaf:${slug}`),\n title: md.title ?? \"\",\n slug,\n icon: md.icon,\n hidden: route.hidden,\n viewers: toViewers(md.viewers)\n }),\n apiDefinitionId: FernNavigation.ApiDefinitionId(md.apiDefinitionId ?? segmentApiDefId),\n availability: undefined as FernNavigation.Availability | undefined\n };\n\n switch (route.type) {\n case \"rest\":\n if (md.endpointId == null || md.method == null) {\n return undefined;\n }\n return {\n type: \"endpoint\",\n ...base,\n method: md.method as FernNavigation.EndpointNode[\"method\"],\n endpointId: FernNavigation.EndpointId(md.endpointId),\n isResponseStream: md.isResponseStream,\n playground: undefined\n };\n case \"webhook\":\n if (md.webhookId == null || md.method == null) {\n return undefined;\n }\n return {\n type: \"webhook\",\n ...base,\n method: md.method as FernNavigation.WebhookNode[\"method\"],\n webhookId: FernNavigation.WebhookId(md.webhookId)\n };\n case \"asyncapi\":\n if (md.webSocketId == null) {\n return undefined;\n }\n return {\n type: \"webSocket\",\n ...base,\n webSocketId: FernNavigation.WebSocketId(md.webSocketId),\n playground: undefined\n };\n case \"grpc\":\n if (md.grpcId == null || md.method == null) {\n return undefined;\n }\n return {\n type: \"grpc\",\n ...base,\n method: md.method as FernNavigation.GrpcNode[\"method\"],\n grpcId: FernNavigation.GrpcId(md.grpcId)\n };\n case \"graphql\":\n if (md.graphqlOperationId == null || md.operationType == null) {\n return undefined;\n }\n return {\n type: \"graphql\",\n ...base,\n operationType: md.operationType as FernNavigation.GraphQlNode[\"operationType\"],\n graphqlOperationId: FernNavigation.GraphQlOperationId(md.graphqlOperationId),\n graphqlOperationIds: undefined,\n playground: undefined\n };\n default:\n return undefined;\n }\n}\n\n/**\n * Collect every endpoint/webhook navigation node from a single API segment's\n * nav routes. The root builder now populates apiReference children directly,\n * but this helper is still used by the ledger loader's per-apiDefinitionId\n * explorer methods (getApiLeafNodes) which scope to a single API definition.\n *\n * @internal Exported for the ledger loader's scoped explorer methods.\n */\nexport function collectApiLeafNodesFromNav(\n routes: NavRoute[],\n basePath: string,\n segmentApiDefId: string\n): ApiLeafNode[] {\n const ctx = createBuildContext(basePath);\n return routes\n .map((route) => apiLeafNodeFromNavRouteInternal(ctx, route, segmentApiDefId))\n .filter((node): node is ApiLeafNode => node != null);\n}\n\n/** Read the apiDefinitionId off a segment's metadata, or undefined. */\nexport function segmentApiDefinitionId(metadata: unknown): string | undefined {\n return (metadata as SegmentMeta | null)?.apiDefinitionId;\n}\n\n// ── section-tree assembly within one scope ───────────────────────────────\n\ninterface ScopedSegment {\n seg: Segment;\n meta: SegmentMeta;\n nav: NavRoute[];\n}\n\n/** Find the overview artifact (isOverview) within a segment's nav, if any. */\nfunction overviewRoute(nav: NavRoute[]): { route: NavRoute; meta: RouteMeta } | undefined {\n for (const r of nav) {\n if (r.type === \"markdown\") {\n const meta = routeMeta(r);\n if (meta.isOverview) {\n return { route: r, meta };\n }\n }\n }\n return undefined;\n}\n\nfunction sectionNode(\n ctx: BuildContext,\n scoped: ScopedSegment,\n sectionChildren: FernNavigation.NavigationChild[]\n): FernNavigation.SectionNode {\n const { seg, meta: sm, nav } = scoped;\n const overview = overviewRoute(nav);\n const overviewPageId = overview?.meta.pageId;\n const slug = ctx.contentSlug(overview?.route.fullPath ?? seg.section);\n\n const leafChildren = nav\n .map((r) => artifactToNode(ctx, r))\n .filter((n): n is FernNavigation.NavigationChild => n != null);\n\n const defaults = withMetadataDefaults({\n id: ctx.nodeId(`section:${slug}`),\n title: sm.title ?? \"\",\n slug,\n icon: sm.icon,\n hidden: seg.hidden,\n viewers: mergeVariantViewers(seg)\n });\n\n return {\n type: \"section\",\n ...defaults,\n collapsed: sm.collapsed ?? defaults.collapsed,\n overviewPageId: overviewPageId != null ? FernNavigation.PageId(overviewPageId) : undefined,\n noindex: undefined,\n collapsible: sm.collapsible,\n collapsedByDefault: sm.collapsedByDefault,\n availability: undefined,\n pointsTo: undefined,\n children: [...leafChildren, ...sectionChildren]\n };\n}\n\n/** The immediate parent section path of a section path (\"a/b/c\" → \"a/b\", \"a\" → \"\"). */\nfunction parentSectionPath(sectionPath: string): string {\n const idx = sectionPath.lastIndexOf(\"/\");\n return idx === -1 ? \"\" : sectionPath.slice(0, idx);\n}\n\n/** Walk up the section path hierarchy to find the nearest ancestor that exists in the set. */\nfunction nearestExistingAncestor(sectionPath: string, existing: Set<string>): string {\n let current = parentSectionPath(sectionPath);\n while (current !== \"\") {\n if (existing.has(current)) {\n return current;\n }\n current = parentSectionPath(current);\n }\n return \"\";\n}\n\n/**\n * Determine whether `sec` is a direct child of `parentPath`, accounting for\n * orphaned segments whose parent section doesn't exist but whose nearest\n * existing ancestor is `parentPath`.\n */\nfunction isDirectChildOf(sec: string, parentPath: string, sectionPaths: Set<string>): boolean {\n const parent = parentSectionPath(sec);\n if (parent === parentPath) {\n return true;\n }\n // Orphaned: parent doesn't exist, adopt if nearest ancestor is parentPath.\n return !sectionPaths.has(parent) && nearestExistingAncestor(sec, sectionPaths) === parentPath;\n}\n\n/**\n * Find direct child apiPackage segments of `parentSection`. A direct child has\n * `parentSectionPath(seg.section) === parentSection`, or is an orphaned segment\n * whose nearest existing ancestor is `parentSection`.\n */\nfunction directChildApiPackages(\n parentSection: string,\n scopeSegs: ScopedSegment[],\n sectionPaths: Set<string>\n): ScopedSegment[] {\n return scopeSegs\n .filter((s) => s.meta.type === \"apiPackage\" && isDirectChildOf(s.seg.section, parentSection, sectionPaths))\n .sort((a, b) => a.seg.sortOrder - b.seg.sortOrder);\n}\n\n/**\n * Build the children of an API section (apiReference or apiPackage) by combining\n * the segment's own leaf nodes with nested apiPackage children.\n */\nfunction buildApiChildren(\n ctx: BuildContext,\n scoped: ScopedSegment,\n scopeSegs: ScopedSegment[],\n apiDefId: string,\n sectionPaths: Set<string>\n): FernNavigation.ApiPackageChild[] {\n const { nav } = scoped;\n\n // Build leaf nodes from this segment's own nav routes (not descendants).\n const rawLeafNodes: ApiLeafNode[] = nav\n .map((route) => apiLeafNodeFromNavRouteInternal(ctx, route, apiDefId))\n .filter((node): node is ApiLeafNode => node != null);\n\n // Merge stream/non-stream endpoint pairs into EndpointPairNodes.\n const leafNodes = mergeEndpointPairs(ctx, rawLeafNodes, nav);\n\n // Build nested ApiPackageNodes from direct child apiPackage segments.\n const childPackages = directChildApiPackages(scoped.seg.section, scopeSegs, sectionPaths);\n const packageNodes: FernNavigation.ApiPackageChild[] = childPackages.map((child) =>\n apiPackageChildNode(ctx, child, scopeSegs, apiDefId, sectionPaths)\n );\n\n // Interleave: leaf nodes first (in their nav sort order), then package nodes\n // (in their segment sort order). This matches v2's structure where direct\n // artifacts precede sub-packages.\n return [...leafNodes, ...packageNodes];\n}\n\n/**\n * Build an ApiPackageNode from an apiPackage segment, recursively nesting any\n * deeper sub-packages.\n */\nfunction apiPackageChildNode(\n ctx: BuildContext,\n scoped: ScopedSegment,\n scopeSegs: ScopedSegment[],\n parentApiDefId: string,\n sectionPaths: Set<string>\n): FernNavigation.ApiPackageNode {\n const { seg, meta: sm, nav } = scoped;\n const overview = overviewRoute(nav);\n const overviewPageId = overview?.meta.pageId;\n const apiDefId = sm.apiDefinitionId ?? parentApiDefId;\n const slug = ctx.contentSlug(overview?.route.fullPath ?? nav[0]?.fullPath ?? seg.section);\n\n const children = buildApiChildren(ctx, scoped, scopeSegs, apiDefId, sectionPaths);\n\n return {\n type: \"apiPackage\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`api-pkg:${slug}`),\n title: sm.title ?? \"\",\n slug,\n icon: sm.icon,\n hidden: seg.hidden,\n viewers: toViewers(sm.viewers)\n }),\n apiDefinitionId: FernNavigation.ApiDefinitionId(apiDefId),\n availability: sm.availability as FernNavigation.ApiPackageNode[\"availability\"],\n overviewPageId: overviewPageId != null ? FernNavigation.PageId(overviewPageId) : undefined,\n noindex: undefined,\n pointsTo: undefined,\n children,\n playground: undefined\n };\n}\n\n/**\n * Merge endpoint nodes that were originally part of an `endpointPair` in the V1\n * tree. The publish transform stamps both artifacts with a shared\n * `endpointPairKey` in their route metadata; this function groups endpoints by\n * that key and reconstructs `EndpointPairNode`s — matching the v2 nav tree\n * structure where stream/non-stream variants share a single page with a toggle.\n */\nfunction mergeEndpointPairs(\n ctx: BuildContext,\n leafNodes: ApiLeafNode[],\n allNav: NavRoute[]\n): FernNavigation.ApiPackageChild[] {\n // Build a lookup from endpointId → endpointPairKey using route metadata.\n // Only REST routes carry `endpointPairKey`.\n const endpointIdToPairKey = new Map<string, string>();\n for (const route of allNav) {\n if (route.type !== \"rest\") {\n continue;\n }\n const md = routeMeta(route);\n if (md.endpointPairKey != null && md.endpointId != null) {\n endpointIdToPairKey.set(md.endpointId, md.endpointPairKey);\n }\n }\n\n // If no pair keys exist (pre-existing data without the key), return as-is.\n if (endpointIdToPairKey.size === 0) {\n return leafNodes;\n }\n\n const result: FernNavigation.ApiPackageChild[] = [];\n // Track which pair keys we've already merged so we only emit the pair once.\n const mergedPairKeys = new Map<string, number>();\n\n for (const node of leafNodes) {\n if (node.type !== \"endpoint\") {\n result.push(node);\n continue;\n }\n\n const pairKey = endpointIdToPairKey.get(String(node.endpointId));\n if (pairKey == null) {\n result.push(node);\n continue;\n }\n\n const existingIdx = mergedPairKeys.get(pairKey);\n if (existingIdx == null) {\n // First endpoint of the pair — push it and record its position.\n mergedPairKeys.set(pairKey, result.length);\n result.push(node);\n } else {\n // Second endpoint — merge with the first into an EndpointPairNode.\n const first = result[existingIdx];\n if (first == null || first.type !== \"endpoint\") {\n result.push(node);\n continue;\n }\n\n // Determine which is stream and which is non-stream.\n const stream = node.isResponseStream ? node : first;\n const nonStream = node.isResponseStream ? first : node;\n\n const pairNode: FernNavigation.EndpointPairNode = {\n id: ctx.nodeId(`endpoint-pair:${pairKey}`),\n type: \"endpointPair\",\n collapsed: undefined,\n stream,\n nonStream\n };\n result[existingIdx] = pairNode;\n }\n }\n\n return result;\n}\n\nfunction apiReferenceNode(\n ctx: BuildContext,\n scoped: ScopedSegment,\n scopeSegs: ScopedSegment[],\n sectionPaths: Set<string>\n): FernNavigation.ApiReferenceNode {\n const { seg, meta: sm, nav } = scoped;\n const overview = overviewRoute(nav);\n const overviewPageId = overview?.meta.pageId;\n const apiDefId = sm.apiDefinitionId ?? \"\";\n const slug = ctx.contentSlug(overview?.route.fullPath ?? nav[0]?.fullPath ?? seg.section);\n\n const children = buildApiChildren(ctx, scoped, scopeSegs, apiDefId, sectionPaths);\n\n return {\n type: \"apiReference\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`api:${slug}`),\n title: sm.title ?? \"\",\n slug,\n icon: sm.icon,\n hidden: seg.hidden,\n viewers: mergeVariantViewers(seg)\n }),\n apiDefinitionId: FernNavigation.ApiDefinitionId(apiDefId),\n availability: undefined,\n overviewPageId: overviewPageId != null ? FernNavigation.PageId(overviewPageId) : undefined,\n noindex: undefined,\n paginated: true,\n showErrors: sm.showErrors,\n hideTitle: sm.hideTitle,\n pointsTo: undefined,\n children,\n changelog: undefined,\n playground: undefined,\n postmanCollectionUrl: undefined\n };\n}\n\nfunction changelogNode(ctx: BuildContext, scoped: ScopedSegment): FernNavigation.ChangelogNode {\n const { seg, meta: sm, nav } = scoped;\n const overview = overviewRoute(nav);\n const overviewPageId = overview?.meta.pageId;\n\n // Group changelog entries by year → month. Entry dates are ISO strings.\n const entries = nav.filter((r) => r.type === \"changelog\");\n const byYear = new Map<number, Map<number, FernNavigation.ChangelogEntryNode[]>>();\n for (const r of entries) {\n const md = routeMeta(r);\n const date = md.date != null ? new Date(md.date) : new Date(0);\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth() + 1;\n const entry: FernNavigation.ChangelogEntryNode = {\n type: \"changelogEntry\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`cl-entry:${r.fullPath ?? md.pageId ?? \"\"}`),\n title: md.title ?? \"\",\n slug: ctx.contentSlug(r.fullPath ?? \"\"),\n icon: md.icon,\n hidden: r.hidden,\n viewers: toViewers(md.viewers)\n }),\n pageId: FernNavigation.PageId(md.pageId ?? \"\"),\n noindex: undefined,\n date: md.date ?? \"\",\n tags: undefined\n };\n let months = byYear.get(year);\n if (months == null) {\n months = new Map();\n byYear.set(year, months);\n }\n const arr = months.get(month) ?? [];\n arr.push(entry);\n months.set(month, arr);\n }\n\n const baseSlug = ctx.contentSlug(overview?.route.fullPath ?? seg.section);\n const years: FernNavigation.ChangelogYearNode[] = [...byYear.entries()]\n .sort((a, b) => b[0] - a[0])\n .map(([year, months]) => ({\n type: \"changelogYear\" as const,\n ...withMetadataDefaults({\n id: ctx.nodeId(`cl-year:${baseSlug}/${year}`),\n title: String(year),\n slug: asSlug(`${baseSlug}/${year}`),\n icon: undefined,\n hidden: undefined\n }),\n year,\n children: [...months.entries()]\n .sort((a, b) => b[0] - a[0])\n .map(([month, children]) => ({\n type: \"changelogMonth\" as const,\n ...withMetadataDefaults({\n id: ctx.nodeId(`cl-month:${baseSlug}/${year}/${month}`),\n title: String(month),\n slug: asSlug(`${baseSlug}/${year}/${month}`),\n icon: undefined,\n hidden: undefined\n }),\n month,\n children\n }))\n }));\n\n return {\n type: \"changelog\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`changelog:${baseSlug}`),\n title: sm.title ?? \"\",\n slug: baseSlug,\n icon: sm.icon,\n hidden: seg.hidden,\n viewers: mergeVariantViewers(seg)\n }),\n overviewPageId: overviewPageId != null ? FernNavigation.PageId(overviewPageId) : undefined,\n noindex: undefined,\n children: years\n };\n}\n\n/**\n * Build the section/api/changelog nodes whose immediate parent is `parentPath`,\n * recursing into nested sections. Also picks up orphaned segments whose parent\n * section doesn't exist but whose nearest existing ancestor is `parentPath`.\n */\nfunction buildSectionTree(\n ctx: BuildContext,\n scopeSegs: ScopedSegment[],\n parentPath: string,\n sectionPaths: Set<string>\n): FernNavigation.NavigationChild[] {\n const direct = scopeSegs\n .filter((s) => {\n const sec = s.seg.section;\n return sec !== \"\" && s.meta.type !== \"tabRoot\" && isDirectChildOf(sec, parentPath, sectionPaths);\n })\n .sort((a, b) => a.seg.sortOrder - b.seg.sortOrder);\n\n return direct.map((s) => {\n const { type } = s.meta;\n if (type === \"apiReference\" || type === \"apiPackage\") {\n return apiReferenceNode(ctx, s, scopeSegs, sectionPaths);\n }\n if (type === \"changelog\") {\n return changelogNode(ctx, s);\n }\n // section (or unrecognised) → recurse for nested sections.\n return sectionNode(ctx, s, buildSectionTree(ctx, scopeSegs, s.seg.section, sectionPaths));\n });\n}\n\n// ── build a sidebarRoot for a single scope ─────────────────────────────────\n\n/**\n * Assemble the children of a scope's sidebar root in cross-segment order.\n * `tabRoot` segments contribute their page/link artifacts inline at their\n * sort position; depth-0 `section`/`apiReference`/`changelog` segments become\n * their own nodes (with nested sections attached recursively).\n *\n * Segments whose parent section path doesn't correspond to any existing\n * segment are \"orphaned\" and emitted at the top level. This happens when\n * the publish transform skips segment creation for an apiReference with no\n * direct artifacts (e.g. no overview page), leaving only apiPackage children\n * like `rest-api/store` with no `rest-api` parent segment.\n */\nfunction buildSidebarRootChildren(ctx: BuildContext, scopeSegs: ScopedSegment[]): FernNavigation.SidebarRootChild[] {\n const ordered = [...scopeSegs].sort((a, b) => a.seg.sortOrder - b.seg.sortOrder);\n const sectionPaths = new Set(ordered.map((s) => s.seg.section));\n const flat: FernNavigation.NavigationChild[] = [];\n\n for (const s of ordered) {\n const { type } = s.meta;\n const sec = s.seg.section;\n\n if (type === \"tabRoot\" || sec === \"\") {\n // Top-level pages/links of this sidebar root, in nav order.\n for (const r of s.nav) {\n const node = artifactToNode(ctx, r);\n if (node != null) {\n flat.push(node);\n }\n }\n continue;\n }\n\n // Emit segments at root level if they are depth-0 OR orphaned (nearest\n // existing ancestor is root \"\"). Deeper segments with existing parents\n // are attached via buildSectionTree recursion.\n if (isDirectChildOf(sec, \"\", sectionPaths)) {\n if (type === \"apiReference\" || type === \"apiPackage\") {\n flat.push(apiReferenceNode(ctx, s, scopeSegs, sectionPaths));\n } else if (type === \"changelog\") {\n flat.push(changelogNode(ctx, s));\n } else {\n flat.push(sectionNode(ctx, s, buildSectionTree(ctx, scopeSegs, sec, sectionPaths)));\n }\n }\n }\n\n return groupSidebarRootChildren(ctx, flat);\n}\n\n/**\n * `SidebarRootChild` only permits SidebarGroupNode / ApiReferenceNode /\n * SectionNode / VariantedNode. Non-collapsible sections and apiReferences\n * pass through as direct root children (rendered as static headings);\n * collapsible sections, pages, links, and changelogs are wrapped into a\n * SidebarGroupNode so they render via SidebarNavigationChild → collapsible\n * (mirroring the V1→latest migration in NavigationConfigConverter).\n */\nfunction groupSidebarRootChildren(\n ctx: BuildContext,\n children: FernNavigation.NavigationChild[]\n): FernNavigation.SidebarRootChild[] {\n const out: FernNavigation.SidebarRootChild[] = [];\n let run: FernNavigation.NavigationChild[] = [];\n\n const flushRun = () => {\n if (run.length > 0) {\n // Key off the first child's (already-stable) id so the group id is\n // stable across builds and unique per run.\n out.push({\n type: \"sidebarGroup\",\n id: ctx.nodeId(`sidebar-group:${run[0]?.id ?? \"\"}`),\n collapsed: undefined,\n children: run\n });\n run = [];\n }\n };\n\n for (const child of children) {\n if (child.type === \"apiReference\" || child.type === \"varianted\") {\n flushRun();\n out.push(child);\n } else if (\n child.type === \"section\" &&\n (child.collapsible === false || (child.collapsible == null && child.collapsed === false))\n ) {\n // Match SidebarVariantedNode's isStaticHeader logic: a section\n // is a static root heading only when explicitly non-collapsible\n // or when collapsible is unset and collapsed is explicitly false.\n flushRun();\n out.push(child);\n } else {\n run.push(child);\n }\n }\n flushRun();\n return out;\n}\n\nfunction buildSidebarRoot(ctx: BuildContext, scopeSegs: ScopedSegment[]): FernNavigation.SidebarRootNode {\n const first = scopeSegs[0];\n return {\n type: \"sidebarRoot\",\n id: ctx.nodeId(`sidebar:${first != null ? scopeKey(first.seg) : \"root\"}`),\n collapsed: undefined,\n children: buildSidebarRootChildren(ctx, scopeSegs)\n };\n}\n\n// ── public entrypoint ───────────────────────────────────────────────────────\n\n/**\n * Build a full (un-pruned) `RootNode` from the decomposed ledger model.\n */\nexport function buildFullRootFromSegments(options: BuildRootOptions): FernNavigation.RootNode {\n const { basePath, title, segments, navBySegment } = options;\n // Per-call state — never shared across concurrent builds.\n const ctx = createBuildContext(basePath);\n\n const scoped: ScopedSegment[] = segments\n .map((seg) => ({ seg, meta: segMeta(seg), nav: navBySegment.get(seg.segmentHash) ?? [] }))\n // Infrastructure segments (files/redirects) are filtered server-side, but guard here too.\n .filter((s) => s.meta.type !== \"files\" && s.meta.type !== \"redirects\");\n\n const rootSlug = asSlug(basePath);\n\n // Group by scope identity.\n const scopesByKey = new Map<string, ScopedSegment[]>();\n for (const s of scoped) {\n const key = scopeKey(s.seg);\n const arr = scopesByKey.get(key) ?? [];\n arr.push(s);\n scopesByKey.set(key, arr);\n }\n\n const products = uniqueDetails(scoped, \"product\");\n const versions = uniqueDetails(scoped, \"version\");\n const tabs = uniqueDetails(scoped, \"tab\");\n\n let child: FernNavigation.RootChild;\n\n if (products.length > 0) {\n child = buildProductGroup(ctx, products, scoped, rootSlug);\n } else if (versions.length > 0) {\n child = buildVersioned(ctx, versions, scoped, rootSlug, undefined);\n } else {\n child = buildUnversioned(ctx, scoped, tabs.length > 0);\n }\n\n // Derive root.pointsTo from the default child's metadata so root-slug\n // visits redirect correctly even when mutableUpdatePointsTo is skipped\n // (structure-only roots). On the full root mutableUpdatePointsTo\n // recomputes this via tree traversal; this seed value is only visible\n // on structure-only roots where the traversal is intentionally skipped.\n let rootPointsTo: FernNavigation.Slug | undefined;\n if (child.type === \"productgroup\") {\n const defaultProduct = child.children.find((p) => p.default) ?? child.children[0];\n rootPointsTo = defaultProduct?.type === \"product\" ? defaultProduct.pointsTo : undefined;\n } else if (child.type === \"versioned\") {\n const defaultVersion = child.children.find((v) => v.default) ?? child.children[0];\n rootPointsTo = defaultVersion?.pointsTo;\n }\n\n return {\n type: \"root\",\n version: \"v2\",\n ...withMetadataDefaults({\n id: ctx.nodeId(\"root\"),\n title,\n slug: rootSlug,\n icon: undefined,\n hidden: undefined\n }),\n roles: undefined,\n pointsTo: rootPointsTo,\n child\n };\n}\n\n// ── scaffolding builders ────────────────────────────────────────────────────\n\n/**\n * Collapse segment details by logical slug identity (not DB id).\n * Old publishes can leave stale detail rows that share the same slug\n * but lack metadata fields (e.g. `pointsTo`). When duplicates exist\n * we prefer the detail with the most complete metadata.\n */\nfunction uniqueDetails(scoped: ScopedSegment[], dim: \"product\" | \"version\" | \"tab\"): SegmentDetail[] {\n const bySlug = new Map<string, { detail: SegmentDetail; meta: DetailMeta }>();\n for (const s of scoped) {\n const d = s.seg[dim];\n if (d == null) {\n continue;\n }\n const dm = detailMeta(d);\n const slug = dm.slug ?? \"\";\n const existing = bySlug.get(slug);\n if (existing == null || (dm.pointsTo != null && existing.meta.pointsTo == null)) {\n bySlug.set(slug, { detail: d, meta: dm });\n }\n }\n return [...bySlug.values()].map((e) => e.detail).sort((a, b) => a.sortOrder - b.sortOrder);\n}\n\nfunction scopeSlugPrefix(rootSlug: FernNavigation.Slug, ...details: (SegmentDetail | null | undefined)[]): string {\n const parts: string[] = [rootSlug];\n for (const d of details) {\n if (d != null && !detailIsDefault(d)) {\n const s = detailSlug(d);\n if (s !== \"\") {\n parts.push(s);\n }\n }\n }\n return FernNavigation.slugjoin(...parts);\n}\n\nfunction buildTabbedOrSidebar(\n ctx: BuildContext,\n scopeSegs: ScopedSegment[],\n tabsPresent: boolean\n): FernNavigation.SidebarRootNode | FernNavigation.TabbedNode {\n if (!tabsPresent) {\n return buildSidebarRoot(ctx, scopeSegs);\n }\n // Group this scope's segments by tab.\n const tabDetails = uniqueDetails(scopeSegs, \"tab\");\n const children: FernNavigation.TabChild[] = tabDetails.map((tab): FernNavigation.TabChild => {\n const tm = detailMeta(tab);\n const tabSlug = asSlug(scopeSlugPrefix(FernNavigation.Slug(\"\"), tab));\n\n if (tm.tab_type === \"link\") {\n return {\n type: \"link\",\n id: ctx.nodeId(`link:${tm.url ?? tabSlug}`),\n collapsed: undefined,\n title: tab.displayName,\n icon: tab.icon ?? undefined,\n url: FernNavigation.Url(tm.url ?? \"\"),\n target: undefined\n };\n }\n\n if (tm.tab_type === \"changelog\") {\n const tabSegs = scopeSegs.filter((s) => s.seg.tab?.id === tab.id);\n const changelogSeg = tabSegs.find((s) => s.meta.type === \"changelog\");\n if (changelogSeg != null) {\n return changelogNode(ctx, changelogSeg);\n }\n // Fallback: empty changelog node for the tab\n return {\n type: \"changelog\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`changelog:${tabSlug}`),\n title: tab.displayName,\n slug: tabSlug,\n icon: tab.icon ?? undefined,\n hidden: tab.hidden,\n viewers: toViewers(tab.viewers)\n }),\n overviewPageId: undefined,\n noindex: undefined,\n children: []\n };\n }\n\n // Default: regular tab\n const tabSegs = scopeSegs.filter((s) => s.seg.tab?.id === tab.id);\n return {\n type: \"tab\",\n ...withMetadataDefaults({\n id: ctx.nodeId(`tab:${tabSlug}`),\n title: tab.displayName,\n slug: tabSlug,\n icon: tab.icon ?? undefined,\n hidden: tab.hidden,\n viewers: toViewers(tab.viewers)\n }),\n pointsTo: pointsToSlug(ctx, tm),\n child: buildSidebarRoot(ctx, tabSegs)\n };\n });\n const first = scopeSegs[0];\n return {\n type: \"tabbed\",\n id: ctx.nodeId(`tabbed:${first != null ? scopeKey(first.seg) : \"root\"}`),\n collapsed: undefined,\n children\n };\n}\n\nfunction buildUnversioned(\n ctx: BuildContext,\n scopeSegs: ScopedSegment[],\n tabsPresent: boolean\n): FernNavigation.UnversionedNode {\n const first = scopeSegs[0];\n return {\n type: \"unversioned\",\n id: ctx.nodeId(`unversioned:${first?.seg.product?.id ?? \"root\"}`),\n collapsed: undefined,\n landingPage: undefined,\n child: buildTabbedOrSidebar(ctx, scopeSegs, tabsPresent)\n };\n}\n\nfunction buildVersioned(\n ctx: BuildContext,\n versions: SegmentDetail[],\n scoped: ScopedSegment[],\n rootSlug: FernNavigation.Slug,\n productPrefix: string | undefined\n): FernNavigation.VersionedNode {\n const children: FernNavigation.VersionNode[] = versions.map((version) => {\n const vm = detailMeta(version);\n const versionSegs = scoped.filter((s) => s.seg.version?.id === version.id);\n const tabsPresent = uniqueDetails(versionSegs, \"tab\").length > 0;\n const prefix = productPrefix ?? (rootSlug as string);\n const slug = vm.default ? prefix : scopeSlugPrefix(rootSlug, version);\n return {\n type: \"version\" as const,\n ...withMetadataDefaults({\n id: ctx.nodeId(`version:${slug}`),\n title: version.displayName,\n slug: asSlug(slug),\n icon: version.icon ?? undefined,\n hidden: version.hidden,\n viewers: toViewers(version.viewers)\n }),\n default: vm.default ?? false,\n versionId: FernNavigation.VersionId(version.id),\n availability: undefined,\n landingPage: undefined,\n announcement: undefined,\n pointsTo: pointsToSlug(ctx, vm),\n child: buildTabbedOrSidebar(ctx, versionSegs, tabsPresent)\n };\n });\n return {\n type: \"versioned\",\n id: ctx.nodeId(`versioned:${productPrefix ?? \"root\"}`),\n collapsed: undefined,\n children\n };\n}\n\nfunction buildProductGroup(\n ctx: BuildContext,\n products: SegmentDetail[],\n scoped: ScopedSegment[],\n rootSlug: FernNavigation.Slug\n): FernNavigation.ProductGroupNode {\n const children: FernNavigation.ProductNode[] = products.map((product) => {\n const pm = detailMeta(product);\n const productSegs = scoped.filter((s) => s.seg.product?.id === product.id);\n const versions = uniqueDetails(productSegs, \"version\");\n const tabsPresent = uniqueDetails(productSegs, \"tab\").length > 0;\n const productPrefix = scopeSlugPrefix(rootSlug, product);\n\n // ProductChild is VersionedNode | UnversionedNode — a version-less\n // product wraps its sidebar/tabs in an UnversionedNode.\n const productChild: FernNavigation.ProductChild =\n versions.length > 0\n ? buildVersioned(ctx, versions, productSegs, rootSlug, productPrefix)\n : buildUnversioned(ctx, productSegs, tabsPresent);\n\n return {\n type: \"product\" as const,\n ...withMetadataDefaults({\n id: ctx.nodeId(`product:${productPrefix}`),\n title: product.displayName,\n slug: asSlug(detailIsDefault(product) ? (rootSlug as string) : productPrefix),\n icon: product.icon ?? undefined,\n hidden: product.hidden,\n viewers: toViewers(product.viewers)\n }),\n default: detailIsDefault(product),\n productId: FernNavigation.ProductId(product.id),\n subtitle: pm.subtitle ?? \"\",\n image: undefined,\n announcement: undefined,\n pointsTo: pointsToSlug(ctx, pm),\n child: productChild\n };\n });\n return {\n type: \"productgroup\",\n id: ctx.nodeId(\"productgroup\"),\n collapsed: undefined,\n landingPage: undefined,\n children\n };\n}\n\n// (root keeps the bare \"root\" id; it is the single tree root.)\n"],"mappings":"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","names":["z","part","tabSegs"]}
|