Files
supabase/apps/docs/features/helpers.fn.ts
Charis 9846052217 build (docs): lower docs preview build times (#35183)
An experiment in lowering docs preview build times. Build times have gotten quite long again (~12 minutes) because we are generating types on code blocks during prerendering. This wastes compute time building a lot of pages on preview branches that never get viewed, and slows down iteration speed.

Instead, let's only prerender on prod, and build on-demand for preview sites.

Limiting to realtime section for now to monitor the effects of changes.
2025-04-24 15:04:03 -04:00

36 lines
907 B
TypeScript

type RecObj<T extends object, K extends keyof T> = T[K] extends Array<T> ? T : never
const EMPTY_ARRAY = new Array(0)
export function getEmptyArray() {
return EMPTY_ARRAY
}
export function deepFilterRec<T extends object, K extends keyof T>(
arr: Array<RecObj<T, K>>,
recKey: K,
filterFn: (item: T) => boolean
) {
return arr.reduce(
(acc, elem) => {
if (!filterFn(elem)) return acc
if (recKey in elem) {
const newSubitems = deepFilterRec(elem[recKey] as Array<RecObj<T, K>>, recKey, filterFn)
const newElem = { ...elem, [recKey]: newSubitems }
if (newSubitems.length > 0 || filterFn(elem)) acc.push(newElem)
} else {
acc.push(elem)
}
return acc
},
[] as Array<RecObj<T, K>>
)
}
export async function pluckPromise<T, K extends keyof T>(promise: Promise<T>, key: K) {
const data = await promise
return data[key]
}