index.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // suppress logs from vdom-tester
  2. const domModule = require('weex-vdom-tester/lib/modules/dom')
  3. domModule.updateFinish = domModule.createFinish = domModule.refreshFinish = () => {}
  4. import * as Vue from '../../../packages/weex-vue-framework'
  5. import { compile } from '../../../packages/weex-template-compiler'
  6. import { Runtime, Instance } from 'weex-vdom-tester'
  7. import { init, config } from 'weex-js-runtime'
  8. init()
  9. // http://stackoverflow.com/a/35478115
  10. const matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g
  11. export function strToRegExp (str) {
  12. return new RegExp(str.replace(matchOperatorsRe, '\\$&'))
  13. }
  14. export function compileAndStringify (template) {
  15. const { render, staticRenderFns } = compile(template)
  16. return {
  17. render: `function () { ${render} }`,
  18. staticRenderFns: parseStatic(staticRenderFns)
  19. }
  20. }
  21. function parseStatic (fns) {
  22. return '[' + fns.map(fn => `function () { ${fn} }`).join(',') + ']'
  23. }
  24. export function prepareRuntime () {
  25. let sendTasksHandler = function () {}
  26. config.sendTasks = config.Document.handler = function () {
  27. sendTasksHandler.apply(null, arguments)
  28. }
  29. Vue.init(config)
  30. const runtime = new Runtime(Vue)
  31. sendTasksHandler = function () {
  32. runtime.target.callNative.apply(runtime.target, arguments)
  33. }
  34. return runtime
  35. }
  36. export function resetRuntime () {
  37. delete config.Document.handler
  38. Vue.reset()
  39. }
  40. export function createInstance (runtime, code) {
  41. const instance = new Instance(runtime)
  42. if (code) {
  43. instance.$create(code)
  44. }
  45. return instance
  46. }
  47. export function syncPromise (arr) {
  48. let p = Promise.resolve()
  49. arr.forEach(item => {
  50. p = p.then(item)
  51. })
  52. return p
  53. }
  54. export function checkRefresh (instance, data, checker) {
  55. return () => new Promise(res => {
  56. instance.$refresh(data)
  57. setTimeout(() => {
  58. checker(instance.getRealRoot())
  59. res()
  60. })
  61. })
  62. }