diff --git a/.flowconfig b/.flowconfig index 85c549a..880b95f 100644 --- a/.flowconfig +++ b/.flowconfig @@ -2,6 +2,7 @@ .*/build/.* .*/dist/.* +.*/package/.* [libs] flow diff --git a/.gitignore b/.gitignore index 5148e52..15c2510 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ logs *.log npm-debug.log* - # Runtime data pids *.pid diff --git a/dist/weex-dingtalk-min.js b/dist/weex-dingtalk-min.js index 3c9fa88..df07270 100644 --- a/dist/weex-dingtalk-min.js +++ b/dist/weex-dingtalk-min.js @@ -1,2 +1,2 @@ -"use strict";function android_exec(n,e){var t=e.body,i=e.onSuccess,r=e.onFail,o=e.context;n&&"function"==typeof n?n(t,function(n){if(void 0!==n&&n.__status__){var e=n.__status__,t=n.__message__;"1"===e?i&&i.call(o,t):"2"===e&&r&&r.call(o,t)}else r&&r.call("-1","")}):r&&r.call("-1","")}function ios_exec(n,e){var t=e.body,i=e.onSuccess,r=e.onFail,o=e.context;n&&"function"==typeof n?n(t,function(n){void 0!==n?"0"===n.errorCode?i&&i.call(o,n.result):r&&r.call(o,n.result):r&&r.call("-1","")}):r&&r.call("-1","")}function exec(n){var e=nativeExec||function(){};"iOS"===platform$2?ios_exec(e,n):"android"===platform$2&&android_exec(e,n)}function build(n){var e=n.factory;return n.__nuva_exports__={},delete n.factory,e(__nuva_require__,n.__nuva_exports__,n),n.__nuva_exports__}function __nuva_require__(n){if(!__nuva_modules__[n])throw"__nuva_module__ "+n+" not found";if(n in inProgressModules){throw"Cycle in require graph: "+(requireStack.slice(inProgressModules[n]).join("->")+"->"+n)}if(__nuva_modules__[n].factory)try{return inProgressModules[n]=requireStack.length,requireStack.push(n),build(__nuva_modules__[n])}finally{delete inProgressModules[n],requireStack.pop()}return __nuva_modules__[n].__nuva_exports__}function __nuva_define__(n,e){if(__nuva_modules__[n])throw"module "+n+" already defined";__nuva_modules__[n]={id:n,factory:e}}function toArray(n,e){for(var t=e||0,i=n.length-t,r=new Array(i);i--;)r[i]=n[i+t];return r}function parseModules(n){for(var e in n){var t=n[e];!function(n,e){__nuva_define__(n,function(t,i,r){var o={};o._name=n;for(var u in e){var a=e[u];o[a]=function(e){return function(t){t||(t={});var i=t.onSuccess,r=t.onFail;return delete t.onSuccess,delete t.onFail,delete t.onCancel,exec({body:{plugin:n,action:e,args:t},onSuccess:i,onFail:r})}}(a)}r.__nuva_exports__=o})}(e,t)}}function rtFunc(n){return function(e){exec({body:{plugin:"runtime",action:n,args:{}},onSuccess:function(n){"function"==typeof e&&e(n)},onFail:function(){},context:null})}}function initDingtalkRequire(n){rtFunc("getModules")(n)}function permissionJsApis(n,e,t){if(!e)return void n(null);nuva.ready(function(){var i=nuva.require(runtimePermission),r=e||{},o=t||null;r.onSuccess=function(e){n(null,e)},r.onFail=function(e){"function"==typeof o?o(e):n(e,null)},i.requestJsApis(r)})}function parseJsApis(n){var e={};for(var t in n)for(var i=t.split("."),r=null,o=0,u=i.length;;)if(r){if(u-1===o){r[i[o]]=nuva.require(t);break}r[i[o]]?o++:(r[i[o]]={},r=r[i[o]],o++)}else{if(1===u){e[i[o]]=nuva.require(t);break}if(e[i[o]]){r=e[i[o]],o++;continue}e[i[o]]={},r=e[i[o]],o++}return e}function initNativeEvent(n){n.on=function(n,e,t){document.addEventListener(n,e,t)},n.off=function(n,e,t){document.removeEventListener(n,e,t)}}function initApis(n){n.apis=n}function initWebDingtalkSDK(){var n=function(){return function(){return window||this}()}();if(!n.dd)throw console.error("Not Found Dingtalk.js"),new Error;return initNativeEvent(n.dd),initApis(n.dd),n.dd}function performQueue(){dingtalkQueue&&dingtalkQueue.length>0&&(dingtalkQueue.forEach(function(n){n()}),dingtalkQueue.length=0)}var platform$2=weex.config.env.platform,nativeExec=null;"Web"!==platform$2&&(nativeExec=weex.requireModule("nuvajs-exec").exec);var __nuva_modules__={},requireStack=[],inProgressModules={},cat={},EventEmitter={on:function(n,e){var t=cat[n];t?t.push(e):cat[n]=[],t||cat[n].push(e)},off:function(n,e){var t=cat[n];if(!t)return!1;if(!n&&!e)return cat={},!0;if(n&&!e)return cat[n]=null,!0;for(var i=void 0,r=t.length;r--;)if((i=t[r])===e||i.fun===e){t.splice(r,1);break}return!0},once:function(n,e){function t(){EventEmitter.off(n,t),e.apply(this,arguments)}t.fun=e,EventEmitter.on(n,t)},emit:function(n){if("string"==typeof n){var e=cat[n],t=toArray(arguments,1);if(e)for(var i=0,r=e.length;i")+"->"+n)}if(__nuva_modules__[n].factory)try{return inProgressModules[n]=requireStack.length,requireStack.push(n),build(__nuva_modules__[n])}finally{delete inProgressModules[n],requireStack.pop()}return __nuva_modules__[n].__nuva_exports__}function __nuva_define__(n,e){if(__nuva_modules__[n])throw"module "+n+" already defined";__nuva_modules__[n]={id:n,factory:e}}function toArray(n,e){for(var t=e||0,i=n.length-t,r=new Array(i);i--;)r[i]=n[i+t];return r}function parseModules(n){for(var e in n){var t=n[e];!function(n,e){__nuva_define__(n,function(t,i,r){var o={};o._name=n;for(var u in e){var a=e[u];o[a]=function(e){return function(t){t||(t={});var i=t.onSuccess,r=t.onFail;return delete t.onSuccess,delete t.onFail,delete t.onCancel,exec({body:{plugin:n,action:e,args:t},onSuccess:i,onFail:r})}}(a)}r.__nuva_exports__=o})}(e,t)}}function rtFunc(n){return function(e){exec({body:{plugin:"runtime",action:n,args:{}},onSuccess:function(n){"function"==typeof e&&e(n)},onFail:function(){},context:null})}}function initDingtalkRequire(n){rtFunc("getModules")(n)}function permissionJsApis(n,e,t){if(!e)return void n(null);nuva.ready(function(){var i=nuva.require(runtimePermission),r=e||{},o=t||null;r.onSuccess=function(e){n(null,e)},r.onFail=function(e){"function"==typeof o?o(e):n(e,null)},i.requestJsApis(r)})}function parseJsApis(n){var e={};for(var t in n)for(var i=t.split("."),r=null,o=0,u=i.length;;)if(r){if(u-1===o){r[i[o]]=nuva.require(t);break}r[i[o]]?o++:(r[i[o]]={},r=r[i[o]],o++)}else{if(1===u){e[i[o]]=nuva.require(t);break}if(e[i[o]]){r=e[i[o]],o++;continue}e[i[o]]={},r=e[i[o]],o++}return e}function initNativeEvent(n){n.on=function(n,e,t){document.addEventListener(n,e,t)},n.off=function(n,e,t){document.removeEventListener(n,e,t)}}function initApis(n){n.apis=n}function initWebDingtalkSDK(){var n=function(){return function(){return window||this}()}();if(!n.dd)throw console.error("Not Found Dingtalk.js"),new Error;return initNativeEvent(n.dd),initApis(n.dd),n.dd}function performQueue(){dingtalkQueue&&dingtalkQueue.length>0&&(dingtalkQueue.forEach(function(n){n()}),dingtalkQueue.length=0)}var weexInstanceVar=void 0;weexInstanceVar||(weexInstanceVar=polyfills());var weexInstanceVar$1=weexInstanceVar,platform$2=weexInstanceVar$1.env.platform,nativeExec=null;"Web"!==platform$2&&(nativeExec=weexInstanceVar$1.requireModule("nuvajs-exec").exec);var __nuva_modules__={},requireStack=[],inProgressModules={},cat={},EventEmitter={on:function(n,e){var t=cat[n];t?t.push(e):cat[n]=[],t||cat[n].push(e)},off:function(n,e){var t=cat[n];if(!t)return!1;if(!n&&!e)return cat={},!0;if(n&&!e)return cat[n]=null,!0;for(var i=void 0,r=t.length;r--;)if((i=t[r])===e||i.fun===e){t.splice(r,1);break}return!0},once:function(n,e){function t(){EventEmitter.off(n,t),e.apply(this,arguments)}t.fun=e,EventEmitter.on(n,t)},emit:function(n){if("string"==typeof n){var e=cat[n],t=toArray(arguments,1);if(e)for(var i=0,r=e.length;i = [];\nlet inProgressModules: Object = {};\n\nfunction build(__nuva_module__: Object) {\n let factory = __nuva_module__.factory;\n __nuva_module__.__nuva_exports__ = {};\n delete __nuva_module__.factory;\n factory(__nuva_require__, __nuva_module__.__nuva_exports__, __nuva_module__);\n return __nuva_module__.__nuva_exports__;\n}\nexport function __nuva_require__(id: string) : any {\n if (!__nuva_modules__[id]) {\n throw '__nuva_module__ ' + id + ' not found';\n } else if (id in inProgressModules) {\n const cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;\n throw 'Cycle in require graph: ' + cycle;\n }\n if (__nuva_modules__[id].factory) {\n try {\n inProgressModules[id] = requireStack.length;\n requireStack.push(id);\n return build(__nuva_modules__[id]);\n } finally {\n delete inProgressModules[id];\n requireStack.pop();\n }\n }\n return __nuva_modules__[id].__nuva_exports__;\n};\n\nexport function __nuva_define__(id: string, factory: Function) {\n if (__nuva_modules__[id]) {\n throw 'module ' + id + ' already defined';\n }\n __nuva_modules__[id] = {\n id: id,\n factory: factory\n };\n};\n\nexport function __nuva_define_remove__(id: string){\n delete __nuva_modules__[id];\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nlet cat: Object = {};\nlet EventEmitter:{\n on: Function,\n off: Function,\n once: Function,\n emit: Function\n} = {\n on: function(event: string,fun: Function){\n let cbs = cat[event];\n cbs ? cbs.push(fun) : cat[event] = [];\n if (!cbs) {\n cat[event].push(fun);\n }\n },\n off: function(event: string,fun: Function){\n let cbs = cat[event];\n if (!cbs) {\n return false;\n }\n if (!event && !fun) {\n cat = {};\n return true;\n }\n if (event && !fun) {\n cat[event] = null;\n return true;\n }\n let cb;\n let i = cbs.length;\n while(i--){\n cb = cbs[i];\n if (cb === fun || cb.fun === fun) {\n cbs.splice(i,1);\n break;\n }\n }\n return true;\n },\n once: function(event: string,fun: Function){\n function _on(){\n EventEmitter.off(event,_on);\n fun.apply(this,arguments);\n }\n _on.fun = fun;\n EventEmitter.on(event,_on);\n },\n emit: function(event: string){\n let isString = typeof event === 'string';\n if (!isString){\n return;\n }\n let cbs = cat[event];\n let args = toArray(arguments,1);\n if (cbs) {\n let i = 0;\n let j = cbs.length;\n for(;i, index: ?number) {\n let _index = index || 0;\n let i = list.length - _index;\n let _array = new Array(i);\n while(i--){\n _array[i] = list[i + _index]\n }\n return _array\n}\n\nexport default EventEmitter;\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport exec from 'weex-dingtalk-exec';\nimport { __nuva_define__ } from './system-modules.js';\n\nexport default function parseModules(map: Object){\n for (let name in map) {\n let methods = map[name];\n (function(_name, _methods) {\n __nuva_define__(_name, function(__nuva_require__, __nuva_exports__,__nuva_module__) {\n let p = {};\n p._name = _name;\n for (let i in _methods) {\n let action = _methods[i];\n p[action] = (function(_action) {\n return function(params) {\n if (!params) {\n params = {};\n }\n let onSuccess = params.onSuccess;\n let onFail = params.onFail;\n delete params.onSuccess;\n delete params.onFail;\n delete params.onCancel;\n const config = {\n body: {\n plugin: _name,\n action: _action,\n args: params\n },\n onSuccess: onSuccess,\n onFail: onFail\n };\n return exec(config);\n };\n })(action);\n };\n __nuva_module__.__nuva_exports__ = p;\n });\n })(name, methods);\n }\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport exec from 'weex-dingtalk-exec';\nimport { __nuva_require__, __nuva_define__, __nuva_define_remove__ } from './global-api/system-modules.js';\nimport EventEmitter from './global-api/EventEmitter.js';\nimport parseModules from './global-api/parseModules.js';\n\nlet { platform } = weex.config.env;\nlet globalEvent: Object = {};\nif (platform !== 'Web'){\n globalEvent = weex.requireModule('globalEvent');\n}\n\nfunction rtFunc(method: string): Function {\n return function(cb: Function) {\n const config:{\n body: Object,\n onSuccess: Function,\n onFail: Function,\n context: ?Object\n } = {\n body: {\n plugin: 'runtime',\n action: method,\n args: {}\n },\n onSuccess: function(response){\n if (typeof cb === 'function'){\n cb(response);\n }\n },\n onFail: function(){\n\n },\n context: null\n };\n exec(config);\n };\n}\n\nfunction initDingtalkRequire(cb: Function){\n rtFunc('getModules')(cb);\n}\n\nlet nuva: {\n getModules: ?Object,\n isReady: boolean,\n define: Function,\n require: Function,\n runtime: Object,\n init: Function,\n ready: Function,\n on: Function,\n off: Function,\n EventEmitter: Object\n} = {\n getModules: null,\n isReady: false,\n define: __nuva_define__,\n require: function(id: string) : any{\n if (!id){\n return exec;\n } else {\n return __nuva_require__(id);\n }\n },\n runtime: {\n info: rtFunc('info'),\n _interceptBackButton: rtFunc('interceptBackButton'),\n _interceptNavTitle: rtFunc('interceptNavTitle'),\n _recoverNavTitle: rtFunc('recoverNavTitle'),\n _getModules: rtFunc('getModules')\n },\n init: function(){\n initDingtalkRequire(function(response){\n if(response){\n parseModules(response);\n nuva.isReady = true;\n nuva.getModules = response;\n EventEmitter.emit('__nuva_ready__');\n }\n });\n },\n ready: function(cb: Function){\n if (nuva.isReady){\n if (typeof cb === 'function'){\n cb();\n }\n } else {\n if (typeof cb === 'function'){\n EventEmitter.once('__nuva_ready__', function(){\n cb();\n });\n }\n }\n },\n on: function(type: string, handler: Function){\n globalEvent.addEventListener(type,function(e){\n const event:{\n preventDefault: Function,\n detail: Object\n } = {\n preventDefault: function () {\n console.warn('当前环境不支持 preventDefault')\n },\n detail: e\n };\n handler.call(this,event);\n });\n },\n off: globalEvent.removeEventListener,\n EventEmitter: EventEmitter\n};\n\nexport default nuva;\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n//@flow\n\nimport dt_nuva from 'weex-dingtalk-require';\n\nconst runtimePermission: string = 'runtime.permission';\n\nexport default function permissionJsApis(cb: Function,jsApisConfig:?Object, errorCb: ?Function){\n if (!jsApisConfig){\n cb(null);\n return;\n }\n dt_nuva.ready(function(){\n const permission = dt_nuva.require(runtimePermission);\n let apisConf = jsApisConfig ? jsApisConfig : {};\n let errCb = errorCb ? errorCb : null;\n apisConf.onSuccess = function(response){\n cb(null, response);\n };\n apisConf.onFail = function(error){\n if (typeof errCb === 'function'){\n errCb(error);\n } else {\n cb(error, null);\n }\n };\n permission.requestJsApis(apisConf);\n });\n}\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n//@flow\n\nimport dt_nuva from 'weex-dingtalk-require';\n\nexport default function parseJsApis(jsApis: Object) : Object{\n let apis: Object = {};\n for (let name: string in jsApis) {\n let node: Array = name.split('.');\n let staging = null;\n let i: number = 0;\n let j: number = node.length;\n while (true) {\n if (!staging) {\n if (1 === j) {\n apis[node[i]] = dt_nuva.require(name);\n break;\n }\n if (apis[node[i]]){\n staging = apis[node[i]];\n i++;\n continue;\n }\n apis[node[i]] = {};\n staging = apis[node[i]];\n i++;\n continue;\n } else {\n if ((j - 1) === i) {\n staging[node[i]] = dt_nuva.require(name);\n break;\n }\n if (staging[node[i]]) {\n i++;\n continue;\n }\n staging[node[i]] = {};\n staging = staging[node[i]];\n }\n i++;\n }\n }\n\treturn apis;\n}\n","\n/* @flow */\n\nfunction initNativeEvent(dt:Object){\n dt.on = function(type, listener, useCapture){\n document.addEventListener(type, listener, useCapture);\n }\n dt.off = function(type, listener, useCapture){\n document.removeEventListener(type, listener, useCapture);\n }\n}\n\nexport default initNativeEvent;\n","\n/* @flow */\n\nfunction initApis(dt: Object){\n dt.apis = dt;\n}\n\nexport default initApis;\n","\n/* @flow */\n\nimport initNativeEvent from './nativeEvent.js';\nimport initApis from './apis.js';\n\nfunction initWebDingtalkSDK () : Object {\n const GLOBALWINDOW:GLOBALWINDOW = (function(){\n return (function(){\n return window || this;\n })();\n })();\n if (!GLOBALWINDOW.dd){\n console.error('Not Found Dingtalk.js');\n throw new Error()\n }\n initNativeEvent(GLOBALWINDOW.dd);\n initApis(GLOBALWINDOW.dd);\n return GLOBALWINDOW.dd;\n}\n\nexport default initWebDingtalkSDK;\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n// @flow\n\nimport dt_nuva from 'weex-dingtalk-require';\nimport permissionJsApis from './core/permissionJsApis.js';\nimport { extend } from './shared/util.js';\nimport parseJsApis from './core/parseJsApis.js';\nimport initWebDingtalkSDK from './platforms/web/index.js';\nimport logger from './shared/logger.js';\n\nlet dingtalkJsApisConfig: ?Object = null;\nlet dingtalkQueue: ?Array = null;\nlet dingtalkErrorCb: ?Function = null;\nlet dingtalkInit: boolean = true;\nlet { platform } = weex.config.env;\n\nfunction performQueue (){\n if (dingtalkQueue && dingtalkQueue.length > 0){\n dingtalkQueue.forEach(function(task){\n task();\n });\n dingtalkQueue.length = 0;\n }\n}\n\nlet dingtalkSDK: Object = {};\nlet dingtalk: {\n isSync: boolean,\n apis: Object,\n config: Function,\n init: Function,\n ready: Function,\n on: Function,\n off: Function,\n error: Function\n} = {\n isSync: false,\n apis: {},\n config: function(config: Object){\n if (!config){\n logger.warn('config is undefined,you must configure Dingtalk parameters');\n return;\n }\n dingtalkJsApisConfig = config;\n },\n init: function(){\n // 初始化一次\n dingtalkQueue = [];\n dt_nuva.init();\n dt_nuva.ready(function(){\n dingtalk.isSync = true;\n dingtalk.apis = parseJsApis(dt_nuva.getModules ? dt_nuva.getModules : {});\n performQueue();\n });\n },\n ready: function(cb: Function){\n if (!cb || typeof cb !== 'function'){\n logger.warn('callback is undefined');\n return;\n }\n if (dingtalk.isSync){\n permissionJsApis(cb,dingtalkJsApisConfig,dingtalkErrorCb);\n } else {\n function bufferFunction(cb){\n return function(){\n permissionJsApis(cb,dingtalkJsApisConfig,dingtalkErrorCb);\n }\n }\n dingtalkQueue && dingtalkQueue.push(bufferFunction(cb));\n }\n },\n error: function(cb){\n if (typeof cb === 'function'){\n dingtalkErrorCb = cb;\n }\n },\n on: dt_nuva.on,\n off: dt_nuva.off\n};\n\nif (dingtalkInit){\n dingtalkInit = false;\n switch (platform){\n case 'Web':\n dingtalkSDK = initWebDingtalkSDK();\n break;\n default:\n dingtalkSDK = dingtalk;\n dingtalk.init();\n break\n }\n}\n\nexport default dingtalkSDK;\n","/* @flow */\n\nconst logger:{\n warn:Function,\n info:Function,\n error:Function\n} = {\n warn: function (msg: string, e:Object){\n console.warn('[DINGTALK JS SDK Warning]:', msg);\n if (e) {\n throw e;\n } else {\n const warning = new Error('WARNING STACK TRACE');\n console.warn(warning.stack);\n }\n },\n info: function (msg){\n console.info('[DINGTALK JS SDK INFO]:', msg);\n },\n error: function (msg){\n console.error('[DINGTALK JS SDK ERROR]:', msg);\n }\n};\n\nexport default logger;\n"],"names":["android_exec","exec","config","body","win","onSuccess","fail","onFail","context","response","__status__","status","message","__message__","call","ios_exec","errorCode","result","native_exec","nativeExec","platform","build","__nuva_module__","factory","__nuva_exports__","__nuva_require__","id","__nuva_modules__","inProgressModules","requireStack","slice","join","length","push","pop","__nuva_define__","toArray","list","index","_index","i","_array","Array","parseModules","map","name","methods","_name","_methods","p","action","_action","params","onCancel","rtFunc","method","cb","initDingtalkRequire","permissionJsApis","jsApisConfig","errorCb","ready","permission","dt_nuva","require","runtimePermission","apisConf","errCb","error","requestJsApis","parseJsApis","jsApis","apis","node","split","staging","j","initNativeEvent","dt","on","type","listener","useCapture","addEventListener","off","removeEventListener","initApis","initWebDingtalkSDK","GLOBALWINDOW","window","this","dd","Error","performQueue","dingtalkQueue","forEach","task","weex","env","requireModule","cat","EventEmitter","event","fun","cbs","splice","_on","apply","arguments","args","globalEvent","nuva","isReady","getModules","emit","once","handler","e","warn","logger","msg","warning","stack","info","dingtalkJsApisConfig","dingtalkErrorCb","dingtalkInit","dingtalkSDK","dingtalk","init","isSync"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"weex-dingtalk-min.js","sources":["../node_modules/weex-dingtalk-exec/src/android_exec.js","../node_modules/weex-dingtalk-exec/src/ios_exec.js","../node_modules/weex-dingtalk-polyfills/src/core/env.js","../node_modules/weex-dingtalk-polyfills/src/core/requireModule.js","../node_modules/weex-dingtalk-polyfills/src/index.js","../node_modules/weex-dingtalk-exec/src/index.js","../node_modules/weex-dingtalk-require/src/global-api/system-modules.js","../node_modules/weex-dingtalk-require/src/global-api/EventEmitter.js","../node_modules/weex-dingtalk-require/src/global-api/parseModules.js","../node_modules/weex-dingtalk-require/src/index.js","../src/core/permissionJsApis.js","../src/core/parseJsApis.js","../src/platforms/web/nativeEvent.js","../src/platforms/web/apis.js","../src/platforms/web/index.js","../src/index.js","../src/shared/logger.js"],"sourcesContent":["/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nexport default function android_exec(exec:Function,config:Object){\n const body = config.body;\n const win = config.onSuccess;\n const fail = config.onFail;\n const context = config.context;\n const STATUS_NO_RESULT: string = '0';\n const STATUS_OK: string = '1';\n const STATUS_ERROR: string = '2';\n if (exec && typeof exec === 'function'){\n exec(body,function (response) {\n if (typeof response !== \"undefined\" && response.__status__) {\n const status = response.__status__;\n const message = response.__message__;\n if (STATUS_OK === status){\n win && win.call(context, message);\n } else if (STATUS_ERROR === status){\n fail && fail.call(context, message);\n }\n } else {\n fail && fail.call('-1', \"\");\n }\n });\n } else {\n fail && fail.call('-1', \"\");\n }\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nexport default function ios_exec(exec:Function,config:Object){\n const body = config.body;\n const win = config.onSuccess;\n const fail = config.onFail;\n const context = config.context;\n if (exec && typeof exec === 'function'){\n exec(body,function (response) {\n if (typeof response !== \"undefined\") {\n if ('0' === response.errorCode) {\n win && win.call(context, response.result);\n } else {\n fail && fail.call(context, response.result);\n }\n }\n else {\n fail && fail.call('-1', \"\");\n }\n });\n } else {\n fail && fail.call('-1', \"\");\n }\n}\n","/* @flow */\n\nfunction initEnv() : Object{\n let weexEnv = {};\n if (typeof weex !== 'undefined'){\n weexEnv.platform = weex.config.env.platform;\n if (weexEnv.platform !== 'Web'){\n weexEnv.dingtalk = {\n bundleUrl: weex.config.bundleUrl,\n originalUrl: weex.config.originalUrl\n };\n }\n } else {\n // Rax Weex\n if (typeof callNative === 'function'){\n weexEnv.platform = navigator.platform;\n weexEnv.dingtalk = {\n bundleUrl: __weex_options__.bundleUrl,\n originalUrl: __weex_options__.originalUrl\n };\n } else {\n // Rax Web\n weexEnv.platform = 'Web';\n }\n }\n return weexEnv;\n}\n\nexport default initEnv;\n","/* @flow */\n\nfunction initRequireModule () : Function {\n let requireModule = function(name){\n let moduleName = '@weex-module/' + name;\n return __weex_require__(moduleName);\n }\n if (typeof weex !== 'undefined'){\n requireModule = weex.requireModule;\n }\n return requireModule;\n}\n\nexport default initRequireModule;\n","/* @flow */\n\nimport initEnv from './core/env.js';\nimport initRequire from './core/requireModule.js';\n\nfunction polyfills () : Object{\n let weexVar = {\n env: initEnv(),\n requireModule: initRequire()\n };\n return weexVar;\n}\n\nlet weexInstanceVar;\nif (!weexInstanceVar){\n weexInstanceVar = polyfills();\n}\n\nexport default weexInstanceVar;\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport android_exec from './android_exec.js';\nimport ios_exec from './ios_exec.js';\nimport weexInstanceVar from 'weex-dingtalk-polyfills';\n\nlet platform = weexInstanceVar.env.platform;\nlet nativeExec: ?Function = null;\nif (platform !== 'Web'){\n nativeExec = weexInstanceVar.requireModule('nuvajs-exec').exec;\n}\n\nfunction exec_affirm(plugin: string, action: string, args: ?Object,onSuccess: ?Function, onFail: ?Function, context: ?Object){\n const body: {\n plugin: string,\n action: string,\n args: Object\n } = {\n plugin: plugin,\n action: action,\n args: args ? args : {}\n }\n const config: {\n body: Object,\n onSuccess: ?Function,\n onFail: ?Function,\n context: ?Object\n } = {\n body: body,\n onSuccess: onSuccess ? onSuccess : null,\n onFail: onFail ? onFail : null,\n context: context ? context : null\n }\n exec(config);\n}\n\nfunction exec(config:Object) {\n let native_exec: Function = nativeExec ? nativeExec : function(){};\n if (platform === 'iOS'){\n ios_exec(native_exec,config);\n } else {\n if (platform === 'android'){\n android_exec(native_exec,config);\n }\n }\n}\n\nexport default exec;\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nlet __nuva_modules__: Object = {};\nlet requireStack: Array = [];\nlet inProgressModules: Object = {};\n\nfunction build(__nuva_module__: Object) {\n let factory = __nuva_module__.factory;\n __nuva_module__.__nuva_exports__ = {};\n delete __nuva_module__.factory;\n factory(__nuva_require__, __nuva_module__.__nuva_exports__, __nuva_module__);\n return __nuva_module__.__nuva_exports__;\n}\nexport function __nuva_require__(id: string) : any {\n if (!__nuva_modules__[id]) {\n throw '__nuva_module__ ' + id + ' not found';\n } else if (id in inProgressModules) {\n const cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;\n throw 'Cycle in require graph: ' + cycle;\n }\n if (__nuva_modules__[id].factory) {\n try {\n inProgressModules[id] = requireStack.length;\n requireStack.push(id);\n return build(__nuva_modules__[id]);\n } finally {\n delete inProgressModules[id];\n requireStack.pop();\n }\n }\n return __nuva_modules__[id].__nuva_exports__;\n};\n\nexport function __nuva_define__(id: string, factory: Function) {\n if (__nuva_modules__[id]) {\n throw 'module ' + id + ' already defined';\n }\n __nuva_modules__[id] = {\n id: id,\n factory: factory\n };\n};\n\nexport function __nuva_define_remove__(id: string){\n delete __nuva_modules__[id];\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nlet cat: Object = {};\nlet EventEmitter:{\n on: Function,\n off: Function,\n once: Function,\n emit: Function\n} = {\n on: function(event: string,fun: Function){\n let cbs = cat[event];\n cbs ? cbs.push(fun) : cat[event] = [];\n if (!cbs) {\n cat[event].push(fun);\n }\n },\n off: function(event: string,fun: Function){\n let cbs = cat[event];\n if (!cbs) {\n return false;\n }\n if (!event && !fun) {\n cat = {};\n return true;\n }\n if (event && !fun) {\n cat[event] = null;\n return true;\n }\n let cb;\n let i = cbs.length;\n while(i--){\n cb = cbs[i];\n if (cb === fun || cb.fun === fun) {\n cbs.splice(i,1);\n break;\n }\n }\n return true;\n },\n once: function(event: string,fun: Function){\n function _on(){\n EventEmitter.off(event,_on);\n fun.apply(this,arguments);\n }\n _on.fun = fun;\n EventEmitter.on(event,_on);\n },\n emit: function(event: string){\n let isString = typeof event === 'string';\n if (!isString){\n return;\n }\n let cbs = cat[event];\n let args = toArray(arguments,1);\n if (cbs) {\n let i = 0;\n let j = cbs.length;\n for(;i, index: ?number) {\n let _index = index || 0;\n let i = list.length - _index;\n let _array = new Array(i);\n while(i--){\n _array[i] = list[i + _index]\n }\n return _array\n}\n\nexport default EventEmitter;\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport exec from 'weex-dingtalk-exec';\nimport { __nuva_define__ } from './system-modules.js';\n\nexport default function parseModules(map: Object){\n for (let name in map) {\n let methods = map[name];\n (function(_name, _methods) {\n __nuva_define__(_name, function(__nuva_require__, __nuva_exports__,__nuva_module__) {\n let p = {};\n p._name = _name;\n for (let i in _methods) {\n let action = _methods[i];\n p[action] = (function(_action) {\n return function(params) {\n if (!params) {\n params = {};\n }\n let onSuccess = params.onSuccess;\n let onFail = params.onFail;\n delete params.onSuccess;\n delete params.onFail;\n delete params.onCancel;\n const config = {\n body: {\n plugin: _name,\n action: _action,\n args: params\n },\n onSuccess: onSuccess,\n onFail: onFail\n };\n return exec(config);\n };\n })(action);\n };\n __nuva_module__.__nuva_exports__ = p;\n });\n })(name, methods);\n }\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport exec from 'weex-dingtalk-exec';\nimport { __nuva_require__, __nuva_define__, __nuva_define_remove__ } from './global-api/system-modules.js';\nimport EventEmitter from './global-api/EventEmitter.js';\nimport parseModules from './global-api/parseModules.js';\nimport weexInstanceVar from 'weex-dingtalk-polyfills';\n\nlet platform = weexInstanceVar.env.platform;\nlet globalEvent: Object = {};\nif (platform !== 'Web'){\n globalEvent = weexInstanceVar.requireModule('globalEvent');\n}\n\nfunction rtFunc(method: string): Function {\n return function(cb: Function) {\n const config:{\n body: Object,\n onSuccess: Function,\n onFail: Function,\n context: ?Object\n } = {\n body: {\n plugin: 'runtime',\n action: method,\n args: {}\n },\n onSuccess: function(response){\n if (typeof cb === 'function'){\n cb(response);\n }\n },\n onFail: function(){\n\n },\n context: null\n };\n exec(config);\n };\n}\n\nfunction initDingtalkRequire(cb: Function){\n rtFunc('getModules')(cb);\n}\n\nlet nuva: {\n getModules: ?Object,\n isReady: boolean,\n define: Function,\n require: Function,\n runtime: Object,\n init: Function,\n ready: Function,\n on: Function,\n off: Function,\n EventEmitter: Object\n} = {\n getModules: null,\n isReady: false,\n define: __nuva_define__,\n require: function(id: string) : any{\n if (!id){\n return exec;\n } else {\n return __nuva_require__(id);\n }\n },\n runtime: {\n info: rtFunc('info'),\n _interceptBackButton: rtFunc('interceptBackButton'),\n _interceptNavTitle: rtFunc('interceptNavTitle'),\n _recoverNavTitle: rtFunc('recoverNavTitle'),\n _getModules: rtFunc('getModules')\n },\n init: function(){\n initDingtalkRequire(function(response){\n if(response){\n parseModules(response);\n nuva.isReady = true;\n nuva.getModules = response;\n EventEmitter.emit('__nuva_ready__');\n }\n });\n },\n ready: function(cb: Function){\n if (nuva.isReady){\n if (typeof cb === 'function'){\n cb();\n }\n } else {\n if (typeof cb === 'function'){\n EventEmitter.once('__nuva_ready__', function(){\n cb();\n });\n }\n }\n },\n on: function(type: string, handler: Function){\n globalEvent.addEventListener(type,function(e){\n const event:{\n preventDefault: Function,\n detail: Object\n } = {\n preventDefault: function () {\n console.warn('当前环境不支持 preventDefault')\n },\n detail: e\n };\n handler.call(this,event);\n });\n },\n off: globalEvent.removeEventListener,\n EventEmitter: EventEmitter\n};\n\nexport default nuva;\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n//@flow\n\nimport dt_nuva from 'weex-dingtalk-require';\n\nconst runtimePermission: string = 'runtime.permission';\n\nexport default function permissionJsApis(cb: Function,jsApisConfig:?Object, errorCb: ?Function){\n if (!jsApisConfig){\n cb(null);\n return;\n }\n dt_nuva.ready(function(){\n const permission = dt_nuva.require(runtimePermission);\n let apisConf = jsApisConfig ? jsApisConfig : {};\n let errCb = errorCb ? errorCb : null;\n apisConf.onSuccess = function(response){\n cb(null, response);\n };\n apisConf.onFail = function(error){\n if (typeof errCb === 'function'){\n errCb(error);\n } else {\n cb(error, null);\n }\n };\n permission.requestJsApis(apisConf);\n });\n}\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n//@flow\n\nimport dt_nuva from 'weex-dingtalk-require';\n\nexport default function parseJsApis(jsApis: Object) : Object{\n let apis: Object = {};\n for (let name: string in jsApis) {\n let node: Array = name.split('.');\n let staging = null;\n let i: number = 0;\n let j: number = node.length;\n while (true) {\n if (!staging) {\n if (1 === j) {\n apis[node[i]] = dt_nuva.require(name);\n break;\n }\n if (apis[node[i]]){\n staging = apis[node[i]];\n i++;\n continue;\n }\n apis[node[i]] = {};\n staging = apis[node[i]];\n i++;\n continue;\n } else {\n if ((j - 1) === i) {\n staging[node[i]] = dt_nuva.require(name);\n break;\n }\n if (staging[node[i]]) {\n i++;\n continue;\n }\n staging[node[i]] = {};\n staging = staging[node[i]];\n }\n i++;\n }\n }\n\treturn apis;\n}\n","\n/* @flow */\n\nfunction initNativeEvent(dt:Object){\n dt.on = function(type, listener, useCapture){\n document.addEventListener(type, listener, useCapture);\n }\n dt.off = function(type, listener, useCapture){\n document.removeEventListener(type, listener, useCapture);\n }\n}\n\nexport default initNativeEvent;\n","\n/* @flow */\n\nfunction initApis(dt: Object){\n dt.apis = dt;\n}\n\nexport default initApis;\n","\n/* @flow */\n\nimport initNativeEvent from './nativeEvent.js';\nimport initApis from './apis.js';\n\nfunction initWebDingtalkSDK () : Object {\n const GLOBALWINDOW:GLOBALWINDOW = (function(){\n return (function(){\n return window || this;\n })();\n })();\n if (!GLOBALWINDOW.dd){\n console.error('Not Found Dingtalk.js');\n throw new Error()\n }\n initNativeEvent(GLOBALWINDOW.dd);\n initApis(GLOBALWINDOW.dd);\n return GLOBALWINDOW.dd;\n}\n\nexport default initWebDingtalkSDK;\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n// @flow\n\nimport dt_nuva from 'weex-dingtalk-require';\nimport weexInstanceVar from 'weex-dingtalk-polyfills';\nimport permissionJsApis from './core/permissionJsApis.js';\nimport { extend } from './shared/util.js';\nimport parseJsApis from './core/parseJsApis.js';\nimport initWebDingtalkSDK from './platforms/web/index.js';\nimport logger from './shared/logger.js';\n\nlet dingtalkJsApisConfig: ?Object = null;\nlet dingtalkQueue: ?Array = null;\nlet dingtalkErrorCb: ?Function = null;\nlet dingtalkInit: boolean = true;\nlet platform = weexInstanceVar.env.platform;\n\nfunction performQueue (){\n if (dingtalkQueue && dingtalkQueue.length > 0){\n dingtalkQueue.forEach(function(task){\n task();\n });\n dingtalkQueue.length = 0;\n }\n}\n\nlet dingtalkSDK: Object = {};\nlet dingtalk: {\n isSync: boolean,\n apis: Object,\n config: Function,\n init: Function,\n ready: Function,\n on: Function,\n off: Function,\n error: Function\n} = {\n isSync: false,\n apis: {},\n config: function(config: Object){\n if (!config){\n logger.warn('config is undefined,you must configure Dingtalk parameters');\n return;\n }\n dingtalkJsApisConfig = config;\n },\n init: function(){\n // 初始化一次\n dingtalkQueue = [];\n dt_nuva.init();\n dt_nuva.ready(function(){\n dingtalk.isSync = true;\n dingtalk.apis = parseJsApis(dt_nuva.getModules ? dt_nuva.getModules : {});\n performQueue();\n });\n },\n ready: function(cb: Function){\n if (!cb || typeof cb !== 'function'){\n logger.warn('callback is undefined');\n return;\n }\n if (dingtalk.isSync){\n permissionJsApis(cb,dingtalkJsApisConfig,dingtalkErrorCb);\n } else {\n function bufferFunction(cb){\n return function(){\n permissionJsApis(cb,dingtalkJsApisConfig,dingtalkErrorCb);\n }\n }\n dingtalkQueue && dingtalkQueue.push(bufferFunction(cb));\n }\n },\n error: function(cb){\n if (typeof cb === 'function'){\n dingtalkErrorCb = cb;\n }\n },\n on: dt_nuva.on,\n off: dt_nuva.off\n};\n\nif (dingtalkInit){\n dingtalkInit = false;\n switch (platform){\n case 'Web':\n dingtalkSDK = initWebDingtalkSDK();\n break;\n default:\n dingtalkSDK = dingtalk;\n dingtalk.init();\n break\n }\n}\n\nexport default dingtalkSDK;\n","/* @flow */\n\nconst logger:{\n warn:Function,\n info:Function,\n error:Function\n} = {\n warn: function (msg: string, e:Object){\n console.warn('[DINGTALK JS SDK Warning]:', msg);\n if (e) {\n throw e;\n } else {\n const warning = new Error('WARNING STACK TRACE');\n console.warn(warning.stack);\n }\n },\n info: function (msg){\n console.info('[DINGTALK JS SDK INFO]:', msg);\n },\n error: function (msg){\n console.error('[DINGTALK JS SDK ERROR]:', msg);\n }\n};\n\nexport default logger;\n"],"names":["android_exec","exec","config","body","win","onSuccess","fail","onFail","context","response","__status__","status","message","__message__","call","ios_exec","errorCode","result","initEnv","weexEnv","weex","platform","env","dingtalk","bundleUrl","originalUrl","callNative","navigator","__weex_options__","initRequireModule","requireModule","name","moduleName","__weex_require__","polyfills","initRequire","native_exec","nativeExec","build","__nuva_module__","factory","__nuva_exports__","__nuva_require__","id","__nuva_modules__","inProgressModules","requireStack","slice","join","length","push","pop","__nuva_define__","toArray","list","index","_index","i","_array","Array","parseModules","map","methods","_name","_methods","p","action","_action","params","onCancel","rtFunc","method","cb","initDingtalkRequire","permissionJsApis","jsApisConfig","errorCb","ready","permission","dt_nuva","require","runtimePermission","apisConf","errCb","error","requestJsApis","parseJsApis","jsApis","apis","node","split","staging","j","initNativeEvent","dt","on","type","listener","useCapture","addEventListener","off","removeEventListener","initApis","initWebDingtalkSDK","GLOBALWINDOW","window","this","dd","Error","performQueue","dingtalkQueue","forEach","task","weexInstanceVar","cat","EventEmitter","event","fun","cbs","splice","_on","apply","arguments","args","globalEvent","nuva","isReady","getModules","emit","once","handler","e","warn","logger","msg","warning","stack","info","dingtalkJsApisConfig","dingtalkErrorCb","dingtalkInit","dingtalkSDK","init","isSync"],"mappings":"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"} \ No newline at end of file diff --git a/dist/weex-dingtalk.js b/dist/weex-dingtalk.js index 276a99c..5364f33 100644 --- a/dist/weex-dingtalk.js +++ b/dist/weex-dingtalk.js @@ -57,15 +57,66 @@ function ios_exec(exec, config) { } } +function initEnv() { + var weexEnv = {}; + if (typeof weex !== 'undefined') { + weexEnv.platform = weex.config.env.platform; + if (weexEnv.platform !== 'Web') { + weexEnv.dingtalk = { + bundleUrl: weex.config.bundleUrl, + originalUrl: weex.config.originalUrl + }; + } + } else { + // Rax Weex + if (typeof callNative === 'function') { + weexEnv.platform = navigator.platform; + weexEnv.dingtalk = { + bundleUrl: __weex_options__.bundleUrl, + originalUrl: __weex_options__.originalUrl + }; + } else { + // Rax Web + weexEnv.platform = 'Web'; + } + } + return weexEnv; +} + +function initRequireModule() { + var requireModule = function requireModule(name) { + var moduleName = '@weex-module/' + name; + return __weex_require__(moduleName); + }; + if (typeof weex !== 'undefined') { + requireModule = weex.requireModule; + } + return requireModule; +} + +function polyfills() { + var weexVar = { + env: initEnv(), + requireModule: initRequireModule() + }; + return weexVar; +} + +var weexInstanceVar = void 0; +if (!weexInstanceVar) { + weexInstanceVar = polyfills(); +} + +var weexInstanceVar$1 = weexInstanceVar; + /** * Created by xiangwenwen on 2017/3/24. */ -var platform$2 = weex.config.env.platform; - +var platform$2 = weexInstanceVar$1.env.platform; var nativeExec = null; if (platform$2 !== 'Web') { - nativeExec = weex.requireModule('nuvajs-exec').exec; + nativeExec = weexInstanceVar$1.requireModule('nuvajs-exec').exec; } function exec(config) { @@ -243,11 +294,10 @@ function parseModules(map) { * Created by xiangwenwen on 2017/3/24. */ -var platform$1 = weex.config.env.platform; - +var platform$1 = weexInstanceVar$1.env.platform; var globalEvent = {}; if (platform$1 !== 'Web') { - globalEvent = weex.requireModule('globalEvent'); + globalEvent = weexInstanceVar$1.requireModule('globalEvent'); } function rtFunc(method) { @@ -457,8 +507,7 @@ var dingtalkJsApisConfig = null; var dingtalkQueue = null; var dingtalkErrorCb = null; var dingtalkInit = true; -var platform = weex.config.env.platform; - +var platform = weexInstanceVar$1.env.platform; function performQueue() { if (dingtalkQueue && dingtalkQueue.length > 0) { diff --git a/dist/weex-dingtalk.js.map b/dist/weex-dingtalk.js.map index 03eb535..aad3a70 100644 --- a/dist/weex-dingtalk.js.map +++ b/dist/weex-dingtalk.js.map @@ -1 +1 @@ -{"version":3,"file":"weex-dingtalk.js","sources":["../node_modules/.0.0.3@weex-dingtalk-exec/src/android_exec.js","../node_modules/.0.0.3@weex-dingtalk-exec/src/ios_exec.js","../node_modules/.0.0.3@weex-dingtalk-exec/src/index.js","../node_modules/.0.0.4@weex-dingtalk-require/src/global-api/system-modules.js","../node_modules/.0.0.4@weex-dingtalk-require/src/global-api/EventEmitter.js","../node_modules/.0.0.4@weex-dingtalk-require/src/global-api/parseModules.js","../node_modules/.0.0.4@weex-dingtalk-require/src/index.js","../src/core/permissionJsApis.js","../src/core/parseJsApis.js","../src/platforms/web/nativeEvent.js","../src/platforms/web/apis.js","../src/platforms/web/index.js","../src/shared/logger.js","../src/index.js"],"sourcesContent":["/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nexport default function android_exec(exec:Function,config:Object){\n const body = config.body;\n const win = config.onSuccess;\n const fail = config.onFail;\n const context = config.context;\n const STATUS_NO_RESULT: string = '0';\n const STATUS_OK: string = '1';\n const STATUS_ERROR: string = '2';\n if (exec && typeof exec === 'function'){\n exec(body,function (response) {\n if (typeof response !== \"undefined\" && response.__status__) {\n const status = response.__status__;\n const message = response.__message__;\n if (STATUS_OK === status){\n win && win.call(context, message);\n } else if (STATUS_ERROR === status){\n fail && fail.call(context, message);\n }\n } else {\n fail && fail.call('-1', \"\");\n }\n });\n } else {\n fail && fail.call('-1', \"\");\n }\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nexport default function ios_exec(exec:Function,config:Object){\n const body = config.body;\n const win = config.onSuccess;\n const fail = config.onFail;\n const context = config.context;\n if (exec && typeof exec === 'function'){\n exec(body,function (response) {\n if (typeof response !== \"undefined\") {\n if ('0' === response.errorCode) {\n win && win.call(context, response.result);\n } else {\n fail && fail.call(context, response.result);\n }\n }\n else {\n fail && fail.call('-1', \"\");\n }\n });\n } else {\n fail && fail.call('-1', \"\");\n }\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport android_exec from './android_exec.js';\nimport ios_exec from './ios_exec.js';\n\nlet { platform } = weex.config.env;\nlet nativeExec: ?Function = null;\nif (platform !== 'Web'){\n nativeExec = weex.requireModule('nuvajs-exec').exec;\n}\n\nfunction exec_affirm(plugin: string, action: string, args: ?Object,onSuccess: ?Function, onFail: ?Function, context: ?Object){\n const body: {\n plugin: string,\n action: string,\n args: Object\n } = {\n plugin: plugin,\n action: action,\n args: args ? args : {}\n }\n const config: {\n body: Object,\n onSuccess: ?Function,\n onFail: ?Function,\n context: ?Object\n } = {\n body: body,\n onSuccess: onSuccess ? onSuccess : null,\n onFail: onFail ? onFail : null,\n context: context ? context : null\n }\n exec(config);\n}\n\nfunction exec(config:Object) {\n let native_exec: Function = nativeExec ? nativeExec : function(){};\n if (platform === 'iOS'){\n ios_exec(native_exec,config);\n } else {\n if (platform === 'android'){\n android_exec(native_exec,config);\n }\n }\n}\n\nexport default exec;\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nlet __nuva_modules__: Object = {};\nlet requireStack: Array = [];\nlet inProgressModules: Object = {};\n\nfunction build(__nuva_module__: Object) {\n let factory = __nuva_module__.factory;\n __nuva_module__.__nuva_exports__ = {};\n delete __nuva_module__.factory;\n factory(__nuva_require__, __nuva_module__.__nuva_exports__, __nuva_module__);\n return __nuva_module__.__nuva_exports__;\n}\nexport function __nuva_require__(id: string) : any {\n if (!__nuva_modules__[id]) {\n throw '__nuva_module__ ' + id + ' not found';\n } else if (id in inProgressModules) {\n const cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;\n throw 'Cycle in require graph: ' + cycle;\n }\n if (__nuva_modules__[id].factory) {\n try {\n inProgressModules[id] = requireStack.length;\n requireStack.push(id);\n return build(__nuva_modules__[id]);\n } finally {\n delete inProgressModules[id];\n requireStack.pop();\n }\n }\n return __nuva_modules__[id].__nuva_exports__;\n};\n\nexport function __nuva_define__(id: string, factory: Function) {\n if (__nuva_modules__[id]) {\n throw 'module ' + id + ' already defined';\n }\n __nuva_modules__[id] = {\n id: id,\n factory: factory\n };\n};\n\nexport function __nuva_define_remove__(id: string){\n delete __nuva_modules__[id];\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nlet cat: Object = {};\nlet EventEmitter:{\n on: Function,\n off: Function,\n once: Function,\n emit: Function\n} = {\n on: function(event: string,fun: Function){\n let cbs = cat[event];\n cbs ? cbs.push(fun) : cat[event] = [];\n if (!cbs) {\n cat[event].push(fun);\n }\n },\n off: function(event: string,fun: Function){\n let cbs = cat[event];\n if (!cbs) {\n return false;\n }\n if (!event && !fun) {\n cat = {};\n return true;\n }\n if (event && !fun) {\n cat[event] = null;\n return true;\n }\n let cb;\n let i = cbs.length;\n while(i--){\n cb = cbs[i];\n if (cb === fun || cb.fun === fun) {\n cbs.splice(i,1);\n break;\n }\n }\n return true;\n },\n once: function(event: string,fun: Function){\n function _on(){\n EventEmitter.off(event,_on);\n fun.apply(this,arguments);\n }\n _on.fun = fun;\n EventEmitter.on(event,_on);\n },\n emit: function(event: string){\n let isString = typeof event === 'string';\n if (!isString){\n return;\n }\n let cbs = cat[event];\n let args = toArray(arguments,1);\n if (cbs) {\n let i = 0;\n let j = cbs.length;\n for(;i, index: ?number) {\n let _index = index || 0;\n let i = list.length - _index;\n let _array = new Array(i);\n while(i--){\n _array[i] = list[i + _index]\n }\n return _array\n}\n\nexport default EventEmitter;\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport exec from 'weex-dingtalk-exec';\nimport { __nuva_define__ } from './system-modules.js';\n\nexport default function parseModules(map: Object){\n for (let name in map) {\n let methods = map[name];\n (function(_name, _methods) {\n __nuva_define__(_name, function(__nuva_require__, __nuva_exports__,__nuva_module__) {\n let p = {};\n p._name = _name;\n for (let i in _methods) {\n let action = _methods[i];\n p[action] = (function(_action) {\n return function(params) {\n if (!params) {\n params = {};\n }\n let onSuccess = params.onSuccess;\n let onFail = params.onFail;\n delete params.onSuccess;\n delete params.onFail;\n delete params.onCancel;\n const config = {\n body: {\n plugin: _name,\n action: _action,\n args: params\n },\n onSuccess: onSuccess,\n onFail: onFail\n };\n return exec(config);\n };\n })(action);\n };\n __nuva_module__.__nuva_exports__ = p;\n });\n })(name, methods);\n }\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport exec from 'weex-dingtalk-exec';\nimport { __nuva_require__, __nuva_define__, __nuva_define_remove__ } from './global-api/system-modules.js';\nimport EventEmitter from './global-api/EventEmitter.js';\nimport parseModules from './global-api/parseModules.js';\n\nlet { platform } = weex.config.env;\nlet globalEvent: Object = {};\nif (platform !== 'Web'){\n globalEvent = weex.requireModule('globalEvent');\n}\n\nfunction rtFunc(method: string): Function {\n return function(cb: Function) {\n const config:{\n body: Object,\n onSuccess: Function,\n onFail: Function,\n context: ?Object\n } = {\n body: {\n plugin: 'runtime',\n action: method,\n args: {}\n },\n onSuccess: function(response){\n if (typeof cb === 'function'){\n cb(response);\n }\n },\n onFail: function(){\n\n },\n context: null\n };\n exec(config);\n };\n}\n\nfunction initDingtalkRequire(cb: Function){\n rtFunc('getModules')(cb);\n}\n\nlet nuva: {\n getModules: ?Object,\n isReady: boolean,\n define: Function,\n require: Function,\n runtime: Object,\n init: Function,\n ready: Function,\n on: Function,\n off: Function,\n EventEmitter: Object\n} = {\n getModules: null,\n isReady: false,\n define: __nuva_define__,\n require: function(id: string) : any{\n if (!id){\n return exec;\n } else {\n return __nuva_require__(id);\n }\n },\n runtime: {\n info: rtFunc('info'),\n _interceptBackButton: rtFunc('interceptBackButton'),\n _interceptNavTitle: rtFunc('interceptNavTitle'),\n _recoverNavTitle: rtFunc('recoverNavTitle'),\n _getModules: rtFunc('getModules')\n },\n init: function(){\n initDingtalkRequire(function(response){\n if(response){\n parseModules(response);\n nuva.isReady = true;\n nuva.getModules = response;\n EventEmitter.emit('__nuva_ready__');\n }\n });\n },\n ready: function(cb: Function){\n if (nuva.isReady){\n if (typeof cb === 'function'){\n cb();\n }\n } else {\n if (typeof cb === 'function'){\n EventEmitter.once('__nuva_ready__', function(){\n cb();\n });\n }\n }\n },\n on: function(type: string, handler: Function){\n globalEvent.addEventListener(type,function(e){\n const event:{\n preventDefault: Function,\n detail: Object\n } = {\n preventDefault: function () {\n console.warn('当前环境不支持 preventDefault')\n },\n detail: e\n };\n handler.call(this,event);\n });\n },\n off: globalEvent.removeEventListener,\n EventEmitter: EventEmitter\n};\n\nexport default nuva;\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n//@flow\n\nimport dt_nuva from 'weex-dingtalk-require';\n\nconst runtimePermission: string = 'runtime.permission';\n\nexport default function permissionJsApis(cb: Function,jsApisConfig:?Object, errorCb: ?Function){\n if (!jsApisConfig){\n cb(null);\n return;\n }\n dt_nuva.ready(function(){\n const permission = dt_nuva.require(runtimePermission);\n let apisConf = jsApisConfig ? jsApisConfig : {};\n let errCb = errorCb ? errorCb : null;\n apisConf.onSuccess = function(response){\n cb(null, response);\n };\n apisConf.onFail = function(error){\n if (typeof errCb === 'function'){\n errCb(error);\n } else {\n cb(error, null);\n }\n };\n permission.requestJsApis(apisConf);\n });\n}\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n//@flow\n\nimport dt_nuva from 'weex-dingtalk-require';\n\nexport default function parseJsApis(jsApis: Object) : Object{\n let apis: Object = {};\n for (let name: string in jsApis) {\n let node: Array = name.split('.');\n let staging = null;\n let i: number = 0;\n let j: number = node.length;\n while (true) {\n if (!staging) {\n if (1 === j) {\n apis[node[i]] = dt_nuva.require(name);\n break;\n }\n if (apis[node[i]]){\n staging = apis[node[i]];\n i++;\n continue;\n }\n apis[node[i]] = {};\n staging = apis[node[i]];\n i++;\n continue;\n } else {\n if ((j - 1) === i) {\n staging[node[i]] = dt_nuva.require(name);\n break;\n }\n if (staging[node[i]]) {\n i++;\n continue;\n }\n staging[node[i]] = {};\n staging = staging[node[i]];\n }\n i++;\n }\n }\n\treturn apis;\n}\n","\n/* @flow */\n\nfunction initNativeEvent(dt:Object){\n dt.on = function(type, listener, useCapture){\n document.addEventListener(type, listener, useCapture);\n }\n dt.off = function(type, listener, useCapture){\n document.removeEventListener(type, listener, useCapture);\n }\n}\n\nexport default initNativeEvent;\n","\n/* @flow */\n\nfunction initApis(dt: Object){\n dt.apis = dt;\n}\n\nexport default initApis;\n","\n/* @flow */\n\nimport initNativeEvent from './nativeEvent.js';\nimport initApis from './apis.js';\n\nfunction initWebDingtalkSDK () : Object {\n const GLOBALWINDOW:GLOBALWINDOW = (function(){\n return (function(){\n return window || this;\n })();\n })();\n if (!GLOBALWINDOW.dd){\n console.error('Not Found Dingtalk.js');\n throw new Error()\n }\n initNativeEvent(GLOBALWINDOW.dd);\n initApis(GLOBALWINDOW.dd);\n return GLOBALWINDOW.dd;\n}\n\nexport default initWebDingtalkSDK;\n","/* @flow */\n\nconst logger:{\n warn:Function,\n info:Function,\n error:Function\n} = {\n warn: function (msg: string, e:Object){\n console.warn('[DINGTALK JS SDK Warning]:', msg);\n if (e) {\n throw e;\n } else {\n const warning = new Error('WARNING STACK TRACE');\n console.warn(warning.stack);\n }\n },\n info: function (msg){\n console.info('[DINGTALK JS SDK INFO]:', msg);\n },\n error: function (msg){\n console.error('[DINGTALK JS SDK ERROR]:', msg);\n }\n};\n\nexport default logger;\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n// @flow\n\nimport dt_nuva from 'weex-dingtalk-require';\nimport permissionJsApis from './core/permissionJsApis.js';\nimport { extend } from './shared/util.js';\nimport parseJsApis from './core/parseJsApis.js';\nimport initWebDingtalkSDK from './platforms/web/index.js';\nimport logger from './shared/logger.js';\n\nlet dingtalkJsApisConfig: ?Object = null;\nlet dingtalkQueue: ?Array = null;\nlet dingtalkErrorCb: ?Function = null;\nlet dingtalkInit: boolean = true;\nlet { platform } = weex.config.env;\n\nfunction performQueue (){\n if (dingtalkQueue && dingtalkQueue.length > 0){\n dingtalkQueue.forEach(function(task){\n task();\n });\n dingtalkQueue.length = 0;\n }\n}\n\nlet dingtalkSDK: Object = {};\nlet dingtalk: {\n isSync: boolean,\n apis: Object,\n config: Function,\n init: Function,\n ready: Function,\n on: Function,\n off: Function,\n error: Function\n} = {\n isSync: false,\n apis: {},\n config: function(config: Object){\n if (!config){\n logger.warn('config is undefined,you must configure Dingtalk parameters');\n return;\n }\n dingtalkJsApisConfig = config;\n },\n init: function(){\n // 初始化一次\n dingtalkQueue = [];\n dt_nuva.init();\n dt_nuva.ready(function(){\n dingtalk.isSync = true;\n dingtalk.apis = parseJsApis(dt_nuva.getModules ? dt_nuva.getModules : {});\n performQueue();\n });\n },\n ready: function(cb: Function){\n if (!cb || typeof cb !== 'function'){\n logger.warn('callback is undefined');\n return;\n }\n if (dingtalk.isSync){\n permissionJsApis(cb,dingtalkJsApisConfig,dingtalkErrorCb);\n } else {\n function bufferFunction(cb){\n return function(){\n permissionJsApis(cb,dingtalkJsApisConfig,dingtalkErrorCb);\n }\n }\n dingtalkQueue && dingtalkQueue.push(bufferFunction(cb));\n }\n },\n error: function(cb){\n if (typeof cb === 'function'){\n dingtalkErrorCb = cb;\n }\n },\n on: dt_nuva.on,\n off: dt_nuva.off\n};\n\nif (dingtalkInit){\n dingtalkInit = false;\n switch (platform){\n case 'Web':\n dingtalkSDK = initWebDingtalkSDK();\n break;\n default:\n dingtalkSDK = dingtalk;\n dingtalk.init();\n break\n }\n}\n\nexport default dingtalkSDK;\n"],"names":["android_exec","exec","config","body","win","onSuccess","fail","onFail","context","STATUS_NO_RESULT","STATUS_OK","STATUS_ERROR","response","__status__","status","message","__message__","call","ios_exec","errorCode","result","platform","weex","env","nativeExec","requireModule","native_exec","__nuva_modules__","requireStack","inProgressModules","build","__nuva_module__","factory","__nuva_exports__","__nuva_require__","id","cycle","slice","join","length","push","pop","__nuva_define__","cat","EventEmitter","event","fun","cbs","cb","i","splice","_on","off","apply","arguments","on","isString","args","toArray","j","list","index","_index","_array","Array","parseModules","map","name","methods","_name","_methods","p","action","_action","params","onCancel","globalEvent","rtFunc","method","initDingtalkRequire","nuva","isReady","getModules","emit","once","type","handler","addEventListener","e","warn","removeEventListener","runtimePermission","permissionJsApis","jsApisConfig","errorCb","ready","permission","dt_nuva","require","apisConf","errCb","error","requestJsApis","parseJsApis","jsApis","apis","node","split","staging","initNativeEvent","dt","listener","useCapture","initApis","initWebDingtalkSDK","GLOBALWINDOW","window","dd","Error","logger","msg","warning","stack","info","dingtalkJsApisConfig","dingtalkQueue","dingtalkErrorCb","dingtalkInit","performQueue","forEach","task","dingtalkSDK","dingtalk","init","isSync","bufferFunction"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"weex-dingtalk.js","sources":["../node_modules/weex-dingtalk-exec/src/android_exec.js","../node_modules/weex-dingtalk-exec/src/ios_exec.js","../node_modules/weex-dingtalk-polyfills/src/core/env.js","../node_modules/weex-dingtalk-polyfills/src/core/requireModule.js","../node_modules/weex-dingtalk-polyfills/src/index.js","../node_modules/weex-dingtalk-exec/src/index.js","../node_modules/weex-dingtalk-require/src/global-api/system-modules.js","../node_modules/weex-dingtalk-require/src/global-api/EventEmitter.js","../node_modules/weex-dingtalk-require/src/global-api/parseModules.js","../node_modules/weex-dingtalk-require/src/index.js","../src/core/permissionJsApis.js","../src/core/parseJsApis.js","../src/platforms/web/nativeEvent.js","../src/platforms/web/apis.js","../src/platforms/web/index.js","../src/shared/logger.js","../src/index.js"],"sourcesContent":["/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nexport default function android_exec(exec:Function,config:Object){\n const body = config.body;\n const win = config.onSuccess;\n const fail = config.onFail;\n const context = config.context;\n const STATUS_NO_RESULT: string = '0';\n const STATUS_OK: string = '1';\n const STATUS_ERROR: string = '2';\n if (exec && typeof exec === 'function'){\n exec(body,function (response) {\n if (typeof response !== \"undefined\" && response.__status__) {\n const status = response.__status__;\n const message = response.__message__;\n if (STATUS_OK === status){\n win && win.call(context, message);\n } else if (STATUS_ERROR === status){\n fail && fail.call(context, message);\n }\n } else {\n fail && fail.call('-1', \"\");\n }\n });\n } else {\n fail && fail.call('-1', \"\");\n }\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nexport default function ios_exec(exec:Function,config:Object){\n const body = config.body;\n const win = config.onSuccess;\n const fail = config.onFail;\n const context = config.context;\n if (exec && typeof exec === 'function'){\n exec(body,function (response) {\n if (typeof response !== \"undefined\") {\n if ('0' === response.errorCode) {\n win && win.call(context, response.result);\n } else {\n fail && fail.call(context, response.result);\n }\n }\n else {\n fail && fail.call('-1', \"\");\n }\n });\n } else {\n fail && fail.call('-1', \"\");\n }\n}\n","/* @flow */\n\nfunction initEnv() : Object{\n let weexEnv = {};\n if (typeof weex !== 'undefined'){\n weexEnv.platform = weex.config.env.platform;\n if (weexEnv.platform !== 'Web'){\n weexEnv.dingtalk = {\n bundleUrl: weex.config.bundleUrl,\n originalUrl: weex.config.originalUrl\n };\n }\n } else {\n // Rax Weex\n if (typeof callNative === 'function'){\n weexEnv.platform = navigator.platform;\n weexEnv.dingtalk = {\n bundleUrl: __weex_options__.bundleUrl,\n originalUrl: __weex_options__.originalUrl\n };\n } else {\n // Rax Web\n weexEnv.platform = 'Web';\n }\n }\n return weexEnv;\n}\n\nexport default initEnv;\n","/* @flow */\n\nfunction initRequireModule () : Function {\n let requireModule = function(name){\n let moduleName = '@weex-module/' + name;\n return __weex_require__(moduleName);\n }\n if (typeof weex !== 'undefined'){\n requireModule = weex.requireModule;\n }\n return requireModule;\n}\n\nexport default initRequireModule;\n","/* @flow */\n\nimport initEnv from './core/env.js';\nimport initRequire from './core/requireModule.js';\n\nfunction polyfills () : Object{\n let weexVar = {\n env: initEnv(),\n requireModule: initRequire()\n };\n return weexVar;\n}\n\nlet weexInstanceVar;\nif (!weexInstanceVar){\n weexInstanceVar = polyfills();\n}\n\nexport default weexInstanceVar;\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport android_exec from './android_exec.js';\nimport ios_exec from './ios_exec.js';\nimport weexInstanceVar from 'weex-dingtalk-polyfills';\n\nlet platform = weexInstanceVar.env.platform;\nlet nativeExec: ?Function = null;\nif (platform !== 'Web'){\n nativeExec = weexInstanceVar.requireModule('nuvajs-exec').exec;\n}\n\nfunction exec_affirm(plugin: string, action: string, args: ?Object,onSuccess: ?Function, onFail: ?Function, context: ?Object){\n const body: {\n plugin: string,\n action: string,\n args: Object\n } = {\n plugin: plugin,\n action: action,\n args: args ? args : {}\n }\n const config: {\n body: Object,\n onSuccess: ?Function,\n onFail: ?Function,\n context: ?Object\n } = {\n body: body,\n onSuccess: onSuccess ? onSuccess : null,\n onFail: onFail ? onFail : null,\n context: context ? context : null\n }\n exec(config);\n}\n\nfunction exec(config:Object) {\n let native_exec: Function = nativeExec ? nativeExec : function(){};\n if (platform === 'iOS'){\n ios_exec(native_exec,config);\n } else {\n if (platform === 'android'){\n android_exec(native_exec,config);\n }\n }\n}\n\nexport default exec;\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nlet __nuva_modules__: Object = {};\nlet requireStack: Array = [];\nlet inProgressModules: Object = {};\n\nfunction build(__nuva_module__: Object) {\n let factory = __nuva_module__.factory;\n __nuva_module__.__nuva_exports__ = {};\n delete __nuva_module__.factory;\n factory(__nuva_require__, __nuva_module__.__nuva_exports__, __nuva_module__);\n return __nuva_module__.__nuva_exports__;\n}\nexport function __nuva_require__(id: string) : any {\n if (!__nuva_modules__[id]) {\n throw '__nuva_module__ ' + id + ' not found';\n } else if (id in inProgressModules) {\n const cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;\n throw 'Cycle in require graph: ' + cycle;\n }\n if (__nuva_modules__[id].factory) {\n try {\n inProgressModules[id] = requireStack.length;\n requireStack.push(id);\n return build(__nuva_modules__[id]);\n } finally {\n delete inProgressModules[id];\n requireStack.pop();\n }\n }\n return __nuva_modules__[id].__nuva_exports__;\n};\n\nexport function __nuva_define__(id: string, factory: Function) {\n if (__nuva_modules__[id]) {\n throw 'module ' + id + ' already defined';\n }\n __nuva_modules__[id] = {\n id: id,\n factory: factory\n };\n};\n\nexport function __nuva_define_remove__(id: string){\n delete __nuva_modules__[id];\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nlet cat: Object = {};\nlet EventEmitter:{\n on: Function,\n off: Function,\n once: Function,\n emit: Function\n} = {\n on: function(event: string,fun: Function){\n let cbs = cat[event];\n cbs ? cbs.push(fun) : cat[event] = [];\n if (!cbs) {\n cat[event].push(fun);\n }\n },\n off: function(event: string,fun: Function){\n let cbs = cat[event];\n if (!cbs) {\n return false;\n }\n if (!event && !fun) {\n cat = {};\n return true;\n }\n if (event && !fun) {\n cat[event] = null;\n return true;\n }\n let cb;\n let i = cbs.length;\n while(i--){\n cb = cbs[i];\n if (cb === fun || cb.fun === fun) {\n cbs.splice(i,1);\n break;\n }\n }\n return true;\n },\n once: function(event: string,fun: Function){\n function _on(){\n EventEmitter.off(event,_on);\n fun.apply(this,arguments);\n }\n _on.fun = fun;\n EventEmitter.on(event,_on);\n },\n emit: function(event: string){\n let isString = typeof event === 'string';\n if (!isString){\n return;\n }\n let cbs = cat[event];\n let args = toArray(arguments,1);\n if (cbs) {\n let i = 0;\n let j = cbs.length;\n for(;i, index: ?number) {\n let _index = index || 0;\n let i = list.length - _index;\n let _array = new Array(i);\n while(i--){\n _array[i] = list[i + _index]\n }\n return _array\n}\n\nexport default EventEmitter;\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport exec from 'weex-dingtalk-exec';\nimport { __nuva_define__ } from './system-modules.js';\n\nexport default function parseModules(map: Object){\n for (let name in map) {\n let methods = map[name];\n (function(_name, _methods) {\n __nuva_define__(_name, function(__nuva_require__, __nuva_exports__,__nuva_module__) {\n let p = {};\n p._name = _name;\n for (let i in _methods) {\n let action = _methods[i];\n p[action] = (function(_action) {\n return function(params) {\n if (!params) {\n params = {};\n }\n let onSuccess = params.onSuccess;\n let onFail = params.onFail;\n delete params.onSuccess;\n delete params.onFail;\n delete params.onCancel;\n const config = {\n body: {\n plugin: _name,\n action: _action,\n args: params\n },\n onSuccess: onSuccess,\n onFail: onFail\n };\n return exec(config);\n };\n })(action);\n };\n __nuva_module__.__nuva_exports__ = p;\n });\n })(name, methods);\n }\n}\n","/**\n * Created by xiangwenwen on 2017/3/24.\n */\n\n// @flow\n\nimport exec from 'weex-dingtalk-exec';\nimport { __nuva_require__, __nuva_define__, __nuva_define_remove__ } from './global-api/system-modules.js';\nimport EventEmitter from './global-api/EventEmitter.js';\nimport parseModules from './global-api/parseModules.js';\nimport weexInstanceVar from 'weex-dingtalk-polyfills';\n\nlet platform = weexInstanceVar.env.platform;\nlet globalEvent: Object = {};\nif (platform !== 'Web'){\n globalEvent = weexInstanceVar.requireModule('globalEvent');\n}\n\nfunction rtFunc(method: string): Function {\n return function(cb: Function) {\n const config:{\n body: Object,\n onSuccess: Function,\n onFail: Function,\n context: ?Object\n } = {\n body: {\n plugin: 'runtime',\n action: method,\n args: {}\n },\n onSuccess: function(response){\n if (typeof cb === 'function'){\n cb(response);\n }\n },\n onFail: function(){\n\n },\n context: null\n };\n exec(config);\n };\n}\n\nfunction initDingtalkRequire(cb: Function){\n rtFunc('getModules')(cb);\n}\n\nlet nuva: {\n getModules: ?Object,\n isReady: boolean,\n define: Function,\n require: Function,\n runtime: Object,\n init: Function,\n ready: Function,\n on: Function,\n off: Function,\n EventEmitter: Object\n} = {\n getModules: null,\n isReady: false,\n define: __nuva_define__,\n require: function(id: string) : any{\n if (!id){\n return exec;\n } else {\n return __nuva_require__(id);\n }\n },\n runtime: {\n info: rtFunc('info'),\n _interceptBackButton: rtFunc('interceptBackButton'),\n _interceptNavTitle: rtFunc('interceptNavTitle'),\n _recoverNavTitle: rtFunc('recoverNavTitle'),\n _getModules: rtFunc('getModules')\n },\n init: function(){\n initDingtalkRequire(function(response){\n if(response){\n parseModules(response);\n nuva.isReady = true;\n nuva.getModules = response;\n EventEmitter.emit('__nuva_ready__');\n }\n });\n },\n ready: function(cb: Function){\n if (nuva.isReady){\n if (typeof cb === 'function'){\n cb();\n }\n } else {\n if (typeof cb === 'function'){\n EventEmitter.once('__nuva_ready__', function(){\n cb();\n });\n }\n }\n },\n on: function(type: string, handler: Function){\n globalEvent.addEventListener(type,function(e){\n const event:{\n preventDefault: Function,\n detail: Object\n } = {\n preventDefault: function () {\n console.warn('当前环境不支持 preventDefault')\n },\n detail: e\n };\n handler.call(this,event);\n });\n },\n off: globalEvent.removeEventListener,\n EventEmitter: EventEmitter\n};\n\nexport default nuva;\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n//@flow\n\nimport dt_nuva from 'weex-dingtalk-require';\n\nconst runtimePermission: string = 'runtime.permission';\n\nexport default function permissionJsApis(cb: Function,jsApisConfig:?Object, errorCb: ?Function){\n if (!jsApisConfig){\n cb(null);\n return;\n }\n dt_nuva.ready(function(){\n const permission = dt_nuva.require(runtimePermission);\n let apisConf = jsApisConfig ? jsApisConfig : {};\n let errCb = errorCb ? errorCb : null;\n apisConf.onSuccess = function(response){\n cb(null, response);\n };\n apisConf.onFail = function(error){\n if (typeof errCb === 'function'){\n errCb(error);\n } else {\n cb(error, null);\n }\n };\n permission.requestJsApis(apisConf);\n });\n}\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n//@flow\n\nimport dt_nuva from 'weex-dingtalk-require';\n\nexport default function parseJsApis(jsApis: Object) : Object{\n let apis: Object = {};\n for (let name: string in jsApis) {\n let node: Array = name.split('.');\n let staging = null;\n let i: number = 0;\n let j: number = node.length;\n while (true) {\n if (!staging) {\n if (1 === j) {\n apis[node[i]] = dt_nuva.require(name);\n break;\n }\n if (apis[node[i]]){\n staging = apis[node[i]];\n i++;\n continue;\n }\n apis[node[i]] = {};\n staging = apis[node[i]];\n i++;\n continue;\n } else {\n if ((j - 1) === i) {\n staging[node[i]] = dt_nuva.require(name);\n break;\n }\n if (staging[node[i]]) {\n i++;\n continue;\n }\n staging[node[i]] = {};\n staging = staging[node[i]];\n }\n i++;\n }\n }\n\treturn apis;\n}\n","\n/* @flow */\n\nfunction initNativeEvent(dt:Object){\n dt.on = function(type, listener, useCapture){\n document.addEventListener(type, listener, useCapture);\n }\n dt.off = function(type, listener, useCapture){\n document.removeEventListener(type, listener, useCapture);\n }\n}\n\nexport default initNativeEvent;\n","\n/* @flow */\n\nfunction initApis(dt: Object){\n dt.apis = dt;\n}\n\nexport default initApis;\n","\n/* @flow */\n\nimport initNativeEvent from './nativeEvent.js';\nimport initApis from './apis.js';\n\nfunction initWebDingtalkSDK () : Object {\n const GLOBALWINDOW:GLOBALWINDOW = (function(){\n return (function(){\n return window || this;\n })();\n })();\n if (!GLOBALWINDOW.dd){\n console.error('Not Found Dingtalk.js');\n throw new Error()\n }\n initNativeEvent(GLOBALWINDOW.dd);\n initApis(GLOBALWINDOW.dd);\n return GLOBALWINDOW.dd;\n}\n\nexport default initWebDingtalkSDK;\n","/* @flow */\n\nconst logger:{\n warn:Function,\n info:Function,\n error:Function\n} = {\n warn: function (msg: string, e:Object){\n console.warn('[DINGTALK JS SDK Warning]:', msg);\n if (e) {\n throw e;\n } else {\n const warning = new Error('WARNING STACK TRACE');\n console.warn(warning.stack);\n }\n },\n info: function (msg){\n console.info('[DINGTALK JS SDK INFO]:', msg);\n },\n error: function (msg){\n console.error('[DINGTALK JS SDK ERROR]:', msg);\n }\n};\n\nexport default logger;\n","/**\n * Created by xiangwenwen on 2017/3/27.\n */\n\n// @flow\n\nimport dt_nuva from 'weex-dingtalk-require';\nimport weexInstanceVar from 'weex-dingtalk-polyfills';\nimport permissionJsApis from './core/permissionJsApis.js';\nimport { extend } from './shared/util.js';\nimport parseJsApis from './core/parseJsApis.js';\nimport initWebDingtalkSDK from './platforms/web/index.js';\nimport logger from './shared/logger.js';\n\nlet dingtalkJsApisConfig: ?Object = null;\nlet dingtalkQueue: ?Array = null;\nlet dingtalkErrorCb: ?Function = null;\nlet dingtalkInit: boolean = true;\nlet platform = weexInstanceVar.env.platform;\n\nfunction performQueue (){\n if (dingtalkQueue && dingtalkQueue.length > 0){\n dingtalkQueue.forEach(function(task){\n task();\n });\n dingtalkQueue.length = 0;\n }\n}\n\nlet dingtalkSDK: Object = {};\nlet dingtalk: {\n isSync: boolean,\n apis: Object,\n config: Function,\n init: Function,\n ready: Function,\n on: Function,\n off: Function,\n error: Function\n} = {\n isSync: false,\n apis: {},\n config: function(config: Object){\n if (!config){\n logger.warn('config is undefined,you must configure Dingtalk parameters');\n return;\n }\n dingtalkJsApisConfig = config;\n },\n init: function(){\n // 初始化一次\n dingtalkQueue = [];\n dt_nuva.init();\n dt_nuva.ready(function(){\n dingtalk.isSync = true;\n dingtalk.apis = parseJsApis(dt_nuva.getModules ? dt_nuva.getModules : {});\n performQueue();\n });\n },\n ready: function(cb: Function){\n if (!cb || typeof cb !== 'function'){\n logger.warn('callback is undefined');\n return;\n }\n if (dingtalk.isSync){\n permissionJsApis(cb,dingtalkJsApisConfig,dingtalkErrorCb);\n } else {\n function bufferFunction(cb){\n return function(){\n permissionJsApis(cb,dingtalkJsApisConfig,dingtalkErrorCb);\n }\n }\n dingtalkQueue && dingtalkQueue.push(bufferFunction(cb));\n }\n },\n error: function(cb){\n if (typeof cb === 'function'){\n dingtalkErrorCb = cb;\n }\n },\n on: dt_nuva.on,\n off: dt_nuva.off\n};\n\nif (dingtalkInit){\n dingtalkInit = false;\n switch (platform){\n case 'Web':\n dingtalkSDK = initWebDingtalkSDK();\n break;\n default:\n dingtalkSDK = dingtalk;\n dingtalk.init();\n break\n }\n}\n\nexport default dingtalkSDK;\n"],"names":["android_exec","exec","config","body","win","onSuccess","fail","onFail","context","STATUS_NO_RESULT","STATUS_OK","STATUS_ERROR","response","__status__","status","message","__message__","call","ios_exec","errorCode","result","initEnv","weexEnv","weex","platform","env","dingtalk","bundleUrl","originalUrl","callNative","navigator","__weex_options__","initRequireModule","requireModule","name","moduleName","__weex_require__","polyfills","weexVar","initRequire","weexInstanceVar","nativeExec","native_exec","__nuva_modules__","requireStack","inProgressModules","build","__nuva_module__","factory","__nuva_exports__","__nuva_require__","id","cycle","slice","join","length","push","pop","__nuva_define__","cat","EventEmitter","event","fun","cbs","cb","i","splice","_on","off","apply","arguments","on","isString","args","toArray","j","list","index","_index","_array","Array","parseModules","map","methods","_name","_methods","p","action","_action","params","onCancel","globalEvent","rtFunc","method","initDingtalkRequire","nuva","isReady","getModules","emit","once","type","handler","addEventListener","e","warn","removeEventListener","runtimePermission","permissionJsApis","jsApisConfig","errorCb","ready","permission","dt_nuva","require","apisConf","errCb","error","requestJsApis","parseJsApis","jsApis","apis","node","split","staging","initNativeEvent","dt","listener","useCapture","initApis","initWebDingtalkSDK","GLOBALWINDOW","window","dd","Error","logger","msg","warning","stack","info","dingtalkJsApisConfig","dingtalkQueue","dingtalkErrorCb","dingtalkInit","performQueue","forEach","task","dingtalkSDK","init","isSync","bufferFunction"],"mappings":"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"} \ No newline at end of file diff --git a/flow/global-vars.js b/flow/global-vars.js index ed3d7f2..cb5c658 100644 --- a/flow/global-vars.js +++ b/flow/global-vars.js @@ -1,2 +1,5 @@ declare var weex:Object; declare type GLOBALWINDOW = Object; +declare var __weex_require__:Function; +declare var __weex_options__:Object; +declare var callNative:Function; diff --git a/package.json b/package.json index 1d6bf29..3c69379 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,14 @@ { "name": "weex-dingtalk", - "version": "0.0.7", + "version": "0.0.8", "description": "Dingtalk Weex Js Api SDK", "main": "dist/weex-dingtalk-min.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "es5": "node ./build/build.js build", - "flow": "flow check", - "dev": "node ./build/build.js dev --watch", - "build": "npm run flow && npm run es5 && node ./build/build.js dev" + "test": "echo \"Error: no test specified\" && exit 1", + "es5": "node ./build/build.js build", + "flow": "flow check", + "dev": "node ./build/build.js dev --watch", + "build": "npm run flow && npm run es5 && node ./build/build.js dev" }, "repository": { "type": "git", @@ -17,17 +17,19 @@ "author": "icepy", "license": "MIT", "devDependencies": { - "babel-plugin-transform-flow-strip-types": "^6.22.0", - "babel-preset-es2015-rollup": "^3.0.0", - "flow-bin": "^0.42.0", - "rollup": "^0.41.6", - "rollup-plugin-alias": "^1.2.1", - "rollup-plugin-babel": "^2.7.1", - "rollup-plugin-node-resolve": "^2.0.0", - "rollup-plugin-uglify": "^1.0.1", - "rollup-watch": "^3.2.2" + "babel-plugin-transform-flow-strip-types": "^6.22.0", + "babel-preset-es2015-rollup": "^3.0.0", + "flow-bin": "^0.42.0", + "rollup": "^0.41.6", + "rollup-plugin-alias": "^1.2.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-node-resolve": "^2.0.0", + "rollup-plugin-uglify": "^1.0.1", + "rollup-watch": "^3.2.2" }, "dependencies": { - "weex-dingtalk-require": "^0.0.4" + "weex-dingtalk-polyfills": "0.0.5", + "weex-dingtalk-require": "^0.0.8" } } diff --git a/package/weex-dingtalk-exec/.babelrc b/package/weex-dingtalk-exec/.babelrc new file mode 100644 index 0000000..61f6358 --- /dev/null +++ b/package/weex-dingtalk-exec/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": [[ + "es2015", { "modules": false }]], + "plugins": ["transform-flow-strip-types"] +} diff --git a/package/weex-dingtalk-exec/.flowconfig b/package/weex-dingtalk-exec/.flowconfig new file mode 100644 index 0000000..ade1e2e --- /dev/null +++ b/package/weex-dingtalk-exec/.flowconfig @@ -0,0 +1,2 @@ +[libs] +flow diff --git a/package/weex-dingtalk-exec/.gitignore b/package/weex-dingtalk-exec/.gitignore new file mode 100644 index 0000000..5e66fff --- /dev/null +++ b/package/weex-dingtalk-exec/.gitignore @@ -0,0 +1,37 @@ +# Logs +logs +*.log +npm-debug.log* +dist +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules +jspm_packages + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history diff --git a/package/weex-dingtalk-exec/README.md b/package/weex-dingtalk-exec/README.md new file mode 100644 index 0000000..608d3c3 --- /dev/null +++ b/package/weex-dingtalk-exec/README.md @@ -0,0 +1,20 @@ +# weex-dingtalk-exec + +> Dingtalk Weex Js Api SDK 通信通道 + +## Build Setup + +```bash +# install devDependencies +npm install + +# 启动构建exec +npm run es5 + +# 类型检查 +npm run flow + +# 最终构建,会经过类型检查完成之后构建成es5代码 +npm run build + +``` diff --git a/package/weex-dingtalk-exec/build/build.js b/package/weex-dingtalk-exec/build/build.js new file mode 100644 index 0000000..de585ec --- /dev/null +++ b/package/weex-dingtalk-exec/build/build.js @@ -0,0 +1,15 @@ +var rollup = require("rollup"); +var babel = require("rollup-plugin-babel"); +var commonjs = require("rollup-plugin-commonjs"); +var resolve = require("rollup-plugin-node-resolve"); + +rollup.rollup({ + entry: './src/index.js', + plugins: [ resolve(),commonjs(),babel() ] +}).then(function(bundle){ + bundle.write({ + dest:'./dist/weex-dingtalk-exec.js', + format: 'cjs', + sourceMap: true + }); +}); diff --git a/package/weex-dingtalk-exec/flow/global-vars.js b/package/weex-dingtalk-exec/flow/global-vars.js new file mode 100644 index 0000000..16284e9 --- /dev/null +++ b/package/weex-dingtalk-exec/flow/global-vars.js @@ -0,0 +1,4 @@ +declare var weex: Object; +declare var __weex_require__:Function; +declare var __weex_options__:Object; +declare var callNative:Function; diff --git a/package/weex-dingtalk-exec/package.json b/package/weex-dingtalk-exec/package.json new file mode 100644 index 0000000..5980b22 --- /dev/null +++ b/package/weex-dingtalk-exec/package.json @@ -0,0 +1,30 @@ +{ + "name": "weex-dingtalk-exec", + "version": "0.0.7", + "description": "Dingtalk Weex Js Api SDK 通信通道", + "main": "src/index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "es5": "node ./build/build.js", + "flow": "flow check", + "build": "npm run flow & npm run es5" + }, + "repository": { + "type": "git", + "url": "git@github.com:icepy/weex-dingtalk.git" + }, + "author": "icepy", + "license": "MIT", + "devDependencies": { + "babel-plugin-transform-flow-strip-types": "^6.22.0", + "babel-preset-es2015-rollup": "^3.0.0", + "flow-bin": "^0.42.0", + "rollup": "^0.41.6", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-node-resolve": "^3.0.0" + }, + "dependencies": { + "weex-dingtalk-polyfills": "0.0.5" + } +} diff --git a/package/weex-dingtalk-exec/src/android_exec.js b/package/weex-dingtalk-exec/src/android_exec.js new file mode 100644 index 0000000..67675aa --- /dev/null +++ b/package/weex-dingtalk-exec/src/android_exec.js @@ -0,0 +1,32 @@ +/** + * Created by xiangwenwen on 2017/3/24. + */ + +// @flow + +export default function android_exec(exec:Function,config:Object){ + const body = config.body; + const win = config.onSuccess; + const fail = config.onFail; + const context = config.context; + const STATUS_NO_RESULT: string = '0'; + const STATUS_OK: string = '1'; + const STATUS_ERROR: string = '2'; + if (exec && typeof exec === 'function'){ + exec(body,function (response) { + if (typeof response !== "undefined" && response.__status__) { + const status = response.__status__; + const message = response.__message__; + if (STATUS_OK === status){ + win && win.call(context, message); + } else if (STATUS_ERROR === status){ + fail && fail.call(context, message); + } + } else { + fail && fail.call('-1', ""); + } + }); + } else { + fail && fail.call('-1', ""); + } +} diff --git a/package/weex-dingtalk-exec/src/index.js b/package/weex-dingtalk-exec/src/index.js new file mode 100644 index 0000000..c659280 --- /dev/null +++ b/package/weex-dingtalk-exec/src/index.js @@ -0,0 +1,52 @@ +/** + * Created by xiangwenwen on 2017/3/24. + */ + +// @flow + +import android_exec from './android_exec.js'; +import ios_exec from './ios_exec.js'; +import weexInstanceVar from 'weex-dingtalk-polyfills'; + +let platform = weexInstanceVar.env.platform; +let nativeExec: ?Function = null; +if (platform !== 'Web'){ + nativeExec = weexInstanceVar.requireModule('nuvajs-exec').exec; +} + +function exec_affirm(plugin: string, action: string, args: ?Object,onSuccess: ?Function, onFail: ?Function, context: ?Object){ + const body: { + plugin: string, + action: string, + args: Object + } = { + plugin: plugin, + action: action, + args: args ? args : {} + } + const config: { + body: Object, + onSuccess: ?Function, + onFail: ?Function, + context: ?Object + } = { + body: body, + onSuccess: onSuccess ? onSuccess : null, + onFail: onFail ? onFail : null, + context: context ? context : null + } + exec(config); +} + +function exec(config:Object) { + let native_exec: Function = nativeExec ? nativeExec : function(){}; + if (platform === 'iOS'){ + ios_exec(native_exec,config); + } else { + if (platform === 'android'){ + android_exec(native_exec,config); + } + } +} + +export default exec; diff --git a/package/weex-dingtalk-exec/src/ios_exec.js b/package/weex-dingtalk-exec/src/ios_exec.js new file mode 100644 index 0000000..0e1fb2d --- /dev/null +++ b/package/weex-dingtalk-exec/src/ios_exec.js @@ -0,0 +1,28 @@ +/** + * Created by xiangwenwen on 2017/3/24. + */ + +// @flow + +export default function ios_exec(exec:Function,config:Object){ + const body = config.body; + const win = config.onSuccess; + const fail = config.onFail; + const context = config.context; + if (exec && typeof exec === 'function'){ + exec(body,function (response) { + if (typeof response !== "undefined") { + if ('0' === response.errorCode) { + win && win.call(context, response.result); + } else { + fail && fail.call(context, response.result); + } + } + else { + fail && fail.call('-1', ""); + } + }); + } else { + fail && fail.call('-1', ""); + } +} diff --git a/package/weex-dingtalk-polyfills/.babelrc b/package/weex-dingtalk-polyfills/.babelrc new file mode 100644 index 0000000..61f6358 --- /dev/null +++ b/package/weex-dingtalk-polyfills/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": [[ + "es2015", { "modules": false }]], + "plugins": ["transform-flow-strip-types"] +} diff --git a/package/weex-dingtalk-polyfills/.flowconfig b/package/weex-dingtalk-polyfills/.flowconfig new file mode 100644 index 0000000..85c549a --- /dev/null +++ b/package/weex-dingtalk-polyfills/.flowconfig @@ -0,0 +1,7 @@ +[ignore] + +.*/build/.* +.*/dist/.* + +[libs] +flow diff --git a/package/weex-dingtalk-polyfills/.gitignore b/package/weex-dingtalk-polyfills/.gitignore new file mode 100644 index 0000000..5e66fff --- /dev/null +++ b/package/weex-dingtalk-polyfills/.gitignore @@ -0,0 +1,37 @@ +# Logs +logs +*.log +npm-debug.log* +dist +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules +jspm_packages + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history diff --git a/package/weex-dingtalk-polyfills/LICENSE b/package/weex-dingtalk-polyfills/LICENSE new file mode 100644 index 0000000..8864d4a --- /dev/null +++ b/package/weex-dingtalk-polyfills/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/package/weex-dingtalk-polyfills/README.md b/package/weex-dingtalk-polyfills/README.md new file mode 100644 index 0000000..dbf4308 --- /dev/null +++ b/package/weex-dingtalk-polyfills/README.md @@ -0,0 +1,3 @@ +# weex-dingtalk-polyfills + +🔥 wait..... diff --git a/package/weex-dingtalk-polyfills/build/build.js b/package/weex-dingtalk-polyfills/build/build.js new file mode 100644 index 0000000..338e86c --- /dev/null +++ b/package/weex-dingtalk-polyfills/build/build.js @@ -0,0 +1,84 @@ +var fs = require('fs'); +var path = require('path'); +var rollup = require('rollup'); +var babel = require('rollup-plugin-babel'); +var resolve = require('rollup-plugin-node-resolve'); +var uglify = require('rollup-plugin-uglify'); +var watch = require('rollup-watch'); + +var isWatch = false; +if (process.argv[3]) { + isWatch = process.argv[3] === '--watch' || process.argv[3] === '-w' +} + +if (process.argv[2]){ + build(process.argv[2]); +} + +function build(name){ + let config = { + entry: './src/index.js', + plugins: [ resolve(),babel() ], + dest:'./dist/weex-dingtalk-polyfills.js', + format: 'cjs', + sourceMap: true + }; + + if (name === 'build'){ + config.plugins.push(uglify()); + config.dest = './dist/weex-dingtalk-polyfills-min.js' + } + + if (isWatch){ + return rollupOnWatch(config); + } else { + + runRollup(config).then(function(){ + // TODO:xww 处理构建发布版本 + }); + } +} + +function runRollup(config){ + return new Promise(function(resolve, reject){ + rollup.rollup(config).then(function(bundle){ + bundle.write(config).then(function(){ + report(config.dest); + resolve(); + }).catch(function(err){ + console.log(err); + }); + }); + }); + +} + +function rollupOnWatch(config) { + var watcher = watch(rollup, config); + watcher.on('event', function(event){ + switch (event.code) { + case 'STARTING': + console.log('checking rollup-watch version...'); + break; + case 'BUILD_START': + console.log('bundling...'); + break; + case 'BUILD_END': + console.log('bundled in ' + path.relative(process.cwd(), config.dest) + + ' (' + event.duration + 'ms)'); + console.log('Watching for changes...' ); + break; + case 'ERROR': + console.error('ERROR: ', event.error); + break; + default: + console.error('unknown event', event); + } + }); +} + +function report (filePath) { + var size = (fs.statSync(filePath).size / 1024).toFixed(2) + 'KB'; + var file = path.relative(process.cwd(), filePath); + console.log(` => write ${file} (${size})`) +} diff --git a/package/weex-dingtalk-polyfills/flow/global-vars.js b/package/weex-dingtalk-polyfills/flow/global-vars.js new file mode 100644 index 0000000..88ba3fc --- /dev/null +++ b/package/weex-dingtalk-polyfills/flow/global-vars.js @@ -0,0 +1,4 @@ +declare var weex:Object; +declare var __weex_require__:Function; +declare var __weex_options__:Object; +declare var callNative:Function; diff --git a/package/weex-dingtalk-polyfills/package.json b/package/weex-dingtalk-polyfills/package.json new file mode 100644 index 0000000..9ac456e --- /dev/null +++ b/package/weex-dingtalk-polyfills/package.json @@ -0,0 +1,30 @@ +{ + "name": "weex-dingtalk-polyfills", + "version": "0.0.5", + "description": "Vue 或者 Rax 上层框架对 Weex Object 的 polyfill", + "main": "src/index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "es5": "node ./build/build.js build", + "flow": "flow check", + "dev": "node ./build/build.js dev --watch", + "build": "npm run flow && npm run es5 && node ./build/build.js dev" + }, + "repository": { + "type": "git", + "url": "git@github.com:icepy/weex-dingtalk.git" + }, + "author": "icepy", + "license": "MIT", + "devDependencies": { + "babel-plugin-transform-flow-strip-types": "^6.22.0", + "babel-preset-es2015-rollup": "^3.0.0", + "flow-bin": "^0.42.0", + "rollup": "^0.41.6", + "rollup-plugin-alias": "^1.2.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-node-resolve": "^2.0.0", + "rollup-plugin-uglify": "^1.0.1", + "rollup-watch": "^3.2.2" + } +} diff --git a/package/weex-dingtalk-polyfills/src/core/checkVersion.js b/package/weex-dingtalk-polyfills/src/core/checkVersion.js new file mode 100644 index 0000000..351496e --- /dev/null +++ b/package/weex-dingtalk-polyfills/src/core/checkVersion.js @@ -0,0 +1,18 @@ + +/* @flow */ + +const versionRegExp = /^\s*\/\/ *(\{[^}]*\}) *\r?\n/; + +function checkVersion (code:string) : Object { + let info = {}; + const result = versionRegExp.exec(code) + if (result) { + try { + info = JSON.parse(result[1]) + } + catch (e) {} + } + return info +} + +export default checkVersion; diff --git a/package/weex-dingtalk-polyfills/src/core/env.js b/package/weex-dingtalk-polyfills/src/core/env.js new file mode 100644 index 0000000..a40b58b --- /dev/null +++ b/package/weex-dingtalk-polyfills/src/core/env.js @@ -0,0 +1,29 @@ +/* @flow */ + +function initEnv() : Object{ + let weexEnv = {}; + if (typeof weex !== 'undefined'){ + weexEnv.platform = weex.config.env.platform; + if (weexEnv.platform !== 'Web'){ + weexEnv.dingtalk = { + bundleUrl: weex.config.bundleUrl, + originalUrl: weex.config.originalUrl + }; + } + } else { + // Rax Weex + if (typeof callNative === 'function'){ + weexEnv.platform = navigator.platform; + weexEnv.dingtalk = { + bundleUrl: __weex_options__.bundleUrl, + originalUrl: __weex_options__.originalUrl + }; + } else { + // Rax Web + weexEnv.platform = 'Web'; + } + } + return weexEnv; +} + +export default initEnv; diff --git a/package/weex-dingtalk-polyfills/src/core/requireModule.js b/package/weex-dingtalk-polyfills/src/core/requireModule.js new file mode 100644 index 0000000..562cf8f --- /dev/null +++ b/package/weex-dingtalk-polyfills/src/core/requireModule.js @@ -0,0 +1,14 @@ +/* @flow */ + +function initRequireModule () : Function { + let requireModule = function(name){ + let moduleName = '@weex-module/' + name; + return __weex_require__(moduleName); + } + if (typeof weex !== 'undefined'){ + requireModule = weex.requireModule; + } + return requireModule; +} + +export default initRequireModule; diff --git a/package/weex-dingtalk-polyfills/src/index.js b/package/weex-dingtalk-polyfills/src/index.js new file mode 100644 index 0000000..24d57d9 --- /dev/null +++ b/package/weex-dingtalk-polyfills/src/index.js @@ -0,0 +1,19 @@ +/* @flow */ + +import initEnv from './core/env.js'; +import initRequire from './core/requireModule.js'; + +function polyfills () : Object{ + let weexVar = { + env: initEnv(), + requireModule: initRequire() + }; + return weexVar; +} + +let weexInstanceVar; +if (!weexInstanceVar){ + weexInstanceVar = polyfills(); +} + +export default weexInstanceVar; diff --git a/package/weex-dingtalk-require/.babelrc b/package/weex-dingtalk-require/.babelrc new file mode 100644 index 0000000..61f6358 --- /dev/null +++ b/package/weex-dingtalk-require/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": [[ + "es2015", { "modules": false }]], + "plugins": ["transform-flow-strip-types"] +} diff --git a/package/weex-dingtalk-require/.flowconfig b/package/weex-dingtalk-require/.flowconfig new file mode 100644 index 0000000..20f4121 --- /dev/null +++ b/package/weex-dingtalk-require/.flowconfig @@ -0,0 +1,6 @@ +[ignore] + +/src/global-api/events.js + +[libs] +flow diff --git a/package/weex-dingtalk-require/.gitignore b/package/weex-dingtalk-require/.gitignore new file mode 100644 index 0000000..5e66fff --- /dev/null +++ b/package/weex-dingtalk-require/.gitignore @@ -0,0 +1,37 @@ +# Logs +logs +*.log +npm-debug.log* +dist +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules +jspm_packages + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history diff --git a/package/weex-dingtalk-require/LICENSE b/package/weex-dingtalk-require/LICENSE new file mode 100644 index 0000000..8864d4a --- /dev/null +++ b/package/weex-dingtalk-require/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/package/weex-dingtalk-require/README.md b/package/weex-dingtalk-require/README.md new file mode 100644 index 0000000..d075032 --- /dev/null +++ b/package/weex-dingtalk-require/README.md @@ -0,0 +1,20 @@ +# weex-dingtalk-require + +> Dingtalk Weex Js Api System Modules + +## Build Setup + +```bash +# install devDependencies +npm install + +# 启动构建exec +npm run es5 + +# 类型检查 +npm run flow + +# 最终构建,会经过类型检查完成之后构建成es5代码 +npm run build + +``` diff --git a/package/weex-dingtalk-require/build/alias.js b/package/weex-dingtalk-require/build/alias.js new file mode 100644 index 0000000..fe2bd9a --- /dev/null +++ b/package/weex-dingtalk-require/build/alias.js @@ -0,0 +1,5 @@ +var path = require('path'); + +module.export = { + +}; diff --git a/package/weex-dingtalk-require/build/build.js b/package/weex-dingtalk-require/build/build.js new file mode 100644 index 0000000..e875f2e --- /dev/null +++ b/package/weex-dingtalk-require/build/build.js @@ -0,0 +1,16 @@ +var rollup = require('rollup'); +var babel = require('rollup-plugin-babel'); +var resolve = require('rollup-plugin-node-resolve'); +var alias = require('rollup-plugin-alias'); +var commonjs = require("rollup-plugin-commonjs"); + +rollup.rollup({ + entry: './src/index.js', + plugins: [ resolve(),commonjs(),babel() ] +}).then(function(bundle){ + bundle.write({ + dest:'./dist/weex-dingtalk-require.js', + format: 'cjs', + sourceMap: true + }); +}); diff --git a/package/weex-dingtalk-require/flow/global-vars.js b/package/weex-dingtalk-require/flow/global-vars.js new file mode 100644 index 0000000..933d7a7 --- /dev/null +++ b/package/weex-dingtalk-require/flow/global-vars.js @@ -0,0 +1,2 @@ +declare var weex: Object; +declare var Promise: Function; diff --git a/package/weex-dingtalk-require/package.json b/package/weex-dingtalk-require/package.json new file mode 100644 index 0000000..52e05f7 --- /dev/null +++ b/package/weex-dingtalk-require/package.json @@ -0,0 +1,32 @@ +{ + "name": "weex-dingtalk-require", + "version": "0.0.8", + "description": "Dingtalk Weex Js Api System Modules", + "main": "src/index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "es5": "node ./build/build.js", + "flow": "flow check", + "build": "npm run flow & npm run es5" + }, + "repository": { + "type": "git", + "url": "git@github.com:icepy/weex-dingtalk.git" + }, + "author": "icepy", + "license": "MIT", + "dependencies": { + "weex-dingtalk-exec": "^0.0.7", + "weex-dingtalk-polyfills": "0.0.5" + }, + "devDependencies": { + "babel-plugin-transform-flow-strip-types": "^6.22.0", + "babel-preset-es2015-rollup": "^3.0.0", + "flow-bin": "^0.42.0", + "rollup": "^0.41.6", + "rollup-plugin-alias": "^1.2.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-node-resolve": "^2.0.0" + } +} diff --git a/package/weex-dingtalk-require/src/global-api/EventEmitter.js b/package/weex-dingtalk-require/src/global-api/EventEmitter.js new file mode 100644 index 0000000..2e1830d --- /dev/null +++ b/package/weex-dingtalk-require/src/global-api/EventEmitter.js @@ -0,0 +1,81 @@ +/** + * Created by xiangwenwen on 2017/3/24. + */ + +// @flow + +let cat: Object = {}; +let EventEmitter:{ + on: Function, + off: Function, + once: Function, + emit: Function +} = { + on: function(event: string,fun: Function){ + let cbs = cat[event]; + cbs ? cbs.push(fun) : cat[event] = []; + if (!cbs) { + cat[event].push(fun); + } + }, + off: function(event: string,fun: Function){ + let cbs = cat[event]; + if (!cbs) { + return false; + } + if (!event && !fun) { + cat = {}; + return true; + } + if (event && !fun) { + cat[event] = null; + return true; + } + let cb; + let i = cbs.length; + while(i--){ + cb = cbs[i]; + if (cb === fun || cb.fun === fun) { + cbs.splice(i,1); + break; + } + } + return true; + }, + once: function(event: string,fun: Function){ + function _on(){ + EventEmitter.off(event,_on); + fun.apply(this,arguments); + } + _on.fun = fun; + EventEmitter.on(event,_on); + }, + emit: function(event: string){ + let isString = typeof event === 'string'; + if (!isString){ + return; + } + let cbs = cat[event]; + let args = toArray(arguments,1); + if (cbs) { + let i = 0; + let j = cbs.length; + for(;i, index: ?number) { + let _index = index || 0; + let i = list.length - _index; + let _array = new Array(i); + while(i--){ + _array[i] = list[i + _index] + } + return _array +} + +export default EventEmitter; diff --git a/package/weex-dingtalk-require/src/global-api/parseModules.js b/package/weex-dingtalk-require/src/global-api/parseModules.js new file mode 100644 index 0000000..47a7b2f --- /dev/null +++ b/package/weex-dingtalk-require/src/global-api/parseModules.js @@ -0,0 +1,46 @@ +/** + * Created by xiangwenwen on 2017/3/24. + */ + +// @flow + +import exec from 'weex-dingtalk-exec'; +import { __nuva_define__ } from './system-modules.js'; + +export default function parseModules(map: Object){ + for (let name in map) { + let methods = map[name]; + (function(_name, _methods) { + __nuva_define__(_name, function(__nuva_require__, __nuva_exports__,__nuva_module__) { + let p = {}; + p._name = _name; + for (let i in _methods) { + let action = _methods[i]; + p[action] = (function(_action) { + return function(params) { + if (!params) { + params = {}; + } + let onSuccess = params.onSuccess; + let onFail = params.onFail; + delete params.onSuccess; + delete params.onFail; + delete params.onCancel; + const config = { + body: { + plugin: _name, + action: _action, + args: params + }, + onSuccess: onSuccess, + onFail: onFail + }; + return exec(config); + }; + })(action); + }; + __nuva_module__.__nuva_exports__ = p; + }); + })(name, methods); + } +} diff --git a/package/weex-dingtalk-require/src/global-api/system-modules.js b/package/weex-dingtalk-require/src/global-api/system-modules.js new file mode 100644 index 0000000..766215c --- /dev/null +++ b/package/weex-dingtalk-require/src/global-api/system-modules.js @@ -0,0 +1,50 @@ +/** + * Created by xiangwenwen on 2017/3/24. + */ + +// @flow + +let __nuva_modules__: Object = {}; +let requireStack: Array = []; +let inProgressModules: Object = {}; + +function build(__nuva_module__: Object) { + let factory = __nuva_module__.factory; + __nuva_module__.__nuva_exports__ = {}; + delete __nuva_module__.factory; + factory(__nuva_require__, __nuva_module__.__nuva_exports__, __nuva_module__); + return __nuva_module__.__nuva_exports__; +} +export function __nuva_require__(id: string) : any { + if (!__nuva_modules__[id]) { + throw '__nuva_module__ ' + id + ' not found'; + } else if (id in inProgressModules) { + const cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id; + throw 'Cycle in require graph: ' + cycle; + } + if (__nuva_modules__[id].factory) { + try { + inProgressModules[id] = requireStack.length; + requireStack.push(id); + return build(__nuva_modules__[id]); + } finally { + delete inProgressModules[id]; + requireStack.pop(); + } + } + return __nuva_modules__[id].__nuva_exports__; +}; + +export function __nuva_define__(id: string, factory: Function) { + if (__nuva_modules__[id]) { + throw 'module ' + id + ' already defined'; + } + __nuva_modules__[id] = { + id: id, + factory: factory + }; +}; + +export function __nuva_define_remove__(id: string){ + delete __nuva_modules__[id]; +} diff --git a/package/weex-dingtalk-require/src/index.js b/package/weex-dingtalk-require/src/index.js new file mode 100644 index 0000000..d1b3032 --- /dev/null +++ b/package/weex-dingtalk-require/src/index.js @@ -0,0 +1,120 @@ +/** + * Created by xiangwenwen on 2017/3/24. + */ + +// @flow + +import exec from 'weex-dingtalk-exec'; +import { __nuva_require__, __nuva_define__, __nuva_define_remove__ } from './global-api/system-modules.js'; +import EventEmitter from './global-api/EventEmitter.js'; +import parseModules from './global-api/parseModules.js'; +import weexInstanceVar from 'weex-dingtalk-polyfills'; + +let platform = weexInstanceVar.env.platform; +let globalEvent: Object = {}; +if (platform !== 'Web'){ + globalEvent = weexInstanceVar.requireModule('globalEvent'); +} + +function rtFunc(method: string): Function { + return function(cb: Function) { + const config:{ + body: Object, + onSuccess: Function, + onFail: Function, + context: ?Object + } = { + body: { + plugin: 'runtime', + action: method, + args: {} + }, + onSuccess: function(response){ + if (typeof cb === 'function'){ + cb(response); + } + }, + onFail: function(){ + + }, + context: null + }; + exec(config); + }; +} + +function initDingtalkRequire(cb: Function){ + rtFunc('getModules')(cb); +} + +let nuva: { + getModules: ?Object, + isReady: boolean, + define: Function, + require: Function, + runtime: Object, + init: Function, + ready: Function, + on: Function, + off: Function, + EventEmitter: Object +} = { + getModules: null, + isReady: false, + define: __nuva_define__, + require: function(id: string) : any{ + if (!id){ + return exec; + } else { + return __nuva_require__(id); + } + }, + runtime: { + info: rtFunc('info'), + _interceptBackButton: rtFunc('interceptBackButton'), + _interceptNavTitle: rtFunc('interceptNavTitle'), + _recoverNavTitle: rtFunc('recoverNavTitle'), + _getModules: rtFunc('getModules') + }, + init: function(){ + initDingtalkRequire(function(response){ + if(response){ + parseModules(response); + nuva.isReady = true; + nuva.getModules = response; + EventEmitter.emit('__nuva_ready__'); + } + }); + }, + ready: function(cb: Function){ + if (nuva.isReady){ + if (typeof cb === 'function'){ + cb(); + } + } else { + if (typeof cb === 'function'){ + EventEmitter.once('__nuva_ready__', function(){ + cb(); + }); + } + } + }, + on: function(type: string, handler: Function){ + globalEvent.addEventListener(type,function(e){ + const event:{ + preventDefault: Function, + detail: Object + } = { + preventDefault: function () { + console.warn('当前环境不支持 preventDefault') + }, + detail: e + }; + handler.call(this,event); + }); + }, + off: globalEvent.removeEventListener, + EventEmitter: EventEmitter +}; + +export default nuva; diff --git a/src/index.js b/src/index.js index 8001c69..696bcd6 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,7 @@ // @flow import dt_nuva from 'weex-dingtalk-require'; +import weexInstanceVar from 'weex-dingtalk-polyfills'; import permissionJsApis from './core/permissionJsApis.js'; import { extend } from './shared/util.js'; import parseJsApis from './core/parseJsApis.js'; @@ -15,7 +16,7 @@ let dingtalkJsApisConfig: ?Object = null; let dingtalkQueue: ?Array = null; let dingtalkErrorCb: ?Function = null; let dingtalkInit: boolean = true; -let { platform } = weex.config.env; +let platform = weexInstanceVar.env.platform; function performQueue (){ if (dingtalkQueue && dingtalkQueue.length > 0){ diff --git a/src/shared/util.js b/src/shared/util.js index 3c88616..e21fdd2 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1,3 +1,4 @@ +/* @flow */ const hasOwnProperty = Object.prototype.hasOwnProperty; export function hasOwn(obj: Object, key: string): boolean{