{"_rev":"6-5915b7140ff5cb0b8683c9b3f139a072","time":{"created":"2024-07-22T16:06:48.804Z","modified":"2024-07-22T16:06:49.373Z","1.0.0":"2024-07-22T10:17:51.743Z","1.0.1":"2024-07-22T10:37:47.926Z","1.0.2":"2024-07-22T16:06:49.138Z"},"_id":"@davidpinkevich95/date-picker","name":"@davidpinkevich95/date-picker","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.2":{"name":"@davidpinkevich95/date-picker","version":"1.0.2","license":"MIT","author":{"name":"davidpinkevich"},"main":"dist/index.js","module":"dist/index.es.js","types":"dist/index.d.ts","scripts":{"test":"jest","lint":"eslint ./src","lint:fix":"eslint --fix --ext .ts,.tsx ./src","prettier":"prettier --write ./src","test:watch":"jest --watch","prepublishOnly":"npm run build","build":"rollup -c --bundleConfigAsCjs","watch":"rollup -c -w","prepare":"husky install","storybook":"storybook dev -p 6006","build-storybook":"storybook build","deploy-storybook":"yarn build-storybook && gh-pages -d storybook-static"},"devDependencies":{"babel-plugin-module-resolver":"^5.0.2","babel-plugin-styled-components":"^2.1.4","@chromatic-com/storybook":"1.6.1","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-url":"^8.0.2","@storybook/addon-essentials":"^8.1.11","@storybook/addon-interactions":"^8.1.11","@storybook/addon-links":"^8.1.11","@storybook/addon-onboarding":"^8.1.11","@storybook/addon-webpack5-compiler-swc":"1.0.4","@storybook/blocks":"^8.1.11","@storybook/react":"^8.1.11","@storybook/react-webpack5":"^8.1.11","@storybook/test":"^8.1.11","@testing-library/dom":"^10.3.1","@testing-library/jest-dom":"^6.4.6","@testing-library/react":"^16.0.0","@types/jest":"^29.5.12","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@types/styled-components":"^5.1.34","@typescript-eslint/eslint-plugin":"^6.4.0","@typescript-eslint/parser":"^7.7.1","css-loader":"^7.1.2","eslint":"^8.0.1","eslint-config-prettier":"^9.1.0","eslint-config-standard-with-typescript":"^43.0.1","eslint-plugin-import":"^2.25.2","eslint-plugin-jest-dom":"^4.0.3","eslint-plugin-n":"^15.0.0 || ^16.0.0 ","eslint-plugin-prettier":"^5.1.3","eslint-plugin-promise":"^6.0.0","eslint-plugin-react":"^7.34.1","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-simple-import-sort":"^12.1.0","eslint-plugin-storybook":"^0.8.0","eslint-plugin-testing-library":"^5.10.0","husky":"^8.0.0","identity-obj-proxy":"^3.0.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","node-sass":"^9.0.0","postcss":"^8.4.39","postcss-import":"^16.1.0","postcss-nested":"^6.0.1","postcss-simple-vars":"^7.0.1","prettier":"^3.2.5","react":"^18.3.1","react-dom":"^18.3.1","rollup":"^4.18.1","rollup-plugin-dts":"^6.1.1","rollup-plugin-peer-deps-external":"^2.2.4","rollup-plugin-svg":"^2.0.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.36.0","sass":"^1.77.6","sass-loader":"^14.2.1","storybook":"^8.1.11","style-loader":"^4.0.0","styled-components":"^6.1.11","ts-jest":"^29.2.0","ts-node":"^10.9.2","typescript":"^5.5.3"},"dependencies":{"sb":"^8.1.11"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","styled-components":">=6.1.1"},"eslintConfig":{"extends":["plugin:storybook/recommended"]},"_id":"@davidpinkevich95/date-picker@1.0.2","gitHead":"60cc4844a77eace632f7288342506923bd1504fd","description":"- [Техническое задание](#Техническое-задание)\r - [Используемые технологии](#Используемые-технологии)\r - [Структура проекта](#Структура-проекта)\r - [Тестирование](#Тестирование)\r - [Как начать](#Как-начать)\r - [Полезные ссылки](#Полезные-ссылки)","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-pwrWUal8yhRrthjRN5YBs5xIgHl5E6M/q3bFhtaqBomqYOgSMjFcefHdPG2/JAoZdujK6Kiz8cC0nN2AmnMZ5g==","shasum":"ba3d67f9022b286d2bce1399e201745058e997ee","tarball":"https://registry.npmjs.org/@davidpinkevich95/date-picker/-/date-picker-1.0.2.tgz","fileCount":90,"unpackedSize":244767,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfBPFqbetIHBzj0L8doowV3maCDcbKPuOWlPeEAtb6xQIgJJ4bnVe3F/5ILA3aeMlRyXrpw8W02duhxYWy7u6WEjQ="}]},"_npmUser":{"name":"davidpinkevich95","email":"davidpinkevich95@gmail.com"},"directories":{},"maintainers":[{"name":"davidpinkevich95","email":"davidpinkevich95@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/date-picker_1.0.2_1721664408874_0.8575416266691633"},"_hasShrinkwrap":false}},"maintainers":[{"name":"davidpinkevich95","email":"davidpinkevich95@gmail.com"}],"description":"- [Техническое задание](#Техническое-задание)\r - [Используемые технологии](#Используемые-технологии)\r - [Структура проекта](#Структура-проекта)\r - [Тестирование](#Тестирование)\r - [Как начать](#Как-начать)\r - [Полезные ссылки](#Полезные-ссылки)","author":{"name":"davidpinkevich"},"license":"MIT","readme":"# Tестовое задание библиотека Modsen DatePicker\r\n\r\n## Содержание\r\n\r\n- [Техническое задание](#Техническое-задание)\r\n- [Используемые технологии](#Используемые-технологии)\r\n- [Структура проекта](#Структура-проекта)\r\n- [Тестирование](#Тестирование)\r\n- [Как начать](#Как-начать)\r\n- [Полезные ссылки](#Полезные-ссылки)\r\n\r\n## Техническое задание\r\n\r\nНеобходимо реализовать библиотеку Javascript - **_DatePicker_**, для работы с различными видами календаря.\r\nЦель состоит в том, чтобы создать базовую библиотеку, которую можно настраивать и расширять.\r\n\r\n#### Необходимый функционал:\r\n\r\n- Просмотр календаря;\r\n- Выбор диапазона для календаря;\r\n- Дефолтный календарь с заранее установленным диапазоном;\r\n- Возможность выбора начала недели(с понедельника или воскресенья);\r\n- Выбор вида календаря (по неделям, месяцам и т.д.);\r\n- Реализовать возможность при клике на определенный день добавлять список задач и\r\n  сохранять их в localStorage;\r\n- Возможность переключения на предыдущий(ую)/следующий(ую) неделю/месяц/год;\r\n- Возможность выбора максимальной даты календаря;\r\n- Возможность выбора минимальной даты для календаря;\r\n- Возможность скрывать/показывать выходные дни и выделять праздничные дни другим цветом;\r\n- Возможность перейти в календаре на введенную пользователем дату;\r\n- Стилизация календаря.\r\n\r\n#### Дополнительный функционал:\r\n\r\n- Развернуть приложение на хостинге (heroku, vercel);\r\n- Настроить CI/CD, используя [GitHub Actions](https://github.com/features/actions);\r\n- Собрать проект с нуля(с настройками всех конфигов: rollup, eslint, prettier, husky).\r\n\r\n#### Пример графического представления:\r\n\r\nСсылка на макет: [Макет \"DatePicker\"](https://www.figma.com/file/PGg4P38QaPjUzasxC2GSkv/Modsen-Datepicker?node-id=0%3A1&t=dWZj8oM41qBje0bv-0).\r\n\r\n#### Также проект предполагает:\r\n\r\n- Придерживаться требований по написанию и организации кода react приложения. Ссылка на требования: [Требования к тестовому заданию](https://github.com/annaprystavka/requirements);\r\n\r\n- Разделить библиотеку на два основных компонента: представления и логики. Для реализации логики приложения необходимо использовать порождающий паттерн программирования **_\"Декоратор\"_**, который позволяет динамически добавлять объектам новую функциональность, оборачивая их в полезные «обёртки» (см. подробнее [паттерн Декоратор](https://refactoring.guru/ru/design-patterns/decorator)). При помощи паттерна создать сервисный класс, в котором вы будете задавать конфигурацию и создавать календарь;\r\n\r\n- Настроить конфигурации **_babel_**, **_eslint_**, **_prettier_**;\r\n\r\n- Подключить и настроить бандлер **_Rollup_** для сборки проекта в библиотеку;\r\n\r\n- Подключить и настроить **_Storybook_** для проверки работоспособности вашей библиотеки;\r\n\r\n- Добавить обработку ошибок через паттерн **_Error Boundaries_**;\r\n\r\n- Добавить проверку типов в React компонентах, передаваемых параметров и подобных объектов;\r\n\r\n- Использовать алиасы для импортирования файлов;\r\n\r\n- В приложении допускается использование языка typescript;\r\n\r\n- Нельзя использовать какие-либо сторонние библиотеки.\r\n\r\n## Используемые технологии\r\n\r\n### Для react\r\n\r\n- **_node.js_** - программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код);\r\n- **_babel_** - транспайлер, преобразующий код из одного стандарта в другой;\r\n- **_eslint_** - линтер для JavaScript кода;\r\n- **_yarn_** - менеджер пакетов;\r\n- **_rollup_** - сборщик ES-модулей;\r\n- **_storybook_** - инструмент, используемый для разработки компонентов пользовательского интерфейса в изоляции;\r\n- **_react_** - JavaScript-библиотека для создания пользовательских интерфейсов;\r\n- **_prop-types_** - набор валидаторов, которые могут быть использованы для проверки получаемых данных;\r\n- **_styled-components_** - система стилизации react компонентов;\r\n- **_jest_** — интеграционное тестирование (rtl) + unit-тестирование.\r\n\r\n### Для react native\r\n\r\nWill be soon...\r\n\r\n## Структура проекта\r\n\r\n[Структура проекта](https://github.com/mkrivel/structure)\r\n\r\n## Тестирование\r\n\r\nРеализовать e2e тестирование c полным покрытием функционала приложения:\r\n\r\n- Сервис для конфигурации DatePicker-компонента;\r\n- Графическое (компонент модуля и т.д.).\r\n\r\n## Полезные ссылки\r\n\r\n[React](https://reactjs.org/docs/getting-started.html)\r\n\r\n[Rollup](https://rollupjs.org/guide/en/)\r\n\r\n[Storybook](https://storybook.js.org/docs/basics/introduction/)\r\n\r\n[Eslint](https://eslint.org/docs/user-guide/configuring)\r\n\r\n[Babel](https://babeljs.io/docs/en/configuration)\r\n\r\n[Тестирование Jest](https://jestjs.io/ru/docs/getting-started)\r\n\r\n[Styled-components](https://www.styled-components.com/docs)\r\n\r\n[Husky](https://dev.to/ivadyhabimana/setup-eslint-prettier-and-husky-in-a-node-project-a-step-by-step-guide-946)\r\n","readmeFilename":"README.md"}