summaryrefslogtreecommitdiff
path: root/src/server/api/get-params.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api/get-params.ts')
-rw-r--r--src/server/api/get-params.ts21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/server/api/get-params.ts b/src/server/api/get-params.ts
index 878f223cc3..60d038990e 100644
--- a/src/server/api/get-params.ts
+++ b/src/server/api/get-params.ts
@@ -1,27 +1,26 @@
-import { Context } from 'cafy';
+import { IEndpointMeta } from './endpoints';
-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];
+export default function <T extends IEndpointMeta>(defs: T, params: any): [{
+ [P in keyof T['params']]: T['params'][P]['transform'] extends Function
+ ? ReturnType<T['params'][P]['transform']>
+ : ReturnType<T['params'][P]['validator']['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]);
+ Object.entries(defs.params).some(([k, def]) => {
+ const [v, e] = def.validator.get(params[k]);
if (e) {
err = new Error(e.message);
err.name = 'INVALID_PARAM';
(err as any).param = k;
return true;
} else {
- if (v === undefined && defs.params[k].data.default) {
- x[k] = defs.params[k].data.default;
+ if (v === undefined && def.default) {
+ x[k] = def.default;
} else {
x[k] = v;
}
+ if (def.transform) x[k] = def.transform(x[k]);
return false;
}
});