import { invariant } from 'outvariant' import type { AnyHandler } from '../../experimental/handlers-controller' const kSiblingHandlers = Symbol('kSiblingHandlers') export function attachSiblingHandlers( owner: T, siblings: Array, ): T { invariant( getSiblingHandlers(owner).length === 0, 'Failed to merge handlers: the owner "%s" handler is already merged', owner.kind, ) Object.defineProperty(owner, kSiblingHandlers, { value: siblings, enumerable: false, writable: false, configurable: false, }) return owner } export function getSiblingHandlers(owner: AnyHandler): Array { return Reflect.get(owner, kSiblingHandlers) || [] }