vike-stack/pages/star-wars/index/+data.ts

22 lines
727 B
TypeScript

// https://vike.dev/data
import fetch from "cross-fetch";
import type { Movie, MovieDetails } from "../types.js";
export type Data = Awaited<ReturnType<typeof data>>;
export const data = async () => {
const response = await fetch("https://brillout.github.io/star-wars/api/films.json");
const moviesData = (await response.json()) as MovieDetails[];
// We remove data we don't need because the data is passed to the client; we should
// minimize what is sent over the network.
const movies = minimize(moviesData);
return movies;
};
function minimize(movies: MovieDetails[]): Movie[] {
return movies.map((movie) => {
const { title, release_date, id } = movie;
return { title, release_date, id };
});
}