From 5da951f421d857e976cecb48f2c204686eb5148b Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 2 Jul 2025 13:24:42 -0700 Subject: [PATCH 1/2] fix: Filter resourceSamples on endpoints like on route --- src/lib/layout/api-endpoint.ts | 16 +++++++++++++- src/lib/layout/api-route.ts | 38 +++++++++++++++++++--------------- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/src/lib/layout/api-endpoint.ts b/src/lib/layout/api-endpoint.ts index 9a0e5b666..78d033a85 100644 --- a/src/lib/layout/api-endpoint.ts +++ b/src/lib/layout/api-endpoint.ts @@ -18,6 +18,7 @@ import { mapResourceSample, normalizePropertyFormatForDocs, type ResourceSampleContext, + resourceSampleFilter, } from './api-route.js' const supportedSdks: SdkName[] = [ @@ -189,6 +190,7 @@ export function setEndpointLayoutContext( endpoint, resources, actionAttempts, + pathMetadata, ).map(mapResourceSample) const [primaryCodeSample, ...additionalCodeSamples] = endpoint.codeSamples @@ -245,6 +247,7 @@ const getResourceSamples = ( endpoint: Endpoint, resources: Resource[], actionAttempts: ActionAttempt[], + pathMetadata: PathMetadata, ): ResourceSample[] => { const { response } = endpoint @@ -268,7 +271,18 @@ const getResourceSamples = ( if (resource == null) return [] - const sample = resource.resourceSamples[0] + const metadata = pathMetadata[resource.routePath] + if (metadata == null) { + throw new Error(`Missing path metadata for ${resource.routePath}`) + } + + const sample = resource.resourceSamples.filter( + resourceSampleFilter({ + include: metadata.include_groups, + exclude: metadata.exclude_groups, + }), + )[0] + if (sample == null) return [] return [ diff --git a/src/lib/layout/api-route.ts b/src/lib/layout/api-route.ts index c5afc46b2..1c90e2081 100644 --- a/src/lib/layout/api-route.ts +++ b/src/lib/layout/api-route.ts @@ -182,10 +182,7 @@ export const setApiRouteLayoutContext = ( ? groupProperties( legacyProperty.properties, legacyProperty.propertyGroups, - { - include: metadata.include_groups, - exclude: metadata.exclude_groups, - }, + groupOptions, ) : null @@ -199,24 +196,31 @@ export const setApiRouteLayoutContext = ( hidePreamble: route.path !== resource.routePath, events: eventsByRoutePath.get(resource.routePath) ?? [], resourceSamples: resource.resourceSamples - .filter(({ title }) => { - if (groupOptions.include != null) { - return groupOptions.include.some((x) => - title.toLowerCase().includes(x.split('_')[0]?.slice(0, -1) ?? ''), - ) - } - if (groupOptions.exclude != null) { - return !groupOptions.exclude.some((x) => - title.toLowerCase().includes(x.split('_')[0]?.slice(0, -1) ?? ''), - ) - } - return true - }) + .filter(resourceSampleFilter(groupOptions)) .map(mapResourceSample), }) } } +export const resourceSampleFilter = + (groupOptions: { + include: string[] | undefined + exclude?: string[] | undefined + }) => + ({ title }: ResourceSample): boolean => { + if (groupOptions.include != null) { + return groupOptions.include.some((x) => + title.toLowerCase().includes(x.split('_')[0]?.slice(0, -1) ?? ''), + ) + } + if (groupOptions.exclude != null) { + return !groupOptions.exclude.some((x) => + title.toLowerCase().includes(x.split('_')[0]?.slice(0, -1) ?? ''), + ) + } + return true + } + const groupVariants = ( property: Property | null, { From d925a0c9fc73701a5787cfc0d77bf799ea8d76d4 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Wed, 2 Jul 2025 16:57:26 -0700 Subject: [PATCH 2/2] Remove strict check --- src/lib/layout/api-endpoint.ts | 7 ++----- src/lib/layout/api-route.ts | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/lib/layout/api-endpoint.ts b/src/lib/layout/api-endpoint.ts index 78d033a85..ea726d84c 100644 --- a/src/lib/layout/api-endpoint.ts +++ b/src/lib/layout/api-endpoint.ts @@ -272,14 +272,11 @@ const getResourceSamples = ( if (resource == null) return [] const metadata = pathMetadata[resource.routePath] - if (metadata == null) { - throw new Error(`Missing path metadata for ${resource.routePath}`) - } const sample = resource.resourceSamples.filter( resourceSampleFilter({ - include: metadata.include_groups, - exclude: metadata.exclude_groups, + include: metadata?.include_groups, + exclude: metadata?.exclude_groups, }), )[0] diff --git a/src/lib/layout/api-route.ts b/src/lib/layout/api-route.ts index 1c90e2081..bacdbbe5b 100644 --- a/src/lib/layout/api-route.ts +++ b/src/lib/layout/api-route.ts @@ -205,7 +205,7 @@ export const setApiRouteLayoutContext = ( export const resourceSampleFilter = (groupOptions: { include: string[] | undefined - exclude?: string[] | undefined + exclude: string[] | undefined }) => ({ title }: ResourceSample): boolean => { if (groupOptions.include != null) {