aboutsummaryrefslogtreecommitdiff
path: root/src/node-fallbacks/node-fetch.js
blob: c65d4f6ed62b624c7d1313180f00b1bb0e8398d4 (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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
var { Headers, Request, Response, Blob, File = Blob, FormData, fetch: realFetch } = globalThis;

if ("Bun" in globalThis) {
  realFetch = Bun.fetch;
}

function fetch(...args) {
  // require("node-fetch") returns the default export which means we need to
  // repeat the ESM exports onto it.
  //
  // We don't want to copy that onto the global fetch object, so we wrap it.
  return realFetch(...args);
}

class AbortError extends DOMException {
  constructor(message) {
    super(message, "AbortError");
  }
}

class FetchBaseError extends Error {
  constructor(message, type) {
    super(message);
    this.type = type;
  }
}

class FetchError extends FetchBaseError {
  constructor(message, type, systemError) {
    super(message, type);
    this.code = systemError?.code;
  }
}

function blobFrom(path, options) {
  if ("Bun" in globalThis) {
    return Promise.resolve(Bun.file(data));
  }

  return fetch(path, options).then(response => response.blob());
}

function blobFromSync(path, options) {
  if ("Bun" in globalThis) {
    return Bun.file(data);
  }

  return fetch(path, options).then(response => response.blob());
}

var fileFrom = blobFrom;
var fileFromSync = blobFromSync;

function isRedirect(code) {
  return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
}

export default Object.assign(fetch, {
  AbortError,
  Blob,
  FetchBaseError,
  FetchError,
  File,
  FormData,
  Headers,
  Request,
  Response,
  blobFrom,
  blobFromSync,
  fileFrom,
  fileFromSync,
  isRedirect,
  default: fetch,
  [Symbol.for("CommonJS")]: 0,
});

export {
  AbortError,
  Blob,
  FetchBaseError,
  FetchError,
  File,
  FormData,
  Headers,
  Request,
  Response,
  blobFrom,
  blobFromSync,
  fileFrom,
  fileFromSync,
  isRedirect,
  fetch,
};
='2023-07-04 15:40:26 -0700'>2023-07-04[tls] fix servername (#3513)Gravatar Ciro Spaciari 4-8/+109 2023-07-04Add alias for readBigUInt64BE ... (#3514)Gravatar Ai Hoshino 2-4/+58 2023-07-04reduce countGravatar Jarred Sumner 1-2/+2 2023-07-04bumpGravatar Jarred Sumner 3-2/+2 2023-07-04Fix crashGravatar Jarred Sumner 1-5/+8