diff --git a/.changeset/serious-shirts-teach.md b/.changeset/serious-shirts-teach.md new file mode 100644 index 0000000..20d3c77 --- /dev/null +++ b/.changeset/serious-shirts-teach.md @@ -0,0 +1,5 @@ +--- +"ultraflag": patch +--- + +Fixes an edge case where passing an empty `argv` array would return an empty object without default values. diff --git a/src/index.ts b/src/index.ts index c6d13eb..2ca8e90 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,12 +1,12 @@ import type { - ParseOptions, + Aliases, Args, - NestedMapping, - Values, BooleanType, - StringType, Collectable, - Aliases, + NestedMapping, + ParseOptions, + StringType, + Values, } from "./types.js"; export { ParseOptions, Args } from "./types.js"; @@ -18,7 +18,7 @@ const set = (obj: NestedMapping, key: string, value: any, type?: string) => { const parts = key.split("."); for (let i = 0; i < parts.length - 1; i++) { const k = parts[i]; - let tmp = {}; + const tmp = {}; set(obj, k, tmp); obj = tmp; } @@ -89,8 +89,8 @@ export function parse< ...types }: ParseOptions = {} ): Args { - if (argv.length === 0) return {} as Args; const obj = { ...defaults, _: [] } as unknown as Args; + if (argv.length === 0) return obj; for (let i = 0; i < argv.length; i++) { const curr = argv[i];