@voiceflow/common
Version:
Junk drawer of utility functions
18 lines (17 loc) • 783 B
JavaScript
import { actionCreatorFactory } from 'typescript-fsa';
export const createAction = actionCreatorFactory();
export const createAsyncAction = (type, commonMeta) => createAction.async(type, commonMeta);
export const typeFactory = (...parts) => (name) => [...parts, name].join('.');
export class Channel {
constructor(variables, build) {
this.variables = variables;
this.build = build;
}
buildMatcher() {
return this.build(this.variables.reduce((acc, key) => Object.assign(acc, { [key]: `:${key}` }), {}));
}
extend(variables, build) {
return new Channel([...this.variables, ...variables], (params) => `${this.build(params)}/${build(params)}`);
}
}
export const createChannel = (variables, build) => new Channel(variables, build);