From e7019ae02043a12e1a2900954386e8044a6dca14 Mon Sep 17 00:00:00 2001 From: HauklandJ Date: Mon, 10 Nov 2025 09:49:33 +0100 Subject: [PATCH 1/3] refactor: make identifier logic more readable, rename faulty named function --- src/layout/OrganisationLookup/validation.ts | 21 +++++++++++---------- src/layout/PersonLookup/validation.ts | 18 +++++++----------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/layout/OrganisationLookup/validation.ts b/src/layout/OrganisationLookup/validation.ts index b04b8cccea..75a8bc02ea 100644 --- a/src/layout/OrganisationLookup/validation.ts +++ b/src/layout/OrganisationLookup/validation.ts @@ -37,24 +37,25 @@ export function checkValidOrgnNr(orgNr: string): boolean { if (orgNr.length !== 9) { return false; } - const [a1, a2, a3, a4, a5, a6, a7, a8, a9] = orgNr.split('').map(Number); - const allegedCheckDigit = a9; + const orgnr_digits = orgNr.split('').map(Number); + const k1 = orgnr_digits.at(-1); - const [w1, w2, w3, w4, w5, w6, w7, w8] = [3, 2, 7, 6, 5, 4, 3, 2]; - const sum = a1 * w1 + a2 * w2 + a3 * w3 + a4 * w4 + a5 * w5 + a6 * w6 + a7 * w7 + a8 * w8; + const weights = [3, 2, 7, 6, 5, 4, 3, 2]; - let calculatedCheckDigit = mod11(sum); - - if (calculatedCheckDigit === 11) { - calculatedCheckDigit = 0; + let sum = 0; + for (let i = 0; i < weights.length; i++) { + sum += orgnr_digits[i] * weights[i]; } - return calculatedCheckDigit === allegedCheckDigit; + let calculated_k1 = modular_additive_inverse(sum, 11); + calculated_k1 = calculated_k1 % 11; + + return calculated_k1 === k1; } export const validateOrgnr = ajv.compile(orgNrSchema); -const mod11 = (value: number): number => 11 - (value % 11); +const modular_additive_inverse = (value: number, base: number): number => base - (value % base); const organisationLookupResponseSchema: JSONSchemaType = { type: 'object', diff --git a/src/layout/PersonLookup/validation.ts b/src/layout/PersonLookup/validation.ts index 2d656730bc..0d29400baa 100644 --- a/src/layout/PersonLookup/validation.ts +++ b/src/layout/PersonLookup/validation.ts @@ -37,8 +37,8 @@ export function checkValidSsn(ssn: string): boolean { } const digits = ssn.split('').map(Number); - const k1 = digits[9]; - const k2 = digits[10]; + const k1 = digits.at(-2); + const k2 = digits.at(-1); // Calculate first control digit (K1) const weights1 = [3, 7, 6, 1, 8, 9, 4, 5, 2]; @@ -47,10 +47,8 @@ export function checkValidSsn(ssn: string): boolean { sum1 += digits[i] * weights1[i]; } - let calculated_k1 = mod11(sum1); - if (calculated_k1 === 11) { - calculated_k1 = 0; - } + let calculated_k1 = modular_additive_inverse(sum1, 11); + calculated_k1 = calculated_k1 % 11; // Calculate second control digit (K2) const weights2 = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]; @@ -63,16 +61,14 @@ export function checkValidSsn(ssn: string): boolean { } } - let calculated_k2 = mod11(sum2); - if (calculated_k2 === 11) { - calculated_k2 = 0; - } + let calculated_k2 = modular_additive_inverse(sum2, 11); + calculated_k2 = calculated_k2 % 11; // Validate controls and return result return k1 === calculated_k1 && k2 === calculated_k2; } -const mod11 = (value: number): number => 11 - (value % 11); +const modular_additive_inverse = (value: number, base: number): number => base - (value % base); export const validateSsn = ajv.compile(ssnSchema); From 00d00b2054a44c05e373e5b26cf8b4357d05acce Mon Sep 17 00:00:00 2001 From: Johannes Haukland <42615991+HauklandJ@users.noreply.github.com> Date: Mon, 10 Nov 2025 09:58:37 +0100 Subject: [PATCH 2/3] Update src/layout/OrganisationLookup/validation.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- src/layout/OrganisationLookup/validation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layout/OrganisationLookup/validation.ts b/src/layout/OrganisationLookup/validation.ts index 75a8bc02ea..6e3dfa5202 100644 --- a/src/layout/OrganisationLookup/validation.ts +++ b/src/layout/OrganisationLookup/validation.ts @@ -38,7 +38,7 @@ export function checkValidOrgnNr(orgNr: string): boolean { return false; } const orgnr_digits = orgNr.split('').map(Number); - const k1 = orgnr_digits.at(-1); + const k1 = orgnr_digits.at(-1)!; const weights = [3, 2, 7, 6, 5, 4, 3, 2]; From 2ae5527dae077678a0a6ed94ea58878d6a2306e3 Mon Sep 17 00:00:00 2001 From: HauklandJ Date: Mon, 10 Nov 2025 10:02:00 +0100 Subject: [PATCH 3/3] refactor: camel case, and not undefined --- src/layout/OrganisationLookup/validation.ts | 6 +++--- src/layout/PersonLookup/validation.ts | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/layout/OrganisationLookup/validation.ts b/src/layout/OrganisationLookup/validation.ts index 6e3dfa5202..d1d1abbee4 100644 --- a/src/layout/OrganisationLookup/validation.ts +++ b/src/layout/OrganisationLookup/validation.ts @@ -34,7 +34,7 @@ const orgNrSchema: JSONSchemaType> = { }; export function checkValidOrgnNr(orgNr: string): boolean { - if (orgNr.length !== 9) { + if (orgNr.length !== 9 || !/^\d{9}$/.test(orgNr)) { return false; } const orgnr_digits = orgNr.split('').map(Number); @@ -47,7 +47,7 @@ export function checkValidOrgnNr(orgNr: string): boolean { sum += orgnr_digits[i] * weights[i]; } - let calculated_k1 = modular_additive_inverse(sum, 11); + let calculated_k1 = modularAdditiveInverse(sum, 11); calculated_k1 = calculated_k1 % 11; return calculated_k1 === k1; @@ -55,7 +55,7 @@ export function checkValidOrgnNr(orgNr: string): boolean { export const validateOrgnr = ajv.compile(orgNrSchema); -const modular_additive_inverse = (value: number, base: number): number => base - (value % base); +const modularAdditiveInverse = (value: number, base: number): number => base - (value % base); const organisationLookupResponseSchema: JSONSchemaType = { type: 'object', diff --git a/src/layout/PersonLookup/validation.ts b/src/layout/PersonLookup/validation.ts index 0d29400baa..fb344b24ec 100644 --- a/src/layout/PersonLookup/validation.ts +++ b/src/layout/PersonLookup/validation.ts @@ -37,8 +37,8 @@ export function checkValidSsn(ssn: string): boolean { } const digits = ssn.split('').map(Number); - const k1 = digits.at(-2); - const k2 = digits.at(-1); + const k1 = digits.at(-2)!; + const k2 = digits.at(-1)!; // Calculate first control digit (K1) const weights1 = [3, 7, 6, 1, 8, 9, 4, 5, 2]; @@ -47,7 +47,7 @@ export function checkValidSsn(ssn: string): boolean { sum1 += digits[i] * weights1[i]; } - let calculated_k1 = modular_additive_inverse(sum1, 11); + let calculated_k1 = modularAdditiveInverse(sum1, 11); calculated_k1 = calculated_k1 % 11; // Calculate second control digit (K2) @@ -61,14 +61,14 @@ export function checkValidSsn(ssn: string): boolean { } } - let calculated_k2 = modular_additive_inverse(sum2, 11); + let calculated_k2 = modularAdditiveInverse(sum2, 11); calculated_k2 = calculated_k2 % 11; // Validate controls and return result return k1 === calculated_k1 && k2 === calculated_k2; } -const modular_additive_inverse = (value: number, base: number): number => base - (value % base); +const modularAdditiveInverse = (value: number, base: number): number => base - (value % base); export const validateSsn = ajv.compile(ssnSchema);