uuid-cbr 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +36 -82
  2. package/package.json +14 -5
package/README.md CHANGED
@@ -1,38 +1,40 @@
1
1
  # UUID-CBR
2
2
 
3
- > Генератор уникальных идентификаторов (УИд) по требованиям Банка России (Указание 5251-У, Положение 758-П)
3
+ > Генератор УИд для Node.js по требованиям Банка России.
4
4
 
5
- Реализация алгоритма формирования УИд на основе UUID v1 с контрольным символом, полностью соответствующая официальному примеру ЦБ на C.
5
+ Пакет формирует УИд на основе UUID v1 с контрольным символом и повторяет поведение официального примера Банка России на C.
6
6
 
7
- ### Установка
7
+ ## Установка
8
8
 
9
9
  ```bash
10
10
  npm install uuid-cbr
11
11
  ```
12
12
 
13
- ### Форматы модуля
13
+ ## Быстрый старт
14
14
 
15
- Пакет публикуется сразу в двух вариантах:
16
-
17
- - `require("uuid-cbr")` для CommonJS
18
- - `import { generate } from "uuid-cbr"` для ESM
19
- - встроенные декларации `index.d.ts` для TypeScript
15
+ CommonJS:
20
16
 
21
17
  ```js
22
18
  const { generate } = require("uuid-cbr");
19
+
20
+ const uid = generate();
23
21
  ```
24
22
 
23
+ ESM:
24
+
25
25
  ```js
26
26
  import { generate } from "uuid-cbr";
27
+
28
+ const uid = generate();
27
29
  ```
28
30
 
29
- ### API
31
+ ## Основные методы
30
32
 
31
- #### `generate(datetime?)`
33
+ ### `generate(datetime?)`
32
34
 
33
- Формирует УИд — строку из 38 символов в формате `8-4-4-4-12-1`, где последний символ контрольный.
35
+ Формирует УИд в формате `8-4-4-4-12-1`, где последний символ является контрольным.
34
36
 
35
- ```JavaScript
37
+ ```js
36
38
  const { generate } = require("uuid-cbr");
37
39
 
38
40
  const uid = generate(new Date("2021-09-24T09:55:09.332Z"));
@@ -42,54 +44,54 @@ const uidNow = generate();
42
44
  // генерация для текущего момента
43
45
  ```
44
46
 
45
- #### `isValid(uuid)`
47
+ ### `isValid(uuid)`
46
48
 
47
- Проверяет строку: формат UUID v1, variant-биты, контрольный символ.
49
+ Проверяет формат UUID v1, variant-биты и контрольный символ.
48
50
 
49
- ```JavaScript
51
+ ```js
50
52
  const { isValid } = require("uuid-cbr");
51
53
 
52
54
  isValid("80c57a90-1d1d-11ec-adda-26dbb65f1526-0"); // true
53
- isValid("not-a-uuid"); // false
55
+ isValid("not-a-uuid"); // false
54
56
  ```
55
57
 
56
- #### `toDate(uuid)`
58
+ ### `toDate(uuid)`
57
59
 
58
60
  Извлекает дату из UUID-части идентификатора.
59
61
 
60
- ```JavaScript
62
+ ```js
61
63
  const { toDate } = require("uuid-cbr");
62
64
 
63
65
  toDate("80c57a90-1d1d-11ec-adda-26dbb65f1526-0");
64
66
  // 2021-09-24T09:55:09.332Z
65
67
  ```
66
68
 
67
- #### `info(uuid)`
69
+ ### `info(uuid)`
68
70
 
69
- Метаданные идентификатора: длина, валидность, контрольный символ, clock sequence, дата.
71
+ Возвращает длину, валидность, контрольный символ, clock sequence и дату.
70
72
 
71
- ```JavaScript
73
+ ```js
72
74
  const { info } = require("uuid-cbr");
73
75
 
74
76
  info("80c57a90-1d1d-11ec-adda-26dbb65f1526-0");
75
77
  // { len: 38, valid: true, controlNum: '0', gClockSeq: ..., datetime: 2021-09-24T09:55:09.332Z }
76
78
  ```
77
79
 
78
- #### `getTime(datetime?)`
80
+ ### `getTime(datetime?)`
79
81
 
80
- Возвращает метку времени в 100-наносекундных интервалах (Number) — то же значение, которое кодируется в UUID.
82
+ Возвращает ту же метку времени в 100-нс интервалах, которая кодируется в UUID.
81
83
 
82
- ```JavaScript
84
+ ```js
83
85
  const { getTime } = require("uuid-cbr");
84
86
 
85
87
  getTime(new Date("2021-09-24T09:55:09.332Z"));
