Current section

Files

Jump to
gossamer src gossamer.ffi.mjs
Raw

src/gossamer.ffi.mjs

// src/gossamer/request_init.ts
import * as $requestInit from "./gossamer/request_init.mjs";
function toRequestInit(options) {
const result = {};
for (const option of options) {
if ($requestInit.RequestInit$isMethod(option)) {
result.method = $requestInit.RequestInit$Method$0(option);
} else if ($requestInit.RequestInit$isHeaders(option)) {
result.headers = $requestInit.RequestInit$Headers$0(option);
} else if ($requestInit.RequestInit$isBody(option)) {
result.body = $requestInit.RequestInit$Body$0(option);
} else if ($requestInit.RequestInit$isRedirect(option)) {
result.redirect = $requestInit.RequestInit$Redirect$0(
option
);
} else if ($requestInit.RequestInit$isSignal(option)) {
result.signal = $requestInit.RequestInit$Signal$0(option);
} else if ($requestInit.RequestInit$isReferrer(option)) {
result.referrer = $requestInit.RequestInit$Referrer$0(option);
} else if ($requestInit.RequestInit$isKeepalive(option)) {
result.keepalive = $requestInit.RequestInit$Keepalive$0(option);
} else if ($requestInit.RequestInit$isIntegrity(option)) {
result.integrity = $requestInit.RequestInit$Integrity$0(option);
}
}
return result;
}
// src/utils/list.ts
import {
List$Empty,
List$isNonEmpty,
List$NonEmpty,
List$NonEmpty$first,
List$NonEmpty$rest
} from "../prelude.mjs";
function toArray(list) {
const array = [];
let current = list;
while (List$isNonEmpty(current)) {
array.push(List$NonEmpty$first(current));
current = List$NonEmpty$rest(current);
}
return array;
}
// src/utils/result.ts
import { Result$Error, Result$Ok } from "../prelude.mjs";
function toResult(value) {
return value === null || value === void 0 ? Result$Error(void 0) : Result$Ok(value);
}
toResult.fromThrows = function(throws) {
try {
return Result$Ok(throws());
} catch (error) {
return Result$Error(
error instanceof Error ? error.message : String(error)
);
}
};
toResult.fromPromise = function(promise) {
return promise.then(
(value) => Result$Ok(value),
(error) => Result$Error(error instanceof Error ? error.message : String(error))
);
};
// src/gossamer.ffi.ts
var structured_clone = (value) => {
return globalThis.structuredClone(value);
};
var atob = (encoded) => {
return toResult.fromThrows(() => globalThis.atob(encoded));
};
var btoa = (data) => {
return toResult.fromThrows(() => globalThis.btoa(data));
};
var alert = (message) => {
globalThis.alert(message);
};
var clear_interval = (id) => {
globalThis.clearInterval(id);
};
var clear_timeout = (id) => {
globalThis.clearTimeout(id);
};
var close = () => {
globalThis.close();
};
var confirm = (message) => {
return globalThis.confirm(message);
};
var prompt = (message, defaultValue) => {
return toResult(globalThis.prompt(message, defaultValue));
};
var queue_microtask = (func) => {
globalThis.queueMicrotask(func);
};
var report_error = (error) => {
globalThis.reportError(error);
};
var set_interval = (delay, callback) => {
return globalThis.setInterval(callback, delay);
};
var set_timeout = (delay, callback) => {
return globalThis.setTimeout(callback, delay);
};
var fetch_ = (url) => {
return toResult.fromPromise(globalThis.fetch(url));
};
var fetch_with_init = (url, init) => {
return toResult.fromPromise(
globalThis.fetch(url, toRequestInit(toArray(init)))
);
};
var fetch_request = (request) => {
return toResult.fromPromise(globalThis.fetch(request));
};
export {
alert,
atob,
btoa,
clear_interval,
clear_timeout,
close,
confirm,
fetch_,
fetch_request,
fetch_with_init,
prompt,
queue_microtask,
report_error,
set_interval,
set_timeout,
structured_clone
};