Skip to content

Commit 9125286

Browse files
committed
fix: patchTemplate should flush pending callbacks
Exposing flushCallbacks on Vue.__flushCallbacks__
1 parent ee5086a commit 9125286

File tree

5 files changed

+96
-4
lines changed

5 files changed

+96
-4
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
],
1313
"typings": "index.d.ts",
1414
"scripts": {
15+
"prepare": "patch-package",
1516
"test": "jest",
1617
"tdd": "jest --watch",
1718
"dev": "npm run dev:core -- -w & npm run dev:compiler -- -w",
@@ -73,6 +74,7 @@
7374
"jest": "26.6.3",
7475
"jest-junit": "12.0.0",
7576
"lint-staged": "10.5.1",
77+
"patch-package": "^6.2.2",
7678
"prettier": "2.2.0",
7779
"rollup": "^2.33.3",
7880
"rollup-plugin-flow-no-whitespace": "1.0.0",

patches/vue+2.6.12.patch

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/node_modules/vue/src/core/util/next-tick.js b/node_modules/vue/src/core/util/next-tick.js
2+
index 2efb9a9..a0dea42 100644
3+
--- a/node_modules/vue/src/core/util/next-tick.js
4+
+++ b/node_modules/vue/src/core/util/next-tick.js
5+
@@ -10,7 +10,7 @@ export let isUsingMicroTask = false
6+
const callbacks = []
7+
let pending = false
8+
9+
-function flushCallbacks () {
10+
+export function flushCallbacks () {
11+
pending = false
12+
const copies = callbacks.slice(0)
13+
callbacks.length = 0

platform/nativescript/runtime/components/v-template.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { patch } from '../patch'
2+
import { flushCallbacks } from 'core/util/next-tick'
23

34
export const VUE_VIEW = '__vueVNodeRef__'
45

@@ -78,6 +79,10 @@ export class TemplateBag {
7879
const nativeView = patch(oldVnode, vnode).nativeView
7980
nativeView[VUE_VIEW] = vnode
8081

82+
// force flush Vue callbacks so all changes are applied immediately
83+
// rather than on next tick
84+
flushCallbacks()
85+
8186
return nativeView
8287
}
8388

platform/nativescript/runtime/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Application } from '@nativescript/core'
22
import { warn } from 'core/util/index'
33
import { patch } from './patch'
4+
import { flushCallbacks } from 'core/util/next-tick'
45
import { mountComponent } from 'core/instance/lifecycle'
56
import { compileToFunctions } from '../compiler/index'
67
import { mustUseProp, isReservedTag, isUnknownElement } from '../util/index'
@@ -16,6 +17,9 @@ Vue.config.isUnknownElement = isUnknownElement
1617

1718
Vue.$document = Vue.prototype.$document = new DocumentNode()
1819

20+
// Exposed for advanced uses only, not public API
21+
Vue.__flushCallbacks__ = flushCallbacks
22+
1923
Vue.compile = compileToFunctions
2024
Vue.registerElement = registerElement
2125

yarn.lock

Lines changed: 72 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,7 +1429,7 @@
14291429
reduce-css-calc "^2.1.7"
14301430
tslib "~2.0.0"
14311431

1432-
"@nativescript/hook@2.0.0", "@nativescript/hook@~2.0.0":
1432+
"@nativescript/hook@~2.0.0":
14331433
version "2.0.0"
14341434
resolved "https://registry.yarnpkg.com/@nativescript/hook/-/hook-2.0.0.tgz#dbc17777d08c657efc77e263dc1ba1896d9c77b5"
14351435
integrity sha512-v3Hj3Zpd69sQJfFpDNXonV0EjO1a2OL4l48wlo1Ycsqk4r7RY822d/irFTjt0LllRG0OcdEGgfG6wKb0YgPyHw==
@@ -1666,6 +1666,11 @@
16661666
dependencies:
16671667
"@types/yargs-parser" "*"
16681668

1669+
"@yarnpkg/lockfile@^1.1.0":
1670+
version "1.1.0"
1671+
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
1672+
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
1673+
16691674
JSONStream@^1.0.4:
16701675
version "1.3.5"
16711676
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -2663,7 +2668,7 @@ cosmiconfig@^7.0.0:
26632668
path-type "^4.0.0"
26642669
yaml "^1.10.0"
26652670

2666-
cross-spawn@^6.0.0:
2671+
cross-spawn@^6.0.0, cross-spawn@^6.0.5:
26672672
version "6.0.5"
26682673
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
26692674
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
@@ -3258,6 +3263,14 @@ find-versions@^3.2.0:
32583263
dependencies:
32593264
semver-regex "^2.0.0"
32603265

3266+
find-yarn-workspace-root@^1.2.1:
3267+
version "1.2.1"
3268+
resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db"
3269+
integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==
3270+
dependencies:
3271+
fs-extra "^4.0.3"
3272+
micromatch "^3.1.4"
3273+
32613274
findup-sync@^3.0.0:
32623275
version "3.0.0"
32633276
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
@@ -3311,6 +3324,24 @@ fs-extra@8.1.0:
33113324
jsonfile "^4.0.0"
33123325
universalify "^0.1.0"
33133326

3327+
fs-extra@^4.0.3:
3328+
version "4.0.3"
3329+
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
3330+
integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
3331+
dependencies:
3332+
graceful-fs "^4.1.2"
3333+
jsonfile "^4.0.0"
3334+
universalify "^0.1.0"
3335+
3336+
fs-extra@^7.0.1:
3337+
version "7.0.1"
3338+
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
3339+
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
3340+
dependencies:
3341+
graceful-fs "^4.1.2"
3342+
jsonfile "^4.0.0"
3343+
universalify "^0.1.0"
3344+
33143345
fs-extra@^9.0.0:
33153346
version "9.0.1"
33163347
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc"
@@ -3499,7 +3530,7 @@ globals@^11.1.0:
34993530
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
35003531
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
35013532

3502-
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
3533+
graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
35033534
version "4.2.4"
35043535
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
35053536
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
@@ -4603,6 +4634,13 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
46034634
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
46044635
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
46054636

4637+
klaw-sync@^6.0.0:
4638+
version "6.0.0"
4639+
resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
4640+
integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
4641+
dependencies:
4642+
graceful-fs "^4.1.11"
4643+
46064644
kleur@^3.0.3:
46074645
version "3.0.3"
46084646
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
@@ -5376,6 +5414,24 @@ pascalcase@^0.1.1:
53765414
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
53775415
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
53785416

5417+
patch-package@^6.2.2:
5418+
version "6.2.2"
5419+
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39"
5420+
integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==
5421+
dependencies:
5422+
"@yarnpkg/lockfile" "^1.1.0"
5423+
chalk "^2.4.2"
5424+
cross-spawn "^6.0.5"
5425+
find-yarn-workspace-root "^1.2.1"
5426+
fs-extra "^7.0.1"
5427+
is-ci "^2.0.0"
5428+
klaw-sync "^6.0.0"
5429+
minimist "^1.2.0"
5430+
rimraf "^2.6.3"
5431+
semver "^5.6.0"
5432+
slash "^2.0.0"
5433+
tmp "^0.0.33"
5434+
53795435
path-exists@^2.0.0:
53805436
version "2.1.0"
53815437
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
@@ -5930,6 +5986,13 @@ ret@~0.1.10:
59305986
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
59315987
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
59325988

5989+
rimraf@^2.6.3:
5990+
version "2.7.1"
5991+
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
5992+
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
5993+
dependencies:
5994+
glob "^7.1.3"
5995+
59335996
rimraf@^3.0.0:
59345997
version "3.0.2"
59355998
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
@@ -6052,7 +6115,7 @@ semver-regex@^2.0.0:
60526115
resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338"
60536116
integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==
60546117

6055-
"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0:
6118+
"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0:
60566119
version "5.7.1"
60576120
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
60586121
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -6142,6 +6205,11 @@ sisteransi@^1.0.4:
61426205
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
61436206
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
61446207

6208+
slash@^2.0.0:
6209+
version "2.0.0"
6210+
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
6211+
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
6212+
61456213
slash@^3.0.0:
61466214
version "3.0.0"
61476215
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"

0 commit comments

Comments
 (0)