Skip to content

Commit e3035a9

Browse files
authored
Merge pull request #50 from agiledigital-labs/feature/IE-366-lint-changes
Feature/ie 366 lint changes
2 parents d8ccd8e + 5dea38c commit e3035a9

File tree

6 files changed

+815
-908
lines changed

6 files changed

+815
-908
lines changed

index.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,22 @@ const config = {
3737
],
3838
rules: {
3939
"no-template-curly-in-string": ["error"],
40-
"no-console": [
40+
// In all contexts, use a structured logger such as Pino instead.
41+
// In an fp context, use an appropriate IO type.
42+
"no-console": ["error"],
43+
// Encourage use of https://github.com/agiledigital-labs/pino-redact-pii
44+
"no-restricted-properties": [
4145
"error",
42-
{ allow: ["info", "warn", "error", "trace", "debug"] },
46+
{
47+
object: "JSON",
48+
property: "stringify",
49+
message: "Use a safe stringify alterative",
50+
},
51+
{
52+
object: "util",
53+
property: "inspect",
54+
message: "Use a safe stringify alterative",
55+
},
4356
],
4457
"functional/no-expression-statements": [
4558
"error",

index.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,22 @@ const config: TSESLint.Linter.Config = {
3838
],
3939
rules: {
4040
"no-template-curly-in-string": ["error"],
41-
"no-console": [
41+
// In all contexts, use a structured logger such as Pino instead.
42+
// In an fp context, use an appropriate IO type.
43+
"no-console": ["error"],
44+
// Encourage use of https://github.com/agiledigital-labs/pino-redact-pii
45+
"no-restricted-properties": [
4246
"error",
43-
{ allow: ["info", "warn", "error", "trace", "debug"] },
47+
{
48+
object: "JSON",
49+
property: "stringify",
50+
message: "Use a safe stringify alterative",
51+
},
52+
{
53+
object: "util",
54+
property: "inspect",
55+
message: "Use a safe stringify alterative",
56+
},
4457
],
4558
"functional/no-expression-statements": [
4659
"error",

package.json

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,28 @@
2323
"typescript": "^5.0.0"
2424
},
2525
"devDependencies": {
26-
"@agiledigital/eslint-config": "^4.0.0",
27-
"@types/react": "^18.2.21",
28-
"@typescript-eslint/eslint-plugin": "^6.7.5",
29-
"@typescript-eslint/parser": "^6.7.5",
30-
"eslint": "^8.51.0",
31-
"eslint-config-prettier": "^9.0.0",
32-
"eslint-config-typed-fp": "^5.3.0",
26+
"@agiledigital/eslint-config": "^4.1.0",
27+
"@types/react": "^18.2.46",
28+
"@typescript-eslint/eslint-plugin": "^6.17.0",
29+
"@typescript-eslint/parser": "^6.17.0",
30+
"eslint": "^8.56.0",
31+
"eslint-config-prettier": "^9.1.0",
32+
"eslint-config-typed-fp": "^5.4.0",
3333
"eslint-plugin-functional": "^6.0.0",
34-
"eslint-plugin-import": "^2.28.1",
35-
"eslint-plugin-jest": "^27.4.2",
36-
"eslint-plugin-jsx-a11y": "^6.7.1",
37-
"eslint-plugin-prettier": "^5.0.1",
34+
"eslint-plugin-import": "^2.29.1",
35+
"eslint-plugin-jest": "^27.6.1",
36+
"eslint-plugin-jsx-a11y": "^6.8.0",
37+
"eslint-plugin-prettier": "^5.1.2",
3838
"eslint-plugin-react": "^7.33.2",
3939
"eslint-plugin-react-hooks": "^4.6.0",
40-
"eslint-plugin-sonarjs": "^0.21.0",
40+
"eslint-plugin-sonarjs": "^0.23.0",
4141
"eslint-plugin-total-functions": "^7.1.0",
4242
"jest": "^29.7.0",
43-
"prettier": "^3.0.3",
43+
"prettier": "^3.1.1",
4444
"react": "^18.2.0",
4545
"ts-jest": "^29.1.1",
46-
"type-coverage": "^2.27.0",
47-
"typescript": "^5.2.2"
46+
"type-coverage": "^2.27.1",
47+
"typescript": "^5.3.3"
4848
},
4949
"scripts": {
5050
"build": "tsc",

test-fixtures/base.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
3-
exports.useFunction = exports.myFunctionWithParam = exports.myFunction = exports.whoops = void 0;
4-
// Note: no functional/no-expression-statements error here
5-
console.info("hello");
6-
// Note: error on no console log.
3+
exports.useFunction = exports.myFunctionWithParam = exports.myFunction = exports.whoops = exports.b = exports.a = void 0;
4+
// Console is forbidden
75
// eslint-disable-next-line no-console
8-
console.log("not good");
6+
console.info("");
7+
// eslint-disable-next-line no-console
8+
console.log("");
9+
// eslint-disable-next-line no-console
10+
console.error("");
11+
// eslint-disable-next-line no-console
12+
console.warn("");
13+
// error 'JSON.stringify' is restricted from being used. Use a safe stringify alterative
14+
// eslint-disable-next-line no-restricted-properties
15+
exports.a = JSON.stringify("");
16+
// NB JSON.stringify is not detected when accessed via an alias.
17+
// eslint-disable-next-line functional/prefer-immutable-types
18+
const JSONAlias = JSON;
19+
exports.b = JSONAlias.stringify("");
920
// Note: no-template-curly-in-string is on
1021
// eslint-disable-next-line no-template-curly-in-string
1122
exports.whoops = "${whoops}";
@@ -14,9 +25,8 @@ exports.whoops = "${whoops}";
1425
const myFunction = () => "";
1526
exports.myFunction = myFunction;
1627
// Note: report the expected functional parameters errors.
17-
// eslint-disable-next-line functional/functional-parameters, functional/prefer-immutable-types
18-
const myFunctionWithParam = (...args) => {
19-
console.info(args);
28+
// eslint-disable-next-line functional/functional-parameters, functional/prefer-immutable-types, @typescript-eslint/no-unused-vars
29+
const myFunctionWithParam = (..._args) => {
2030
return "";
2131
};
2232
exports.myFunctionWithParam = myFunctionWithParam;

test-fixtures/base.ts

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
1-
// Note: no functional/no-expression-statements error here
2-
console.info("hello");
3-
4-
// Note: error on no console log.
1+
// Console is forbidden
2+
// eslint-disable-next-line no-console
3+
console.info("");
4+
// eslint-disable-next-line no-console
5+
console.log("");
56
// eslint-disable-next-line no-console
6-
console.log("not good");
7+
console.error("");
8+
// eslint-disable-next-line no-console
9+
console.warn("");
10+
11+
// error 'JSON.stringify' is restricted from being used. Use a safe stringify alterative
12+
// eslint-disable-next-line no-restricted-properties
13+
export const a = JSON.stringify("");
14+
15+
// NB JSON.stringify is not detected when accessed via an alias.
16+
// eslint-disable-next-line functional/prefer-immutable-types
17+
const JSONAlias = JSON;
18+
export const b = JSONAlias.stringify("");
719

820
// Note: no-template-curly-in-string is on
921
// eslint-disable-next-line no-template-curly-in-string
@@ -14,9 +26,8 @@ export const whoops = "${whoops}";
1426
export const myFunction = (): string => "";
1527

1628
// Note: report the expected functional parameters errors.
17-
// eslint-disable-next-line functional/functional-parameters, functional/prefer-immutable-types
18-
export const myFunctionWithParam = (...args: string[]): string => {
19-
console.info(args);
29+
// eslint-disable-next-line functional/functional-parameters, functional/prefer-immutable-types, @typescript-eslint/no-unused-vars
30+
export const myFunctionWithParam = (..._args: string[]): string => {
2031
return "";
2132
};
2233

0 commit comments

Comments
 (0)