@plasmicpkgs/fetch 0.0.34 → 0.0.36

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.
package/dist/index.d.ts CHANGED
@@ -16,7 +16,9 @@ export declare interface FetchOpts {
16
16
  body?: string | object;
17
17
  }
18
18
 
19
- declare type HTTPMethod = "GET" | "POST" | "PUT" | "DELETE";
19
+ declare const HTTP_METHODS: readonly ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"];
20
+
21
+ declare type HTTPMethod = (typeof HTTP_METHODS)[number];
20
22
 
21
23
  declare type Registerable = {
22
24
  registerFunction: typeof registerFunction;
package/dist/index.esm.js CHANGED
@@ -1,3 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
1
4
  var __async = (__this, __arguments, generator) => {
2
5
  return new Promise((resolve, reject) => {
3
6
  var fulfilled = (value) => {
@@ -24,11 +27,21 @@ import registerFunction from "@plasmicapp/host/registerFunction";
24
27
  var HttpError = class extends Error {
25
28
  constructor(statusText, info, status) {
26
29
  super(statusText);
27
- this.info = info;
28
- this.status = status;
30
+ __publicField(this, "info", info);
31
+ __publicField(this, "status", status);
29
32
  this.name = "HttpError";
30
33
  }
31
34
  };
35
+ var HTTP_METHODS = [
36
+ "GET",
37
+ "POST",
38
+ "PUT",
39
+ "PATCH",
40
+ "DELETE",
41
+ "HEAD",
42
+ "OPTIONS"
43
+ ];
44
+ var METHODS_WITHOUT_BODY = /* @__PURE__ */ new Set(["GET", "HEAD"]);
32
45
  function base64StringToBuffer(bstr) {
33
46
  try {
34
47
  bstr = atob(bstr);
@@ -106,14 +119,14 @@ var registerFetchParams = {
106
119
  },
107
120
  method: {
108
121
  type: "choice",
109
- options: ["GET", "POST", "PUT", "DELETE"]
122
+ options: [...HTTP_METHODS]
110
123
  },
111
124
  headers: {
112
125
  type: "object"
113
126
  },
114
127
  body: {
115
128
  type: "object",
116
- hidden: ([opts]) => (opts == null ? void 0 : opts.method) === "GET"
129
+ hidden: ([opts]) => !!(opts == null ? void 0 : opts.method) && METHODS_WITHOUT_BODY.has(opts.method)
117
130
  }
118
131
  }
119
132
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\n\ntype Registerable = {\n registerFunction: typeof registerFunction;\n};\n\nclass HttpError extends Error {\n constructor(\n statusText: string,\n readonly info: unknown,\n readonly status: number\n ) {\n super(statusText);\n this.name = \"HttpError\";\n }\n}\n\n// Some functions were extracted from platform/wab/src/wab/server/data-sources/http-fetcher.ts\ntype HTTPMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n\nfunction base64StringToBuffer(bstr: string) {\n try {\n bstr = atob(bstr);\n } catch (e) {\n throw new Error(\"Invalid base64 for binary type\");\n }\n const uint8Array = new Uint8Array(bstr.length);\n for (let i = 0; i < bstr.length; i++) {\n uint8Array[i] = bstr.charCodeAt(i);\n }\n return uint8Array.buffer;\n}\n\nfunction bodyToFetchBody(body?: string | object) {\n if (body == null) {\n return undefined;\n } else if (typeof body === \"object\") {\n return JSON.stringify(body);\n } else if (body.startsWith(\"@binary\")) {\n return base64StringToBuffer(body.slice(\"@binary\".length));\n } else {\n return body;\n }\n}\n\nfunction maybeParseJSON(json: string) {\n try {\n return JSON.parse(json);\n } catch (e) {\n return json;\n }\n}\n\nexport interface FetchOpts {\n url?: string;\n method?: HTTPMethod;\n headers?: Record<string, string>;\n body?: string | object;\n}\n\n// Don't override the global fetch\nasync function wrappedFetch({ url, method, headers = {}, body }: FetchOpts) {\n if (!url) {\n throw new Error(\"Please specify a URL to fetch\");\n }\n\n const headerNamesLowercase = new Set(\n Object.keys(headers).map((headerName) => headerName.toLowerCase())\n );\n if (!headerNamesLowercase.has(\"accept\")) {\n headers[\"Accept\"] = \"application/json\";\n }\n if (body && !headerNamesLowercase.has(\"content-type\")) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n\n const response = await fetch(url, {\n method,\n headers,\n body: bodyToFetchBody(body),\n });\n\n const text = await response.text();\n const maybeJson = maybeParseJSON(text);\n\n // @see https://swr.vercel.app/docs/error-handling\n // If the status code is not in the range 200-299,\n // we still try to parse and throw it.\n if (!response.ok) {\n throw new HttpError(response.statusText, maybeJson, response.status);\n }\n\n return {\n statusCode: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n body: maybeJson,\n };\n}\n\nexport { wrappedFetch as fetch };\n\nconst registerFetchParams: CustomFunctionMeta<typeof wrappedFetch> = {\n name: \"fetch\",\n importPath: \"@plasmicpkgs/fetch\",\n displayName: \"HTTP Fetch\",\n isQuery: true,\n params: [\n {\n name: \"opts\",\n type: \"object\",\n display: \"flatten\",\n fields: {\n url: {\n type: \"string\",\n },\n method: {\n type: \"choice\",\n options: [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n },\n headers: {\n type: \"object\",\n },\n body: {\n type: \"object\",\n hidden: ([opts]) => opts?.method === \"GET\",\n },\n },\n },\n ],\n};\n\nexport function registerFetch(loader?: Registerable) {\n if (loader) {\n loader.registerFunction(wrappedFetch, registerFetchParams);\n } else {\n registerFunction(wrappedFetch, registerFetchParams);\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\n\ntype Registerable = {\n registerFunction: typeof registerFunction;\n};\n\nclass HttpError extends Error {\n constructor(\n statusText: string,\n readonly info: unknown,\n readonly status: number\n ) {\n super(statusText);\n this.name = \"HttpError\";\n }\n}\n\n// Some functions were extracted from platform/wab/src/wab/server/data-sources/http-fetcher.ts\nconst HTTP_METHODS = [\n \"GET\",\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\",\n \"HEAD\",\n \"OPTIONS\",\n] as const;\ntype HTTPMethod = (typeof HTTP_METHODS)[number];\n\nconst METHODS_WITHOUT_BODY: ReadonlySet<HTTPMethod> = new Set([\"GET\", \"HEAD\"]);\n\nfunction base64StringToBuffer(bstr: string) {\n try {\n bstr = atob(bstr);\n } catch (e) {\n throw new Error(\"Invalid base64 for binary type\");\n }\n const uint8Array = new Uint8Array(bstr.length);\n for (let i = 0; i < bstr.length; i++) {\n uint8Array[i] = bstr.charCodeAt(i);\n }\n return uint8Array.buffer;\n}\n\nfunction bodyToFetchBody(body?: string | object) {\n if (body == null) {\n return undefined;\n } else if (typeof body === \"object\") {\n return JSON.stringify(body);\n } else if (body.startsWith(\"@binary\")) {\n return base64StringToBuffer(body.slice(\"@binary\".length));\n } else {\n return body;\n }\n}\n\nfunction maybeParseJSON(json: string) {\n try {\n return JSON.parse(json);\n } catch (e) {\n return json;\n }\n}\n\nexport interface FetchOpts {\n url?: string;\n method?: HTTPMethod;\n headers?: Record<string, string>;\n body?: string | object;\n}\n\n// Don't override the global fetch\nasync function wrappedFetch({ url, method, headers = {}, body }: FetchOpts) {\n if (!url) {\n throw new Error(\"Please specify a URL to fetch\");\n }\n\n const headerNamesLowercase = new Set(\n Object.keys(headers).map((headerName) => headerName.toLowerCase())\n );\n if (!headerNamesLowercase.has(\"accept\")) {\n headers[\"Accept\"] = \"application/json\";\n }\n if (body && !headerNamesLowercase.has(\"content-type\")) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n\n const response = await fetch(url, {\n method,\n headers,\n body: bodyToFetchBody(body),\n });\n\n const text = await response.text();\n const maybeJson = maybeParseJSON(text);\n\n // @see https://swr.vercel.app/docs/error-handling\n // If the status code is not in the range 200-299,\n // we still try to parse and throw it.\n if (!response.ok) {\n throw new HttpError(response.statusText, maybeJson, response.status);\n }\n\n return {\n statusCode: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n body: maybeJson,\n };\n}\n\nexport { wrappedFetch as fetch };\n\nconst registerFetchParams: CustomFunctionMeta<typeof wrappedFetch> = {\n name: \"fetch\",\n importPath: \"@plasmicpkgs/fetch\",\n displayName: \"HTTP Fetch\",\n isQuery: true,\n params: [\n {\n name: \"opts\",\n type: \"object\",\n display: \"flatten\",\n fields: {\n url: {\n type: \"string\",\n },\n method: {\n type: \"choice\",\n options: [...HTTP_METHODS],\n },\n headers: {\n type: \"object\",\n },\n body: {\n type: \"object\",\n hidden: ([opts]) =>\n !!opts?.method && METHODS_WITHOUT_BODY.has(opts.method),\n },\n },\n },\n ],\n};\n\nexport function registerFetch(loader?: Registerable) {\n if (loader) {\n loader.registerFunction(wrappedFetch, registerFetchParams);\n } else {\n registerFunction(wrappedFetch, registerFetchParams);\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
9
  var __export = (target, all) => {
9
10
  for (var name in all)
10
11
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -26,6 +27,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
27
  mod
27
28
  ));
28
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
29
31
  var __async = (__this, __arguments, generator) => {
30
32
  return new Promise((resolve, reject) => {
31
33
  var fulfilled = (value) => {
@@ -48,21 +50,31 @@ var __async = (__this, __arguments, generator) => {
48
50
  };
49
51
 
50
52
  // src/index.ts
51
- var src_exports = {};
52
- __export(src_exports, {
53
+ var index_exports = {};
54
+ __export(index_exports, {
53
55
  fetch: () => wrappedFetch,
54
56
  registerFetch: () => registerFetch
55
57
  });
56
- module.exports = __toCommonJS(src_exports);
58
+ module.exports = __toCommonJS(index_exports);
57
59
  var import_registerFunction = __toESM(require("@plasmicapp/host/registerFunction"));
58
60
  var HttpError = class extends Error {
59
61
  constructor(statusText, info, status) {
60
62
  super(statusText);
61
- this.info = info;
62
- this.status = status;
63
+ __publicField(this, "info", info);
64
+ __publicField(this, "status", status);
63
65
  this.name = "HttpError";
64
66
  }
65
67
  };
68
+ var HTTP_METHODS = [
69
+ "GET",
70
+ "POST",
71
+ "PUT",
72
+ "PATCH",
73
+ "DELETE",
74
+ "HEAD",
75
+ "OPTIONS"
76
+ ];
77
+ var METHODS_WITHOUT_BODY = /* @__PURE__ */ new Set(["GET", "HEAD"]);
66
78
  function base64StringToBuffer(bstr) {
67
79
  try {
68
80
  bstr = atob(bstr);
@@ -140,14 +152,14 @@ var registerFetchParams = {
140
152
  },
141
153
  method: {
142
154
  type: "choice",
143
- options: ["GET", "POST", "PUT", "DELETE"]
155
+ options: [...HTTP_METHODS]
144
156
  },
145
157
  headers: {
146
158
  type: "object"
147
159
  },
148
160
  body: {
149
161
  type: "object",
150
- hidden: ([opts]) => (opts == null ? void 0 : opts.method) === "GET"
162
+ hidden: ([opts]) => !!(opts == null ? void 0 : opts.method) && METHODS_WITHOUT_BODY.has(opts.method)
151
163
  }
152
164
  }
153
165
  }
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\n\ntype Registerable = {\n registerFunction: typeof registerFunction;\n};\n\nclass HttpError extends Error {\n constructor(\n statusText: string,\n readonly info: unknown,\n readonly status: number\n ) {\n super(statusText);\n this.name = \"HttpError\";\n }\n}\n\n// Some functions were extracted from platform/wab/src/wab/server/data-sources/http-fetcher.ts\ntype HTTPMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n\nfunction base64StringToBuffer(bstr: string) {\n try {\n bstr = atob(bstr);\n } catch (e) {\n throw new Error(\"Invalid base64 for binary type\");\n }\n const uint8Array = new Uint8Array(bstr.length);\n for (let i = 0; i < bstr.length; i++) {\n uint8Array[i] = bstr.charCodeAt(i);\n }\n return uint8Array.buffer;\n}\n\nfunction bodyToFetchBody(body?: string | object) {\n if (body == null) {\n return undefined;\n } else if (typeof body === \"object\") {\n return JSON.stringify(body);\n } else if (body.startsWith(\"@binary\")) {\n return base64StringToBuffer(body.slice(\"@binary\".length));\n } else {\n return body;\n }\n}\n\nfunction maybeParseJSON(json: string) {\n try {\n return JSON.parse(json);\n } catch (e) {\n return json;\n }\n}\n\nexport interface FetchOpts {\n url?: string;\n method?: HTTPMethod;\n headers?: Record<string, string>;\n body?: string | object;\n}\n\n// Don't override the global fetch\nasync function wrappedFetch({ url, method, headers = {}, body }: FetchOpts) {\n if (!url) {\n throw new Error(\"Please specify a URL to fetch\");\n }\n\n const headerNamesLowercase = new Set(\n Object.keys(headers).map((headerName) => headerName.toLowerCase())\n );\n if (!headerNamesLowercase.has(\"accept\")) {\n headers[\"Accept\"] = \"application/json\";\n }\n if (body && !headerNamesLowercase.has(\"content-type\")) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n\n const response = await fetch(url, {\n method,\n headers,\n body: bodyToFetchBody(body),\n });\n\n const text = await response.text();\n const maybeJson = maybeParseJSON(text);\n\n // @see https://swr.vercel.app/docs/error-handling\n // If the status code is not in the range 200-299,\n // we still try to parse and throw it.\n if (!response.ok) {\n throw new HttpError(response.statusText, maybeJson, response.status);\n }\n\n return {\n statusCode: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n body: maybeJson,\n };\n}\n\nexport { wrappedFetch as fetch };\n\nconst registerFetchParams: CustomFunctionMeta<typeof wrappedFetch> = {\n name: \"fetch\",\n importPath: \"@plasmicpkgs/fetch\",\n displayName: \"HTTP Fetch\",\n isQuery: true,\n params: [\n {\n name: \"opts\",\n type: \"object\",\n display: \"flatten\",\n fields: {\n url: {\n type: \"string\",\n },\n method: {\n type: \"choice\",\n options: [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n },\n headers: {\n type: \"object\",\n },\n body: {\n type: \"object\",\n hidden: ([opts]) => opts?.method === \"GET\",\n },\n },\n },\n ],\n};\n\nexport function registerFetch(loader?: Registerable) {\n if (loader) {\n loader.registerFunction(wrappedFetch, registerFetchParams);\n } else {\n registerFunction(wrappedFetch, registerFetchParams);\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\n\ntype Registerable = {\n registerFunction: typeof registerFunction;\n};\n\nclass HttpError extends Error {\n constructor(\n statusText: string,\n readonly info: unknown,\n readonly status: number\n ) {\n super(statusText);\n this.name = \"HttpError\";\n }\n}\n\n// Some functions were extracted from platform/wab/src/wab/server/data-sources/http-fetcher.ts\nconst HTTP_METHODS = [\n \"GET\",\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\",\n \"HEAD\",\n \"OPTIONS\",\n] as const;\ntype HTTPMethod = (typeof HTTP_METHODS)[number];\n\nconst METHODS_WITHOUT_BODY: ReadonlySet<HTTPMethod> = new Set([\"GET\", \"HEAD\"]);\n\nfunction base64StringToBuffer(bstr: string) {\n try {\n bstr = atob(bstr);\n } catch (e) {\n throw new Error(\"Invalid base64 for binary type\");\n }\n const uint8Array = new Uint8Array(bstr.length);\n for (let i = 0; i < bstr.length; i++) {\n uint8Array[i] = bstr.charCodeAt(i);\n }\n return uint8Array.buffer;\n}\n\nfunction bodyToFetchBody(body?: string | object) {\n if (body == null) {\n return undefined;\n } else if (typeof body === \"object\") {\n return JSON.stringify(body);\n } else if (body.startsWith(\"@binary\")) {\n return base64StringToBuffer(body.slice(\"@binary\".length));\n } else {\n return body;\n }\n}\n\nfunction maybeParseJSON(json: string) {\n try {\n return JSON.parse(json);\n } catch (e) {\n return json;\n }\n}\n\nexport interface FetchOpts {\n url?: string;\n method?: HTTPMethod;\n headers?: Record<string, string>;\n body?: string | object;\n}\n\n// Don't override the global fetch\nasync function wrappedFetch({ url, method, headers = {}, body }: FetchOpts) {\n if (!url) {\n throw new Error(\"Please specify a URL to fetch\");\n }\n\n const headerNamesLowercase = new Set(\n Object.keys(headers).map((headerName) => headerName.toLowerCase())\n );\n if (!headerNamesLowercase.has(\"accept\")) {\n headers[\"Accept\"] = \"application/json\";\n }\n if (body && !headerNamesLowercase.has(\"content-type\")) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n\n const response = await fetch(url, {\n method,\n headers,\n body: bodyToFetchBody(body),\n });\n\n const text = await response.text();\n const maybeJson = maybeParseJSON(text);\n\n // @see https://swr.vercel.app/docs/error-handling\n // If the status code is not in the range 200-299,\n // we still try to parse and throw it.\n if (!response.ok) {\n throw new HttpError(response.statusText, maybeJson, response.status);\n }\n\n return {\n statusCode: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n body: maybeJson,\n };\n}\n\nexport { wrappedFetch as fetch };\n\nconst registerFetchParams: CustomFunctionMeta<typeof wrappedFetch> = {\n name: \"fetch\",\n importPath: \"@plasmicpkgs/fetch\",\n displayName: \"HTTP Fetch\",\n isQuery: true,\n params: [\n {\n name: \"opts\",\n type: \"object\",\n display: \"flatten\",\n fields: {\n url: {\n type: \"string\",\n },\n method: {\n type: \"choice\",\n options: [...HTTP_METHODS],\n },\n headers: {\n type: \"object\",\n },\n body: {\n type: \"object\",\n hidden: ([opts]) =>\n !!opts?.method && METHODS_WITHOUT_BODY.has(opts.method),\n },\n },\n },\n ],\n};\n\nexport function registerFetch(loader?: Registerable) {\n if (loader) {\n loader.registerFunction(wrappedFetch, registerFetchParams);\n } else {\n registerFunction(wrappedFetch, registerFetchParams);\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["registerFunction"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plasmicpkgs/fetch",
3
- "version": "0.0.34",
3
+ "version": "0.0.36",
4
4
  "description": "Plasmic registration call for fetch function",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,11 +31,11 @@
31
31
  "postpublish": "bash ../../scripts/publish-api-doc-model.sh"
32
32
  },
33
33
  "devDependencies": {
34
- "@plasmicapp/host": "2.0.1",
34
+ "@plasmicapp/host": "2.0.2",
35
35
  "typescript": "^5.7.3"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@plasmicapp/host": ">=1.0.211"
39
39
  },
40
- "gitHead": "dce377f1a8e9fafd7776e49acc077d4a218265e3"
40
+ "gitHead": "a9a1f69ead8f2aebcc4e9b5a63c040c271a92252"
41
41
  }