Skip to content

Commit ee84183

Browse files
committed
chore: adopt ESLint v9
1 parent d034e2f commit ee84183

File tree

75 files changed

+1579
-1828
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+1579
-1828
lines changed

packages/benchmark/.eslintrc

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/driver/.eslintrc

Lines changed: 0 additions & 26 deletions
This file was deleted.

packages/driver/eslint.config.cjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = [...require('@slonik/eslint-config')];

packages/driver/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
},
2525
"description": "A Node.js PostgreSQL client with strict types, detailed logging and assertions.",
2626
"devDependencies": {
27+
"@slonik/eslint-config": "workspace:^",
2728
"@types/node": "^18.15.3",
2829
"ava": "^6.1.3",
2930
"cspell": "^8.6.0",
30-
"eslint": "^8.57.0",
31-
"eslint-config-canonical": "^42.8.1",
31+
"eslint": "^9.14.0",
3232
"nyc": "^15.1.0",
3333
"ts-node": "^10.9.1",
3434
"typescript": "^5.4.5"

packages/driver/src/factories/createDriverFactory.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ type StreamDataEvent<T> = { data: T; fields: readonly Field[] };
1212

1313
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
1414
export interface DriverStream<T> extends Readable {
15+
[Symbol.asyncIterator]: () => AsyncIterableIterator<StreamDataEvent<T>>;
1516
// eslint-disable-next-line @typescript-eslint/method-signature-style
1617
on(event: 'data', listener: (chunk: StreamDataEvent<T>) => void): this;
18+
1719
// eslint-disable-next-line @typescript-eslint/method-signature-style
1820
on(event: string | symbol, listener: (...args: any[]) => void): this;
19-
20-
[Symbol.asyncIterator]: () => AsyncIterableIterator<StreamDataEvent<T>>;
2121
}
2222

2323
type BasicConnection = {
@@ -33,16 +33,16 @@ export type DriverTypeParser<T = unknown> = {
3333
};
3434

3535
export type DriverConfiguration = {
36-
readonly connectionTimeout: number | 'DISABLE_TIMEOUT';
36+
readonly connectionTimeout: 'DISABLE_TIMEOUT' | number;
3737
readonly connectionUri: string;
3838
readonly gracefulTerminationTimeout?: number;
39-
readonly idleInTransactionSessionTimeout: number | 'DISABLE_TIMEOUT';
40-
readonly idleTimeout?: number | 'DISABLE_TIMEOUT';
39+
readonly idleInTransactionSessionTimeout: 'DISABLE_TIMEOUT' | number;
40+
readonly idleTimeout?: 'DISABLE_TIMEOUT' | number;
4141
readonly maximumPoolSize?: number;
4242
readonly minimumPoolSize?: number;
4343
readonly resetConnection?: (connection: BasicConnection) => Promise<void>;
4444
readonly ssl?: TlsConnectionOptions;
45-
readonly statementTimeout: number | 'DISABLE_TIMEOUT';
45+
readonly statementTimeout: 'DISABLE_TIMEOUT' | number;
4646
readonly typeParsers: readonly DriverTypeParser[];
4747
};
4848

@@ -111,7 +111,7 @@ export type DriverCommand = 'COPY' | 'DELETE' | 'INSERT' | 'SELECT' | 'UPDATE';
111111
export type DriverQueryResult = {
112112
readonly command: DriverCommand;
113113
readonly fields: DriverField[];
114-
readonly rowCount: number | null;
114+
readonly rowCount: null | number;
115115
readonly rows: Array<Record<string, unknown>>;
116116
};
117117

@@ -121,8 +121,8 @@ export type DriverStreamResult = {
121121
};
122122

123123
type DriverSetup = ({
124-
driverEventEmitter,
125124
driverConfiguration,
125+
driverEventEmitter,
126126
}: {
127127
driverConfiguration: DriverConfiguration;
128128
driverEventEmitter: DriverEventEmitter;
@@ -189,17 +189,17 @@ export const createDriverFactory = (setup: DriverSetup): DriverFactory => {
189189

190190
clientEventEmitter.on('error', onError);
191191

192-
const { query, stream, connect, end } = await createPoolClient({
192+
const { connect, end, query, stream } = await createPoolClient({
193193
clientEventEmitter,
194194
});
195195

196196
let isAcquired = false;
197197
let isDestroyed = false;
198198
let idleTimeout: NodeJS.Timeout | null = null;
199199

200-
let activeQueryPromise: Promise<DriverQueryResult> | null = null;
201-
let destroyPromise: Promise<void> | null = null;
202-
let releasePromise: Promise<void> | null = null;
200+
let activeQueryPromise: null | Promise<DriverQueryResult> = null;
201+
let destroyPromise: null | Promise<void> = null;
202+
let releasePromise: null | Promise<void> = null;
203203

204204
const id = generateUid();
205205

@@ -311,7 +311,6 @@ export const createDriverFactory = (setup: DriverSetup): DriverFactory => {
311311
}, driverConfiguration.idleTimeout).unref();
312312
}
313313

314-
// eslint-disable-next-line require-atomic-updates
315314
isAcquired = false;
316315

317316
releasePromise = null;
@@ -397,7 +396,6 @@ export const createDriverFactory = (setup: DriverSetup): DriverFactory => {
397396

398397
return result;
399398
} finally {
400-
// eslint-disable-next-line require-atomic-updates
401399
activeQueryPromise = null;
402400
}
403401
},

packages/errors/.eslintrc

Lines changed: 0 additions & 26 deletions
This file was deleted.

packages/errors/eslint.config.cjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = [...require('@slonik/eslint-config')];

packages/errors/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020
},
2121
"description": "A Node.js PostgreSQL client with strict types, detailed logging and assertions.",
2222
"devDependencies": {
23+
"@slonik/eslint-config": "workspace:^",
2324
"@types/node": "^18.15.3",
2425
"ava": "^6.1.3",
2526
"cspell": "^8.6.0",
26-
"eslint": "^8.57.0",
27-
"eslint-config-canonical": "^42.8.1",
27+
"eslint": "^9.14.0",
2828
"nyc": "^15.1.0",
2929
"ts-node": "^10.9.1",
3030
"typescript": "^5.4.5",

packages/errors/src/errors.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import {
66
import { type ZodIssue } from 'zod';
77

88
export class SlonikError extends Error {
9-
public readonly message: string;
10-
119
public override readonly cause?: Error;
1210

11+
public readonly message: string;
12+
1313
public constructor(message: string, options?: { cause?: Error }) {
1414
super(message);
1515

@@ -115,13 +115,13 @@ export class DataIntegrityError extends SlonikError {
115115
}
116116

117117
export class SchemaValidationError extends SlonikError {
118-
public sql: string;
119-
120-
public values: readonly PrimitiveValueExpression[];
118+
public issues: ZodIssue[];
121119

122120
public row: QueryResultRow;
123121

124-
public issues: ZodIssue[];
122+
public sql: string;
123+
124+
public values: readonly PrimitiveValueExpression[];
125125

126126
public constructor(query: Query, row: QueryResultRow, issues: ZodIssue[]) {
127127
super('Query returned rows that do not conform with the schema.');
@@ -133,20 +133,20 @@ export class SchemaValidationError extends SlonikError {
133133
}
134134
}
135135

136-
type IntegrityConstraintViolationErrorCause = Error & {
136+
type IntegrityConstraintViolationErrorCause = {
137137
column?: string;
138138
constraint?: string;
139139
table?: string;
140-
};
140+
} & Error;
141141

142142
export class IntegrityConstraintViolationError extends SlonikError {
143-
public constraint: string | null;
143+
public cause?: Error;
144144

145-
public column: string | null;
145+
public column: null | string;
146146

147-
public table: string | null;
147+
public constraint: null | string;
148148

149-
public cause?: Error;
149+
public table: null | string;
150150

151151
public constructor(
152152
message: string,

packages/eslint-config/index.cjs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
module.exports = [
2+
...require('eslint-config-canonical/configurations/auto'),
3+
{
4+
files: ['**/*.cjs', '**/*.js', '**/*.ts'],
5+
...require('eslint-config-canonical/configurations/node').recommended
6+
},
7+
{
8+
files: ['**/eslint.config.cjs'],
9+
rules: {
10+
'n/global-require': 0,
11+
}
12+
},
13+
{
14+
files: ['**/*.test.ts'],
15+
rules: {
16+
'id-length': 0,
17+
'@typescript-eslint/no-unused-expressions': 0,
18+
'@typescript-eslint/no-explicit-any': 0,
19+
},
20+
},
21+
{
22+
ignores: ['**/dist/', '**/.*/'],
23+
},
24+
];

0 commit comments

Comments
 (0)