async-selector-kit
Version:
An opinionated API to simplify using async-selector
32 lines (29 loc) • 1.07 kB
JavaScript
var ar = n => {
const L = [];
for (let i = 1; i <= n; i++) {
L.push(i);
}
return L;
};
// prettier-ignore
function makeType (n) {
return `
export function createSubscription<${ar(n).map(i => `R${i}`).join(', ')}${n > 0 ? ', ' : ''}AsyncReturn, State, Props = undefined, DefaultValue = undefined>(params: {
onSubscribe?: (inputs: [${ar(n).map(i => `R${i}`).join(', ')}], store: Store<State>) => void;
onUnsubscribe?: (inputs: [${ar(n).map(i => `R${i}`).join(', ')}], store: Store<State>) => void;
onInputsChanged?: (current: [${ar(n).map(i => `R${i}`).join(', ')}], previous: [${ar(n).map(i => `R${i}`).join(', ')}] | null) => void;
onSelectorCalled?: (state: State) => void;
defaultValue: DefaultValue;
id?: string,
}, selectors${n > 0 ? '' : '?'}: [${ar(n).map(i => `(state: State) => R${i}`).join(', ')}]): [
(state: State) => DefaultValue,
(val: DefaultValue) => void,
(state: State) => number | null,
];
`
}
var L = [];
for (let i = 0; i < 11; i++) {
L.push(makeType(i));
}
L.join("");