UNPKG

wm-na-bridge

Version:

百度外卖和百度糯米的bridge util

113 lines (94 loc) 2.81 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _index = require('./index'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function serialize(object) { var output = []; if (object !== undefined && object !== null) { for (var key in object) { if (object.hasOwnProperty(key) && object[key] !== undefined) { output.push(encodeURIComponent(key) + '=' + encodeURIComponent(object[key])); } } } return output.join('&'); }; var DEFAULT = { da_src: 'default', da_act: 'ready', baiduid: document.cookie.replace(/(?:(?:^|.*;\s*)BAIDUID=\s*([^;]*).*$)|^.*$/, '$1'), da_refer: '', da_trace: '' }; function send(stat) { var query = serialize((0, _assign2.default)({ da_time: Date.now() }, DEFAULT, stat)); var image = new Image(); image.onload = image.onerror = function () { image = null; }; image.src = 'http://log.waimai.baidu.com/static/transparent.gif?' + query; } var isReady = false; var quene = []; function proxy(stat) { if (isReady) { send(stat); } else { quene.push(send.bind(null, stat)); } } _promise2.default.all([(0, _index.ready)(), (0, _index.device)(), (0, _index.location)(), (0, _index.network)()]).then(function (_ref) { var _ref2 = (0, _slicedToArray3.default)(_ref, 4), pageData = _ref2[0], device = _ref2[1], location = _ref2[2], network = _ref2[3]; (0, _assign2.default)(DEFAULT, { cuid: device.cuid, from: device.from, app_plat: _index.appPlat, channel: device.channel, sv: device.sv, os: device.os, model: device.model, screen: device.screen, city_id: location.cityId, loc_lat: location.locLat, loc_lng: location.locLng, lat: location.lat, lng: location.lng, address: location.address, nettype: network.net_type }); isReady = true; quene.forEach(function (v) { v(); }); }); function pv(src) { proxy({ da_src: src, da_act: 'ready' }); }; function click(src) { proxy({ da_src: src, da_act: 'click' }); }; function show(src) { proxy({ da_src: src, da_act: 'collect' }); }; exports.default = { pv: pv, click: click, show: show, send: proxy };