argv-flags 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.2 - 2026-01-30
4
+
5
+ - Enforce schema boolean fields and allowNo/allowEmpty validation.
6
+ - Export the JSON Schema subpath and verify it in tests.
7
+ - Add fixture-driven contract tests plus additional claim falsification cases.
8
+ - Document array default append behavior.
9
+
10
+ ## 1.0.1 - 2026-01-30
11
+
12
+ - Publish a formal JSON Schema for ParseResult and add JSON-safe conversion helper.
13
+ - Add schema validation tests and expanded real-world parsing tests.
14
+
3
15
  ## 1.0.0 - 2026-01-30
4
16
 
5
17
  - Adopt ESM-only packaging and require Node.js >=24.
package/README.md CHANGED
@@ -11,7 +11,7 @@ npm install argv-flags
11
11
  ## Quick start
12
12
 
13
13
  ```js
14
- import { defineSchema, parseArgs } from 'argv-flags';
14
+ import { defineSchema, parseArgs, toJsonResult } from 'argv-flags';
15
15
 
16
16
  const schema = defineSchema({
17
17
  src: { type: 'string', flags: ['--src'], required: true },
@@ -35,6 +35,7 @@ console.log(result.values.src, result.values.dest);
35
35
  ```ts
36
36
  defineSchema<T extends Schema>(schema: T): T
37
37
  parseArgs<T extends Schema>(schema: T, options?: ParseOptions): ParseResult<T>
38
+ toJsonResult<T extends Schema>(result: ParseResult<T>): ParseResultJson
38
39
  ```
39
40
 
40
41
  ### Schema
@@ -55,6 +56,7 @@ interface FlagSpec<T extends FlagType = FlagType> {
55
56
  Notes:
56
57
  - `flags` must include at least one flag token (`-x` or `--long`).
57
58
  - `default` is cloned for arrays to avoid shared references.
59
+ - Array defaults act as a base; explicit array values append rather than replace.
58
60
  - `allowNo` enables `--no-<flag>` for boolean specs (default: `true`).
59
61
  - `allowEmpty` allows empty string/array values (default: `false`).
60
62
 
@@ -85,6 +87,25 @@ interface ParseResult<S extends Schema> {
85
87
  }
86
88
  ```
87
89
 
90
+ ### JSON Schema (ParseResult)
91
+
92
+ `schema/parse-result.schema.json` defines the JSON-serializable shape of `ParseResult`.
93
+
94
+ Use `toJsonResult()` to convert `undefined` values to `null` before validation:
95
+
96
+ ```js
97
+ import { parseArgs, toJsonResult } from 'argv-flags';
98
+ import Ajv from 'ajv';
99
+ import schema from 'argv-flags/schema/parse-result.schema.json' assert { type: 'json' };
100
+
101
+ const result = parseArgs(schemaDef);
102
+ const jsonResult = toJsonResult(result);
103
+
104
+ const ajv = new Ajv({ allErrors: true });
105
+ const validate = ajv.compile(schema);
106
+ console.log(validate(jsonResult)); // true/false
107
+ ```
108
+
88
109
  ### `issues`
89
110
 
90
111
  Each issue is explicit and stable:
package/dist/index.d.ts CHANGED
@@ -39,7 +39,17 @@ export interface ParseResult<S extends Schema> {
39
39
  issues: ParseIssue[];
40
40
  ok: boolean;
41
41
  }
42
+ export type JsonFlagValue = string | number | boolean | string[] | null;
43
+ export interface ParseResultJson {
44
+ values: Record<string, JsonFlagValue>;
45
+ present: Record<string, boolean>;
46
+ rest: string[];
47
+ unknown: string[];
48
+ issues: ParseIssue[];
49
+ ok: boolean;
50
+ }
42
51
  export declare const defineSchema: <T extends Schema>(schema: T) => T;
43
52
  export declare const parseArgs: <T extends Schema>(schema: T, options?: ParseOptions) => ParseResult<T>;
44
53
  export default parseArgs;
54
+ export declare const toJsonResult: <T extends Schema>(result: ParseResult<T>) => ParseResultJson;
45
55
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjE,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,QAAQ,GAC3D,MAAM,GACN,CAAC,SAAS,SAAS,GAClB,OAAO,GACP,CAAC,SAAS,QAAQ,GACjB,MAAM,GACN,CAAC,SAAS,OAAO,GAChB,MAAM,EAAE,GACR,KAAK,CAAC;AAEZ,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACtD,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhD,MAAM,MAAM,SAAS,GAClB,cAAc,GACd,eAAe,GACf,eAAe,GACf,UAAU,GACV,WAAW,GACX,aAAa,CAAC;AAEjB,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI;KAC3C,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;CACnD,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;KAC5C,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO;CACvB,CAAC;AAEF,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM;IAC5C,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,EAAE,EAAE,OAAO,CAAC;CACZ;AAoFD,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,MAAM,EAAE,QAAQ,CAAC,KAAG,CAAW,CAAC;AAEvE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAS,YAAiB,KAAG,WAAW,CAAC,CAAC,CA8PhG,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ const isNumericValue = (value) => {
19
19
  };
