-
Notifications
You must be signed in to change notification settings - Fork 13
/
mixins.ts
26 lines (22 loc) · 855 Bytes
/
mixins.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* eslint-disable max-classes-per-file */
import { RepoConfig, InputType } from '@terascope/data-mate';
import { InputOutputCardinality } from '../../interfaces';
export const OneToOneMixin = (Base: any) => class extends Base {
static cardinality: InputOutputCardinality = 'one-to-one';
};
export const ManyToOneMixin = (Base: any) => class extends Base {
static cardinality: InputOutputCardinality = 'many-to-one';
};
export const InjectMethod = (Base: any, fn: any, config: RepoConfig) => class extends Base {
_repoConfig = config;
inputIsArray = config.primary_input_type === InputType.Array;
method(...args: any[]) {
return fn(...args);
}
};
export const OverrideConfig = (Base: any, fn: any) => class extends Base {
constructor(obj: any) {
const newConfig = fn(obj);
super(newConfig);
}
};