@vue/compat 3.4.36 → 3.4.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -80
- package/dist/vue.cjs.js +44 -21
- package/dist/vue.cjs.prod.js +42 -19
- package/dist/vue.esm-browser.js +28 -19
- package/dist/vue.esm-browser.prod.js +6 -6
- package/dist/vue.esm-bundler.js +30 -20
- package/dist/vue.global.js +28 -19
- package/dist/vue.global.prod.js +6 -6
- package/dist/vue.runtime.esm-browser.js +18 -12
- package/dist/vue.runtime.esm-browser.prod.js +2 -2
- package/dist/vue.runtime.esm-bundler.js +20 -13
- package/dist/vue.runtime.global.js +18 -12
- package/dist/vue.runtime.global.prod.js +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -84,12 +84,12 @@ The following workflow walks through the steps of migrating an actual Vue 2 app
|
|
|
84
84
|
...options,
|
|
85
85
|
compilerOptions: {
|
|
86
86
|
compatConfig: {
|
|
87
|
-
MODE: 2
|
|
88
|
-
}
|
|
89
|
-
}
|
|
87
|
+
MODE: 2,
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
90
|
}
|
|
91
91
|
})
|
|
92
|
-
}
|
|
92
|
+
},
|
|
93
93
|
}
|
|
94
94
|
```
|
|
95
95
|
|
|
@@ -103,8 +103,8 @@ The following workflow walks through the steps of migrating an actual Vue 2 app
|
|
|
103
103
|
module.exports = {
|
|
104
104
|
resolve: {
|
|
105
105
|
alias: {
|
|
106
|
-
vue: '@vue/compat'
|
|
107
|
-
}
|
|
106
|
+
vue: '@vue/compat',
|
|
107
|
+
},
|
|
108
108
|
},
|
|
109
109
|
module: {
|
|
110
110
|
rules: [
|
|
@@ -114,13 +114,13 @@ The following workflow walks through the steps of migrating an actual Vue 2 app
|
|
|
114
114
|
options: {
|
|
115
115
|
compilerOptions: {
|
|
116
116
|
compatConfig: {
|
|
117
|
-
MODE: 2
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
]
|
|
123
|
-
}
|
|
117
|
+
MODE: 2,
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
124
|
}
|
|
125
125
|
```
|
|
126
126
|
|
|
@@ -134,20 +134,20 @@ The following workflow walks through the steps of migrating an actual Vue 2 app
|
|
|
134
134
|
export default {
|
|
135
135
|
resolve: {
|
|
136
136
|
alias: {
|
|
137
|
-
vue: '@vue/compat'
|
|
138
|
-
}
|
|
137
|
+
vue: '@vue/compat',
|
|
138
|
+
},
|
|
139
139
|
},
|
|
140
140
|
plugins: [
|
|
141
141
|
vue({
|
|
142
142
|
template: {
|
|
143
143
|
compilerOptions: {
|
|
144
144
|
compatConfig: {
|
|
145
|
-
MODE: 2
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
})
|
|
150
|
-
]
|
|
145
|
+
MODE: 2,
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
}),
|
|
150
|
+
],
|
|
151
151
|
}
|
|
152
152
|
```
|
|
153
153
|
|
|
@@ -207,7 +207,7 @@ import { configureCompat } from 'vue'
|
|
|
207
207
|
// disable compat for certain features
|
|
208
208
|
configureCompat({
|
|
209
209
|
FEATURE_ID_A: false,
|
|
210
|
-
FEATURE_ID_B: false
|
|
210
|
+
FEATURE_ID_B: false,
|
|
211
211
|
})
|
|
212
212
|
```
|
|
213
213
|
|
|
@@ -221,7 +221,7 @@ import { configureCompat } from 'vue'
|
|
|
221
221
|
configureCompat({
|
|
222
222
|
MODE: 3,
|
|
223
223
|
FEATURE_ID_A: true,
|
|
224
|
-
FEATURE_ID_B: true
|
|
224
|
+
FEATURE_ID_B: true,
|
|
225
225
|
})
|
|
226
226
|
```
|
|
227
227
|
|
|
@@ -233,8 +233,8 @@ A component can use the `compatConfig` option, which expects the same options as
|
|
|
233
233
|
export default {
|
|
234
234
|
compatConfig: {
|
|
235
235
|
MODE: 3, // opt-in to Vue 3 behavior for this component only
|
|
236
|
-
FEATURE_ID_A: true // features can also be toggled at component level
|
|
237
|
-
}
|
|
236
|
+
FEATURE_ID_A: true, // features can also be toggled at component level
|
|
237
|
+
},
|
|
238
238
|
// ...
|
|
239
239
|
}
|
|
240
240
|
```
|
|
@@ -256,73 +256,73 @@ Features that start with `COMPILER_` are compiler-specific: if you are using the
|
|
|
256
256
|
|
|
257
257
|
> Should be fixed upfront or will likely lead to errors
|
|
258
258
|
|
|
259
|
-
| ID | Type | Description | Docs
|
|
260
|
-
| ------------------------------------- | ---- | ----------------------------------------------------------------------- |
|
|
261
|
-
| GLOBAL_MOUNT_CONTAINER | ⨂ | Mounted application does not replace the element it's mounted to | [link](https://v3-migration.vuejs.org/breaking-changes/mount-changes.html)
|
|
262
|
-
| CONFIG_DEVTOOLS | ⨂ | production devtools is now a build-time flag | [link](https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags)
|
|
263
|
-
| COMPILER_V_IF_V_FOR_PRECEDENCE | ⨂ | `v-if` and `v-for` precedence when used on the same element has changed | [link](https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html)
|
|
264
|
-
| COMPILER_V_IF_SAME_KEY | ⨂ | `v-if` branches can no longer have the same key | [link](https://v3-migration.vuejs.org/breaking-changes/key-attribute.html#on-conditional-branches)
|
|
265
|
-
| COMPILER_V_FOR_TEMPLATE_KEY_PLACEMENT | ⨂ | `<template v-for>` key should now be placed on `<template>` | [link](https://v3-migration.vuejs.org/breaking-changes/key-attribute.html#with-template-v-for)
|
|
266
|
-
| COMPILER_SFC_FUNCTIONAL | ⨂ | `<template functional>` is no longer supported in SFCs | [link](https://v3-migration.vuejs.org/breaking-changes/functional-components.html#single-file-components-sfcs)
|
|
259
|
+
| ID | Type | Description | Docs |
|
|
260
|
+
| ------------------------------------- | ---- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
261
|
+
| GLOBAL_MOUNT_CONTAINER | ⨂ | Mounted application does not replace the element it's mounted to | [link](https://v3-migration.vuejs.org/breaking-changes/mount-changes.html) |
|
|
262
|
+
| CONFIG_DEVTOOLS | ⨂ | production devtools is now a build-time flag | [link](https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags) |
|
|
263
|
+
| COMPILER_V_IF_V_FOR_PRECEDENCE | ⨂ | `v-if` and `v-for` precedence when used on the same element has changed | [link](https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html) |
|
|
264
|
+
| COMPILER_V_IF_SAME_KEY | ⨂ | `v-if` branches can no longer have the same key | [link](https://v3-migration.vuejs.org/breaking-changes/key-attribute.html#on-conditional-branches) |
|
|
265
|
+
| COMPILER_V_FOR_TEMPLATE_KEY_PLACEMENT | ⨂ | `<template v-for>` key should now be placed on `<template>` | [link](https://v3-migration.vuejs.org/breaking-changes/key-attribute.html#with-template-v-for) |
|
|
266
|
+
| COMPILER_SFC_FUNCTIONAL | ⨂ | `<template functional>` is no longer supported in SFCs | [link](https://v3-migration.vuejs.org/breaking-changes/functional-components.html#single-file-components-sfcs) |
|
|
267
267
|
|
|
268
268
|
### Partially Compatible with Caveats
|
|
269
269
|
|
|
270
|
-
| ID | Type | Description | Docs
|
|
271
|
-
| ------------------------ | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
270
|
+
| ID | Type | Description | Docs |
|
|
271
|
+
| ------------------------ | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
272
272
|
| CONFIG_IGNORED_ELEMENTS | ◐ | `config.ignoredElements` is now `config.compilerOptions.isCustomElement` (only in browser compiler build). If using build setup, `isCustomElement` must be passed via build configuration. | [link](https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement) |
|
|
273
273
|
| COMPILER_INLINE_TEMPLATE | ◐ | `inline-template` removed (compat only supported in browser compiler build) | [link](https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html) |
|
|
274
274
|
| PROPS_DEFAULT_THIS | ◐ | props default factory no longer have access to `this` (in compat mode, `this` is not a real instance - it only exposes props, `$options` and injections) | [link](https://v3-migration.vuejs.org/breaking-changes/props-default-this.html) |
|
|
275
|
-
| INSTANCE_DESTROY | ◐ | `$destroy` instance method removed (in compat mode, only supported on root instance) |
|
|
276
|
-
| GLOBAL_PRIVATE_UTIL | ◐ | `Vue.util` is private and no longer available |
|
|
275
|
+
| INSTANCE_DESTROY | ◐ | `$destroy` instance method removed (in compat mode, only supported on root instance) | |
|
|
276
|
+
| GLOBAL_PRIVATE_UTIL | ◐ | `Vue.util` is private and no longer available | |
|
|
277
277
|
| CONFIG_PRODUCTION_TIP | ◐ | `config.productionTip` no longer necessary | [link](https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed) |
|
|
278
278
|
| CONFIG_SILENT | ◐ | `config.silent` removed |
|
|
279
279
|
|
|
280
280
|
### Compat only (no warning)
|
|
281
281
|
|
|
282
|
-
| ID | Type | Description
|
|
283
|
-
| ------------------ | ---- |
|
|
282
|
+
| ID | Type | Description | Docs |
|
|
283
|
+
| ------------------ | ---- | -------------------------------------- | ----------------------------------------------------------------------- |
|
|
284
284
|
| TRANSITION_CLASSES | ⭘ | Transition enter/leave classes changed | [link](https://v3-migration.vuejs.org/breaking-changes/transition.html) |
|
|
285
285
|
|
|
286
286
|
### Fully Compatible
|
|
287
287
|
|
|
288
|
-
| ID | Type | Description | Docs
|
|
289
|
-
| ---------------------------- | ---- | --------------------------------------------------------------------- |
|
|
290
|
-
| GLOBAL_MOUNT | ✔
|
|
291
|
-
| GLOBAL_EXTEND | ✔
|
|
292
|
-
| GLOBAL_PROTOTYPE | ✔
|
|
293
|
-
| GLOBAL_SET | ✔
|
|
294
|
-
| GLOBAL_DELETE | ✔
|
|
295
|
-
| GLOBAL_OBSERVABLE | ✔
|
|
296
|
-
| CONFIG_KEY_CODES | ✔
|
|
297
|
-
| CONFIG_WHITESPACE | ✔
|
|
298
|
-
| INSTANCE_SET | ✔
|
|
299
|
-
| INSTANCE_DELETE | ✔
|
|
300
|
-
| INSTANCE_EVENT_EMITTER | ✔
|
|
301
|
-
| INSTANCE_EVENT_HOOKS | ✔
|
|
302
|
-
| INSTANCE_CHILDREN | ✔
|
|
303
|
-
| INSTANCE_LISTENERS | ✔
|
|
304
|
-
| INSTANCE_SCOPED_SLOTS | ✔
|
|
305
|
-
| INSTANCE_ATTRS_CLASS_STYLE | ✔
|
|
306
|
-
| OPTIONS_DATA_FN | ✔
|
|
307
|
-
| OPTIONS_DATA_MERGE | ✔
|
|
308
|
-
| OPTIONS_BEFORE_DESTROY | ✔
|
|
309
|
-
| OPTIONS_DESTROYED | ✔
|
|
310
|
-
| WATCH_ARRAY | ✔
|
|
311
|
-
| V_ON_KEYCODE_MODIFIER | ✔
|
|
312
|
-
| CUSTOM_DIR | ✔
|
|
313
|
-
| ATTR_FALSE_VALUE | ✔
|
|
314
|
-
| ATTR_ENUMERATED_COERCION | ✔
|
|
315
|
-
| TRANSITION_GROUP_ROOT | ✔
|
|
316
|
-
| COMPONENT_ASYNC | ✔
|
|
317
|
-
| COMPONENT_FUNCTIONAL | ✔
|
|
318
|
-
| COMPONENT_V_MODEL | ✔
|
|
319
|
-
| RENDER_FUNCTION | ✔
|
|
320
|
-
| FILTERS | ✔
|
|
321
|
-
| COMPILER_IS_ON_ELEMENT | ✔
|
|
322
|
-
| COMPILER_V_BIND_SYNC | ✔
|
|
323
|
-
| COMPILER_V_BIND_PROP | ✔
|
|
324
|
-
| COMPILER_V_BIND_OBJECT_ORDER | ✔
|
|
325
|
-
| COMPILER_V_ON_NATIVE | ✔
|
|
326
|
-
| COMPILER_V_FOR_REF | ✔
|
|
327
|
-
| COMPILER_NATIVE_TEMPLATE | ✔
|
|
328
|
-
| COMPILER_FILTERS | ✔
|
|
288
|
+
| ID | Type | Description | Docs |
|
|
289
|
+
| ---------------------------- | ---- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
290
|
+
| GLOBAL_MOUNT | ✔ | new Vue() -> createApp | [link](https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance) |
|
|
291
|
+
| GLOBAL_EXTEND | ✔ | Vue.extend removed (use `defineComponent` or `extends` option) | [link](https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-extend-replaced-by-definecomponent) |
|
|
292
|
+
| GLOBAL_PROTOTYPE | ✔ | `Vue.prototype` -> `app.config.globalProperties` | [link](https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties) |
|
|
293
|
+
| GLOBAL_SET | ✔ | `Vue.set` removed (no longer needed) | |
|
|
294
|
+
| GLOBAL_DELETE | ✔ | `Vue.delete` removed (no longer needed) | |
|
|
295
|
+
| GLOBAL_OBSERVABLE | ✔ | `Vue.observable` removed (use `reactive`) | [link](https://vuejs.org/api/reactivity-core.html#reactive) |
|
|
296
|
+
| CONFIG_KEY_CODES | ✔ | config.keyCodes removed | [link](https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html) |
|
|
297
|
+
| CONFIG_WHITESPACE | ✔ | In Vue 3 whitespace defaults to `"condense"` | |
|
|
298
|
+
| INSTANCE_SET | ✔ | `vm.$set` removed (no longer needed) | |
|
|
299
|
+
| INSTANCE_DELETE | ✔ | `vm.$delete` removed (no longer needed) | |
|
|
300
|
+
| INSTANCE_EVENT_EMITTER | ✔ | `vm.$on`, `vm.$off`, `vm.$once` removed | [link](https://v3-migration.vuejs.org/breaking-changes/events-api.html) |
|
|
301
|
+
| INSTANCE_EVENT_HOOKS | ✔ | Instance no longer emits `hook:x` events | [link](https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html) |
|
|
302
|
+
| INSTANCE_CHILDREN | ✔ | `vm.$children` removed | [link](https://v3-migration.vuejs.org/breaking-changes/children.html) |
|
|
303
|
+
| INSTANCE_LISTENERS | ✔ | `vm.$listeners` removed | [link](https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html) |
|
|
304
|
+
| INSTANCE_SCOPED_SLOTS | ✔ | `vm.$scopedSlots` removed; `vm.$slots` now exposes functions | [link](https://v3-migration.vuejs.org/breaking-changes/slots-unification.html) |
|
|
305
|
+
| INSTANCE_ATTRS_CLASS_STYLE | ✔ | `$attrs` now includes `class` and `style` | [link](https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html) |
|
|
306
|
+
| OPTIONS_DATA_FN | ✔ | `data` must be a function in all cases | [link](https://v3-migration.vuejs.org/breaking-changes/data-option.html) |
|
|
307
|
+
| OPTIONS_DATA_MERGE | ✔ | `data` from mixin or extension is now shallow merged | [link](https://v3-migration.vuejs.org/breaking-changes/data-option.html) |
|
|
308
|
+
| OPTIONS_BEFORE_DESTROY | ✔ | `beforeDestroy` -> `beforeUnmount` | |
|
|
309
|
+
| OPTIONS_DESTROYED | ✔ | `destroyed` -> `unmounted` | |
|
|
310
|
+
| WATCH_ARRAY | ✔ | watching an array no longer triggers on mutation unless deep | [link](https://v3-migration.vuejs.org/breaking-changes/watch.html) |
|
|
311
|
+
| V_ON_KEYCODE_MODIFIER | ✔ | `v-on` no longer supports keyCode modifiers | [link](https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html) |
|
|
312
|
+
| CUSTOM_DIR | ✔ | Custom directive hook names changed | [link](https://v3-migration.vuejs.org/breaking-changes/custom-directives.html) |
|
|
313
|
+
| ATTR_FALSE_VALUE | ✔ | No longer removes attribute if binding value is boolean `false` | [link](https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html) |
|
|
314
|
+
| ATTR_ENUMERATED_COERCION | ✔ | No longer special case enumerated attributes | [link](https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html) |
|
|
315
|
+
| TRANSITION_GROUP_ROOT | ✔ | `<transition-group>` no longer renders a root element by default | [link](https://v3-migration.vuejs.org/breaking-changes/transition-group.html) |
|
|
316
|
+
| COMPONENT_ASYNC | ✔ | Async component API changed (now requires `defineAsyncComponent`) | [link](https://v3-migration.vuejs.org/breaking-changes/async-components.html) |
|
|
317
|
+
| COMPONENT_FUNCTIONAL | ✔ | Functional component API changed (now must be plain functions) | [link](https://v3-migration.vuejs.org/breaking-changes/functional-components.html) |
|
|
318
|
+
| COMPONENT_V_MODEL | ✔ | Component v-model reworked | [link](https://v3-migration.vuejs.org/breaking-changes/v-model.html) |
|
|
319
|
+
| RENDER_FUNCTION | ✔ | Render function API changed | [link](https://v3-migration.vuejs.org/breaking-changes/render-function-api.html) |
|
|
320
|
+
| FILTERS | ✔ | Filters removed (this option affects only runtime filter APIs) | [link](https://v3-migration.vuejs.org/breaking-changes/filters.html) |
|
|
321
|
+
| COMPILER_IS_ON_ELEMENT | ✔ | `is` usage is now restricted to `<component>` only | [link](https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html) |
|
|
322
|
+
| COMPILER_V_BIND_SYNC | ✔ | `v-bind.sync` replaced by `v-model` with arguments | [link](https://v3-migration.vuejs.org/breaking-changes/v-model.html) |
|
|
323
|
+
| COMPILER_V_BIND_PROP | ✔ | `v-bind.prop` modifier removed | |
|
|
324
|
+
| COMPILER_V_BIND_OBJECT_ORDER | ✔ | `v-bind="object"` is now order sensitive | [link](https://v3-migration.vuejs.org/breaking-changes/v-bind.html) |
|
|
325
|
+
| COMPILER_V_ON_NATIVE | ✔ | `v-on.native` modifier removed | [link](https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html) |
|
|
326
|
+
| COMPILER_V_FOR_REF | ✔ | `ref` in `v-for` (compiler support) | |
|
|
327
|
+
| COMPILER_NATIVE_TEMPLATE | ✔ | `<template>` with no special directives now renders as native element | |
|
|
328
|
+
| COMPILER_FILTERS | ✔ | filters (compiler support) | |
|
package/dist/vue.cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vue/compat v3.4.
|
|
2
|
+
* @vue/compat v3.4.38
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
5
|
**/
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
var parser = require('@babel/parser');
|
|
9
9
|
var estreeWalker = require('estree-walker');
|
|
10
|
-
var decode_js = require('entities/
|
|
10
|
+
var decode_js = require('entities/lib/decode.js');
|
|
11
11
|
var sourceMapJs = require('source-map-js');
|
|
12
12
|
|
|
13
13
|
/*! #__NO_SIDE_EFFECTS__ */
|
|
@@ -868,7 +868,7 @@ class BaseReactiveHandler {
|
|
|
868
868
|
return isShallow2;
|
|
869
869
|
} else if (key === "__v_raw") {
|
|
870
870
|
if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype
|
|
871
|
-
// this means the
|
|
871
|
+
// this means the receiver is a user proxy of the reactive proxy
|
|
872
872
|
Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {
|
|
873
873
|
return target;
|
|
874
874
|
}
|
|
@@ -3524,7 +3524,7 @@ const KeepAliveImpl = {
|
|
|
3524
3524
|
}
|
|
3525
3525
|
function pruneCacheEntry(key) {
|
|
3526
3526
|
const cached = cache.get(key);
|
|
3527
|
-
if (!current || !isSameVNodeType(cached, current)) {
|
|
3527
|
+
if (cached && (!current || !isSameVNodeType(cached, current))) {
|
|
3528
3528
|
unmount(cached);
|
|
3529
3529
|
} else if (current) {
|
|
3530
3530
|
resetShapeFlag(current);
|
|
@@ -3586,6 +3586,10 @@ const KeepAliveImpl = {
|
|
|
3586
3586
|
return rawVNode;
|
|
3587
3587
|
}
|
|
3588
3588
|
let vnode = getInnerChild(rawVNode);
|
|
3589
|
+
if (vnode.type === Comment) {
|
|
3590
|
+
current = null;
|
|
3591
|
+
return vnode;
|
|
3592
|
+
}
|
|
3589
3593
|
const comp = vnode.type;
|
|
3590
3594
|
const name = getComponentName(
|
|
3591
3595
|
isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp
|
|
@@ -5303,7 +5307,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
|
|
|
5303
5307
|
return vm;
|
|
5304
5308
|
}
|
|
5305
5309
|
}
|
|
5306
|
-
Vue.version = `2.6.14-compat:${"3.4.
|
|
5310
|
+
Vue.version = `2.6.14-compat:${"3.4.38"}`;
|
|
5307
5311
|
Vue.config = singletonApp.config;
|
|
5308
5312
|
Vue.use = (plugin, ...options) => {
|
|
5309
5313
|
if (plugin && isFunction(plugin.install)) {
|
|
@@ -5879,7 +5883,7 @@ function provide(key, value) {
|
|
|
5879
5883
|
function inject(key, defaultValue, treatDefaultAsFactory = false) {
|
|
5880
5884
|
const instance = currentInstance || currentRenderingInstance;
|
|
5881
5885
|
if (instance || currentApp) {
|
|
5882
|
-
const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides :
|
|
5886
|
+
const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
|
|
5883
5887
|
if (provides && key in provides) {
|
|
5884
5888
|
return provides[key];
|
|
5885
5889
|
} else if (arguments.length > 1) {
|
|
@@ -8885,13 +8889,13 @@ function baseCreateRenderer(options, createHydrationFns) {
|
|
|
8885
8889
|
namespace
|
|
8886
8890
|
);
|
|
8887
8891
|
}
|
|
8892
|
+
container._vnode = vnode;
|
|
8888
8893
|
if (!isFlushing) {
|
|
8889
8894
|
isFlushing = true;
|
|
8890
8895
|
flushPreFlushCbs();
|
|
8891
8896
|
flushPostFlushCbs();
|
|
8892
8897
|
isFlushing = false;
|
|
8893
8898
|
}
|
|
8894
|
-
container._vnode = vnode;
|
|
8895
8899
|
};
|
|
8896
8900
|
const internals = {
|
|
8897
8901
|
p: patch,
|
|
@@ -9329,7 +9333,8 @@ function useModel(props, name, options = EMPTY_OBJ) {
|
|
|
9329
9333
|
return options.get ? options.get(localValue) : localValue;
|
|
9330
9334
|
},
|
|
9331
9335
|
set(value) {
|
|
9332
|
-
|
|
9336
|
+
const emittedValue = options.set ? options.set(value) : value;
|
|
9337
|
+
if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) {
|
|
9333
9338
|
return;
|
|
9334
9339
|
}
|
|
9335
9340
|
const rawProps = i.vnode.props;
|
|
@@ -9338,7 +9343,6 @@ function useModel(props, name, options = EMPTY_OBJ) {
|
|
|
9338
9343
|
localValue = value;
|
|
9339
9344
|
trigger();
|
|
9340
9345
|
}
|
|
9341
|
-
const emittedValue = options.set ? options.set(value) : value;
|
|
9342
9346
|
i.emit(`update:${name}`, emittedValue);
|
|
9343
9347
|
if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) {
|
|
9344
9348
|
trigger();
|
|
@@ -9376,9 +9380,9 @@ function emit(instance, event, ...rawArgs) {
|
|
|
9376
9380
|
} = instance;
|
|
9377
9381
|
if (emitsOptions) {
|
|
9378
9382
|
if (!(event in emitsOptions) && !(event.startsWith("hook:") || event.startsWith(compatModelEventPrefix))) {
|
|
9379
|
-
if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {
|
|
9383
|
+
if (!propsOptions || !(toHandlerKey(camelize(event)) in propsOptions)) {
|
|
9380
9384
|
warn$1(
|
|
9381
|
-
`Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.`
|
|
9385
|
+
`Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(camelize(event))}" prop.`
|
|
9382
9386
|
);
|
|
9383
9387
|
}
|
|
9384
9388
|
} else {
|
|
@@ -11525,7 +11529,7 @@ function isMemoSame(cached, memo) {
|
|
|
11525
11529
|
return true;
|
|
11526
11530
|
}
|
|
11527
11531
|
|
|
11528
|
-
const version = "3.4.
|
|
11532
|
+
const version = "3.4.38";
|
|
11529
11533
|
const warn = warn$1 ;
|
|
11530
11534
|
const ErrorTypeStrings = ErrorTypeStrings$1 ;
|
|
11531
11535
|
const devtools = devtools$1 ;
|
|
@@ -11537,7 +11541,8 @@ const _ssrUtils = {
|
|
|
11537
11541
|
setCurrentRenderingInstance,
|
|
11538
11542
|
isVNode: isVNode,
|
|
11539
11543
|
normalizeVNode,
|
|
11540
|
-
getComponentPublicInstance
|
|
11544
|
+
getComponentPublicInstance,
|
|
11545
|
+
ensureValidVNode
|
|
11541
11546
|
};
|
|
11542
11547
|
const ssrUtils = _ssrUtils ;
|
|
11543
11548
|
const resolveFilter = resolveFilter$1 ;
|
|
@@ -14973,10 +14978,11 @@ function isCoreComponent(tag) {
|
|
|
14973
14978
|
}
|
|
14974
14979
|
const nonIdentifierRE = /^\d|[^\$\w\xA0-\uFFFF]/;
|
|
14975
14980
|
const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
|
|
14976
|
-
const
|
|
14981
|
+
const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source;
|
|
14982
|
+
const isMemberExpressionNode = (exp, context) => {
|
|
14977
14983
|
try {
|
|
14978
|
-
let ret = parser.parseExpression(
|
|
14979
|
-
plugins: context.expressionPlugins
|
|
14984
|
+
let ret = exp.ast || parser.parseExpression(getExpSource(exp), {
|
|
14985
|
+
plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"]
|
|
14980
14986
|
});
|
|
14981
14987
|
ret = unwrapTSNode(ret);
|
|
14982
14988
|
return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier" && ret.name !== "undefined";
|
|
@@ -14985,6 +14991,24 @@ const isMemberExpressionNode = (path, context) => {
|
|
|
14985
14991
|
}
|
|
14986
14992
|
};
|
|
14987
14993
|
const isMemberExpression = isMemberExpressionNode;
|
|
14994
|
+
const isFnExpressionNode = (exp, context) => {
|
|
14995
|
+
try {
|
|
14996
|
+
let ret = exp.ast || parser.parseExpression(getExpSource(exp), {
|
|
14997
|
+
plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"]
|
|
14998
|
+
});
|
|
14999
|
+
if (ret.type === "Program") {
|
|
15000
|
+
ret = ret.body[0];
|
|
15001
|
+
if (ret.type === "ExpressionStatement") {
|
|
15002
|
+
ret = ret.expression;
|
|
15003
|
+
}
|
|
15004
|
+
}
|
|
15005
|
+
ret = unwrapTSNode(ret);
|
|
15006
|
+
return ret.type === "FunctionExpression" || ret.type === "ArrowFunctionExpression";
|
|
15007
|
+
} catch (e) {
|
|
15008
|
+
return false;
|
|
15009
|
+
}
|
|
15010
|
+
};
|
|
15011
|
+
const isFnExpression = isFnExpressionNode;
|
|
14988
15012
|
function advancePositionWithClone(pos, source, numberOfCharacters = source.length) {
|
|
14989
15013
|
return advancePositionWithMutation(
|
|
14990
15014
|
{
|
|
@@ -18465,7 +18489,7 @@ function resolveComponentType(node, context, ssr = false) {
|
|
|
18465
18489
|
} else {
|
|
18466
18490
|
exp = isProp.exp;
|
|
18467
18491
|
if (!exp) {
|
|
18468
|
-
exp = createSimpleExpression(`is`, false, isProp.loc);
|
|
18492
|
+
exp = createSimpleExpression(`is`, false, isProp.arg.loc);
|
|
18469
18493
|
{
|
|
18470
18494
|
exp = isProp.exp = processExpression(exp, context);
|
|
18471
18495
|
}
|
|
@@ -19045,7 +19069,6 @@ function processSlotOutlet(node, context) {
|
|
|
19045
19069
|
};
|
|
19046
19070
|
}
|
|
19047
19071
|
|
|
19048
|
-
const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
|
|
19049
19072
|
const transformOn$1 = (dir, node, context, augmentor) => {
|
|
19050
19073
|
const { loc, modifiers, arg } = dir;
|
|
19051
19074
|
if (!dir.exp && !modifiers.length) {
|
|
@@ -19089,8 +19112,8 @@ const transformOn$1 = (dir, node, context, augmentor) => {
|
|
|
19089
19112
|
}
|
|
19090
19113
|
let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;
|
|
19091
19114
|
if (exp) {
|
|
19092
|
-
const isMemberExp = isMemberExpression(exp
|
|
19093
|
-
const isInlineStatement = !(isMemberExp ||
|
|
19115
|
+
const isMemberExp = isMemberExpression(exp, context);
|
|
19116
|
+
const isInlineStatement = !(isMemberExp || isFnExpression(exp, context));
|
|
19094
19117
|
const hasMultipleStatements = exp.content.includes(`;`);
|
|
19095
19118
|
if (context.prefixIdentifiers) {
|
|
19096
19119
|
isInlineStatement && context.addIdentifiers(`$event`);
|
|
@@ -19260,7 +19283,7 @@ const transformModel$1 = (dir, node, context) => {
|
|
|
19260
19283
|
return createTransformProps();
|
|
19261
19284
|
}
|
|
19262
19285
|
const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref");
|
|
19263
|
-
if (!expString.trim() || !isMemberExpression(
|
|
19286
|
+
if (!expString.trim() || !isMemberExpression(exp, context) && !maybeRef) {
|
|
19264
19287
|
context.onError(
|
|
19265
19288
|
createCompilerError(42, exp.loc)
|
|
19266
19289
|
);
|