asma-helpers 0.37.2 → 0.37.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.
@@ -1,4 +1,13 @@
1
1
  export declare const NORWEGIAN_PERSONAL_NUMBER: readonly ["REAL", "DNUMBER", "SYNTHETIC", "TEMPORARY"];
2
2
  export type NORWEGIAN_PERSONAL_NUMBER_TYPES = (typeof NORWEGIAN_PERSONAL_NUMBER)[number] | 'INVALID';
3
+ export declare function isNorwegianTemporaryNumber(number: string): boolean;
4
+ export declare function isNorwegianDnumber(number: string): boolean;
5
+ export declare function isNorwegianSyntheticNumber(number: string): boolean;
6
+ export declare function isNorwegianRealNumber(number: string): boolean;
3
7
  export declare function validateNorwegianPersonalNumber(number: string): NORWEGIAN_PERSONAL_NUMBER_TYPES;
8
+ export declare function generateUniqueToken(user: {
9
+ actno: string;
10
+ fnr: string;
11
+ salt: string;
12
+ }): string;
4
13
  //# sourceMappingURL=validateNorwegianPersonalNumber.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validateNorwegianPersonalNumber.d.ts","sourceRoot":"","sources":["../../src/helpers/validateNorwegianPersonalNumber.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,wDAAyD,CAAA;AAE/F,MAAM,MAAM,+BAA+B,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;AAEpG,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,+BAA+B,CAuE/F"}
1
+ {"version":3,"file":"validateNorwegianPersonalNumber.d.ts","sourceRoot":"","sources":["../../src/helpers/validateNorwegianPersonalNumber.ts"],"names":[],"mappings":"AAGA,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,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,+BAA+B,CAuE/F;AAmCD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,UAOrF"}
@@ -1,4 +1,18 @@
1
+ import { subdomain } from './getSubdomain';
2
+ import { sha256 } from './sha256';
1
3
  export const NORWEGIAN_PERSONAL_NUMBER = ['REAL', 'DNUMBER', 'SYNTHETIC', 'TEMPORARY'];
4
+ export function isNorwegianTemporaryNumber(number) {
5
+ return validateNorwegianPersonalNumber(number) === 'TEMPORARY';
6
+ }
7
+ export function isNorwegianDnumber(number) {
8
+ return validateNorwegianPersonalNumber(number) === 'DNUMBER';
9
+ }
10
+ export function isNorwegianSyntheticNumber(number) {
11
+ return validateNorwegianPersonalNumber(number) === 'SYNTHETIC';
12
+ }
13
+ export function isNorwegianRealNumber(number) {
14
+ return validateNorwegianPersonalNumber(number) === 'REAL';
15
+ }
2
16
  export function validateNorwegianPersonalNumber(number) {
3
17
  // Check if the number has the correct format (11 digits)
4
18
  if (!/^\d{11}$/.test(number))
@@ -61,9 +75,16 @@ function isValidDate(year, month, day) {
61
75
  function isLeapYear(year) {
62
76
  return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
63
77
  }
78
+ /**
79
+ *
80
+ * Is considered valid synthetic month if syntheticMonth is one of these: 41-52, 53-64, 65, 66-77, 81-92
81
+ */
64
82
  function getAddedNumberForSyntheticMonth(syntheticMonth) {
65
83
  if (syntheticMonth === 65)
66
84
  return 60; // Special case for 65
85
+ /**
86
+ * dead numbers 78,79,80
87
+ */
67
88
  const possibleAdds = [40, 52, 65, 80];
68
89
  for (let add of possibleAdds) {
69
90
  const calculatedMonth = syntheticMonth - add;
@@ -73,4 +94,11 @@ function getAddedNumberForSyntheticMonth(syntheticMonth) {
73
94
  }
74
95
  return 'INVALID'; // Return INVALID if no valid result found
75
96
  }
97
+ export function generateUniqueToken(user) {
98
+ if (validateNorwegianPersonalNumber(user.fnr) === 'TEMPORARY') {
99
+ return sha256(`${subdomain}-${user.fnr}-${user.actno}`);
100
+ }
101
+ // ha256(`${recipient.fnr}AvansTheBest`)
102
+ return sha256(`${user.fnr}${user.salt}`);
103
+ }
76
104
  //# sourceMappingURL=validateNorwegianPersonalNumber.js.map
@@ -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.2",
3
+ "version": "0.37.4",
4
4
  "description": "helpers methods for asma",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib",
@@ -1,7 +1,21 @@
1
+ import { subdomain } from './getSubdomain'
2
+ import { sha256 } from './sha256'
3
+
1
4
  export const NORWEGIAN_PERSONAL_NUMBER = ['REAL', 'DNUMBER', 'SYNTHETIC', 'TEMPORARY'] as const
2
5
 
3
6
  export type NORWEGIAN_PERSONAL_NUMBER_TYPES = (typeof NORWEGIAN_PERSONAL_NUMBER)[number] | 'INVALID'
4
-
7
+ export function isNorwegianTemporaryNumber(number: string): boolean {
8
+ return validateNorwegianPersonalNumber(number) === 'TEMPORARY'
9
+ }
10
+ export function isNorwegianDnumber(number: string): boolean {
11
+ return validateNorwegianPersonalNumber(number) === 'DNUMBER'
12
+ }
13
+ export function isNorwegianSyntheticNumber(number: string): boolean {
14
+ return validateNorwegianPersonalNumber(number) === 'SYNTHETIC'
15
+ }
16
+ export function isNorwegianRealNumber(number: string): boolean {
17
+ return validateNorwegianPersonalNumber(number) === 'REAL'
18
+ }
5
19
  export function validateNorwegianPersonalNumber(number: string): NORWEGIAN_PERSONAL_NUMBER_TYPES {
6
20
  // Check if the number has the correct format (11 digits)
7
21
  if (!/^\d{11}$/.test(number)) return 'INVALID'
@@ -87,10 +101,15 @@ function isValidDate(year: number, month: number, day: number): boolean {
87
101
  function isLeapYear(year: number): boolean {
88
102
  return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0
89
103
  }
90
-
104
+ /**
105
+ *
106
+ * Is considered valid synthetic month if syntheticMonth is one of these: 41-52, 53-64, 65, 66-77, 81-92
107
+ */
91
108
  function getAddedNumberForSyntheticMonth(syntheticMonth: number): number | 'INVALID' {
92
109
  if (syntheticMonth === 65) return 60 // Special case for 65
93
-
110
+ /**
111
+ * dead numbers 78,79,80
112
+ */
94
113
  const possibleAdds = [40, 52, 65, 80]
95
114
 
96
115
  for (let add of possibleAdds) {
@@ -102,3 +121,12 @@ function getAddedNumberForSyntheticMonth(syntheticMonth: number): number | 'INVA
102
121
 
103
122
  return 'INVALID' // Return INVALID if no valid result found
104
123
  }
124
+
125
+ export function generateUniqueToken(user: { actno: string; fnr: string; salt: string }) {
126
+ if (validateNorwegianPersonalNumber(user.fnr) === 'TEMPORARY') {
127
+ return sha256(`${subdomain}-${user.fnr}-${user.actno}`)
128
+ }
129
+ // ha256(`${recipient.fnr}AvansTheBest`)
130
+
131
+ return sha256(`${user.fnr}${user.salt}`)
132
+ }