/** * Make a map and return a function for checking if a key * is in that map. * IMPORTANT: all calls of this function must be prefixed with * \/\*#\_\_PURE\_\_\*\/ * So that rollup can tree-shake them if necessary. */ /*! #__NO_SIDE_EFFECTS__ */ export declare function makeMap(str: string): (key: string) => boolean; export declare const EMPTY_OBJ: { readonly [key: string]: any; }; export declare const EMPTY_ARR: readonly never[]; export declare const NOOP: () => void; /** * Always return false. */ export declare const NO: () => boolean; export declare const isOn: (key: string) => boolean; export declare const isModelListener: (key: string) => key is `onUpdate:${string}`; export declare const extend: typeof Object.assign; export declare const remove: (arr: T[], el: T) => void; export declare const hasOwn: (val: object, key: string | symbol) => key is keyof typeof val; export declare const isArray: typeof Array.isArray; export declare const isMap: (val: unknown) => val is Map; export declare const isSet: (val: unknown) => val is Set; export declare const isDate: (val: unknown) => val is Date; export declare const isRegExp: (val: unknown) => val is RegExp; export declare const isFunction: (val: unknown) => val is Function; export declare const isString: (val: unknown) => val is string; export declare const isSymbol: (val: unknown) => val is symbol; export declare const isObject: (val: unknown) => val is Record; export declare const isPromise: (val: unknown) => val is Promise; export declare const objectToString: typeof Object.prototype.toString; export declare const toTypeString: (value: unknown) => string; export declare const toRawType: (value: unknown) => string; export declare const isPlainObject: (val: unknown) => val is object; export declare const isIntegerKey: (key: unknown) => boolean; export declare const isReservedProp: (key: string) => boolean; export declare const isBuiltInDirective: (key: string) => boolean; /** * @private */ export declare const camelize: (str: string) => string; /** * @private */ export declare const hyphenate: (str: string) => string; /** * @private */ export declare const capitalize: (str: T) => Capitalize; /** * @private */ export declare const toHandlerKey: (str: T) => T extends '' ? '' : `on${Capitalize}`; export declare const hasChanged: (value: any, oldValue: any) => boolean; export declare const invokeArrayFns: (fns: Function[], ...arg: any[]) => void; export declare const def: (obj: object, key: string | symbol, value: any, writable?: boolean) => void; /** * "123-foo" will be parsed to 123 * This is used for the .number modifier in v-model */ export declare const looseToNumber: (val: any) => any; /** * Only concerns number-like strings * "123-foo" will be returned as-is */ export declare const toNumber: (val: any) => any; export declare const getGlobalThis: () => any; export declare function genPropsAccessExp(name: string): string; /** * Patch flags are optimization hints generated by the compiler. * when a block with dynamicChildren is encountered during diff, the algorithm * enters "optimized mode". In this mode, we know that the vdom is produced by * a render function generated by the compiler, so the algorithm only needs to * handle updates explicitly marked by these patch flags. * * Patch flags can be combined using the | bitwise operator and can be checked * using the & operator, e.g. * * ```js * const flag = TEXT | CLASS * if (flag & TEXT) { ... } * ``` * * Check the `patchElement` function in '../../runtime-core/src/renderer.ts' to see how the * flags are handled during diff. */ export declare enum PatchFlags { /** * Indicates an element with dynamic textContent (children fast path) */ TEXT = 1, /** * Indicates an element with dynamic class binding. */ CLASS = 2, /** * Indicates an element with dynamic style * The compiler pre-compiles static string styles into static objects * + detects and hoists inline static objects * e.g. `style="color: red"` and `:style="{ color: 'red' }"` both get hoisted * as: * ```js * const style = { color: 'red' } * render() { return e('div', { style }) } * ``` */ STYLE = 4, /** * Indicates an element that has non-class/style dynamic props. * Can also be on a component that has any dynamic props (includes * class/style). when this flag is present, the vnode also has a dynamicProps * array that contains the keys of the props that may change so the runtime * can diff them faster (without having to worry about removed props) */ PROPS = 8, /** * Indicates an element with props with dynamic keys. When keys change, a full * diff is always needed to remove the old key. This flag is mutually * exclusive with CLASS, STYLE and PROPS. */ FULL_PROPS = 16, /** * Indicates an element that requires props hydration * (but not necessarily patching) * e.g. event listeners & v-bind with prop modifier */ NEED_HYDRATION = 32, /** * Indicates a fragment whose children order doesn't change. */ STABLE_FRAGMENT = 64, /** * Indicates a fragment with keyed or partially keyed children */ KEYED_FRAGMENT = 128, /** * Indicates a fragment with unkeyed children. */ UNKEYED_FRAGMENT = 256, /** * Indicates an element that only needs non-props patching, e.g. ref or * directives (onVnodeXXX hooks). since every patched vnode checks for refs * and onVnodeXXX hooks, it simply marks the vnode so that a parent block * will track it. */ NEED_PATCH = 512, /** * Indicates a component with dynamic slots (e.g. slot that references a v-for * iterated value, or dynamic slot names). * Components with this flag are always force updated. */ DYNAMIC_SLOTS = 1024, /** * Indicates a fragment that was created only because the user has placed * comments at the root level of a template. This is a dev-only flag since * comments are stripped in production. */ DEV_ROOT_FRAGMENT = 2048, /** * SPECIAL FLAGS ------------------------------------------------------------- * Special flags are negative integers. They are never matched against using * bitwise operators (bitwise matching should only happen in branches where * patchFlag > 0), and are mutually exclusive. When checking for a special * flag, simply check patchFlag === FLAG. */ /** * Indicates a cached static vnode. This is also a hint for hydration to skip * the entire sub tree since static content never needs to be updated. */ CACHED = -1, /** * A special flag that indicates that the diffing algorithm should bail out * of optimized mode. For example, on block fragments created by renderSlot() * when encountering non-compiler generated slots (i.e. manually written * render functions, which should always be fully diffed) * OR manually cloneVNodes */ BAIL = -2 } /** * dev only flag -> name mapping */ export declare const PatchFlagNames: Record; export declare enum ShapeFlags { ELEMENT = 1, FUNCTIONAL_COMPONENT = 2, STATEFUL_COMPONENT = 4, TEXT_CHILDREN = 8, ARRAY_CHILDREN = 16, SLOTS_CHILDREN = 32, TELEPORT = 64, SUSPENSE = 128, COMPONENT_SHOULD_KEEP_ALIVE = 256, COMPONENT_KEPT_ALIVE = 512, COMPONENT = 6 } export declare enum SlotFlags { /** * Stable slots that only reference slot props or context state. The slot * can fully capture its own dependencies so when passed down the parent won't * need to force the child to update. */ STABLE = 1, /** * Slots that reference scope variables (v-for or an outer slot prop), or * has conditional structure (v-if, v-for). The parent will need to force * the child to update because the slot does not fully capture its dependencies. */ DYNAMIC = 2, /** * `` being forwarded into a child component. Whether the parent needs * to update the child is dependent on what kind of slots the parent itself * received. This has to be refined at runtime, when the child's vnode * is being created (in `normalizeChildren`) */ FORWARDED = 3 } /** * Dev only */ export declare const slotFlagsText: Record; export declare const isGloballyAllowed: (key: string) => boolean; /** @deprecated use `isGloballyAllowed` instead */ export declare const isGloballyWhitelisted: (key: string) => boolean; export declare function generateCodeFrame(source: string, start?: number, end?: number): string; export type NormalizedStyle = Record; export declare function normalizeStyle(value: unknown): NormalizedStyle | string | undefined; export declare function parseStringStyle(cssText: string): NormalizedStyle; export declare function stringifyStyle(styles: NormalizedStyle | string | undefined): string; export declare function normalizeClass(value: unknown): string; export declare function normalizeProps(props: Record | null): Record | null; /** * Compiler only. * Do NOT use in runtime code paths unless behind `__DEV__` flag. */ export declare const isHTMLTag: (key: string) => boolean; /** * Compiler only. * Do NOT use in runtime code paths unless behind `__DEV__` flag. */ export declare const isSVGTag: (key: string) => boolean; /** * Compiler only. * Do NOT use in runtime code paths unless behind `__DEV__` flag. */ export declare const isMathMLTag: (key: string) => boolean; /** * Compiler only. * Do NOT use in runtime code paths unless behind `__DEV__` flag. */ export declare const isVoidTag: (key: string) => boolean; export declare const isSpecialBooleanAttr: (key: string) => boolean; /** * The full list is needed during SSR to produce the correct initial markup. */ export declare const isBooleanAttr: (key: string) => boolean; /** * Boolean attributes should be included if the value is truthy or ''. * e.g. `