@@ -23,9 +23,11 @@ import {
23
23
ServerApiVersion
24
24
} from './mongo_client' ;
25
25
import {
26
+ MongoLoggableComponent ,
26
27
MongoLogger ,
27
28
type MongoLoggerEnvOptions ,
28
- type MongoLoggerMongoClientOptions
29
+ type MongoLoggerMongoClientOptions ,
30
+ SeverityLevel
29
31
} from './mongo_logger' ;
30
32
import { ReadConcern , type ReadConcernLevel } from './read_concern' ;
31
33
import { ReadPreference , type ReadPreferenceMode } from './read_preference' ;
@@ -1243,12 +1245,53 @@ export const OPTIONS = {
1243
1245
* @internal
1244
1246
* TODO: NODE-5671 - remove internal flag
1245
1247
*/
1246
- mongodbLogPath : { type : 'any' } ,
1248
+ mongodbLogPath : {
1249
+ transform ( { values : [ value ] } ) {
1250
+ if (
1251
+ ! (
1252
+ ( typeof value === 'string' && [ 'stderr' , 'stdout' ] . includes ( value ) ) ||
1253
+ ( value &&
1254
+ typeof value === 'object' &&
1255
+ Object . keys ( value ) . indexOf ( 'write' ) >= 0 &&
1256
+ typeof Object . values ( value ) [ Object . keys ( value ) . indexOf ( 'write' ) ] === 'function' )
1257
+ )
1258
+ ) {
1259
+ throw new MongoAPIError (
1260
+ `Option 'mongodbLogPath' must be of type 'stderr' | 'stdout' | MongoDBLogWritable`
1261
+ ) ;
1262
+ }
1263
+ return value ;
1264
+ }
1265
+ } ,
1247
1266
/**
1248
1267
* @internal
1249
1268
* TODO: NODE-5671 - remove internal flag
1250
1269
*/
1251
- mongodbLogComponentSeverities : { type : 'any' } ,
1270
+ mongodbLogComponentSeverities : {
1271
+ transform ( { values : [ value ] } ) {
1272
+ if ( typeof value !== 'object' || ! value ) {
1273
+ throw new MongoAPIError ( `Option 'mongodbLogComponentSeverities' must be a non-null object` ) ;
1274
+ }
1275
+ for ( const [ k , v ] of Object . entries ( value ) ) {
1276
+ if ( typeof v !== 'string' || typeof k !== 'string' ) {
1277
+ throw new MongoAPIError (
1278
+ `User input for option 'mongodbLogComponentSeverities' object cannot include a non-string key or value`
1279
+ ) ;
1280
+ }
1281
+ if ( ! Object . values ( MongoLoggableComponent ) . some ( val => val === k ) && k !== 'default' ) {
1282
+ throw new MongoAPIError (
1283
+ `User input for option 'mongodbLogComponentSeverities' contains invalid key: ${ k } `
1284
+ ) ;
1285
+ }
1286
+ if ( ! Object . values ( SeverityLevel ) . some ( val => val === v ) ) {
1287
+ throw new MongoAPIError (
1288
+ `Option 'mongodbLogComponentSeverities' does not support ${ v } as a value for ${ k } `
1289
+ ) ;
1290
+ }
1291
+ }
1292
+ return value ;
1293
+ }
1294
+ } ,
1252
1295
/**
1253
1296
* @internal
1254
1297
* TODO: NODE-5671 - remove internal flag
0 commit comments