@sapphire/fetch 3.0.3-next.d4ebe803.0 → 3.0.3-next.db356eb0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,30 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  var __defProp = Object.defineProperty;
4
+ var __typeError = (msg) => {
5
+ throw TypeError(msg);
6
+ };
4
7
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
8
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
- var __publicField = (obj, key, value) => {
7
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
- return value;
9
- };
10
- var __accessCheck = (obj, member, msg) => {
11
- if (!member.has(obj))
12
- throw TypeError("Cannot " + msg);
13
- };
14
- var __privateGet = (obj, member, getter) => {
15
- __accessCheck(obj, member, "read from private field");
16
- return getter ? getter.call(obj) : member.get(obj);
17
- };
18
- var __privateAdd = (obj, member, value) => {
19
- if (member.has(obj))
20
- throw TypeError("Cannot add the same private member more than once");
21
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
22
- };
23
- var __privateSet = (obj, member, value, setter) => {
24
- __accessCheck(obj, member, "write to private field");
25
- member.set(obj, value);
26
- return value;
27
- };
9
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
11
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
12
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
28
14
 
29
15
  // src/lib/QueryError.ts
30
16
  var _json;
@@ -39,7 +25,7 @@ var _QueryError = class _QueryError extends Error {
39
25
  __publicField(this, "body");
40
26
  /** The original {@link Response} object */
41
27
  __publicField(this, "response");
42
- __privateAdd(this, _json, void 0);
28
+ __privateAdd(this, _json);
43
29
  this.url = url;
44
30
  this.code = code;
45
31
  this.body = body;
@@ -127,8 +113,7 @@ async function fetch(url, options, type) {
127
113
  }
128
114
  const stringUrl = String(url);
129
115
  const result = await globalThis.fetch(stringUrl, { ...options, body });
130
- if (!result.ok)
131
- throw new QueryError(stringUrl, result.status, result, await result.clone().text());
116
+ if (!result.ok) throw new QueryError(stringUrl, result.status, result, await result.clone().text());
132
117
  switch (type) {
133
118
  case "result" /* Result */:
134
119
  return result;
@@ -151,5 +136,5 @@ exports.FetchMethods = FetchMethods;
151
136
  exports.FetchResultTypes = FetchResultTypes;
152
137
  exports.QueryError = QueryError;
153
138
  exports.fetch = fetch;
154
- //# sourceMappingURL=out.js.map
139
+ //# sourceMappingURL=index.cjs.map
155
140
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/QueryError.ts","../../src/lib/types.ts","../../src/lib/fetch.ts"],"names":["FetchResultTypes","FetchMethods","FetchMediaContentTypes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAMO,IAAM,cAAN,MAAM,oBAAmB,MAAM;AAAA,EAY9B,YAAY,KAAa,MAAc,UAAoB,MAAc;AAC/E,UAAM,sBAAsB,GAAG,eAAe,IAAI,GAAG;AAXtD;AAAA,wBAAgB;AAEhB;AAAA,wBAAgB;AAEhB;AAAA,wBAAgB;AAEhB;AAAA,wBAAgB;AAEhB;AAIC,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,uBAAK,OAAQ;AAAA,EACd;AAAA,EAEO,SAAS;AACf,WAAO,mBAAK,UAAU,mBAAK,OAAQ,KAAK,MAAM,KAAK,IAAI;AAAA,EACxD;AACD;AAdC;AAVqC;AAA/B,IAAM,aAAN;;;ACAA,IAAK,mBAAL,kBAAKA,sBAAL;AAON,EAAAA,kBAAA,UAAO;AAMP,EAAAA,kBAAA,YAAS;AAKT,EAAAA,kBAAA,UAAO;AAIP,EAAAA,kBAAA,UAAO;AAIP,EAAAA,kBAAA,YAAS;AA1BE,SAAAA;AAAA,GAAA;AAgCL,IAAK,eAAL,kBAAKC,kBAAL;AAKN,EAAAA,cAAA,SAAM;AAKN,EAAAA,cAAA,UAAO;AAKP,EAAAA,cAAA,UAAO;AAKP,EAAAA,cAAA,SAAM;AAKN,EAAAA,cAAA,YAAS;AAKT,EAAAA,cAAA,aAAU;AAKV,EAAAA,cAAA,aAAU;AAKV,EAAAA,cAAA,WAAQ;AAKR,EAAAA,cAAA,WAAQ;AA7CG,SAAAA;AAAA,GAAA;AAqDL,IAAK,yBAAL,kBAAKC,4BAAL;AAKN,EAAAA,wBAAA,cAAW;AAMX,EAAAA,wBAAA,cAAW;AAMX,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,cAAW;AAMX,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,iBAAc;AAId,EAAAA,wBAAA,cAAW;AAIX,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,aAAU;AAMV,EAAAA,wBAAA,aAAU;AAMV,EAAAA,wBAAA,cAAW;AAMX,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,cAAW;AAKX,EAAAA,wBAAA,oBAAiB;AAKjB,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,cAAW;AAMX,EAAAA,wBAAA,eAAY;AAKZ,EAAAA,wBAAA,cAAW;AAKX,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,UAAO;AAMP,EAAAA,wBAAA,gBAAa;AAMb,EAAAA,wBAAA,iBAAc;AAMd,EAAAA,wBAAA,aAAU;AAKV,EAAAA,wBAAA,cAAW;AAMX,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,cAAW;AAMX,EAAAA,wBAAA,cAAW;AAIX,EAAAA,wBAAA,eAAY;AAMZ,EAAAA,wBAAA,SAAM;AA9KK,SAAAA;AAAA,GAAA;;;ACmDZ,eAAsB,MAAM,KAAmB,SAA6C,MAAyB;AACpH,MAAI,OAAO,YAAY,aAAa;AACnC,cAAU,CAAC;AACX;AAAA,EACD,WAAW,OAAO,YAAY,UAAU;AACvC,WAAO;AACP,cAAU,CAAC;AAAA,EACZ,WAAW,OAAO,SAAS,aAAa;AACvC;AAAA,EACD;AAEA,MAAI,EAAE,KAAK,IAAI;AAEf,MAAI,QAAQ,OAAO,SAAS,UAAU;AACrC,WAAO,KAAK,UAAU,IAAI;AAAA,EAC3B;AAGA,QAAM,YAAY,OAAO,GAAG;AAE5B,QAAM,SAAmB,MAAM,WAAW,MAAM,WAAW,EAAE,GAAG,SAAS,KAAK,CAAC;AAC/E,MAAI,CAAC,OAAO;AAAI,UAAM,IAAI,WAAW,WAAW,OAAO,QAAQ,QAAQ,MAAM,OAAO,MAAM,EAAE,KAAK,CAAC;AAElG,UAAQ,MAAM;AAAA,IACb;AACC,aAAO;AAAA,IACR;AACC,aAAO,OAAO,KAAK,OAAO,MAAM,OAAO,KAAK,GAAG,YAAY,CAAC;AAAA,IAC7D;AACC,aAAO,OAAO,KAAK;AAAA,IACpB;AACC,aAAO,OAAO,KAAK;AAAA,IACpB;AACC,aAAO,OAAO,KAAK;AAAA,IACpB;AACC,YAAM,IAAI,MAAM,iBAAiB,IAAI,GAAG;AAAA,EAC1C;AACD;AArCsB","sourcesContent":["// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The QueryError class which is thrown by the `fetch` method\n */\nexport class QueryError extends Error {\n\t/** The requested url. */\n\tpublic readonly url: string;\n\t/** The HTTP status code. */\n\tpublic readonly code: number;\n\t/** The returned response body as a string */\n\tpublic readonly body: string;\n\t/** The original {@link Response} object */\n\tpublic readonly response: Response;\n\n\t#json: unknown;\n\n\tpublic constructor(url: string, code: number, response: Response, body: string) {\n\t\tsuper(`Failed to request '${url}' with code ${code}.`);\n\t\tthis.url = url;\n\t\tthis.code = code;\n\t\tthis.body = body;\n\t\tthis.response = response;\n\t\tthis.#json = null;\n\t}\n\n\tpublic toJSON() {\n\t\treturn this.#json ?? (this.#json = JSON.parse(this.body));\n\t}\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The supported return types for the `fetch` method\n */\nexport enum FetchResultTypes {\n\t/**\n\t * Returns only the body, as JSON. Similar to [`Body.json()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/json).\n\t *\n\t * You should provide your own type cast (either through the generic return type, or with `as <type>`) to the response to define\n\t * the JSON structure, otherwise the result will be `unknown`.\n\t */\n\tJSON = 'json',\n\t/**\n\t * Returns only the body, as a [Buffer](https://nodejs.org/api/buffer.html).\n\t * @remark Does not work in a Browser environment. For browsers use {@link FetchResultTypes.Blob} instead.\n\t * If you use this type in a Browsers environment a {@link ReferenceError `ReferenceError: Buffer is not defined`} will be thrown!\n\t */\n\tBuffer = 'buffer',\n\t/**\n\t * Returns only the body, as a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).\n\t * @remark For NodeJS environment other `FetchResultTypes` are recommended, but you can use a Blob if you want to.\n\t */\n\tBlob = 'blob',\n\t/**\n\t * Returns only the body, as plain text. Similar to [`Body.text()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/text).\n\t */\n\tText = 'text',\n\t/**\n\t * Returns the entire response and doesn't parse the `body` in any way.\n\t */\n\tResult = 'result'\n}\n\n/**\n * The list of [HTTP Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)\n */\nexport enum FetchMethods {\n\t/**\n\t * The `GET` method requests a representation of the specified resource. Requests using `GET` should only retrieve data.\n\t * @see [MDN / Web / HTTP / Methods / GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET)\n\t */\n\tGet = 'GET',\n\t/**\n\t * The `HEAD` method asks for a response identical to that of a {@link FetchMethods.Get `GET`} request, but without the response body.\n\t * @see [MDN / Web / HTTP / Methods / HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD)\n\t */\n\tHead = 'HEAD',\n\t/**\n\t * The `POST` method is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.\n\t * @see [MDN / Web / HTTP / Methods / POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)\n\t */\n\tPost = 'POST',\n\t/**\n\t * The `PUT` method replaces all current representations of the target resource with the request payload.\n\t * @see [MDN / Web / HTTP / Methods / PUT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT)\n\t */\n\tPut = 'PUT',\n\t/**\n\t * The `DELETE` method deletes the specified resource.\n\t * @see [MDN / Web / HTTP / Methods / DELETE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE)\n\t */\n\tDelete = 'DELETE',\n\t/**\n\t * The `CONNECT` method establishes a tunnel to the server identified by the target resource\n\t * @see [MDN / Web / HTTP / Methods / CONNECT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT)\n\t */\n\tConnect = 'CONNECT',\n\t/**\n\t * The `OPTIONS` method is used to describe the communication options for the target resource.\n\t * @see [MDN / Web / HTTP / Methods / OPTIONS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS)\n\t */\n\tOptions = 'OPTIONS',\n\t/**\n\t * The `TRACE` method performs a message loop-back test along the path to the target resource.\n\t * @see [MDN / Web / HTTP / Methods / TRACE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/TRACE)\n\t */\n\tTrace = 'TRACE',\n\t/**\n\t * The `PATCH` method is used to apply partial modifications to a resource.\n\t * @see [MDN / Web / HTTP / Methods / PATCH](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH)\n\t */\n\tPatch = 'PATCH'\n}\n\n/**\n * A list of common [Media Content Types](https://www.iana.org/assignments/media-types/media-types.xhtml) as defined by the [IANA](https://www.iana.org/).\n * Media Content Types are also known as a Multipurpose Internet Mail Extensions or MIME type\n * Media Content Types are defined and standardized in IETF's [RFC 6838](https://datatracker.ietf.org/doc/html/rfc6838).\n */\nexport enum FetchMediaContentTypes {\n\t/**\n\t * The `audio/aac` media content type.\n\t * @see [Media-Types / audio / aac](https://www.iana.org/assignments/media-types/audio/aac)\n\t */\n\tAudioAac = 'audio/aac',\n\t/**\n\t * The `audio/mp4` media content type.\n\t * @see [Media-Types / audio / mp4](https://www.iana.org/assignments/media-types/audio/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tAudioMp4 = 'audio/mp4',\n\t/**\n\t * The `audio/mpeg` media content type.\n\t * @see [Media-Types / audio / mpeg](https://www.iana.org/assignments/media-types/audio/mpeg)\n\t * @see [[RFC3003](https://www.iana.org/go/rfc3003)]\n\t */\n\tAudioMpeg = 'audio/mpeg',\n\t/**\n\t * The `audio/ogg` media content type.\n\t * @see [Media-Types / audio / ogg](https://www.iana.org/assignments/media-types/audio/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tAudioOgg = 'audio/ogg',\n\t/**\n\t * The `audio/opus` media content type.\n\t * @see [Media-Types / audio / opus](https://www.iana.org/assignments/media-types/audio/opus)\n\t * @see [[RFC7587](https://www.iana.org/go/rfc7587)]\n\t */\n\tAudioOpus = 'audio/opus',\n\t/**\n\t * The `audio/vorbis` media content type.\n\t * @see [Media-Types / audio / vorbis](https://www.iana.org/assignments/media-types/audio/vorbis)\n\t * @see [[RFC5215](https://www.iana.org/go/rfc5215)]\n\t */\n\tAudioVorbis = 'audio/vorbis',\n\t/**\n\t * The `audio/wav` media content type.\n\t */\n\tAudioWav = 'audio/wav',\n\t/**\n\t * The `audio/webm` media content type.\n\t */\n\tAudioWebm = 'audio/webm',\n\t/**\n\t * The `font/otf` media content type.\n\t * @see [Media-Types / font / otf](https://www.iana.org/assignments/media-types/font/otf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontOtf = 'font/otf',\n\t/**\n\t * The `font/ttf` media content type.\n\t * @see [Media-Types / font / ttf](https://www.iana.org/assignments/media-types/font/ttf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontTtf = 'font/ttf',\n\t/**\n\t * The `font/woff` media content type.\n\t * @see [Media-Types / font / woff](https://www.iana.org/assignments/media-types/font/woff)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff = 'font/woff',\n\t/**\n\t * The `font/woff2` media content type.\n\t * @see [Media-Types / font / woff2](https://www.iana.org/assignments/media-types/font/woff2)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff2 = 'font/woff2',\n\t/**\n\t * The `multipart/form-data` media content type.\n\t * @see [Media-Types / multipart / form-data](https://www.iana.org/assignments/media-types/multipart/form-data)\n\t * @see [[RFC7578](https://www.iana.org/go/rfc7578)]\n\t */\n\tFormData = 'multipart/form-data',\n\t/**\n\t * The `x-www-form-urlencoded` media content type.\n\t * @see [Media-Types / application / x-www-form-urlencoded](https://www.iana.org/assignments/media-types/application/x-www-form-urlencoded)\n\t */\n\tFormURLEncoded = 'application/x-www-form-urlencoded',\n\t/**\n\t * The `image/apng` media content type.\n\t * @see [Media-Types / image / apng](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#apng_animated_portable_network_graphics)\n\t */\n\tImageAPNG = 'image/apng',\n\t/**\n\t * The `image/gif` media content type.\n\t * @see [Media-Types / image / gif](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#gif_graphics_interchange_format)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageGIF = 'image/gif',\n\t/**\n\t * The `image/jpeg` media content type.\n\t * @see [Media-Types / image / jpeg](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#jpeg_joint_photographic_experts_group_image)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageJPEG = 'image/jpeg',\n\t/**\n\t * The `image/png` media content type.\n\t * @see [Media-Types / image / png](https://www.iana.org/assignments/media-types/image/png)\n\t */\n\tImagePNG = 'image/png',\n\t/**\n\t * The `image/webp` media content type.\n\t * @see [Media-Types / image / webp](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#webp_image)\n\t */\n\tImageWEBP = 'image/webp',\n\t/**\n\t * The `application/json` media content type.\n\t * @see [Media-Types / application / json](https://www.iana.org/assignments/media-types/application/json)\n\t * @see [[RFC8259](https://www.iana.org/go/rfc8259)]\n\t */\n\tJSON = 'application/json',\n\t/**\n\t * The `application/javascript` media content type.\n\t * @see [Media-Types / application / javascript](https://www.iana.org/assignments/media-types/application/javascript)\n\t * @see [[RFC4329](https://www.iana.org/go/rfc4329)]\n\t */\n\tJavaScript = 'application/javascript',\n\t/**\n\t * The `application/octet-stream` media content type.\n\t * @see [Media-Types / application / octet-stream](https://www.iana.org/assignments/media-types/application/octet-stream)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046(https://www.iana.org/go/rfc2046)]\n\t */\n\tOctetStream = 'application/octet-stream',\n\t/**\n\t * The `text/css` media content type.\n\t * @see [Media-Types / text / css](https://www.iana.org/assignments/media-types/text/css)\n\t * @see [[RFC2318](https://www.iana.org/go/rfc2318)]\n\t */\n\tTextCSS = 'text/css',\n\t/**\n\t * The `text/HTML` media content type.\n\t * @see [Media-Types / text / html](https://www.iana.org/assignments/media-types/text/html)\n\t */\n\tTextHTML = 'text/html',\n\t/**\n\t * The `text/plain` media content type.\n\t * @see [Media-Types / text / plain](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textplain)\n\t * @see [[RFC2046](https://www.iana.org/go/rfc2046)] [[RFC3676](https://www.iana.org/go/rfc3676)] [[RFC5147](https://www.iana.org/go/rfc5147)]\n\t */\n\tTextPlain = 'text/plain',\n\t/**\n\t * The `video/h264` media content type.\n\t * @see [Media-Types / video / h264](https://www.iana.org/assignments/media-types/video/H264)\n\t * @see [[RFC6184](https://www.iana.org/go/rfc6184)]\n\t */\n\tVideoH264 = 'video/h264',\n\t/**\n\t * The `video/h265` media content type.\n\t * @see [Media-Types / video / h265](https://www.iana.org/assignments/media-types/video/H265)\n\t * @see [[RFC7798](https://www.iana.org/go/rfc7798)]\n\t */\n\tVideoH265 = 'video/h265',\n\t/**\n\t * The `video/mp4` media content type.\n\t * @see [Media-Types / video / mp4](https://www.iana.org/assignments/media-types/video/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tVideoMp4 = 'video/mp4',\n\t/**\n\t * The `video/ogg` media content type.\n\t * @see [Media-Types / video / ogg](https://www.iana.org/assignments/media-types/video/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tVideoOgg = 'video/ogg',\n\t/**\n\t * The `video/webm` media content type.\n\t */\n\tVideoWebm = 'video/webm',\n\t/**\n\t * The `application/xml` media content type.\n\t * @see [Media-Types / application / xml](https://www.iana.org/assignments/media-types/application/xml)\n\t * @see [[RFC7303](https://www.iana.org/go/rfc7303)]\n\t */\n\tXML = 'application/xml'\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n\tbody?: BodyInit | Record<any, any>;\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { QueryError } from './QueryError';\nimport { FetchResultTypes, type RequestOptions } from './types';\n\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type: FetchResultTypes): Promise<Response | Blob | Buffer | string | R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch(url: URL | string, options?: RequestOptions | FetchResultTypes, type?: FetchResultTypes) {\n\tif (typeof options === 'undefined') {\n\t\toptions = {};\n\t\ttype = FetchResultTypes.JSON;\n\t} else if (typeof options === 'string') {\n\t\ttype = options;\n\t\toptions = {};\n\t} else if (typeof type === 'undefined') {\n\t\ttype = FetchResultTypes.JSON;\n\t}\n\n\tlet { body } = options;\n\n\tif (body && typeof body === 'object') {\n\t\tbody = JSON.stringify(body);\n\t}\n\n\t// Transform the URL to a String, in case an URL object was passed\n\tconst stringUrl = String(url);\n\n\tconst result: Response = await globalThis.fetch(stringUrl, { ...options, body });\n\tif (!result.ok) throw new QueryError(stringUrl, result.status, result, await result.clone().text());\n\n\tswitch (type) {\n\t\tcase FetchResultTypes.Result:\n\t\t\treturn result;\n\t\tcase FetchResultTypes.Buffer:\n\t\t\treturn Buffer.from(await (await result.blob()).arrayBuffer());\n\t\tcase FetchResultTypes.Blob:\n\t\t\treturn result.blob();\n\t\tcase FetchResultTypes.JSON:\n\t\t\treturn result.json();\n\t\tcase FetchResultTypes.Text:\n\t\t\treturn result.text();\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown type \"${type}\"`);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/QueryError.ts","../../src/lib/types.ts","../../src/lib/fetch.ts"],"names":["FetchResultTypes","FetchMethods","FetchMediaContentTypes"],"mappings":"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","file":"index.cjs","sourcesContent":["// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The QueryError class which is thrown by the `fetch` method\n */\nexport class QueryError extends Error {\n\t/** The requested url. */\n\tpublic readonly url: string;\n\t/** The HTTP status code. */\n\tpublic readonly code: number;\n\t/** The returned response body as a string */\n\tpublic readonly body: string;\n\t/** The original {@link Response} object */\n\tpublic readonly response: Response;\n\n\t#json: unknown;\n\n\tpublic constructor(url: string, code: number, response: Response, body: string) {\n\t\tsuper(`Failed to request '${url}' with code ${code}.`);\n\t\tthis.url = url;\n\t\tthis.code = code;\n\t\tthis.body = body;\n\t\tthis.response = response;\n\t\tthis.#json = null;\n\t}\n\n\tpublic toJSON() {\n\t\treturn this.#json ?? (this.#json = JSON.parse(this.body));\n\t}\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The supported return types for the `fetch` method\n */\nexport enum FetchResultTypes {\n\t/**\n\t * Returns only the body, as JSON. Similar to [`Body.json()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/json).\n\t *\n\t * You should provide your own type cast (either through the generic return type, or with `as <type>`) to the response to define\n\t * the JSON structure, otherwise the result will be `unknown`.\n\t */\n\tJSON = 'json',\n\t/**\n\t * Returns only the body, as a [Buffer](https://nodejs.org/api/buffer.html).\n\t * @remark Does not work in a Browser environment. For browsers use {@link FetchResultTypes.Blob} instead.\n\t * If you use this type in a Browsers environment a {@link ReferenceError `ReferenceError: Buffer is not defined`} will be thrown!\n\t */\n\tBuffer = 'buffer',\n\t/**\n\t * Returns only the body, as a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).\n\t * @remark For NodeJS environment other `FetchResultTypes` are recommended, but you can use a Blob if you want to.\n\t */\n\tBlob = 'blob',\n\t/**\n\t * Returns only the body, as plain text. Similar to [`Body.text()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/text).\n\t */\n\tText = 'text',\n\t/**\n\t * Returns the entire response and doesn't parse the `body` in any way.\n\t */\n\tResult = 'result'\n}\n\n/**\n * The list of [HTTP Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)\n */\nexport enum FetchMethods {\n\t/**\n\t * The `GET` method requests a representation of the specified resource. Requests using `GET` should only retrieve data.\n\t * @see [MDN / Web / HTTP / Methods / GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET)\n\t */\n\tGet = 'GET',\n\t/**\n\t * The `HEAD` method asks for a response identical to that of a {@link FetchMethods.Get `GET`} request, but without the response body.\n\t * @see [MDN / Web / HTTP / Methods / HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD)\n\t */\n\tHead = 'HEAD',\n\t/**\n\t * The `POST` method is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.\n\t * @see [MDN / Web / HTTP / Methods / POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)\n\t */\n\tPost = 'POST',\n\t/**\n\t * The `PUT` method replaces all current representations of the target resource with the request payload.\n\t * @see [MDN / Web / HTTP / Methods / PUT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT)\n\t */\n\tPut = 'PUT',\n\t/**\n\t * The `DELETE` method deletes the specified resource.\n\t * @see [MDN / Web / HTTP / Methods / DELETE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE)\n\t */\n\tDelete = 'DELETE',\n\t/**\n\t * The `CONNECT` method establishes a tunnel to the server identified by the target resource\n\t * @see [MDN / Web / HTTP / Methods / CONNECT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT)\n\t */\n\tConnect = 'CONNECT',\n\t/**\n\t * The `OPTIONS` method is used to describe the communication options for the target resource.\n\t * @see [MDN / Web / HTTP / Methods / OPTIONS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS)\n\t */\n\tOptions = 'OPTIONS',\n\t/**\n\t * The `TRACE` method performs a message loop-back test along the path to the target resource.\n\t * @see [MDN / Web / HTTP / Methods / TRACE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/TRACE)\n\t */\n\tTrace = 'TRACE',\n\t/**\n\t * The `PATCH` method is used to apply partial modifications to a resource.\n\t * @see [MDN / Web / HTTP / Methods / PATCH](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH)\n\t */\n\tPatch = 'PATCH'\n}\n\n/**\n * A list of common [Media Content Types](https://www.iana.org/assignments/media-types/media-types.xhtml) as defined by the [IANA](https://www.iana.org/).\n * Media Content Types are also known as a Multipurpose Internet Mail Extensions or MIME type\n * Media Content Types are defined and standardized in IETF's [RFC 6838](https://datatracker.ietf.org/doc/html/rfc6838).\n */\nexport enum FetchMediaContentTypes {\n\t/**\n\t * The `audio/aac` media content type.\n\t * @see [Media-Types / audio / aac](https://www.iana.org/assignments/media-types/audio/aac)\n\t */\n\tAudioAac = 'audio/aac',\n\t/**\n\t * The `audio/mp4` media content type.\n\t * @see [Media-Types / audio / mp4](https://www.iana.org/assignments/media-types/audio/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tAudioMp4 = 'audio/mp4',\n\t/**\n\t * The `audio/mpeg` media content type.\n\t * @see [Media-Types / audio / mpeg](https://www.iana.org/assignments/media-types/audio/mpeg)\n\t * @see [[RFC3003](https://www.iana.org/go/rfc3003)]\n\t */\n\tAudioMpeg = 'audio/mpeg',\n\t/**\n\t * The `audio/ogg` media content type.\n\t * @see [Media-Types / audio / ogg](https://www.iana.org/assignments/media-types/audio/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tAudioOgg = 'audio/ogg',\n\t/**\n\t * The `audio/opus` media content type.\n\t * @see [Media-Types / audio / opus](https://www.iana.org/assignments/media-types/audio/opus)\n\t * @see [[RFC7587](https://www.iana.org/go/rfc7587)]\n\t */\n\tAudioOpus = 'audio/opus',\n\t/**\n\t * The `audio/vorbis` media content type.\n\t * @see [Media-Types / audio / vorbis](https://www.iana.org/assignments/media-types/audio/vorbis)\n\t * @see [[RFC5215](https://www.iana.org/go/rfc5215)]\n\t */\n\tAudioVorbis = 'audio/vorbis',\n\t/**\n\t * The `audio/wav` media content type.\n\t */\n\tAudioWav = 'audio/wav',\n\t/**\n\t * The `audio/webm` media content type.\n\t */\n\tAudioWebm = 'audio/webm',\n\t/**\n\t * The `font/otf` media content type.\n\t * @see [Media-Types / font / otf](https://www.iana.org/assignments/media-types/font/otf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontOtf = 'font/otf',\n\t/**\n\t * The `font/ttf` media content type.\n\t * @see [Media-Types / font / ttf](https://www.iana.org/assignments/media-types/font/ttf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontTtf = 'font/ttf',\n\t/**\n\t * The `font/woff` media content type.\n\t * @see [Media-Types / font / woff](https://www.iana.org/assignments/media-types/font/woff)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff = 'font/woff',\n\t/**\n\t * The `font/woff2` media content type.\n\t * @see [Media-Types / font / woff2](https://www.iana.org/assignments/media-types/font/woff2)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff2 = 'font/woff2',\n\t/**\n\t * The `multipart/form-data` media content type.\n\t * @see [Media-Types / multipart / form-data](https://www.iana.org/assignments/media-types/multipart/form-data)\n\t * @see [[RFC7578](https://www.iana.org/go/rfc7578)]\n\t */\n\tFormData = 'multipart/form-data',\n\t/**\n\t * The `x-www-form-urlencoded` media content type.\n\t * @see [Media-Types / application / x-www-form-urlencoded](https://www.iana.org/assignments/media-types/application/x-www-form-urlencoded)\n\t */\n\tFormURLEncoded = 'application/x-www-form-urlencoded',\n\t/**\n\t * The `image/apng` media content type.\n\t * @see [Media-Types / image / apng](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#apng_animated_portable_network_graphics)\n\t */\n\tImageAPNG = 'image/apng',\n\t/**\n\t * The `image/gif` media content type.\n\t * @see [Media-Types / image / gif](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#gif_graphics_interchange_format)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageGIF = 'image/gif',\n\t/**\n\t * The `image/jpeg` media content type.\n\t * @see [Media-Types / image / jpeg](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#jpeg_joint_photographic_experts_group_image)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageJPEG = 'image/jpeg',\n\t/**\n\t * The `image/png` media content type.\n\t * @see [Media-Types / image / png](https://www.iana.org/assignments/media-types/image/png)\n\t */\n\tImagePNG = 'image/png',\n\t/**\n\t * The `image/webp` media content type.\n\t * @see [Media-Types / image / webp](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#webp_image)\n\t */\n\tImageWEBP = 'image/webp',\n\t/**\n\t * The `application/json` media content type.\n\t * @see [Media-Types / application / json](https://www.iana.org/assignments/media-types/application/json)\n\t * @see [[RFC8259](https://www.iana.org/go/rfc8259)]\n\t */\n\tJSON = 'application/json',\n\t/**\n\t * The `application/javascript` media content type.\n\t * @see [Media-Types / application / javascript](https://www.iana.org/assignments/media-types/application/javascript)\n\t * @see [[RFC4329](https://www.iana.org/go/rfc4329)]\n\t */\n\tJavaScript = 'application/javascript',\n\t/**\n\t * The `application/octet-stream` media content type.\n\t * @see [Media-Types / application / octet-stream](https://www.iana.org/assignments/media-types/application/octet-stream)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046(https://www.iana.org/go/rfc2046)]\n\t */\n\tOctetStream = 'application/octet-stream',\n\t/**\n\t * The `text/css` media content type.\n\t * @see [Media-Types / text / css](https://www.iana.org/assignments/media-types/text/css)\n\t * @see [[RFC2318](https://www.iana.org/go/rfc2318)]\n\t */\n\tTextCSS = 'text/css',\n\t/**\n\t * The `text/HTML` media content type.\n\t * @see [Media-Types / text / html](https://www.iana.org/assignments/media-types/text/html)\n\t */\n\tTextHTML = 'text/html',\n\t/**\n\t * The `text/plain` media content type.\n\t * @see [Media-Types / text / plain](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textplain)\n\t * @see [[RFC2046](https://www.iana.org/go/rfc2046)] [[RFC3676](https://www.iana.org/go/rfc3676)] [[RFC5147](https://www.iana.org/go/rfc5147)]\n\t */\n\tTextPlain = 'text/plain',\n\t/**\n\t * The `video/h264` media content type.\n\t * @see [Media-Types / video / h264](https://www.iana.org/assignments/media-types/video/H264)\n\t * @see [[RFC6184](https://www.iana.org/go/rfc6184)]\n\t */\n\tVideoH264 = 'video/h264',\n\t/**\n\t * The `video/h265` media content type.\n\t * @see [Media-Types / video / h265](https://www.iana.org/assignments/media-types/video/H265)\n\t * @see [[RFC7798](https://www.iana.org/go/rfc7798)]\n\t */\n\tVideoH265 = 'video/h265',\n\t/**\n\t * The `video/mp4` media content type.\n\t * @see [Media-Types / video / mp4](https://www.iana.org/assignments/media-types/video/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tVideoMp4 = 'video/mp4',\n\t/**\n\t * The `video/ogg` media content type.\n\t * @see [Media-Types / video / ogg](https://www.iana.org/assignments/media-types/video/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tVideoOgg = 'video/ogg',\n\t/**\n\t * The `video/webm` media content type.\n\t */\n\tVideoWebm = 'video/webm',\n\t/**\n\t * The `application/xml` media content type.\n\t * @see [Media-Types / application / xml](https://www.iana.org/assignments/media-types/application/xml)\n\t * @see [[RFC7303](https://www.iana.org/go/rfc7303)]\n\t */\n\tXML = 'application/xml'\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n\tbody?: BodyInit | Record<any, any>;\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { QueryError } from './QueryError';\nimport { FetchResultTypes, type RequestOptions } from './types';\n\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type: FetchResultTypes): Promise<Response | Blob | Buffer | string | R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch(url: URL | string, options?: RequestOptions | FetchResultTypes, type?: FetchResultTypes) {\n\tif (typeof options === 'undefined') {\n\t\toptions = {};\n\t\ttype = FetchResultTypes.JSON;\n\t} else if (typeof options === 'string') {\n\t\ttype = options;\n\t\toptions = {};\n\t} else if (typeof type === 'undefined') {\n\t\ttype = FetchResultTypes.JSON;\n\t}\n\n\tlet { body } = options;\n\n\tif (body && typeof body === 'object') {\n\t\tbody = JSON.stringify(body);\n\t}\n\n\t// Transform the URL to a String, in case an URL object was passed\n\tconst stringUrl = String(url);\n\n\tconst result: Response = await globalThis.fetch(stringUrl, { ...options, body });\n\tif (!result.ok) throw new QueryError(stringUrl, result.status, result, await result.clone().text());\n\n\tswitch (type) {\n\t\tcase FetchResultTypes.Result:\n\t\t\treturn result;\n\t\tcase FetchResultTypes.Buffer:\n\t\t\treturn Buffer.from(await (await result.blob()).arrayBuffer());\n\t\tcase FetchResultTypes.Blob:\n\t\t\treturn result.blob();\n\t\tcase FetchResultTypes.JSON:\n\t\t\treturn result.json();\n\t\tcase FetchResultTypes.Text:\n\t\t\treturn result.text();\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown type \"${type}\"`);\n\t}\n}\n"]}
@@ -1,28 +1,14 @@
1
1
  var __defProp = Object.defineProperty;
2
+ var __typeError = (msg) => {
3
+ throw TypeError(msg);
4
+ };
2
5
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
6
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
- var __publicField = (obj, key, value) => {
5
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- return value;
7
- };
8
- var __accessCheck = (obj, member, msg) => {
9
- if (!member.has(obj))
10
- throw TypeError("Cannot " + msg);
11
- };
12
- var __privateGet = (obj, member, getter) => {
13
- __accessCheck(obj, member, "read from private field");
14
- return getter ? getter.call(obj) : member.get(obj);
15
- };
16
- var __privateAdd = (obj, member, value) => {
17
- if (member.has(obj))
18
- throw TypeError("Cannot add the same private member more than once");
19
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
20
- };
21
- var __privateSet = (obj, member, value, setter) => {
22
- __accessCheck(obj, member, "write to private field");
23
- member.set(obj, value);
24
- return value;
25
- };
7
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
9
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
10
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
11
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
26
12
 
27
13
  // src/lib/QueryError.ts
28
14
  var _json;
@@ -37,7 +23,7 @@ var _QueryError = class _QueryError extends Error {
37
23
  __publicField(this, "body");
38
24
  /** The original {@link Response} object */
39
25
  __publicField(this, "response");
40
- __privateAdd(this, _json, void 0);
26
+ __privateAdd(this, _json);
41
27
  this.url = url;
42
28
  this.code = code;
43
29
  this.body = body;
@@ -125,8 +111,7 @@ async function fetch(url, options, type) {
125
111
  }
126
112
  const stringUrl = String(url);
127
113
  const result = await globalThis.fetch(stringUrl, { ...options, body });
128
- if (!result.ok)
129
- throw new QueryError(stringUrl, result.status, result, await result.clone().text());
114
+ if (!result.ok) throw new QueryError(stringUrl, result.status, result, await result.clone().text());
130
115
  switch (type) {
131
116
  case "result" /* Result */:
132
117
  return result;
@@ -145,5 +130,5 @@ async function fetch(url, options, type) {
145
130
  __name(fetch, "fetch");
146
131
 
147
132
  export { FetchMediaContentTypes, FetchMethods, FetchResultTypes, QueryError, fetch };
148
- //# sourceMappingURL=out.js.map
133
+ //# sourceMappingURL=index.mjs.map
149
134
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/QueryError.ts","../../src/lib/types.ts","../../src/lib/fetch.ts"],"names":["FetchResultTypes","FetchMethods","FetchMediaContentTypes"],"mappings":"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","sourcesContent":["// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The QueryError class which is thrown by the `fetch` method\n */\nexport class QueryError extends Error {\n\t/** The requested url. */\n\tpublic readonly url: string;\n\t/** The HTTP status code. */\n\tpublic readonly code: number;\n\t/** The returned response body as a string */\n\tpublic readonly body: string;\n\t/** The original {@link Response} object */\n\tpublic readonly response: Response;\n\n\t#json: unknown;\n\n\tpublic constructor(url: string, code: number, response: Response, body: string) {\n\t\tsuper(`Failed to request '${url}' with code ${code}.`);\n\t\tthis.url = url;\n\t\tthis.code = code;\n\t\tthis.body = body;\n\t\tthis.response = response;\n\t\tthis.#json = null;\n\t}\n\n\tpublic toJSON() {\n\t\treturn this.#json ?? (this.#json = JSON.parse(this.body));\n\t}\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The supported return types for the `fetch` method\n */\nexport enum FetchResultTypes {\n\t/**\n\t * Returns only the body, as JSON. Similar to [`Body.json()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/json).\n\t *\n\t * You should provide your own type cast (either through the generic return type, or with `as <type>`) to the response to define\n\t * the JSON structure, otherwise the result will be `unknown`.\n\t */\n\tJSON = 'json',\n\t/**\n\t * Returns only the body, as a [Buffer](https://nodejs.org/api/buffer.html).\n\t * @remark Does not work in a Browser environment. For browsers use {@link FetchResultTypes.Blob} instead.\n\t * If you use this type in a Browsers environment a {@link ReferenceError `ReferenceError: Buffer is not defined`} will be thrown!\n\t */\n\tBuffer = 'buffer',\n\t/**\n\t * Returns only the body, as a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).\n\t * @remark For NodeJS environment other `FetchResultTypes` are recommended, but you can use a Blob if you want to.\n\t */\n\tBlob = 'blob',\n\t/**\n\t * Returns only the body, as plain text. Similar to [`Body.text()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/text).\n\t */\n\tText = 'text',\n\t/**\n\t * Returns the entire response and doesn't parse the `body` in any way.\n\t */\n\tResult = 'result'\n}\n\n/**\n * The list of [HTTP Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)\n */\nexport enum FetchMethods {\n\t/**\n\t * The `GET` method requests a representation of the specified resource. Requests using `GET` should only retrieve data.\n\t * @see [MDN / Web / HTTP / Methods / GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET)\n\t */\n\tGet = 'GET',\n\t/**\n\t * The `HEAD` method asks for a response identical to that of a {@link FetchMethods.Get `GET`} request, but without the response body.\n\t * @see [MDN / Web / HTTP / Methods / HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD)\n\t */\n\tHead = 'HEAD',\n\t/**\n\t * The `POST` method is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.\n\t * @see [MDN / Web / HTTP / Methods / POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)\n\t */\n\tPost = 'POST',\n\t/**\n\t * The `PUT` method replaces all current representations of the target resource with the request payload.\n\t * @see [MDN / Web / HTTP / Methods / PUT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT)\n\t */\n\tPut = 'PUT',\n\t/**\n\t * The `DELETE` method deletes the specified resource.\n\t * @see [MDN / Web / HTTP / Methods / DELETE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE)\n\t */\n\tDelete = 'DELETE',\n\t/**\n\t * The `CONNECT` method establishes a tunnel to the server identified by the target resource\n\t * @see [MDN / Web / HTTP / Methods / CONNECT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT)\n\t */\n\tConnect = 'CONNECT',\n\t/**\n\t * The `OPTIONS` method is used to describe the communication options for the target resource.\n\t * @see [MDN / Web / HTTP / Methods / OPTIONS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS)\n\t */\n\tOptions = 'OPTIONS',\n\t/**\n\t * The `TRACE` method performs a message loop-back test along the path to the target resource.\n\t * @see [MDN / Web / HTTP / Methods / TRACE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/TRACE)\n\t */\n\tTrace = 'TRACE',\n\t/**\n\t * The `PATCH` method is used to apply partial modifications to a resource.\n\t * @see [MDN / Web / HTTP / Methods / PATCH](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH)\n\t */\n\tPatch = 'PATCH'\n}\n\n/**\n * A list of common [Media Content Types](https://www.iana.org/assignments/media-types/media-types.xhtml) as defined by the [IANA](https://www.iana.org/).\n * Media Content Types are also known as a Multipurpose Internet Mail Extensions or MIME type\n * Media Content Types are defined and standardized in IETF's [RFC 6838](https://datatracker.ietf.org/doc/html/rfc6838).\n */\nexport enum FetchMediaContentTypes {\n\t/**\n\t * The `audio/aac` media content type.\n\t * @see [Media-Types / audio / aac](https://www.iana.org/assignments/media-types/audio/aac)\n\t */\n\tAudioAac = 'audio/aac',\n\t/**\n\t * The `audio/mp4` media content type.\n\t * @see [Media-Types / audio / mp4](https://www.iana.org/assignments/media-types/audio/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tAudioMp4 = 'audio/mp4',\n\t/**\n\t * The `audio/mpeg` media content type.\n\t * @see [Media-Types / audio / mpeg](https://www.iana.org/assignments/media-types/audio/mpeg)\n\t * @see [[RFC3003](https://www.iana.org/go/rfc3003)]\n\t */\n\tAudioMpeg = 'audio/mpeg',\n\t/**\n\t * The `audio/ogg` media content type.\n\t * @see [Media-Types / audio / ogg](https://www.iana.org/assignments/media-types/audio/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tAudioOgg = 'audio/ogg',\n\t/**\n\t * The `audio/opus` media content type.\n\t * @see [Media-Types / audio / opus](https://www.iana.org/assignments/media-types/audio/opus)\n\t * @see [[RFC7587](https://www.iana.org/go/rfc7587)]\n\t */\n\tAudioOpus = 'audio/opus',\n\t/**\n\t * The `audio/vorbis` media content type.\n\t * @see [Media-Types / audio / vorbis](https://www.iana.org/assignments/media-types/audio/vorbis)\n\t * @see [[RFC5215](https://www.iana.org/go/rfc5215)]\n\t */\n\tAudioVorbis = 'audio/vorbis',\n\t/**\n\t * The `audio/wav` media content type.\n\t */\n\tAudioWav = 'audio/wav',\n\t/**\n\t * The `audio/webm` media content type.\n\t */\n\tAudioWebm = 'audio/webm',\n\t/**\n\t * The `font/otf` media content type.\n\t * @see [Media-Types / font / otf](https://www.iana.org/assignments/media-types/font/otf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontOtf = 'font/otf',\n\t/**\n\t * The `font/ttf` media content type.\n\t * @see [Media-Types / font / ttf](https://www.iana.org/assignments/media-types/font/ttf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontTtf = 'font/ttf',\n\t/**\n\t * The `font/woff` media content type.\n\t * @see [Media-Types / font / woff](https://www.iana.org/assignments/media-types/font/woff)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff = 'font/woff',\n\t/**\n\t * The `font/woff2` media content type.\n\t * @see [Media-Types / font / woff2](https://www.iana.org/assignments/media-types/font/woff2)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff2 = 'font/woff2',\n\t/**\n\t * The `multipart/form-data` media content type.\n\t * @see [Media-Types / multipart / form-data](https://www.iana.org/assignments/media-types/multipart/form-data)\n\t * @see [[RFC7578](https://www.iana.org/go/rfc7578)]\n\t */\n\tFormData = 'multipart/form-data',\n\t/**\n\t * The `x-www-form-urlencoded` media content type.\n\t * @see [Media-Types / application / x-www-form-urlencoded](https://www.iana.org/assignments/media-types/application/x-www-form-urlencoded)\n\t */\n\tFormURLEncoded = 'application/x-www-form-urlencoded',\n\t/**\n\t * The `image/apng` media content type.\n\t * @see [Media-Types / image / apng](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#apng_animated_portable_network_graphics)\n\t */\n\tImageAPNG = 'image/apng',\n\t/**\n\t * The `image/gif` media content type.\n\t * @see [Media-Types / image / gif](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#gif_graphics_interchange_format)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageGIF = 'image/gif',\n\t/**\n\t * The `image/jpeg` media content type.\n\t * @see [Media-Types / image / jpeg](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#jpeg_joint_photographic_experts_group_image)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageJPEG = 'image/jpeg',\n\t/**\n\t * The `image/png` media content type.\n\t * @see [Media-Types / image / png](https://www.iana.org/assignments/media-types/image/png)\n\t */\n\tImagePNG = 'image/png',\n\t/**\n\t * The `image/webp` media content type.\n\t * @see [Media-Types / image / webp](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#webp_image)\n\t */\n\tImageWEBP = 'image/webp',\n\t/**\n\t * The `application/json` media content type.\n\t * @see [Media-Types / application / json](https://www.iana.org/assignments/media-types/application/json)\n\t * @see [[RFC8259](https://www.iana.org/go/rfc8259)]\n\t */\n\tJSON = 'application/json',\n\t/**\n\t * The `application/javascript` media content type.\n\t * @see [Media-Types / application / javascript](https://www.iana.org/assignments/media-types/application/javascript)\n\t * @see [[RFC4329](https://www.iana.org/go/rfc4329)]\n\t */\n\tJavaScript = 'application/javascript',\n\t/**\n\t * The `application/octet-stream` media content type.\n\t * @see [Media-Types / application / octet-stream](https://www.iana.org/assignments/media-types/application/octet-stream)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046(https://www.iana.org/go/rfc2046)]\n\t */\n\tOctetStream = 'application/octet-stream',\n\t/**\n\t * The `text/css` media content type.\n\t * @see [Media-Types / text / css](https://www.iana.org/assignments/media-types/text/css)\n\t * @see [[RFC2318](https://www.iana.org/go/rfc2318)]\n\t */\n\tTextCSS = 'text/css',\n\t/**\n\t * The `text/HTML` media content type.\n\t * @see [Media-Types / text / html](https://www.iana.org/assignments/media-types/text/html)\n\t */\n\tTextHTML = 'text/html',\n\t/**\n\t * The `text/plain` media content type.\n\t * @see [Media-Types / text / plain](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textplain)\n\t * @see [[RFC2046](https://www.iana.org/go/rfc2046)] [[RFC3676](https://www.iana.org/go/rfc3676)] [[RFC5147](https://www.iana.org/go/rfc5147)]\n\t */\n\tTextPlain = 'text/plain',\n\t/**\n\t * The `video/h264` media content type.\n\t * @see [Media-Types / video / h264](https://www.iana.org/assignments/media-types/video/H264)\n\t * @see [[RFC6184](https://www.iana.org/go/rfc6184)]\n\t */\n\tVideoH264 = 'video/h264',\n\t/**\n\t * The `video/h265` media content type.\n\t * @see [Media-Types / video / h265](https://www.iana.org/assignments/media-types/video/H265)\n\t * @see [[RFC7798](https://www.iana.org/go/rfc7798)]\n\t */\n\tVideoH265 = 'video/h265',\n\t/**\n\t * The `video/mp4` media content type.\n\t * @see [Media-Types / video / mp4](https://www.iana.org/assignments/media-types/video/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tVideoMp4 = 'video/mp4',\n\t/**\n\t * The `video/ogg` media content type.\n\t * @see [Media-Types / video / ogg](https://www.iana.org/assignments/media-types/video/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tVideoOgg = 'video/ogg',\n\t/**\n\t * The `video/webm` media content type.\n\t */\n\tVideoWebm = 'video/webm',\n\t/**\n\t * The `application/xml` media content type.\n\t * @see [Media-Types / application / xml](https://www.iana.org/assignments/media-types/application/xml)\n\t * @see [[RFC7303](https://www.iana.org/go/rfc7303)]\n\t */\n\tXML = 'application/xml'\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n\tbody?: BodyInit | Record<any, any>;\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { QueryError } from './QueryError';\nimport { FetchResultTypes, type RequestOptions } from './types';\n\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type: FetchResultTypes): Promise<Response | Blob | Buffer | string | R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch(url: URL | string, options?: RequestOptions | FetchResultTypes, type?: FetchResultTypes) {\n\tif (typeof options === 'undefined') {\n\t\toptions = {};\n\t\ttype = FetchResultTypes.JSON;\n\t} else if (typeof options === 'string') {\n\t\ttype = options;\n\t\toptions = {};\n\t} else if (typeof type === 'undefined') {\n\t\ttype = FetchResultTypes.JSON;\n\t}\n\n\tlet { body } = options;\n\n\tif (body && typeof body === 'object') {\n\t\tbody = JSON.stringify(body);\n\t}\n\n\t// Transform the URL to a String, in case an URL object was passed\n\tconst stringUrl = String(url);\n\n\tconst result: Response = await globalThis.fetch(stringUrl, { ...options, body });\n\tif (!result.ok) throw new QueryError(stringUrl, result.status, result, await result.clone().text());\n\n\tswitch (type) {\n\t\tcase FetchResultTypes.Result:\n\t\t\treturn result;\n\t\tcase FetchResultTypes.Buffer:\n\t\t\treturn Buffer.from(await (await result.blob()).arrayBuffer());\n\t\tcase FetchResultTypes.Blob:\n\t\t\treturn result.blob();\n\t\tcase FetchResultTypes.JSON:\n\t\t\treturn result.json();\n\t\tcase FetchResultTypes.Text:\n\t\t\treturn result.text();\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown type \"${type}\"`);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/QueryError.ts","../../src/lib/types.ts","../../src/lib/fetch.ts"],"names":["FetchResultTypes","FetchMethods","FetchMediaContentTypes"],"mappings":"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","file":"index.mjs","sourcesContent":["// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The QueryError class which is thrown by the `fetch` method\n */\nexport class QueryError extends Error {\n\t/** The requested url. */\n\tpublic readonly url: string;\n\t/** The HTTP status code. */\n\tpublic readonly code: number;\n\t/** The returned response body as a string */\n\tpublic readonly body: string;\n\t/** The original {@link Response} object */\n\tpublic readonly response: Response;\n\n\t#json: unknown;\n\n\tpublic constructor(url: string, code: number, response: Response, body: string) {\n\t\tsuper(`Failed to request '${url}' with code ${code}.`);\n\t\tthis.url = url;\n\t\tthis.code = code;\n\t\tthis.body = body;\n\t\tthis.response = response;\n\t\tthis.#json = null;\n\t}\n\n\tpublic toJSON() {\n\t\treturn this.#json ?? (this.#json = JSON.parse(this.body));\n\t}\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The supported return types for the `fetch` method\n */\nexport enum FetchResultTypes {\n\t/**\n\t * Returns only the body, as JSON. Similar to [`Body.json()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/json).\n\t *\n\t * You should provide your own type cast (either through the generic return type, or with `as <type>`) to the response to define\n\t * the JSON structure, otherwise the result will be `unknown`.\n\t */\n\tJSON = 'json',\n\t/**\n\t * Returns only the body, as a [Buffer](https://nodejs.org/api/buffer.html).\n\t * @remark Does not work in a Browser environment. For browsers use {@link FetchResultTypes.Blob} instead.\n\t * If you use this type in a Browsers environment a {@link ReferenceError `ReferenceError: Buffer is not defined`} will be thrown!\n\t */\n\tBuffer = 'buffer',\n\t/**\n\t * Returns only the body, as a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).\n\t * @remark For NodeJS environment other `FetchResultTypes` are recommended, but you can use a Blob if you want to.\n\t */\n\tBlob = 'blob',\n\t/**\n\t * Returns only the body, as plain text. Similar to [`Body.text()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/text).\n\t */\n\tText = 'text',\n\t/**\n\t * Returns the entire response and doesn't parse the `body` in any way.\n\t */\n\tResult = 'result'\n}\n\n/**\n * The list of [HTTP Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)\n */\nexport enum FetchMethods {\n\t/**\n\t * The `GET` method requests a representation of the specified resource. Requests using `GET` should only retrieve data.\n\t * @see [MDN / Web / HTTP / Methods / GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET)\n\t */\n\tGet = 'GET',\n\t/**\n\t * The `HEAD` method asks for a response identical to that of a {@link FetchMethods.Get `GET`} request, but without the response body.\n\t * @see [MDN / Web / HTTP / Methods / HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD)\n\t */\n\tHead = 'HEAD',\n\t/**\n\t * The `POST` method is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.\n\t * @see [MDN / Web / HTTP / Methods / POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)\n\t */\n\tPost = 'POST',\n\t/**\n\t * The `PUT` method replaces all current representations of the target resource with the request payload.\n\t * @see [MDN / Web / HTTP / Methods / PUT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT)\n\t */\n\tPut = 'PUT',\n\t/**\n\t * The `DELETE` method deletes the specified resource.\n\t * @see [MDN / Web / HTTP / Methods / DELETE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE)\n\t */\n\tDelete = 'DELETE',\n\t/**\n\t * The `CONNECT` method establishes a tunnel to the server identified by the target resource\n\t * @see [MDN / Web / HTTP / Methods / CONNECT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT)\n\t */\n\tConnect = 'CONNECT',\n\t/**\n\t * The `OPTIONS` method is used to describe the communication options for the target resource.\n\t * @see [MDN / Web / HTTP / Methods / OPTIONS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS)\n\t */\n\tOptions = 'OPTIONS',\n\t/**\n\t * The `TRACE` method performs a message loop-back test along the path to the target resource.\n\t * @see [MDN / Web / HTTP / Methods / TRACE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/TRACE)\n\t */\n\tTrace = 'TRACE',\n\t/**\n\t * The `PATCH` method is used to apply partial modifications to a resource.\n\t * @see [MDN / Web / HTTP / Methods / PATCH](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH)\n\t */\n\tPatch = 'PATCH'\n}\n\n/**\n * A list of common [Media Content Types](https://www.iana.org/assignments/media-types/media-types.xhtml) as defined by the [IANA](https://www.iana.org/).\n * Media Content Types are also known as a Multipurpose Internet Mail Extensions or MIME type\n * Media Content Types are defined and standardized in IETF's [RFC 6838](https://datatracker.ietf.org/doc/html/rfc6838).\n */\nexport enum FetchMediaContentTypes {\n\t/**\n\t * The `audio/aac` media content type.\n\t * @see [Media-Types / audio / aac](https://www.iana.org/assignments/media-types/audio/aac)\n\t */\n\tAudioAac = 'audio/aac',\n\t/**\n\t * The `audio/mp4` media content type.\n\t * @see [Media-Types / audio / mp4](https://www.iana.org/assignments/media-types/audio/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tAudioMp4 = 'audio/mp4',\n\t/**\n\t * The `audio/mpeg` media content type.\n\t * @see [Media-Types / audio / mpeg](https://www.iana.org/assignments/media-types/audio/mpeg)\n\t * @see [[RFC3003](https://www.iana.org/go/rfc3003)]\n\t */\n\tAudioMpeg = 'audio/mpeg',\n\t/**\n\t * The `audio/ogg` media content type.\n\t * @see [Media-Types / audio / ogg](https://www.iana.org/assignments/media-types/audio/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tAudioOgg = 'audio/ogg',\n\t/**\n\t * The `audio/opus` media content type.\n\t * @see [Media-Types / audio / opus](https://www.iana.org/assignments/media-types/audio/opus)\n\t * @see [[RFC7587](https://www.iana.org/go/rfc7587)]\n\t */\n\tAudioOpus = 'audio/opus',\n\t/**\n\t * The `audio/vorbis` media content type.\n\t * @see [Media-Types / audio / vorbis](https://www.iana.org/assignments/media-types/audio/vorbis)\n\t * @see [[RFC5215](https://www.iana.org/go/rfc5215)]\n\t */\n\tAudioVorbis = 'audio/vorbis',\n\t/**\n\t * The `audio/wav` media content type.\n\t */\n\tAudioWav = 'audio/wav',\n\t/**\n\t * The `audio/webm` media content type.\n\t */\n\tAudioWebm = 'audio/webm',\n\t/**\n\t * The `font/otf` media content type.\n\t * @see [Media-Types / font / otf](https://www.iana.org/assignments/media-types/font/otf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontOtf = 'font/otf',\n\t/**\n\t * The `font/ttf` media content type.\n\t * @see [Media-Types / font / ttf](https://www.iana.org/assignments/media-types/font/ttf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontTtf = 'font/ttf',\n\t/**\n\t * The `font/woff` media content type.\n\t * @see [Media-Types / font / woff](https://www.iana.org/assignments/media-types/font/woff)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff = 'font/woff',\n\t/**\n\t * The `font/woff2` media content type.\n\t * @see [Media-Types / font / woff2](https://www.iana.org/assignments/media-types/font/woff2)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff2 = 'font/woff2',\n\t/**\n\t * The `multipart/form-data` media content type.\n\t * @see [Media-Types / multipart / form-data](https://www.iana.org/assignments/media-types/multipart/form-data)\n\t * @see [[RFC7578](https://www.iana.org/go/rfc7578)]\n\t */\n\tFormData = 'multipart/form-data',\n\t/**\n\t * The `x-www-form-urlencoded` media content type.\n\t * @see [Media-Types / application / x-www-form-urlencoded](https://www.iana.org/assignments/media-types/application/x-www-form-urlencoded)\n\t */\n\tFormURLEncoded = 'application/x-www-form-urlencoded',\n\t/**\n\t * The `image/apng` media content type.\n\t * @see [Media-Types / image / apng](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#apng_animated_portable_network_graphics)\n\t */\n\tImageAPNG = 'image/apng',\n\t/**\n\t * The `image/gif` media content type.\n\t * @see [Media-Types / image / gif](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#gif_graphics_interchange_format)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageGIF = 'image/gif',\n\t/**\n\t * The `image/jpeg` media content type.\n\t * @see [Media-Types / image / jpeg](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#jpeg_joint_photographic_experts_group_image)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageJPEG = 'image/jpeg',\n\t/**\n\t * The `image/png` media content type.\n\t * @see [Media-Types / image / png](https://www.iana.org/assignments/media-types/image/png)\n\t */\n\tImagePNG = 'image/png',\n\t/**\n\t * The `image/webp` media content type.\n\t * @see [Media-Types / image / webp](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#webp_image)\n\t */\n\tImageWEBP = 'image/webp',\n\t/**\n\t * The `application/json` media content type.\n\t * @see [Media-Types / application / json](https://www.iana.org/assignments/media-types/application/json)\n\t * @see [[RFC8259](https://www.iana.org/go/rfc8259)]\n\t */\n\tJSON = 'application/json',\n\t/**\n\t * The `application/javascript` media content type.\n\t * @see [Media-Types / application / javascript](https://www.iana.org/assignments/media-types/application/javascript)\n\t * @see [[RFC4329](https://www.iana.org/go/rfc4329)]\n\t */\n\tJavaScript = 'application/javascript',\n\t/**\n\t * The `application/octet-stream` media content type.\n\t * @see [Media-Types / application / octet-stream](https://www.iana.org/assignments/media-types/application/octet-stream)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046(https://www.iana.org/go/rfc2046)]\n\t */\n\tOctetStream = 'application/octet-stream',\n\t/**\n\t * The `text/css` media content type.\n\t * @see [Media-Types / text / css](https://www.iana.org/assignments/media-types/text/css)\n\t * @see [[RFC2318](https://www.iana.org/go/rfc2318)]\n\t */\n\tTextCSS = 'text/css',\n\t/**\n\t * The `text/HTML` media content type.\n\t * @see [Media-Types / text / html](https://www.iana.org/assignments/media-types/text/html)\n\t */\n\tTextHTML = 'text/html',\n\t/**\n\t * The `text/plain` media content type.\n\t * @see [Media-Types / text / plain](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textplain)\n\t * @see [[RFC2046](https://www.iana.org/go/rfc2046)] [[RFC3676](https://www.iana.org/go/rfc3676)] [[RFC5147](https://www.iana.org/go/rfc5147)]\n\t */\n\tTextPlain = 'text/plain',\n\t/**\n\t * The `video/h264` media content type.\n\t * @see [Media-Types / video / h264](https://www.iana.org/assignments/media-types/video/H264)\n\t * @see [[RFC6184](https://www.iana.org/go/rfc6184)]\n\t */\n\tVideoH264 = 'video/h264',\n\t/**\n\t * The `video/h265` media content type.\n\t * @see [Media-Types / video / h265](https://www.iana.org/assignments/media-types/video/H265)\n\t * @see [[RFC7798](https://www.iana.org/go/rfc7798)]\n\t */\n\tVideoH265 = 'video/h265',\n\t/**\n\t * The `video/mp4` media content type.\n\t * @see [Media-Types / video / mp4](https://www.iana.org/assignments/media-types/video/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tVideoMp4 = 'video/mp4',\n\t/**\n\t * The `video/ogg` media content type.\n\t * @see [Media-Types / video / ogg](https://www.iana.org/assignments/media-types/video/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tVideoOgg = 'video/ogg',\n\t/**\n\t * The `video/webm` media content type.\n\t */\n\tVideoWebm = 'video/webm',\n\t/**\n\t * The `application/xml` media content type.\n\t * @see [Media-Types / application / xml](https://www.iana.org/assignments/media-types/application/xml)\n\t * @see [[RFC7303](https://www.iana.org/go/rfc7303)]\n\t */\n\tXML = 'application/xml'\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n\tbody?: BodyInit | Record<any, any>;\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { QueryError } from './QueryError';\nimport { FetchResultTypes, type RequestOptions } from './types';\n\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type: FetchResultTypes): Promise<Response | Blob | Buffer | string | R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch(url: URL | string, options?: RequestOptions | FetchResultTypes, type?: FetchResultTypes) {\n\tif (typeof options === 'undefined') {\n\t\toptions = {};\n\t\ttype = FetchResultTypes.JSON;\n\t} else if (typeof options === 'string') {\n\t\ttype = options;\n\t\toptions = {};\n\t} else if (typeof type === 'undefined') {\n\t\ttype = FetchResultTypes.JSON;\n\t}\n\n\tlet { body } = options;\n\n\tif (body && typeof body === 'object') {\n\t\tbody = JSON.stringify(body);\n\t}\n\n\t// Transform the URL to a String, in case an URL object was passed\n\tconst stringUrl = String(url);\n\n\tconst result: Response = await globalThis.fetch(stringUrl, { ...options, body });\n\tif (!result.ok) throw new QueryError(stringUrl, result.status, result, await result.clone().text());\n\n\tswitch (type) {\n\t\tcase FetchResultTypes.Result:\n\t\t\treturn result;\n\t\tcase FetchResultTypes.Buffer:\n\t\t\treturn Buffer.from(await (await result.blob()).arrayBuffer());\n\t\tcase FetchResultTypes.Blob:\n\t\t\treturn result.blob();\n\t\tcase FetchResultTypes.JSON:\n\t\t\treturn result.json();\n\t\tcase FetchResultTypes.Text:\n\t\t\treturn result.text();\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown type \"${type}\"`);\n\t}\n}\n"]}
@@ -2,30 +2,16 @@ var SapphireFetch = (function (exports) {
2
2
  'use strict';
3
3
 
4
4
  var __defProp = Object.defineProperty;
5
+ var __typeError = (msg) => {
6
+ throw TypeError(msg);
7
+ };
5
8
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
9
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
- var __publicField = (obj, key, value) => {
8
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
9
- return value;
10
- };
11
- var __accessCheck = (obj, member, msg) => {
12
- if (!member.has(obj))
13
- throw TypeError("Cannot " + msg);
14
- };
15
- var __privateGet = (obj, member, getter) => {
16
- __accessCheck(obj, member, "read from private field");
17
- return getter ? getter.call(obj) : member.get(obj);
18
- };
19
- var __privateAdd = (obj, member, value) => {
20
- if (member.has(obj))
21
- throw TypeError("Cannot add the same private member more than once");
22
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
23
- };
24
- var __privateSet = (obj, member, value, setter) => {
25
- __accessCheck(obj, member, "write to private field");
26
- member.set(obj, value);
27
- return value;
28
- };
10
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
12
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
13
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
14
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
29
15
 
30
16
  // src/lib/QueryError.ts
31
17
  var _json;
@@ -40,7 +26,7 @@ var SapphireFetch = (function (exports) {
40
26
  __publicField(this, "body");
41
27
  /** The original {@link Response} object */
42
28
  __publicField(this, "response");
43
- __privateAdd(this, _json, void 0);
29
+ __privateAdd(this, _json);
44
30
  this.url = url;
45
31
  this.code = code;
46
32
  this.body = body;
@@ -128,8 +114,7 @@ var SapphireFetch = (function (exports) {
128
114
  }
129
115
  const stringUrl = String(url);
130
116
  const result = await globalThis.fetch(stringUrl, { ...options, body });
131
- if (!result.ok)
132
- throw new QueryError(stringUrl, result.status, result, await result.clone().text());
117
+ if (!result.ok) throw new QueryError(stringUrl, result.status, result, await result.clone().text());
133
118
  switch (type) {
134
119
  case "result" /* Result */:
135
120
  return result;
@@ -156,5 +141,5 @@ var SapphireFetch = (function (exports) {
156
141
  return exports;
157
142
 
158
143
  })({});
159
- //# sourceMappingURL=out.js.map
144
+ //# sourceMappingURL=index.global.js.map
160
145
  //# sourceMappingURL=index.global.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/QueryError.ts","../../src/lib/types.ts","../../src/lib/fetch.ts"],"names":["FetchResultTypes","FetchMethods","FetchMediaContentTypes"],"mappings":"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","sourcesContent":["// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The QueryError class which is thrown by the `fetch` method\n */\nexport class QueryError extends Error {\n\t/** The requested url. */\n\tpublic readonly url: string;\n\t/** The HTTP status code. */\n\tpublic readonly code: number;\n\t/** The returned response body as a string */\n\tpublic readonly body: string;\n\t/** The original {@link Response} object */\n\tpublic readonly response: Response;\n\n\t#json: unknown;\n\n\tpublic constructor(url: string, code: number, response: Response, body: string) {\n\t\tsuper(`Failed to request '${url}' with code ${code}.`);\n\t\tthis.url = url;\n\t\tthis.code = code;\n\t\tthis.body = body;\n\t\tthis.response = response;\n\t\tthis.#json = null;\n\t}\n\n\tpublic toJSON() {\n\t\treturn this.#json ?? (this.#json = JSON.parse(this.body));\n\t}\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The supported return types for the `fetch` method\n */\nexport enum FetchResultTypes {\n\t/**\n\t * Returns only the body, as JSON. Similar to [`Body.json()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/json).\n\t *\n\t * You should provide your own type cast (either through the generic return type, or with `as <type>`) to the response to define\n\t * the JSON structure, otherwise the result will be `unknown`.\n\t */\n\tJSON = 'json',\n\t/**\n\t * Returns only the body, as a [Buffer](https://nodejs.org/api/buffer.html).\n\t * @remark Does not work in a Browser environment. For browsers use {@link FetchResultTypes.Blob} instead.\n\t * If you use this type in a Browsers environment a {@link ReferenceError `ReferenceError: Buffer is not defined`} will be thrown!\n\t */\n\tBuffer = 'buffer',\n\t/**\n\t * Returns only the body, as a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).\n\t * @remark For NodeJS environment other `FetchResultTypes` are recommended, but you can use a Blob if you want to.\n\t */\n\tBlob = 'blob',\n\t/**\n\t * Returns only the body, as plain text. Similar to [`Body.text()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/text).\n\t */\n\tText = 'text',\n\t/**\n\t * Returns the entire response and doesn't parse the `body` in any way.\n\t */\n\tResult = 'result'\n}\n\n/**\n * The list of [HTTP Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)\n */\nexport enum FetchMethods {\n\t/**\n\t * The `GET` method requests a representation of the specified resource. Requests using `GET` should only retrieve data.\n\t * @see [MDN / Web / HTTP / Methods / GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET)\n\t */\n\tGet = 'GET',\n\t/**\n\t * The `HEAD` method asks for a response identical to that of a {@link FetchMethods.Get `GET`} request, but without the response body.\n\t * @see [MDN / Web / HTTP / Methods / HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD)\n\t */\n\tHead = 'HEAD',\n\t/**\n\t * The `POST` method is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.\n\t * @see [MDN / Web / HTTP / Methods / POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)\n\t */\n\tPost = 'POST',\n\t/**\n\t * The `PUT` method replaces all current representations of the target resource with the request payload.\n\t * @see [MDN / Web / HTTP / Methods / PUT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT)\n\t */\n\tPut = 'PUT',\n\t/**\n\t * The `DELETE` method deletes the specified resource.\n\t * @see [MDN / Web / HTTP / Methods / DELETE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE)\n\t */\n\tDelete = 'DELETE',\n\t/**\n\t * The `CONNECT` method establishes a tunnel to the server identified by the target resource\n\t * @see [MDN / Web / HTTP / Methods / CONNECT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT)\n\t */\n\tConnect = 'CONNECT',\n\t/**\n\t * The `OPTIONS` method is used to describe the communication options for the target resource.\n\t * @see [MDN / Web / HTTP / Methods / OPTIONS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS)\n\t */\n\tOptions = 'OPTIONS',\n\t/**\n\t * The `TRACE` method performs a message loop-back test along the path to the target resource.\n\t * @see [MDN / Web / HTTP / Methods / TRACE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/TRACE)\n\t */\n\tTrace = 'TRACE',\n\t/**\n\t * The `PATCH` method is used to apply partial modifications to a resource.\n\t * @see [MDN / Web / HTTP / Methods / PATCH](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH)\n\t */\n\tPatch = 'PATCH'\n}\n\n/**\n * A list of common [Media Content Types](https://www.iana.org/assignments/media-types/media-types.xhtml) as defined by the [IANA](https://www.iana.org/).\n * Media Content Types are also known as a Multipurpose Internet Mail Extensions or MIME type\n * Media Content Types are defined and standardized in IETF's [RFC 6838](https://datatracker.ietf.org/doc/html/rfc6838).\n */\nexport enum FetchMediaContentTypes {\n\t/**\n\t * The `audio/aac` media content type.\n\t * @see [Media-Types / audio / aac](https://www.iana.org/assignments/media-types/audio/aac)\n\t */\n\tAudioAac = 'audio/aac',\n\t/**\n\t * The `audio/mp4` media content type.\n\t * @see [Media-Types / audio / mp4](https://www.iana.org/assignments/media-types/audio/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tAudioMp4 = 'audio/mp4',\n\t/**\n\t * The `audio/mpeg` media content type.\n\t * @see [Media-Types / audio / mpeg](https://www.iana.org/assignments/media-types/audio/mpeg)\n\t * @see [[RFC3003](https://www.iana.org/go/rfc3003)]\n\t */\n\tAudioMpeg = 'audio/mpeg',\n\t/**\n\t * The `audio/ogg` media content type.\n\t * @see [Media-Types / audio / ogg](https://www.iana.org/assignments/media-types/audio/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tAudioOgg = 'audio/ogg',\n\t/**\n\t * The `audio/opus` media content type.\n\t * @see [Media-Types / audio / opus](https://www.iana.org/assignments/media-types/audio/opus)\n\t * @see [[RFC7587](https://www.iana.org/go/rfc7587)]\n\t */\n\tAudioOpus = 'audio/opus',\n\t/**\n\t * The `audio/vorbis` media content type.\n\t * @see [Media-Types / audio / vorbis](https://www.iana.org/assignments/media-types/audio/vorbis)\n\t * @see [[RFC5215](https://www.iana.org/go/rfc5215)]\n\t */\n\tAudioVorbis = 'audio/vorbis',\n\t/**\n\t * The `audio/wav` media content type.\n\t */\n\tAudioWav = 'audio/wav',\n\t/**\n\t * The `audio/webm` media content type.\n\t */\n\tAudioWebm = 'audio/webm',\n\t/**\n\t * The `font/otf` media content type.\n\t * @see [Media-Types / font / otf](https://www.iana.org/assignments/media-types/font/otf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontOtf = 'font/otf',\n\t/**\n\t * The `font/ttf` media content type.\n\t * @see [Media-Types / font / ttf](https://www.iana.org/assignments/media-types/font/ttf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontTtf = 'font/ttf',\n\t/**\n\t * The `font/woff` media content type.\n\t * @see [Media-Types / font / woff](https://www.iana.org/assignments/media-types/font/woff)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff = 'font/woff',\n\t/**\n\t * The `font/woff2` media content type.\n\t * @see [Media-Types / font / woff2](https://www.iana.org/assignments/media-types/font/woff2)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff2 = 'font/woff2',\n\t/**\n\t * The `multipart/form-data` media content type.\n\t * @see [Media-Types / multipart / form-data](https://www.iana.org/assignments/media-types/multipart/form-data)\n\t * @see [[RFC7578](https://www.iana.org/go/rfc7578)]\n\t */\n\tFormData = 'multipart/form-data',\n\t/**\n\t * The `x-www-form-urlencoded` media content type.\n\t * @see [Media-Types / application / x-www-form-urlencoded](https://www.iana.org/assignments/media-types/application/x-www-form-urlencoded)\n\t */\n\tFormURLEncoded = 'application/x-www-form-urlencoded',\n\t/**\n\t * The `image/apng` media content type.\n\t * @see [Media-Types / image / apng](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#apng_animated_portable_network_graphics)\n\t */\n\tImageAPNG = 'image/apng',\n\t/**\n\t * The `image/gif` media content type.\n\t * @see [Media-Types / image / gif](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#gif_graphics_interchange_format)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageGIF = 'image/gif',\n\t/**\n\t * The `image/jpeg` media content type.\n\t * @see [Media-Types / image / jpeg](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#jpeg_joint_photographic_experts_group_image)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageJPEG = 'image/jpeg',\n\t/**\n\t * The `image/png` media content type.\n\t * @see [Media-Types / image / png](https://www.iana.org/assignments/media-types/image/png)\n\t */\n\tImagePNG = 'image/png',\n\t/**\n\t * The `image/webp` media content type.\n\t * @see [Media-Types / image / webp](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#webp_image)\n\t */\n\tImageWEBP = 'image/webp',\n\t/**\n\t * The `application/json` media content type.\n\t * @see [Media-Types / application / json](https://www.iana.org/assignments/media-types/application/json)\n\t * @see [[RFC8259](https://www.iana.org/go/rfc8259)]\n\t */\n\tJSON = 'application/json',\n\t/**\n\t * The `application/javascript` media content type.\n\t * @see [Media-Types / application / javascript](https://www.iana.org/assignments/media-types/application/javascript)\n\t * @see [[RFC4329](https://www.iana.org/go/rfc4329)]\n\t */\n\tJavaScript = 'application/javascript',\n\t/**\n\t * The `application/octet-stream` media content type.\n\t * @see [Media-Types / application / octet-stream](https://www.iana.org/assignments/media-types/application/octet-stream)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046(https://www.iana.org/go/rfc2046)]\n\t */\n\tOctetStream = 'application/octet-stream',\n\t/**\n\t * The `text/css` media content type.\n\t * @see [Media-Types / text / css](https://www.iana.org/assignments/media-types/text/css)\n\t * @see [[RFC2318](https://www.iana.org/go/rfc2318)]\n\t */\n\tTextCSS = 'text/css',\n\t/**\n\t * The `text/HTML` media content type.\n\t * @see [Media-Types / text / html](https://www.iana.org/assignments/media-types/text/html)\n\t */\n\tTextHTML = 'text/html',\n\t/**\n\t * The `text/plain` media content type.\n\t * @see [Media-Types / text / plain](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textplain)\n\t * @see [[RFC2046](https://www.iana.org/go/rfc2046)] [[RFC3676](https://www.iana.org/go/rfc3676)] [[RFC5147](https://www.iana.org/go/rfc5147)]\n\t */\n\tTextPlain = 'text/plain',\n\t/**\n\t * The `video/h264` media content type.\n\t * @see [Media-Types / video / h264](https://www.iana.org/assignments/media-types/video/H264)\n\t * @see [[RFC6184](https://www.iana.org/go/rfc6184)]\n\t */\n\tVideoH264 = 'video/h264',\n\t/**\n\t * The `video/h265` media content type.\n\t * @see [Media-Types / video / h265](https://www.iana.org/assignments/media-types/video/H265)\n\t * @see [[RFC7798](https://www.iana.org/go/rfc7798)]\n\t */\n\tVideoH265 = 'video/h265',\n\t/**\n\t * The `video/mp4` media content type.\n\t * @see [Media-Types / video / mp4](https://www.iana.org/assignments/media-types/video/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tVideoMp4 = 'video/mp4',\n\t/**\n\t * The `video/ogg` media content type.\n\t * @see [Media-Types / video / ogg](https://www.iana.org/assignments/media-types/video/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tVideoOgg = 'video/ogg',\n\t/**\n\t * The `video/webm` media content type.\n\t */\n\tVideoWebm = 'video/webm',\n\t/**\n\t * The `application/xml` media content type.\n\t * @see [Media-Types / application / xml](https://www.iana.org/assignments/media-types/application/xml)\n\t * @see [[RFC7303](https://www.iana.org/go/rfc7303)]\n\t */\n\tXML = 'application/xml'\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n\tbody?: BodyInit | Record<any, any>;\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { QueryError } from './QueryError';\nimport { FetchResultTypes, type RequestOptions } from './types';\n\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type: FetchResultTypes): Promise<Response | Blob | Buffer | string | R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch(url: URL | string, options?: RequestOptions | FetchResultTypes, type?: FetchResultTypes) {\n\tif (typeof options === 'undefined') {\n\t\toptions = {};\n\t\ttype = FetchResultTypes.JSON;\n\t} else if (typeof options === 'string') {\n\t\ttype = options;\n\t\toptions = {};\n\t} else if (typeof type === 'undefined') {\n\t\ttype = FetchResultTypes.JSON;\n\t}\n\n\tlet { body } = options;\n\n\tif (body && typeof body === 'object') {\n\t\tbody = JSON.stringify(body);\n\t}\n\n\t// Transform the URL to a String, in case an URL object was passed\n\tconst stringUrl = String(url);\n\n\tconst result: Response = await globalThis.fetch(stringUrl, { ...options, body });\n\tif (!result.ok) throw new QueryError(stringUrl, result.status, result, await result.clone().text());\n\n\tswitch (type) {\n\t\tcase FetchResultTypes.Result:\n\t\t\treturn result;\n\t\tcase FetchResultTypes.Buffer:\n\t\t\treturn Buffer.from(await (await result.blob()).arrayBuffer());\n\t\tcase FetchResultTypes.Blob:\n\t\t\treturn result.blob();\n\t\tcase FetchResultTypes.JSON:\n\t\t\treturn result.json();\n\t\tcase FetchResultTypes.Text:\n\t\t\treturn result.text();\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown type \"${type}\"`);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/QueryError.ts","../../src/lib/types.ts","../../src/lib/fetch.ts"],"names":["FetchResultTypes","FetchMethods","FetchMediaContentTypes"],"mappings":"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","file":"index.global.js","sourcesContent":["// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The QueryError class which is thrown by the `fetch` method\n */\nexport class QueryError extends Error {\n\t/** The requested url. */\n\tpublic readonly url: string;\n\t/** The HTTP status code. */\n\tpublic readonly code: number;\n\t/** The returned response body as a string */\n\tpublic readonly body: string;\n\t/** The original {@link Response} object */\n\tpublic readonly response: Response;\n\n\t#json: unknown;\n\n\tpublic constructor(url: string, code: number, response: Response, body: string) {\n\t\tsuper(`Failed to request '${url}' with code ${code}.`);\n\t\tthis.url = url;\n\t\tthis.code = code;\n\t\tthis.body = body;\n\t\tthis.response = response;\n\t\tthis.#json = null;\n\t}\n\n\tpublic toJSON() {\n\t\treturn this.#json ?? (this.#json = JSON.parse(this.body));\n\t}\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\n/**\n * The supported return types for the `fetch` method\n */\nexport enum FetchResultTypes {\n\t/**\n\t * Returns only the body, as JSON. Similar to [`Body.json()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/json).\n\t *\n\t * You should provide your own type cast (either through the generic return type, or with `as <type>`) to the response to define\n\t * the JSON structure, otherwise the result will be `unknown`.\n\t */\n\tJSON = 'json',\n\t/**\n\t * Returns only the body, as a [Buffer](https://nodejs.org/api/buffer.html).\n\t * @remark Does not work in a Browser environment. For browsers use {@link FetchResultTypes.Blob} instead.\n\t * If you use this type in a Browsers environment a {@link ReferenceError `ReferenceError: Buffer is not defined`} will be thrown!\n\t */\n\tBuffer = 'buffer',\n\t/**\n\t * Returns only the body, as a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).\n\t * @remark For NodeJS environment other `FetchResultTypes` are recommended, but you can use a Blob if you want to.\n\t */\n\tBlob = 'blob',\n\t/**\n\t * Returns only the body, as plain text. Similar to [`Body.text()`](https://developer.mozilla.org/en-US/docs/Web/API/Body/text).\n\t */\n\tText = 'text',\n\t/**\n\t * Returns the entire response and doesn't parse the `body` in any way.\n\t */\n\tResult = 'result'\n}\n\n/**\n * The list of [HTTP Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)\n */\nexport enum FetchMethods {\n\t/**\n\t * The `GET` method requests a representation of the specified resource. Requests using `GET` should only retrieve data.\n\t * @see [MDN / Web / HTTP / Methods / GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET)\n\t */\n\tGet = 'GET',\n\t/**\n\t * The `HEAD` method asks for a response identical to that of a {@link FetchMethods.Get `GET`} request, but without the response body.\n\t * @see [MDN / Web / HTTP / Methods / HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD)\n\t */\n\tHead = 'HEAD',\n\t/**\n\t * The `POST` method is used to submit an entity to the specified resource, often causing a change in state or side effects on the server.\n\t * @see [MDN / Web / HTTP / Methods / POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)\n\t */\n\tPost = 'POST',\n\t/**\n\t * The `PUT` method replaces all current representations of the target resource with the request payload.\n\t * @see [MDN / Web / HTTP / Methods / PUT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT)\n\t */\n\tPut = 'PUT',\n\t/**\n\t * The `DELETE` method deletes the specified resource.\n\t * @see [MDN / Web / HTTP / Methods / DELETE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE)\n\t */\n\tDelete = 'DELETE',\n\t/**\n\t * The `CONNECT` method establishes a tunnel to the server identified by the target resource\n\t * @see [MDN / Web / HTTP / Methods / CONNECT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/CONNECT)\n\t */\n\tConnect = 'CONNECT',\n\t/**\n\t * The `OPTIONS` method is used to describe the communication options for the target resource.\n\t * @see [MDN / Web / HTTP / Methods / OPTIONS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS)\n\t */\n\tOptions = 'OPTIONS',\n\t/**\n\t * The `TRACE` method performs a message loop-back test along the path to the target resource.\n\t * @see [MDN / Web / HTTP / Methods / TRACE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/TRACE)\n\t */\n\tTrace = 'TRACE',\n\t/**\n\t * The `PATCH` method is used to apply partial modifications to a resource.\n\t * @see [MDN / Web / HTTP / Methods / PATCH](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH)\n\t */\n\tPatch = 'PATCH'\n}\n\n/**\n * A list of common [Media Content Types](https://www.iana.org/assignments/media-types/media-types.xhtml) as defined by the [IANA](https://www.iana.org/).\n * Media Content Types are also known as a Multipurpose Internet Mail Extensions or MIME type\n * Media Content Types are defined and standardized in IETF's [RFC 6838](https://datatracker.ietf.org/doc/html/rfc6838).\n */\nexport enum FetchMediaContentTypes {\n\t/**\n\t * The `audio/aac` media content type.\n\t * @see [Media-Types / audio / aac](https://www.iana.org/assignments/media-types/audio/aac)\n\t */\n\tAudioAac = 'audio/aac',\n\t/**\n\t * The `audio/mp4` media content type.\n\t * @see [Media-Types / audio / mp4](https://www.iana.org/assignments/media-types/audio/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tAudioMp4 = 'audio/mp4',\n\t/**\n\t * The `audio/mpeg` media content type.\n\t * @see [Media-Types / audio / mpeg](https://www.iana.org/assignments/media-types/audio/mpeg)\n\t * @see [[RFC3003](https://www.iana.org/go/rfc3003)]\n\t */\n\tAudioMpeg = 'audio/mpeg',\n\t/**\n\t * The `audio/ogg` media content type.\n\t * @see [Media-Types / audio / ogg](https://www.iana.org/assignments/media-types/audio/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tAudioOgg = 'audio/ogg',\n\t/**\n\t * The `audio/opus` media content type.\n\t * @see [Media-Types / audio / opus](https://www.iana.org/assignments/media-types/audio/opus)\n\t * @see [[RFC7587](https://www.iana.org/go/rfc7587)]\n\t */\n\tAudioOpus = 'audio/opus',\n\t/**\n\t * The `audio/vorbis` media content type.\n\t * @see [Media-Types / audio / vorbis](https://www.iana.org/assignments/media-types/audio/vorbis)\n\t * @see [[RFC5215](https://www.iana.org/go/rfc5215)]\n\t */\n\tAudioVorbis = 'audio/vorbis',\n\t/**\n\t * The `audio/wav` media content type.\n\t */\n\tAudioWav = 'audio/wav',\n\t/**\n\t * The `audio/webm` media content type.\n\t */\n\tAudioWebm = 'audio/webm',\n\t/**\n\t * The `font/otf` media content type.\n\t * @see [Media-Types / font / otf](https://www.iana.org/assignments/media-types/font/otf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontOtf = 'font/otf',\n\t/**\n\t * The `font/ttf` media content type.\n\t * @see [Media-Types / font / ttf](https://www.iana.org/assignments/media-types/font/ttf)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontTtf = 'font/ttf',\n\t/**\n\t * The `font/woff` media content type.\n\t * @see [Media-Types / font / woff](https://www.iana.org/assignments/media-types/font/woff)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff = 'font/woff',\n\t/**\n\t * The `font/woff2` media content type.\n\t * @see [Media-Types / font / woff2](https://www.iana.org/assignments/media-types/font/woff2)\n\t * @see [[RFC8081](https://www.iana.org/go/rfc8081)]\n\t */\n\tFontWoff2 = 'font/woff2',\n\t/**\n\t * The `multipart/form-data` media content type.\n\t * @see [Media-Types / multipart / form-data](https://www.iana.org/assignments/media-types/multipart/form-data)\n\t * @see [[RFC7578](https://www.iana.org/go/rfc7578)]\n\t */\n\tFormData = 'multipart/form-data',\n\t/**\n\t * The `x-www-form-urlencoded` media content type.\n\t * @see [Media-Types / application / x-www-form-urlencoded](https://www.iana.org/assignments/media-types/application/x-www-form-urlencoded)\n\t */\n\tFormURLEncoded = 'application/x-www-form-urlencoded',\n\t/**\n\t * The `image/apng` media content type.\n\t * @see [Media-Types / image / apng](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#apng_animated_portable_network_graphics)\n\t */\n\tImageAPNG = 'image/apng',\n\t/**\n\t * The `image/gif` media content type.\n\t * @see [Media-Types / image / gif](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#gif_graphics_interchange_format)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageGIF = 'image/gif',\n\t/**\n\t * The `image/jpeg` media content type.\n\t * @see [Media-Types / image / jpeg](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#jpeg_joint_photographic_experts_group_image)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046](https://www.iana.org/go/rfc2046)]\n\t */\n\tImageJPEG = 'image/jpeg',\n\t/**\n\t * The `image/png` media content type.\n\t * @see [Media-Types / image / png](https://www.iana.org/assignments/media-types/image/png)\n\t */\n\tImagePNG = 'image/png',\n\t/**\n\t * The `image/webp` media content type.\n\t * @see [Media-Types / image / webp](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types#webp_image)\n\t */\n\tImageWEBP = 'image/webp',\n\t/**\n\t * The `application/json` media content type.\n\t * @see [Media-Types / application / json](https://www.iana.org/assignments/media-types/application/json)\n\t * @see [[RFC8259](https://www.iana.org/go/rfc8259)]\n\t */\n\tJSON = 'application/json',\n\t/**\n\t * The `application/javascript` media content type.\n\t * @see [Media-Types / application / javascript](https://www.iana.org/assignments/media-types/application/javascript)\n\t * @see [[RFC4329](https://www.iana.org/go/rfc4329)]\n\t */\n\tJavaScript = 'application/javascript',\n\t/**\n\t * The `application/octet-stream` media content type.\n\t * @see [Media-Types / application / octet-stream](https://www.iana.org/assignments/media-types/application/octet-stream)\n\t * @see [[RFC2045](https://www.iana.org/go/rfc2045)] [[RFC2046(https://www.iana.org/go/rfc2046)]\n\t */\n\tOctetStream = 'application/octet-stream',\n\t/**\n\t * The `text/css` media content type.\n\t * @see [Media-Types / text / css](https://www.iana.org/assignments/media-types/text/css)\n\t * @see [[RFC2318](https://www.iana.org/go/rfc2318)]\n\t */\n\tTextCSS = 'text/css',\n\t/**\n\t * The `text/HTML` media content type.\n\t * @see [Media-Types / text / html](https://www.iana.org/assignments/media-types/text/html)\n\t */\n\tTextHTML = 'text/html',\n\t/**\n\t * The `text/plain` media content type.\n\t * @see [Media-Types / text / plain](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textplain)\n\t * @see [[RFC2046](https://www.iana.org/go/rfc2046)] [[RFC3676](https://www.iana.org/go/rfc3676)] [[RFC5147](https://www.iana.org/go/rfc5147)]\n\t */\n\tTextPlain = 'text/plain',\n\t/**\n\t * The `video/h264` media content type.\n\t * @see [Media-Types / video / h264](https://www.iana.org/assignments/media-types/video/H264)\n\t * @see [[RFC6184](https://www.iana.org/go/rfc6184)]\n\t */\n\tVideoH264 = 'video/h264',\n\t/**\n\t * The `video/h265` media content type.\n\t * @see [Media-Types / video / h265](https://www.iana.org/assignments/media-types/video/H265)\n\t * @see [[RFC7798](https://www.iana.org/go/rfc7798)]\n\t */\n\tVideoH265 = 'video/h265',\n\t/**\n\t * The `video/mp4` media content type.\n\t * @see [Media-Types / video / mp4](https://www.iana.org/assignments/media-types/video/mp4)\n\t * @see [[RFC4337](https://www.iana.org/go/rfc4337)] [[RFC6381](https://www.iana.org/go/rfc6381)]\n\t */\n\tVideoMp4 = 'video/mp4',\n\t/**\n\t * The `video/ogg` media content type.\n\t * @see [Media-Types / video / ogg](https://www.iana.org/assignments/media-types/video/ogg)\n\t * @see [[RFC5334](https://www.iana.org/go/rfc5334)] [[RFC7845](https://www.iana.org/go/rfc7845)]\n\t */\n\tVideoOgg = 'video/ogg',\n\t/**\n\t * The `video/webm` media content type.\n\t */\n\tVideoWebm = 'video/webm',\n\t/**\n\t * The `application/xml` media content type.\n\t * @see [Media-Types / application / xml](https://www.iana.org/assignments/media-types/application/xml)\n\t * @see [[RFC7303](https://www.iana.org/go/rfc7303)]\n\t */\n\tXML = 'application/xml'\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n\tbody?: BodyInit | Record<any, any>;\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { QueryError } from './QueryError';\nimport { FetchResultTypes, type RequestOptions } from './types';\n\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A JSON of the response body. Defaults to `unknown`, with the type set by passing the generic type of this function, or casting the result.\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type?: FetchResultTypes.JSON): Promise<R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://nodejs.org/api/buffer.html `Buffer`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Buffer): Promise<Buffer>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns A {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`} of the response body\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Blob): Promise<Blob>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The response body as a raw `string`.\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Text): Promise<string>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The raw {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript).\n */\nexport async function fetch(url: URL | string, options: RequestOptions, type: FetchResultTypes.Result): Promise<Response>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch<R>(url: URL | string, options: RequestOptions, type: FetchResultTypes): Promise<Response | Blob | Buffer | string | R>;\n/**\n * Performs an HTTP(S) fetch\n *\n * @param url - The URL to send the request to. Can be either a `string` or an `URL` object.\n * `url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected `Promise`.\n * @param options - The {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Request `Request`} ({@link RequestInit} for TypeScript)\n * @param type - The {@link FetchResultTypes}\n *\n * @returns The return type is determined by the provided `type`.\n * - When using `FetchResultTypes.JSON` then the return type is `unknown` by default. The type should be specified by filling in the generic type of the function, or casting the result.\n * - When using `FetchResultTypes.Buffer` the return type will be {@linkplain https://nodejs.org/api/buffer.html `Buffer`}.\n * - When using `FetchResultTypes.Blob` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Blob `Blob`}.\n * - When using `FetchResultTypes.Text` the return type will be a `string`\n * - When using `FetchResultTypes.Result` the return type will be a {@linkplain https://developer.mozilla.org/en-US/docs/Web/API/Response `Response`} ({@link Response} in typescript)\n */\nexport async function fetch(url: URL | string, options?: RequestOptions | FetchResultTypes, type?: FetchResultTypes) {\n\tif (typeof options === 'undefined') {\n\t\toptions = {};\n\t\ttype = FetchResultTypes.JSON;\n\t} else if (typeof options === 'string') {\n\t\ttype = options;\n\t\toptions = {};\n\t} else if (typeof type === 'undefined') {\n\t\ttype = FetchResultTypes.JSON;\n\t}\n\n\tlet { body } = options;\n\n\tif (body && typeof body === 'object') {\n\t\tbody = JSON.stringify(body);\n\t}\n\n\t// Transform the URL to a String, in case an URL object was passed\n\tconst stringUrl = String(url);\n\n\tconst result: Response = await globalThis.fetch(stringUrl, { ...options, body });\n\tif (!result.ok) throw new QueryError(stringUrl, result.status, result, await result.clone().text());\n\n\tswitch (type) {\n\t\tcase FetchResultTypes.Result:\n\t\t\treturn result;\n\t\tcase FetchResultTypes.Buffer:\n\t\t\treturn Buffer.from(await (await result.blob()).arrayBuffer());\n\t\tcase FetchResultTypes.Blob:\n\t\t\treturn result.blob();\n\t\tcase FetchResultTypes.JSON:\n\t\t\treturn result.json();\n\t\tcase FetchResultTypes.Text:\n\t\t\treturn result.text();\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown type \"${type}\"`);\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapphire/fetch",
3
- "version": "3.0.3-next.d4ebe803.0",
3
+ "version": "3.0.3-next.db356eb0",
4
4
  "description": "Tiny wrapper around globalThis.fetch for improved TypeScript and data type support",
5
5
  "author": "@sapphire",
6
6
  "license": "MIT",
@@ -25,12 +25,13 @@
25
25
  "scripts": {
26
26
  "test": "vitest run",
27
27
  "lint": "eslint src tests --ext ts --fix -c ../../.eslintrc",
28
- "build": "tsup && yarn build:rename-cjs-index",
29
- "build:rename-cjs-index": "tsx --tsconfig ../../scripts/tsconfig.json ../../scripts/rename-cjs-index.cts",
28
+ "build": "yarn gen-index && tsup && yarn build:rename-cjs-index",
29
+ "build:rename-cjs-index": "tsx ../../scripts/rename-cjs-index.cts",
30
30
  "docs": "typedoc-json-parser",
31
31
  "prepack": "yarn build",
32
32
  "bump": "cliff-jumper",
33
- "check-update": "cliff-jumper --dry-run"
33
+ "check-update": "cliff-jumper --dry-run",
34
+ "gen-index": "tsx ../../scripts/gen-index.cts -w fetch"
34
35
  },
35
36
  "repository": {
36
37
  "type": "git",
@@ -60,13 +61,13 @@
60
61
  "access": "public"
61
62
  },
62
63
  "devDependencies": {
63
- "@favware/cliff-jumper": "^3.0.3",
64
- "@vitest/coverage-v8": "^1.6.0",
65
- "tsup": "^8.0.2",
66
- "tsx": "^4.10.5",
64
+ "@favware/cliff-jumper": "^4.0.3",
65
+ "@vitest/coverage-v8": "^2.0.4",
66
+ "tsup": "^8.2.3",
67
+ "tsx": "^4.16.2",
67
68
  "typedoc": "^0.25.13",
68
69
  "typedoc-json-parser": "^10.0.0",
69
- "typescript": "^5.4.5",
70
- "vitest": "^1.6.0"
70
+ "typescript": "~5.4.5",
71
+ "vitest": "^2.0.4"
71
72
  }
72
73
  }