18 lines
660 B
Plaintext
18 lines
660 B
Plaintext
/**
|
|
* A utility type for choosing between synchronous and asynchronous return
|
|
* values.
|
|
*
|
|
* This is used as the return value for plugins like {@link CustomFunction},
|
|
* {@link Importer}, and {@link FileImporter} so that TypeScript enforces that
|
|
* asynchronous plugins are only passed to {@link compileAsync} and {@link
|
|
* compileStringAsync}, not {@link compile} or {@link compileString}.
|
|
*
|
|
* @typeParam sync - If this is `'sync'`, this can only be a `T`. If it's
|
|
* `'async'`, this can be either a `T` or a `Promise<T>`.
|
|
*
|
|
* @category Other
|
|
*/
|
|
export type PromiseOr<T, sync extends 'sync' | 'async'> = sync extends 'async'
|
|
? T | Promise<T>
|
|
: T;
|