“use strict”;
module.exports.mixin = function mixin(target, source) {
const keys = Object.getOwnPropertyNames(source); for (let i = 0; i < keys.length; ++i) { if (keys[i] in target) { continue; } Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); }
};
const wrapperSymbol = Symbol(“wrapper”); const implSymbol = Symbol(“impl”);
function wrapperForImpl(impl) {
return impl ? impl[wrapperSymbol] : null;
};
function implForWrapper(wrapper) {
return wrapper ? wrapper[implSymbol] : null;
};
function tryWrapperForImpl(impl) {
const wrapper = wrapperForImpl(impl); return wrapper ? wrapper : impl;
};
function tryImplForWrapper(wrapper) {
const impl = implForWrapper(wrapper); return impl ? impl : wrapper;
};
const iterInternalSymbol = Symbol(“internal”); const IteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([]()));
module.exports.wrapperSymbol = wrapperSymbol; module.exports.implSymbol = implSymbol; module.exports.wrapperForImpl = wrapperForImpl; module.exports.implForWrapper = implForWrapper; module.exports.tryWrapperForImpl = tryWrapperForImpl; module.exports.tryImplForWrapper = tryImplForWrapper; module.exports.iterInternalSymbol = iterInternalSymbol; module.exports.IteratorPrototype = IteratorPrototype;