import { Descriptor } from './properties';
export default function descriptor(desc) {
    return new NativeDescriptor(desc);
}
/**
  A wrapper for a native ES5 descriptor. In an ideal world, we wouldn't need
  this at all, however, the way we currently flatten/merge our mixins require
  a special value to denote a descriptor.

  @class NativeDescriptor
  @private
*/
class NativeDescriptor extends Descriptor {
    constructor(desc) {
        super();
        this.desc = desc;
        this.enumerable = desc.enumerable !== false;
        this.configurable = desc.configurable !== false;
    }
    setup(obj, key, meta) {
        Object.defineProperty(obj, key, this.desc);
        meta.writeDescriptors(key, this);
    }
    get(obj, key) {
        return obj[key];
    }
    set(obj, key, value) {
        return (obj[key] = value);
    }
}