import { PawSQLiteError } from "./pawsqlite_error.mjs"; export function wrapAdapter(adapter) { const wrapped = {}; ["name", "open", "close", "delete", "sql"].forEach((prop) => { if (!(prop in adapter)) { throw new PawSQLiteError(`Invalid adapter: missing property: ${ prop }`); } if ( prop === "name" && !( typeof adapter[prop] === "string" || adapter[prop] instanceof String ) || prop !== "name" && ( typeof adapter[prop] !== "function" ) ) { throw new PawSQLiteError("Invalid adapter: invalid type for property: " + prop); } if (typeof adapter[prop] === "function") { wrapped[prop] = async (...args) => { try { return await adapter[prop](...args); } catch (err) { throw PawSQLiteError.from(err); } }; } else { wrapped[prop] = adapter[prop]; } }); return wrapped; }