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.
- package/README.md +36 -82
- package/package.json +14 -5
package/README.md
CHANGED
|
@@ -1,38 +1,40 @@
|
|
|
1
1
|
# UUID-CBR
|
|
2
2
|
|
|
3
|
-
> Генератор
|
|
3
|
+
> Генератор УИд для Node.js по требованиям Банка России.
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
31
|
+
## Основные методы
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
### `generate(datetime?)`
|
|
32
34
|
|
|
33
|
-
Формирует УИд
|
|
35
|
+
Формирует УИд в формате `8-4-4-4-12-1`, где последний символ является контрольным.
|
|
34
36
|
|
|
35
|
-
```
|
|
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
|
-
|
|
47
|
+
### `isValid(uuid)`
|
|
46
48
|
|
|
47
|
-
Проверяет
|
|
49
|
+
Проверяет формат UUID v1, variant-биты и контрольный символ.
|
|
48
50
|
|
|
49
|
-
```
|
|
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");
|
|
55
|
+
isValid("not-a-uuid"); // false
|
|
54
56
|
```
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
### `toDate(uuid)`
|
|
57
59
|
|
|
58
60
|
Извлекает дату из UUID-части идентификатора.
|
|
59
61
|
|
|
60
|
-
```
|
|
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
|
-
|
|
69
|
+
### `info(uuid)`
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
Возвращает длину, валидность, контрольный символ, clock sequence и дату.
|
|
70
72
|
|
|
71
|
-
```
|
|
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
|
-
|
|
80
|
+
### `getTime(datetime?)`
|
|
79
81
|
|
|
80
|
-
Возвращает метку времени в 100
|
|
82
|
+
Возвращает ту же метку времени в 100-нс интервалах, которая кодируется в UUID.
|
|
81
83
|
|
|
82
|
-
```
|
|
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
|
-
|
|
90
|
+
## Управление генератором
|
|
89
91
|
|
|
90
|
-
|
|
92
|
+
Если нужен управляемый state генератора, используйте `uid_init`, `uid_create` и `uid_deinit`.
|
|
91
93
|
|
|
92
|
-
```
|
|
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
|
-
`
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
"
|
|
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"
|