{"version":3,"file":"vue-reactive-reactive.development.mjs","sources":["../src/store-native.ts","../src/utils.ts","../src/store-prototype.ts","../src/decorator.ts","../src/store.ts","../src/adm.ts","../src/effectScope.ts","../src/computed.ts","../src/observable.ts","../src/scheduler.ts","../src/reactivity.ts","../src/watch.ts","../src/watchEffect.ts","../src/makeObservable.ts","../src/index.ts"],"sourcesContent":["import type { ReactiveDecorator } from './decorator'\r\nimport type { DecoratorsMap } from './store-prototype'\r\nimport { STORED_METADATA_KEY } from './decorator'\r\n\r\nexport function storeMetaDataByNative(value: any, context: DecoratorContext, decorator: ReactiveDecorator) {\r\n  const metadata = context.metadata\r\n  const fieldName = (context.name ?? 'unknown').toString()\r\n  if (__DEV__ && isOverridden(decorator) && !hasProp(metadata, STORED_METADATA_KEY)) {\r\n    throw new Error(`'${fieldName}' is decorated with 'override', `\r\n      + `but no such decorated member was found on prototype.`)\r\n  }\r\n\r\n  if (!hasProp(metadata, STORED_METADATA_KEY)) {\r\n    addProp(metadata, STORED_METADATA_KEY, {})\r\n  }\r\n\r\n  // if (!isOverridden(decorator))\r\n  (metadata as any)[STORED_METADATA_KEY][context.name!] = decorator\r\n}\r\n\r\nexport function getMetaDataByNative(instance: object) {\r\n  const metaData = instance.constructor[Symbol.metadata]\r\n  if (!metaData || !metaData[STORED_METADATA_KEY])\r\n    throw new Error('Decorator metadata is not defined')\r\n  return metaData[STORED_METADATA_KEY]\r\n}\r\n\r\nfunction hasProp(target: any, key: PropertyKey) {\r\n  return key in target\r\n}\r\n\r\nfunction addProp(target: any, key: PropertyKey, value: any) {\r\n  Object.defineProperty(target, key, {\r\n    enumerable: false,\r\n    configurable: true,\r\n    writable: true,\r\n    value,\r\n  })\r\n}\r\n\r\nfunction isOverridden(decorator: ReactiveDecorator): boolean {\r\n  return decorator.decoratorType === 'override'\r\n}\r\n\r\nexport function collectDecoratorsByNative(instance: any): DecoratorsMap {\r\n  const metadata = instance.constructor[Symbol.metadata]\r\n  if (!metadata)\r\n    throw new Error('Decorator metadata is not defined')\r\n  return metadata[STORED_METADATA_KEY]\r\n}\r\n","const objectPrototype = Object.prototype\r\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== 'undefined'\r\n\r\nexport function hasProp(target: object, key: PropertyKey): boolean {\r\n  return Object.prototype.hasOwnProperty.call(target, key)\r\n}\r\n\r\nexport function addHiddenProp(target: object, key: PropertyKey, value: any) {\r\n  Object.defineProperty(target, key, {\r\n    enumerable: false,\r\n    configurable: true,\r\n    writable: true,\r\n    value,\r\n  })\r\n}\r\n\r\nexport function isPropertyKey(key: any): key is PropertyKey {\r\n  switch (typeof key) {\r\n    case 'string':\r\n    case 'number':\r\n    case 'symbol':\r\n      return true\r\n    default:\r\n      return false\r\n  }\r\n}\r\n\r\nexport function assertPropertyDecorator(name: string, args: any[]) {\r\n  if (args.length < 2 || typeof args[0] !== 'object' || !isPropertyKey(args[1]))\r\n    throw new TypeError(`@${name} decorator can only be used on properties.`)\r\n}\r\n\r\nexport function NOOP() {}\r\n\r\nexport const ownKeys: (target: any) => PropertyKey[]\r\n  = typeof Reflect !== 'undefined' && Reflect.ownKeys\r\n    ? Reflect.ownKeys\r\n    : hasGetOwnPropertySymbols\r\n      ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\r\n      : /* istanbul ignore next */ Object.getOwnPropertyNames\r\n\r\nexport function getDescriptor(target: any, key: PropertyKey): PropertyDescriptor | undefined {\r\n  let source = target\r\n\r\n  while (source && source !== objectPrototype) {\r\n    const descriptor = Object.getOwnPropertyDescriptor(source, key)\r\n    if (descriptor)\r\n      return descriptor\r\n\r\n    source = Object.getPrototypeOf(source)\r\n  }\r\n\r\n  return undefined\r\n}\r\n\r\n// eslint-disable-next-line ts/no-unsafe-function-type\r\nexport function isFunction(val: any): val is Function {\r\n  return typeof val === 'function'\r\n}\r\n\r\nexport function isArray<T = any>(val: any): val is T[] {\r\n  return Array.isArray(val)\r\n}\r\n","import type { ReactiveDecorator } from './decorator'\r\nimport { STORED_METADATA_KEY } from './decorator'\r\nimport { addHiddenProp, hasProp } from './utils'\r\n\r\nexport function isOverridden(decorator: ReactiveDecorator): boolean {\r\n  return decorator.decoratorType === 'override'\r\n}\r\n\r\nexport function getDecoratorType(decorator: ReactiveDecorator): string {\r\n  return decorator.decoratorType\r\n}\r\n\r\nexport function storeMetaDataByPrototype(prototype: any, key: PropertyKey, decorator: ReactiveDecorator) {\r\n  if (!hasProp(prototype, STORED_METADATA_KEY)) {\r\n    addHiddenProp(prototype, STORED_METADATA_KEY, {\r\n      ...prototype[STORED_METADATA_KEY],\r\n    })\r\n  }\r\n\r\n  if (__DEV__) {\r\n    /**\r\n     * Check if the decorator is 'override' and if the member is not found on prototype.\r\n     */\r\n    if (isOverridden(decorator) && !hasProp(prototype[STORED_METADATA_KEY], key)) {\r\n      const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\r\n      if (__DEV__)\r\n        throw new Error(`'${fieldName}' is decorated with 'override', but no such decorated member was found on prototype.`)\r\n    }\r\n    /**\r\n     * Check if the member is already decorated with another decorator.\r\n     */\r\n    if (!isOverridden(decorator) && hasProp(prototype[STORED_METADATA_KEY], key)) {\r\n      const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\r\n      const prevType = getDecoratorType(prototype[STORED_METADATA_KEY][key])\r\n      const currentType = getDecoratorType(decorator)\r\n\r\n      if (__DEV__)\r\n        throw new Error(`'${fieldName}' is decorated with '${currentType}', but '${prevType}' is already defined.`)\r\n    }\r\n  }\r\n\r\n  // if (!isOverridden(decorator))\r\n  prototype[STORED_METADATA_KEY][key] = decorator\r\n}\r\n\r\nexport type DecoratorMapEntry =\r\n  | ReactiveDecorator\r\n\r\nexport type DecoratorsMap = Record<PropertyKey, DecoratorMapEntry>\r\n\r\nexport function collectDecoratorsByPrototype(target: any): DecoratorsMap {\r\n  if (!hasProp(target, STORED_METADATA_KEY)) {\r\n    if (__DEV__ && !target[STORED_METADATA_KEY])\r\n      throw new Error(`No decorators found. Please check if you have used any decorators.`)\r\n\r\n    addHiddenProp(target, STORED_METADATA_KEY, {\r\n      ...target[STORED_METADATA_KEY],\r\n    })\r\n  }\r\n\r\n  return target[STORED_METADATA_KEY]\r\n}\r\n","import type { Decorator } from './decorator-fills'\r\nimport { storeMetaDataByNative } from './store-native'\r\nimport { storeMetaDataByPrototype } from './store-prototype'\r\n\r\nexport const STORED_METADATA_KEY: unique symbol = Symbol('VUE_REACTIVE_DECORATOR_METADATA')\r\n\r\nlet DECORATOR_VERSION: '2021' | '2023' | undefined\r\n\r\nexport interface ReactiveDecorator {\r\n  decoratorType: string\r\n  decorate2023?: (value: any, context: DecoratorContext) => void\r\n  decorate2021?: (value: any, propertyKey: string | symbol) => void\r\n  make: (\r\n    target: any,\r\n    key: PropertyKey,\r\n    descriptor: PropertyDescriptor,\r\n  ) => any\r\n  options?: any\r\n}\r\n\r\nexport function createDecorator<D extends Decorator = Decorator>(\r\n  decorator: ReactiveDecorator,\r\n): PropertyDecorator & ReactiveDecorator & D {\r\n  function _decorator(arg1: any, arg2: any) {\r\n    if (is2023DecoratorByContext(arg2)) {\r\n      const [value, context] = [arg1, arg2]\r\n      if (DECORATOR_VERSION === undefined)\r\n        DECORATOR_VERSION = '2023'\r\n      // return decorator.decorate2023(decorator, target)\r\n      storeMetaDataByNative(value, context, decorator)\r\n    }\r\n    else {\r\n      // return decorator.decorate2021(decorator, target)\r\n      const [target, property] = [arg1, arg2]\r\n      if (DECORATOR_VERSION === undefined)\r\n        DECORATOR_VERSION = '2021'\r\n      storeMetaDataByPrototype(target, property, decorator)\r\n    }\r\n  }\r\n  return Object.assign(_decorator, decorator) as any\r\n}\r\n\r\nexport function isReactiveDecorator(thing: any): thing is ReactiveDecorator {\r\n  return (\r\n    thing != null\r\n    && thing instanceof Object\r\n    && typeof thing.decoratorType === 'string'\r\n  )\r\n}\r\nexport function assert20223DecoratorType(\r\n  context: DecoratorContext,\r\n  types: DecoratorContext['kind'][],\r\n) {\r\n  if (!types.includes(context.kind)) {\r\n    console.error(\r\n      `The decorator applied to '${String(context.name)}' cannot be used on a ${\r\n        context.kind\r\n      } element`,\r\n    )\r\n  }\r\n}\r\n\r\nexport function is2023DecoratorByContext(context: any): context is DecoratorContext {\r\n  return typeof context == 'object' && typeof context.kind == 'string'\r\n}\r\n\r\nexport function is2023Decorator() {\r\n  if (DECORATOR_VERSION === undefined) {\r\n    if (__DEV__) {\r\n      throw new Error('No decorator has been applied yet before calling is2023Decorator. Should be called after any decorator is applied.')\r\n    }\r\n  }\r\n  return DECORATOR_VERSION === '2023'\r\n}\r\n","import { is2023Decorator, is2023DecoratorByContext } from './decorator'\r\nimport { collectDecoratorsByNative, storeMetaDataByNative } from './store-native'\r\nimport { collectDecoratorsByPrototype, storeMetaDataByPrototype } from './store-prototype'\r\n\r\nexport function storeMetaData(...args:\r\n  Parameters<typeof storeMetaDataByPrototype> |\r\n  Parameters<typeof storeMetaDataByNative>) {\r\n  const [target, property, decorator] = args\r\n  if (is2023DecoratorByContext(property))\r\n    return storeMetaDataByNative(target, property, decorator)\r\n  else\r\n    return storeMetaDataByPrototype(target, property, decorator)\r\n}\r\n\r\nexport function collectDecorators(...args:\r\n  Parameters<typeof collectDecoratorsByPrototype> |\r\n  Parameters<typeof collectDecoratorsByNative>) {\r\n  const [target] = args\r\n  if (is2023Decorator())\r\n    return collectDecoratorsByNative(target)\r\n  else\r\n    return collectDecoratorsByPrototype(target)\r\n}\r\n","import { isReactiveDecorator, type ReactiveDecorator } from './decorator'\r\nimport { collectDecorators } from './store'\r\nimport { addHiddenProp, getDescriptor, hasProp } from './utils'\r\n\r\nexport const STORED_ADM_KEY = Symbol('VUE_REACTIVE_STORED_ADM')\r\n\r\nexport class ObservableObjectAdministration {\r\n  target: any\r\n  records: Record<PropertyKey, {\r\n    raw: any\r\n    decorator: ReactiveDecorator\r\n  }> = {}\r\n\r\n  constructor(target: any) {\r\n    this.target = target\r\n    this.records = getAdministration(target) ?? {}\r\n  }\r\n\r\n  getRecord(key: PropertyKey) {\r\n    return this.records[key]\r\n  }\r\n\r\n  setRecord(key: PropertyKey, value: any, decorator: ReactiveDecorator) {\r\n    this.records[key] = {\r\n      raw: value,\r\n      decorator,\r\n    }\r\n  }\r\n\r\n  make(key: PropertyKey, decorator: ReactiveDecorator) {\r\n    if (!(key in this.target)) {\r\n      if (key in collectDecorators(this.target)) {\r\n        // the key may be defined in the child class\r\n        return\r\n      }\r\n      else {\r\n        throw new Error(\r\n          `${key.toString()}@${decorator.decoratorType} cannot be used on non-existent member.`,\r\n        )\r\n      }\r\n    }\r\n\r\n    const record = this.getRecord(key)\r\n\r\n    if (record) {\r\n      // already been made\r\n      if (record.decorator === decorator) {\r\n        // the same decorator\r\n        return\r\n      }\r\n      if (record.decorator !== decorator) {\r\n        // the different decorator\r\n        throw new Error(`property ${String(key)} already been decorated by ${record.decorator.decoratorType}`)\r\n      }\r\n    }\r\n\r\n    // have not been made\r\n    const descriptor = getDescriptor(this.target, key)\r\n    if (descriptor) {\r\n      if (!descriptor.configurable)\r\n        throw new Error(`property ${String(key)} is not configurable.`)\r\n    }\r\n    if (!descriptor)\r\n      throw new Error(`property ${String(key)} is not defined.`)\r\n\r\n    const value = decorator.make(this.target, key, descriptor)\r\n    this.setRecord(key, value, decorator)\r\n  }\r\n}\r\nexport interface IIsObservableObject {\r\n  [STORED_ADM_KEY]: ObservableObjectAdministration\r\n}\r\n\r\nexport function asObservableObject(target: any): IIsObservableObject {\r\n  return {\r\n    [STORED_ADM_KEY]: new ObservableObjectAdministration(target),\r\n  }\r\n}\r\n\r\nexport function getAdministration(target: any): Record<\r\n  PropertyKey,\r\n  {\r\n    raw: any\r\n    decorator: ReactiveDecorator\r\n  }\r\n> {\r\n  if (!hasProp(target, STORED_ADM_KEY))\r\n    addHiddenProp(target, STORED_ADM_KEY, {})\r\n\r\n  return target[STORED_ADM_KEY]\r\n}\r\n\r\n// isWatchEffect\r\n// isObservable\r\n// isComputed\r\n\r\nexport function createDecoratorTypeChecker(\r\n  checker: (decorator: ReactiveDecorator) => boolean,\r\n): {\r\n    (decorator: ReactiveDecorator): boolean\r\n    <T extends object>(target: T, key: keyof T): boolean\r\n  } {\r\n  function checkHandle<T extends object>(arg1: ReactiveDecorator | T, arg2?: keyof T): boolean {\r\n    if (isReactiveDecorator(arg1)) {\r\n      return checker(arg1)\r\n    }\r\n    if (arg2 !== undefined) {\r\n      const [target, key] = [arg1, arg2]\r\n      const records = getAdministration(target)\r\n      const decorator = records[key]?.decorator\r\n      return checkHandle(decorator)\r\n    }\r\n    return false\r\n  }\r\n\r\n  return checkHandle\r\n}\r\n","import type { EffectScope } from '@vue/reactivity'\r\nimport { effectScope } from '@vue/reactivity'\r\nimport { addHiddenProp, hasProp } from './utils'\r\n\r\nconst STORED_EFFECT_SCOPE_KEY = Symbol('VUE_REACTIVE_STORED_EFFECT_SCOPE')\r\n\r\nexport function getEffectScope(target: any): EffectScope {\r\n  if (hasProp(target, STORED_EFFECT_SCOPE_KEY))\r\n    return target[STORED_EFFECT_SCOPE_KEY]\r\n\r\n  const scope = effectScope(true)\r\n\r\n  addHiddenProp(target, STORED_EFFECT_SCOPE_KEY, scope)\r\n\r\n  return scope\r\n}\r\n","import type { ClassGetterDecorator } from './decorator-fills'\nimport { computed } from '@vue/reactivity'\nimport { createDecoratorTypeChecker } from './adm'\nimport { createDecorator, type ReactiveDecorator } from './decorator'\nimport { getEffectScope } from './effectScope'\nimport { NOOP } from './utils'\n\nconst COMPUTED = 'computed'\n\nexport const isComputed = createDecoratorTypeChecker(\n  (decorator: ReactiveDecorator) => decorator.decoratorType === COMPUTED,\n)\n\nfunction make(target: any, key: PropertyKey, descriptor: PropertyDescriptor) {\n  /**\n   * Cannot be used on static member.\n   * Can only be used on getter.\n   */\n  if (typeof target === 'function')\n    throw new Error('computed cannot be used on static member')\n\n  if (\n    descriptor == null\n    || typeof descriptor !== 'object'\n    || typeof descriptor.get !== 'function'\n  ) {\n    throw new Error('computed can only be used on getter')\n  }\n\n  const effectScope = getEffectScope(target)\n\n  const value = effectScope.run(() =>\n    computed(\n      {\n        get: descriptor.get!.bind(target),\n        set: descriptor.set?.bind(target) ?? NOOP,\n      },\n    ),\n  )!\n\n  Object.defineProperty(target, key, {\n    configurable: true,\n    enumerable: false,\n    get() {\n      return value.value\n    },\n    set: descriptor.set && (val => (value.value = val)),\n  })\n}\n\nexport const Computed = createDecorator<ClassGetterDecorator>({\n  decoratorType: COMPUTED,\n  make,\n})\n","import type { Ref, ShallowRef } from '@vue/reactivity'\r\nimport type { ReactiveDecorator } from './decorator'\r\nimport type { ClassFieldDecorator } from './decorator-fills'\r\nimport { reactive, ref, shallowReactive, shallowRef } from '@vue/reactivity'\r\nimport { createDecoratorTypeChecker } from './adm'\r\nimport { createDecorator } from './decorator'\r\n\r\nexport interface IObservableFactory extends ReactiveDecorator, PropertyDecorator, ClassFieldDecorator {\r\n  ref: ReactiveDecorator & PropertyDecorator & ClassFieldDecorator\r\n  shallowRef: ReactiveDecorator & PropertyDecorator & ClassFieldDecorator\r\n  reactive: ReactiveDecorator & PropertyDecorator & ClassFieldDecorator\r\n  shallowReactive: ReactiveDecorator & PropertyDecorator & ClassFieldDecorator\r\n}\r\n\r\ninterface CreateObservableOptions {\r\n  ref: boolean\r\n  deep: boolean\r\n}\r\n\r\nexport function createObservable(name: string, options: CreateObservableOptions): ReactiveDecorator {\r\n  return {\r\n    decoratorType: name,\r\n    make: (target: any, key: PropertyKey, descriptor: PropertyDescriptor) => make(target, key, descriptor, options),\r\n    options,\r\n  }\r\n}\r\n\r\nfunction make(target: any, key: PropertyKey, descriptor: PropertyDescriptor, options: CreateObservableOptions) {\r\n  if (\r\n    __DEV__\r\n    && (!('value' in descriptor) || typeof descriptor.value === 'function')\r\n  ) {\r\n    throw new Error(`@observable can only be used with non-function properties.`)\r\n  }\r\n\r\n  const initialValue = descriptor.value\r\n\r\n  if (options.ref === true) {\r\n    let refValue: ShallowRef | Ref\r\n\r\n    if (options.deep === true)\r\n      refValue = ref(initialValue)\r\n    else\r\n      refValue = shallowRef(initialValue)\r\n\r\n    Object.defineProperty(target, key, {\r\n      enumerable: true,\r\n      configurable: true,\r\n      get() {\r\n        return refValue.value\r\n      },\r\n      set(v: any) {\r\n        refValue.value = v\r\n      },\r\n    })\r\n  }\r\n  else {\r\n    let reactiveValue: any\r\n\r\n    if (options.deep === true)\r\n      reactiveValue = reactive(initialValue)\r\n    else\r\n      reactiveValue = shallowReactive(initialValue)\r\n\r\n    Object.defineProperty(target, key, {\r\n      enumerable: true,\r\n      configurable: true,\r\n      get() {\r\n        return reactiveValue\r\n      },\r\n      set(v: any) {\r\n        reactiveValue = v\r\n      },\r\n    })\r\n  }\r\n}\r\n\r\nconst observableDecorator = createObservable('observable', { ref: true, deep: true })\r\nconst observableShallowRefDecorator = createObservable('observable.shallowRef', { ref: true, deep: false })\r\nconst observableShallowReactiveDecorator = createObservable('observable.shallowReactive', { ref: false, deep: false })\r\nconst observableReactiveDecorator = createObservable('observable.reactive', { ref: false, deep: true })\r\n\r\nconst _observable = createDecorator(observableDecorator)\r\n\r\nconst observableFactories: IObservableFactory = {\r\n  shallowRef: createDecorator(observableShallowRefDecorator),\r\n  ref: _observable,\r\n  shallowReactive: createDecorator(observableShallowReactiveDecorator),\r\n  reactive: createDecorator(observableReactiveDecorator),\r\n} as any\r\n\r\nexport const Observable: IObservableFactory = Object.assign(_observable, observableFactories)\r\n\r\n/*\r\nConsidering two schemes:\r\n1. Using a function to create decorator type checkers for each decorator type.\r\n2. Code respectively for each decorator type\r\n\r\nexport function isObservable(decorator: ReactiveDecorator): boolean\r\nexport function isObservable<T extends object>(target: T, key: keyof T): boolean\r\n\r\nexport function isObservable<T extends object>(arg1: ReactiveDecorator | T, arg2?: keyof T): boolean {\r\n  if (isReactiveDecorator(arg1)) {\r\n    return arg1.decoratorType === 'observable'\r\n  }\r\n  if (arg2 !== undefined) {\r\n    const [target, key] = [arg1, arg2]\r\n    const records = getAdministration(target)\r\n    const decorator = records[key]?.decorator\r\n    return decorator ? isObservable(decorator) : false\r\n  }\r\n\r\n  return false\r\n}\r\n*/\r\nexport const isObservable = createDecoratorTypeChecker(\r\n  (decorator: ReactiveDecorator) => decorator.decoratorType.match(/^observable/) !== null,\r\n)\r\n","// ported from https://github.com/vuejs/core/blob/main/packages/runtime-core/src/scheduler.ts\n// and https://github.com/vue-mini/vue-mini/blob/master/packages/core/src/scheduler.ts\n\nimport { isArray, NOOP } from './utils'\n\nexport enum SchedulerJobFlags {\n  // eslint-disable-next-line ts/prefer-literal-enum-member\n  QUEUED = 1 << 0,\n  // eslint-disable-next-line ts/prefer-literal-enum-member\n  ALLOW_RECURSE = 1 << 2,\n}\n\n// eslint-disable-next-line ts/no-unsafe-function-type\nexport interface SchedulerJob extends Function {\n  id?: number\n  /**\n   * flags can technically be undefined, but it can still be used in bitwise\n   * operations just like 0.\n   */\n  flags?: SchedulerJobFlags\n}\n\nexport type SchedulerJobs = SchedulerJob | SchedulerJob[]\n\nconst queue: SchedulerJob[] = []\nlet flushIndex = -1\n\nconst pendingPostFlushCbs: SchedulerJob[] = []\nlet activePostFlushCbs: SchedulerJob[] | null = null\nlet postFlushIndex = 0\n\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve() as Promise<any>\nlet currentFlushPromise: Promise<void> | null = null\n\nconst RECURSION_LIMIT = 100\ntype CountMap = Map<SchedulerJob, number>\n\nexport function nextTick<T = void, R = void>(\n  this: T,\n  fn?: (this: T) => R,\n): Promise<Awaited<R>> {\n  const p = currentFlushPromise || resolvedPromise\n  return fn ? p.then(this ? fn.bind(this) : fn) : p\n}\n\n// 简化\nexport function queueJob(job: SchedulerJob): void {\n  // check if the job is already in the queue\n  if (!(job.flags! & SchedulerJobFlags.QUEUED)) {\n    queue.push(job)\n    // set the job as queued\n    job.flags! |= SchedulerJobFlags.QUEUED\n    queueFlush()\n  }\n}\n\nfunction queueFlush(): void {\n  if (!currentFlushPromise) {\n    currentFlushPromise = resolvedPromise.then(flushJobs)\n  }\n}\n\nexport function queuePostFlushCb(cb: SchedulerJob): void {\n  if (!isArray(cb)) {\n    if (activePostFlushCbs && cb.id === -1) {\n      activePostFlushCbs.splice(postFlushIndex + 1, 0, cb)\n    }\n    else if (!(cb.flags! & SchedulerJobFlags.QUEUED)) {\n      pendingPostFlushCbs.push(cb)\n      cb.flags! |= SchedulerJobFlags.QUEUED\n    }\n  }\n  else {\n    // if cb is an array, it is a component lifecycle hook which can only be\n    // triggered by a job, which is already deduped in the main queue, so\n    // we can skip duplicate check here to improve perf\n    pendingPostFlushCbs.push(...cb)\n  }\n  queueFlush()\n}\n\nexport function flushPostFlushCbs(seen?: CountMap): void {\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)]\n\n    // #1947 already has active queue, nested flushPostFlushCbs call\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped)\n      return\n    }\n\n    activePostFlushCbs = deduped\n\n    if (__DEV__) {\n      seen = seen || new Map()\n    }\n\n    pendingPostFlushCbs.length = 0\n\n    for (\n      postFlushIndex = 0;\n      postFlushIndex < activePostFlushCbs.length;\n      postFlushIndex++\n    ) {\n      const cb = activePostFlushCbs[postFlushIndex]\n      if (__DEV__ && checkRecursiveUpdates(seen!, cb)) {\n        continue\n      }\n      if (cb.flags! & SchedulerJobFlags.ALLOW_RECURSE) {\n        cb.flags! &= ~SchedulerJobFlags.QUEUED\n      }\n\n      // if (!(cb.flags! & SchedulerJobFlags.DISPOSED)) cb()\n      cb()\n      cb.flags! &= ~SchedulerJobFlags.QUEUED\n    }\n\n    activePostFlushCbs = null\n    postFlushIndex = 0\n  }\n}\n\nfunction flushJobs(seen?: CountMap): void {\n  /* istanbul ignore else -- @preserve  */\n  if (__DEV__) {\n    seen = seen || new Map()\n  }\n\n  // conditional usage of checkRecursiveUpdate must be determined out of\n  // try ... catch block since Rollup by default de-optimizes treeshaking\n  // inside try-catch. This can leave all warning code unshaked. Although\n  // they would get eventually shaken by a minifier like terser, some minifiers\n  // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n  const check\n    = __DEV__\n      ? (job: SchedulerJob) => checkRecursiveUpdates(seen!, job)\n      : NOOP\n\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex]\n\n      // if (job && !(job.flags! & SchedulerJobFlags.DISPOSED)) {\n      if (job) {\n        if (__DEV__ && check(job)) {\n          continue\n        }\n\n        if (job.flags! & SchedulerJobFlags.ALLOW_RECURSE) {\n          job.flags! &= ~SchedulerJobFlags.QUEUED\n        }\n\n        job()\n        if (!(job.flags! & SchedulerJobFlags.ALLOW_RECURSE)) {\n          job.flags! &= ~SchedulerJobFlags.QUEUED\n        }\n      }\n    }\n  }\n  finally {\n    // If there was an error we still need to clear the QUEUED flags\n    for (; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex]\n      if (job) {\n        job.flags! &= ~SchedulerJobFlags.QUEUED\n      }\n    }\n\n    flushIndex = -1\n    queue.length = 0\n\n    flushPostFlushCbs(seen)\n\n    currentFlushPromise = null\n\n    if (queue.length || pendingPostFlushCbs.length) {\n      flushJobs(seen)\n    }\n  }\n}\n\nfunction checkRecursiveUpdates(seen: CountMap, fn: SchedulerJob): boolean {\n  const count = seen.get(fn) || 0\n  /* istanbul ignore if -- @preserve */\n  if (count > RECURSION_LIMIT) {\n    console.warn(\n      `Maximum recursive updates exceeded. `\n      + `This means you have a reactive effect that is mutating its own `\n      + `dependencies and thus recursively triggering itself.`,\n    )\n    return true\n  }\n\n  seen.set(fn, count + 1)\n  return false\n}\n","// ported from https://github.com/vuejs/core/blob/main/packages/runtime-core/src/apiWatch.ts\n// and https://github.com/vue-mini/vue-mini/blob/master/packages/core/src/watch.ts\n\nimport type {\n  WatchOptions as BaseWatchOptions,\n  DebuggerOptions,\n  ReactiveMarker,\n  WatchCallback,\n  WatchEffect,\n  WatchHandle,\n  WatchSource,\n} from '@vue/reactivity'\nimport type { SchedulerJob } from './scheduler'\nimport { watch as baseWatch } from '@vue/reactivity'\nimport { queueJob, queuePostFlushCb, SchedulerJobFlags } from './scheduler'\nimport { isFunction } from './utils'\n\nexport type {\n  OnCleanup,\n  WatchCallback,\n  WatchEffect,\n  WatchHandle,\n  WatchSource,\n  WatchStopHandle,\n} from '@vue/reactivity'\n\ntype MaybeUndefined<T, I> = I extends true ? T | undefined : T\n\ntype MapSources<T, Immediate> = {\n  [K in keyof T]: T[K] extends WatchSource<infer V> ?\n    MaybeUndefined<V, Immediate>\n    : T[K] extends object ? MaybeUndefined<T[K], Immediate>\n      : never\n}\n\nexport interface WatchEffectOptions extends DebuggerOptions {\n  flush?: 'pre' | 'post' | 'sync'\n}\n\nexport interface WatchOptions<Immediate = boolean> extends WatchEffectOptions {\n  immediate?: Immediate\n  deep?: boolean | number\n  once?: boolean\n}\n\n// Simple effect.\nexport function watchEffect(\n  effect: WatchEffect,\n  options?: WatchEffectOptions,\n): WatchHandle {\n  return doWatch(effect, null, options)\n}\n\nexport function watchPostEffect(\n  effect: WatchEffect,\n  options?: DebuggerOptions,\n): WatchHandle {\n  return doWatch(\n    effect,\n    null,\n    __DEV__\n      ? { ...options, flush: 'post' }\n      : { flush: 'post' },\n  )\n}\n\nexport function watchSyncEffect(\n  effect: WatchEffect,\n  options?: DebuggerOptions,\n): WatchHandle {\n  return doWatch(\n    effect,\n    null,\n    __DEV__\n      ? { ...options, flush: 'sync' }\n      : { flush: 'sync' },\n  )\n}\n\nexport type MultiWatchSources = Array<WatchSource<unknown> | object>\n\n// overload: single source + cb\nexport function watch<T, Immediate extends Readonly<boolean> = false>(\n  source: WatchSource<T>,\n  cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,\n  options?: WatchOptions<Immediate>,\n): WatchHandle\n\n// overload: reactive array or tuple of multiple sources + cb\nexport function watch<\n  T extends Readonly<MultiWatchSources>,\n  Immediate extends Readonly<boolean> = false,\n>(\n  sources: readonly [...T] | T,\n  cb: [T] extends [ReactiveMarker] ?\n    WatchCallback<T, MaybeUndefined<T, Immediate>>\n    : WatchCallback<MapSources<T, false>, MapSources<T, Immediate>>,\n  options?: WatchOptions<Immediate>,\n): WatchHandle\n\n// overload: array of multiple sources + cb\nexport function watch<\n  T extends MultiWatchSources,\n  Immediate extends Readonly<boolean> = false,\n>(\n  sources: [...T],\n  cb: WatchCallback<MapSources<T, false>, MapSources<T, Immediate>>,\n  options?: WatchOptions<Immediate>,\n): WatchHandle\n\n// overload: watching reactive object w/ cb\nexport function watch<\n  T extends object,\n  Immediate extends Readonly<boolean> = false,\n>(\n  source: T,\n  cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,\n  options?: WatchOptions<Immediate>,\n): WatchHandle\n\n// implementation\nexport function watch<T = any, Immediate extends Readonly<boolean> = false>(\n  source: T | WatchSource<T>,\n  cb: any,\n  options?: WatchOptions<Immediate>,\n): WatchHandle {\n  if (__DEV__ && !isFunction(cb)) {\n    console.warn(\n      `\\`watch(fn, options?)\\` signature has been moved to a separate API. `\n      + `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only `\n      + `supports \\`watch(source, cb, options?) signature.`,\n    )\n  }\n\n  return doWatch(source as any, cb, options)\n}\n\nfunction doWatch(\n  source: WatchSource | WatchSource[] | WatchEffect | object,\n  cb: WatchCallback | null,\n  options: WatchOptions = {},\n): WatchHandle {\n  const { immediate, deep, flush, once } = options\n\n  if (__DEV__ && !cb) {\n    if (immediate !== undefined) {\n      console.warn(\n        `watch() \"immediate\" option is only respected when using the `\n        + `watch(source, callback, options?) signature.`,\n      )\n    }\n\n    if (deep !== undefined) {\n      console.warn(\n        `watch() \"deep\" option is only respected when using the `\n        + `watch(source, callback, options?) signature.`,\n      )\n    }\n\n    if (once !== undefined) {\n      console.warn(\n        `watch() \"once\" option is only respected when using the `\n        + `watch(source, callback, options?) signature.`,\n      )\n    }\n  }\n\n  const baseWatchOptions: BaseWatchOptions = { ...options }\n\n  // scheduler\n  if (flush === 'post') {\n    baseWatchOptions.scheduler = (job) => {\n      queuePostFlushCb(job)\n    }\n  }\n  else if (flush !== 'sync') {\n    baseWatchOptions.scheduler = (job, isFirstRun) => {\n      if (isFirstRun) {\n        job()\n      }\n      else {\n        queueJob(job)\n      }\n    }\n  }\n\n  // @ts-expect-error scheduler is not part of the public API\n  baseWatchOptions.augmentJob = (job: SchedulerJob) => {\n    // important: mark the job as a watcher callback so that scheduler knows\n    // it is allowed to self-trigger\n    if (cb) {\n      job.flags! |= SchedulerJobFlags.ALLOW_RECURSE\n    }\n  }\n\n  const watchHandle = baseWatch(source, cb, baseWatchOptions)\n\n  return watchHandle\n}\n","import type { WatchCallback, WatchOptions } from '@vue/reactivity'\nimport type { ClassMethodDecorator } from './decorator-fills'\nimport { createDecoratorTypeChecker } from './adm'\nimport { createDecorator, type ReactiveDecorator } from './decorator'\nimport { getEffectScope } from './effectScope'\nimport { isObservable } from './observable'\nimport { watch } from './reactivity'\n\nconst WATCH = 'watch'\n\nexport const isWatch = createDecoratorTypeChecker(\n  (decorator: ReactiveDecorator) => decorator.decoratorType === WATCH,\n)\n\ntype WatchSourceFunction<TTarget extends object, TValue> = (this: TTarget) => TValue\ntype WatchSourceProperty<TTarget, TKey extends keyof TTarget> = TKey\n\ntype DecoratorWatchSource<TTarget extends object, TKey extends keyof TTarget, Tvalue> =\n  | WatchSourceFunction<TTarget, Tvalue>\n  | WatchSourceProperty<TTarget, TKey>\n\ninterface CreateWatchOptions<TTarget extends object, TKey extends keyof TTarget, TValue> {\n  source: DecoratorWatchSource<TTarget, TKey, TValue>\n  watchOptions?: WatchOptions\n}\n\ninterface EffectDescriptor<T> extends PropertyDescriptor {\n  value?: WatchCallback<T>\n}\n\nfunction make<\n  TTarget extends object,\n  TKey extends keyof TTarget,\n  TValue,\n>(target: TTarget, key: PropertyKey, descriptor: EffectDescriptor<any>, options: CreateWatchOptions<TTarget, TKey, TValue>) {\n  if (\n    __DEV__\n    && (!('value' in descriptor) || typeof descriptor.value !== 'function')\n  ) {\n    throw new Error(`@watch can only be used with methods.`)\n  }\n  const effectScope = getEffectScope(target)\n\n  const { watchOptions } = options\n\n  const source\n  = typeof options.source === 'function'\n    ? options.source.bind(target)\n    : options.source\n\n  if (!source) {\n    throw new Error(`@watch source is not defined.`)\n  }\n\n  const callback = descriptor.value?.bind(target)\n\n  if (callback === undefined) {\n    throw new Error(`@watch callback is not defined.`)\n  }\n\n  if (typeof source == 'function') {\n    effectScope.run(() => {\n      watch(source, callback, watchOptions)\n    })\n  }\n  else if (typeof source == 'string' || typeof source == 'symbol' || typeof source == 'number') {\n    if (!(source in target)) {\n      throw new Error(`@watch source '${source.toString()}' is not defined in the target.`)\n    }\n    if (!isObservable(target, source)) {\n      throw new Error(`@watch source '${source.toString()}' is not observable.`)\n    }\n    effectScope.run(() => {\n      watch(() => target[source], callback, watchOptions)\n    })\n  }\n}\n\nfunction createWatchDecorator<\n  TTarget extends object,\n  TKey extends keyof TTarget,\n  TValue,\n>(name: string, options: CreateWatchOptions<TTarget, TKey, TValue>): ReactiveDecorator {\n  return {\n    decoratorType: name,\n    make: (target: TTarget, key: PropertyKey, descriptor: EffectDescriptor<TValue>) => make(target, key, descriptor, options),\n    options,\n  }\n}\n\nexport function Watch<\n  TTarget extends object,\n  TKey extends keyof TTarget,\n  TValue = TTarget[TKey],\n  TCallback extends WatchCallback<TValue> = WatchCallback<TValue>,\n>(source: TKey, options?: WatchOptions): ClassMethodDecorator<TTarget, TCallback>\n\nexport function Watch<\n  TTarget extends object,\n  TValue,\n  TCallback extends WatchCallback<TValue> = WatchCallback<TValue>,\n>(source: ((this: TTarget) => TValue), options?: WatchOptions): ClassMethodDecorator<TTarget, TCallback>\n\nexport function Watch<\n  TTarget extends object,\n  TKey extends keyof TTarget,\n  TValue = TTarget[TKey],\n  TCallback extends WatchCallback<TValue> = WatchCallback<TValue>,\n>(source: TKey | ((this: TTarget) => TValue), options?: WatchOptions): ClassMethodDecorator<TTarget, TCallback> {\n  return createDecorator<ClassMethodDecorator<TTarget, TCallback>>(\n    createWatchDecorator<TTarget, TKey, TValue>(\n      WATCH,\n      { source, watchOptions: options },\n    ),\n  )\n}\n","import type { ReactiveDecorator } from './decorator'\r\nimport type { ClassMethodDecorator } from './decorator-fills'\r\nimport { createDecoratorTypeChecker } from './adm'\r\nimport { createDecorator } from './decorator'\r\nimport { getEffectScope } from './effectScope'\r\nimport { watchEffect, watchSyncEffect } from './reactivity'\r\n\r\nconst WATCH_EFFECT = 'watchEffect'\r\n\r\nconst WATCH_SYNC_EFFECT = 'watchEffect.sync'\r\n\r\n// can only be used on class methods\r\n\r\ninterface CreateWatchEffectOptions {\r\n  sync: boolean\r\n}\r\n\r\nfunction createWatchEffectDecorator(name: string, options: CreateWatchEffectOptions): ReactiveDecorator {\r\n  return {\r\n    decoratorType: name,\r\n    make: (target: any, key: PropertyKey, descriptor: PropertyDescriptor) => make(target, key, descriptor, options),\r\n    options,\r\n  }\r\n}\r\n\r\nfunction make(target: any, key: PropertyKey, descriptor: PropertyDescriptor, options: CreateWatchEffectOptions) {\r\n  if (\r\n    __DEV__\r\n    && (!('value' in descriptor) || typeof descriptor.value !== 'function')\r\n  ) {\r\n    throw new Error(`@watchEffect can only be used with methods.`)\r\n  }\r\n\r\n  const effectScope = getEffectScope(target)\r\n\r\n  if (options.sync) {\r\n    effectScope.run(() => {\r\n      watchSyncEffect(descriptor.value.bind(target))\r\n    })\r\n  }\r\n  else {\r\n    effectScope.run(() => {\r\n      watchEffect(descriptor.value.bind(target))\r\n    })\r\n  }\r\n}\r\n\r\nexport const WatchEffect = createDecorator<ClassMethodDecorator>(\r\n  createWatchEffectDecorator(\r\n    WATCH_EFFECT,\r\n    { sync: false },\r\n  ),\r\n)\r\n\r\nexport const WatchSyncEffect = createDecorator<ClassMethodDecorator>(\r\n  createWatchEffectDecorator(\r\n    WATCH_SYNC_EFFECT,\r\n    { sync: true },\r\n  ),\r\n)\r\n\r\nexport const isWatchEffect = createDecoratorTypeChecker(\r\n  (decorator: ReactiveDecorator) => decorator.decoratorType.match(/^watchEffect/) !== null,\r\n)\r\n","import type { ReactiveDecorator } from './decorator'\r\nimport { asObservableObject, STORED_ADM_KEY } from './adm'\r\nimport { isComputed } from './computed'\r\nimport { isObservable } from './observable'\r\nimport { collectDecorators } from './store'\r\nimport { ownKeys } from './utils'\r\nimport { isWatch } from './watch'\r\nimport { isWatchEffect } from './watchEffect'\r\n\r\ntype DecoratorType = 'observable' | 'computed' | 'watch'\r\n\r\ninterface DecoratorRecord {\r\n  key: PropertyKey\r\n  decorator: ReactiveDecorator\r\n  type: DecoratorType\r\n}\r\n\r\nfunction getDecoratorType(decorator: ReactiveDecorator): DecoratorType | null {\r\n  if (isObservable(decorator))\r\n    return 'observable'\r\n  if (isComputed(decorator))\r\n    return 'computed'\r\n  if (isWatch(decorator) || isWatchEffect(decorator))\r\n    return 'watch'\r\n  return null\r\n}\r\n\r\nexport function makeObservable<T extends object>(target: T): T {\r\n  const decorators = collectDecorators(target)\r\n  const adm = asObservableObject(target)[STORED_ADM_KEY]\r\n\r\n  const decoratorRecords = ownKeys(decorators)\r\n    .map(key => ({\r\n      key,\r\n      decorator: decorators[key],\r\n      type: getDecoratorType(decorators[key]),\r\n    }))\r\n    .filter((record): record is DecoratorRecord => record.type !== null)\r\n    .sort((a, b) => {\r\n      const order = { observable: 0, computed: 1, watch: 2 }\r\n      return order[a.type] - order[b.type]\r\n    })\r\n\r\n  decoratorRecords.forEach(({ key, decorator }) => {\r\n    adm.make(key, decorator)\r\n  })\r\n\r\n  return target\r\n}\r\n","// runtime polyfill\nif (typeof Symbol.metadata === 'undefined') {\n  // @ts-expect-error runtime polyfill\n  Symbol.metadata = Symbol('Symbol.metadata')\n}\n\nexport {\n  IIsObservableObject,\n} from './adm'\n\nexport {\n  Computed,\n  isComputed,\n} from './computed'\n\nexport {\n  is2023Decorator,\n  isReactiveDecorator,\n  ReactiveDecorator,\n} from './decorator'\n\nexport {\n  getEffectScope,\n} from './effectScope'\n\n// export {\n//   isOverride,\n//   Override,\n// } from './override'\n\nexport {\n  makeObservable,\n} from './makeObservable'\n\nexport {\n  IObservableFactory,\n  isObservable,\n  Observable,\n} from './observable'\n\nexport {\n  OnCleanup,\n  WatchCallback,\n  WatchHandle,\n  WatchOptions,\n  WatchSource,\n  WatchStopHandle,\n} from './reactivity'\n\nexport {\n  nextTick,\n} from './scheduler'\n\nexport {\n  isWatch,\n  Watch,\n} from './watch'\n\nexport {\n  isWatchEffect,\n  WatchEffect,\n  WatchSyncEffect,\n} from './watchEffect'\n"],"names":["isOverridden","hasProp","getDecoratorType","make","baseWatch"],"mappings":"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"}