shared.d.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. /**
  2. * List of @babel/parser plugins that are used for template expression
  3. * transforms and SFC script transforms. By default we enable proposals slated
  4. * for ES2020. This will need to be updated as the spec moves forward.
  5. * Full list at https://babeljs.io/docs/en/next/babel-parser#plugins
  6. */
  7. export declare const babelParserDefaultPlugins: readonly ["bigInt", "optionalChaining", "nullishCoalescingOperator"];
  8. /**
  9. * @private
  10. */
  11. export declare const camelize: (str: string) => string;
  12. /**
  13. * @private
  14. */
  15. export declare const capitalize: (str: string) => string;
  16. export declare const def: (obj: object, key: string | symbol, value: any) => void;
  17. export declare const EMPTY_ARR: readonly never[];
  18. export declare const EMPTY_OBJ: {
  19. readonly [key: string]: any;
  20. };
  21. export declare function escapeHtml(string: unknown): string;
  22. export declare function escapeHtmlComment(src: string): string;
  23. export declare const extend: {
  24. <T, U>(target: T, source: U): T & U;
  25. <T_1, U_1, V>(target: T_1, source1: U_1, source2: V): T_1 & U_1 & V;
  26. <T_2, U_2, V_1, W>(target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W;
  27. (target: object, ...sources: any[]): any;
  28. };
  29. export declare function generateCodeFrame(source: string, start?: number, end?: number): string;
  30. export declare const getGlobalThis: () => any;
  31. export declare const hasChanged: (value: any, oldValue: any) => boolean;
  32. export declare const hasOwn: (val: object, key: string | symbol) => key is never;
  33. /**
  34. * @private
  35. */
  36. export declare const hyphenate: (str: string) => string;
  37. /**
  38. * Boolean attributes should be included if the value is truthy or ''.
  39. * e.g. <select multiple> compiles to { multiple: '' }
  40. */
  41. export declare function includeBooleanAttr(value: unknown): boolean;
  42. export declare const invokeArrayFns: (fns: Function[], arg?: any) => void;
  43. export declare const isArray: (arg: any) => arg is any[];
  44. /**
  45. * The full list is needed during SSR to produce the correct initial markup.
  46. */
  47. export declare const isBooleanAttr: (key: string) => boolean;
  48. export declare const isDate: (val: unknown) => val is Date;
  49. export declare const isFunction: (val: unknown) => val is Function;
  50. export declare const isGloballyWhitelisted: (key: string) => boolean;
  51. export declare const isHTMLTag: (key: string) => boolean;
  52. export declare const isIntegerKey: (key: unknown) => boolean;
  53. /**
  54. * Known attributes, this is used for stringification of runtime static nodes
  55. * so that we don't stringify bindings that cannot be set from HTML.
  56. * Don't also forget to allow `data-*` and `aria-*`!
  57. * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
  58. */
  59. export declare const isKnownHtmlAttr: (key: string) => boolean;
  60. /**
  61. * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute
  62. */
  63. export declare const isKnownSvgAttr: (key: string) => boolean;
  64. export declare const isMap: (val: unknown) => val is Map<any, any>;
  65. export declare const isModelListener: (key: string) => boolean;
  66. /**
  67. * CSS properties that accept plain numbers
  68. */
  69. export declare const isNoUnitNumericStyleProp: (key: string) => boolean;
  70. export declare const isObject: (val: unknown) => val is Record<any, any>;
  71. export declare const isOn: (key: string) => boolean;
  72. export declare const isPlainObject: (val: unknown) => val is object;
  73. export declare const isPromise: <T = any>(val: unknown) => val is Promise<T>;
  74. export declare const isReservedProp: (key: string) => boolean;
  75. export declare const isSet: (val: unknown) => val is Set<any>;
  76. export declare const isSpecialBooleanAttr: (key: string) => boolean;
  77. export declare function isSSRSafeAttrName(name: string): boolean;
  78. export declare const isString: (val: unknown) => val is string;
  79. export declare const isSVGTag: (key: string) => boolean;
  80. export declare const isSymbol: (val: unknown) => val is symbol;
  81. export declare const isVoidTag: (key: string) => boolean;
  82. export declare function looseEqual(a: any, b: any): boolean;
  83. export declare function looseIndexOf(arr: any[], val: any): number;
  84. /**
  85. * Make a map and return a function for checking if a key
  86. * is in that map.
  87. * IMPORTANT: all calls of this function must be prefixed with
  88. * \/\*#\_\_PURE\_\_\*\/
  89. * So that rollup can tree-shake them if necessary.
  90. */
  91. export declare function makeMap(str: string, expectsLowerCase?: boolean): (key: string) => boolean;
  92. /**
  93. * Always return false.
  94. */
  95. export declare const NO: () => boolean;
  96. export declare const NOOP: () => void;
  97. export declare function normalizeClass(value: unknown): string;
  98. export declare type NormalizedStyle = Record<string, string | number>;
  99. export declare function normalizeProps(props: Record<string, any> | null): Record<string, any> | null;
  100. export declare function normalizeStyle(value: unknown): NormalizedStyle | string | undefined;
  101. export declare const objectToString: () => string;
  102. export declare function parseStringStyle(cssText: string): NormalizedStyle;
  103. /**
  104. * dev only flag -> name mapping
  105. */
  106. export declare const PatchFlagNames: {
  107. [x: number]: string;
  108. };
  109. /**
  110. * Patch flags are optimization hints generated by the compiler.
  111. * when a block with dynamicChildren is encountered during diff, the algorithm
  112. * enters "optimized mode". In this mode, we know that the vdom is produced by
  113. * a render function generated by the compiler, so the algorithm only needs to
  114. * handle updates explicitly marked by these patch flags.
  115. *
  116. * Patch flags can be combined using the | bitwise operator and can be checked
  117. * using the & operator, e.g.
  118. *
  119. * ```js
  120. * const flag = TEXT | CLASS
  121. * if (flag & TEXT) { ... }
  122. * ```
  123. *
  124. * Check the `patchElement` function in '../../runtime-core/src/renderer.ts' to see how the
  125. * flags are handled during diff.
  126. */
  127. export declare const enum PatchFlags {
  128. /**
  129. * Indicates an element with dynamic textContent (children fast path)
  130. */
  131. TEXT = 1,
  132. /**
  133. * Indicates an element with dynamic class binding.
  134. */
  135. CLASS = 2,
  136. /**
  137. * Indicates an element with dynamic style
  138. * The compiler pre-compiles static string styles into static objects
  139. * + detects and hoists inline static objects
  140. * e.g. style="color: red" and :style="{ color: 'red' }" both get hoisted as
  141. * const style = { color: 'red' }
  142. * render() { return e('div', { style }) }
  143. */
  144. STYLE = 4,
  145. /**
  146. * Indicates an element that has non-class/style dynamic props.
  147. * Can also be on a component that has any dynamic props (includes
  148. * class/style). when this flag is present, the vnode also has a dynamicProps
  149. * array that contains the keys of the props that may change so the runtime
  150. * can diff them faster (without having to worry about removed props)
  151. */
  152. PROPS = 8,
  153. /**
  154. * Indicates an element with props with dynamic keys. When keys change, a full
  155. * diff is always needed to remove the old key. This flag is mutually
  156. * exclusive with CLASS, STYLE and PROPS.
  157. */
  158. FULL_PROPS = 16,
  159. /**
  160. * Indicates an element with event listeners (which need to be attached
  161. * during hydration)
  162. */
  163. HYDRATE_EVENTS = 32,
  164. /**
  165. * Indicates a fragment whose children order doesn't change.
  166. */
  167. STABLE_FRAGMENT = 64,
  168. /**
  169. * Indicates a fragment with keyed or partially keyed children
  170. */
  171. KEYED_FRAGMENT = 128,
  172. /**
  173. * Indicates a fragment with unkeyed children.
  174. */
  175. UNKEYED_FRAGMENT = 256,
  176. /**
  177. * Indicates an element that only needs non-props patching, e.g. ref or
  178. * directives (onVnodeXXX hooks). since every patched vnode checks for refs
  179. * and onVnodeXXX hooks, it simply marks the vnode so that a parent block
  180. * will track it.
  181. */
  182. NEED_PATCH = 512,
  183. /**
  184. * Indicates a component with dynamic slots (e.g. slot that references a v-for
  185. * iterated value, or dynamic slot names).
  186. * Components with this flag are always force updated.
  187. */
  188. DYNAMIC_SLOTS = 1024,
  189. /**
  190. * Indicates a fragment that was created only because the user has placed
  191. * comments at the root level of a template. This is a dev-only flag since
  192. * comments are stripped in production.
  193. */
  194. DEV_ROOT_FRAGMENT = 2048,
  195. /**
  196. * SPECIAL FLAGS -------------------------------------------------------------
  197. * Special flags are negative integers. They are never matched against using
  198. * bitwise operators (bitwise matching should only happen in branches where
  199. * patchFlag > 0), and are mutually exclusive. When checking for a special
  200. * flag, simply check patchFlag === FLAG.
  201. */
  202. /**
  203. * Indicates a hoisted static vnode. This is a hint for hydration to skip
  204. * the entire sub tree since static content never needs to be updated.
  205. */
  206. HOISTED = -1,
  207. /**
  208. * A special flag that indicates that the diffing algorithm should bail out
  209. * of optimized mode. For example, on block fragments created by renderSlot()
  210. * when encountering non-compiler generated slots (i.e. manually written
  211. * render functions, which should always be fully diffed)
  212. * OR manually cloneVNodes
  213. */
  214. BAIL = -2
  215. }
  216. export declare const propsToAttrMap: Record<string, string | undefined>;
  217. export declare const remove: <T>(arr: T[], el: T) => void;
  218. export declare const enum ShapeFlags {
  219. ELEMENT = 1,
  220. FUNCTIONAL_COMPONENT = 2,
  221. STATEFUL_COMPONENT = 4,
  222. TEXT_CHILDREN = 8,
  223. ARRAY_CHILDREN = 16,
  224. SLOTS_CHILDREN = 32,
  225. TELEPORT = 64,
  226. SUSPENSE = 128,
  227. COMPONENT_SHOULD_KEEP_ALIVE = 256,
  228. COMPONENT_KEPT_ALIVE = 512,
  229. COMPONENT = 6
  230. }
  231. export declare const enum SlotFlags {
  232. /**
  233. * Stable slots that only reference slot props or context state. The slot
  234. * can fully capture its own dependencies so when passed down the parent won't
  235. * need to force the child to update.
  236. */
  237. STABLE = 1,
  238. /**
  239. * Slots that reference scope variables (v-for or an outer slot prop), or
  240. * has conditional structure (v-if, v-for). The parent will need to force
  241. * the child to update because the slot does not fully capture its dependencies.
  242. */
  243. DYNAMIC = 2,
  244. /**
  245. * `<slot/>` being forwarded into a child component. Whether the parent needs
  246. * to update the child is dependent on what kind of slots the parent itself
  247. * received. This has to be refined at runtime, when the child's vnode
  248. * is being created (in `normalizeChildren`)
  249. */
  250. FORWARDED = 3
  251. }
  252. /**
  253. * Dev only
  254. */
  255. export declare const slotFlagsText: {
  256. 1: string;
  257. 2: string;
  258. 3: string;
  259. };
  260. export declare function stringifyStyle(styles: NormalizedStyle | string | undefined): string;
  261. /**
  262. * For converting {{ interpolation }} values to displayed strings.
  263. * @private
  264. */
  265. export declare const toDisplayString: (val: unknown) => string;
  266. /**
  267. * @private
  268. */
  269. export declare const toHandlerKey: (str: string) => string;
  270. export declare const toNumber: (val: any) => any;
  271. export declare const toRawType: (value: unknown) => string;
  272. export declare const toTypeString: (value: unknown) => string;
  273. export { }