(context, { url, options })
| 5835 | return new _FetchCommand(url, argExprs, type, conversion, dontThrow); |
| 5836 | } |
| 5837 | resolve(context, { url, options }) { |
| 5838 | var detail = options || {}; |
| 5839 | detail.sender = context.me; |
| 5840 | detail.headers = detail.headers || {}; |
| 5841 | var abortController = new AbortController(); |
| 5842 | var abortListener = () => abortController.abort(); |
| 5843 | context.me.addEventListener("fetch:abort", abortListener, { once: true }); |
| 5844 | detail.signal = abortController.signal; |
| 5845 | context.meta.runtime.triggerEvent(context.me, "hyperscript:beforeFetch", detail); |
| 5846 | context.meta.runtime.triggerEvent(context.me, "fetch:beforeRequest", detail); |
| 5847 | var finished = false; |
| 5848 | if (detail.timeout) { |
| 5849 | setTimeout(() => { |
| 5850 | if (!finished) abortController.abort(); |
| 5851 | }, detail.timeout); |
| 5852 | } |
| 5853 | var complete = (result) => { |
| 5854 | context.result = result; |
| 5855 | context.meta.runtime.triggerEvent(context.me, "fetch:afterRequest", { result }); |
| 5856 | finished = true; |
| 5857 | return this.findNext(context); |
| 5858 | }; |
| 5859 | var checkThrow = !this.dontThrow && this.conversionType !== "response"; |
| 5860 | return fetch(url, detail).then((resp) => { |
| 5861 | var resultDetails = { response: resp }; |
| 5862 | context.meta.runtime.triggerEvent(context.me, "fetch:afterResponse", resultDetails); |
| 5863 | resp = resultDetails.response; |
| 5864 | if (checkThrow) { |
| 5865 | var statusStr = String(resp.status); |
| 5866 | var patterns = config.fetchThrowsOn || []; |
| 5867 | for (var i = 0; i < patterns.length; i++) { |
| 5868 | if (patterns[i].test(statusStr)) { |
| 5869 | var err = new Error("fetch failed: " + resp.status + " " + resp.statusText + " (" + url + ")"); |
| 5870 | err.response = resp; |
| 5871 | err.status = resp.status; |
| 5872 | throw err; |
| 5873 | } |
| 5874 | } |
| 5875 | } |
| 5876 | if (this.conversionType === "response") return complete(resp); |
| 5877 | if (this.conversionType === "json") return resp.json().then(complete); |
| 5878 | return resp.text().then((result) => { |
| 5879 | if (this.conversion) result = context.meta.runtime.convertValue(result, this.conversion); |
| 5880 | if (this.conversionType === "html") result = context.meta.runtime.convertValue(result, "Fragment"); |
| 5881 | return complete(result); |
| 5882 | }); |
| 5883 | }).catch((reason) => { |
| 5884 | context.meta.runtime.triggerEvent(context.me, "fetch:error", { reason }); |
| 5885 | throw reason; |
| 5886 | }).finally(() => { |
| 5887 | context.me.removeEventListener("fetch:abort", abortListener); |
| 5888 | }); |
| 5889 | } |
| 5890 | }; |
| 5891 | function _parseScrollModifiers(parser) { |
| 5892 | parser.matchToken("the"); |
nothing calls this directly
no test coverage detected