Skip to content

Commit ff0abd4

Browse files
committed
chore: comments
1 parent e105954 commit ff0abd4

File tree

6 files changed

+35
-37
lines changed

6 files changed

+35
-37
lines changed

src/cmap/connection_pool.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@ export type ConnectionPoolEvents = {
117117
*/
118118
export class ConnectionPool extends TypedEventEmitter<ConnectionPoolEvents> {
119119
public options: Readonly<ConnectionPoolOptions>;
120+
/** An integer representing the SDAM generation of the pool */
120121
public generation: number;
122+
/** A map of generations to service ids */
121123
public serviceGenerations: Map<string, number>;
122124

123125
private poolState: PoolState;

src/encrypter.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ export class Encrypter {
5757
}
5858

5959
getInternalClient(client: MongoClient, uri: string, options: MongoClientOptions): MongoClient {
60-
// TODO(NODE-4144): Remove new variable for type narrowing
6160
let internalClient = this.internalClient;
6261
if (internalClient == null) {
6362
const clonedOptions: MongoClientOptions = {};
@@ -92,7 +91,6 @@ export class Encrypter {
9291
}
9392

9493
async connectInternalClient(): Promise<void> {
95-
// TODO(NODE-4144): Remove new variable for type narrowing
9694
const internalClient = this.internalClient;
9795
if (this.needsConnecting && internalClient != null) {
9896
this.needsConnecting = false;

src/error.ts

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,12 @@ function isAggregateError(e: unknown): e is Error & { errors: Error[] } {
125125
* mongodb-client-encryption has a dependency on this error, it uses the constructor with a string argument
126126
*/
127127
export class MongoError extends Error {
128-
public readonly errorLabels: string[] = [];
128+
/** @internal */
129+
private readonly errorLabelSet: Set<string> = new Set();
130+
public get errorLabels(): string[] {
131+
return Array.from(this.errorLabelSet);
132+
}
133+
129134
/**
130135
* This is a number in MongoServerError and a string in MongoDriverError
131136
* @privateRemarks
@@ -183,11 +188,11 @@ export class MongoError extends Error {
183188
* @returns returns true if the error has the provided error label
184189
*/
185190
hasErrorLabel(label: string): boolean {
186-
return this.errorLabels.includes(label);
191+
return this.errorLabelSet.has(label);
187192
}
188193

189194
addErrorLabel(label: string): void {
190-
if (!this.hasErrorLabel(label)) this.errorLabels.push(label);
195+
this.errorLabelSet.add(label);
191196
}
192197
}
193198

@@ -1034,7 +1039,7 @@ export interface MongoNetworkErrorOptions {
10341039
*/
10351040
export class MongoNetworkError extends MongoError {
10361041
/** @internal */
1037-
private beforeHandshake?: boolean;
1042+
public readonly beforeHandshake: boolean;
10381043

10391044
/**
10401045
* **Do not use this constructor!**
@@ -1049,20 +1054,12 @@ export class MongoNetworkError extends MongoError {
10491054
**/
10501055
constructor(message: string, options?: MongoNetworkErrorOptions) {
10511056
super(message, { cause: options?.cause });
1052-
1053-
if (options && typeof options.beforeHandshake === 'boolean') {
1054-
this.beforeHandshake = options.beforeHandshake;
1055-
}
1057+
this.beforeHandshake = !!options?.beforeHandshake;
10561058
}
10571059

10581060
override get name(): string {
10591061
return 'MongoNetworkError';
10601062
}
1061-
1062-
/** @internal */
1063-
static isBeforeHandshake(err: MongoNetworkError): boolean {
1064-
return err.beforeHandshake === true;
1065-
}
10661063
}
10671064

10681065
/**

src/sdam/server.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,8 @@ export class Server extends TypedEventEmitter<ServerEvents> {
380380

381381
const isNetworkNonTimeoutError =
382382
error instanceof MongoNetworkError && !(error instanceof MongoNetworkTimeoutError);
383-
const isNetworkTimeoutBeforeHandshakeError = MongoNetworkError.isBeforeHandshake(error);
383+
const isNetworkTimeoutBeforeHandshakeError =
384+
error instanceof MongoNetworkError && error.beforeHandshake;
384385
const isAuthHandshakeError = error.hasErrorLabel(MongoErrorLabel.HandshakeError);
385386
if (isNetworkNonTimeoutError || isNetworkTimeoutBeforeHandshakeError || isAuthHandshakeError) {
386387
// In load balanced mode we never mark the server as unknown and always

src/sessions.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,11 @@ export class ClientSession
174174

175175
options = options ?? {};
176176

177-
if (options.snapshot === true) {
178-
this.snapshotEnabled = true;
179-
if (options.causalConsistency === true) {
180-
throw new MongoInvalidArgumentError(
181-
'Properties "causalConsistency" and "snapshot" are mutually exclusive'
182-
);
183-
}
184-
} else {
185-
this.snapshotEnabled = false;
177+
this.snapshotEnabled = options.snapshot === true;
178+
if (options.causalConsistency === true && this.snapshotEnabled) {
179+
throw new MongoInvalidArgumentError(
180+
'Properties "causalConsistency" and "snapshot" are mutually exclusive'
181+
);
186182
}
187183

188184
this.client = client;

test/unit/error.test.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -289,21 +289,25 @@ describe('MongoErrors', () => {
289289
});
290290

291291
describe('when MongoNetworkError is constructed', () => {
292-
it('should only define beforeHandshake symbol if boolean option passed in', function () {
293-
const errorWithOptionTrue = new MongoNetworkError('', { beforeHandshake: true });
294-
expect(errorWithOptionTrue).to.have.property('beforeHandshake', true);
295-
296-
const errorWithOptionFalse = new MongoNetworkError('', { beforeHandshake: false });
297-
expect(errorWithOptionFalse).to.have.property('beforeHandshake', false);
292+
describe('without options', () => {
293+
it('sets beforeHandshake to false', () => {
294+
const error = new MongoNetworkError('error');
295+
expect(error.beforeHandshake).to.be.false;
296+
});
297+
});
298298

299-
const errorWithBadOption = new MongoNetworkError('', {
300-
// @ts-expect-error: beforeHandshake must be a boolean value
301-
beforeHandshake: 'not boolean'
299+
describe('with options', () => {
300+
it('sets beforeHandshake to false if it is nullish or false', () => {
301+
const error = new MongoNetworkError('error', {});
302+
expect(error.beforeHandshake).to.be.false;
303+
const error2 = new MongoNetworkError('error', { beforeHandshake: false });
304+
expect(error2.beforeHandshake).to.be.false;
302305
});
303-
expect(errorWithBadOption).to.not.have.property('beforeHandshake');
304306

305-
const errorWithoutOption = new MongoNetworkError('');
306-
expect(errorWithoutOption).to.not.have.property('beforeHandshake');
307+
it('sets beforeHandshake to true if it is set', () => {
308+
const error = new MongoNetworkError('error', { beforeHandshake: true });
309+
expect(error.beforeHandshake).to.be.false;
310+
});
307311
});
308312
});
309313

0 commit comments

Comments
 (0)