chai-latte
Version:
Build expressive & readable fluent interface libraries.
22 lines (19 loc) • 629 B
text/typescript
import { combine } from './combine';
import { ConfigurableCallback } from './lib/ConfigurableCallback';
import { RegisteredAPI } from './register';
export interface CompiledBuilder<T> {
[key: string]: any;
__expressions: T;
__callbacks: typeof ConfigurableCallback;
};
export function compile<T extends RegisteredAPI<Function>[][]>(...expressions: T) : CompiledBuilder<T> {
const combinedExpresions = combine(...expressions) as { [key: string]: any; };
const internalAPI = {
__callbacks: ConfigurableCallback,
__expressions: expressions,
};
return {
...combinedExpresions,
...internalAPI,
};
}