asma-helpers 0.37.15 → 0.37.17

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.
@@ -16,6 +16,21 @@ export declare const validateNorwegianPersonalNumber: (number: string) => NORWEG
16
16
  */
17
17
  export declare const getBirthDateFromNorwegianPersonalNumber: (number: string) => string | null;
18
18
  export declare const getAgeFromNorwegianPersonalNumber: (pnr: string) => number | null;
19
+ /**
20
+ *
21
+ * @param pnr string
22
+ * @returns pnr if validation passed, or null if validation failed
23
+ */
24
+ export declare function getValidNorwegianPersonalNumber(pnr: string): string | null;
25
+ export type GENDER = 'MALE' | 'FEMALE';
26
+ /**
27
+ *
28
+ * @param pnr string - Norwegian personal number
29
+ * @returns `GENDER` if successfully determined, otherwise `null`
30
+ */
31
+ export declare const getGenderFromNorwegianPersonalNumber: (pnr: string) => GENDER | null;
32
+ export declare const isMale: (pnr: string) => boolean;
33
+ export declare const isFemale: (pnr: string) => boolean;
19
34
  export declare function generateUniqueToken(user: {
20
35
  fnr: string;
21
36
  salt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"validateNorwegianPersonalNumber.d.ts","sourceRoot":"","sources":["../../src/helpers/validateNorwegianPersonalNumber.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,wDAAyD,CAAA;AAE/F,MAAM,MAAM,+BAA+B,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;AACpG,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElE;AACD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1D;AACD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElE;AACD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AACD,wBAAgB,8CAA8C,CAAC,MAAM,EAAE,MAAM,GAAG;IAC5E,KAAK,EAAE,+BAA+B,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CA4FA;AAED,eAAO,MAAM,+BAA+B,WAAY,MAAM,oCACE,CAAA;AAEhE;;;;GAIG;AACH,eAAO,MAAM,uCAAuC,WAAY,MAAM,kBACM,CAAA;AAE5E,eAAO,MAAM,iCAAiC,QAAS,MAAM,kBA6B5D,CAAA;AA2CD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQrH"}
1
+ {"version":3,"file":"validateNorwegianPersonalNumber.d.ts","sourceRoot":"","sources":["../../src/helpers/validateNorwegianPersonalNumber.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,wDAAyD,CAAA;AAE/F,MAAM,MAAM,+BAA+B,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;AACpG,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElE;AACD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1D;AACD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElE;AACD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AACD,wBAAgB,8CAA8C,CAAC,MAAM,EAAE,MAAM,GAAG;IAC5E,KAAK,EAAE,+BAA+B,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CA4FA;AAED,eAAO,MAAM,+BAA+B,WAAY,MAAM,oCACE,CAAA;AAEhE;;;;GAIG;AACH,eAAO,MAAM,uCAAuC,WAAY,MAAM,kBACM,CAAA;AAE5E,eAAO,MAAM,iCAAiC,QAAS,MAAM,kBA6B5D,CAAA;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ1E;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;AACtC;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,QAAS,MAAM,KAAG,MAAM,GAAG,IAS3E,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,MAAM,KAAG,OAA+D,CAAA;AAEpG,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,OAAiE,CAAA;AA2CxG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQrH"}
@@ -51,10 +51,7 @@ export function validateNorwegianPersonalNumberAndGetBirthDate(number) {
51
51
  else {
52
52
  month = digits[2] * 10 + digits[3];
53
53
  }
54
- if (!isValidDate(year, month, day)) {
55
- return { class: 'INVALID' };
56
- }
57
- if (isTemporary) {
54
+ if (isTemporary && isValidDate(year, month, day)) {
58
55
  return { class: 'TEMPORARY', birthDate };
59
56
  }
60
57
  // Validate control digits (modulus 11)
@@ -75,6 +72,9 @@ export function validateNorwegianPersonalNumberAndGetBirthDate(number) {
75
72
  // Update birth date to reflect adjusted day
76
73
  return { class: 'DNUMBER', birthDate: `${formatWithLeadingZero(day)}.${formattedMonth}.${fullYear}` };
77
74
  }
75
+ if (!isValidDate(year, month, day)) {
76
+ return { class: 'INVALID' };
77
+ }
78
78
  return { class: 'REAL', birthDate };
79
79
  }
80
80
  export const validateNorwegianPersonalNumber = (number) => validateNorwegianPersonalNumberAndGetBirthDate(number).class;
@@ -105,6 +105,33 @@ export const getAgeFromNorwegianPersonalNumber = (pnr) => {
105
105
  }
106
106
  return age;
107
107
  };
108
+ /**
109
+ *
110
+ * @param pnr string
111
+ * @returns pnr if validation passed, or null if validation failed
112
+ */
113
+ export function getValidNorwegianPersonalNumber(pnr) {
114
+ const validationResult = validateNorwegianPersonalNumber(pnr);
115
+ if (validationResult === 'INVALID') {
116
+ return null;
117
+ }
118
+ return pnr;
119
+ }
120
+ /**
121
+ *
122
+ * @param pnr string - Norwegian personal number
123
+ * @returns `GENDER` if successfully determined, otherwise `null`
124
+ */
125
+ export const getGenderFromNorwegianPersonalNumber = (pnr) => {
126
+ const norwegianId = getValidNorwegianPersonalNumber(pnr);
127
+ if (!norwegianId)
128
+ return null;
129
+ const individualNumber = parseInt(norwegianId.slice(6, 9), 10);
130
+ /* Digits 7-9 determine gender: even = `FEMALE`, odd = `MALE` */
131
+ return individualNumber % 2 === 0 ? 'FEMALE' : 'MALE';
132
+ };
133
+ export const isMale = (pnr) => getGenderFromNorwegianPersonalNumber(pnr) === 'MALE';
134
+ export const isFemale = (pnr) => getGenderFromNorwegianPersonalNumber(pnr) === 'FEMALE';
108
135
  // Function to check for valid date
109
136
  function isValidDate(year, month, day) {
110
137
  if (month < 1 || month > 12 || day < 1)
@@ -1 +1 @@
1
- {"version":3,"file":"validateNorwegianPersonalNumber.js","sourceRoot":"","sources":["../../src/helpers/validateNorwegianPersonalNumber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateNorwegianPersonalNumber.js","sourceRoot":"","sources":["../../src/helpers/validateNorwegianPersonalNumber.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "asma-helpers",
3
- "version": "0.37.15",
3
+ "version": "0.37.17",
4
4
  "description": "helpers methods for asma",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib",
@@ -79,11 +79,7 @@ export function validateNorwegianPersonalNumberAndGetBirthDate(number: string):
79
79
  month = digits[2] * 10 + digits[3]
80
80
  }
81
81
 
82
- if (!isValidDate(year, month, day)) {
83
- return { class: 'INVALID' }
84
- }
85
-
86
- if (isTemporary) {
82
+ if (isTemporary && isValidDate(year, month, day)) {
87
83
  return { class: 'TEMPORARY', birthDate }
88
84
  }
89
85
 
@@ -109,6 +105,10 @@ export function validateNorwegianPersonalNumberAndGetBirthDate(number: string):
109
105
  return { class: 'DNUMBER', birthDate: `${formatWithLeadingZero(day)}.${formattedMonth}.${fullYear}` }
110
106
  }
111
107
 
108
+ if (!isValidDate(year, month, day)) {
109
+ return { class: 'INVALID' }
110
+ }
111
+
112
112
  return { class: 'REAL', birthDate }
113
113
  }
114
114
 
@@ -154,6 +154,42 @@ export const getAgeFromNorwegianPersonalNumber = (pnr: string) => {
154
154
  return age
155
155
  }
156
156
 
157
+ /**
158
+ *
159
+ * @param pnr string
160
+ * @returns pnr if validation passed, or null if validation failed
161
+ */
162
+ export function getValidNorwegianPersonalNumber(pnr: string): string | null {
163
+ const validationResult = validateNorwegianPersonalNumber(pnr)
164
+
165
+ if (validationResult === 'INVALID') {
166
+ return null
167
+ }
168
+
169
+ return pnr
170
+ }
171
+
172
+ export type GENDER = 'MALE' | 'FEMALE'
173
+ /**
174
+ *
175
+ * @param pnr string - Norwegian personal number
176
+ * @returns `GENDER` if successfully determined, otherwise `null`
177
+ */
178
+ export const getGenderFromNorwegianPersonalNumber = (pnr: string): GENDER | null => {
179
+ const norwegianId = getValidNorwegianPersonalNumber(pnr)
180
+
181
+ if (!norwegianId) return null
182
+
183
+ const individualNumber = parseInt(norwegianId.slice(6, 9), 10)
184
+
185
+ /* Digits 7-9 determine gender: even = `FEMALE`, odd = `MALE` */
186
+ return individualNumber % 2 === 0 ? 'FEMALE' : 'MALE'
187
+ }
188
+
189
+ export const isMale = (pnr: string): boolean => getGenderFromNorwegianPersonalNumber(pnr) === 'MALE'
190
+
191
+ export const isFemale = (pnr: string): boolean => getGenderFromNorwegianPersonalNumber(pnr) === 'FEMALE'
192
+
157
193
  // Function to check for valid date
158
194
  function isValidDate(year: number, month: number, day: number): boolean {
159
195
  if (month < 1 || month > 12 || day < 1) return false