@nidomiro/relation-tuple-parser
Version:
[](https://www.npmjs.com/package/@nidomiro/relation-tuple-parser)
22 lines • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAccessToPathProxy = void 0;
const InternalValues = Symbol('internalValues');
const createAccessToPathProxy = (onNewPath) => {
const validator = {
get(target, p) {
const internalValues = target[InternalValues];
const path = internalValues.path;
if (p === 'toString' || p === Symbol.toPrimitive || p === Symbol.toStringTag) {
return () => onNewPath(path !== null && path !== void 0 ? path : []);
}
else if (typeof p === 'symbol') {
throw new Error(`Symbols are not supported as keys: ${String(p)}`);
}
return new Proxy(Object.assign(Object.assign({}, target), { [InternalValues]: { path: [...path, p], depth: internalValues.depth + 1 } }), validator);
},
};
return new Proxy({ [InternalValues]: { path: [], depth: 0 } }, validator);
};
exports.createAccessToPathProxy = createAccessToPathProxy;
//# sourceMappingURL=access-to-path-proxy.js.map