@nivinjoseph/n-sec 5.0.5 → 6.0.2

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.
Files changed (83) hide show
  1. package/.vscode/settings.json +111 -0
  2. package/.yarn/releases/yarn-4.0.2.cjs +893 -0
  3. package/.yarnrc.yml +3 -0
  4. package/dist/api-security/alg-type.d.ts +1 -0
  5. package/dist/api-security/alg-type.d.ts.map +1 -0
  6. package/dist/api-security/alg-type.js +2 -5
  7. package/dist/api-security/alg-type.js.map +1 -1
  8. package/dist/api-security/claim.d.ts +1 -0
  9. package/dist/api-security/claim.d.ts.map +1 -0
  10. package/dist/api-security/claim.js +5 -9
  11. package/dist/api-security/claim.js.map +1 -1
  12. package/dist/api-security/claims-identity.d.ts +2 -1
  13. package/dist/api-security/claims-identity.d.ts.map +1 -0
  14. package/dist/api-security/claims-identity.js +4 -8
  15. package/dist/api-security/claims-identity.js.map +1 -1
  16. package/dist/api-security/expired-token-exception.d.ts +1 -0
  17. package/dist/api-security/expired-token-exception.d.ts.map +1 -0
  18. package/dist/api-security/expired-token-exception.js +5 -9
  19. package/dist/api-security/expired-token-exception.js.map +1 -1
  20. package/dist/api-security/invalid-token-exception.d.ts +1 -0
  21. package/dist/api-security/invalid-token-exception.d.ts.map +1 -0
  22. package/dist/api-security/invalid-token-exception.js +7 -11
  23. package/dist/api-security/invalid-token-exception.js.map +1 -1
  24. package/dist/api-security/json-web-token.d.ts +3 -2
  25. package/dist/api-security/json-web-token.d.ts.map +1 -0
  26. package/dist/api-security/json-web-token.js +39 -43
  27. package/dist/api-security/json-web-token.js.map +1 -1
  28. package/dist/api-security/security-token.d.ts +1 -0
  29. package/dist/api-security/security-token.d.ts.map +1 -0
  30. package/dist/api-security/security-token.js +6 -10
  31. package/dist/api-security/security-token.js.map +1 -1
  32. package/dist/bin.d.ts +1 -0
  33. package/dist/bin.d.ts.map +1 -0
  34. package/dist/bin.js +16 -20
  35. package/dist/bin.js.map +1 -1
  36. package/dist/crypto/asymmetric-encryption.d.ts +2 -0
  37. package/dist/crypto/asymmetric-encryption.d.ts.map +1 -0
  38. package/dist/crypto/asymmetric-encryption.js +1 -1
  39. package/dist/crypto/asymmetric-encryption.js.map +1 -1
  40. package/dist/crypto/crypto-exception.d.ts +1 -0
  41. package/dist/crypto/crypto-exception.d.ts.map +1 -0
  42. package/dist/crypto/crypto-exception.js +2 -6
  43. package/dist/crypto/crypto-exception.js.map +1 -1
  44. package/dist/crypto/digital-signature.d.ts +2 -0
  45. package/dist/crypto/digital-signature.d.ts.map +1 -0
  46. package/dist/crypto/digital-signature.js +1 -1
  47. package/dist/crypto/digital-signature.js.map +1 -1
  48. package/dist/crypto/hash.d.ts +1 -0
  49. package/dist/crypto/hash.d.ts.map +1 -0
  50. package/dist/crypto/hash.js +7 -11
  51. package/dist/crypto/hash.js.map +1 -1
  52. package/dist/crypto/hmac.d.ts +1 -0
  53. package/dist/crypto/hmac.d.ts.map +1 -0
  54. package/dist/crypto/hmac.js +6 -10
  55. package/dist/crypto/hmac.js.map +1 -1
  56. package/dist/crypto/symmetric-encryption.d.ts +1 -0
  57. package/dist/crypto/symmetric-encryption.d.ts.map +1 -0
  58. package/dist/crypto/symmetric-encryption.js +13 -17
  59. package/dist/crypto/symmetric-encryption.js.map +1 -1
  60. package/dist/index.d.ts +13 -12
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +17 -28
  63. package/dist/index.js.map +1 -1
  64. package/dist/tsconfig.json +2 -1
  65. package/eslint.config.js +591 -0
  66. package/package.json +24 -24
  67. package/src/api-security/claims-identity.ts +1 -1
  68. package/src/api-security/json-web-token.ts +21 -21
  69. package/src/bin.ts +2 -1
  70. package/src/crypto/hash.ts +9 -9
  71. package/src/crypto/hmac.ts +7 -7
  72. package/src/crypto/symmetric-encryption.ts +11 -11
  73. package/src/index.ts +17 -18
  74. package/test/asymmetric-encryption.test.ts +37 -37
  75. package/test/digital-signature.test.ts +22 -22
  76. package/test/hash.test.ts +109 -109
  77. package/test/hmac.test.ts +56 -55
  78. package/test/json-web-token.test.ts +95 -95
  79. package/test/other.test.ts +8 -7
  80. package/test/symmetric-encryption.test.ts +49 -48
  81. package/tsconfig.json +8 -5
  82. package/.eslintignore +0 -2
  83. package/.eslintrc +0 -335
