UNPKG

amocrm-client

Version:
46 lines (37 loc) 1.38 kB
import { Transform, TransformFnParams } from 'class-transformer'; import moment from 'moment'; import { ResourceCollection } from './api/ResourceCollection'; export const delay = (ms: number) => new Promise( resolve => setTimeout(resolve, ms) ); /* eslint-disable @typescript-eslint/no-explicit-any */ export function applyMixins(baseClass: any, mixins: any[]) { return mixins.reduce((target, mixin) => { return mixin(target); }, baseClass); } export function DateType(): PropertyDecorator { return (target: any, key: string | symbol) => { Transform( ({ value }: TransformFnParams) => value ? new Date(value * 1000) : null, { toClassOnly: true } )(target, key); Transform( ({ value }: TransformFnParams) => value ? Math.floor(value.getTime() / 1000) : null, { toPlainOnly: true } )(target, key); }; } export function CollectionType(): PropertyDecorator { return (target: any, key: string | symbol) => { Transform( ({ value }: TransformFnParams) => new ResourceCollection(value), { toClassOnly: true } )(target, key); Transform( ({ value }: TransformFnParams) => value.all(), { toPlainOnly: true } )(target, key); }; }