kontonummer 5.0.1 → 5.1.0

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,6 +1,15 @@
1
1
  import { type Format } from './format.js';
2
2
  import type { BankName, SortingCodeInfo } from './banks.js';
3
3
  interface InitOptions {
4
+ /**
5
+ * - `strict` validates sorting code, account number length and account
6
+ * number check digit.
7
+ * - `semi` performs strict checks for type 1 account numbers (4+7) but lax
8
+ * checks for type 2 account numbers.
9
+ * - `lax` does not throw if the check digit of the account number cannot be
10
+ * validated. Instead, sets the `valid` property to false if the check
11
+ * digit or length is invalid.
12
+ */
4
13
  mode: 'strict' | 'semi' | 'lax';
5
14
  }
6
15
  export default class Kontonummer {
package/dist/cjs/index.js CHANGED
@@ -99,17 +99,24 @@ class Kontonummer {
99
99
  throw new errors_js_1.KontonummerError('Invalid account number');
100
100
  }
101
101
  const bank = Kontonummer.getSortingCodeInfo(sortingCode);
102
- const valid = (0, validate_js_1.default)(bank.type, bank.comment, sortingCode, accountNumber);
103
- if (!valid && options.mode === 'strict')
102
+ const accountMaxLength = bank.type === 2 ? bank.accountMaxLength ?? 7 : 7;
103
+ const accountMinLength = bank.type === 2 ? bank.accountMinLength ?? 2 : (typeof accountOrOptions === 'object' ? 7 : 2);
104
+ const lengthValid = accountNumber.length <= accountMaxLength && accountNumber.length >= accountMinLength;
105
+ if (!lengthValid && options.mode === 'strict')
104
106
  throw new errors_js_1.KontonummerError('Invalid account number');
105
- if (!valid && bank.type === 1 && options.mode === 'semi')
107
+ if (!lengthValid && bank.type === 1 && options.mode === 'semi')
108
+ throw new errors_js_1.KontonummerError('Invalid account number');
109
+ const checksumValid = (0, validate_js_1.default)(bank.type, bank.comment, sortingCode, accountNumber);
110
+ if (!checksumValid && options.mode === 'strict')
111
+ throw new errors_js_1.KontonummerError('Invalid account number');
112
+ if (!checksumValid && bank.type === 1 && options.mode === 'semi')
106
113
  throw new errors_js_1.KontonummerError('Invalid account number');
107
114
  __classPrivateFieldSet(this, _Kontonummer_bankName, bank.bankName, "f");
108
115
  __classPrivateFieldSet(this, _Kontonummer_type, bank.type, "f");
109
116
  __classPrivateFieldSet(this, _Kontonummer_comment, bank.comment, "f");
110
117
  __classPrivateFieldSet(this, _Kontonummer_sortingCode, sortingCode, "f");
111
118
  __classPrivateFieldSet(this, _Kontonummer_accountNumber, accountNumber, "f");
112
- __classPrivateFieldSet(this, _Kontonummer_valid, valid, "f");
119
+ __classPrivateFieldSet(this, _Kontonummer_valid, checksumValid && lengthValid, "f");
113
120
  }
114
121
  format(format) {
115
122
  return (0, format_js_1.default)(this.sortingCode, this.accountNumber, Kontonummer.getSortingCodeInfo(this.sortingCode), format);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,15 @@
1
1
  import { type Format } from './format.js';
2
2
  import type { BankName, SortingCodeInfo } from './banks.js';
3
3
  interface InitOptions {
4
+ /**
5
+ * - `strict` validates sorting code, account number length and account
6
+ * number check digit.
7
+ * - `semi` performs strict checks for type 1 account numbers (4+7) but lax
8
+ * checks for type 2 account numbers.
9
+ * - `lax` does not throw if the check digit of the account number cannot be
10
+ * validated. Instead, sets the `valid` property to false if the check
11
+ * digit or length is invalid.
12
+ */
4
13
  mode: 'strict' | 'semi' | 'lax';
5
14
  }
6
15
  export default class Kontonummer {
package/dist/esm/index.js CHANGED
@@ -60,17 +60,24 @@ export default class Kontonummer {
60
60
  throw new KontonummerError('Invalid account number');
61
61
  }
62
62
  const bank = Kontonummer.getSortingCodeInfo(sortingCode);
63
- const valid = validateCheckDigit(bank.type, bank.comment, sortingCode, accountNumber);
64
- if (!valid && options.mode === 'strict')
63
+ const accountMaxLength = bank.type === 2 ? bank.accountMaxLength ?? 7 : 7;
64
+ const accountMinLength = bank.type === 2 ? bank.accountMinLength ?? 2 : (typeof accountOrOptions === 'object' ? 7 : 2);
65
+ const lengthValid = accountNumber.length <= accountMaxLength && accountNumber.length >= accountMinLength;
66
+ if (!lengthValid && options.mode === 'strict')
65
67
  throw new KontonummerError('Invalid account number');
66
- if (!valid && bank.type === 1 && options.mode === 'semi')
68
+ if (!lengthValid && bank.type === 1 && options.mode === 'semi')
69
+ throw new KontonummerError('Invalid account number');
70
+ const checksumValid = validateCheckDigit(bank.type, bank.comment, sortingCode, accountNumber);
71
+ if (!checksumValid && options.mode === 'strict')
72
+ throw new KontonummerError('Invalid account number');
73
+ if (!checksumValid && bank.type === 1 && options.mode === 'semi')
67
74
  throw new KontonummerError('Invalid account number');
68
75
  __classPrivateFieldSet(this, _Kontonummer_bankName, bank.bankName, "f");
69
76
  __classPrivateFieldSet(this, _Kontonummer_type, bank.type, "f");
70
77
  __classPrivateFieldSet(this, _Kontonummer_comment, bank.comment, "f");
71
78
  __classPrivateFieldSet(this, _Kontonummer_sortingCode, sortingCode, "f");
72
79
  __classPrivateFieldSet(this, _Kontonummer_accountNumber, accountNumber, "f");
73
- __classPrivateFieldSet(this, _Kontonummer_valid, valid, "f");
80
+ __classPrivateFieldSet(this, _Kontonummer_valid, checksumValid && lengthValid, "f");
74
81
  }
75
82
  format(format) {
76
83
  return formatter(this.sortingCode, this.accountNumber, Kontonummer.getSortingCodeInfo(this.sortingCode), format);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kontonummer",
3
- "version": "5.0.1",
3
+ "version": "5.1.0",
4
4
  "description": "A validator for swedish banking numbers",
5
5
  "author": "Svante Bengtson <svante@swantzter.se> (https://swantzter.se)",
6
6
  "license": "MIT",
@@ -37,9 +37,9 @@
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/mocha": "^10.0.10",
40
- "@types/node": "^20.19.0",
41
- "c8": "^10.1.3",
42
- "eslint": "^9.39.1",
40
+ "@types/node": "^20.19.35",
41
+ "c8": "^11.0.0",
42
+ "eslint": "^9.39.3",
43
43
  "mocha": "^11.7.5",
44
44
  "neostandard": "^0.12.2",
45
45
  "tsx": "^4.21.0",