86
88
  ```
87
89
 
88
- #### `uid_init(options?)` / `uid_deinit()`
90
+ ## Управление генератором
89
91
 
90
- Lifecycle-управление генератором, аналог `uid_init` и `uid_deinit` из официального C-примера ЦБ.
92
+ Если нужен управляемый state генератора, используйте `uid_init`, `uid_create` и `uid_deinit`.
91
93
 
92
- ```JavaScript
94
+ ```js
93
95
  const { uid_init, uid_deinit, uid_create } = require("uuid-cbr");
94
96
 
95
97
  uid_init({
@@ -101,60 +103,12 @@ const uid = uid_create(new Date("2021-09-24T09:55:09.332Z"));
101
103
  uid_deinit();
102
104
  ```
103
105
 
104
- `options`:
105
-
106
- - `node` — 6 байт (Buffer, Array или hex-строка). По умолчанию — случайные.
107
- - `clockSeq` — 13-битное значение clock sequence. По умолчанию — случайное.
108
-
109
- #### `uid_create(datetime?)` / `uuid_create(datetime?)`
110
-
111
- - `uid_create` — формирует УИд-строку (аналог `generate`).
112
- - `uuid_create` — возвращает структуру полей UUID: `time_low`, `time_mid`, `time_hi_and_version`, `clock_seq_hi_and_reserved`, `clock_seq_low`, `node`.
113
-
114
- `uuid_init` / `uuid_deinit` — алиасы для `uid_init` / `uid_deinit`.
115
-
116
- ### Тесты
117
-
118
- ```bash
119
- npm test
120
- ```
121
-
122
- Тесты запускаются через встроенный раннер Node.js `node:test` и покрывают поведение публичного API как unit-тесты.
123
-
124
- ### Сверка с официальным алгоритмом
125
-
126
- ```bash
127
- npm run compare:official
128
- ```
129
-
130
- Скрипт собирает УИд при детерминированных входных данных и побайтово сравнивает результат с эталонной реализацией, эквивалентной официальному C-коду ЦБ.
131
-
132
- ### Проверка перед публикацией
133
-
134
- ```bash
135
- npm run verify:publish
136
- ```
137
-
138
- Эта команда последовательно выполняет:
139
-
140
- - unit-тесты;
141
- - сверку с официальным алгоритмом;
142
- - `npm pack --dry-run`, чтобы проверить состав публикуемого пакета.
143
-
144
- При `npm publish` эта проверка запускается автоматически через `prepublishOnly`.
145
-
146
- ### Что попадает в npm
147
-
148
- В опубликованный пакет входят только файлы рантайма:
149
-
150
- - `index.js`
151
- - `index.mjs`
152
- - `index.d.ts`
153
- - `README.md`
106
+ - `node` — 6 байт: Buffer, Array или hex-строка. По умолчанию случайные.
107
+ - `clockSeq` — 13-битный clock sequence. По умолчанию случайный.
154
108
 
155
- Тесты, служебные скрипты, локальные временные файлы и официальный reference-архив остаются в репозитории, но не публикуются в npm.
109
+ ## Совместимость API
156
110
 
157
- ### Официальные материалы
111
+ - `uid_create` формирует УИд-строку, аналог `generate`.
112
+ - `uuid_create` возвращает поля UUID: `time_low`, `time_mid`, `time_hi_and_version`, `clock_seq_hi_and_reserved`, `clock_seq_low`, `node`.
158
113
 
159
- - [docs/official/README.md](docs/official/README.md) описание сохранённых документов
160
- - [docs/official/cbr-algorithm-findings.md](docs/official/cbr-algorithm-findings.md) — результаты сверки с официальным примером
114
+ `uuid_init` и `uuid_deinit` это алиасы `uid_init` и `uid_deinit`.
package/package.json CHANGED
@@ -1,12 +1,17 @@
1
1
  {
2
2
  "name": "uuid-cbr",
3
- "version": "0.1.0",
4
- "description": "Генератор уникальных идентификаторов (УИд) по требованиям Банка России",
3
+ "version": "0.1.1",
4
+ "description": "Bank of Russia UID generator for Node.js based on UUID v1 with checksum",
5
5
  "keywords": [
6
6
  "uuid",
7
- "ЦБ",
8
- "cb",
9
- "cbr"
7
+ "uid",
8
+ "uuid-v1",
9
+ "cbr",
10
+ "bank-of-russia",
11
+ "central-bank-russia",
12
+ "bank-russia",
13
+ "bank-rossii",
14
+ "checksum"
10
15
  ],
11
16
  "main": "index.js",
12
17
  "module": "index.mjs",
@@ -27,6 +32,10 @@
27
32
  ],
28
33
  "sideEffects": false,
29
34
  "author": "kdinisv",
35
+ "homepage": "https://github.com/kdinisv/uuid-cbr#readme",
36
+ "bugs": {
37
+ "url": "https://github.com/kdinisv/uuid-cbr/issues"
38
+ },
30
39
  "repository": {
31
40
  "type": "git",
32
41
  "url": "https://github.com/kdinisv/uuid-cbr"