Все уже придумали до нас, просто возьмите в npm