11'use strict' ;
22const isA = Array . isArray ;
33/**
4- * @typedef {string } KeyStr Variable name
5- * @typedef {string | boolean | string[] } VarVal Variable value
4+ * @typedef {string } KeyStr Variable name, in most cases, or kit name
65 * @typedef {string } OptStr Option string, e.g. '--', '-o', '--option'
7- * @typedef {OptStr | null } OptDef Option definitions , e.g. '--', '-o', '--option', or null to refer to the variable name
8- * @typedef {OptDef | OptDef[] } OptKit one or more option definitions
6+ * @typedef {OptStr | null } OptDef Option definition , e.g. '--', '-o', '--option', or ` null` to refer to the variable name
7+ * @typedef {OptDef | OptDef[] } OptKit one or more option definitions, for a shortest one
98 *
109 * @typedef {object } VarKit Variable configuration object
1110 * @property {VarVal } [def] Variable **def**inition & **def**ault value (pun intended)
1211 * @property {OptKit } [set] Array of options to set the variable value
1312 * @property {OptKit } [rst] Array of options to reset the variable value
13+ * @typedef {string | boolean | string[] } VarVal Variable value
1414 *
15- * @typedef {OptDef | OptDef[] } ExitKit Exit options, identical to `OptKit` for now
16- * @typedef {Record<KeyStr, VarKit | ExitKit> } KeyKitMap
17- * @typedef {Record<KeyStr, VarVal> } KeyValMap
15+ * @typedef {OptDef | OptDef[] } ExitKit Exit options
16+ * @typedef {Record<KeyStr, VarKit | ExitKit> } KeyKitMap `req`
17+ * @typedef {Record<KeyStr, VarVal> } KeyValMap `res`
1818 *
1919 * @callback IsFatal
20- * @param {{msg: string, i : number, opt: OptStr, key?: KeyStr, val?: VarVal } } err
20+ * @param {{msg: string, avi : number, opt: OptStr, key?: KeyStr, val?: VarVal } } err
2121 * @returns {boolean } Whether the parsing should continue (false) or quit (true)
2222 * @typedef {Record<OptStr, KeyStr> } OptKeyMap internal type
2323 */
@@ -30,7 +30,7 @@ const god = ok => ok === undefined ? [] : isA(ok) ? ok : [ok];
3030 * @param {KeyKitMap } req Options structure definition
3131 * @param {KeyValMap } res Object to store parsed results
3232 * @param {IsFatal } err Error handler function, return true to quit parsing
33- * @returns {number | { i : number, key: KeyStr, opt: OptStr } }
33+ * @returns {number | { avi : number, key: KeyStr, opt: OptStr } } `ret` is object when an exit option applied, or just `avi`
3434 * @example
3535 */
3636export default function parse ( argv , i , req , res , err ) {
@@ -52,8 +52,8 @@ export default function parse(argv, i, req, res, err) {
5252 return false ;
5353 } return true ;
5454 } , k = o => o == null ? key : o , // undefined is ok?
55- ask = ( msg , val ) => err ( { msg, i, opt, key, val} ) ,
56- exit = c => ( { i : i + c , key, opt } ) ;
55+ ask = ( msg , val ) => err ( { msg, avi : i , opt, key, val} ) ,
56+ exit = c => ( { avi : i + c , key, opt } ) ;
5757 // prepare
5858 /** @type {OptKeyMap } */
5959 const set_ = { } , rst_ = { } , exit_ = { } ;
0 commit comments