index.js 1.8 KB

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