aboutsummaryrefslogtreecommitdiff
path: root/examples/macros/fetchCSV.tsx
blob: 55a12bc4242b5da27581c96e40ae7a0c2e2a1951 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import Pappa from "papaparse";
// Example usage:
// const rows = fetchCSV(
//   "https://covid19.who.int/WHO-COVID-19-global-data.csv",
//   {
//     last: 100,
//     columns: ["New_cases", "Date_reported", "Country"],
//   }
// );
export async function fetchCSV(callExpression) {
  console.time("fetchCSV Total");
  const [
    urlNode,
    {
      properties: { last: limit = 10, columns = [] },
    },
  ] = callExpression.arguments;
  const url = urlNode.get();

  console.time("Fetch");
  const response = await fetch(url);
  const csvText = await response.text();
  console.timeEnd("Fetch");

  console.time("Parse");
  let rows = Pappa.parse(csvText, { fastMode: true }).data;
  console.timeEnd("Parse");

  console.time("Render");
  const columnIndices = new Array(columns.length);

  for (let i = 0; i < columns.length; i++) {
    columnIndices[i] = rows[0].indexOf(columns[i]);
  }

  rows = rows
    .slice(Math.max(limit, rows.length) - limit)
    .reverse()
    .filter(columns => columns.every(Boolean));
  const value = (
    <array>
      {rows.map(columns => (
        <array>
          {columnIndices.map(columnIndex => (
            <string value={columns[columnIndex]} />
          ))}
        </array>
      ))}
    </array>
  );
  console.timeEnd("Render");
  console.timeEnd("fetchCSV Total");
  return value;
}
ar.com/avatar/5145ad1d8bb861137d85da7a3e32ef36?s=13&d=retro' width='13' height='13' alt='Gravatar' /> Jarred Sumner 1-1/+17 2023-07-28Stat largefile test (#3870)Gravatar Jarred Sumner 1-0/+22 * Add test for stat on a large file * Update fs.test.ts --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-28Ignore when printing to stdout errors (#3869)Gravatar Jarred Sumner 1-2/+4 Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-28Fix bug with `/path/to/absolute/bun.lockb`Gravatar Jarred Sumner 1-10/+13 2023-07-28markBindingGravatar Dylan Conway 1-0/+1 2023-07-28optional parameterGravatar Dylan Conway 1-3/+3 2023-07-28Fixes #3868Gravatar Jarred Sumner 1-2/+3 Fixes #3868 Fixes #849 2023-07-28Fix assertion failure and possible infinite loop when printing as yarn lock ↵Gravatar Jarred Sumner 2-3/+16 files 2023-07-28Mark broken test as todoGravatar Jarred Sumner 2-1/+5 2023-07-28fix types and add message channel/port gc testGravatar Dylan Conway 2-62/+18 2023-07-28`MessageChannel` and `MessagePort` (#3860)Gravatar Dylan Conway 57-247/+3752 * copy and format * copy * copy * cleanup * some tests * spellcheck * add types * don't lock getting contextId * array buffer test 2023-07-28mark tests as todoGravatar Jarred Sumner 2-81/+75 2023-07-28add fork to child_process (#3851)Gravatar Vlad Sirenko 7-19/+446 * add fork to child_process * fix export * add test to child_process method `fork` * fmt fork * remove only from test 2023-07-28feat(bun/test): Impl. expect().pass() & expect().fail() (#3843)Gravatar Tiramify (A.K. Daniel) 6-5/+212 * Impl. pass & fail * fix * fix 2 * smol 2023-07-28fix the chunk boundary (`node:stream:createReadStream`) (#3853)Gravatar Ai Hoshino 3-8/+90 * fix the slice boundary. Close: #3668 * Add more boundary test case. * fix end is 0. 2023-07-28Support file: URLs in `fetch` (#3858)Gravatar Jarred Sumner 6-183/+281 * Support file: URLs in `fetch` * Update url.zig --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-28fix(tls) exposes native canonicalizeIP and fix rootCertificates (#3866)Gravatar Ciro Spaciari 7-29/+125 * exposes native canonicalizeIP * remove unintended duplicate * add tests * add tests for debug builds * add rootCertificates test and fix len * just randomize test ids on prisma * remove work around and bump usockets with the actual fix * fix case * bump uws 2023-07-28Fixes #3795 (#3856)Gravatar Jarred Sumner 11-6/+140 Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-28Add todoGravatar Jarred Sumner 2-0/+8 cc @cirospaciari 2023-07-28Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1 2023-07-28Update pull_request_template.mdGravatar Jarred Sumner 1-11/+16 2023-07-27Fix bug with // @bun annotation in main thread (#3855)Gravatar Jarred Sumner 4-2/+53 * Uncomment test * Fix bug with // @bun + async transpiler --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-27Add `Bun.isMainThread`Gravatar Jarred Sumner 7-3/+48 2023-07-27Uncomment testGravatar Jarred Sumner 1-1/+1 2023-07-27Resolve watch directories outside main thread + async iterator and symlink ↵Gravatar Ciro Spaciari 8-197/+523 fixes (#3846) * linux working pending tests with FSEvents * add more tests, fix async iterator * remove unnecessary check * fix macos symlink on directories * remove indirection layer * todos * fixes and some permission test * fix opsie and make prisma test more reliable * rebase with main * add comptime check for macOS * oops * oops2 * fix symlinks cascade on FSEvents * use JSC.WorkPool * use withResolver, createFIFO and fix close event on async iterator * remove unused events --------- Co-authored-by: Jarred Sumner <jarred@jarredsumner.com> 2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1 2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1 2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-1/+1 2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-2/+2 2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-0/+4 2023-07-27Update pull_request_template.mdGravatar Jarred Sumner 1-5/+11