{"_id":"@alik_avizha/libs-train","_rev":"7-8f0020cc2bdf664d565431b663778643","name":"@alik_avizha/libs-train","dist-tags":{"latest":"2.1.0"},"versions":{"1.0.0":{"name":"@alik_avizha/libs-train","version":"1.0.0","license":"MIT","_id":"@alik_avizha/libs-train@1.0.0","maintainers":[{"name":"alik_avizha","email":"aleksandraviza@gmail.com"}],"dist":{"shasum":"454a99c6fff38bf367decc4f247b6484a5d135bb","tarball":"https://registry.npmjs.org/@alik_avizha/libs-train/-/libs-train-1.0.0.tgz","fileCount":1,"integrity":"sha512-8qgVjLqJP07QGcMB9mxbAf1Mt5+GvpVh1aW7/AVDGUXwaqmlCFJtM8O6B+EgO5yW7RUr8SbTfT0eunbrm0GWKg==","signatures":[{"sig":"MEUCIEZCmW0k1yeE96XKHBPNQ2r48FeQw2wlrUFs9uN76p4xAiEAzz6JfRnKSLiPZcHE9d17u1rCpPOzSq469UwrlwD74R4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":944},"main":"dist/libs-train.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/libs-train.es.js","gitHead":"058ea1b2ae13e99309c0a2e931d3c82e70e47f41","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"tsc --emitDeclarationOnly && vite build","preview":"vite preview","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alik_avizha","email":"aleksandraviza@gmail.com"},"_npmVersion":"10.8.2","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","react":"^18.3.1","eslint":"^9.0.0","globals":"^15.0.0","react-dom":"^18.3.1","@eslint/js":"^9.0.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","typescript-eslint":"^8.0.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.5"},"peerDependencies":{"react":">=17","react-dom":">=17"},"_npmOperationalInternal":{"tmp":"tmp/libs-train_1.0.0_1779727847629_0.3488180430595671","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alik_avizha/libs-train","version":"1.0.1","license":"MIT","_id":"@alik_avizha/libs-train@1.0.1","maintainers":[{"name":"alik_avizha","email":"aleksandraviza@gmail.com"}],"dist":{"shasum":"811e8b7e2d93b0c9ffe2eeb087c571207294356c","tarball":"https://registry.npmjs.org/@alik_avizha/libs-train/-/libs-train-1.0.1.tgz","fileCount":5,"integrity":"sha512-fLmMc4/wEq66kf0yK5njvHRxLzWa93beIqGMkWC0DTBygBgob5fQaRLbRLAPuViQGiNsJ4Z9itJtS2aeEWJmeA==","signatures":[{"sig":"MEQCIE//rHx79QDZzG+ych/vT/Vj7cYcSdGPdZCVpB9tqpXHAiBn3u52ioNwxvhDKOEY4O/kMLiM6KToVhvZmYeZqabPkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37192},"main":"dist/libs-train.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/libs-train.es.js","gitHead":"f9333aadc6c5e3b0b7435eb8c787425ccfe46b0f","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"tsc --emitDeclarationOnly && vite build","preview":"vite preview","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alik_avizha","email":"aleksandraviza@gmail.com"},"_npmVersion":"10.8.2","description":"Настроить Gitlab CI для библиотеки: установка зависимостей, линтинг, сборка, публикация в npm.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","react":"^18.3.1","eslint":"^9.0.0","globals":"^15.0.0","react-dom":"^18.3.1","@eslint/js":"^9.0.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","typescript-eslint":"^8.0.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.5"},"peerDependencies":{"react":">=17","react-dom":">=17"},"_npmOperationalInternal":{"tmp":"tmp/libs-train_1.0.1_1779728656220_0.9909363762471972","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alik_avizha/libs-train","version":"1.0.2","license":"MIT","_id":"@alik_avizha/libs-train@1.0.2","maintainers":[{"name":"alik_avizha","email":"aleksandraviza@gmail.com"}],"dist":{"shasum":"831d70800070aa19b8cd280ca9deb9ce0aac4821","tarball":"https://registry.npmjs.org/@alik_avizha/libs-train/-/libs-train-1.0.2.tgz","fileCount":2,"integrity":"sha512-+rJgyKpE/x1lAWwNFx7Ui7d/W+HJU+wqPoyIHBVesYQ0sIxffspnRSXcdTOVKVzqD34EW+sknCKlWwrJ6DklLQ==","signatures":[{"sig":"MEUCIQCUk7nzBOajIFh6SwA0SGdBd/Qz0sZX9ZjRXYurImoaAAIgEAi2Nt41l0TE4W7b9/OYE4rSsuxFkmYZwoOhu3BGvc8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1153},"main":"dist/libs-train.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/libs-train.es.js","gitHead":"d2e2fa0ade46bbfbe1ebee592f38599630b0ff4a","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"vite build && tsc -p tsconfig.json","preview":"vite preview","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alik_avizha","email":"aleksandraviza@gmail.com"},"_npmVersion":"10.8.2","description":"Настроить Gitlab CI для библиотеки: установка зависимостей, линтинг, сборка, публикация в npm.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","react":"^18.3.1","eslint":"^9.0.0","globals":"^15.0.0","react-dom":"^18.3.1","@eslint/js":"^9.0.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","typescript-eslint":"^8.0.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.5","@babel/plugin-transform-react-jsx":"^7.29.7"},"peerDependencies":{"react":">=17","react-dom":">=17"},"_npmOperationalInternal":{"tmp":"tmp/libs-train_1.0.2_1779730082273_0.5780596298240428","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@alik_avizha/libs-train","version":"1.0.3","license":"MIT","_id":"@alik_avizha/libs-train@1.0.3","maintainers":[{"name":"alik_avizha","email":"aleksandraviza@gmail.com"}],"dist":{"shasum":"2e7a331842fc10c72dac6d262bf523daba1841b9","tarball":"https://registry.npmjs.org/@alik_avizha/libs-train/-/libs-train-1.0.3.tgz","fileCount":2,"integrity":"sha512-lr7y8ybxi/izlWxnIsDyZLiPfS6qR/AiBR0/FvyK0TXhkP5glNhbQwSp8FaTpNActrpQ5XDLFQ+IxN+japj7Cw==","signatures":[{"sig":"MEQCICS3FkAeQJ8Qvq5asFQIflMwff7hBWC0x4RifTB/NTZgAiAsJ//j1Ms8HLG4fOFYOvlzG+CWD/dLWUQCIHEEyeC9pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1153},"main":"dist/libs-train.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/libs-train.es.js","gitHead":"40a9114ff370e7cfe126119d3ed37ae8e50ff573","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"vite build && tsc -p tsconfig.json","preview":"vite preview","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alik_avizha","email":"aleksandraviza@gmail.com"},"_npmVersion":"10.8.2","description":"Настроить Gitlab CI для библиотеки: установка зависимостей, линтинг, сборка, публикация в npm.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","react":"^18.3.1","eslint":"^9.0.0","globals":"^15.0.0","react-dom":"^18.3.1","@eslint/js":"^9.0.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","typescript-eslint":"^8.0.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.5","@babel/plugin-transform-react-jsx":"^7.29.7"},"peerDependencies":{"react":">=17","react-dom":">=17"},"_npmOperationalInternal":{"tmp":"tmp/libs-train_1.0.3_1779730801137_0.9153878224016476","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@alik_avizha/libs-train","version":"1.0.5","license":"MIT","_id":"@alik_avizha/libs-train@1.0.5","maintainers":[{"name":"alik_avizha","email":"aleksandraviza@gmail.com"}],"dist":{"shasum":"4848533a7517ab410a517d1f818502c12ece0d69","tarball":"https://registry.npmjs.org/@alik_avizha/libs-train/-/libs-train-1.0.5.tgz","fileCount":8,"integrity":"sha512-UpzKGjm/77TVQb7xFZuwZH5PZgcDre9sdlLGOmL8lxXpjrhePtx6AKSCPkFimkYaEIFm72iyBT+3FzNhBIrxbA==","signatures":[{"sig":"MEUCICBAzjGYVG4W3i3nIINOIsWAPd9Q86Pltb8g9ssd769SAiEA7DwMtv1S5A4epLLA35CETgk0ICD3d1tz1bZmS0KVHl0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2771},"main":"dist/libs-train.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/libs-train.es.js","gitHead":"956ee0eb59aaa4447727f5a15bf9e8914eef4642","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"vite build && tsc -p tsconfig.json","preview":"vite preview","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alik_avizha","email":"aleksandraviza@gmail.com"},"_npmVersion":"10.8.2","description":"Настроить Gitlab CI для библиотеки: установка зависимостей, линтинг, сборка, публикация в npm.","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","react":"^18.3.1","eslint":"^9.0.0","globals":"^15.0.0","react-dom":"^18.3.1","@eslint/js":"^9.0.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","typescript-eslint":"^8.0.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.5","@babel/plugin-transform-react-jsx":"^7.29.7"},"peerDependencies":{"react":">=17","react-dom":">=17"},"_npmOperationalInternal":{"tmp":"tmp/libs-train_1.0.5_1779732201806_0.3439254882696108","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@alik_avizha/libs-train","version":"2.0.0","license":"MIT","_id":"@alik_avizha/libs-train@2.0.0","maintainers":[{"name":"alik_avizha","email":"aleksandraviza@gmail.com"}],"dist":{"shasum":"046ff8266f227596fd3c39195fcbf67d50851fc2","tarball":"https://registry.npmjs.org/@alik_avizha/libs-train/-/libs-train-2.0.0.tgz","fileCount":8,"integrity":"sha512-c3QmG+dENQPiCociwW+zYo1H7XHaG626+7xl6npGNLLDMywb2FnpqbaYoeis4mqB5GZaRe4KQ7cwgNhfBS7icw==","signatures":[{"sig":"MEUCIF+vu4LFhyeMGtykr2SW2n4kEFmxclDJc2pjYUnZaLTGAiEA4A5nIgZ73aKwiJeUjb8q2pwpKkpKxX4ie6lmIaF8/90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8745},"main":"dist/libs-train.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/libs-train.es.js","gitHead":"e76f961d135887bdb1cff745fefdcd7f832ae9be","private":false,"scripts":{"dev":"vite","lint":"eslint .","build":"vite build && tsc -p tsconfig.json","prepare":"husky","preview":"vite preview","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.playground.json","version:check":"node scripts/check-version-bump.mjs","version:major":"node scripts/bump-version.mjs major","version:minor":"node scripts/bump-version.mjs minor","version:patch":"node scripts/bump-version.mjs patch"},"_npmUser":{"name":"alik_avizha","email":"aleksandraviza@gmail.com"},"_npmVersion":"10.8.2","description":"React UI-библиотека с компонентом `Button`. Сборка через Vite, типы через TypeScript.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","husky":"^9.1.7","react":"^18.3.1","eslint":"^9.0.0","globals":"^15.0.0","react-dom":"^18.3.1","@eslint/js":"^9.0.0","typescript":"^5.4.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","typescript-eslint":"^8.0.0","@vitejs/plugin-react":"^4.3.4","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.5"},"peerDependencies":{"react":">=17","react-dom":">=17"},"_npmOperationalInternal":{"tmp":"tmp/libs-train_2.0.0_1783165277668_0.4740801806692525","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"type":"module","name":"@alik_avizha/libs-train","version":"2.1.0","license":"MIT","private":false,"main":"dist/libs-train.umd.js","module":"dist/libs-train.es.js","types":"dist/index.d.ts","scripts":{"dev":"vite","build":"vite build && tsc -p tsconfig.json","lint":"eslint .","preview":"vite preview","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.playground.json","prepare":"husky","version:patch":"node scripts/bump-version.mjs patch","version:minor":"node scripts/bump-version.mjs minor","version:major":"node scripts/bump-version.mjs major","version:check":"node scripts/check-version-bump.mjs"},"publishConfig":{"access":"public"},"peerDependencies":{"react":">=17","react-dom":">=17"},"devDependencies":{"@eslint/js":"^9.0.0","@types/react":"^18.3.0","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.4","eslint":"^9.0.0","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-react-refresh":"^0.4.5","globals":"^15.0.0","husky":"^9.1.7","react":"^18.3.1","react-dom":"^18.3.1","typescript":"^5.4.0","typescript-eslint":"^8.0.0","vite":"^5.4.0"},"_id":"@alik_avizha/libs-train@2.1.0","gitHead":"64bedf0b7a89fd82419bd937695fff540a1f924e","description":"React UI-библиотека с компонентом `Button`. Сборка через Vite, типы через TypeScript.","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Fzz1tqpI7rHwJE1LoPjTGjmQr0cTaK3KgtpeFL3sdgnqvoqWcr20v+u/o0N90wXt17Eiq7MO7UWON7/QyvNacg==","shasum":"3092d07326c13e4749883077464f4fa3faa406a8","tarball":"https://registry.npmjs.org/@alik_avizha/libs-train/-/libs-train-2.1.0.tgz","fileCount":8,"unpackedSize":9726,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBuu6WXszUOfZ6Q86e1EY2UmXNZV1SWXjS8e3RRhw2PJAiBrEEsJIUKOnsP2Ntdln4/VUqqOYHrcaZ7NNIIaMeNn3Q=="}]},"_npmUser":{"name":"alik_avizha","email":"aleksandraviza@gmail.com"},"directories":{},"maintainers":[{"name":"alik_avizha","email":"aleksandraviza@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/libs-train_2.1.0_1786179797670_0.8838032157012741"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-25T16:50:47.368Z","modified":"2026-08-08T09:03:17.967Z","1.0.0":"2026-05-25T16:50:47.759Z","1.0.1":"2026-05-25T17:04:16.354Z","1.0.2":"2026-05-25T17:28:02.407Z","1.0.3":"2026-05-25T17:40:01.289Z","1.0.5":"2026-05-25T18:03:21.952Z","2.0.0":"2026-07-04T11:41:17.815Z","2.1.0":"2026-08-08T09:03:17.807Z"},"license":"MIT","description":"React UI-библиотека с компонентом `Button`. Сборка через Vite, типы через TypeScript.","maintainers":[{"name":"alik_avizha","email":"aleksandraviza@gmail.com"}],"readme":"# @alik_avizha/libs-train\n\nReact UI-библиотека с компонентом `Button`. Сборка через Vite, типы через TypeScript.\n\n## Установка\n\n```bash\nyarn install\n```\n\nПосле `yarn install` автоматически активируется [Husky](https://typicode.github.io/husky/) и pre-commit hook.\n\n## Разработка\n\nЛокальный playground с информацией о пакете и демо компонентов:\n\n```bash\nyarn dev\n```\n\nОткройте [http://localhost:5173](http://localhost:5173) — на странице отображаются имя, версия, лицензия и демо `Button`.\n\n## Скрипты\n\n| Команда | Описание |\n|---------|----------|\n| `yarn dev` | Playground (Vite dev server) |\n| `yarn build` | Сборка библиотеки в `dist/` |\n| `yarn lint` | ESLint |\n| `yarn typecheck` | Проверка типов без emit |\n| `yarn preview` | Превью production-сборки playground |\n| `yarn version:patch` | Повысить patch-версию (`1.0.5` → `1.0.6`) |\n| `yarn version:minor` | Повысить minor-версию (`1.0.5` → `1.1.0`) |\n| `yarn version:major` | Повысить major-версию (`1.0.5` → `2.0.0`) |\n| `yarn version:check` | Проверить, что версия поднята при изменении `src/` |\n\n## Версионирование\n\nВерсия хранится в `package.json`. Для ручного bump используйте утилиту:\n\n```bash\n# Исправления, обратно совместимые\nyarn version:patch\n\n# Новая функциональность, обратно совместимая\nyarn version:minor\n\n# Breaking changes\nyarn version:major\n```\n\nСкрипт `scripts/bump-version.mjs` обновляет поле `version` в `package.json`. После bump не забудьте добавить файл в коммит:\n\n```bash\ngit add package.json\n```\n\n### Pre-commit hook\n\nПри коммите Husky запускает `yarn version:check` (`scripts/check-version-bump.mjs`).\n\n**Правило:** если в коммите есть изменения в `src/`, версия в `package.json` должна отличаться от версии в последнем коммите.\n\nПример рабочего flow:\n\n```bash\n# 1. Изменили компонент\nvim src/components/button/button.tsx\n\n# 2. Подняли версию\nyarn version:patch\n\n# 3. Закоммитили всё вместе\ngit add src/components/button/button.tsx package.json\ngit commit -m \"fix(button): add disabled state\"\n```\n\nКоммит **не пройдёт**, если:\n\n- изменён `src/`, но версия не поднята;\n- версия поднята в файле, но `package.json` не добавлен в stage (`git add package.json`).\n\nИзменения только в `playground/`, CI, README и прочих файлах вне `src/` не требуют bump версии.\n\n## Публикация в npm\n\n### Локальная сборка\n\n```bash\nyarn build\n```\n\nАртефакты:\n\n- `dist/libs-train.es.js` — ES module\n- `dist/libs-train.umd.js` — UMD\n- `dist/index.d.ts` — типы\n\n### GitLab CI\n\nPipeline (`.gitlab-ci.yml`):\n\n| Stage | Job | Описание |\n|-------|-----|----------|\n| `install` | `install` | `yarn install --frozen-lockfile`, кэш `node_modules` |\n| `lint` | `lint` | `yarn lint` |\n| `lint` | `typecheck` | `yarn typecheck` |\n| `build` | `build` | `yarn build`, артефакт `dist/` |\n| `publish` | `publish:npm` | Публикация в npm **только по git-тегу** |\n\nПубликация запускается при push тега формата `v1.2.3`. Версия в теге должна совпадать с `package.json` (тег `v1.0.6` ↔ `\"version\": \"1.0.6\"`).\n\n#### Настройка GitLab\n\n1. **CI/CD → Variables** — добавить `NPM_TOKEN` (masked, protected):\n   - создать токен на [npmjs.com](https://www.npmjs.com/) с правом **Publish**;\n   - тип: *Automation* или *Granular Access Token*.\n\n2. Релизный flow:\n\n```bash\nyarn version:patch          # или minor / major\ngit add package.json\ngit commit -m \"chore: release v1.0.6\"\ngit tag v1.0.6\ngit push origin main\ngit push origin v1.0.6\n```\n\nPipeline на теге выполнит install → lint → typecheck → build → `npm publish`.\n\n## Использование в проекте\n\n```bash\nnpm install @alik_avizha/libs-train\n```\n\n```tsx\nimport { useRef } from \"react\";\nimport { Button } from \"@alik_avizha/libs-train\";\n\nconst ref = useRef<HTMLButtonElement>(null);\n\n<Button onClick={() => console.log(\"clicked\")}>Click me</Button>\n\n{/* native attrs, className/style, ref */}\n<Button\n  ref={ref}\n  type=\"submit\"\n  className=\"my-btn\"\n  style={{ backgroundColor: \"#111\", color: \"#fff\" }}\n  aria-label=\"Submit form\"\n>\n  Submit\n</Button>\n\n{/* legacy API still works */}\n<Button label=\"Legacy label\" />\n```\n\nPeer dependencies: `react` и `react-dom` >= 17.\n\n## Структура проекта\n\n```\nsrc/                  # Исходники библиотеки (публикуются в npm)\n  components/\n  index.ts\nplayground/           # Локальное демо (не входит в npm-пакет)\nscripts/\n  bump-version.mjs    # Утилита major / minor / patch\n  check-version-bump.mjs\n.husky/\n  pre-commit          # Проверка версии\n```\n","readmeFilename":"README.md"}