const MoveType = {
    ENTER: 'ENTER',
    LEAVE: 'LEAVE',
    REORDER: 'REORDER'
}

const ShapeFlags = {
    ELEMENT : 1,
    FUNCTIONAL_COMPONENT : 1 << 1,
    STATEFUL_COMPONENT : 1 << 2,
    TEXT_CHILDREN : 1 << 3,
    ARRAY_CHILDREN : 1 << 4,
    SLOTS_CHILDREN : 1 << 5,
    TELEPORT : 1 << 6,
    SUSPENSE : 1 << 7,
    COMPONENT_SHOULD_KEEP_ALIVE : 1 << 8,
    COMPONENT_KEPT_ALIVE : 1 << 9,
}
ShapeFlags.COMPONENT = ShapeFlags.STATEFUL_COMPONENT | ShapeFlags.FUNCTIONAL_COMPONENT


const ErrorCodes = {
    SETUP_FUNCTION: 'SETUP_FUNCTION',
    RENDER_FUNCTION: 'RENDER_FUNCTION',
    WATCH_GETTER: 'WATCH_GETTER',
    WATCH_CALLBACK: 'WATCH_CALLBACK',
    WATCH_CLEANUP: 'WATCH_CLEANUP',
    NATIVE_EVENT_HANDLER: 'NATIVE_EVENT_HANDLER',
    COMPONENT_EVENT_HANDLER: 'COMPONENT_EVENT_HANDLER',
    VNODE_HOOK: 'VNODE_HOOK',
    DIRECTIVE_HOOK: 'DIRECTIVE_HOOK',
    TRANSITION_HOOK: 'TRANSITION_HOOK',
    APP_ERROR_HANDLER: 'APP_ERROR_HANDLER',
    APP_WARN_HANDLER: 'APP_WARN_HANDLER',
    FUNCTION_REF: 'FUNCTION_REF',
    ASYNC_COMPONENT_LOADER: 'ASYNC_COMPONENT_LOADER',
    SCHEDULER: 'SCHEDULER'
  }

  const LifecycleHooks = {
    BEFORE_CREATE : 'bc',
    CREATED : 'c',
    BEFORE_MOUNT : 'bm',
    MOUNTED : 'm',
    BEFORE_UPDATE : 'bu',
    UPDATED : 'u',
    BEFORE_UNMOUNT : 'bum',
    UNMOUNTED : 'um',
    DEACTIVATED : 'da',
    ACTIVATED : 'a',
    RENDER_TRIGGERED : 'rtg',
    RENDER_TRACKED : 'rtc',
    ERROR_CAPTURED : 'ec',
    SERVER_PREFETCH : 'sp'
  }

export {
    MoveType,
    ShapeFlags,
    ErrorCodes,
    LifecycleHooks
}