20
20
  const cloneDefault = (value, type) => {
21
21
  if (type === 'array' && Array.isArray(value)) {
22
- return [...value];
22
+ return value.slice();
23
23
  }
24
24
  return value;
25
25
  };
@@ -29,44 +29,104 @@ const splitInlineValue = (token) => {
29
29
  return { flag: token };
30
30
  return { flag: token.slice(0, eqIndex), value: token.slice(eqIndex + 1) };
31
31
  };
32
+ const isStringArray = (value) => Array.isArray(value) && value.every((entry) => typeof entry === 'string');
33
+ const normalizeDefaultValue = (key, value, type) => {
34
+ if (value === undefined) {
35
+ return undefined;
36
+ }
37
+ switch (type) {
38
+ case 'string':
39
+ if (typeof value !== 'string') {
40
+ throw new TypeError(`Schema entry "${key}" default must be a string.`);
41
+ }
42
+ return value;
43
+ case 'boolean':
44
+ if (typeof value !== 'boolean') {
45
+ throw new TypeError(`Schema entry "${key}" default must be a boolean.`);
46
+ }
47
+ return value;
48
+ case 'number':
49
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
50
+ throw new TypeError(`Schema entry "${key}" default must be a finite number.`);
51
+ }
52
+ return value;
53
+ case 'array':
54
+ if (!isStringArray(value)) {
55
+ throw new TypeError(`Schema entry "${key}" default must be a string array.`);
56
+ }
57
+ return value;
58
+ default: {
59
+ const exhaustive = type;
60
+ throw new TypeError(`Schema entry "${key}" has invalid type "${String(exhaustive)}".`);
61
+ }
62
+ }
63
+ };
32
64
  const validateSchema = (schema) => {
33
- if (!schema || typeof schema !== 'object' || Array.isArray(schema)) {
65
+ if (schema === null || typeof schema !== 'object' || Array.isArray(schema)) {
34
66
  throw new TypeError('Schema must be an object.');
35
67
  }
36
68
  const flagToKey = new Map();
37
69
  const normalized = new Map();
38
- for (const [rawKey, rawSpec] of Object.entries(schema)) {
39
- const key = rawKey;
40
- const spec = rawSpec;
41
- if (!spec || typeof spec !== 'object') {
42
- throw new TypeError(`Schema entry for "${String(key)}" must be an object.`);
70
+ const typedSchema = schema;
71
+ for (const key of Object.keys(typedSchema)) {
72
+ const rawSpec = typedSchema[key];
73
+ if (rawSpec === null || typeof rawSpec !== 'object' || Array.isArray(rawSpec)) {
74
+ throw new TypeError(`Schema entry for "${key}" must be an object.`);
43
75
  }
44
- const type = spec.type;
45
- if (!['string', 'boolean', 'number', 'array'].includes(type)) {
46
- throw new TypeError(`Schema entry "${String(key)}" has invalid type "${String(type)}".`);
76
+ const specRecord = rawSpec;
77
+ const type = specRecord['type'];
78
+ if (type !== 'string' && type !== 'boolean' && type !== 'number' && type !== 'array') {
79
+ throw new TypeError(`Schema entry "${key}" has invalid type.`);
47
80
  }
48
- const flagsInput = spec.flags;
81
+ const flagsInput = specRecord['flags'];
49
82
  if (!Array.isArray(flagsInput) || flagsInput.length === 0) {
50
- throw new TypeError(`Schema entry "${String(key)}" must define at least one flag.`);
83
+ throw new TypeError(`Schema entry "${key}" must define at least one flag.`);
51
84
  }
52
85
  const flags = [];
53
86
  for (const flag of flagsInput) {
54
87
  if (typeof flag !== 'string' || flag.length < 2 || !flag.startsWith('-')) {
55
- throw new TypeError(`Schema entry "${String(key)}" has invalid flag "${String(flag)}".`);
88
+ throw new TypeError(`Schema entry "${key}" has invalid flag "${String(flag)}".`);
56
89
  }
57
90
  if (flagToKey.has(flag)) {
58
91
  const existing = flagToKey.get(flag);
59
- throw new TypeError(`Flag "${flag}" is already assigned to "${String(existing)}".`);
92
+ throw new TypeError(`Flag "${flag}" is already assigned to "${existing ?? ''}".`);
60
93
  }
61
94
  flagToKey.set(flag, key);
62
95
  flags.push(flag);
63
96
  }
97
+ const requiredValue = specRecord['required'];
98
+ if (requiredValue !== undefined && typeof requiredValue !== 'boolean') {
99
+ throw new TypeError(`Schema entry "${key}" required must be a boolean.`);
100
+ }
101
+ const allowNoValue = specRecord['allowNo'];
102
+ if (allowNoValue !== undefined && typeof allowNoValue !== 'boolean') {
103
+ throw new TypeError(`Schema entry "${key}" allowNo must be a boolean.`);
104
+ }
105
+ if (allowNoValue !== undefined && type !== 'boolean') {
106
+ throw new TypeError(`Schema entry "${key}" allowNo is only valid for boolean types.`);
107
+ }
108
+ const allowEmptyValue = specRecord['allowEmpty'];
109
+ if (allowEmptyValue !== undefined && typeof allowEmptyValue !== 'boolean') {
110
+ throw new TypeError(`Schema entry "${key}" allowEmpty must be a boolean.`);
111
+ }
112
+ if (allowEmptyValue !== undefined && type !== 'string' && type !== 'array') {
113
+ throw new TypeError(`Schema entry "${key}" allowEmpty is only valid for string or array types.`);
114
+ }
115
+ const defaultValue = normalizeDefaultValue(key, specRecord['default'], type);
116
+ const spec = {
117
+ type,
118
+ flags,
119
+ ...(requiredValue === true ? { required: true } : {}),
120
+ ...(allowEmptyValue === true ? { allowEmpty: true } : {}),
121
+ ...(allowNoValue === false ? { allowNo: false } : {}),
122
+ ...(defaultValue !== undefined ? { default: defaultValue } : {})
123
+ };
64
124
  const longFlag = flags.find((flag) => flag.startsWith('--'));
65
125
  const normalizedSpec = {
66
126
  ...spec,
67
127
  type,
68
128
  flags,
69
- ...(longFlag ? { longFlag } : {})
129
+ ...(typeof longFlag === 'string' ? { longFlag } : {})
70
130
  };
71
131
  normalized.set(key, normalizedSpec);
72
132
  }
@@ -75,7 +135,7 @@ const validateSchema = (schema) => {
75
135
  export const defineSchema = (schema) => schema;
76
136
  export const parseArgs = (schema, options = {}) => {
77
137
  const { flagToKey, normalized } = validateSchema(schema);
78
- const argv = Array.isArray(options.argv) ? options.argv : process.argv.slice(2);
138
+ const argv = options.argv !== undefined ? [...options.argv] : process.argv.slice(2);
79
139
  const allowUnknown = options.allowUnknown === true;
80
140
  const stopAtDoubleDash = options.stopAtDoubleDash !== false;
81
141
  const values = {};
@@ -92,6 +152,9 @@ export const parseArgs = (schema, options = {}) => {
92
152
  };
93
153
  for (let i = 0; i < argv.length; i += 1) {
94
154
  const token = argv[i];
155
+ if (token === undefined) {
156
+ continue;
157
+ }
95
158
  if (stopAtDoubleDash && token === '--') {
96
159
  rest.push(...argv.slice(i + 1));
97
160
  break;
@@ -105,16 +168,16 @@ export const parseArgs = (schema, options = {}) => {
105
168
  if (flag.startsWith('--no-') && !flagToKey.has(flag)) {
106
169
  const base = `--${flag.slice(5)}`;
107
170
  const baseKey = flagToKey.get(base);
108
- if (baseKey) {
171
+ if (baseKey !== undefined) {
109
172
  const baseSpec = normalized.get(baseKey);
110
173
  if (baseSpec?.type === 'boolean' && baseSpec.allowNo !== false) {
111
- if (present[baseKey]) {
174
+ if (present[baseKey] === true) {
112
175
  pushIssue({
113
176
  code: 'DUPLICATE',
114
177
  severity: 'warning',
115
178
  message: `Duplicate flag ${base}.`,
116
179
  flag: base,
117
- key: String(baseKey),
180
+ key: baseKey,
118
181
  index: i
119
182
  });
120
183
  }
@@ -125,7 +188,7 @@ export const parseArgs = (schema, options = {}) => {
125
188
  }
126
189
  }
127
190
  const key = flagToKey.get(flag);
128
- if (!key) {
191
+ if (key === undefined) {
129
192
  if (!allowUnknown) {
130
193
  pushIssue({
131
194
  code: 'UNKNOWN_FLAG',
@@ -141,174 +204,182 @@ export const parseArgs = (schema, options = {}) => {
141
204
  continue;
142
205
  }
143
206
  const spec = normalized.get(key);
144
- if (!spec) {
207
+ if (spec === undefined) {
145
208
  continue;
146
209
  }
147
- const wasPresent = present[key];
210
+ const wasPresent = present[key] === true;
148
211
  if (wasPresent && spec.type !== 'array') {
149
212
  pushIssue({
150
213
  code: 'DUPLICATE',
151
214
  severity: 'warning',
152
215
  message: `Duplicate flag ${flag}.`,
153
216
  flag,
154
- key: String(key),
217
+ key,
155
218
  index: i
156
219
  });
157
220
  }
158
221
  present[key] = true;
159
- if (spec.type === 'boolean') {
160
- let raw = inlineValue;
161
- let consumedNext = false;
162
- if (raw === undefined) {
163
- const nextValue = argv[i + 1];
164
- const normalizedValue = normalizeBoolean(nextValue);
165
- if (normalizedValue !== undefined) {
166
- raw = nextValue;
167
- consumedNext = true;
222
+ switch (spec.type) {
223
+ case 'boolean': {
224
+ let raw = inlineValue;
225
+ let consumedNext = false;
226
+ if (raw === undefined) {
227
+ const nextValue = argv[i + 1];
228
+ const normalizedValue = normalizeBoolean(nextValue);
229
+ if (normalizedValue !== undefined) {
230
+ raw = nextValue;
231
+ consumedNext = true;
232
+ }
233
+ }
234
+ if (raw !== undefined) {
235
+ const normalizedValue = normalizeBoolean(raw);
236
+ if (normalizedValue === undefined) {
237
+ pushIssue({
238
+ code: 'INVALID_VALUE',
239
+ severity: 'error',
240
+ message: `Invalid boolean value for ${flag}: ${raw}.`,
241
+ flag,
242
+ key,
243
+ value: raw,
244
+ index: i
245
+ });
246
+ }
247
+ else {
248
+ values[key] = normalizedValue;
249
+ if (consumedNext) {
250
+ i += 1;
251
+ }
252
+ }
253
+ }
254
+ else {
255
+ values[key] = true;
168
256
  }
257
+ break;
169
258
  }
170
- if (raw !== undefined) {
171
- const normalizedValue = normalizeBoolean(raw);
172
- if (normalizedValue === undefined) {
259
+ case 'string': {
260
+ let raw = inlineValue;
261
+ if (raw === undefined) {
262
+ const nextValue = argv[i + 1];
263
+ if (typeof nextValue !== 'string' || isFlagToken(nextValue)) {
264
+ pushIssue({
265
+ code: 'MISSING_VALUE',
266
+ severity: 'error',
267
+ message: `Missing value for ${flag}.`,
268
+ flag,
269
+ key,
270
+ index: i
271
+ });
272
+ break;
273
+ }
274
+ raw = nextValue;
275
+ i += 1;
276
+ }
277
+ if (raw.length === 0 && spec.allowEmpty !== true) {
173
278
  pushIssue({
174
- code: 'INVALID_VALUE',
279
+ code: 'EMPTY_VALUE',
175
280
  severity: 'error',
176
- message: `Invalid boolean value for ${flag}: ${raw}.`,
281
+ message: `Empty value not allowed for ${flag}.`,
177
282
  flag,
178
- key: String(key),
179
- value: raw,
283
+ key,
180
284
  index: i
181
285
  });
286
+ break;
182
287
  }
183
- else {
184
- values[key] = normalizedValue;
185
- if (consumedNext) {
186
- i += 1;
288
+ values[key] = raw;
289
+ break;
290
+ }
291
+ case 'number': {
292
+ let raw = inlineValue;
293
+ if (raw === undefined) {
294
+ const nextValue = argv[i + 1];
295
+ if (typeof nextValue !== 'string' || (!isNumericValue(nextValue) && isFlagToken(nextValue))) {
296
+ pushIssue({
297
+ code: 'MISSING_VALUE',
298
+ severity: 'error',
299
+ message: `Missing value for ${flag}.`,
300
+ flag,
301
+ key,
302
+ index: i
303
+ });
304
+ break;
187
305
  }
306
+ raw = nextValue;
307
+ i += 1;
188
308
  }
189
- }
190
- else {
191
- values[key] = true;
192
- }
193
- continue;
194
- }
195
- if (spec.type === 'string') {
196
- let raw = inlineValue;
197
- if (raw === undefined) {
198
- const nextValue = argv[i + 1];
199
- if (typeof nextValue !== 'string' || isFlagToken(nextValue)) {
309
+ if (!isNumericValue(raw)) {
200
310
  pushIssue({
201
- code: 'MISSING_VALUE',
311
+ code: 'INVALID_VALUE',
202
312
  severity: 'error',
203
- message: `Missing value for ${flag}.`,
313
+ message: `Invalid number value for ${flag}: ${raw}.`,
204
314
  flag,
205
- key: String(key),
315
+ key,
316
+ value: raw,
206
317
  index: i
207
318
  });
208
- continue;
319
+ break;
209
320
  }
210
- raw = nextValue;
211
- i += 1;
321
+ values[key] = Number(raw);
322
+ break;
212
323
  }
213
- if (raw.length === 0 && spec.allowEmpty !== true) {
214
- pushIssue({
215
- code: 'EMPTY_VALUE',
216
- severity: 'error',
217
- message: `Empty value not allowed for ${flag}.`,
218
- flag,
219
- key: String(key),
220
- index: i
221
- });
222
- continue;
223
- }
224
- values[key] = raw;
225
- continue;
226
- }
227
- if (spec.type === 'number') {
228
- let raw = inlineValue;
229
- if (raw === undefined) {
230
- const nextValue = argv[i + 1];
231
- if (typeof nextValue !== 'string' || (!isNumericValue(nextValue) && isFlagToken(nextValue))) {
324
+ case 'array': {
325
+ const collected = [];
326
+ if (inlineValue !== undefined && inlineValue.length > 0) {
327
+ collected.push(inlineValue);
328
+ }
329
+ let cursor = i + 1;
330
+ while (cursor < argv.length) {
331
+ const nextValue = argv[cursor];
332
+ if (nextValue === undefined) {
333
+ cursor += 1;
334
+ continue;
335
+ }
336
+ if (stopAtDoubleDash && nextValue === '--') {
337
+ break;
338
+ }
339
+ if (isFlagToken(nextValue)) {
340
+ break;
341
+ }
342
+ collected.push(nextValue);
343
+ cursor += 1;
344
+ }
345
+ if (cursor > i + 1) {
346
+ i = cursor - 1;
347
+ }
348
+ if (collected.length === 0 && spec.allowEmpty !== true) {
232
349
  pushIssue({
233
350
  code: 'MISSING_VALUE',
234
351
  severity: 'error',
235
352
  message: `Missing value for ${flag}.`,
236
353
  flag,
237
- key: String(key),
354
+ key,
238
355
  index: i
239
356
  });
240
- continue;
241
- }
242
- raw = nextValue;
243
- i += 1;
244
- }
245
- if (!isNumericValue(raw)) {
246
- pushIssue({
247
- code: 'INVALID_VALUE',
248
- severity: 'error',
249
- message: `Invalid number value for ${flag}: ${raw}.`,
250
- flag,
251
- key: String(key),
252
- value: raw,
253
- index: i
254
- });
255
- continue;
256
- }
257
- values[key] = Number(raw);
258
- continue;
259
- }
260
- if (spec.type === 'array') {
261
- const collected = [];
262
- if (inlineValue !== undefined && inlineValue.length > 0) {
263
- collected.push(inlineValue);
264
- }
265
- let cursor = i + 1;
266
- while (cursor < argv.length) {
267
- const nextValue = argv[cursor];
268
- if (stopAtDoubleDash && nextValue === '--') {
269
357
  break;
270
358
  }
271
- if (isFlagToken(nextValue)) {
272
- break;
273
- }
274
- collected.push(nextValue);
275
- cursor += 1;
276
- }
277
- if (cursor > i + 1) {
278
- i = cursor - 1;
359
+ const existing = Array.isArray(values[key]) ? values[key] : [];
360
+ values[key] = [...existing, ...collected];
361
+ break;
279
362
  }
280
- if (collected.length === 0 && spec.allowEmpty !== true) {
281
- pushIssue({
282
- code: 'MISSING_VALUE',
283
- severity: 'error',
284
- message: `Missing value for ${flag}.`,
285
- flag,
286
- key: String(key),
287
- index: i
288
- });
289
- continue;
290
- }
291
- const existing = Array.isArray(values[key]) ? values[key] : [];
292
- values[key] = [...existing, ...collected];
293
- continue;
363
+ default:
364
+ break;
294
365
  }
295
366
  }
296
367
  for (const [key, spec] of normalized.entries()) {
297
- if (spec.required && !present[key]) {
368
+ if (spec.required === true && present[key] !== true) {
298
369
  const primaryFlag = spec.flags[0];
299
370
  pushIssue({
300
371
  code: 'REQUIRED',
301
372
  severity: 'error',
302
373
  message: `Missing required flag ${primaryFlag ?? ''}.`,
303
- ...(primaryFlag ? { flag: primaryFlag } : {}),
304
- key: String(key)
374
+ ...(typeof primaryFlag === 'string' ? { flag: primaryFlag } : {}),
375
+ key
305
376
  });
306
377
  }
307
378
  }
308
379
  const ok = issues.every((issue) => issue.severity !== 'error');
309
380
  return {
310
- values,
311
- present,
381
+ values: values,
382
+ present: present,
312
383
  rest,
313
384
  unknown,
314
385
  issues,
@@ -316,4 +387,28 @@ export const parseArgs = (schema, options = {}) => {
316
387
  };
317
388
  };
318
389
  export default parseArgs;
390
+ export const toJsonResult = (result) => {
391
+ const values = {};
392
+ const valueEntries = result.values;
393
+ for (const [key, value] of Object.entries(valueEntries)) {
394
+ if (value === undefined) {
395
+ values[key] = null;
396
+ continue;
397
+ }
398
+ values[key] = value;
399
+ }
400
+ const presentEntries = result.present;
401
+ const present = {};
402
+ for (const [key, value] of Object.entries(presentEntries)) {
403
+ present[key] = value;
404
+ }
405
+ return {
406
+ values,
407
+ present,
408
+ rest: [...result.rest],
409
+ unknown: [...result.unknown],
410
+ issues: [...result.issues],
411
+ ok: result.ok
412
+ };
413
+ };
319
414
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACtE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAoFxE,MAAM,WAAW,GAAG,CAAC,KAAc,EAAmB,EAAE,CACvD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAExE,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAuB,EAAE;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAc,EAAW,EAAE;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACpB,KAAsC,EACtC,IAAc,EACoB,EAAE;IACpC,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAoC,EAAE;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAqB,EAAE,CAC3D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAE3E,MAAM,qBAAqB,GAAG,CAC7B,GAAW,EACX,KAAc,EACd,IAAc,EACoB,EAAE;IACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,QAAQ;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,6BAA6B,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,KAAK,CAAC;QACd,KAAK,SAAS;YACb,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,8BAA8B,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,KAAK,CAAC;QACd,KAAK,QAAQ;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,oCAAoC,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,KAAK,CAAC;QACd,KAAK,OAAO;YACX,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,mCAAmC,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,KAAK,CAAC;QACd,OAAO,CAAC,CAAC,CAAC;YACT,MAAM,UAAU,GAAU,IAAI,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,uBAAuB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACxF,CAAC;IACF,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAe,EAAE,EAAE;IAC1C,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;IACrD,MAAM,WAAW,GAAG,MAAiC,CAAC;IAEtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,SAAS,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,UAAU,GAAG,OAAkC,CAAC;QACtD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACtF,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,kCAAkC,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,uBAAuB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,6BAA6B,QAAQ,IAAI,EAAE,IAAI,CAAC,CAAC;YACnF,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE,CAAC;YACvE,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,+BAA+B,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,YAAY,KAAK,SAAS,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;YACrE,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,8BAA8B,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,YAAY,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACtD,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,4CAA4C,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,eAAe,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,eAAe,KAAK,SAAS,IAAI,OAAO,eAAe,KAAK,SAAS,EAAE,CAAC;YAC3E,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,iCAAiC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,eAAe,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5E,MAAM,IAAI,SAAS,CAAC,iBAAiB,GAAG,uDAAuD,CAAC,CAAC;QAClG,CAAC;QACD,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAa;YACtB,IAAI;YACJ,KAAK;YACL,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC;QACF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAmB;YACtC,GAAG,IAAI;YACP,IAAI;YACJ,KAAK;YACL,GAAG,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrD,CAAC;QACF,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAmB,MAAS,EAAK,EAAE,CAAC,MAAM,CAAC;AAEvE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAmB,MAAS,EAAE,UAAwB,EAAE,EAAkB,EAAE;IACpG,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAE,GAAG,OAAO,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;IACnD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC;IAE5D,MAAM,MAAM,GAAoD,EAAE,CAAC;IACnE,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,KAAiB,EAAE,EAAE;QACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,SAAS;QACV,CAAC;QACD,IAAI,gBAAgB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM;QACP,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,SAAS;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7D,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,QAAQ,EAAE,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;oBAChE,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;wBAC/B,SAAS,CAAC;4BACT,IAAI,EAAE,WAAW;4BACjB,QAAQ,EAAE,SAAS;4BACnB,OAAO,EAAE,kBAAkB,IAAI,GAAG;4BAClC,IAAI,EAAE,IAAI;4BACV,GAAG,EAAE,OAAO;4BACZ,KAAK,EAAE,CAAC;yBACR,CAAC,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;oBACxB,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;oBACxB,SAAS;gBACV,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnB,SAAS,CAAC;oBACT,IAAI,EAAE,cAAc;oBACpB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,gBAAgB,IAAI,GAAG;oBAChC,IAAI;oBACJ,KAAK,EAAE,CAAC;iBACR,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YACD,SAAS;QACV,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACV,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;QACzC,IAAI,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzC,SAAS,CAAC;gBACT,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,kBAAkB,IAAI,GAAG;gBAClC,IAAI;gBACJ,GAAG;gBACH,KAAK,EAAE,CAAC;aACR,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAEpB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,CAAC,CAAC;gBAChB,IAAI,GAAG,GAAG,WAAW,CAAC;gBACtB,IAAI,YAAY,GAAG,KAAK,CAAC;gBACzB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC9B,MAAM,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;oBACpD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;wBACnC,GAAG,GAAG,SAAS,CAAC;wBAChB,YAAY,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACF,CAAC;gBACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAC9C,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;wBACnC,SAAS,CAAC;4BACT,IAAI,EAAE,eAAe;4BACrB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,6BAA6B,IAAI,KAAK,GAAG,GAAG;4BACrD,IAAI;4BACJ,GAAG;4BACH,KAAK,EAAE,GAAG;4BACV,KAAK,EAAE,CAAC;yBACR,CAAC,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACP,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;wBAC9B,IAAI,YAAY,EAAE,CAAC;4BAClB,CAAC,IAAI,CAAC,CAAC;wBACR,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACpB,CAAC;gBACD,MAAM;YACP,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACf,IAAI,GAAG,GAAG,WAAW,CAAC;gBACtB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC9B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7D,SAAS,CAAC;4BACT,IAAI,EAAE,eAAe;4BACrB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,qBAAqB,IAAI,GAAG;4BACrC,IAAI;4BACJ,GAAG;4BACH,KAAK,EAAE,CAAC;yBACR,CAAC,CAAC;wBACH,MAAM;oBACP,CAAC;oBACD,GAAG,GAAG,SAAS,CAAC;oBAChB,CAAC,IAAI,CAAC,CAAC;gBACR,CAAC;gBACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBAClD,SAAS,CAAC;wBACT,IAAI,EAAE,aAAa;wBACnB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,+BAA+B,IAAI,GAAG;wBAC/C,IAAI;wBACJ,GAAG;wBACH,KAAK,EAAE,CAAC;qBACR,CAAC,CAAC;oBACH,MAAM;gBACP,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAClB,MAAM;YACP,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACf,IAAI,GAAG,GAAG,WAAW,CAAC;gBACtB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC9B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;wBAC7F,SAAS,CAAC;4BACT,IAAI,EAAE,eAAe;4BACrB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,qBAAqB,IAAI,GAAG;4BACrC,IAAI;4BACJ,GAAG;4BACH,KAAK,EAAE,CAAC;yBACR,CAAC,CAAC;wBACH,MAAM;oBACP,CAAC;oBACD,GAAG,GAAG,SAAS,CAAC;oBAChB,CAAC,IAAI,CAAC,CAAC;gBACR,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,SAAS,CAAC;wBACT,IAAI,EAAE,eAAe;wBACrB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,4BAA4B,IAAI,KAAK,GAAG,GAAG;wBACpD,IAAI;wBACJ,GAAG;wBACH,KAAK,EAAE,GAAG;wBACV,KAAK,EAAE,CAAC;qBACR,CAAC,CAAC;oBACH,MAAM;gBACP,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1B,MAAM;YACP,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACd,MAAM,SAAS,GAAa,EAAE,CAAC;gBAC/B,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzD,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC7B,CAAC;gBACD,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnB,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC7B,MAAM,IAAI,CAAC,CAAC;wBACZ,SAAS;oBACV,CAAC;oBACD,IAAI,gBAAgB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;wBAC5C,MAAM;oBACP,CAAC;oBACD,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC5B,MAAM;oBACP,CAAC;oBACD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC1B,MAAM,IAAI,CAAC,CAAC;gBACb,CAAC;gBACD,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;gBAChB,CAAC;gBACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBACxD,SAAS,CAAC;wBACT,IAAI,EAAE,eAAe;wBACrB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,qBAAqB,IAAI,GAAG;wBACrC,IAAI;wBACJ,GAAG;wBACH,KAAK,EAAE,CAAC;qBACR,CAAC,CAAC;oBACH,MAAM;gBACP,CAAC;gBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAE,CAAC;gBAC5C,MAAM;YACP,CAAC;YACD;gBACC,MAAM;QACR,CAAC;IACF,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACrD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClC,SAAS,CAAC;gBACT,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,yBAAyB,WAAW,IAAI,EAAE,GAAG;gBACtD,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,GAAG;aACH,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAE/D,OAAO;QACN,MAAM,EAAE,MAAyB;QACjC,OAAO,EAAE,OAA2B;QACpC,IAAI;QACJ,OAAO;QACP,MAAM;QACN,EAAE;KACF,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC;AAEzB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAmB,MAAsB,EAAmB,EAAE;IACzF,MAAM,MAAM,GAAkC,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAyD,CAAC;IACtF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACnB,SAAS;QACV,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAsB,CAAC;IACtC,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAkC,CAAC;IACjE,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO;QACN,MAAM;QACN,OAAO;QACP,IAAI,EAAE,CAAE,GAAG,MAAM,CAAC,IAAI,CAAE;QACxB,OAAO,EAAE,CAAE,GAAG,MAAM,CAAC,OAAO,CAAE;QAC9B,MAAM,EAAE,CAAE,GAAG,MAAM,CAAC,MAAM,CAAE;QAC5B,EAAE,EAAE,MAAM,CAAC,EAAE;KACb,CAAC;AACH,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "argv-flags",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Schema-based CLI flag parser for Node.js.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -9,17 +9,20 @@
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
11
11
  "default": "./dist/index.js"
12
- }
12
+ },
13
+ "./schema/parse-result.schema.json": "./schema/parse-result.schema.json"
13
14
  },
14
15
  "files": [
15
16
  "CHANGELOG.md",
16
17
  "LICENSE",
17
18
  "README.md",
18
- "dist"
19
+ "dist",
20
+ "schema"
19
21
  ],
20
22
  "scripts": {
21
23
  "build": "tsc -p tsconfig.json",
22
- "test": "npm run build && node --test"
24
+ "lint": "eslint .",
25
+ "test": "npm run build && npm run lint && node --test"
23
26
  },
24
27
  "repository": {
25
28
  "type": "git",
@@ -41,7 +44,16 @@
41
44
  "node": ">=24"
42
45
  },
43
46
  "devDependencies": {
47
+ "@eslint/js": "^9.39.2",
44
48
  "@types/node": "^24.0.0",
49
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
50
+ "@typescript-eslint/parser": "^8.54.0",
51
+ "ajv": "^8.17.1",
52
+ "eslint": "^9.39.2",
53
+ "eslint-plugin-n": "^17.23.2",
54
+ "eslint-plugin-promise": "^7.2.1",
55
+ "eslint-plugin-security": "^3.0.1",
56
+ "globals": "^17.2.0",
45
57
  "typescript": "^5.5.4"
46
58
  }
47
59
  }
@@ -0,0 +1,65 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schema.argv-flags.dev/parse-result.schema.json",
4
+ "title": "argv-flags ParseResult (JSON)",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["values", "present", "rest", "unknown", "issues", "ok"],
8
+ "properties": {
9
+ "values": {
10
+ "type": "object",
11
+ "additionalProperties": {
12
+ "anyOf": [
13
+ { "type": "string" },
14
+ { "type": "number" },
15
+ { "type": "boolean" },
16
+ {
17
+ "type": "array",
18
+ "items": { "type": "string" }
19
+ },
20
+ { "type": "null" }
21
+ ]
22
+ }
23
+ },
24
+ "present": {
25
+ "type": "object",
26
+ "additionalProperties": { "type": "boolean" }
27
+ },
28
+ "rest": {
29
+ "type": "array",
30
+ "items": { "type": "string" }
31
+ },
32
+ "unknown": {
33
+ "type": "array",
34
+ "items": { "type": "string" }
35
+ },
36
+ "issues": {
37
+ "type": "array",
38
+ "items": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["code", "severity", "message"],
42
+ "properties": {
43
+ "code": {
44
+ "type": "string",
45
+ "enum": [
46
+ "UNKNOWN_FLAG",
47
+ "MISSING_VALUE",
48
+ "INVALID_VALUE",
49
+ "REQUIRED",
50
+ "DUPLICATE",
51
+ "EMPTY_VALUE"
52
+ ]
53
+ },
54
+ "severity": { "type": "string", "enum": ["error", "warning"] },
55
+ "message": { "type": "string" },
56
+ "flag": { "type": "string" },
57
+ "key": { "type": "string" },
58
+ "value": { "type": "string" },
59
+ "index": { "type": "integer", "minimum": 0 }
60
+ }
61
+ }
62
+ },
63
+ "ok": { "type": "boolean" }
64
+ }
65
+ }