UNPKG

wix-style-react

Version:
48 lines (41 loc) 1.72 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.mergeDrivers = mergeDrivers; exports.flattenInternalDriver = flattenInternalDriver; /** * Symbol for accessing driver methods which are internal * (we don't want to expose them to WSR consumers) */ var INTERNAL_DRIVER_SYMBOL = exports.INTERNAL_DRIVER_SYMBOL = Symbol('internal-driver'); /** * Merge driver 2 into driver 1 * * It should take care of merging Internal methods into the target'shidden internal driver * (which sits under the [INTERNAL_DRIVER] property). Currently not supported. */ function mergeDrivers(target, source) { // TODO: merge driver2's internal methods into driver1's internal methods. // TODO: make this a reduce that accepts a list of drivers. if (target[INTERNAL_DRIVER_SYMBOL]) { throw new Error('mergeDrivers(): Merging into a driver with INTERNAL_DRIVER methods, is currently not supported yet.'); } return _extends({}, target, source); } /** * Flatten driver by spreading all internal methods, * and removing the INTERNAL_DRIVER property. * Does not mutate the given driver. */ function flattenInternalDriver(driver) { if (driver[INTERNAL_DRIVER_SYMBOL]) { var driverCopy = Object.assign({}, driver); var driverInternalMethods = driver[INTERNAL_DRIVER_SYMBOL]; delete driverCopy[INTERNAL_DRIVER_SYMBOL]; return _extends({}, driverCopy, driverInternalMethods); } else { return driver; } }