{"size": 1432, "ext": "js", "max_stars_repo_path": "source/library/ideal/categories/Mirror.js", "max_stars_repo_name": "ales-tsurko/strvct.net", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "source/library/ideal/categories/Mirror.js", "max_issues_repo_name": "ales-tsurko/strvct.net", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "source/library/ideal/categories/Mirror.js", "max_forks_repo_name": "ales-tsurko/strvct.net", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 17.9, "max_line_length": 73, "alphanum_fraction": 0.6969273743}
/*

	An object wrapper for the Reflect functions

*/

window.Mirror = class Mirror extends Object {
	
	static reflectOn (aTarget) {
		return this.clone().setTarget(aTarget)
	}

    static clone () {
        const obj = new this()
		obj.init()
        return obj
    }
	
	init () {
	}
	
	// target 
	
	setTarget (aTarget) {
		this._target = aTarget
		return this
	}
	
	target () {
		return this._target
	}

	// reflect methods

	defineProperty (propertyKey, attributes) {
		return Reflect.defineProperty(this.target(), propertyKey, attributes)		
	}
	
	deleteProperty (propertyKey) {
		return Reflect.deleteProperty(this.target(), propertyKey)
	}
	
	get (propertyKey, optionalReceiver) {
		return Reflect.get(this.target(), propertyKey, optionalReceiver)
	}

	getOwnPropertyDescriptor (propertyKey) {
		return Reflect.getOwnPropertyDescriptor(this.target(), propertyKey)
	}
	
	getPrototype () {
		return Reflect.getPrototypeOf(this.target())
	}

	has (propertyKey) {
		return Reflect.has(this.target(), propertyKey)
	}

	isExtensible () {
		return Reflect.isExtensible(this.target())
	}

	ownKeys () {
		return Reflect.ownKeys(this.target())
	}

	preventExtensions () {
		return Reflect.preventExtensions(target)
	}

	set (propertyKey, value, optionalReceiver) {
		return Reflect.set(this.target(), propertyKey, value, optionalReceiver)
	}

	setPrototype (prototype) {
		return Reflect.setPrototypeOf(this.target(), prototype)
	}
	
}
