oidc-spa
Version:
Openidconnect client for Single Page Applications
29 lines • 925 B
JavaScript
const keyIsTrapped = "isTrapped_zSskDe9d";
export class AccessError extends Error {
constructor(message) {
super(message);
Object.setPrototypeOf(this, new.target.prototype);
}
}
export function createObjectThatThrowsIfAccessed(params) {
const { debugMessage = "", isPropertyWhitelisted = () => false } = params ?? {};
const get = (...args) => {
const [, prop] = args;
if (isPropertyWhitelisted(prop)) {
return Reflect.get(...args);
}
if (prop === keyIsTrapped) {
return true;
}
throw new AccessError(`Cannot access ${String(prop)} yet ${debugMessage}`);
};
const trappedObject = new Proxy({}, {
get,
set: get
});
return trappedObject;
}
export function isObjectThatThrowIfAccessed(obj) {
return obj[keyIsTrapped] === true;
}
//# sourceMappingURL=createObjectThatThrowsIfAccessed.js.map