@vue/compat 3.5.0-beta.1 → 3.5.0-beta.3

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.0-beta.1
2
+ * @vue/compat v3.5.0-beta.3
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -532,11 +532,11 @@ class ReactiveEffect {
532
532
  }
533
533
  }
534
534
  pause() {
535
- this.flags |= 128;
535
+ this.flags |= 64;
536
536
  }
537
537
  resume() {
538
- if (this.flags & 128) {
539
- this.flags &= ~128;
538
+ if (this.flags & 64) {
539
+ this.flags &= ~64;
540
540
  if (pausedQueueEffects.has(this)) {
541
541
  pausedQueueEffects.delete(this);
542
542
  this.trigger();
@@ -550,9 +550,6 @@ class ReactiveEffect {
550
550
  if (this.flags & 2 && !(this.flags & 32)) {
551
551
  return;
552
552
  }
553
- if (this.flags & 64) {
554
- return this.trigger();
555
- }
556
553
  if (!(this.flags & 8)) {
557
554
  this.flags |= 8;
558
555
  this.nextEffect = batchedEffect;
@@ -596,7 +593,7 @@ class ReactiveEffect {
596
593
  }
597
594
  }
598
595
  trigger() {
599
- if (this.flags & 128) {
596
+ if (this.flags & 64) {
600
597
  pausedQueueEffects.add(this);
601
598
  } else if (this.scheduler) {
602
599
  this.scheduler();
@@ -626,6 +623,7 @@ function endBatch() {
626
623
  batchDepth--;
627
624
  return;
628
625
  }
626
+ batchDepth--;
629
627
  let error;
630
628
  while (batchedEffect) {
631
629
  let e = batchedEffect;
@@ -644,7 +642,6 @@ function endBatch() {
644
642
  e = next;
645
643
  }
646
644
  }
647
- batchDepth--;
648
645
  if (error) throw error;
649
646
  }
650
647
  function prepareDeps(sub) {
@@ -1047,26 +1044,26 @@ const arrayInstrumentations = {
1047
1044
  });
1048
1045
  },
1049
1046
  every(fn, thisArg) {
1050
- return apply(this, "every", fn, thisArg);
1047
+ return apply(this, "every", fn, thisArg, void 0, arguments);
1051
1048
  },
1052
1049
  filter(fn, thisArg) {
1053
- return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive));
1050
+ return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments);
1054
1051
  },
1055
1052
  find(fn, thisArg) {
1056
- return apply(this, "find", fn, thisArg, toReactive);
1053
+ return apply(this, "find", fn, thisArg, toReactive, arguments);
1057
1054
  },
1058
1055
  findIndex(fn, thisArg) {
1059
- return apply(this, "findIndex", fn, thisArg);
1056
+ return apply(this, "findIndex", fn, thisArg, void 0, arguments);
1060
1057
  },
1061
1058
  findLast(fn, thisArg) {
1062
- return apply(this, "findLast", fn, thisArg, toReactive);
1059
+ return apply(this, "findLast", fn, thisArg, toReactive, arguments);
1063
1060
  },
1064
1061
  findLastIndex(fn, thisArg) {
1065
- return apply(this, "findLastIndex", fn, thisArg);
1062
+ return apply(this, "findLastIndex", fn, thisArg, void 0, arguments);
1066
1063
  },
1067
1064
  // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement
1068
1065
  forEach(fn, thisArg) {
1069
- return apply(this, "forEach", fn, thisArg);
1066
+ return apply(this, "forEach", fn, thisArg, void 0, arguments);
1070
1067
  },
1071
1068
  includes(...args) {
1072
1069
  return searchProxy(this, "includes", args);
@@ -1082,7 +1079,7 @@ const arrayInstrumentations = {
1082
1079
  return searchProxy(this, "lastIndexOf", args);
1083
1080
  },
1084
1081
  map(fn, thisArg) {
1085
- return apply(this, "map", fn, thisArg);
1082
+ return apply(this, "map", fn, thisArg, void 0, arguments);
1086
1083
  },
1087
1084
  pop() {
1088
1085
  return noTracking(this, "pop");
@@ -1101,7 +1098,7 @@ const arrayInstrumentations = {
1101
1098
  },
1102
1099
  // slice could use ARRAY_ITERATE but also seems to beg for range tracking
1103
1100
  some(fn, thisArg) {
1104
- return apply(this, "some", fn, thisArg);
1101
+ return apply(this, "some", fn, thisArg, void 0, arguments);
1105
1102
  },
1106
1103
  splice(...args) {
1107
1104
  return noTracking(this, "splice", args);
@@ -1137,12 +1134,17 @@ function iterator(self, method, wrapValue) {
1137
1134
  }
1138
1135
  return iter;
1139
1136
  }
1140
- function apply(self, method, fn, thisArg, wrappedRetFn) {
1137
+ const arrayProto = Array.prototype;
1138
+ function apply(self, method, fn, thisArg, wrappedRetFn, args) {
1141
1139
  const arr = shallowReadArray(self);
1142
- let needsWrap = false;
1140
+ const needsWrap = arr !== self && !isShallow(self);
1141
+ const methodFn = arr[method];
1142
+ if (methodFn !== arrayProto[method]) {
1143
+ const result2 = methodFn.apply(arr, args);
1144
+ return needsWrap ? toReactive(result2) : result2;
1145
+ }
1143
1146
  let wrappedFn = fn;
1144
1147
  if (arr !== self) {
1145
- needsWrap = !isShallow(self);
1146
1148
  if (needsWrap) {
1147
1149
  wrappedFn = function(item, index) {
1148
1150
  return fn.call(this, toReactive(item), index, self);
@@ -1153,7 +1155,7 @@ function apply(self, method, fn, thisArg, wrappedRetFn) {
1153
1155
  };
1154
1156
  }
1155
1157
  }
1156
- const result = arr[method](wrappedFn, thisArg);
1158
+ const result = methodFn.call(arr, wrappedFn, thisArg);
1157
1159
  return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;
1158
1160
  }
1159
1161
  function reduce(self, method, fn, args) {
@@ -2004,6 +2006,220 @@ const TriggerOpTypes = {
2004
2006
  "CLEAR": "clear"
2005
2007
  };
2006
2008
 
2009
+ const INITIAL_WATCHER_VALUE = {};
2010
+ const cleanupMap = /* @__PURE__ */ new WeakMap();
2011
+ let activeWatcher = void 0;
2012
+ function getCurrentWatcher() {
2013
+ return activeWatcher;
2014
+ }
2015
+ function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {
2016
+ if (owner) {
2017
+ let cleanups = cleanupMap.get(owner);
2018
+ if (!cleanups) cleanupMap.set(owner, cleanups = []);
2019
+ cleanups.push(cleanupFn);
2020
+ } else if (!failSilently) {
2021
+ warn$2(
2022
+ `onWatcherCleanup() was called when there was no active watcher to associate with.`
2023
+ );
2024
+ }
2025
+ }
2026
+ function watch$1(source, cb, options = EMPTY_OBJ) {
2027
+ const { immediate, deep, once, scheduler, augmentJob, call } = options;
2028
+ const warnInvalidSource = (s) => {
2029
+ (options.onWarn || warn$2)(
2030
+ `Invalid watch source: `,
2031
+ s,
2032
+ `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`
2033
+ );
2034
+ };
2035
+ const reactiveGetter = (source2) => {
2036
+ if (deep) return source2;
2037
+ if (isShallow(source2) || deep === false || deep === 0)
2038
+ return traverse(source2, 1);
2039
+ return traverse(source2);
2040
+ };
2041
+ let effect;
2042
+ let getter;
2043
+ let cleanup;
2044
+ let boundCleanup;
2045
+ let forceTrigger = false;
2046
+ let isMultiSource = false;
2047
+ if (isRef(source)) {
2048
+ getter = () => source.value;
2049
+ forceTrigger = isShallow(source);
2050
+ } else if (isReactive(source)) {
2051
+ getter = () => reactiveGetter(source);
2052
+ forceTrigger = true;
2053
+ } else if (isArray(source)) {
2054
+ isMultiSource = true;
2055
+ forceTrigger = source.some((s) => isReactive(s) || isShallow(s));
2056
+ getter = () => source.map((s) => {
2057
+ if (isRef(s)) {
2058
+ return s.value;
2059
+ } else if (isReactive(s)) {
2060
+ return reactiveGetter(s);
2061
+ } else if (isFunction(s)) {
2062
+ return call ? call(s, 2) : s();
2063
+ } else {
2064
+ warnInvalidSource(s);
2065
+ }
2066
+ });
2067
+ } else if (isFunction(source)) {
2068
+ if (cb) {
2069
+ getter = call ? () => call(source, 2) : source;
2070
+ } else {
2071
+ getter = () => {
2072
+ if (cleanup) {
2073
+ pauseTracking();
2074
+ try {
2075
+ cleanup();
2076
+ } finally {
2077
+ resetTracking();
2078
+ }
2079
+ }
2080
+ const currentEffect = activeWatcher;
2081
+ activeWatcher = effect;
2082
+ try {
2083
+ return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);
2084
+ } finally {
2085
+ activeWatcher = currentEffect;
2086
+ }
2087
+ };
2088
+ }
2089
+ } else {
2090
+ getter = NOOP;
2091
+ warnInvalidSource(source);
2092
+ }
2093
+ if (cb && deep) {
2094
+ const baseGetter = getter;
2095
+ const depth = deep === true ? Infinity : deep;
2096
+ getter = () => traverse(baseGetter(), depth);
2097
+ }
2098
+ if (once) {
2099
+ if (cb) {
2100
+ const _cb = cb;
2101
+ cb = (...args) => {
2102
+ _cb(...args);
2103
+ effect.stop();
2104
+ };
2105
+ } else {
2106
+ const _getter = getter;
2107
+ getter = () => {
2108
+ _getter();
2109
+ effect.stop();
2110
+ };
2111
+ }
2112
+ }
2113
+ let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
2114
+ const job = (immediateFirstRun) => {
2115
+ if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {
2116
+ return;
2117
+ }
2118
+ if (cb) {
2119
+ const newValue = effect.run();
2120
+ if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
2121
+ if (cleanup) {
2122
+ cleanup();
2123
+ }
2124
+ const currentWatcher = activeWatcher;
2125
+ activeWatcher = effect;
2126
+ try {
2127
+ const args = [
2128
+ newValue,
2129
+ // pass undefined as the old value when it's changed for the first time
2130
+ oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
2131
+ boundCleanup
2132
+ ];
2133
+ call ? call(cb, 3, args) : (
2134
+ // @ts-expect-error
2135
+ cb(...args)
2136
+ );
2137
+ oldValue = newValue;
2138
+ } finally {
2139
+ activeWatcher = currentWatcher;
2140
+ }
2141
+ }
2142
+ } else {
2143
+ effect.run();
2144
+ }
2145
+ };
2146
+ if (augmentJob) {
2147
+ augmentJob(job);
2148
+ }
2149
+ effect = new ReactiveEffect(getter);
2150
+ effect.scheduler = scheduler ? () => scheduler(job, false) : job;
2151
+ boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);
2152
+ cleanup = effect.onStop = () => {
2153
+ const cleanups = cleanupMap.get(effect);
2154
+ if (cleanups) {
2155
+ if (call) {
2156
+ call(cleanups, 4);
2157
+ } else {
2158
+ for (const cleanup2 of cleanups) cleanup2();
2159
+ }
2160
+ cleanupMap.delete(effect);
2161
+ }
2162
+ };
2163
+ {
2164
+ effect.onTrack = options.onTrack;
2165
+ effect.onTrigger = options.onTrigger;
2166
+ }
2167
+ if (cb) {
2168
+ if (immediate) {
2169
+ job(true);
2170
+ } else {
2171
+ oldValue = effect.run();
2172
+ }
2173
+ } else if (scheduler) {
2174
+ scheduler(job.bind(null, true), true);
2175
+ } else {
2176
+ effect.run();
2177
+ }
2178
+ const scope = getCurrentScope();
2179
+ const watchHandle = () => {
2180
+ effect.stop();
2181
+ if (scope) {
2182
+ remove(scope.effects, effect);
2183
+ }
2184
+ };
2185
+ watchHandle.pause = effect.pause.bind(effect);
2186
+ watchHandle.resume = effect.resume.bind(effect);
2187
+ watchHandle.stop = watchHandle;
2188
+ return watchHandle;
2189
+ }
2190
+ function traverse(value, depth = Infinity, seen) {
2191
+ if (depth <= 0 || !isObject(value) || value["__v_skip"]) {
2192
+ return value;
2193
+ }
2194
+ seen = seen || /* @__PURE__ */ new Set();
2195
+ if (seen.has(value)) {
2196
+ return value;
2197
+ }
2198
+ seen.add(value);
2199
+ depth--;
2200
+ if (isRef(value)) {
2201
+ traverse(value.value, depth, seen);
2202
+ } else if (isArray(value)) {
2203
+ for (let i = 0; i < value.length; i++) {
2204
+ traverse(value[i], depth, seen);
2205
+ }
2206
+ } else if (isSet(value) || isMap(value)) {
2207
+ value.forEach((v) => {
2208
+ traverse(v, depth, seen);
2209
+ });
2210
+ } else if (isPlainObject(value)) {
2211
+ for (const key in value) {
2212
+ traverse(value[key], depth, seen);
2213
+ }
2214
+ for (const key of Object.getOwnPropertySymbols(value)) {
2215
+ if (Object.prototype.propertyIsEnumerable.call(value, key)) {
2216
+ traverse(value[key], depth, seen);
2217
+ }
2218
+ }
2219
+ }
2220
+ return value;
2221
+ }
2222
+
2007
2223
  const stack$1 = [];
2008
2224
  function pushWarningContext(vnode) {
2009
2225
  stack$1.push(vnode);
@@ -2131,12 +2347,6 @@ const ErrorCodes = {
2131
2347
  "0": "SETUP_FUNCTION",
2132
2348
  "RENDER_FUNCTION": 1,
2133
2349
  "1": "RENDER_FUNCTION",
2134
- "WATCH_GETTER": 2,
2135
- "2": "WATCH_GETTER",
2136
- "WATCH_CALLBACK": 3,
2137
- "3": "WATCH_CALLBACK",
2138
- "WATCH_CLEANUP": 4,
2139
- "4": "WATCH_CLEANUP",
2140
2350
  "NATIVE_EVENT_HANDLER": 5,
2141
2351
  "5": "NATIVE_EVENT_HANDLER",
2142
2352
  "COMPONENT_EVENT_HANDLER": 6,
@@ -2288,7 +2498,7 @@ function nextTick(fn) {
2288
2498
  return fn ? p.then(this ? fn.bind(this) : fn) : p;
2289
2499
  }
2290
2500
  function findInsertionIndex(id) {
2291
- let start = flushIndex + 1;
2501
+ let start = isFlushing ? flushIndex + 1 : 0;
2292
2502
  let end = queue.length;
2293
2503
  while (start < end) {
2294
2504
  const middle = start + end >>> 1;
@@ -2304,15 +2514,13 @@ function findInsertionIndex(id) {
2304
2514
  }
2305
2515
  function queueJob(job) {
2306
2516
  if (!(job.flags & 1)) {
2307
- if (job.id == null) {
2308
- queue.push(job);
2309
- } else if (
2310
- // fast path when the job id is larger than the tail
2311
- !(job.flags & 2) && job.id >= (queue[queue.length - 1] && queue[queue.length - 1].id || 0)
2312
- ) {
2517
+ const jobId = getId(job);
2518
+ const lastJob = queue[queue.length - 1];
2519
+ if (!lastJob || // fast path when the job id is larger than the tail
2520
+ !(job.flags & 2) && jobId >= getId(lastJob)) {
2313
2521
  queue.push(job);
2314
2522
  } else {
2315
- queue.splice(findInsertionIndex(job.id), 0, job);
2523
+ queue.splice(findInsertionIndex(jobId), 0, job);
2316
2524
  }
2317
2525
  if (!(job.flags & 4)) {
2318
2526
  job.flags |= 1;
@@ -2326,12 +2534,6 @@ function queueFlush() {
2326
2534
  currentFlushPromise = resolvedPromise.then(flushJobs);
2327
2535
  }
2328
2536
  }
2329
- function invalidateJob(job) {
2330
- const i = queue.indexOf(job);
2331
- if (i > flushIndex) {
2332
- queue.splice(i, 1);
2333
- }
2334
- }
2335
2537
  function queuePostFlushCb(cb) {
2336
2538
  if (!isArray(cb)) {
2337
2539
  if (activePostFlushCbs && cb.id === -1) {
@@ -2393,24 +2595,13 @@ function flushPostFlushCbs(seen) {
2393
2595
  postFlushIndex = 0;
2394
2596
  }
2395
2597
  }
2396
- const getId = (job) => job.id == null ? Infinity : job.id;
2397
- const comparator = (a, b) => {
2398
- const diff = getId(a) - getId(b);
2399
- if (diff === 0) {
2400
- const isAPre = a.flags & 2;
2401
- const isBPre = b.flags & 2;
2402
- if (isAPre && !isBPre) return -1;
2403
- if (isBPre && !isAPre) return 1;
2404
- }
2405
- return diff;
2406
- };
2598
+ const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;
2407
2599
  function flushJobs(seen) {
2408
2600
  isFlushPending = false;
2409
2601
  isFlushing = true;
2410
2602
  {
2411
2603
  seen = seen || /* @__PURE__ */ new Map();
2412
2604
  }
2413
- queue.sort(comparator);
2414
2605
  const check = (job) => checkRecursiveUpdates(seen, job) ;
2415
2606
  try {
2416
2607
  for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
@@ -3051,7 +3242,7 @@ function on(instance, event, fn) {
3051
3242
  function once(instance, event, fn) {
3052
3243
  const wrapped = (...args) => {
3053
3244
  off(instance, event, wrapped);
3054
- fn.call(instance.proxy, ...args);
3245
+ fn.apply(instance.proxy, args);
3055
3246
  };
3056
3247
  wrapped.fn = fn;
3057
3248
  on(instance, event, wrapped);
@@ -4089,6 +4280,7 @@ const logMismatchError = () => {
4089
4280
  const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject";
4090
4281
  const isMathMLContainer = (container) => container.namespaceURI.includes("MathML");
4091
4282
  const getContainerType = (container) => {
4283
+ if (container.nodeType !== 1) return void 0;
4092
4284
  if (isSVGContainer(container)) return "svg";
4093
4285
  if (isMathMLContainer(container)) return "mathml";
4094
4286
  return void 0;
@@ -5017,7 +5209,7 @@ const KeepAliveImpl = {
5017
5209
  function pruneCache(filter) {
5018
5210
  cache.forEach((vnode, key) => {
5019
5211
  const name = getComponentName(vnode.type);
5020
- if (name && (!filter || !filter(name))) {
5212
+ if (name && !filter(name)) {
5021
5213
  pruneCacheEntry(key);
5022
5214
  }
5023
5215
  });
@@ -5139,6 +5331,7 @@ function matches(pattern, name) {
5139
5331
  } else if (isString(pattern)) {
5140
5332
  return pattern.split(",").includes(name);
5141
5333
  } else if (isRegExp(pattern)) {
5334
+ pattern.lastIndex = 0;
5142
5335
  return pattern.test(name);
5143
5336
  }
5144
5337
  return false;
@@ -6583,23 +6776,43 @@ function callHook$1(hook, instance, type) {
6583
6776
  );
6584
6777
  }
6585
6778
  function createWatcher(raw, ctx, publicThis, key) {
6586
- const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
6779
+ let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
6780
+ const options = {};
6781
+ {
6782
+ const instance = currentInstance && getCurrentScope() === currentInstance.scope ? currentInstance : null;
6783
+ const newValue = getter();
6784
+ if (isArray(newValue) && isCompatEnabled$1("WATCH_ARRAY", instance)) {
6785
+ options.deep = true;
6786
+ }
6787
+ const baseGetter = getter;
6788
+ getter = () => {
6789
+ const val = baseGetter();
6790
+ if (isArray(val) && checkCompatEnabled$1("WATCH_ARRAY", instance)) {
6791
+ traverse(val);
6792
+ }
6793
+ return val;
6794
+ };
6795
+ }
6587
6796
  if (isString(raw)) {
6588
6797
  const handler = ctx[raw];
6589
6798
  if (isFunction(handler)) {
6590
- watch(getter, handler);
6799
+ {
6800
+ watch(getter, handler, options);
6801
+ }
6591
6802
  } else {
6592
6803
  warn$1(`Invalid watch handler specified by key "${raw}"`, handler);
6593
6804
  }
6594
6805
  } else if (isFunction(raw)) {
6595
- watch(getter, raw.bind(publicThis));
6806
+ {
6807
+ watch(getter, raw.bind(publicThis), options);
6808
+ }
6596
6809
  } else if (isObject(raw)) {
6597
6810
  if (isArray(raw)) {
6598
6811
  raw.forEach((r) => createWatcher(r, ctx, publicThis, key));
6599
6812
  } else {
6600
6813
  const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];
6601
6814
  if (isFunction(handler)) {
6602
- watch(getter, handler, raw);
6815
+ watch(getter, handler, extend(raw, options) );
6603
6816
  } else {
6604
6817
  warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler);
6605
6818
  }
@@ -6823,7 +7036,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6823
7036
  return vm;
6824
7037
  }
6825
7038
  }
6826
- Vue.version = `2.6.14-compat:${"3.5.0-beta.1"}`;
7039
+ Vue.version = `2.6.14-compat:${"3.5.0-beta.3"}`;
6827
7040
  Vue.config = singletonApp.config;
6828
7041
  Vue.use = (plugin, ...options) => {
6829
7042
  if (plugin && isFunction(plugin.install)) {
@@ -7155,7 +7368,7 @@ function defineReactive(obj, key, val) {
7155
7368
  if (isArray(val)) {
7156
7369
  methodsToPatch.forEach((m) => {
7157
7370
  val[m] = (...args) => {
7158
- Array.prototype[m].call(reactiveVal, ...args);
7371
+ Array.prototype[m].apply(reactiveVal, args);
7159
7372
  };
7160
7373
  });
7161
7374
  } else {
@@ -8350,7 +8563,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8350
8563
  if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) {
8351
8564
  subTree = filterSingleRoot(subTree.children) || subTree;
8352
8565
  }
8353
- if (vnode === subTree) {
8566
+ if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {
8354
8567
  const parentVNode = parentComponent.vnode;
8355
8568
  setScopeId(
8356
8569
  el,
@@ -8680,7 +8893,6 @@ function baseCreateRenderer(options, createHydrationFns) {
8680
8893
  return;
8681
8894
  } else {
8682
8895
  instance.next = n2;
8683
- invalidateJob(instance.update);
8684
8896
  instance.update();
8685
8897
  }
8686
8898
  } else {
@@ -9604,7 +9816,6 @@ function watchSyncEffect(effect, options) {
9604
9816
  extend({}, options, { flush: "sync" })
9605
9817
  );
9606
9818
  }
9607
- const INITIAL_WATCHER_VALUE = {};
9608
9819
  function watch(source, cb, options) {
9609
9820
  if (!isFunction(cb)) {
9610
9821
  warn$1(
@@ -9613,21 +9824,8 @@ function watch(source, cb, options) {
9613
9824
  }
9614
9825
  return doWatch(source, cb, options);
9615
9826
  }
9616
- function doWatch(source, cb, {
9617
- immediate,
9618
- deep,
9619
- flush,
9620
- once,
9621
- onTrack,
9622
- onTrigger
9623
- } = EMPTY_OBJ) {
9624
- if (cb && once) {
9625
- const _cb = cb;
9626
- cb = (...args) => {
9627
- _cb(...args);
9628
- watchHandle();
9629
- };
9630
- }
9827
+ function doWatch(source, cb, options = EMPTY_OBJ) {
9828
+ const { immediate, deep, flush, once } = options;
9631
9829
  if (!cb) {
9632
9830
  if (immediate !== void 0) {
9633
9831
  warn$1(
@@ -9645,174 +9843,53 @@ function doWatch(source, cb, {
9645
9843
  );
9646
9844
  }
9647
9845
  }
9648
- const warnInvalidSource = (s) => {
9649
- warn$1(
9650
- `Invalid watch source: `,
9651
- s,
9652
- `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`
9653
- );
9654
- };
9655
- const instance = currentInstance;
9656
- const reactiveGetter = (source2) => {
9657
- if (deep) return source2;
9658
- if (isShallow(source2) || deep === false || deep === 0)
9659
- return traverse(source2, 1);
9660
- return traverse(source2);
9661
- };
9662
- let getter;
9663
- let forceTrigger = false;
9664
- let isMultiSource = false;
9665
- if (isRef(source)) {
9666
- getter = () => source.value;
9667
- forceTrigger = isShallow(source);
9668
- } else if (isReactive(source)) {
9669
- getter = () => reactiveGetter(source);
9670
- forceTrigger = true;
9671
- } else if (isArray(source)) {
9672
- isMultiSource = true;
9673
- forceTrigger = source.some((s) => isReactive(s) || isShallow(s));
9674
- getter = () => source.map((s) => {
9675
- if (isRef(s)) {
9676
- return s.value;
9677
- } else if (isReactive(s)) {
9678
- return reactiveGetter(s);
9679
- } else if (isFunction(s)) {
9680
- return callWithErrorHandling(s, instance, 2);
9681
- } else {
9682
- warnInvalidSource(s);
9683
- }
9684
- });
9685
- } else if (isFunction(source)) {
9686
- if (cb) {
9687
- getter = () => callWithErrorHandling(source, instance, 2);
9688
- } else {
9689
- getter = () => {
9690
- if (cleanup) {
9691
- cleanup();
9692
- }
9693
- return callWithAsyncErrorHandling(
9694
- source,
9695
- instance,
9696
- 3,
9697
- [onCleanup]
9698
- );
9699
- };
9700
- }
9701
- } else {
9702
- getter = NOOP;
9703
- warnInvalidSource(source);
9704
- }
9705
- if (cb && !deep) {
9706
- const baseGetter = getter;
9707
- getter = () => {
9708
- const val = baseGetter();
9709
- if (isArray(val) && checkCompatEnabled$1("WATCH_ARRAY", instance)) {
9710
- traverse(val);
9711
- }
9712
- return val;
9713
- };
9714
- }
9715
- if (cb && deep) {
9716
- const baseGetter = getter;
9717
- const depth = deep === true ? Infinity : deep;
9718
- getter = () => traverse(baseGetter(), depth);
9719
- }
9720
- let cleanup;
9721
- let onCleanup = (fn) => {
9722
- cleanup = effect.onStop = () => {
9723
- callWithErrorHandling(fn, instance, 4);
9724
- cleanup = effect.onStop = void 0;
9725
- };
9726
- };
9846
+ const baseWatchOptions = extend({}, options);
9847
+ baseWatchOptions.onWarn = warn$1;
9727
9848
  let ssrCleanup;
9728
9849
  if (isInSSRComponentSetup) {
9729
- onCleanup = NOOP;
9730
- if (!cb) {
9731
- getter();
9732
- } else if (immediate) {
9733
- callWithAsyncErrorHandling(cb, instance, 3, [
9734
- getter(),
9735
- isMultiSource ? [] : void 0,
9736
- onCleanup
9737
- ]);
9738
- }
9739
9850
  if (flush === "sync") {
9740
9851
  const ctx = useSSRContext();
9741
9852
  ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);
9853
+ } else if (!cb || immediate) {
9854
+ baseWatchOptions.once = true;
9742
9855
  } else {
9743
- const watchHandle2 = () => {
9856
+ return {
9857
+ stop: NOOP,
9858
+ resume: NOOP,
9859
+ pause: NOOP
9744
9860
  };
9745
- watchHandle2.stop = NOOP;
9746
- watchHandle2.resume = NOOP;
9747
- watchHandle2.pause = NOOP;
9748
- return watchHandle2;
9749
9861
  }
9750
9862
  }
9751
- let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
9752
- const job = (immediateFirstRun) => {
9753
- if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {
9754
- return;
9755
- }
9756
- if (cb) {
9757
- const newValue = effect.run();
9758
- if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || isArray(newValue) && isCompatEnabled$1("WATCH_ARRAY", instance)) {
9759
- if (cleanup) {
9760
- cleanup();
9761
- }
9762
- callWithAsyncErrorHandling(cb, instance, 3, [
9763
- newValue,
9764
- // pass undefined as the old value when it's changed for the first time
9765
- oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
9766
- onCleanup
9767
- ]);
9768
- oldValue = newValue;
9863
+ const instance = currentInstance;
9864
+ baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);
9865
+ let isPre = false;
9866
+ if (flush === "post") {
9867
+ baseWatchOptions.scheduler = (job) => {
9868
+ queuePostRenderEffect(job, instance && instance.suspense);
9869
+ };
9870
+ } else if (flush !== "sync") {
9871
+ isPre = true;
9872
+ baseWatchOptions.scheduler = (job, isFirstRun) => {
9873
+ if (isFirstRun) {
9874
+ job();
9875
+ } else {
9876
+ queueJob(job);
9769
9877
  }
9770
- } else {
9771
- effect.run();
9772
- }
9773
- };
9774
- if (cb) job.flags |= 4;
9775
- const effect = new ReactiveEffect(getter);
9776
- let scheduler;
9777
- if (flush === "sync") {
9778
- effect.flags |= 64;
9779
- scheduler = job;
9780
- } else if (flush === "post") {
9781
- scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);
9782
- } else {
9783
- job.flags |= 2;
9784
- if (instance) job.id = instance.uid;
9785
- scheduler = () => queueJob(job);
9878
+ };
9786
9879
  }
9787
- effect.scheduler = scheduler;
9788
- const scope = getCurrentScope();
9789
- const watchHandle = () => {
9790
- effect.stop();
9791
- if (scope) {
9792
- remove(scope.effects, effect);
9880
+ baseWatchOptions.augmentJob = (job) => {
9881
+ if (cb) {
9882
+ job.flags |= 4;
9793
9883
  }
9794
- };
9795
- watchHandle.pause = effect.pause.bind(effect);
9796
- watchHandle.resume = effect.resume.bind(effect);
9797
- watchHandle.stop = watchHandle;
9798
- {
9799
- effect.onTrack = onTrack;
9800
- effect.onTrigger = onTrigger;
9801
- }
9802
- if (cb) {
9803
- if (immediate) {
9804
- job(true);
9805
- } else {
9806
- oldValue = effect.run();
9884
+ if (isPre) {
9885
+ job.flags |= 2;
9886
+ if (instance) {
9887
+ job.id = instance.uid;
9888
+ job.i = instance;
9889
+ }
9807
9890
  }
9808
- } else if (flush === "post") {
9809
- queuePostRenderEffect(
9810
- effect.run.bind(effect),
9811
- instance && instance.suspense
9812
- );
9813
- } else {
9814
- effect.run();
9815
- }
9891
+ };
9892
+ const watchHandle = watch$1(source, cb, baseWatchOptions);
9816
9893
  if (ssrCleanup) ssrCleanup.push(watchHandle);
9817
9894
  return watchHandle;
9818
9895
  }
@@ -9841,38 +9918,6 @@ function createPathGetter(ctx, path) {
9841
9918
  return cur;
9842
9919
  };
9843
9920
  }
9844
- function traverse(value, depth = Infinity, seen) {
9845
- if (depth <= 0 || !isObject(value) || value["__v_skip"]) {
9846
- return value;
9847
- }
9848
- seen = seen || /* @__PURE__ */ new Set();
9849
- if (seen.has(value)) {
9850
- return value;
9851
- }
9852
- seen.add(value);
9853
- depth--;
9854
- if (isRef(value)) {
9855
- traverse(value.value, depth, seen);
9856
- } else if (isArray(value)) {
9857
- for (let i = 0; i < value.length; i++) {
9858
- traverse(value[i], depth, seen);
9859
- }
9860
- } else if (isSet(value) || isMap(value)) {
9861
- value.forEach((v) => {
9862
- traverse(v, depth, seen);
9863
- });
9864
- } else if (isPlainObject(value)) {
9865
- for (const key in value) {
9866
- traverse(value[key], depth, seen);
9867
- }
9868
- for (const key of Object.getOwnPropertySymbols(value)) {
9869
- if (Object.prototype.propertyIsEnumerable.call(value, key)) {
9870
- traverse(value[key], depth, seen);
9871
- }
9872
- }
9873
- }
9874
- return value;
9875
- }
9876
9921
 
9877
9922
  function useModel(props, name, options = EMPTY_OBJ) {
9878
9923
  const i = getCurrentInstance();
@@ -12127,7 +12172,7 @@ function isMemoSame(cached, memo) {
12127
12172
  return true;
12128
12173
  }
12129
12174
 
12130
- const version = "3.5.0-beta.1";
12175
+ const version = "3.5.0-beta.3";
12131
12176
  const warn = warn$1 ;
12132
12177
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12133
12178
  const devtools = devtools$1 ;
@@ -13084,7 +13129,6 @@ class VueElement extends BaseClass {
13084
13129
  this._ob = null;
13085
13130
  if (this.shadowRoot && _createApp !== createApp) {
13086
13131
  this._root = this.shadowRoot;
13087
- this._mount(_def);
13088
13132
  } else {
13089
13133
  if (this.shadowRoot) {
13090
13134
  warn(
@@ -13097,9 +13141,9 @@ class VueElement extends BaseClass {
13097
13141
  } else {
13098
13142
  this._root = this;
13099
13143
  }
13100
- if (!this._def.__asyncLoader) {
13101
- this._resolveProps(this._def);
13102
- }
13144
+ }
13145
+ if (!this._def.__asyncLoader) {
13146
+ this._resolveProps(this._def);
13103
13147
  }
13104
13148
  }
13105
13149
  connectedCallback() {
@@ -13299,6 +13343,7 @@ class VueElement extends BaseClass {
13299
13343
  vnode.ce = (instance) => {
13300
13344
  this._instance = instance;
13301
13345
  instance.ce = this;
13346
+ instance.isCE = true;
13302
13347
  {
13303
13348
  instance.ceReload = (newStyles) => {
13304
13349
  if (this._styles) {
@@ -14169,6 +14214,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
14169
14214
  effectScope: effectScope,
14170
14215
  getCurrentInstance: getCurrentInstance,
14171
14216
  getCurrentScope: getCurrentScope,
14217
+ getCurrentWatcher: getCurrentWatcher,
14172
14218
  getTransitionRawChildren: getTransitionRawChildren,
14173
14219
  guardReactiveProps: guardReactiveProps,
14174
14220
  h: h,
@@ -14211,6 +14257,7 @@ var runtimeDom = /*#__PURE__*/Object.freeze({
14211
14257
  onServerPrefetch: onServerPrefetch,
14212
14258
  onUnmounted: onUnmounted,
14213
14259
  onUpdated: onUpdated,
14260
+ onWatcherCleanup: onWatcherCleanup,
14214
14261
  openBlock: openBlock,
14215
14262
  popScopeId: popScopeId,
14216
14263
  provide: provide,
@@ -15549,8 +15596,9 @@ const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
15549
15596
  const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
15550
15597
  const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
15551
15598
  const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g;
15552
- const isMemberExpressionBrowser = (path) => {
15553
- path = path.trim().replace(whitespaceRE, (s) => s.trim());
15599
+ const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source;
15600
+ const isMemberExpressionBrowser = (exp) => {
15601
+ const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim());
15554
15602
  let state = 0 /* inMemberExp */;
15555
15603
  let stateStack = [];
15556
15604
  let currentOpenBracketCount = 0;
@@ -15612,6 +15660,9 @@ const isMemberExpressionBrowser = (path) => {
15612
15660
  return !currentOpenBracketCount && !currentOpenParensCount;
15613
15661
  };
15614
15662
  const isMemberExpression = isMemberExpressionBrowser ;
15663
+ const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
15664
+ const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp));
15665
+ const isFnExpression = isFnExpressionBrowser ;
15615
15666
  function assert(condition, msg) {
15616
15667
  if (!condition) {
15617
15668
  throw new Error(msg || `unexpected compiler condition`);
@@ -16058,7 +16109,9 @@ const tokenizer = new Tokenizer(stack, {
16058
16109
  case 17:
16059
16110
  case 18:
16060
16111
  case 19:
16112
+ // "
16061
16113
  case 20:
16114
+ // '
16062
16115
  case 21:
16063
16116
  emitError(9, end);
16064
16117
  break;
@@ -17040,6 +17093,7 @@ function traverseNode(node, context) {
17040
17093
  context.helper(TO_DISPLAY_STRING);
17041
17094
  }
17042
17095
  break;
17096
+ // for container types, further traverse downwards
17043
17097
  case 9:
17044
17098
  for (let i2 = 0; i2 < node.branches.length; i2++) {
17045
17099
  traverseNode(node.branches[i2], context);
@@ -17392,6 +17446,7 @@ function genNode(node, context) {
17392
17446
  case 21:
17393
17447
  genNodeList(node.body, context, true, false);
17394
17448
  break;
17449
+ // SSR only types
17395
17450
  case 22:
17396
17451
  break;
17397
17452
  case 23:
@@ -17402,6 +17457,7 @@ function genNode(node, context) {
17402
17457
  break;
17403
17458
  case 26:
17404
17459
  break;
17460
+ /* istanbul ignore next */
17405
17461
  case 10:
17406
17462
  break;
17407
17463
  default:
@@ -19106,7 +19162,6 @@ function processSlotOutlet(node, context) {
19106
19162
  };
19107
19163
  }
19108
19164
 
19109
- const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
19110
19165
  const transformOn$1 = (dir, node, context, augmentor) => {
19111
19166
  const { loc, modifiers, arg } = dir;
19112
19167
  if (!dir.exp && !modifiers.length) {
@@ -19150,8 +19205,8 @@ const transformOn$1 = (dir, node, context, augmentor) => {
19150
19205
  }
19151
19206
  let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;
19152
19207
  if (exp) {
19153
- const isMemberExp = isMemberExpression(exp.content);
19154
- const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));
19208
+ const isMemberExp = isMemberExpression(exp);
19209
+ const isInlineStatement = !(isMemberExp || isFnExpression(exp));
19155
19210
  const hasMultipleStatements = exp.content.includes(`;`);
19156
19211
  {
19157
19212
  validateBrowserExpression(
@@ -19299,7 +19354,7 @@ const transformModel$1 = (dir, node, context) => {
19299
19354
  return createTransformProps();
19300
19355
  }
19301
19356
  const maybeRef = false;
19302
- if (!expString.trim() || !isMemberExpression(expString) && !maybeRef) {
19357
+ if (!expString.trim() || !isMemberExpression(exp) && !maybeRef) {
19303
19358
  context.onError(
19304
19359
  createCompilerError(42, exp.loc)
19305
19360
  );
@@ -19410,27 +19465,35 @@ function parseFilter(node, context) {
19410
19465
  case 34:
19411
19466
  inDouble = true;
19412
19467
  break;
19468
+ // "
19413
19469
  case 39:
19414
19470
  inSingle = true;
19415
19471
  break;
19472
+ // '
19416
19473
  case 96:
19417
19474
  inTemplateString = true;
19418
19475
  break;
19476
+ // `
19419
19477
  case 40:
19420
19478
  paren++;
19421
19479
  break;
19480
+ // (
19422
19481
  case 41:
19423
19482
  paren--;
19424
19483
  break;
19484
+ // )
19425
19485
  case 91:
19426
19486
  square++;
19427
19487
  break;
19488
+ // [
19428
19489
  case 93:
19429
19490
  square--;
19430
19491
  break;
19492
+ // ]
19431
19493
  case 123:
19432
19494
  curly++;
19433
19495
  break;
19496
+ // {
19434
19497
  case 125:
19435
19498
  curly--;
19436
19499
  break;
@@ -20281,4 +20344,4 @@ Vue.compile = compileToFunction;
20281
20344
 
20282
20345
  const configureCompat = Vue.configureCompat;
20283
20346
 
20284
- export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, Vue as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useHost, useId, useModel, useSSRContext, useShadowRoot, useSlots, useTemplateRef, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
20347
+ export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, Vue as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getCurrentWatcher, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, onWatcherCleanup, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useHost, useId, useModel, useSSRContext, useShadowRoot, useSlots, useTemplateRef, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };