import { ObjectCreate, ObjectFreeze } from "ext:core/primordials"; import { op_env_delete, op_env_get, op_env_set, op_env_to_object, } from "ext:core/ops"; import { required, usv } from "ext:web/idl.js"; import { result } from "ext:file/errors.js"; export const env = ObjectFreeze({ get(name: unknown) { required(arguments.length, 1); return result(op_env_get(usv(name))) ?? undefined; }, has(name: unknown) { required(arguments.length, 1); return result(op_env_get(usv(name))) !== null; }, set(name: unknown, value: unknown) { required(arguments.length, 2); result(op_env_set([usv(name), usv(value)])); }, delete(name: unknown) { required(arguments.length, 1); result(op_env_delete(usv(name))); }, toObject() { const entries = op_env_to_object(); const snapshot: Record = ObjectCreate(null); for (let index = 0; index < entries.length; index++) { snapshot[entries[index][0]] = entries[index][1]; } return snapshot; }, });