UNPKG

babel-plugin-ember-template-compilation

Version:
30 lines 2.64 kB
const mutationMethods = [ 'copyWithin', 'fill', 'pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', ]; export function readOnlyArray(array, message = 'Forbidden array mutation') { return new Proxy(array, { get(target, prop) { if (typeof prop === 'string' && mutationMethods.includes(prop)) { return () => { throw new Error(message); }; } return Reflect.get(target, prop); }, set(_target, _prop) { throw new Error(message); }, deleteProperty() { throw new Error(message); }, }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1vbmx5LWFycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlYWQtb25seS1hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLGVBQWUsR0FBRztJQUN0QixZQUFZO0lBQ1osTUFBTTtJQUNOLEtBQUs7SUFDTCxNQUFNO0lBQ04sU0FBUztJQUNULE9BQU87SUFDUCxNQUFNO0lBQ04sUUFBUTtJQUNSLFNBQVM7Q0FDVixDQUFDO0FBRUYsTUFBTSxVQUFVLGFBQWEsQ0FBSSxLQUFVLEVBQUUsT0FBTyxHQUFHLDBCQUEwQjtJQUMvRSxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtRQUN0QixHQUFHLENBQUMsTUFBTSxFQUFFLElBQUk7WUFDZCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELE9BQU8sR0FBRyxFQUFFO29CQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNCLENBQUMsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUs7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsY0FBYztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdXRhdGlvbk1ldGhvZHMgPSBbXG4gICdjb3B5V2l0aGluJyxcbiAgJ2ZpbGwnLFxuICAncG9wJyxcbiAgJ3B1c2gnLFxuICAncmV2ZXJzZScsXG4gICdzaGlmdCcsXG4gICdzb3J0JyxcbiAgJ3NwbGljZScsXG4gICd1bnNoaWZ0Jyxcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT25seUFycmF5PFQ+KGFycmF5OiBUW10sIG1lc3NhZ2UgPSAnRm9yYmlkZGVuIGFycmF5IG11dGF0aW9uJykge1xuICByZXR1cm4gbmV3IFByb3h5KGFycmF5LCB7XG4gICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBtdXRhdGlvbk1ldGhvZHMuaW5jbHVkZXMocHJvcCkpIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wKTtcbiAgICB9LFxuICAgIHNldChfdGFyZ2V0LCBfcHJvcCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0sXG4gICAgZGVsZXRlUHJvcGVydHkoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=