summaryrefslogtreecommitdiff
path: root/src/server/api/get-params.ts
blob: e495e3ef3e12c7ba52aef0a1bf8e8e1b14f6b048 (plain)
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
27
import { Context } from 'cafy';

type Defs = {
	params: { [key: string]: Context<any> }
};

export default function <T extends Defs>(defs: T, params: any): [{
	[P in keyof T['params']]: ReturnType<T['params'][P]['get']>[0];
}, Error] {
	const x: any = {};
	let err: Error = null;
	Object.keys(defs.params).some(k => {
		const [v, e] = defs.params[k].get(params[k]);
		if (e) {
			err = e;
			return true;
		} else {
			if (v === undefined && defs.params[k].data.default) {
				x[k] = defs.params[k].data.default;
			} else {
				x[k] = v;
			}
			return false;
		}
	});
	return [x, err];
}