var isFn = function isFn(v) { return typeof v === 'function'; }; var handlePromise = function handlePromise(promise) { return promise.then(function (data) { return [null, data]; }).catch(function (err) { return [err]; }); }; var REGEX = /^on|^create|Sync$|Manager$|^pause/; var API_NORMAL_LIST = ['os', 'stopRecord', 'stopVoice', 'stopBackgroundAudio', 'stopPullDownRefresh', 'hideKeyboard', 'hideToast', 'hideLoading', 'showNavigationBarLoading', 'hideNavigationBarLoading', 'canIUse', 'navigateBack', 'closeSocket', 'pageScrollTo', 'drawCanvas']; var shouldPromise = function shouldPromise(name) { if (REGEX.test(name) && name !== 'createBLEConnection') { return false; } if (~API_NORMAL_LIST.indexOf(name)) { return false; } return true; }; var promisify = function promisify(api) { return function () { for (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { params[_key - 1] = arguments[_key]; } var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) { return api.apply(undefined, [options].concat(params)); } return handlePromise(new Promise(function (resolve, reject) { api.apply(undefined, [Object.assign({}, options, { success: resolve, fail: reject })].concat(params)); /* eslint-disable no-extend-native */ Promise.prototype.finally = function (callback) { var promise = this.constructor; return this.then(function (value) { return promise.resolve(callback()).then(function () { return value; }); }, function (reason) { return promise.resolve(callback()).then(function () { throw reason; }); }); }; })); }; }; var EPS = 1e-4; var BASE_DEVICE_WIDTH = 750; var isIOS = false; var deviceWidth = 0; var deviceDPR = 0; function checkDeviceWidth() { var _wx$getSystemInfoSync = wx.getSystemInfoSync(), platform = _wx$getSystemInfoSync.platform, pixelRatio = _wx$getSystemInfoSync.pixelRatio, windowWidth = _wx$getSystemInfoSync.windowWidth; deviceWidth = windowWidth; deviceDPR = pixelRatio; isIOS = platform === 'ios'; } function transformUpx(number, newDeviceWidth) { if (deviceWidth === 0) { checkDeviceWidth(); } if (number === 0) { return 0; } var result = number / BASE_DEVICE_WIDTH * (newDeviceWidth || deviceWidth); if (result < 0) { result = -result; } result = Math.floor(result + EPS); if (result === 0) { if (deviceDPR === 1 || !isIOS) { return 1; } else { return 0.5; } } return number < 0 ? -result : result; } function requireNativePlugin(pluginName) { /* eslint-disable no-undef */ return __requireNativePlugin__(pluginName); } var uni = {}; var baseUni = { os: { plus: true } }; if (typeof Proxy !== 'undefined') { uni = new Proxy({}, { get: function get(target, name) { if (baseUni.hasOwnProperty(name)) { return baseUni[name]; } if (name === 'upx2px') { return transformUpx; } if (name === 'requireNativePlugin') { return requireNativePlugin; } if (!wx.hasOwnProperty(name)) { return; } if (shouldPromise(name)) { return promisify(wx[name]); } return wx[name]; } }); } else { uni.upx2px = transformUpx; uni.requireNativePlugin = requireNativePlugin; Object.keys(baseUni).forEach(function (key) { uni[key] = baseUni[key]; }); Object.keys(wx).forEach(function (key) { if (wx.hasOwnProperty(key)) { if (shouldPromise(key)) { uni[key] = promisify(wx[key]); } else { uni[key] = wx[key]; } } }); } var uni$1 = uni; export default uni$1;