UNPKG

@nidomiro/relation-tuple-parser

Version:

[![npm version](https://badge.fury.io/js/@nidomiro%2Frelation-tuple-parser.svg)](https://www.npmjs.com/package/@nidomiro/relation-tuple-parser)

22 lines 1.08 kB
"use strict"; 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