@@ -1,43 +1,44 @@
1
- import * as Assert from "assert";
2
- import { SymmetricEncryption } from "./../src/index";
1
+ import assert from "node:assert";
2
+ import { describe, test } from "node:test";
3
+ import { SymmetricEncryption } from "./../src/index.js";
3
4
  // import { CryptoException } from "./../src/crypto-exception";
4
5
  import "@nivinjoseph/n-ext";
5
6
 
6
7
 
7
- suite("SymmetricEncryption", () =>
8
+ await describe("SymmetricEncryption", async () =>
8
9
  {
9
- suite("generateKey", () =>
10
- {
11
- test("must return string value that is not null, empty or whitespace", async () =>
10
+ await describe("generateKey", async () =>
11
+ {
12
+ await test("must return string value that is not null, empty or whitespace", async () =>
12
13
  {
13
14
  const key = await SymmetricEncryption.generateKey();
14
15
  console.log("key", key);
15
16
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
16
- Assert.ok(key !== null && !key.isEmptyOrWhiteSpace());
17
+ assert.ok(key !== null && !key.isEmptyOrWhiteSpace());
17
18
  });
18
-
19
-
20
- test("consecutive calls must yield unique values", async () =>
19
+
20
+
21
+ await test("consecutive calls must yield unique values", async () =>
21
22
  {
22
23
  const key1 = await SymmetricEncryption.generateKey();
23
24
  const key2 = await SymmetricEncryption.generateKey();
24
- Assert.notStrictEqual(key1, key2);
25
+ assert.notStrictEqual(key1, key2);
25
26
  });
26
- });
27
-
28
- suite("encrypt", () =>
29
- {
30
- test("must return cipher text value when called with key and plain text value", async () =>
27
+ });
28
+
29
+ await describe("encrypt", async () =>
30
+ {
31
+ await test("must return cipher text value when called with key and plain text value", async () =>
31
32
  {
32
33
  const key = "E25B269440F88601C453CD171D76EDDC11D8CF33230742DF8CAD5873D28F78B2";
33
34
  const value = "password";
34
35
  const encrypted = await SymmetricEncryption.encrypt(key, value);
35
36
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
36
- Assert.ok(encrypted !== null);
37
- Assert.notStrictEqual(encrypted, value);
37
+ assert.ok(encrypted !== null);
38
+ assert.notStrictEqual(encrypted, value);
38
39
  });
39
40
 
40
- // test("encrypt with key as null throws CryptoException", async () =>
41
+ // await test("encrypt with key as null throws CryptoException", async () =>
41
42
  // {
42
43
  // try
43
44
  // {
@@ -52,7 +53,7 @@ suite("SymmetricEncryption", () =>
52
53
 
53
54
  // });
54
55
 
55
- // test("encrypt with key as undefined throws CryptoException", async () =>
56
+ // await test("encrypt with key as undefined throws CryptoException", async () =>
56
57
  // {
57
58
  // try
58
59
  // {
@@ -65,8 +66,8 @@ suite("SymmetricEncryption", () =>
65
66
  // }
66
67
  // assert.ok(false);
67
68
  // });
68
-
69
- // test("encrypt", async () =>
69
+
70
+ // await test("encrypt", async () =>
70
71
  // {
71
72
  // let key = await SymmetricEncryption.generateKey();
72
73
  // let value = "password";
@@ -75,7 +76,7 @@ suite("SymmetricEncryption", () =>
75
76
  // assert.notStrictEqual(value, encrypted);
76
77
  // });
77
78
 
78
- // test("encrypt with key as null throws CryptoException", async () =>
79
+ // await test("encrypt with key as null throws CryptoException", async () =>
79
80
  // {
80
81
  // try
81
82
  // {
@@ -91,7 +92,7 @@ suite("SymmetricEncryption", () =>
91
92
 
92
93
  // });
93
94
 
94
- // test("encrypt with value as null throws CryptoException", async () =>
95
+ // await test("encrypt with value as null throws CryptoException", async () =>
95
96
  // {
96
97
  // try
97
98
  // {
@@ -106,8 +107,8 @@ suite("SymmetricEncryption", () =>
106
107
  // }
107
108
  // assert.ok(false);
108
109
  // });
109
-
110
- // test("encrypt with value as undefined throws CryptoException", async () =>
110
+
111
+ // await test("encrypt with value as undefined throws CryptoException", async () =>
111
112
  // {
112
113
  // try
113
114
  // {
@@ -122,8 +123,8 @@ suite("SymmetricEncryption", () =>
122
123
  // }
123
124
  // assert.ok(false);
124
125
  // });
125
-
126
- // test("encrypt with value as empty string throws CryptoException", async () =>
126
+
127
+ // await test("encrypt with value as empty string throws CryptoException", async () =>
127
128
  // {
128
129
  // try
129
130
  // {
@@ -138,8 +139,8 @@ suite("SymmetricEncryption", () =>
138
139
  // }
139
140
  // assert.ok(false);
140
141
  // });
141
-
142
- // test("encrypt with key as empty string throws CryptoException", async () =>
142
+
143
+ // await test("encrypt with key as empty string throws CryptoException", async () =>
143
144
  // {
144
145
  // try
145
146
  // {
@@ -153,8 +154,8 @@ suite("SymmetricEncryption", () =>
153
154
  // }
154
155
  // assert.ok(false);
155
156
  // });
156
-
157
- // test("encrypt with invalid key as empty string throws CryptoException", async () =>
157
+
158
+ // await test("encrypt with invalid key as empty string throws CryptoException", async () =>
158
159
  // {
159
160
  // try
160
161
  // {
@@ -168,27 +169,27 @@ suite("SymmetricEncryption", () =>
168
169
  // assert.ok(false);
169
170
  // });
170
171
  });
171
-
172
- suite("decrypt", () =>
172
+
173
+ await describe("decrypt", async () =>
173
174
  {
174
- test("must return plain text value when called with key and cipher text value", async () =>
175
+ await test("must return plain text value when called with key and cipher text value", async () =>
175
176
  {
176
177
  const key = await SymmetricEncryption.generateKey();
177
178
  const value = "password";
178
179
  const encrypted = await SymmetricEncryption.encrypt(key, value);
179
180
  const decrypted = SymmetricEncryption.decrypt(key, encrypted);
180
- Assert.strictEqual(decrypted, value);
181
+ assert.strictEqual(decrypted, value);
181
182
  });
182
-
183
- // test("decrypt with a valid encryption key", async () =>
183
+
184
+ // await test("decrypt with a valid encryption key", async () =>
184
185
  // {
185
186
  // let key = await SymmetricEncryption.generateKey();
186
187
  // let encryption = await SymmetricEncryption.encrypt(key, "password");
187
188
  // let decryption = await SymmetricEncryption.decrypt(key, encryption);
188
189
  // assert.strictEqual(decryption, "password");
189
190
  // });
190
-
191
- // test("decrypt with an invalid encryption key", async () =>
191
+
192
+ // await test("decrypt with an invalid encryption key", async () =>
192
193
  // {
193
194
  // let key = await SymmetricEncryption.generateKey();
194
195
  // let key2 = await SymmetricEncryption.generateKey();
@@ -196,8 +197,8 @@ suite("SymmetricEncryption", () =>
196
197
  // let decryption = await SymmetricEncryption.decrypt(key2, encryption);
197
198
  // assert.notStrictEqual(decryption, "password");
198
199
  // });
199
-
200
- // test("throws an CryptoException when key is null", async () =>
200
+
201
+ // await test("throws an CryptoException when key is null", async () =>
201
202
  // {
202
203
  // try
203
204
  // {
@@ -209,8 +210,8 @@ suite("SymmetricEncryption", () =>
209
210
  // assert.strictEqual(exception.message, "Parameter count mismatch.");
210
211
  // }
211
212
  // });
212
-
213
- // test("throws an CryptoException when value is null", async () =>
213
+
214
+ // await test("throws an CryptoException when value is null", async () =>
214
215
  // {
215
216
  // try
216
217
  // {
@@ -223,8 +224,8 @@ suite("SymmetricEncryption", () =>
223
224
  // assert.strictEqual(exception.message, "Parameter count mismatch.");
224
225
  // }
225
226
  // });
226
-
227
- // test("throws an CryptoException when value is empty string", async () =>
227
+
228
+ // await test("throws an CryptoException when value is empty string", async () =>
228
229
  // {
229
230
  // try
230
231
  // {
@@ -237,8 +238,8 @@ suite("SymmetricEncryption", () =>
237
238
  // assert.strictEqual(exception.message, "Parameter count mismatch.");
238
239
  // }
239
240
  // });
240
-
241
- // test("throws an CryptoException when key and value is empty string", async () =>
241
+
242
+ // await test("throws an CryptoException when key and value is empty string", async () =>
242
243
  // {
243
244
  // try
244
245
  // {
package/tsconfig.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "module": "commonjs",
4
- "target": "es2015",
3
+ "module": "NodeNext",
4
+ "target": "ES2017",
5
+ "lib": [
6
+ "ES2023"
7
+ ],
5
8
  "strict": true,
6
9
  "strictNullChecks": true,
7
10
  "strictFunctionTypes": true,
@@ -12,8 +15,6 @@
12
15
  "noFallthroughCasesInSwitch": true,
13
16
  "noEmitOnError": true,
14
17
  "sourceMap": true,
15
- "experimentalDecorators": true,
16
- "emitDecoratorMetadata": true,
17
18
  "removeComments": false,
18
19
  "forceConsistentCasingInFileNames": true,
19
20
  "incremental": false,
@@ -21,6 +22,8 @@
21
22
  "importHelpers": true,
22
23
  "noEmitHelpers": true,
23
24
  "noImplicitOverride": true,
24
- "pretty": true
25
+ "pretty": true,
26
+ "esModuleInterop": false,
27
+ "allowSyntheticDefaultImports": true
25
28
  }
26
29
  }
package/.eslintignore DELETED
@@ -1,2 +0,0 @@
1
- node_modules
2
- dist
package/.eslintrc DELETED
@@ -1,335 +0,0 @@
1
- {
2
- "root": true,
3
- "parser": "@typescript-eslint/parser",
4
- "plugins": [
5
- "@typescript-eslint"
6
- ],
7
- "extends": [
8
- "eslint:recommended",
9
- "plugin:@typescript-eslint/eslint-recommended",
10
- "plugin:@typescript-eslint/recommended"
11
- ],
12
- "parserOptions": {
13
- "project": "tsconfig.json"
14
- },
15
- "rules": {
16
- "no-eval": "error",
17
- "no-void": "error",
18
- "no-with": "error",
19
- "@typescript-eslint/adjacent-overload-signatures": "error",
20
- "@typescript-eslint/array-type": [
21
- "error",
22
- {
23
- "default": "generic",
24
- "readonly": "generic"
25
- }
26
- ],
27
- "@typescript-eslint/await-thenable": "error",
28
- "@typescript-eslint/ban-ts-comment": [
29
- "error",
30
- {
31
- "ts-expect-error": "allow-with-description",
32
- "ts-ignore": "allow-with-description",
33
- "ts-nocheck": true,
34
- "ts-check": true
35
- }
36
- ],
37
- "@typescript-eslint/ban-tslint-comment": "error",
38
- "@typescript-eslint/ban-types": [
39
- "error",
40
- {
41
- "extendDefaults": false,
42
- "types": {
43
- "String": {
44
- "message": "Use string instead",
45
- "fixWith": "string"
46
- },
47
- "Boolean": {
48
- "message": "Use boolean instead",
49
- "fixWith": "boolean"
50
- },
51
- "Number": {
52
- "message": "Use number instead",
53
- "fixWith": "number"
54
- },
55
- "Symbol": {
56
- "message": "Use symbol instead",
57
- "fixWith": "symbol"
58
- }
59
- }
60
- }
61
- ],
62
- "brace-style": "off",
63
- "@typescript-eslint/brace-style": [
64
- "error",
65
- "allman",
66
- {
67
- "allowSingleLine": true
68
- }
69
- ],
70
- "@typescript-eslint/class-literal-property-style": [
71
- "off",
72
- "getters"
73
- ],
74
- "comma-dangle": "off",
75
- "@typescript-eslint/comma-dangle": [
76
- "error",
77
- "never"
78
- ],
79
- "default-param-last": "off",
80
- "@typescript-eslint/default-param-last": "error",
81
- "@typescript-eslint/explicit-function-return-type": "error",
82
- "@typescript-eslint/explicit-member-accessibility": "error",
83
- "@typescript-eslint/explicit-module-boundary-types": "error",
84
- "func-call-spacing": "off",
85
- "@typescript-eslint/func-call-spacing": [
86
- "error",
87
- "never"
88
- ],
89
- "@typescript-eslint/member-delimiter-style": [
90
- "error",
91
- {
92
- "multiline": {
93
- "delimiter": "semi",
94
- "requireLast": true
95
- },
96
- "singleline": {
97
- "delimiter": "semi",
98
- "requireLast": true
99
- },
100
- "multilineDetection": "brackets"
101
- }
102
- ],
103
- "@typescript-eslint/member-ordering": [
104
- "error",
105
- {
106
- "default": [
107
- // Index signature
108
- "signature",
109
- // Fields
110
- "private-static-field",
111
- "protected-static-field",
112
- "public-static-field",
113
- // "private-decorated-field",
114
- // "protected-decorated-field",
115
- // "public-decorated-field",
116
- "private-instance-field",
117
- "protected-instance-field",
118
- "public-instance-field",
119
- // "public-abstract-field",
120
- // "protected-abstract-field",
121
- // "private-abstract-field",
122
- // "private-field",
123
- // "protected-field",
124
- // "public-field",
125
- // "static-field",
126
- // "instance-field",
127
- // "abstract-field",
128
- // "decorated-field",
129
- // "field",
130
- // Getters
131
- // "public-static-get",
132
- // "protected-static-get",
133
- // "private-static-get",
134
- // "public-decorated-get",
135
- // "protected-decorated-get",
136
- // "private-decorated-get",
137
- // "public-instance-get",
138
- // "protected-instance-get",
139
- // "private-instance-get",
140
- // "public-abstract-get",
141
- // "protected-abstract-get",
142
- // "private-abstract-get",
143
- // "public-get",
144
- // "protected-get",
145
- // "private-get",
146
- // "static-get",
147
- // "instance-get",
148
- // "abstract-get",
149
- // "decorated-get",
150
- // "get",
151
- // Setters
152
- // "public-static-set",
153
- // "protected-static-set",
154
- // "private-static-set",
155
- // "public-decorated-set",
156
- // "protected-decorated-set",
157
- // "private-decorated-set",
158
- // "public-instance-set",
159
- // "protected-instance-set",
160
- // "private-instance-set",
161
- // "public-abstract-set",
162
- // "protected-abstract-set",
163
- // "private-abstract-set",
164
- // "public-set",
165
- // "protected-set",
166
- // "private-set",
167
- // "static-set",
168
- // "instance-set",
169
- // "abstract-set",
170
- // "decorated-set",
171
- // "set",
172
- // [
173
- // "get",
174
- // "set"
175
- // ],
176
- [
177
- "private-static-get",
178
- "private-static-set"
179
- ],
180
- [
181
- "protected-static-get",
182
- "protected-static-set"
183
- ],
184
- [
185
- "public-static-get",
186
- "public-static-set"
187
- ],
188
- [
189
- "private-instance-get",
190
- "private-instance-set"
191
- ],
192
- [
193
- "protected-instance-get",
194
- "protected-instance-set"
195
- ],
196
- [
197
- "public-instance-get",
198
- "public-instance-set"
199
- ],
200
- // Constructors
201
- "public-constructor",
202
- "protected-constructor",
203
- "private-constructor",
204
- // "constructor",
205
- // Methods
206
- "public-static-method",
207
- "protected-static-method",
208
- "private-static-method",
209
- // "public-decorated-method",
210
- // "protected-decorated-method",
211
- // "private-decorated-method",
212
- "public-instance-method",
213
- "protected-instance-method",
214
- "private-instance-method",
215
- // "public-abstract-method",
216
- // "protected-abstract-method",
217
- // "private-abstract-method",
218
- // "public-method",
219
- // "protected-method",
220
- // "private-method",
221
- // "static-method",
222
- // "instance-method",
223
- // "abstract-method",
224
- // "decorated-method",
225
- // "method"
226
- ]
227
- }
228
- ],
229
- "@typescript-eslint/method-signature-style": [
230
- "error",
231
- "method"
232
- ],
233
- "@typescript-eslint/naming-convention": [
234
- "error",
235
- {
236
- "selector": "memberLike",
237
- "modifiers": [
238
- "private"
239
- ],
240
- "format": [
241
- "camelCase"
242
- ],
243
- "leadingUnderscore": "require"
244
- }
245
- ],
246
- "@typescript-eslint/no-confusing-non-null-assertion": "error",
247
- "@typescript-eslint/no-confusing-void-expression": [
248
- "error",
249
- {
250
- "ignoreArrowShorthand": true
251
- }
252
- ],
253
- "no-dupe-class-members": "off",
254
- "@typescript-eslint/no-dupe-class-members": "error",
255
- "@typescript-eslint/no-duplicate-enum-values": "error",
256
- "no-duplicate-imports": "off",
257
- "@typescript-eslint/no-duplicate-imports": "error",
258
- "no-empty-function": "off",
259
- "@typescript-eslint/no-empty-function": [
260
- "error",
261
- {
262
- "allow": [
263
- "private-constructors"
264
- ]
265
- }
266
- ],
267
- "@typescript-eslint/no-explicit-any": "off",
268
- "@typescript-eslint/no-extra-non-null-assertion": "error",
269
- "no-extra-parens": "off",
270
- "@typescript-eslint/no-extra-parens": [
271
- "error",
272
- "all",
273
- {
274
- "nestedBinaryExpressions": false
275
- }
276
- ],
277
- "no-extra-semi": "off",
278
- "@typescript-eslint/no-extra-semi": "error",
279
- "@typescript-eslint/no-floating-promises": "error",
280
- "@typescript-eslint/no-for-in-array": "error",
281
- "no-implied-eval": "off",
282
- "@typescript-eslint/no-implied-eval": "error",
283
- "no-invalid-this": "off",
284
- "@typescript-eslint/no-invalid-this": "error",
285
- "@typescript-eslint/no-invalid-void-type": "error",
286
- "no-loop-func": "off",
287
- "@typescript-eslint/no-loop-func": "error",
288
- "no-loss-of-precision": "off",
289
- "@typescript-eslint/no-loss-of-precision": "error",
290
- "@typescript-eslint/no-meaningless-void-operator": "error",
291
- "@typescript-eslint/no-misused-new": "error",
292
- "@typescript-eslint/no-misused-promises": "error",
293
- "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error",
294
- "@typescript-eslint/no-non-null-asserted-optional-chain": "error",
295
- "@typescript-eslint/no-non-null-assertion": "off",
296
- "no-redeclare": "off",
297
- "@typescript-eslint/no-redeclare": "error",
298
- "@typescript-eslint/no-this-alias": "error",
299
- "@typescript-eslint/no-throw-literal": "error",
300
- "@typescript-eslint/no-unnecessary-condition": [
301
- "error",
302
- {
303
- "allowConstantLoopConditions": true
304
- }
305
- ],
306
- "@typescript-eslint/no-unnecessary-type-assertion": "error",
307
- "@typescript-eslint/no-unnecessary-type-constraint": "error",
308
- "@typescript-eslint/no-unsafe-call": "error",
309
- "@typescript-eslint/no-unsafe-return": "error",
310
- "no-unused-expressions": "off",
311
- "@typescript-eslint/no-unused-expressions": "error",
312
- "no-unused-vars": "off",
313
- "@typescript-eslint/no-unused-vars": "off",
314
- "no-use-before-define": "off",
315
- "@typescript-eslint/no-use-before-define": "off",
316
- "no-useless-constructor": "off",
317
- "@typescript-eslint/no-useless-constructor": "error",
318
- "@typescript-eslint/no-useless-empty-export": "error",
319
- "@typescript-eslint/no-var-requires": "off",
320
- "@typescript-eslint/parameter-properties": "error",
321
- "@typescript-eslint/prefer-enum-initializers": "error",
322
- "@typescript-eslint/prefer-includes": "error",
323
- "@typescript-eslint/prefer-literal-enum-member": "error",
324
- "@typescript-eslint/prefer-readonly": "error",
325
- "@typescript-eslint/prefer-reduce-type-parameter": "error",
326
- "@typescript-eslint/prefer-string-starts-ends-with": "error",
327
- "@typescript-eslint/prefer-ts-expect-error": "error",
328
- "@typescript-eslint/require-array-sort-compare": "error",
329
- "no-return-await": "off",
330
- "@typescript-eslint/return-await": "error",
331
- "semi": "off",
332
- "@typescript-eslint/semi": "error",
333
- "@typescript-eslint/unbound-method": "error"
334
- }
335
- }