reactivity.d.ts 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. declare type BaseTypes = string | number | boolean;
  2. declare type Builtin = Primitive | Function | Date | Error | RegExp;
  3. declare type CollectionTypes = IterableCollections | WeakCollections;
  4. export declare function computed<T>(getter: ComputedGetter<T>): ComputedRef<T>;
  5. export declare function computed<T>(options: WritableComputedOptions<T>): WritableComputedRef<T>;
  6. export declare type ComputedGetter<T> = (ctx?: any) => T;
  7. export declare interface ComputedRef<T = any> extends WritableComputedRef<T> {
  8. readonly value: T;
  9. }
  10. export declare type ComputedSetter<T> = (v: T) => void;
  11. export declare function customRef<T>(factory: CustomRefFactory<T>): Ref<T>;
  12. declare type CustomRefFactory<T> = (track: () => void, trigger: () => void) => {
  13. get: () => T;
  14. set: (value: T) => void;
  15. };
  16. export declare type DebuggerEvent = {
  17. effect: ReactiveEffect;
  18. target: object;
  19. type: TrackOpTypes | TriggerOpTypes;
  20. key: any;
  21. } & DebuggerEventExtraInfo;
  22. declare interface DebuggerEventExtraInfo {
  23. newValue?: any;
  24. oldValue?: any;
  25. oldTarget?: Map<any, any> | Set<any>;
  26. }
  27. export declare type DeepReadonly<T> = T extends Builtin ? T : T extends Map<infer K, infer V> ? ReadonlyMap<DeepReadonly<K>, DeepReadonly<V>> : T extends ReadonlyMap<infer K, infer V> ? ReadonlyMap<DeepReadonly<K>, DeepReadonly<V>> : T extends WeakMap<infer K, infer V> ? WeakMap<DeepReadonly<K>, DeepReadonly<V>> : T extends Set<infer U> ? ReadonlySet<DeepReadonly<U>> : T extends ReadonlySet<infer U> ? ReadonlySet<DeepReadonly<U>> : T extends WeakSet<infer U> ? WeakSet<DeepReadonly<U>> : T extends Promise<infer U> ? Promise<DeepReadonly<U>> : T extends {} ? {
  28. readonly [K in keyof T]: DeepReadonly<T[K]>;
  29. } : Readonly<T>;
  30. declare type Dep = Set<ReactiveEffect>;
  31. export declare function effect<T = any>(fn: () => T, options?: ReactiveEffectOptions): ReactiveEffect<T>;
  32. export declare function enableTracking(): void;
  33. export declare function isProxy(value: unknown): boolean;
  34. export declare function isReactive(value: unknown): boolean;
  35. export declare function isReadonly(value: unknown): boolean;
  36. export declare function isRef<T>(r: Ref<T> | unknown): r is Ref<T>;
  37. declare type IterableCollections = Map<any, any> | Set<any>;
  38. export declare const ITERATE_KEY: unique symbol;
  39. export declare function markRaw<T extends object>(value: T): T;
  40. export declare function pauseTracking(): void;
  41. declare type Primitive = string | number | boolean | bigint | symbol | undefined | null;
  42. export declare function proxyRefs<T extends object>(objectWithRefs: T): ShallowUnwrapRef<T>;
  43. export declare function reactive<T extends object>(target: T): UnwrapNestedRefs<T>;
  44. export declare interface ReactiveEffect<T = any> {
  45. (): T;
  46. _isEffect: true;
  47. id: number;
  48. active: boolean;
  49. raw: () => T;
  50. deps: Array<Dep>;
  51. options: ReactiveEffectOptions;
  52. allowRecurse: boolean;
  53. }
  54. export declare interface ReactiveEffectOptions {
  55. lazy?: boolean;
  56. scheduler?: (job: ReactiveEffect) => void;
  57. onTrack?: (event: DebuggerEvent) => void;
  58. onTrigger?: (event: DebuggerEvent) => void;
  59. onStop?: () => void;
  60. allowRecurse?: boolean;
  61. }
  62. export declare const enum ReactiveFlags {
  63. SKIP = "__v_skip",
  64. IS_REACTIVE = "__v_isReactive",
  65. IS_READONLY = "__v_isReadonly",
  66. RAW = "__v_raw"
  67. }
  68. export declare function readonly<T extends object>(target: T): DeepReadonly<UnwrapNestedRefs<T>>;
  69. export declare interface Ref<T = any> {
  70. value: T;
  71. /**
  72. * Type differentiator only.
  73. * We need this to be in public d.ts but don't want it to show up in IDE
  74. * autocomplete, so we use a private Symbol instead.
  75. */
  76. [RefSymbol]: true;
  77. /* Excluded from this release type: _shallow */
  78. }
  79. export declare function ref<T extends object>(value: T): T extends Ref ? T : Ref<UnwrapRef<T>>;
  80. export declare function ref<T>(value: T): Ref<UnwrapRef<T>>;
  81. export declare function ref<T = any>(): Ref<T | undefined>;
  82. declare const RefSymbol: unique symbol;
  83. /**
  84. * This is a special exported interface for other packages to declare
  85. * additional types that should bail out for ref unwrapping. For example
  86. * \@vue/runtime-dom can declare it like so in its d.ts:
  87. *
  88. * ``` ts
  89. * declare module '@vue/reactivity' {
  90. * export interface RefUnwrapBailTypes {
  91. * runtimeDOMBailTypes: Node | Window
  92. * }
  93. * }
  94. * ```
  95. *
  96. * Note that api-extractor somehow refuses to include `declare module`
  97. * augmentations in its generated d.ts, so we have to manually append them
  98. * to the final generated d.ts in our build process.
  99. */
  100. export declare interface RefUnwrapBailTypes {
  101. }
  102. export declare function resetTracking(): void;
  103. export declare function shallowReactive<T extends object>(target: T): T;
  104. export declare function shallowReadonly<T extends object>(target: T): Readonly<{
  105. [K in keyof T]: UnwrapNestedRefs<T[K]>;
  106. }>;
  107. export declare function shallowRef<T extends object>(value: T): T extends Ref ? T : Ref<T>;
  108. export declare function shallowRef<T>(value: T): Ref<T>;
  109. export declare function shallowRef<T = any>(): Ref<T | undefined>;
  110. export declare type ShallowUnwrapRef<T> = {
  111. [K in keyof T]: T[K] extends Ref<infer V> ? V : T[K];
  112. };
  113. declare function stop_2(effect: ReactiveEffect): void;
  114. export { stop_2 as stop }
  115. declare type SymbolExtract<T> = (T extends {
  116. [Symbol.asyncIterator]: infer V;
  117. } ? {
  118. [Symbol.asyncIterator]: V;
  119. } : {}) & (T extends {
  120. [Symbol.hasInstance]: infer V;
  121. } ? {
  122. [Symbol.hasInstance]: V;
  123. } : {}) & (T extends {
  124. [Symbol.isConcatSpreadable]: infer V;
  125. } ? {
  126. [Symbol.isConcatSpreadable]: V;
  127. } : {}) & (T extends {
  128. [Symbol.iterator]: infer V;
  129. } ? {
  130. [Symbol.iterator]: V;
  131. } : {}) & (T extends {
  132. [Symbol.match]: infer V;
  133. } ? {
  134. [Symbol.match]: V;
  135. } : {}) & (T extends {
  136. [Symbol.matchAll]: infer V;
  137. } ? {
  138. [Symbol.matchAll]: V;
  139. } : {}) & (T extends {
  140. [Symbol.replace]: infer V;
  141. } ? {
  142. [Symbol.replace]: V;
  143. } : {}) & (T extends {
  144. [Symbol.search]: infer V;
  145. } ? {
  146. [Symbol.search]: V;
  147. } : {}) & (T extends {
  148. [Symbol.species]: infer V;
  149. } ? {
  150. [Symbol.species]: V;
  151. } : {}) & (T extends {
  152. [Symbol.split]: infer V;
  153. } ? {
  154. [Symbol.split]: V;
  155. } : {}) & (T extends {
  156. [Symbol.toPrimitive]: infer V;
  157. } ? {
  158. [Symbol.toPrimitive]: V;
  159. } : {}) & (T extends {
  160. [Symbol.toStringTag]: infer V;
  161. } ? {
  162. [Symbol.toStringTag]: V;
  163. } : {}) & (T extends {
  164. [Symbol.unscopables]: infer V;
  165. } ? {
  166. [Symbol.unscopables]: V;
  167. } : {});
  168. export declare function toRaw<T>(observed: T): T;
  169. export declare function toRef<T extends object, K extends keyof T>(object: T, key: K): Ref<T[K]>;
  170. export declare type ToRefs<T = any> = {
  171. [K in keyof T]: Ref<T[K]>;
  172. };
  173. export declare function toRefs<T extends object>(object: T): ToRefs<T>;
  174. export declare function track(target: object, type: TrackOpTypes, key: unknown): void;
  175. export declare const enum TrackOpTypes {
  176. GET = "get",
  177. HAS = "has",
  178. ITERATE = "iterate"
  179. }
  180. export declare function trigger(target: object, type: TriggerOpTypes, key?: unknown, newValue?: unknown, oldValue?: unknown, oldTarget?: Map<unknown, unknown> | Set<unknown>): void;
  181. export declare const enum TriggerOpTypes {
  182. SET = "set",
  183. ADD = "add",
  184. DELETE = "delete",
  185. CLEAR = "clear"
  186. }
  187. export declare function triggerRef(ref: Ref): void;
  188. export declare function unref<T>(ref: T): T extends Ref<infer V> ? V : T;
  189. declare type UnwrapNestedRefs<T> = T extends Ref ? T : UnwrapRef<T>;
  190. declare type UnwrappedObject<T> = {
  191. [P in keyof T]: UnwrapRef<T[P]>;
  192. } & SymbolExtract<T>;
  193. export declare type UnwrapRef<T> = T extends Ref<infer V> ? UnwrapRefSimple<V> : UnwrapRefSimple<T>;
  194. declare type UnwrapRefSimple<T> = T extends Function | CollectionTypes | BaseTypes | Ref | RefUnwrapBailTypes[keyof RefUnwrapBailTypes] ? T : T extends Array<any> ? {
  195. [K in keyof T]: UnwrapRefSimple<T[K]>;
  196. } : T extends object ? UnwrappedObject<T> : T;
  197. declare type WeakCollections = WeakMap<any, any> | WeakSet<any>;
  198. export declare interface WritableComputedOptions<T> {
  199. get: ComputedGetter<T>;
  200. set: ComputedSetter<T>;
  201. }
  202. export declare interface WritableComputedRef<T> extends Ref<T> {
  203. readonly effect: ReactiveEffect<T>;
  204. }
  205. export { }