{"_id":"@boristype/ws-version","_rev":"4-92053271facdc89693af442d7310f000","name":"@boristype/ws-version","dist-tags":{"latest":"0.1.0-alpha.2"},"versions":{"0.1.0-alpha.0":{"name":"@boristype/ws-version","version":"0.1.0-alpha.0","keywords":["version","semver","conversion"],"author":{"name":"BorisType Project"},"license":"MIT","_id":"@boristype/ws-version@0.1.0-alpha.0","maintainers":[{"name":"punkhomov","email":"punkhomov@gmail.com"}],"homepage":"https://github.com/BorisType/BorisType#readme","bugs":{"url":"https://github.com/BorisType/BorisType/issues"},"dist":{"shasum":"a35bf70f138495da4331f7e2620537925c2106e0","tarball":"https://registry.npmjs.org/@boristype/ws-version/-/ws-version-0.1.0-alpha.0.tgz","fileCount":5,"integrity":"sha512-nEIS+Osjipm9YIOF6MA6cvCz1dcuYHrRRib3BktMgYbg+68izqiQ+QDVRz69WS2YCu+1POxsSf83dgh/9oV8nQ==","signatures":[{"sig":"MEUCIQCh++3aAKRXpXl3cEnMGO037BubnW07hdYhcrLHHJCbXwIgSuOECaB1mTD4cXl7pIKAO55pNIffw5I6z2jTJIYkhqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18031},"main":"index.js","type":"module","_from":"file:boristype-ws-version-0.1.0-alpha.0.tgz","types":"index.d.ts","engines":{"node":">=22.0.0"},"scripts":{"test":"node test.js","build":"tsc"},"_npmUser":{"name":"punkhomov","email":"punkhomov@gmail.com"},"_resolved":"C:\\Users\\vomoh\\AppData\\Local\\Temp\\bc74aaa1d2559b7c1c5c615aca8a7c11\\boristype-ws-version-0.1.0-alpha.0.tgz","_integrity":"sha512-nEIS+Osjipm9YIOF6MA6cvCz1dcuYHrRRib3BktMgYbg+68izqiQ+QDVRz69WS2YCu+1POxsSf83dgh/9oV8nQ==","repository":{"url":"git+https://github.com/BorisType/BorisType.git","type":"git"},"_npmVersion":"10.9.3","description":"Утилита для преобразования semver версий в формат целевой системы","directories":{},"_nodeVersion":"22.18.0","dependencies":{"semver":"^7.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.2","@types/semver":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ws-version_0.1.0-alpha.0_1771918370610_0.07399012803241178","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.2":{"name":"@boristype/ws-version","version":"0.1.0-alpha.2","description":"Утилита для преобразования semver версий в формат целевой системы","type":"module","main":"index.js","types":"index.d.ts","dependencies":{"semver":"^7.0.0"},"devDependencies":{"@types/semver":"^7.0.0","typescript":"^5.9.2"},"keywords":["version","semver","conversion"],"author":{"name":"BorisType Project"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/BorisType/BorisType.git"},"bugs":{"url":"https://github.com/BorisType/BorisType/issues"},"homepage":"https://github.com/BorisType/BorisType#readme","publishConfig":{"access":"public"},"engines":{"node":">=22.0.0"},"scripts":{"build":"tsc","test":"node test.js"},"_id":"@boristype/ws-version@0.1.0-alpha.2","_integrity":"sha512-GNI/QpbYG3kC8y4TlNFuI9XcRYARlXf7fYg6n7ZuDdxEks06twxO0GhDiZowBY1WCpEWjBKYrQTn8VAUdJgKMA==","_resolved":"C:\\Users\\vomoh\\AppData\\Local\\Temp\\9fac45198586b260729a35475890e250\\boristype-ws-version-0.1.0-alpha.2.tgz","_from":"file:boristype-ws-version-0.1.0-alpha.2.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-GNI/QpbYG3kC8y4TlNFuI9XcRYARlXf7fYg6n7ZuDdxEks06twxO0GhDiZowBY1WCpEWjBKYrQTn8VAUdJgKMA==","shasum":"a11c6118617a6fa2d7b691d4a8ca5a89181b5f7a","tarball":"https://registry.npmjs.org/@boristype/ws-version/-/ws-version-0.1.0-alpha.2.tgz","fileCount":5,"unpackedSize":18031,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDI+gvyueO0MX+YvkX80iBKZKlVz5wKYkaf6wdt9CYdtAiEAuLpnRUNwoShXXmx0p5OPwtM6dx5RCa0pVrtqF3X1GxM="}]},"_npmUser":{"name":"punkhomov","email":"punkhomov@gmail.com"},"directories":{},"maintainers":[{"name":"punkhomov","email":"punkhomov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ws-version_0.1.0-alpha.2_1772039906453_0.33677830783527263"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-24T07:32:50.522Z","modified":"2026-02-25T17:18:26.744Z","0.1.0-alpha.0":"2026-02-24T07:32:50.762Z","0.1.0-alpha.1":"2026-02-24T07:50:54.601Z","0.1.0-alpha.2":"2026-02-25T17:18:26.592Z"},"bugs":{"url":"https://github.com/BorisType/BorisType/issues"},"author":{"name":"BorisType Project"},"license":"MIT","homepage":"https://github.com/BorisType/BorisType#readme","keywords":["version","semver","conversion"],"repository":{"type":"git","url":"git+https://github.com/BorisType/BorisType.git"},"description":"Утилита для преобразования semver версий в формат целевой системы","maintainers":[{"name":"punkhomov","email":"punkhomov@gmail.com"}],"readme":"# WS Version Converter — Конвертер версий\r\n\r\nУтилита для преобразования semver версий в формат целевой системы (4 компонента).\r\n\r\n## Установка\r\n\r\n```bash\r\nnpm install\r\n```\r\n\r\n## Использование\r\n\r\n```javascript\r\nimport { \r\n  convertSemverToWsVersion, \r\n  convertSemverRangeToWsRange, \r\n  compareWsVersions, \r\n  isValidWsVersion,\r\n  isValidWsRange \r\n} from './index.js';\r\n\r\n// Преобразование semver в ws-формат\r\nconst wsVersion = convertSemverToWsVersion('1.2.3-beta.1');\r\nconsole.log(wsVersion); // \"1.2.3.2001\"\r\n\r\n// Преобразование промежутков версий\r\nconst wsRange = convertSemverRangeToWsRange('^1.2.3');\r\nconsole.log(wsRange); // \"^1.2.3.9999\"\r\n\r\nconst anyVersion = convertSemverRangeToWsRange('*');\r\nconsole.log(anyVersion); // \"^0.0.0.0\"\r\n\r\n// Сравнение ws-версий\r\nconst result = compareWsVersions('1.0.0.1001', '1.0.0.9999');\r\nconsole.log(result); // -1 (альфа меньше обычной версии)\r\n\r\n// Проверка валидности\r\nconsole.log(isValidWsVersion('1.0.0')); // true\r\nconsole.log(isValidWsRange('^1.0.0.0')); // true\r\nconsole.log(isValidWsRange('~1.0.0.0')); // false (тильда не поддерживается)\r\n```\r\n\r\n## Формат целевой системы\r\n\r\nЦелевая система использует версии из 3-4 компонентов в формате `major.minor.patch[.fourth]`:\r\n\r\n- Компоненты - неотрицательные числа\r\n- Разделитель - точка\r\n- Могут содержать лидирующие нули (например, `0.01.002`)\r\n- Максимальная граница компонентов не ограничена (может превышать 255 и 65535)\r\n\r\n## Алгоритм преобразования\r\n\r\n1. **major.minor.patch** - переносятся как есть из semver\r\n2. **fourth** - кодирует prerelease информацию:\r\n   - Если prerelease нет → `9999` (максимальный приоритет)\r\n   - `alpha.N` → `1000 + N`\r\n   - `beta.N` → `2000 + N`  \r\n   - `rc.N` → `3000 + N`\r\n   - Другие строки → `4000 + hash(string) % 1000`\r\n   - Только числа → `5000 + number`\r\n\r\nЭто обеспечивает правильный порядок: prerelease < обычная версия.\r\n\r\n## Ограничения\r\n\r\n- Компоненты semver (major, minor, patch) не могут превышать 999\r\n- Информация о build (`+metadata`) игнорируется\r\n- Порядок сортировки semver сохраняется в ws-формате\r\n- Prerelease версии меньше обычных версий\r\n\r\n## Примеры преобразования\r\n\r\n| semver | ws-формат | Описание |\r\n|--------|-----------|----------|\r\n| `1.0.0` | `1.0.0.9999` | Стандартная версия |\r\n| `1.0.0-alpha.1` | `1.0.0.1001` | Alpha с номером |\r\n| `1.0.0-beta.5` | `1.0.0.2005` | Beta с номером |\r\n| `1.0.0-rc.1` | `1.0.0.3001` | Release candidate |\r\n| `2.1.0+build.123` | `2.1.0.9999` | Build metadata игнорируется |\r\n\r\n## Промежутки версий (Version Ranges)\r\n\r\nМодуль поддерживает преобразование промежутков версий semver в ws-формат:\r\n\r\n### Поддерживаемые промежутки:\r\n- **Точная версия**: `1.2.3` → `1.2.3.9999`\r\n- **Caret (совместимые)**: `^1.2.3` → `^1.2.3.9999`\r\n- **Tilde (приблизительно эквивалентные)**: `~1.2.3` → `^1.2.3.9999`\r\n- **Любая версия**: `*` → `^0.0.0.0`\r\n\r\nПримечание: tilde (`~`) преобразуется в caret (`^`), так как ws-формат поддерживает только caret.\r\n\r\n### Примеры преобразования ranges:\r\n| semver range | ws range | Описание |\r\n|--------------|----------|----------|\r\n| `1.0.0` | `1.0.0.9999` | Точная версия |\r\n| `^1.2.3` | `^1.2.3.9999` | Совместимые версии |\r\n| `~1.2.3` | `^1.2.3.9999` | Приблизительно эквивалентные |\r\n| `*` | `^0.0.0.0` | Любая версия |\r\n| `^1.0.0-alpha.1` | `^1.0.0.1001` | Caret с prerelease |\r\n\r\n**Порядок сортировки:** 1.0.0-alpha.1 < 1.0.0-beta.5 < 1.0.0-rc.1 < 1.0.0 ✅\r\n\r\n## API\r\n\r\n### `convertSemverToWsVersion(version: string): string`\r\n\r\nПреобразует semver версию в ws-формат.\r\n\r\n**Параметры:**\r\n- `version` - Версия в формате semver\r\n\r\n**Возвращает:** Версию в формате `x.y.z.w`\r\n\r\n**Исключения:** `Error` если версия невалидна или содержит компоненты > 999\r\n\r\n### `compareWsVersions(version1: string, version2: string): -1 | 0 | 1`\r\n\r\nСравнивает две ws-версии.\r\n\r\n**Возвращает:**\r\n- `-1` если version1 < version2\r\n- `0` если version1 === version2  \r\n- `1` если version1 > version2\r\n\r\n### `isValidWsVersion(version: string): boolean`\r\n\r\nПроверяет валидность ws-версии.\r\n\r\n**Параметры:**\r\n- `version` - Версия для проверки\r\n\r\n**Возвращает:** `true` если версия валидна\r\n\r\n### `convertSemverRangeToWsRange(range: string): string`\r\n\r\nПреобразует промежуток semver версий в ws-формат.\r\n\r\n**Параметры:**\r\n- `range` - Промежуток версий в формате semver (например, \"^1.2.3\", \"~1.2.3\", \"*\")\r\n\r\n**Возвращает:** Промежуток версий в формате ws\r\n\r\n**Исключения:** `Error` если промежуток невалиден\r\n\r\n### `isValidWsRange(range: string): boolean`\r\n\r\nПроверяет валидность ws-промежутка версий.\r\n\r\n## Тестирование\r\n\r\n```bash\r\nnpm test\r\n# или \r\nnode test.js\r\n```\r\n\r\n## Лицензия\r\n\r\nMIT","readmeFilename":"README.md"}