Current section

Files

Jump to
gossamer src gossamer response.ffi.mjs
Raw

src/gossamer/response.ffi.mjs

// src/gossamer/response_init.ts
import * as $responseInit from "./response_init.mjs";
function toResponseInit(options) {
const result = {};
for (const option of options) {
if ($responseInit.ResponseInit$isHeaders(option)) {
result.headers = $responseInit.ResponseInit$Headers$0(option);
} else if ($responseInit.ResponseInit$isStatus(option)) {
result.status = $responseInit.ResponseInit$Status$0(option);
} else if ($responseInit.ResponseInit$isStatusText(option)) {
result.statusText = $responseInit.ResponseInit$StatusText$0(option);
}
}
return result;
}
// src/gossamer/response_type.ts
import * as $rt from "./response_type.mjs";
function fromResponseType(value) {
switch (value) {
case "basic":
return $rt.ResponseType$Basic();
case "cors":
return $rt.ResponseType$Cors();
case "error":
return $rt.ResponseType$Error();
case "opaque":
return $rt.ResponseType$Opaque();
case "opaqueredirect":
return $rt.ResponseType$OpaqueRedirect();
case "default":
return $rt.ResponseType$Default();
default:
return $rt.ResponseType$Other(value);
}
}
// 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 (error2) {
return Result$Error(
error2 instanceof Error ? error2.message : String(error2)
);
}
};
toResult.fromPromise = function(promise) {
return promise.then(
(value) => Result$Ok(value),
(error2) => Result$Error(error2 instanceof Error ? error2.message : String(error2))
);
};
// src/gossamer/response.ffi.ts
var new_ = (body2) => {
return toResult.fromThrows(() => new Response(body2));
};
var new_with_init = (body2, init) => {
return toResult.fromThrows(
() => new Response(body2, toResponseInit(toArray(init)))
);
};
var from_json = (data, init) => {
return Response.json(data, toResponseInit(toArray(init)));
};
var error = () => {
return Response.error();
};
var redirect = (url2) => {
return Response.redirect(url2);
};
var redirect_with_status = (url2, status2) => {
return Response.redirect(url2, status2);
};
var headers_ = (response) => {
return response.headers;
};
var is_ok = (response) => response.ok;
var is_redirected = (response) => {
return response.redirected;
};
var status = (response) => response.status;
var status_text = (response) => {
return response.statusText;
};
var type_ = (response) => {
return fromResponseType(response.type);
};
var url = (response) => response.url;
var clone = (response) => response.clone();
var body = (response) => {
return toResult(response.body);
};
var is_body_used = (response) => {
return response.bodyUsed;
};
var blob = (response) => {
return toResult.fromPromise(response.blob());
};
var array_buffer = (response) => {
return toResult.fromPromise(response.arrayBuffer());
};
var bytes = (response) => {
return toResult.fromPromise(response.bytes());
};
var json = (response) => {
return toResult.fromPromise(response.json());
};
var form_data = (response) => {
return toResult.fromPromise(response.formData());
};
var text = (response) => {
return toResult.fromPromise(response.text());
};
export {
array_buffer,
blob,
body,
bytes,
clone,
error,
form_data,
from_json,
headers_,
is_body_used,
is_ok,
is_redirected,
json,
new_,
new_with_init,
redirect,
redirect_with_status,
status,
status_text,
text,
type_,
url
};