export async function loader()

in src/components/CompareResults/overTimeLoader.ts [141:201]


export async function loader({ request }: { request: Request }) {
  const url = new URL(request.url);
  //removed fakeData and fetchAllFakeCompareResults until one
  //for compareTime is created
  const baseRepoFromUrl = url.searchParams.get('baseRepo') as
    | Repository['name']
    | null;
  const newRevsFromUrl = url.searchParams.getAll('newRev');
  const newReposFromUrl = url.searchParams.getAll(
    'newRepo',
  ) as Repository['name'][];
  const frameworkFromUrl = url.searchParams.get('framework');
  const intervalFromUrl = url.searchParams.get('selectedTimeRange');

  const {
    baseRepo,
    newRevs,
    newRepos,
    frameworkId,
    frameworkName,
    intervalValue,
    intervalText,
  } = checkValues({
    baseRepo: baseRepoFromUrl,
    newRevs: newRevsFromUrl,
    newRepos: newReposFromUrl,
    framework: frameworkFromUrl,
    interval: intervalFromUrl,
  });

  const resultsTimePromise = fetchCompareOverTimeResultsOnTreeherder({
    baseRepo,
    newRevs,
    newRepos,
    framework: frameworkId,
    interval: intervalValue,
  });

  const newRevsInfoPromises = newRevs.map((newRev, i) =>
    memoizedFetchRevisionForRepository({
      repository: newRepos[i],
      hash: newRev,
    }),
  );

  const newRevsInfo = await Promise.all(newRevsInfoPromises);

  return {
    results: resultsTimePromise,
    baseRepo,
    newRevs,
    newRevsInfo,
    newRepos,
    frameworkId,
    frameworkName,
    intervalValue,
    intervalText,
    view: compareOverTimeView,
    generation: generationCounter++,
  };
}