@plasmicpkgs/fetch 0.0.36 → 0.0.38

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.esm.js CHANGED
@@ -108,6 +108,7 @@ var registerFetchParams = {
108
108
  importPath: "@plasmicpkgs/fetch",
109
109
  displayName: "HTTP Fetch",
110
110
  isQuery: true,
111
+ isMutation: true,
111
112
  params: [
112
113
  {
113
114
  name: "opts",
@@ -115,11 +116,13 @@ var registerFetchParams = {
115
116
  display: "flatten",
116
117
  fields: {
117
118
  url: {
118
- type: "string"
119
+ type: "string",
120
+ displayName: "URL"
119
121
  },
120
122
  method: {
121
123
  type: "choice",
122
- options: [...HTTP_METHODS]
124
+ options: [...HTTP_METHODS],
125
+ defaultValue: (_args, _data, extras) => extras.mode === "mutation" ? "POST" : void 0
123
126
  },
124
127
  headers: {
125
128
  type: "object"
@@ -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\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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",
4
+ "sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n FunctionControlExtras,\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 isMutation: true,\n params: [\n {\n name: \"opts\",\n type: \"object\",\n display: \"flatten\",\n fields: {\n url: {\n type: \"string\",\n displayName: \"URL\",\n },\n method: {\n type: \"choice\",\n options: [...HTTP_METHODS],\n defaultValue: (\n _args: unknown,\n _data: unknown,\n extras: FunctionControlExtras\n ) => (extras.mode === \"mutation\" ? \"POST\" : undefined),\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
@@ -141,6 +141,7 @@ var registerFetchParams = {
141
141
  importPath: "@plasmicpkgs/fetch",
142
142
  displayName: "HTTP Fetch",
143
143
  isQuery: true,
144
+ isMutation: true,
144
145
  params: [
145
146
  {
146
147
  name: "opts",
@@ -148,11 +149,13 @@ var registerFetchParams = {
148
149
  display: "flatten",
149
150
  fields: {
150
151
  url: {
151
- type: "string"
152
+ type: "string",
153
+ displayName: "URL"
152
154
  },
153
155
  method: {
154
156
  type: "choice",
155
- options: [...HTTP_METHODS]
157
+ options: [...HTTP_METHODS],
158
+ defaultValue: (_args, _data, extras) => extras.mode === "mutation" ? "POST" : void 0
156
159
  },
157
160
  headers: {
158
161
  type: "object"
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\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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",
4
+ "sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n FunctionControlExtras,\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 isMutation: true,\n params: [\n {\n name: \"opts\",\n type: \"object\",\n display: \"flatten\",\n fields: {\n url: {\n type: \"string\",\n displayName: \"URL\",\n },\n method: {\n type: \"choice\",\n options: [...HTTP_METHODS],\n defaultValue: (\n _args: unknown,\n _data: unknown,\n extras: FunctionControlExtras\n ) => (extras.mode === \"mutation\" ? \"POST\" : undefined),\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.36",
3
+ "version": "0.0.38",
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.2",
34
+ "@plasmicapp/host": "2.0.3",
35
35
  "typescript": "^5.7.3"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@plasmicapp/host": ">=1.0.211"
39
39
  },
40
- "gitHead": "a9a1f69ead8f2aebcc4e9b5a63c040c271a92252"
40
+ "gitHead": "7b2a0cbb652e3ee5e2386828eef113ca0592eae3"
41
41
  }