- if (rawKey !== key && has2.call(target, rawKey)) {
- const type = toRawType(target);
- console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);
- }
-}
-const reactiveMap = /* @__PURE__ */ new WeakMap();
-const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
-const readonlyMap = /* @__PURE__ */ new WeakMap();
-const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
- warn$1(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`);
- const { number, trim } = props[modifiersKey] || EMPTY_OBJ;
- if (trim) {
- args = rawArgs.map((a) => a.trim());
- }
- if (number) {
- args = rawArgs.map(toNumber);
- }
- }
- {
- devtoolsComponentEmit(instance, event, args);
- }
- {
- const lowerCaseEvent = event.toLowerCase();
- if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {
- warn$1(`Event "${lowerCaseEvent}" is emitted in component ${formatComponentName(instance, instance.type)} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate(event)}" instead of "${event}".`);
- warn$1(`injection "${String(key)}" not found.`);
- }
- } else {
- warn$1(`inject() can only be used inside setup() or functional components.`);
- }
-}
-function watchEffect(effect, options) {
- return doWatch(effect, null, options);
-}
-const INITIAL_WATCHER_VALUE = {};
-function watch(source, cb, options) {
- if (!isFunction(cb)) {
- warn$1(`\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.`);
- warn$1(`${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().`);
- warn$1(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`);
- } else if (instance === currentRenderingInstance) {
- warn$1(`Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`);
- }
- }
- },
- set({ _: instance }, key, value) {
- const { data, setupState, ctx } = instance;
- if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
- warn$1(`Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`);
- warn$1(`Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?`);
- }
- }
- }
- if (dataOptions) {
- if (!isFunction(dataOptions)) {
- warn$1(`The data option must be a function. Plain object usage is no longer supported.`);
- }
- const data = dataOptions.call(publicThis, publicThis);
- if (isPromise$1(data)) {
- warn$1(`data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`);
- warn$1(`injected property "${key}" is a ref and will be auto-unwrapped and no longer needs \`.value\` in the next minor release. To opt-in to the new behavior now, set \`app.config.unwrapInjectedRef = true\` (this config is temporary and will not be needed in the future.)`);
- if (Component2.compilerOptions && isRuntimeOnly()) {
- warn$1(`"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`);
- if (!Component2.render && instance.render === NOOP && !isSSR) {
- if (Component2.template) {
- warn$1(`Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".`);
- } else {
- warn$1(`Component is missing template or render function.`);
- }
- }
-}
-function createAttrsProxy(instance) {
- return new Proxy(instance.attrs, {
- get(target, key) {
- track(instance, "get", "$attrs");
- return target[key];
- },
- set() {
- warn$1(`setupContext.attrs is readonly.`);
- return false;
- },
- deleteProperty() {
- warn$1(`setupContext.attrs is readonly.`);
- return false;
- }
- });
-}
-function createSetupContext(instance) {
- const expose = (exposed) => {
- if (instance.exposed) {
- warn$1(`expose() should be called only once per setup().`);