tupleson
Version:
A hackable JSON serializer/deserializer
36 lines (30 loc) • 893 B
text/typescript
import { TsonError } from "../../errors.js";
import { isPlainObject } from "../../internals/isPlainObject.js";
import { TsonType } from "../syncTypes.js";
export class TsonUnknownObjectGuardError extends TsonError {
/**
* The unknown object that was found
*/
public readonly value;
constructor(value: unknown) {
super(`Unknown object found`);
this.name = this.constructor.name;
this.value = value;
this.name = "TsonUnknownObjectGuardError";
}
}
/**
*
* @description
* Guard against unknown complex objects.
* Make sure to define this last in the list of types.
* @throws {TsonUnknownObjectGuardError} if an unknown object is found
*/
export const tsonUnknownObjectGuard: TsonType<unknown, never> = {
test: (v) => {
if (v && typeof v === "object" && !Array.isArray(v) && !isPlainObject(v)) {
throw new TsonUnknownObjectGuardError(v);
}
return false;
},
};