@@ -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' ;
@@ -1246,12 +1248,53 @@ export const OPTIONS = {
1246
1248
* @internal
1247
1249
* TODO: NODE-5671 - remove internal flag
1248
1250
*/
1249
- mongodbLogPath : { type : 'any' } ,
1251
+ mongodbLogPath : {
1252
+ transform ( { values : [ value ] } ) {
1253
+ if (
1254
+ ! (
1255
+ ( typeof value === 'string' && [ 'stderr' , 'stdout' ] . includes ( value ) ) ||
1256
+ ( value &&
1257
+ typeof value === 'object' &&
1258
+ 'write' in value &&
1259
+ typeof value . write === 'function' )
1260
+ )
1261
+ ) {
1262
+ throw new MongoAPIError (
1263
+ `Option 'mongodbLogPath' must be of type 'stderr' | 'stdout' | MongoDBLogWritable`
1264
+ ) ;
1265
+ }
1266
+ return value ;
1267
+ }
1268
+ } ,
1250
1269
/**
1251
1270
* @internal
1252
1271
* TODO: NODE-5671 - remove internal flag
1253
1272
*/
1254
- mongodbLogComponentSeverities : { type : 'any' } ,
1273
+ mongodbLogComponentSeverities : {
1274
+ transform ( { values : [ value ] } ) {
1275
+ if ( typeof value !== 'object' || ! value ) {
1276
+ throw new MongoAPIError ( `Option 'mongodbLogComponentSeverities' must be a non-null object` ) ;
1277
+ }
1278
+ for ( const [ k , v ] of Object . entries ( value ) ) {
1279
+ if ( typeof v !== 'string' || typeof k !== 'string' ) {
1280
+ throw new MongoAPIError (
1281
+ `User input for option 'mongodbLogComponentSeverities' object cannot include a non-string key or value`
1282
+ ) ;
1283
+ }
1284
+ if ( ! Object . values ( MongoLoggableComponent ) . some ( val => val === k ) && k !== 'default' ) {
1285
+ throw new MongoAPIError (
1286
+ `User input for option 'mongodbLogComponentSeverities' contains invalid key: ${ k } `
1287
+ ) ;
1288
+ }
1289
+ if ( ! Object . values ( SeverityLevel ) . some ( val => val === v ) ) {
1290
+ throw new MongoAPIError (
1291
+ `Option 'mongodbLogComponentSeverities' does not support ${ v } as a value for ${ k } `
1292
+ ) ;
1293
+ }
1294
+ }
1295
+ return value ;
1296
+ }
1297
+ } ,
1255
1298
/**
1256
1299
* @internal
1257
1300
* TODO: NODE-5671 - remove internal flag
0 commit comments