Something went wrong. Try again.
MIRROR: javascript for 🐜's, a tiny runtime with big ambitions ant.themackabu.dev
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import { test, summary } from './helpers.js';
console.log('Proxy Tests\n');
const target = { a: 1, b: 2 };const handler = { get(obj, prop) { return prop in obj ? obj[prop] : 'default'; }};const proxy = new Proxy(target, handler);
test('proxy get existing', proxy.a, 1);test('proxy get missing', proxy.c, 'default');
const setHandler = { set(obj, prop, value) { obj[prop] = value * 2; return true; }};const setProxy = new Proxy({}, setHandler);setProxy.x = 5;test('proxy set', setProxy.x, 10);
const hasHandler = { has(obj, prop) { return prop.startsWith('_') ? false : prop in obj; }};const hasProxy = new Proxy({ _private: 1, public: 2 }, hasHandler);test('proxy has public', 'public' in hasProxy, true);test('proxy has private', '_private' in hasProxy, false);
const deleteHandler = { deleteProperty(obj, prop) { if (prop.startsWith('_')) return false; delete obj[prop]; return true; }};const delProxy = new Proxy({ _keep: 1, remove: 2 }, deleteHandler);delete delProxy.remove;test('proxy delete refused', Reflect.deleteProperty(delProxy, '_keep'), false);test('proxy delete allowed', delProxy.remove, undefined);test('proxy delete blocked', delProxy._keep, 1);
const revocable = Proxy.revocable({ x: 1 }, {});test('revocable proxy get', revocable.proxy.x, 1);revocable.revoke();
summary();