Current section

Files

Jump to
gossamer src gossamer map.ffi.mjs
Raw

src/gossamer/map.ffi.mjs

// 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/map.ffi.ts
var new_ = () => {
return /* @__PURE__ */ new Map();
};
var from_list = (entries2) => {
return new Map(toArray(entries2));
};
var size = (map) => {
return map.size;
};
var get = (map, key) => {
return toResult(map.get(key));
};
var has = (map, key) => {
return map.has(key);
};
var set = (map, key, value) => {
map.set(key, value);
return map;
};
var delete_ = (map, key) => {
map.delete(key);
return map;
};
var clear = (map) => {
map.clear();
return map;
};
var keys = (map) => {
return map.keys();
};
var values = (map) => {
return map.values();
};
var entries = (map) => {
return map.entries();
};
var for_each = (map, callback) => {
map.forEach((value, key) => callback(key, value));
};
export {
clear,
delete_,
entries,
for_each,
from_list,
get,
has,
keys,
new_,
set,
size,
values
};