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

Method resolve

www/js/_hyperscript-max.js:6188–6247  ·  view source on GitHub ↗
(context, { url, options })

Source from the content-addressed store, hash-verified

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