UNPKG

15 kBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory();
4 else if(typeof define === 'function' && define.amd)
5 define([], factory);
6 else {
7 var a = factory();
8 for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9 }
10})(window, function() {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14/******/
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17/******/
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId]) {
20/******/ return installedModules[moduleId].exports;
21/******/ }
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ i: moduleId,
25/******/ l: false,
26/******/ exports: {}
27/******/ };
28/******/
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31/******/
32/******/ // Flag the module as loaded
33/******/ module.l = true;
34/******/
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38/******/
39/******/
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42/******/
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45/******/
46/******/ // define getter function for harmony exports
47/******/ __webpack_require__.d = function(exports, name, getter) {
48/******/ if(!__webpack_require__.o(exports, name)) {
49/******/ Object.defineProperty(exports, name, {
50/******/ configurable: false,
51/******/ enumerable: true,
52/******/ get: getter
53/******/ });
54/******/ }
55/******/ };
56/******/
57/******/ // define __esModule on exports
58/******/ __webpack_require__.r = function(exports) {
59/******/ Object.defineProperty(exports, '__esModule', { value: true });
60/******/ };
61/******/
62/******/ // getDefaultExport function for compatibility with non-harmony modules
63/******/ __webpack_require__.n = function(module) {
64/******/ var getter = module && module.__esModule ?
65/******/ function getDefault() { return module['default']; } :
66/******/ function getModuleExports() { return module; };
67/******/ __webpack_require__.d(getter, 'a', getter);
68/******/ return getter;
69/******/ };
70/******/
71/******/ // Object.prototype.hasOwnProperty.call
72/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
73/******/
74/******/ // __webpack_public_path__
75/******/ __webpack_require__.p = "";
76/******/
77/******/
78/******/ // Load entry module and return exports
79/******/ return __webpack_require__(__webpack_require__.s = 0);
80/******/ })
81/************************************************************************/
82/******/ ([
83/* 0 */
84/***/ (function(module, __webpack_exports__, __webpack_require__) {
85
86"use strict";
87__webpack_require__.r(__webpack_exports__);
88
89// CONCATENATED MODULE: ./src/core.js
90var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
91
92function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
93
94/**
95 * Tencent is pleased to support the open source community by making WePY available.
96 * Copyright (C) 2017 THL A29 Limited, a Tencent company. All rights reserved.
97 *
98 * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
99 * http://opensource.org/licenses/MIT
100 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
101 */
102
103var core_native = {};
104var RequestMQ = {
105 map: {},
106 mq: [],
107 running: [],
108 MAX_REQUEST: 5,
109 push: function push(param) {
110 param.t = +new Date();
111 while (this.mq.indexOf(param.t) > -1 || this.running.indexOf(param.t) > -1) {
112 param.t += Math.random() * 10 >> 0;
113 }
114 this.mq.push(param.t);
115 this.map[param.t] = param;
116 },
117 next: function next() {
118 var me = this;
119
120 if (this.mq.length === 0) return;
121
122 if (this.running.length < this.MAX_REQUEST - 1) {
123 var newone = this.mq.shift();
124 var obj = this.map[newone];
125 var oldComplete = obj.complete;
126 obj.complete = function () {
127 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
128 args[_key] = arguments[_key];
129 }
130
131 me.running.splice(me.running.indexOf(obj.t), 1);
132 delete me.map[obj.t];
133 oldComplete && oldComplete.apply(obj, args);
134 me.next();
135 };
136 this.running.push(obj.t);
137 return wx.request(obj);
138 }
139 },
140 request: function request(obj) {
141
142 obj = obj || {};
143 obj = typeof obj === 'string' ? { url: obj } : obj;
144
145 this.push(obj);
146
147 return this.next();
148 }
149};
150
151var CoreClass = function () {
152 function CoreClass() {
153 _classCallCheck(this, CoreClass);
154
155 this.$addons = {};
156
157 this.$interceptors = {};
158
159 this.$pages = {};
160 }
161
162 _createClass(CoreClass, [{
163 key: '$init',
164 value: function $init(wepy) {
165 var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
166
167 this.$initAPI(wepy, config.noPromiseAPI);
168 this.$wxapp = getApp();
169 }
170 }, {
171 key: 'use',
172 value: function use(addon) {
173 for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
174 args[_key2 - 1] = arguments[_key2];
175 }
176
177 if (typeof addon === 'string' && this[addon]) {
178 this.$addons[addon] = 1;
179 this[addon](args);
180 } else {
181 this.$addons[addon.name] = new addon(args);
182 }
183 }
184 }, {
185 key: 'intercept',
186 value: function intercept(api, provider) {
187 this.$interceptors[api] = provider;
188 }
189 }, {
190 key: 'promisify',
191 value: function promisify() {
192 console.log('promise已经启用');
193 }
194 }, {
195 key: 'requestfix',
196 value: function requestfix() {
197 console.log('requestfix启用');
198 }
199 }, {
200 key: '$initAPI',
201 value: function $initAPI(wepy, noPromiseAPI) {
202 var self = this;
203 var noPromiseMethods = {
204 // 媒体
205 stopRecord: true,
206 getRecorderManager: true,
207 pauseVoice: true,
208 stopVoice: true,
209 pauseBackgroundAudio: true,
210 stopBackgroundAudio: true,
211 getBackgroundAudioManager: true,
212 createAudioContext: true,
213 createInnerAudioContext: true,
214 createVideoContext: true,
215 createCameraContext: true,
216
217 // 位置
218 createMapContext: true,
219
220 // 设备
221 canIUse: true,
222 startAccelerometer: true,
223 stopAccelerometer: true,
224 startCompass: true,
225 stopCompass: true,
226 onBLECharacteristicValueChange: true,
227 onBLEConnectionStateChange: true,
228
229 // 界面
230 hideToast: true,
231 hideLoading: true,
232 showNavigationBarLoading: true,
233 hideNavigationBarLoading: true,
234 navigateBack: true,
235 createAnimation: true,
236 pageScrollTo: true,
237 createSelectorQuery: true,
238 createCanvasContext: true,
239 createContext: true,
240 drawCanvas: true,
241 hideKeyboard: true,
242 stopPullDownRefresh: true,
243
244 // 拓展接口
245 arrayBufferToBase64: true,
246 base64ToArrayBuffer: true
247 };
248 if (noPromiseAPI) {
249 if (Array.isArray(noPromiseAPI)) {
250 noPromiseAPI.forEach(function (v) {
251 return noPromiseMethods[v] = true;
252 });
253 } else {
254 for (var k in noPromiseAPI) {
255 noPromiseMethods[k] = noPromiseAPI[k];
256 }
257 }
258 }
259 Object.keys(wx).forEach(function (key) {
260 if (!noPromiseMethods[key] && key.substr(0, 2) !== 'on' && !/\w+Sync$/.test(key)) {
261 Object.defineProperty(core_native, key, {
262 get: function get() {
263 return function (obj) {
264 obj = obj || {};
265 if (self.$interceptors[key] && self.$interceptors[key].config) {
266 var rst = self.$interceptors[key].config.call(self, obj);
267 if (rst === false) {
268 if (self.$addons.promisify) {
269 return Promise.reject('aborted by interceptor');
270 } else {
271 obj.fail && obj.fail('aborted by interceptor');
272 return;
273 }
274 }
275 obj = rst;
276 }
277 if (key === 'request') {
278 obj = typeof obj === 'string' ? { url: obj } : obj;
279 }
280 if (typeof obj === 'string') {
281 return wx[key](obj);
282 }
283 if (self.$addons.promisify) {
284 var task = void 0;
285 var p = new Promise(function (resolve, reject) {
286 var bak = {};
287 ['fail', 'success', 'complete'].forEach(function (k) {
288 bak[k] = obj[k];
289 obj[k] = function (res) {
290 if (self.$interceptors[key] && self.$interceptors[key][k]) {
291 res = self.$interceptors[key][k].call(self, res);
292 }
293 if (k === 'success') resolve(res);else if (k === 'fail') reject(res);
294 };
295 });
296 if (self.$addons.requestfix && key === 'request') {
297 RequestMQ.request(obj);
298 } else {
299 task = wx[key](obj);
300 }
301 });
302 if (key === 'uploadFile' || key === 'downloadFile') {
303 p.progress = function (cb) {
304 task.onProgressUpdate(cb);
305 return p;
306 };
307 p.abort = function (cb) {
308 cb && cb();
309 task.abort();
310 return p;
311 };
312 }
313 return p;
314 } else {
315 var bak = {};
316 ['fail', 'success', 'complete'].forEach(function (k) {
317 bak[k] = obj[k];
318 obj[k] = function (res) {
319 if (self.$interceptors[key] && self.$interceptors[key][k]) {
320 res = self.$interceptors[key][k].call(self, res);
321 }
322 bak[k] && bak[k].call(self, res);
323 };
324 });
325 if (self.$addons.requestfix && key === 'request') {
326 RequestMQ.request(obj);
327 } else {
328 return wx[key](obj);
329 }
330 }
331 };
332 }
333 });
334 wepy[key] = core_native[key];
335 } else {
336 Object.defineProperty(core_native, key, {
337 get: function get() {
338 return function () {
339 for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
340 args[_key3] = arguments[_key3];
341 }
342
343 return wx[key].apply(wx, args);
344 };
345 }
346 });
347 wepy[key] = core_native[key];
348 }
349 });
350 }
351 }]);
352
353 return CoreClass;
354}();
355
356/* harmony default export */ var core = (CoreClass);
357// CONCATENATED MODULE: ./src/wxp.js
358
359var wxp_wxp = new core();
360wxp_wxp.$init(wxp_wxp);
361wxp_wxp.use('promisify');
362wxp_wxp.use('requestfix');
363/* harmony default export */ var src_wxp = __webpack_exports__["default"] = (wxp_wxp);
364
365/***/ })
366/******/ ]);
367});
\No newline at end of file