bsn-js 1.0.0 → 1.0.4
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 +60 -0
- package/lib/generator.js +1 -1
- package/lib/generator.js.map +1 -1
- package/package.json +2 -2
- package/lib/generator.spec.d.ts +0 -1
- package/lib/generator.spec.js +0 -12
- package/lib/generator.spec.js.map +0 -1
- package/lib/validator.spec.d.ts +0 -1
- package/lib/validator.spec.js +0 -116
- package/lib/validator.spec.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,2 +1,62 @@
|
|
|
1
1
|
[](https://github.com/willemverbuyst/bsn-js/actions/workflows/lint-test-build.yml)
|
|
2
2
|
[](https://github.com/willemverbuyst/bsn-js/actions/workflows/pages/pages-build-deployment)
|
|
3
|
+
|
|
4
|
+
# bsn-js
|
|
5
|
+
|
|
6
|
+
bsn-js can be used to generate a test BSN (burger service nummer) or validate an existing BSN
|
|
7
|
+
|
|
8
|
+
works for JavaScript and TypeScript (type definitions included)
|
|
9
|
+
|
|
10
|
+
## installation
|
|
11
|
+
|
|
12
|
+
`npm install bsn-js`
|
|
13
|
+
|
|
14
|
+
or using yarn
|
|
15
|
+
|
|
16
|
+
`yarn add bsn-js`
|
|
17
|
+
|
|
18
|
+
<br>
|
|
19
|
+
|
|
20
|
+
## usage
|
|
21
|
+
|
|
22
|
+
#### validate existing BSN
|
|
23
|
+
|
|
24
|
+
`import { isValidBSN } from 'bsn-js'`
|
|
25
|
+
|
|
26
|
+
or
|
|
27
|
+
|
|
28
|
+
`const { isValidBSN } = require('bsn-js')`
|
|
29
|
+
|
|
30
|
+
pass the BSN (string) to the function and it will return `true` or `false`
|
|
31
|
+
|
|
32
|
+
example: `const validBSN = isValidBSN('12312312') # false`
|
|
33
|
+
|
|
34
|
+
<br>
|
|
35
|
+
|
|
36
|
+
#### generate BSN for testing
|
|
37
|
+
|
|
38
|
+
`import { generateBSN } from 'bsn-js'`
|
|
39
|
+
|
|
40
|
+
or
|
|
41
|
+
|
|
42
|
+
`const { generateBSN } = require('bsn-js)`
|
|
43
|
+
|
|
44
|
+
test BSNs will consist of 9 characters
|
|
45
|
+
|
|
46
|
+
the Dutch authority has reserved BSNs starting with 0000 and 99999 for testing
|
|
47
|
+
|
|
48
|
+
the generetated BSN will start with 99999 by default
|
|
49
|
+
|
|
50
|
+
`const bsn = generateBSN() # 999999400`
|
|
51
|
+
|
|
52
|
+
when the function generateBSN is given true as argument, it will return a BSN starting with 0000
|
|
53
|
+
|
|
54
|
+
`const bsn = generateBSN(true) # 000078840`
|
|
55
|
+
|
|
56
|
+
<br>
|
|
57
|
+
|
|
58
|
+
## information BSN
|
|
59
|
+
|
|
60
|
+
[official docs](https://www.government.nl/topics/personal-data/citizen-service-number-bsn)
|
|
61
|
+
|
|
62
|
+
[11 check](https://en.wikipedia.org/wiki/Check_digit)
|
package/lib/generator.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.generateBSN = void 0;
|
|
|
4
4
|
var generateBSN = function (withLeadingZeroes) {
|
|
5
5
|
var bsn = {
|
|
6
6
|
leading: '9999',
|
|
7
|
-
i4:
|
|
7
|
+
i4: 9,
|
|
8
8
|
i5: Math.floor(Math.random() * 10),
|
|
9
9
|
i6: Math.floor(Math.random() * 10),
|
|
10
10
|
i7: Math.floor(Math.random() * 10),
|
package/lib/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"/","sources":["generator.ts"],"names":[],"mappings":";;;AAgBO,IAAM,WAAW,GAAG,UAAC,iBAA2B;IACtD,IAAM,GAAG,GAAQ;QAChB,OAAO,EAAE,MAAM;QACf,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"/","sources":["generator.ts"],"names":[],"mappings":";;;AAgBO,IAAM,WAAW,GAAG,UAAC,iBAA2B;IACtD,IAAM,GAAG,GAAQ;QAChB,OAAO,EAAE,MAAM;QACf,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QAClC,EAAE,EAAE,CAAC;KACL,CAAA;IAED,IAAI,iBAAiB;QAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;IAE3C,IAAM,GAAG,GACR,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAC7C,UAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAf,CAAe,EAC5B,CAAC,CACD;QACD,CAAC,GAAG,GAAG,CAAC,EAAE;QACV,CAAC,GAAG,GAAG,CAAC,EAAE;QACV,CAAC,GAAG,GAAG,CAAC,EAAE;QACV,CAAC,GAAG,GAAG,CAAC,EAAE,CAAA;IAEX,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IAEpD,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE;QAC7B,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACX,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;KACV;IAED,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;QAChC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACX,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;KACV;IAED,OAAO,UAAG,GAAG,CAAC,OAAO,SAAG,GAAG,CAAC,EAAE,SAAG,GAAG,CAAC,EAAE,SAAG,GAAG,CAAC,EAAE,SAAG,GAAG,CAAC,EAAE,SAAG,GAAG,CAAC,EAAE,CAAE,CAAA;AACrE,CAAC,CAAA;AAnCY,QAAA,WAAW,eAmCvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bsn-js",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Generator/validator for (Dutch) BSNs",
|
|
5
5
|
"repository": "https://github.com/willemverbuyst/bsn-js",
|
|
6
6
|
"author": "Willem Verbuyst",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"size": "size-limit",
|
|
30
30
|
"test": "jest",
|
|
31
31
|
"build": "tsc -p tsconfig.json",
|
|
32
|
-
"clean": "rm -rf lib
|
|
32
|
+
"clean": "rm -rf ./lib",
|
|
33
33
|
"docs": "typedoc --entryPoints src/index.ts",
|
|
34
34
|
"prepare": "npm run clean && npm run build",
|
|
35
35
|
"prepublishOnly": "npm test && npm run lint",
|
package/lib/generator.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/generator.spec.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports.__esModule = true;
|
|
3
|
-
var generator_1 = require("./generator");
|
|
4
|
-
var validator_1 = require("./validator");
|
|
5
|
-
describe('#generateBSN', function () {
|
|
6
|
-
var testcases = Array.from({ length: 50 }, function (_, i) { return i + 1; });
|
|
7
|
-
test.each(testcases)('%s: should generate valid BSN)', function () {
|
|
8
|
-
return expect((0, validator_1.isValidBSN)((0, generator_1.generateBSN)())).toBe(true);
|
|
9
|
-
});
|
|
10
|
-
test.each(testcases)('%s: with leading "0000" should generate valid BSN)', function () { return expect((0, validator_1.isValidBSN)((0, generator_1.generateBSN)(true))).toBe(true); });
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=generator.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generator.spec.js","sourceRoot":"/","sources":["generator.spec.ts"],"names":[],"mappings":";;AAAA,yCAAyC;AACzC,yCAAwC;AAExC,QAAQ,CAAC,cAAc,EAAE;IACxB,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,CAAA;IAE7D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,gCAAgC,EAAE;QACtD,OAAA,MAAM,CAAC,IAAA,sBAAU,EAAC,IAAA,uBAAW,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAA5C,CAA4C,CAC5C,CAAA;IAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CACnB,oDAAoD,EACpD,cAAM,OAAA,MAAM,CAAC,IAAA,sBAAU,EAAC,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAhD,CAAgD,CACtD,CAAA;AACF,CAAC,CAAC,CAAA"}
|
package/lib/validator.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/validator.spec.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
exports.__esModule = true;
|
|
3
|
-
var validator_1 = require("./validator");
|
|
4
|
-
var validBSNs = [
|
|
5
|
-
'000006944',
|
|
6
|
-
'000003086',
|
|
7
|
-
'000006154',
|
|
8
|
-
'999993239',
|
|
9
|
-
'000003803',
|
|
10
|
-
'000007900',
|
|
11
|
-
'999992089',
|
|
12
|
-
'799890054',
|
|
13
|
-
'000005083',
|
|
14
|
-
'000001533',
|
|
15
|
-
'000000681',
|
|
16
|
-
'999999941',
|
|
17
|
-
'999998882',
|
|
18
|
-
'999994505',
|
|
19
|
-
'999997282',
|
|
20
|
-
'000006506',
|
|
21
|
-
'000005642',
|
|
22
|
-
'000002082',
|
|
23
|
-
'000001156',
|
|
24
|
-
'999990202',
|
|
25
|
-
'000004583',
|
|
26
|
-
'999999606',
|
|
27
|
-
'000006580',
|
|
28
|
-
'999995315',
|
|
29
|
-
'000007006',
|
|
30
|
-
'000002264',
|
|
31
|
-
'000001880',
|
|
32
|
-
'000005551',
|
|
33
|
-
'000007560',
|
|
34
|
-
'000002963',
|
|
35
|
-
'000008230',
|
|
36
|
-
'999994657',
|
|
37
|
-
'999999357',
|
|
38
|
-
'999993768',
|
|
39
|
-
'000009611',
|
|
40
|
-
'000000929',
|
|
41
|
-
'999995224',
|
|
42
|
-
'000005873',
|
|
43
|
-
'000007869',
|
|
44
|
-
'999992260',
|
|
45
|
-
'999994438',
|
|
46
|
-
'999996526',
|
|
47
|
-
'999991541',
|
|
48
|
-
'999999229',
|
|
49
|
-
'000005137',
|
|
50
|
-
'999994256',
|
|
51
|
-
'000002501',
|
|
52
|
-
'999993562',
|
|
53
|
-
'999990779',
|
|
54
|
-
'999993306',
|
|
55
|
-
];
|
|
56
|
-
var invalidBSNs = [
|
|
57
|
-
'00001',
|
|
58
|
-
'0000000001',
|
|
59
|
-
'1212121212',
|
|
60
|
-
'999993237',
|
|
61
|
-
'000003802',
|
|
62
|
-
'000007901',
|
|
63
|
-
'999992189',
|
|
64
|
-
'799890053',
|
|
65
|
-
'000015083',
|
|
66
|
-
'000001532',
|
|
67
|
-
'0100006121',
|
|
68
|
-
'999999942',
|
|
69
|
-
'998882',
|
|
70
|
-
'999994504',
|
|
71
|
-
'99997282',
|
|
72
|
-
'000006505',
|
|
73
|
-
'200081642',
|
|
74
|
-
'000082083',
|
|
75
|
-
'000081156',
|
|
76
|
-
'999080202',
|
|
77
|
-
'000081880',
|
|
78
|
-
'000085551',
|
|
79
|
-
'000087560',
|
|
80
|
-
'000082963',
|
|
81
|
-
'000088230',
|
|
82
|
-
'999984657',
|
|
83
|
-
'999989357',
|
|
84
|
-
'999983768',
|
|
85
|
-
'000089611',
|
|
86
|
-
'000080929',
|
|
87
|
-
'999985224',
|
|
88
|
-
'000085873',
|
|
89
|
-
'fake-bsn',
|
|
90
|
-
'999982260',
|
|
91
|
-
'999984438',
|
|
92
|
-
'9999aa652',
|
|
93
|
-
'999981541',
|
|
94
|
-
'999989229',
|
|
95
|
-
'000085137',
|
|
96
|
-
'99998425x',
|
|
97
|
-
'000082501',
|
|
98
|
-
'999983562',
|
|
99
|
-
'999980779',
|
|
100
|
-
'979983306',
|
|
101
|
-
'070008230',
|
|
102
|
-
'97999465a',
|
|
103
|
-
'979999357',
|
|
104
|
-
'979993768',
|
|
105
|
-
'070009611',
|
|
106
|
-
'070000929',
|
|
107
|
-
];
|
|
108
|
-
describe('#isValidBSN', function () {
|
|
109
|
-
test.each(validBSNs)('isValidBSN(%s) returns true', function (BSN) {
|
|
110
|
-
return expect((0, validator_1.isValidBSN)(BSN)).toBe(true);
|
|
111
|
-
});
|
|
112
|
-
test.each(invalidBSNs)('isValidBSN(%s) returns false', function (BSN) {
|
|
113
|
-
return expect((0, validator_1.isValidBSN)(BSN)).toBe(false);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
//# sourceMappingURL=validator.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.spec.js","sourceRoot":"/","sources":["validator.spec.ts"],"names":[],"mappings":";;AAAA,yCAAwC;AAExC,IAAM,SAAS,GAAG;IACjB,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;CACX,CAAA;AAED,IAAM,WAAW,GAAG;IACnB,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,WAAW;IACX,UAAU;IACV,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,UAAU;IACV,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;CACX,CAAA;AAED,QAAQ,CAAC,aAAa,EAAE;IACvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,6BAA6B,EAAE,UAAA,GAAG;QACtD,OAAA,MAAM,CAAC,IAAA,sBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAAlC,CAAkC,CAClC,CAAA;IAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,8BAA8B,EAAE,UAAA,GAAG;QACzD,OAAA,MAAM,CAAC,IAAA,sBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAAnC,CAAmC,CACnC,CAAA;AACF,CAAC,CAAC,CAAA"}
|