MCPcopy Index your code
hub / github.com/bigskysoftware/_hyperscript / resolve

Method resolve

www/js/_hyperscript.js:6189–6248  ·  view source on GitHub ↗
(context, { url, options })

Source from the content-addressed store, hash-verified

6187 return new _FetchCommand(url, argExprs, type, conversion, dontThrow);
6188 }
6189 resolve(context, { url, options }) {
6190 var detail = options || {};
6191 detail.sender = context.me;
6192 detail.headers = detail.headers || {};
6193 detail.conversion = this.conversion || this.conversionType;
6194 var abortController = new AbortController();
6195 var abortListener = () => abortController.abort();
6196 context.me.addEventListener("fetch:abort", abortListener, { once: true });
6197 detail.signal = abortController.signal;
6198 context.meta.runtime.triggerEvent(context.me, "hyperscript:beforeFetch", detail);
6199 context.meta.runtime.triggerEvent(context.me, "fetch:beforeRequest", detail);
6200 var finished = false;
6201 if (detail.timeout) {
6202 setTimeout(() => {
6203 if (!finished) abortController.abort();
6204 }, detail.timeout);
6205 }
6206 var complete = (result) => {
6207 context.result = result;
6208 context.meta.runtime.triggerEvent(context.me, "fetch:afterRequest", { result });
6209 finished = true;
6210 return this.findNext(context);
6211 };
6212 var checkThrow = !this.dontThrow && this.conversionType !== "response";
6213 return fetch(url, detail).then((resp) => {
6214 var resultDetails = { response: resp };
6215 context.meta.runtime.triggerEvent(context.me, "fetch:afterResponse", resultDetails);
6216 resp = resultDetails.response;
6217 if (checkThrow) {
6218 var statusStr = String(resp.status);
6219 var patterns = config.fetchThrowsOn || [];
6220 for (var i = 0; i < patterns.length; i++) {
6221 if (patterns[i].test(statusStr)) {
6222 var err = new Error("fetch failed: " + resp.status + " " + resp.statusText + " (" + url + ")");
6223 err.response = resp;
6224 err.status = resp.status;
6225 throw err;
6226 }
6227 }
6228 }
6229 if (this.conversionType === "response") return complete(resp);
6230 if (this.conversionType === "json") return resp.json().then(complete);
6231 if (this.conversion) {
6232 var convFn = config.conversions[this.conversion];
6233 if (convFn && convFn._rawResponse) {
6234 return complete(convFn(resp, context.meta.runtime, context));
6235 }
6236 }
6237 return resp.text().then((result) => {
6238 if (this.conversion) result = context.meta.runtime.convertValue(result, this.conversion);
6239 if (this.conversionType === "html") result = context.meta.runtime.convertValue(result, "Fragment");
6240 return complete(result);
6241 });
6242 }).catch((reason) => {
6243 context.meta.runtime.triggerEvent(context.me, "fetch:error", { reason });
6244 throw reason;
6245 }).finally(() => {
6246 context.me.removeEventListener("fetch:abort", abortListener);

Callers

nothing calls this directly

Calls 4

setTimeoutFunction · 0.50
fetchFunction · 0.50
triggerEventMethod · 0.45
convertValueMethod · 0.45

Tested by

no test coverage detected