import { CompleteNotification, NextNotification, ErrorNotification } from './types'; | |
/** | |
* A completion object optimized for memory use and created to be the | |
* same "shape" as other notifications in v8. | |
* @internal | |
*/ | |
export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)(); | |
/** | |
* Internal use only. Creates an optimized error notification that is the same "shape" | |
* as other notifications. | |
* @internal | |
*/ | |
export function errorNotification(error: any): ErrorNotification { | |
return createNotification('E', undefined, error) as any; | |
} | |
/** | |
* Internal use only. Creates an optimized next notification that is the same "shape" | |
* as other notifications. | |
* @internal | |
*/ | |
export function nextNotification<T>(value: T) { | |
return createNotification('N', value, undefined) as NextNotification<T>; | |
} | |
/** | |
* Ensures that all notifications created internally have the same "shape" in v8. | |
* | |
* TODO: This is only exported to support a crazy legacy test in `groupBy`. | |
* @internal | |
*/ | |
export function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) { | |
return { | |
kind, | |
value, | |
error, | |
}; | |
} | |