@@ -30,7 +30,7 @@ const cast = (val) => {
3030} ;
3131
3232/**
33- * Assign a flag val to both original and camelCase keys.
33+ * Assign a flag value to both original and camelCase keys.
3434 * @param {{flags: Object<string, any>} } res The result object containing the `flags` property.
3535 * @param {string } key The original flag key.
3636 * @param {any } val The value to assign to the flag.
@@ -66,7 +66,7 @@ const getArray = (raw, i, val) => {
6666 }
6767
6868 // offset is difference between current index "j" and start index "i"
69- return { values, offset : j - i } ;
69+ return { values, offset : j - i } ;
7070} ;
7171
7272/**
@@ -99,41 +99,36 @@ const flaget = (options = {}) => {
9999 * @returns {number } The updated index.
100100 */
101101 const parseLong = ( arg , i ) => {
102- // performance optimized:
103- // 1) using indexOf + slice is ~10% faster than split('=')
104- // 2) splitting first, then slicing is ~30% faster than slicing first, then splitting
105- //let [rawKey, rawVal] = arg.split('='); // 10% slower, but 50 bytes smaller
106- let j = arg . indexOf ( '=' ) ;
107- let [ rawKey , rawVal ] = ~ j ? [ arg . slice ( 0 , j ) , arg . slice ( ++ j ) ] : [ arg ] ;
108-
109- let isNo = rawKey . startsWith ( '--no-' ) ;
110- let key = rawKey . slice ( isNo ? 5 : 2 ) ;
111- key = alias [ key ] || key ;
112-
113- // negated or boolean flag
114- if ( isNo || boolean . includes ( key ) ) {
115- setFlag ( res , key , ! isNo ) ;
116- return i ;
117- }
102+ // performance optimized:
103+ // 1) using indexOf + slice is ~10% faster than split('=')
104+ // 2) splitting first, then slicing is ~30% faster than slicing first, then splitting
105+ //let [rawKey, rawVal] = arg.split('='); // 10% slower, but 50 bytes smaller
106+ let j = arg . indexOf ( '=' ) ;
107+ let isNo = arg . startsWith ( '--no-' ) ;
108+ let key = arg . slice ( isNo ? 5 : 2 , ~ j ? j : void 0 ) ;
109+ let val = ~ j ? arg . slice ( ++ j ) : null ;
110+
111+ key = alias [ key ] || key ;
112+
113+ // negated or boolean flag
114+ if ( isNo || boolean . includes ( key ) ) {
115+ setFlag ( res , key , ! isNo ) ;
116+ return i ;
117+ }
118118
119- // flag with muli-value
120- if ( array . includes ( key ) ) {
121- let { values, offset } = getArray ( raw , i , rawVal ) ;
122- setFlag ( res , key , ( res . flags [ key ] || [ ] ) . concat ( values ) ) ;
123- return i + offset ;
124- }
119+ // flag with muli-value
120+ if ( array . includes ( key ) ) {
121+ let { values, offset } = getArray ( raw , i , val ) ;
122+ setFlag ( res , key , ( res . flags [ key ] || [ ] ) . concat ( values ) ) ;
123+ return i + offset ;
124+ }
125125
126- let val = true ;
127- if ( rawVal != null ) {
128- val = cast ( rawVal ) ;
129- } else if ( isArg ( raw , i ) ) {
130- val = cast ( raw [ ++ i ] ) ;
131- }
126+ val = val != null ? cast ( val ) : isArg ( raw , i ) ? cast ( raw [ ++ i ] ) : true ;
132127
133- setFlag ( res , key , val ) ;
128+ setFlag ( res , key , val ) ;
134129
135- return i ;
136- } ;
130+ return i ;
131+ } ;
137132
138133 /**
139134 * Parse short CLI flags (-a, -abc, -f value).
0 commit comments