stdnum 1.4.13 → 1.4.15
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/lib/cjs/de/pwnr.d.ts +2 -0
- package/lib/cjs/de/pwnr.js +99 -73
- package/lib/cjs/mx/curp.d.ts +1 -1
- package/lib/cjs/mx/curp.js +10 -4
- package/lib/esm/de/pwnr.d.ts +2 -0
- package/lib/esm/de/pwnr.js +96 -72
- package/lib/esm/mx/curp.d.ts +1 -1
- package/lib/esm/mx/curp.js +10 -4
- package/package.json +1 -1
package/lib/cjs/de/pwnr.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { ValidateReturn } from '../types';
|
|
2
|
+
export declare function validateIssue(value: string): ValidateReturn;
|
|
3
|
+
export declare function validateNew(value: string): ValidateReturn;
|
|
2
4
|
export declare const name: string, localName: string, abbreviation: string | undefined, validate: (value: string) => ValidateReturn, format: (value: string) => string, compact: (value: string) => string;
|
package/lib/cjs/de/pwnr.js
CHANGED
|
@@ -23,20 +23,110 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.compact = exports.format = exports.validate = exports.abbreviation = exports.localName = exports.name = void 0;
|
|
26
|
+
exports.compact = exports.format = exports.validate = exports.abbreviation = exports.localName = exports.name = exports.validateNew = exports.validateIssue = void 0;
|
|
27
27
|
const exceptions = __importStar(require("../exceptions"));
|
|
28
28
|
const util_1 = require("../util");
|
|
29
|
+
const oldRegex = /^([0-9CFGHJKLMNPRTVWXYZ]{9})([0-9])[A-Z]?$/;
|
|
29
30
|
function clean(input) {
|
|
30
31
|
const [value, err] = util_1.strings.cleanUnicode(input, ' -./,');
|
|
31
32
|
if (err) {
|
|
32
33
|
return [value, err];
|
|
33
34
|
}
|
|
34
|
-
if (/[A-Z]/.test(value[10])) {
|
|
35
|
+
if (value.length >= 25 && /[A-Z]/.test(value[10])) {
|
|
35
36
|
const [p1, p2, p3, p4] = util_1.strings.splitAt(value, 10, 11, 25);
|
|
36
37
|
return [p1 + p3 + p2 + p4, err];
|
|
37
38
|
}
|
|
38
39
|
return [value, err];
|
|
39
40
|
}
|
|
41
|
+
function validateIssue(value) {
|
|
42
|
+
const match = value.match(oldRegex);
|
|
43
|
+
if (!match) {
|
|
44
|
+
return { isValid: false, error: new exceptions.InvalidFormat() };
|
|
45
|
+
}
|
|
46
|
+
const [issue, issueCheck] = [match[1], match[2]];
|
|
47
|
+
const issueSum = (0, util_1.weightedSum)(issue, {
|
|
48
|
+
weights: [7, 3, 1],
|
|
49
|
+
modulus: 10,
|
|
50
|
+
});
|
|
51
|
+
if (String(issueSum) !== issueCheck) {
|
|
52
|
+
return {
|
|
53
|
+
isValid: false,
|
|
54
|
+
error: new exceptions.InvalidChecksum('issue.checksum'),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
isValid: true,
|
|
59
|
+
compact: value,
|
|
60
|
+
isIndividual: true,
|
|
61
|
+
isCompany: false,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
exports.validateIssue = validateIssue;
|
|
65
|
+
function validateNew(value) {
|
|
66
|
+
if (!/^[0-9CFGHJKLMNPRTVWXYZ][0-9CFGHJKLMNPRTVWXYZ]+[A-Z][0-9]$/.test(value)) {
|
|
67
|
+
return { isValid: false, error: new exceptions.InvalidFormat() };
|
|
68
|
+
}
|
|
69
|
+
const [issue, issueCheck, birth, birthCheck, expiry, expiryCheck, nationality, checksum,] = util_1.strings.splitAt(value, 9, 10, 16, 17, 23, 24, 25);
|
|
70
|
+
if (!(0, util_1.isValidDateCompactYYMMDD)(birth)) {
|
|
71
|
+
return {
|
|
72
|
+
isValid: false,
|
|
73
|
+
error: new exceptions.InvalidComponent('birthdate'),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
if (!(0, util_1.isValidDateCompactYYMMDD)(expiry)) {
|
|
77
|
+
return {
|
|
78
|
+
isValid: false,
|
|
79
|
+
error: new exceptions.InvalidComponent('expiry'),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (!/^[A-Z]$/.test(nationality)) {
|
|
83
|
+
return {
|
|
84
|
+
isValid: false,
|
|
85
|
+
error: new exceptions.InvalidComponent('nationality'),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const res = validateIssue(issue + issueCheck);
|
|
89
|
+
if (res.isValid === false) {
|
|
90
|
+
return res;
|
|
91
|
+
}
|
|
92
|
+
const birthSum = (0, util_1.weightedSum)(birth, {
|
|
93
|
+
weights: [7, 3, 1],
|
|
94
|
+
modulus: 10,
|
|
95
|
+
});
|
|
96
|
+
const expirySum = (0, util_1.weightedSum)(expiry, {
|
|
97
|
+
weights: [7, 3, 1],
|
|
98
|
+
modulus: 10,
|
|
99
|
+
});
|
|
100
|
+
if (String(birthSum) !== birthCheck) {
|
|
101
|
+
return {
|
|
102
|
+
isValid: false,
|
|
103
|
+
error: new exceptions.InvalidChecksum('birth.checksum'),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (String(expirySum) !== expiryCheck) {
|
|
107
|
+
return {
|
|
108
|
+
isValid: false,
|
|
109
|
+
error: new exceptions.InvalidChecksum('expiry.checksum'),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const sum = (0, util_1.weightedSum)(value.substring(0, 24), {
|
|
113
|
+
weights: [7, 3, 1],
|
|
114
|
+
modulus: 10,
|
|
115
|
+
});
|
|
116
|
+
if (String(sum) !== checksum) {
|
|
117
|
+
return {
|
|
118
|
+
isValid: false,
|
|
119
|
+
error: new exceptions.InvalidChecksum('checksum'),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
isValid: true,
|
|
124
|
+
compact: value,
|
|
125
|
+
isIndividual: true,
|
|
126
|
+
isCompany: false,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
exports.validateNew = validateNew;
|
|
40
130
|
const impl = {
|
|
41
131
|
name: 'German Personalausweisnummer',
|
|
42
132
|
localName: 'Personalausweisnummer',
|
|
@@ -57,80 +147,16 @@ const impl = {
|
|
|
57
147
|
if (error) {
|
|
58
148
|
return { isValid: false, error };
|
|
59
149
|
}
|
|
60
|
-
if (value.length
|
|
61
|
-
return
|
|
62
|
-
}
|
|
63
|
-
if (!/^[CFGHJKLMNPRTVWXYZ][0-9CFGHJKLMNPRTVWXYZ]+[0-9]$/) {
|
|
64
|
-
return { isValid: false, error: new exceptions.InvalidFormat() };
|
|
65
|
-
}
|
|
66
|
-
const [issue, issueCheck, birth, birthCheck, expiry, expiryCheck, nationality, checksum,] = util_1.strings.splitAt(value, 9, 10, 16, 17, 23, 24, 25);
|
|
67
|
-
console.log('GOT', value, issue, birth, expiry);
|
|
68
|
-
if (!(0, util_1.isValidDateCompactYYMMDD)(birth)) {
|
|
69
|
-
return {
|
|
70
|
-
isValid: false,
|
|
71
|
-
error: new exceptions.InvalidComponent('birthdate'),
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
if (!(0, util_1.isValidDateCompactYYMMDD)(expiry)) {
|
|
75
|
-
return {
|
|
76
|
-
isValid: false,
|
|
77
|
-
error: new exceptions.InvalidComponent('expiry'),
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
if (!/^[A-Z]$/.test(nationality)) {
|
|
81
|
-
return {
|
|
82
|
-
isValid: false,
|
|
83
|
-
error: new exceptions.InvalidComponent('nationality'),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
const issueSum = (0, util_1.weightedSum)(issue, {
|
|
87
|
-
weights: [7, 3, 1],
|
|
88
|
-
modulus: 10,
|
|
89
|
-
});
|
|
90
|
-
const birthSum = (0, util_1.weightedSum)(birth, {
|
|
91
|
-
weights: [7, 3, 1],
|
|
92
|
-
modulus: 10,
|
|
93
|
-
});
|
|
94
|
-
const expirySum = (0, util_1.weightedSum)(expiry, {
|
|
95
|
-
weights: [7, 3, 1],
|
|
96
|
-
modulus: 10,
|
|
97
|
-
});
|
|
98
|
-
console.log('ISSUE', issue, issueSum, issueCheck);
|
|
99
|
-
if (String(issueSum) !== issueCheck) {
|
|
100
|
-
return {
|
|
101
|
-
isValid: false,
|
|
102
|
-
error: new exceptions.InvalidChecksum('issue.checksum'),
|
|
103
|
-
};
|
|
150
|
+
if (value.length === 26) {
|
|
151
|
+
return validateNew(value);
|
|
104
152
|
}
|
|
105
|
-
if (
|
|
106
|
-
return
|
|
107
|
-
isValid: false,
|
|
108
|
-
error: new exceptions.InvalidChecksum('birth.checksum'),
|
|
109
|
-
};
|
|
153
|
+
else if (value.length === 10 || value.length === 11) {
|
|
154
|
+
return validateIssue(value);
|
|
110
155
|
}
|
|
111
|
-
|
|
112
|
-
return {
|
|
113
|
-
isValid: false,
|
|
114
|
-
error: new exceptions.InvalidChecksum('expiry.checksum'),
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
const sum = (0, util_1.weightedSum)(value.substring(0, 24), {
|
|
118
|
-
weights: [7, 3, 1],
|
|
119
|
-
modulus: 10,
|
|
120
|
-
});
|
|
121
|
-
if (String(sum) !== checksum) {
|
|
122
|
-
return {
|
|
123
|
-
isValid: false,
|
|
124
|
-
error: new exceptions.InvalidChecksum('checksum'),
|
|
125
|
-
};
|
|
156
|
+
else {
|
|
157
|
+
return { isValid: false, error: new exceptions.InvalidLength() };
|
|
126
158
|
}
|
|
127
|
-
return {
|
|
128
|
-
isValid: true,
|
|
129
|
-
compact: value,
|
|
130
|
-
isIndividual: true,
|
|
131
|
-
isCompany: false,
|
|
132
|
-
};
|
|
133
159
|
},
|
|
134
160
|
};
|
|
135
161
|
exports.name = impl.name, exports.localName = impl.localName, exports.abbreviation = impl.abbreviation, exports.validate = impl.validate, exports.format = impl.format, exports.compact = impl.compact;
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHduci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZS9wd25yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLDBEQUE0QztBQUM1QyxrQ0FBeUU7QUFHekUsTUFBTSxRQUFRLEdBQUcsNENBQTRDLENBQUM7QUFFOUQsU0FBUyxLQUFLLENBQUMsS0FBYTtJQUMxQixNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLGNBQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTFELElBQUksR0FBRyxFQUFFO1FBQ1AsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztLQUNyQjtJQUdELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtRQUNqRCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsY0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1RCxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ2pDO0lBRUQsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLEtBQWE7SUFDekMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1YsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksVUFBVSxDQUFDLGFBQWEsRUFBRSxFQUFFLENB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
|
package/lib/cjs/mx/curp.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ValidateReturn } from '../types';
|
|
2
|
-
export declare function getGender(input: string): 'M' | 'F';
|
|
2
|
+
export declare function getGender(input: string): 'M' | 'F' | 'X';
|
|
3
3
|
export declare function getBirthDate(input: string): Date;
|
|
4
4
|
export declare const name: string, localName: string, abbreviation: string | undefined, validate: (value: string) => ValidateReturn, format: (value: string) => string, compact: (value: string) => string;
|
package/lib/cjs/mx/curp.js
CHANGED
|
@@ -183,7 +183,7 @@ const impl = {
|
|
|
183
183
|
if (nameBlacklist.has(value.substr(0, 4))) {
|
|
184
184
|
return { isValid: false, error: new exceptions.InvalidComponent() };
|
|
185
185
|
}
|
|
186
|
-
if (!['H', 'M'].includes(value[10])) {
|
|
186
|
+
if (!['H', 'M', 'X'].includes(value[10])) {
|
|
187
187
|
return { isValid: false, error: new exceptions.InvalidComponent() };
|
|
188
188
|
}
|
|
189
189
|
if (!validStates.has(value.substr(11, 2))) {
|
|
@@ -216,8 +216,14 @@ function getBirthDateImpl(value) {
|
|
|
216
216
|
return new Date(yyN + 2000, mmN, ddN);
|
|
217
217
|
}
|
|
218
218
|
function getGender(input) {
|
|
219
|
-
const value = impl.compact(input);
|
|
220
|
-
|
|
219
|
+
const value = impl.compact(input)[10];
|
|
220
|
+
if (value === 'X') {
|
|
221
|
+
return 'X';
|
|
222
|
+
}
|
|
223
|
+
else if (value === 'H') {
|
|
224
|
+
return 'M';
|
|
225
|
+
}
|
|
226
|
+
return 'F';
|
|
221
227
|
}
|
|
222
228
|
exports.getGender = getGender;
|
|
223
229
|
function getBirthDate(input) {
|
|
@@ -226,4 +232,4 @@ function getBirthDate(input) {
|
|
|
226
232
|
}
|
|
227
233
|
exports.getBirthDate = getBirthDate;
|
|
228
234
|
exports.name = impl.name, exports.localName = impl.localName, exports.abbreviation = impl.abbreviation, exports.validate = impl.validate, exports.format = impl.format, exports.compact = impl.compact;
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9teC9jdXJwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsMERBQTRDO0FBQzVDLGtDQUE0RDtBQUc1RCxTQUFTLEtBQUssQ0FBQyxLQUFhO0lBQzFCLE9BQU8sY0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzVCLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFD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
|
package/lib/esm/de/pwnr.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { ValidateReturn } from '../types';
|
|
2
|
+
export declare function validateIssue(value: string): ValidateReturn;
|
|
3
|
+
export declare function validateNew(value: string): ValidateReturn;
|
|
2
4
|
export declare const name: string, localName: string, abbreviation: string | undefined, validate: (value: string) => ValidateReturn, format: (value: string) => string, compact: (value: string) => string;
|
package/lib/esm/de/pwnr.js
CHANGED
|
@@ -1,16 +1,104 @@
|
|
|
1
1
|
import * as exceptions from '../exceptions';
|
|
2
2
|
import { strings, isValidDateCompactYYMMDD, weightedSum } from '../util';
|
|
3
|
+
const oldRegex = /^([0-9CFGHJKLMNPRTVWXYZ]{9})([0-9])[A-Z]?$/;
|
|
3
4
|
function clean(input) {
|
|
4
5
|
const [value, err] = strings.cleanUnicode(input, ' -./,');
|
|
5
6
|
if (err) {
|
|
6
7
|
return [value, err];
|
|
7
8
|
}
|
|
8
|
-
if (/[A-Z]/.test(value[10])) {
|
|
9
|
+
if (value.length >= 25 && /[A-Z]/.test(value[10])) {
|
|
9
10
|
const [p1, p2, p3, p4] = strings.splitAt(value, 10, 11, 25);
|
|
10
11
|
return [p1 + p3 + p2 + p4, err];
|
|
11
12
|
}
|
|
12
13
|
return [value, err];
|
|
13
14
|
}
|
|
15
|
+
export function validateIssue(value) {
|
|
16
|
+
const match = value.match(oldRegex);
|
|
17
|
+
if (!match) {
|
|
18
|
+
return { isValid: false, error: new exceptions.InvalidFormat() };
|
|
19
|
+
}
|
|
20
|
+
const [issue, issueCheck] = [match[1], match[2]];
|
|
21
|
+
const issueSum = weightedSum(issue, {
|
|
22
|
+
weights: [7, 3, 1],
|
|
23
|
+
modulus: 10,
|
|
24
|
+
});
|
|
25
|
+
if (String(issueSum) !== issueCheck) {
|
|
26
|
+
return {
|
|
27
|
+
isValid: false,
|
|
28
|
+
error: new exceptions.InvalidChecksum('issue.checksum'),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
isValid: true,
|
|
33
|
+
compact: value,
|
|
34
|
+
isIndividual: true,
|
|
35
|
+
isCompany: false,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function validateNew(value) {
|
|
39
|
+
if (!/^[0-9CFGHJKLMNPRTVWXYZ][0-9CFGHJKLMNPRTVWXYZ]+[A-Z][0-9]$/.test(value)) {
|
|
40
|
+
return { isValid: false, error: new exceptions.InvalidFormat() };
|
|
41
|
+
}
|
|
42
|
+
const [issue, issueCheck, birth, birthCheck, expiry, expiryCheck, nationality, checksum,] = strings.splitAt(value, 9, 10, 16, 17, 23, 24, 25);
|
|
43
|
+
if (!isValidDateCompactYYMMDD(birth)) {
|
|
44
|
+
return {
|
|
45
|
+
isValid: false,
|
|
46
|
+
error: new exceptions.InvalidComponent('birthdate'),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (!isValidDateCompactYYMMDD(expiry)) {
|
|
50
|
+
return {
|
|
51
|
+
isValid: false,
|
|
52
|
+
error: new exceptions.InvalidComponent('expiry'),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (!/^[A-Z]$/.test(nationality)) {
|
|
56
|
+
return {
|
|
57
|
+
isValid: false,
|
|
58
|
+
error: new exceptions.InvalidComponent('nationality'),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const res = validateIssue(issue + issueCheck);
|
|
62
|
+
if (res.isValid === false) {
|
|
63
|
+
return res;
|
|
64
|
+
}
|
|
65
|
+
const birthSum = weightedSum(birth, {
|
|
66
|
+
weights: [7, 3, 1],
|
|
67
|
+
modulus: 10,
|
|
68
|
+
});
|
|
69
|
+
const expirySum = weightedSum(expiry, {
|
|
70
|
+
weights: [7, 3, 1],
|
|
71
|
+
modulus: 10,
|
|
72
|
+
});
|
|
73
|
+
if (String(birthSum) !== birthCheck) {
|
|
74
|
+
return {
|
|
75
|
+
isValid: false,
|
|
76
|
+
error: new exceptions.InvalidChecksum('birth.checksum'),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (String(expirySum) !== expiryCheck) {
|
|
80
|
+
return {
|
|
81
|
+
isValid: false,
|
|
82
|
+
error: new exceptions.InvalidChecksum('expiry.checksum'),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const sum = weightedSum(value.substring(0, 24), {
|
|
86
|
+
weights: [7, 3, 1],
|
|
87
|
+
modulus: 10,
|
|
88
|
+
});
|
|
89
|
+
if (String(sum) !== checksum) {
|
|
90
|
+
return {
|
|
91
|
+
isValid: false,
|
|
92
|
+
error: new exceptions.InvalidChecksum('checksum'),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
isValid: true,
|
|
97
|
+
compact: value,
|
|
98
|
+
isIndividual: true,
|
|
99
|
+
isCompany: false,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
14
102
|
const impl = {
|
|
15
103
|
name: 'German Personalausweisnummer',
|
|
16
104
|
localName: 'Personalausweisnummer',
|
|
@@ -31,80 +119,16 @@ const impl = {
|
|
|
31
119
|
if (error) {
|
|
32
120
|
return { isValid: false, error };
|
|
33
121
|
}
|
|
34
|
-
if (value.length
|
|
35
|
-
return
|
|
36
|
-
}
|
|
37
|
-
if (!/^[CFGHJKLMNPRTVWXYZ][0-9CFGHJKLMNPRTVWXYZ]+[0-9]$/) {
|
|
38
|
-
return { isValid: false, error: new exceptions.InvalidFormat() };
|
|
39
|
-
}
|
|
40
|
-
const [issue, issueCheck, birth, birthCheck, expiry, expiryCheck, nationality, checksum,] = strings.splitAt(value, 9, 10, 16, 17, 23, 24, 25);
|
|
41
|
-
console.log('GOT', value, issue, birth, expiry);
|
|
42
|
-
if (!isValidDateCompactYYMMDD(birth)) {
|
|
43
|
-
return {
|
|
44
|
-
isValid: false,
|
|
45
|
-
error: new exceptions.InvalidComponent('birthdate'),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
if (!isValidDateCompactYYMMDD(expiry)) {
|
|
49
|
-
return {
|
|
50
|
-
isValid: false,
|
|
51
|
-
error: new exceptions.InvalidComponent('expiry'),
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
if (!/^[A-Z]$/.test(nationality)) {
|
|
55
|
-
return {
|
|
56
|
-
isValid: false,
|
|
57
|
-
error: new exceptions.InvalidComponent('nationality'),
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
const issueSum = weightedSum(issue, {
|
|
61
|
-
weights: [7, 3, 1],
|
|
62
|
-
modulus: 10,
|
|
63
|
-
});
|
|
64
|
-
const birthSum = weightedSum(birth, {
|
|
65
|
-
weights: [7, 3, 1],
|
|
66
|
-
modulus: 10,
|
|
67
|
-
});
|
|
68
|
-
const expirySum = weightedSum(expiry, {
|
|
69
|
-
weights: [7, 3, 1],
|
|
70
|
-
modulus: 10,
|
|
71
|
-
});
|
|
72
|
-
console.log('ISSUE', issue, issueSum, issueCheck);
|
|
73
|
-
if (String(issueSum) !== issueCheck) {
|
|
74
|
-
return {
|
|
75
|
-
isValid: false,
|
|
76
|
-
error: new exceptions.InvalidChecksum('issue.checksum'),
|
|
77
|
-
};
|
|
122
|
+
if (value.length === 26) {
|
|
123
|
+
return validateNew(value);
|
|
78
124
|
}
|
|
79
|
-
if (
|
|
80
|
-
return
|
|
81
|
-
isValid: false,
|
|
82
|
-
error: new exceptions.InvalidChecksum('birth.checksum'),
|
|
83
|
-
};
|
|
125
|
+
else if (value.length === 10 || value.length === 11) {
|
|
126
|
+
return validateIssue(value);
|
|
84
127
|
}
|
|
85
|
-
|
|
86
|
-
return {
|
|
87
|
-
isValid: false,
|
|
88
|
-
error: new exceptions.InvalidChecksum('expiry.checksum'),
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
const sum = weightedSum(value.substring(0, 24), {
|
|
92
|
-
weights: [7, 3, 1],
|
|
93
|
-
modulus: 10,
|
|
94
|
-
});
|
|
95
|
-
if (String(sum) !== checksum) {
|
|
96
|
-
return {
|
|
97
|
-
isValid: false,
|
|
98
|
-
error: new exceptions.InvalidChecksum('checksum'),
|
|
99
|
-
};
|
|
128
|
+
else {
|
|
129
|
+
return { isValid: false, error: new exceptions.InvalidLength() };
|
|
100
130
|
}
|
|
101
|
-
return {
|
|
102
|
-
isValid: true,
|
|
103
|
-
compact: value,
|
|
104
|
-
isIndividual: true,
|
|
105
|
-
isCompany: false,
|
|
106
|
-
};
|
|
107
131
|
},
|
|
108
132
|
};
|
|
109
133
|
export const { name, localName, abbreviation, validate, format, compact } = impl;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHduci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZS9wd25yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUd6RSxNQUFNLFFBQVEsR0FBRyw0Q0FBNEMsQ0FBQztBQUU5RCxTQUFTLEtBQUssQ0FBQyxLQUFhO0lBQzFCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFMUQsSUFBSSxHQUFHLEVBQUU7UUFDUCxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3JCO0lBR0QsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ2pELE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTVELE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDakM7SUFFRCxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWE7SUFDekMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1YsT0FBTyxFQUFFLE9BQU8sRUFBRSxL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
|
package/lib/esm/mx/curp.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ValidateReturn } from '../types';
|
|
2
|
-
export declare function getGender(input: string): 'M' | 'F';
|
|
2
|
+
export declare function getGender(input: string): 'M' | 'F' | 'X';
|
|
3
3
|
export declare function getBirthDate(input: string): Date;
|
|
4
4
|
export declare const name: string, localName: string, abbreviation: string | undefined, validate: (value: string) => ValidateReturn, format: (value: string) => string, compact: (value: string) => string;
|
package/lib/esm/mx/curp.js
CHANGED
|
@@ -157,7 +157,7 @@ const impl = {
|
|
|
157
157
|
if (nameBlacklist.has(value.substr(0, 4))) {
|
|
158
158
|
return { isValid: false, error: new exceptions.InvalidComponent() };
|
|
159
159
|
}
|
|
160
|
-
if (!['H', 'M'].includes(value[10])) {
|
|
160
|
+
if (!['H', 'M', 'X'].includes(value[10])) {
|
|
161
161
|
return { isValid: false, error: new exceptions.InvalidComponent() };
|
|
162
162
|
}
|
|
163
163
|
if (!validStates.has(value.substr(11, 2))) {
|
|
@@ -190,12 +190,18 @@ function getBirthDateImpl(value) {
|
|
|
190
190
|
return new Date(yyN + 2000, mmN, ddN);
|
|
191
191
|
}
|
|
192
192
|
export function getGender(input) {
|
|
193
|
-
const value = impl.compact(input);
|
|
194
|
-
|
|
193
|
+
const value = impl.compact(input)[10];
|
|
194
|
+
if (value === 'X') {
|
|
195
|
+
return 'X';
|
|
196
|
+
}
|
|
197
|
+
else if (value === 'H') {
|
|
198
|
+
return 'M';
|
|
199
|
+
}
|
|
200
|
+
return 'F';
|
|
195
201
|
}
|
|
196
202
|
export function getBirthDate(input) {
|
|
197
203
|
const value = impl.compact(input);
|
|
198
204
|
return getBirthDateImpl(value);
|
|
199
205
|
}
|
|
200
206
|
export const { name, localName, abbreviation, validate, format, compact } = impl;
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9teC9jdXJwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHNUQsU0FBUyxLQUFLLENBQUMsS0FBYTtJQUMxQixPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUM1QixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixN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
|