1 | # LSK.js – bots-provider-vk
|
2 |
|
3 | > @lskjs/bots-provider-vk – LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation
|
4 |
|
5 | [![LSK logo](https://badgen.net/badge/icon/MADE%20BY%20LSK?icon=zeit\&label\&color=red\&labelColor=red)](https://github.com/lskjs)
|
6 | [![NPM version](https://badgen.net/npm/v/@lskjs/bots-provider-vk)](https://www.npmjs.com/package/@lskjs/bots-provider-vk)
|
7 | [![NPM downloads](https://badgen.net/npm/dt/@lskjs/bots-provider-vk)](https://www.npmjs.com/package/@lskjs/bots-provider-vk)
|
8 | [![NPM Dependency count](https://badgen.net/bundlephobia/dependency-count/@lskjs/bots-provider-vk)](https://bundlephobia.com/result?p=@lskjs/bots-provider-vk)
|
9 | [![Have TypeScript types](https://badgen.net/npm/types/@lskjs/bots-provider-vk)](https://www.npmjs.com/package/@lskjs/bots-provider-vk)
|
10 | [![Have tree shaking](https://badgen.net/bundlephobia/tree-shaking/@lskjs/bots-provider-vk)](https://bundlephobia.com/result?p=@lskjs/bots-provider-vk)
|
11 | [![NPM Package size](https://badgen.net/bundlephobia/minzip/@lskjs/bots-provider-vk)](https://bundlephobia.com/result?p=@lskjs/bots-provider-vk)
|
12 | [![Package size](https://badgen.net//github/license/lskjs/lskjs)](https://github.com/lskjs/lskjs/blob/master/LICENSE)
|
13 | [![Ask us in Telegram](https://img.shields.io/badge/Ask%20us%20in-Telegram-brightblue.svg)](https://t.me/lskjschat)
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | ***
|
20 |
|
21 |
|
22 |
|
23 | # Table of contents
|
24 |
|
25 | * [⌨️ Install](#️-install)
|
26 |
|
27 | * [First principles](#first-principles)
|
28 | * [Манифест](#манифест)
|
29 | * [Вопросы на которые стоит ответить создателю:](#вопросы-на-которые-стоит-ответить-создателю)
|
30 | * [Как запускать любой lsk-образный проект](#как-запускать-любой-lsk-образный-проект)
|
31 | * [Packages included in this repo](#packages-included-in-this-repo)
|
32 |
|
33 | * [Auth](#auth)
|
34 |
|
35 | * [Bunyan log levels](#bunyan-log-levels)
|
36 |
|
37 | * * [Log levels](#log-levels)
|
38 |
|
39 | * [Что еще нужно дописать](#что-еще-нужно-дописать)
|
40 |
|
41 | * [Getting Started](#getting-started)
|
42 |
|
43 | * [Requirements](#requirements)
|
44 |
|
45 | * [Структура проекта](#структура-проекта)
|
46 |
|
47 | * [Quick Start](#quick-start)
|
48 |
|
49 | * [1. Get the latest version](#1-get-the-latest-version)
|
50 | * [2. Run `npm install`](#2-run-npm-install)
|
51 | * [3. Run `npm start`](#3-run-npm-start)
|
52 |
|
53 | * [How to Build, Test, Deploy](#how-to-build-test-deploy)
|
54 |
|
55 | * [How to Update](#how-to-update)
|
56 |
|
57 | * [📖 License](#-license)
|
58 |
|
59 | * [👥 Contributors](#-contributors)
|
60 |
|
61 | * [👏 Contributing](#-contributing)
|
62 |
|
63 | * [📮 Any questions? Always welcome :)](#-any-questions-always-welcome-)
|
64 |
|
65 | # ⌨️ Install
|
66 |
|
67 | ```sh
|
68 | # yarn
|
69 | yarn i @lskjs/bots-provider-vk lodash
|
70 |
|
71 | # npm
|
72 | npm i @lskjs/bots-provider-vk lodash
|
73 | ```
|
74 |
|
75 | ***
|
76 |
|
77 | ## First principles
|
78 |
|
79 | * Асинхронность все везде
|
80 | * Ленивость всех операций
|
81 | * Декларативный подход для конечного программиста
|
82 |
|
83 | ## Манифест
|
84 |
|
85 | Стандарт бы и 5 лет назад, но авангардисты JS создали coffescript, babel и ts, потому что JS окостенел и не двигался. Так же как и ВКшники написали свой KPHP.
|
86 |
|
87 | В этом пути нет ничего постыдного, то что еще вчера считалось ебанистикой, завтра может захватить умы своим удобством.
|
88 |
|
89 | У меня нет априорной аппеляции к авторитетам из ECMA.
|
90 |
|
91 | Я делаю среду комфортную для конечного программиста, который делает продукт для клиента.
|
92 | Если стандарт позволяет написать удобное решение — то придумаем как.
|
93 | Если для этого придется переписать стандарт — значит перепишем.
|
94 | Благо babel максимальным образом позволяет писать собственные диалекты.
|
95 |
|
96 | Не задача должна прогибаться под решением, а решение под задачу.
|
97 |
|
98 | ## Вопросы на которые стоит ответить создателю:
|
99 |
|
100 | * Пример Api на бэке handler
|
101 | * Пример функции и как ее переопределить
|
102 | * Модели монго как подключить
|
103 | * Как достать, когда пишешь Api
|
104 | * Роутер добавление роута и страницы
|
105 | * CrudApi основные методы
|
106 | * Как оборачивать ответ сервера, чтобы вернулся объект
|
107 | * Как сделать свой стор
|
108 | * Как достать стор на странице
|
109 |
|
110 | ## Как запускать любой lsk-образный проект
|
111 |
|
112 | 1. git clone `repo`
|
113 | 2. npm install
|
114 | 3. npm run bootstrap
|
115 | 4.
|
116 |
|
117 | * copy .env.js if needed
|
118 | * npm run dev *or*
|
119 | * cd packages/`package` && npm run dev
|
120 |
|
121 | ## Packages included in this repo
|
122 |
|
123 | | Package | Description | Activity | Version | Bundle | <nobr>Package Size</nobr>
|
124 | | -------------------- | --------------- | -------- | ------- | ------ | -------------------------
|
125 | | [apiquery](packages/apiquery) | http/s + websockets api client for Web, Node.js and React Native throw fetch or axios | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/apiquery.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/apiquery) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/apiquery.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/apiquery) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/apiquery?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/apiquery) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/apiquery)](https://packagephobia.now.sh/result?p=@lskjs/apiquery)
|
126 | | [apm](packages/apm) | LSK.js – apm – module Node.js agent for Elastic APM | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/apm.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/apm) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/apm.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/apm) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/apm?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/apm) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/apm)](https://packagephobia.now.sh/result?p=@lskjs/apm)
|
127 | | [auth](packages/auth) | LSK.js – auth – module for authorization by login and password and singup through social networks | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/auth.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/auth) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/auth.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/auth) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/auth?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/auth) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/auth)](https://packagephobia.now.sh/result?p=@lskjs/auth)
|
128 | | [autobind](packages/autobind) | LSK ux subrepo: autobind | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/autobind.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/autobind) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/autobind.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/autobind) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/autobind?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/autobind) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/autobind)](https://packagephobia.now.sh/result?p=@lskjs/autobind)
|
129 | | [billing](packages/billing) | LSK.js module for adding billing in cabinet | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/billing.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/billing) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/billing.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/billing) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/billing?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/billing) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/billing)](https://packagephobia.now.sh/result?p=@lskjs/billing)
|
130 | | [bots](packages/bots) | LSK.js module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots)](https://packagephobia.now.sh/result?p=@lskjs/bots)
|
131 | | [bots-base](packages/bots-base) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-base.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-base) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-base.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-base) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-base?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-base) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-base)](https://packagephobia.now.sh/result?p=@lskjs/bots-base)
|
132 | | [bots-plugin](packages/bots-plugin) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin)
|
133 | | [bots-plugin-debug](packages/bots-plugin-debug) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-debug.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-debug) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-debug.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-debug) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-debug?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-debug) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-debug)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-debug)
|
134 | | [bots-plugin-menu](packages/bots-plugin-menu) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-menu.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-menu) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-menu.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-menu) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-menu?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-menu) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-menu)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-menu)
|
135 | | [bots-plugin-notify](packages/bots-plugin-notify) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-notify.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-notify) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-notify.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-notify) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-notify?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-notify) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-notify)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-notify)
|
136 | | [bots-plugin-polundra](packages/bots-plugin-polundra) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-polundra.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-polundra) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-polundra.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-polundra) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-polundra?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-polundra) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-polundra)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-polundra)
|
137 | | [bots-plugin-portal](packages/bots-plugin-portal) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-plugin-portal.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-portal) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-plugin-portal.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-plugin-portal) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-plugin-portal?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-plugin-portal) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-plugin-portal)](https://packagephobia.now.sh/result?p=@lskjs/bots-plugin-portal)
|
138 | | [bots-provider](packages/bots-provider) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider)
|
139 | | [bots-provider-clubhouse](packages/bots-provider-clubhouse) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-clubhouse.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-clubhouse) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-clubhouse.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-clubhouse) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-clubhouse?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-clubhouse) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-clubhouse)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-clubhouse)
|
140 | | [bots-provider-discord](packages/bots-provider-discord) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-discord.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-discord) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-discord.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-discord) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-discord?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-discord) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-discord)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-discord)
|
141 | | [bots-provider-instagram](packages/bots-provider-instagram) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-instagram.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-instagram) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-instagram.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-instagram) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-instagram?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-instagram) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-instagram)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-instagram)
|
142 | | [bots-provider-slack](packages/bots-provider-slack) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-slack.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-slack) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-slack.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-slack) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-slack?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-slack) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-slack)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-slack)
|
143 | | [bots-provider-telegram](packages/bots-provider-telegram) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-telegram.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-telegram) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-telegram.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-telegram) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-telegram?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-telegram) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-telegram)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-telegram)
|
144 | | [bots-provider-twitter](packages/bots-provider-twitter) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-twitter.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-twitter) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-twitter.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-twitter) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-twitter?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-twitter) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-twitter)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-twitter)
|
145 | | [bots-provider-vk](packages/bots-provider-vk) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-vk.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-vk) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-vk.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-vk) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-vk?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-vk) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-vk)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-vk)
|
146 | | [bots-provider-whatsapp](packages/bots-provider-whatsapp) | LSK.js plugin for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-provider-whatsapp.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-whatsapp) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-provider-whatsapp.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-provider-whatsapp) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-provider-whatsapp?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-provider-whatsapp) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-provider-whatsapp)](https://packagephobia.now.sh/result?p=@lskjs/bots-provider-whatsapp)
|
147 | | [bots-router](packages/bots-router) | LSK.js router for @lskjs/bots module for telegram, slack, discord, whatsapp, twitter, instagram and vk bots creation | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bots-router.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-router) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bots-router.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bots-router) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bots-router?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bots-router) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bots-router)](https://packagephobia.now.sh/result?p=@lskjs/bots-router)
|
148 | | [build-locales](packages/build-locales) | CLI for build i18 locales from Google spreadsheet | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/build-locales.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/build-locales) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/build-locales.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/build-locales) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/build-locales?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/build-locales) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/build-locales)](https://packagephobia.now.sh/result?p=@lskjs/build-locales)
|
149 | | [bunyan](packages/bunyan) | Light weight bunyan logger for a JSON logging library for node.js services without dtrace | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/bunyan.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bunyan) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/bunyan.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/bunyan) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/bunyan?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/bunyan) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/bunyan)](https://packagephobia.now.sh/result?p=@lskjs/bunyan)
|
150 | | [config](packages/config) | LSK config. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/config.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/config) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/config.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/config) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/config?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/config) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/config)](https://packagephobia.now.sh/result?p=@lskjs/config)
|
151 | | [db](packages/db) | LSK.js module for working with mongodb database | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/db.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/db) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/db.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/db) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/db?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/db) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/db)](https://packagephobia.now.sh/result?p=@lskjs/db)
|
152 | | [elastic](packages/elastic) | LSK.js module for elastic search | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/elastic.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/elastic) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/elastic.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/elastic) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/elastic?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/elastic) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/elastic)](https://packagephobia.now.sh/result?p=@lskjs/elastic)
|
153 | | [event](packages/event) | LSK module for event. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/event.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/event) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/event.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/event) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/event?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/event) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/event)](https://packagephobia.now.sh/result?p=@lskjs/event)
|
154 | | [getspreadsheet](packages/getspreadsheet) | LSK getspreadsheet. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/getspreadsheet.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/getspreadsheet) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/getspreadsheet.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/getspreadsheet) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/getspreadsheet?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/getspreadsheet) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/getspreadsheet)](https://packagephobia.now.sh/result?p=@lskjs/getspreadsheet)
|
155 | | [grant](packages/grant) | LSK module for grant. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/grant.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/grant) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/grant.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/grant) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/grant?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/grant) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/grant)](https://packagephobia.now.sh/result?p=@lskjs/grant)
|
156 | | [i18](packages/i18) | LSK module for internationalization with i18next. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/i18.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/i18) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/i18.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/i18) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/i18?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/i18) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/i18)](https://packagephobia.now.sh/result?p=@lskjs/i18)
|
157 | | [kafka](packages/kafka) | LSK module for kafka. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/kafka.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/kafka) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/kafka.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/kafka) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/kafka?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/kafka) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/kafka)](https://packagephobia.now.sh/result?p=@lskjs/kafka)
|
158 | | [launcher](packages/launcher) | LSK Launcher. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/launcher.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/launcher) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/launcher.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/launcher) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/launcher?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/launcher) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/launcher)](https://packagephobia.now.sh/result?p=@lskjs/launcher)
|
159 | | [linkall](packages/linkall) | LSK link all. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/linkall.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/linkall) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/linkall.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/linkall) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/linkall?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/linkall) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/linkall)](https://packagephobia.now.sh/result?p=@lskjs/linkall)
|
160 | | [log](packages/log) | LSK log. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/log.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/log) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/log.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/log) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/log?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/log) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/log)](https://packagephobia.now.sh/result?p=@lskjs/log)
|
161 | | [log](packages/log) | Логгер совмещающий лучшие черты morgan, winston, bunyan, logrus. debug. Базируется на debug-level. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/log.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/log) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/log.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/log) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/log?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/log) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/log)](https://packagephobia.now.sh/result?p=@lskjs/log)
|
162 | | [mailer](packages/mailer) | LSK module for send and receive emails. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/mailer.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/mailer) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/mailer.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/mailer) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/mailer?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/mailer) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/mailer)](https://packagephobia.now.sh/result?p=@lskjs/mailer)
|
163 | | [mobx](packages/mobx) | LSK module for mobx. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/mobx.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/mobx) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/mobx.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/mobx) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/mobx?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/mobx) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/mobx)](https://packagephobia.now.sh/result?p=@lskjs/mobx)
|
164 | | [module](packages/module) | Module system with dependency injection, event emitter, logger and submodules tree | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/module.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/module) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/module.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/module) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/module?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/module) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/module)](https://packagephobia.now.sh/result?p=@lskjs/module)
|
165 | | [permit](packages/permit) | LSK module for one time codes and permits. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/permit.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/permit) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/permit.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/permit) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/permit?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/permit) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/permit)](https://packagephobia.now.sh/result?p=@lskjs/permit)
|
166 | | [proxy](packages/proxy) | LSK module for proxy. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/proxy.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/proxy) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/proxy.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/proxy) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/proxy?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/proxy) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/proxy)](https://packagephobia.now.sh/result?p=@lskjs/proxy)
|
167 | | [rabbit](packages/rabbit) | LSK module for rabbit. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/rabbit.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/rabbit) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/rabbit.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/rabbit) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/rabbit?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/rabbit) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/rabbit)](https://packagephobia.now.sh/result?p=@lskjs/rabbit)
|
168 | | [reactapp](packages/reactapp) | LSK ux subrepo: reactapp | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/reactapp.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/reactapp) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/reactapp.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/reactapp) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/reactapp?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/reactapp) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/reactapp)](https://packagephobia.now.sh/result?p=@lskjs/reactapp)
|
169 | | [rlog](packages/rlog) | LSK module for remote logger. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/rlog.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/rlog) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/rlog.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/rlog) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/rlog?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/rlog) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/rlog)](https://packagephobia.now.sh/result?p=@lskjs/rlog)
|
170 | | [scylla](packages/scylla) | LSK module for scylla. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/scylla.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/scylla) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/scylla.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/scylla) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/scylla?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/scylla) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/scylla)](https://packagephobia.now.sh/result?p=@lskjs/scylla)
|
171 | | [sequelize](packages/sequelize) | LSK module for sequelize. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/sequelize.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/sequelize) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/sequelize.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/sequelize) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/sequelize?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/sequelize) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/sequelize)](https://packagephobia.now.sh/result?p=@lskjs/sequelize)
|
172 | | [server](packages/server) | LSK server. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/server.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/server) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/server.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/server) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/server?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/server) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/server)](https://packagephobia.now.sh/result?p=@lskjs/server)
|
173 | | [server-api](packages/server-api) | LSK server-api. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/server-api.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/server-api) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/server-api.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/server-api) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/server-api?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/server-api) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/server-api)](https://packagephobia.now.sh/result?p=@lskjs/server-api)
|
174 | | [sh](packages/sh) | LSK ux subrepo: sh | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/sh.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/sh) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/sh.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/sh) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/sh?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/sh) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/sh)](https://packagephobia.now.sh/result?p=@lskjs/sh)
|
175 | | [sms](packages/sms) | LSK module for sms. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/sms.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/sms) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/sms.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/sms) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/sms?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/sms) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/sms)](https://packagephobia.now.sh/result?p=@lskjs/sms)
|
176 | | [tbot](packages/tbot) | LSK module. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/tbot.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/tbot) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/tbot.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/tbot) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/tbot?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/tbot) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/tbot)](https://packagephobia.now.sh/result?p=@lskjs/tbot)
|
177 | | [uapp](packages/uapp) | LSK universal react app wrapper | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/uapp.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/uapp) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/uapp.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/uapp) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/uapp?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/uapp) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/uapp)](https://packagephobia.now.sh/result?p=@lskjs/uapp)
|
178 | | [upload](packages/upload) | LSK module for uploading files. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/upload.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/upload) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/upload.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/upload) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/upload?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/upload) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/upload)](https://packagephobia.now.sh/result?p=@lskjs/upload)
|
179 | | [utils](packages/utils) | LSK.js – utils – helpers and functions | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/utils.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/utils) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/utils.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/utils) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/utils?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/utils) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/utils)](https://packagephobia.now.sh/result?p=@lskjs/utils)
|
180 | | [worker](packages/worker) | LSK module for worker. | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/worker.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/worker) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/worker.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/worker) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/worker?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/worker) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/worker)](https://packagephobia.now.sh/result?p=@lskjs/worker)
|
181 | | [add-to-calendar](packages/add-to-calendar) | LSK ux subrepo: extra | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/add-to-calendar.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/add-to-calendar) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/add-to-calendar.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/add-to-calendar) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/add-to-calendar?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/add-to-calendar) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/add-to-calendar)](https://packagephobia.now.sh/result?p=@lskjs/add-to-calendar)
|
182 | | [article](packages/article) | LSK ux subrepo: article | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/article.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/article) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/article.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/article) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/article?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/article) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/article)](https://packagephobia.now.sh/result?p=@lskjs/article)
|
183 | | [avatar](packages/avatar) | LSK ux subrepo: avatar | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/avatar.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/avatar) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/avatar.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/avatar) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/avatar?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/avatar) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/avatar)](https://packagephobia.now.sh/result?p=@lskjs/avatar)
|
184 | | [button](packages/button) | LSK ux subrepo: button | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/button.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/button) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/button.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/button) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/button?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/button) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/button)](https://packagephobia.now.sh/result?p=@lskjs/button)
|
185 | | [button2](packages/button2) | LSK ux subrepo: button | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/button2.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/button2) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/button2.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/button2) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/button2?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/button2) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/button2)](https://packagephobia.now.sh/result?p=@lskjs/button2)
|
186 | | [chat](packages/chat) | LSK ux subrepo: chat | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/chat.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/chat) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/chat.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/chat) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/chat?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/chat) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/chat)](https://packagephobia.now.sh/result?p=@lskjs/chat)
|
187 | | [cookie-consent](packages/cookie-consent) | LSK ux subrepo: cookie-consent | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/cookie-consent.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/cookie-consent) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/cookie-consent.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/cookie-consent) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/cookie-consent?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/cookie-consent) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/cookie-consent)](https://packagephobia.now.sh/result?p=@lskjs/cookie-consent)
|
188 | | [css](packages/css) | LSK ux subrepo: css | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/css.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/css) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/css.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/css) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/css?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/css) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/css)](https://packagephobia.now.sh/result?p=@lskjs/css)
|
189 | | [dash](packages/dash) | LSK.js – Dash – React components for your own dashboard | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/dash.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/dash) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/dash.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/dash) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/dash?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/dash) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/dash)](https://packagephobia.now.sh/result?p=@lskjs/dash)
|
190 | | [dashboard](packages/dashboard) | LSK ux subrepo: dashboard | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/dashboard.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/dashboard) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/dashboard.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/dashboard) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/dashboard?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/dashboard) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/dashboard)](https://packagephobia.now.sh/result?p=@lskjs/dashboard)
|
191 | | [dev](packages/dev) | LSK ux subrepo: ui-dev | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/dev.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/dev) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/dev.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/dev) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/dev?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/dev) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/dev)](https://packagephobia.now.sh/result?p=@lskjs/dev)
|
192 | | [docs](packages/docs) | lskjs docs | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/docs.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/docs) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/docs.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/docs) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/docs?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/docs) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/docs)](https://packagephobia.now.sh/result?p=@lskjs/docs)
|
193 | | [downloads](packages/downloads) | LSK ux subrepo: download | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/downloads.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/downloads) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/downloads.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/downloads) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/downloads?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/downloads) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/downloads)](https://packagephobia.now.sh/result?p=@lskjs/downloads)
|
194 | | [extra](packages/extra) | LSK ux subrepo: extra | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/extra.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/extra) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/extra.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/extra) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/extra?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/extra) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/extra)](https://packagephobia.now.sh/result?p=@lskjs/extra)
|
195 | | [flag](packages/flag) | LSK ux subrepo: flag | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/flag.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/flag) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/flag.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/flag) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/flag?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/flag) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/flag)](https://packagephobia.now.sh/result?p=@lskjs/flag)
|
196 | | [form](packages/form) | LSK ux subrepo: form | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/form.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/form) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/form.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/form) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/form?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/form) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/form)](https://packagephobia.now.sh/result?p=@lskjs/form)
|
197 | | [grid](packages/grid) | LSK ux subrepo: grid | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/grid.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/grid) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/grid.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/grid) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/grid?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/grid) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/grid)](https://packagephobia.now.sh/result?p=@lskjs/grid)
|
198 | | [gridtable](packages/gridtable) | LSK ux subrepo: gridtable | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/gridtable.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/gridtable) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/gridtable.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/gridtable) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/gridtable?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/gridtable) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/gridtable)](https://packagephobia.now.sh/result?p=@lskjs/gridtable)
|
199 | | [image](packages/image) | LSK ux subrepo: image | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/image.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/image) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/image.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/image) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/image?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/image) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/image)](https://packagephobia.now.sh/result?p=@lskjs/image)
|
200 | | [landing](packages/landing) | LSK ux subrepo: landing | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/landing.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/landing) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/landing.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/landing) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/landing?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/landing) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/landing)](https://packagephobia.now.sh/result?p=@lskjs/landing)
|
201 | | [link](packages/link) | LSK ux subrepo: link | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/link.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/link) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/link.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/link) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/link?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/link) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/link)](https://packagephobia.now.sh/result?p=@lskjs/link)
|
202 | | [list](packages/list) | LSK ux subrepo: list | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/list.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/list) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/list.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/list) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/list?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/list) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/list)](https://packagephobia.now.sh/result?p=@lskjs/list)
|
203 | | [modal](packages/modal) | LSK ux subrepo: modal | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/modal.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/modal) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/modal.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/modal) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/modal?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/modal) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/modal)](https://packagephobia.now.sh/result?p=@lskjs/modal)
|
204 | | [navbar](packages/navbar) | LSK ux subrepo: navbar | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/navbar.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/navbar) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/navbar.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/navbar) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/navbar?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/navbar) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/navbar)](https://packagephobia.now.sh/result?p=@lskjs/navbar)
|
205 | | [notification](packages/notification) | LSK ux subrepo: notification | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/notification.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/notification) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/notification.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/notification) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/notification?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/notification) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/notification)](https://packagephobia.now.sh/result?p=@lskjs/notification)
|
206 | | [page](packages/page) | LSK ux subrepo: page | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/page.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/page) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/page.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/page) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/page?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/page) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/page)](https://packagephobia.now.sh/result?p=@lskjs/page)
|
207 | | [progress](packages/progress) | LSK ux subrepo: progress | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/progress.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/progress) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/progress.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/progress) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/progress?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/progress) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/progress)](https://packagephobia.now.sh/result?p=@lskjs/progress)
|
208 | | [scroll](packages/scroll) | LSK ux subrepo: scroll | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/scroll.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/scroll) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/scroll.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/scroll) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/scroll?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/scroll) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/scroll)](https://packagephobia.now.sh/result?p=@lskjs/scroll)
|
209 | | [slide](packages/slide) | LSK ux subrepo: slide | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/slide.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/slide) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/slide.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/slide) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/slide?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/slide) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/slide)](https://packagephobia.now.sh/result?p=@lskjs/slide)
|
210 | | [t](packages/t) | LSK ux subrepo: t | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/t.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/t) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/t.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/t) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/t?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/t) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/t)](https://packagephobia.now.sh/result?p=@lskjs/t)
|
211 | | [tag](packages/tag) | LSK ux subrepo: tag | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/tag.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/tag) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/tag.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/tag) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/tag?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/tag) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/tag)](https://packagephobia.now.sh/result?p=@lskjs/tag)
|
212 | | [theme](packages/theme) | LSK ux subrepo: theme | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/theme.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/theme) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/theme.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/theme) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/theme?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/theme) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/theme)](https://packagephobia.now.sh/result?p=@lskjs/theme)
|
213 | | [typo](packages/typo) | LSK ux subrepo: typo | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/typo.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/typo) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/typo.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/typo) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/typo?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/typo) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/typo)](https://packagephobia.now.sh/result?p=@lskjs/typo)
|
214 | | [ui](packages/ui) | LSK ux subrepo: ui | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/ui.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/ui) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/ui.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/ui) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/ui?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/ui) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/ui)](https://packagephobia.now.sh/result?p=@lskjs/ui)
|
215 | | [ui2](packages/ui2) | LSK ux subrepo: ui2 | [![NPM Badge](https://img.shields.io/npm/dw/@lskjs/ui2.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/ui2) | [![NPM Badge](https://img.shields.io/npm/v/@lskjs/ui2.svg?logo=npm\&label=\&style=flat-square)](https://www.npmjs.com/package/@lskjs/ui2) | [![NPM Badge](https://img.shields.io/bundlephobia/minzip/@lskjs/ui2?label=\&style=flat-square)](https://bundlephobia.com/result?p=@lskjs/ui2) | [![install size](https://packagephobia.now.sh/badge?p=@lskjs/ui2)](https://packagephobia.now.sh/result?p=@lskjs/ui2)
|
216 |
|
217 | Вдохновлен:
|
218 |
|
219 | * [Express.js](): концепция средних слоев, способ их конфигурирования
|
220 | * [Sails.js & Grails.js]()
|
221 | * [Loopback](egoegoegoegoegoegoeg)
|
222 | * https://github.com/developit/express-es6-rest-api/
|
223 | * react-starter-kit: Фронт, Сборка на ES6 без Gulp, Grunt. Конфиг webpack'а
|
224 |
|
225 |
|
226 |
|
227 | this.useMiddlewares()
|
228 | this.useRoutes()
|
229 | this.useDefaultRoute()
|
230 |
|
231 | А также:
|
232 |
|
233 | * Express async router
|
234 | * Json Web Token
|
235 | * Bunyan logger with updated view
|
236 |
|
237 | # Auth
|
238 |
|
239 | Токен можно прикладывать следующими методами
|
240 |
|
241 | * в Header `Authorization: Bearer %USER_TOKEN%`
|
242 | * в Header `X-Access-Token: %USER_TOKEN%`
|
243 | * в Cookie: `token=%USER_TOKEN%`
|
244 | * в GET параметр: `?token=%USER_TOKEN%`
|
245 |
|
246 | # Bunyan log levels
|
247 |
|
248 | LSKit принимает стоковый Bunyan логгер
|
249 |
|
250 | ```javascript
|
251 | log.trace('Starting method');
|
252 |
|
253 | if (!req.user) {
|
254 | log.fatal('Cannot get User');
|
255 | throw new Error('Cannot get User')
|
256 | }
|
257 |
|
258 | log.info('Method success');
|
259 | ```
|
260 |
|
261 | ### Log levels
|
262 |
|
263 | * fatal
|
264 | * error
|
265 | * warn
|
266 | * info
|
267 | * debug
|
268 | * trace
|
269 |
|
270 | # Что еще нужно дописать
|
271 |
|
272 | * Что из себя представляет модуль
|
273 | * Что такое мидлвара?
|
274 | * Что такое ресурс? Resource ENDPOINT
|
275 | * Универсальная модель?
|
276 | * Документация со swagger
|
277 |
|
278 | ## Getting Started
|
279 |
|
280 | ### Requirements
|
281 |
|
282 | * Mac OS X, Windows, or Linux
|
283 | * [Node.js](https://nodejs.org/) v6.5 or newer
|
284 | * `npm` v3.10 or newer (new to [npm](https://docs.npmjs.com/)?)
|
285 | * `node-gyp` prerequisites mentioned [here](https://github.com/nodejs/node-gyp)
|
286 | * Text editor or IDE pre-configured with React/JSX/Flow/ESlint ([learn more](./how-to-configure-text-editors.md))
|
287 |
|
288 | ### Структура проекта
|
289 |
|
290 | Before you start, take a moment to see how the project structure looks like:
|
291 |
|
292 | .
|
293 | ├── /build/ # Директория в которую билдится проект
|
294 | ├── /node_modules/ # Сторонние библиотеки и утилиты
|
295 | ├── /src/ # Исходный код приложения
|
296 | │ ├── /CoreApp/ # Базовое приложение
|
297 | │ │ ├── /api/ # Интерфейс клиент-серверного взаимодействия
|
298 | │ │ ├── /middlewares/ # Среднии слои express
|
299 | │ │ ├── /models/ # Модели базы данных
|
300 | │ │ ├── /resourses/ # Ресурсы
|
301 | │ │ ├── CoreApp.js # Класс-реализация базового приложения
|
302 | │ │ ├── requests.js # Реквесты приложения
|
303 | │ │ └── responses.js # Респонсы приложения
|
304 | │ ├── /ReactApp/ # Базовое приложение
|
305 | │ │ ├── /compoents/ # React компоненты
|
306 | │ │ ├── /Html/ # Класс-реализа
|
307 | │ │ ├── /Html/ # Класс-реализа
|
308 | │ │ ├── /Html/ # Класс-реализа
|
309 | │ │ ├── /routes/ # Роутер с страницами\экранами, которые являются React компонентами
|
310 | │ │ ├── /models/ # Модели базы данных
|
311 | │ │ ├── /resourses/ # Ресурсы
|
312 | │ │ ├── /routes/ # Роутер с страницами\экранами, которые являются React компонентами
|
313 | │ │ ├── /stores/ # Сторы React приложения
|
314 | │ │ ├ └── /AppStore.js # Главный стор React приложения
|
315 | │ │ ├── ReactApp.client.js # Класс-реализация базового приложения на клиенте
|
316 | │ │ ├── ReactApp.server.js # Класс-реализация базового приложения на сервере
|
317 | │ │ ├── requests.js # Реквесты приложения
|
318 | │ │ └── responses.js # Респонсы приложения
|
319 | │ ├── /client.js # Точка входа Клиентского приложения
|
320 | │ ├── /config # Общие настройки проекта
|
321 | │ └── /server.js # Точка входа Серверного приложения
|
322 | ├── /test/ # Модульные и интеграционные тесты
|
323 | ├── /tools/ # Скрипты и утилиты для автоматизации сборки проекта
|
324 | │ ├── /config.js # Конфигурация сборки проекта
|
325 | │ ├── /run.js # Система запуска сборки
|
326 | │ └── /webpack.config.js # Конфигурация Вебпака для клинстких и серверных бандлов
|
327 | └── package.json # Список сторонних библиотек и утилит
|
328 |
|
329 | **Note**: The current version of RSK does not contain a Flux implementation.
|
330 | It can be easily integrated with any Flux library of your choice. The most
|
331 | commonly used Flux libraries are [Flux](http://facebook.github.io/flux/),
|
332 | [Redux](http://redux.js.org/), and [Relay](http://facebook.github.io/relay/).
|
333 |
|
334 | ### Quick Start
|
335 |
|
336 | #### 1. Get the latest version
|
337 |
|
338 | You can start by cloning the latest version of React Starter Kit (RSK) on your
|
339 | local machine by running:
|
340 |
|
341 | ```shell
|
342 | $ git clone -o lego-starter-kit -b master --single-branch \
|
343 | https://github.com/isuvorov/lego-starter-kit.git MyApp
|
344 | $ cd MyApp
|
345 | ```
|
346 |
|
347 | Alternatively, you can start a new project based on RSK right from
|
348 | [WebStorm IDE](https://www.jetbrains.com/webstorm/help/create-new-project-react-starter-kit.html),
|
349 | or by using [Yeoman generator](https://www.npmjs.com/package/generator-react-fullstack).
|
350 |
|
351 | #### 2. Run `npm install`
|
352 |
|
353 | This will install both run-time project dependencies and developer tools listed
|
354 | in [package.json](../package.json) file.
|
355 |
|
356 | #### 3. Run `npm start`
|
357 |
|
358 | This command will build the app from the source files (`/src`) into the output
|
359 | `/build` folder. As soon as the initial build completes, it will start the
|
360 | Node.js server (`node build/server.js`) and [Browsersync](https://browsersync.io/)
|
361 | with [HMR](https://webpack.github.io/docs/hot-module-replacement) on top of it.
|
362 |
|
363 | > <http://localhost:3000/> — Node.js server (`build/server.js`)<br>
|
364 | > <http://localhost:3000/graphql> — GraphQL server and IDE<br>
|
365 | > <http://localhost:3001/> — BrowserSync proxy with HMR, React Hot Transform<br>
|
366 | > <http://localhost:3002/> — BrowserSync control panel (UI)
|
367 |
|
368 | Now you can open your web app in a browser, on mobile devices and start
|
369 | hacking. Whenever you modify any of the source files inside the `/src` folder,
|
370 | the module bundler ([Webpack](http://webpack.github.io/)) will recompile the
|
371 | app on the fly and refresh all the connected browsers.
|
372 |
|
373 | ![browsersync](https://dl.dropboxusercontent.com/u/16006521/react-starter-kit/brwosersync.jpg)
|
374 |
|
375 | Note that the `npm start` command launches the app in `development` mode,
|
376 | the compiled output files are not optimized and minimized in this case.
|
377 | You can use `--release` command line argument to check how your app works
|
378 | in release (production) mode:
|
379 |
|
380 | ```shell
|
381 | $ npm start -- --release
|
382 | ```
|
383 |
|
384 | *NOTE: double dashes are required*
|
385 |
|
386 | ### How to Build, Test, Deploy
|
387 |
|
388 | If you need just to build the app (without running a dev server), simply run:
|
389 |
|
390 | ```shell
|
391 | $ npm run build
|
392 | ```
|
393 |
|
394 | or, for a production build:
|
395 |
|
396 | ```shell
|
397 | $ npm run build -- --release
|
398 | ```
|
399 |
|
400 | or, for a production docker build:
|
401 |
|
402 | ```shell
|
403 | $ npm run build -- --release --docker
|
404 | ```
|
405 |
|
406 | *NOTE: double dashes are required*
|
407 |
|
408 | After running this command, the `/build` folder will contain the compiled
|
409 | version of the app. For example, you can launch Node.js server normally by
|
410 | running `node build/server.js`.
|
411 |
|
412 | To check the source code for syntax errors and potential issues run:
|
413 |
|
414 | ```shell
|
415 | $ npm run lint
|
416 | ```
|
417 |
|
418 | To launch unit tests:
|
419 |
|
420 | ```shell
|
421 | $ npm test # Run unit tests with Mocha
|
422 | $ npm run test:watch # Launch unit test runner and start watching for changes
|
423 | ```
|
424 |
|
425 | By default, [Mocha](https://mochajs.org/) test runner is looking for test files
|
426 | matching the `src/**/*.test.js` pattern. Take a look at `src/components/Layout/Layout.test.js`
|
427 | as an example.
|
428 |
|
429 | To deploy the app, run:
|
430 |
|
431 | ```shell
|
432 | $ npm run deploy
|
433 | ```
|
434 |
|
435 | The deployment script `tools/deploy.js` is configured to push the contents of
|
436 | the `/build` folder to a remote server via Git. You can easily deploy your app
|
437 | to [Azure Web Apps](https://azure.microsoft.com/en-us/services/app-service/web/),
|
438 | or [Heroku](https://www.heroku.com/) this way. Both will execute `npm install --production`
|
439 | upon receiving new files from you. Note, you should only deploy the contents
|
440 | of the `/build` folder to a remote server.
|
441 |
|
442 | ### How to Update
|
443 |
|
444 | If you need to keep your project up to date with the recent changes made to RSK,
|
445 | you can always fetch and merge them from [this repo](https://github.com/kriasoft/react-starter-kit)
|
446 | back into your own project by running:
|
447 |
|
448 | ```shell
|
449 | $ git checkout master
|
450 | $ git fetch lego-starter-kit
|
451 | $ git merge lego-starter-kit/master
|
452 | $ npm install
|
453 | ```
|
454 |
|
455 | # 📖 License
|
456 |
|
457 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details
|
458 |
|
459 | # 👥 Contributors
|
460 |
|
461 |
|
462 |
|
463 |
|
464 |
|
465 |
|
466 |
|
467 | <table>
|
468 | <tr>
|
469 | <td align="center"><a href="https://isuvorov.com"><img src="https://avatars2.githubusercontent.com/u/1056977?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Igor Suvorov</b></sub></a><br /><a href="lskjs/lskjs///commits?author=isuvorov" title="Code">💻</a> <a href="#design-isuvorov" title="Design">🎨</a> <a href="#ideas-isuvorov" title="Ideas, Planning, & Feedback">🤔</a></td>
|
470 | </tr>
|
471 | </table>
|
472 |
|
473 |
|
474 |
|
475 |
|
476 | # 👏 Contributing
|
477 |
|
478 | 1. Fork it (<https://github.com/yourname/yourproject/fork>)
|
479 | 2. Create your feature branch (`git checkout -b features/fooBar`)
|
480 | 3. Commit your changes (`git commit -am 'feat(image): Add some fooBar'`)
|
481 | 4. Push to the branch (`git push origin feature/fooBar`)
|
482 | 5. Create a new Pull Request
|
483 |
|
484 | # 📮 Any questions? Always welcome :)
|
485 |
|
486 | * [Email](mailto:hi@isuvorov.com)
|
487 | * [LSK.news – Telegram channel](https://t.me/lskjs)
|
488 | * [Спроси нас в телеграме ;)](https://t.me/lskjschat)
|