@optique/core 0.10.0-dev.291 → 0.10.0-dev.293

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.
@@ -0,0 +1,510 @@
1
+ //#region src/dependency.ts
2
+ /**
3
+ * A unique symbol used to identify dependency sources at compile time.
4
+ * This marker is used to distinguish {@link DependencySource} from regular
5
+ * {@link ValueParser} instances.
6
+ * @since 0.10.0
7
+ */
8
+ const DependencySourceMarker = Symbol.for("@optique/core/dependency/DependencySourceMarker");
9
+ /**
10
+ * A unique symbol used to identify derived value parsers at compile time.
11
+ * This marker is used to distinguish {@link DerivedValueParser} from regular
12
+ * {@link ValueParser} instances.
13
+ * @since 0.10.0
14
+ */
15
+ const DerivedValueParserMarker = Symbol.for("@optique/core/dependency/DerivedValueParserMarker");
16
+ /**
17
+ * A unique symbol used to store the dependency ID on value parsers.
18
+ * @since 0.10.0
19
+ */
20
+ const DependencyId = Symbol.for("@optique/core/dependency/DependencyId");
21
+ /**
22
+ * A unique symbol used to access the parseWithDependency method on derived parsers.
23
+ * @since 0.10.0
24
+ */
25
+ const ParseWithDependency = Symbol.for("@optique/core/dependency/ParseWithDependency");
26
+ /**
27
+ * Creates a dependency source from a {@link ValueParser}.
28
+ *
29
+ * A dependency source wraps an existing value parser and enables creating
30
+ * derived parsers that depend on the parsed value. This is useful for
31
+ * scenarios where one option's valid values depend on another option's value.
32
+ *
33
+ * @template M The execution mode of the value parser.
34
+ * @template T The type of value the parser produces.
35
+ * @param parser The value parser to wrap as a dependency source.
36
+ * @returns A {@link DependencySource} that can be used to create
37
+ * derived parsers.
38
+ * @example
39
+ * ```typescript
40
+ * import { dependency } from "@optique/core/dependency";
41
+ * import { string } from "@optique/core/valueparser";
42
+ *
43
+ * // Create a dependency source for a directory path
44
+ * const cwdParser = dependency(string({ metavar: "DIR" }));
45
+ *
46
+ * // Create a derived parser that depends on the directory
47
+ * const branchParser = cwdParser.derive({
48
+ * metavar: "BRANCH",
49
+ * factory: (dir) => gitBranch({ dir }),
50
+ * defaultValue: () => process.cwd(),
51
+ * });
52
+ * ```
53
+ * @since 0.10.0
54
+ */
55
+ function dependency(parser) {
56
+ const id = Symbol();
57
+ const result = {
58
+ ...parser,
59
+ [DependencySourceMarker]: true,
60
+ [DependencyId]: id,
61
+ derive(options) {
62
+ return createDerivedValueParser(id, parser, options);
63
+ },
64
+ deriveSync(options) {
65
+ if (parser.$mode === "async") return createAsyncDerivedParserFromSyncFactory(id, options);
66
+ return createSyncDerivedParser(id, options);
67
+ },
68
+ deriveAsync(options) {
69
+ return createDerivedValueParser(id, parser, options);
70
+ }
71
+ };
72
+ return result;
73
+ }
74
+ /**
75
+ * Checks if a value parser is a {@link DependencySource}.
76
+ *
77
+ * @param parser The value parser to check.
78
+ * @returns `true` if the parser is a dependency source, `false` otherwise.
79
+ * @since 0.10.0
80
+ */
81
+ function isDependencySource(parser) {
82
+ return DependencySourceMarker in parser && parser[DependencySourceMarker] === true;
83
+ }
84
+ /**
85
+ * Checks if a value parser is a {@link DerivedValueParser}.
86
+ *
87
+ * @param parser The value parser to check.
88
+ * @returns `true` if the parser is a derived value parser, `false` otherwise.
89
+ * @since 0.10.0
90
+ */
91
+ function isDerivedValueParser(parser) {
92
+ return DerivedValueParserMarker in parser && parser[DerivedValueParserMarker] === true;
93
+ }
94
+ /**
95
+ * Creates a derived value parser from multiple dependency sources.
96
+ *
97
+ * This function allows creating a parser whose behavior depends on
98
+ * multiple other parsers' values. This is useful for scenarios where
99
+ * an option's valid values depend on a combination of other options.
100
+ *
101
+ * @template Deps A tuple of DependencySource types.
102
+ * @template T The type of value the derived parser produces.
103
+ * @param options Configuration for the derived parser.
104
+ * @returns A {@link DerivedValueParser} that depends on the given sources.
105
+ * @example
106
+ * ```typescript
107
+ * import { dependency, deriveFrom } from "@optique/core/dependency";
108
+ * import { string, choice } from "@optique/core/valueparser";
109
+ *
110
+ * const dirParser = dependency(string({ metavar: "DIR" }));
111
+ * const modeParser = dependency(choice(["dev", "prod"]));
112
+ *
113
+ * const configParser = deriveFrom({
114
+ * metavar: "CONFIG",
115
+ * dependencies: [dirParser, modeParser] as const,
116
+ * factory: (dir, mode) =>
117
+ * choice(mode === "dev"
118
+ * ? [`${dir}/dev.json`, `${dir}/dev.yaml`]
119
+ * : [`${dir}/prod.json`, `${dir}/prod.yaml`]),
120
+ * defaultValues: () => ["/config", "dev"],
121
+ * });
122
+ * ```
123
+ * @since 0.10.0
124
+ */
125
+ function deriveFrom(options) {
126
+ const depsAsync = options.dependencies.some((dep) => dep.$mode === "async");
127
+ const factoryReturnsAsync = determineFactoryModeForDeriveFrom(options);
128
+ const sourceId = options.dependencies.length > 0 ? options.dependencies[0][DependencyId] : Symbol();
129
+ const isAsync = depsAsync || factoryReturnsAsync;
130
+ if (isAsync) {
131
+ if (factoryReturnsAsync) return createAsyncDerivedFromParserFromAsyncFactory(sourceId, options);
132
+ return createAsyncDerivedFromParserFromSyncFactory(sourceId, options);
133
+ }
134
+ return createSyncDerivedFromParser(sourceId, options);
135
+ }
136
+ /**
137
+ * Creates a derived value parser from multiple dependency sources
138
+ * with a synchronous factory.
139
+ *
140
+ * This function allows creating a parser whose behavior depends on
141
+ * multiple other parsers' values. The factory explicitly returns
142
+ * a sync parser.
143
+ *
144
+ * @template Deps A tuple of DependencySource types.
145
+ * @template T The type of value the derived parser produces.
146
+ * @param options Configuration for the derived parser with sync factory.
147
+ * @returns A {@link DerivedValueParser} that depends on the given sources.
148
+ * @since 0.10.0
149
+ */
150
+ function deriveFromSync(options) {
151
+ const depsAsync = options.dependencies.some((dep) => dep.$mode === "async");
152
+ const sourceId = options.dependencies.length > 0 ? options.dependencies[0][DependencyId] : Symbol();
153
+ if (depsAsync) return createAsyncDerivedFromParserFromSyncFactory(sourceId, options);
154
+ return createSyncDerivedFromParser(sourceId, options);
155
+ }
156
+ /**
157
+ * Creates a derived value parser from multiple dependency sources
158
+ * with an asynchronous factory.
159
+ *
160
+ * This function allows creating a parser whose behavior depends on
161
+ * multiple other parsers' values. The factory explicitly returns
162
+ * an async parser.
163
+ *
164
+ * @template Deps A tuple of DependencySource types.
165
+ * @template T The type of value the derived parser produces.
166
+ * @param options Configuration for the derived parser with async factory.
167
+ * @returns A {@link DerivedValueParser} that depends on the given sources.
168
+ * @since 0.10.0
169
+ */
170
+ function deriveFromAsync(options) {
171
+ const sourceId = options.dependencies.length > 0 ? options.dependencies[0][DependencyId] : Symbol();
172
+ return createAsyncDerivedFromParserFromAsyncFactory(sourceId, options);
173
+ }
174
+ /**
175
+ * Determines if the factory returns an async parser for deriveFrom options.
176
+ */
177
+ function determineFactoryModeForDeriveFrom(options) {
178
+ const defaultValues = options.defaultValues();
179
+ const parser = options.factory(...defaultValues);
180
+ return parser.$mode === "async";
181
+ }
182
+ function createSyncDerivedFromParser(sourceId, options) {
183
+ return {
184
+ $mode: "sync",
185
+ metavar: options.metavar,
186
+ [DerivedValueParserMarker]: true,
187
+ [DependencyId]: sourceId,
188
+ parse(input) {
189
+ const sourceValues = options.defaultValues();
190
+ const derivedParser = options.factory(...sourceValues);
191
+ return derivedParser.parse(input);
192
+ },
193
+ [ParseWithDependency](input, dependencyValue) {
194
+ const derivedParser = options.factory(...dependencyValue);
195
+ return derivedParser.parse(input);
196
+ },
197
+ format(value) {
198
+ const sourceValues = options.defaultValues();
199
+ const derivedParser = options.factory(...sourceValues);
200
+ return derivedParser.format(value);
201
+ },
202
+ *suggest(prefix) {
203
+ const sourceValues = options.defaultValues();
204
+ const derivedParser = options.factory(...sourceValues);
205
+ if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
206
+ }
207
+ };
208
+ }
209
+ /**
210
+ * Creates an async derived parser from multiple dependencies when the
211
+ * factory returns an async parser.
212
+ */
213
+ function createAsyncDerivedFromParserFromAsyncFactory(sourceId, options) {
214
+ return {
215
+ $mode: "async",
216
+ metavar: options.metavar,
217
+ [DerivedValueParserMarker]: true,
218
+ [DependencyId]: sourceId,
219
+ parse(input) {
220
+ const sourceValues = options.defaultValues();
221
+ const derivedParser = options.factory(...sourceValues);
222
+ return derivedParser.parse(input);
223
+ },
224
+ [ParseWithDependency](input, dependencyValue) {
225
+ const derivedParser = options.factory(...dependencyValue);
226
+ return derivedParser.parse(input);
227
+ },
228
+ format(value) {
229
+ const sourceValues = options.defaultValues();
230
+ const derivedParser = options.factory(...sourceValues);
231
+ return derivedParser.format(value);
232
+ },
233
+ async *suggest(prefix) {
234
+ const sourceValues = options.defaultValues();
235
+ const derivedParser = options.factory(...sourceValues);
236
+ if (derivedParser.suggest) for await (const suggestion of derivedParser.suggest(prefix)) yield suggestion;
237
+ }
238
+ };
239
+ }
240
+ /**
241
+ * Creates an async derived parser from multiple dependencies when the
242
+ * sources are async but the factory returns a sync parser.
243
+ */
244
+ function createAsyncDerivedFromParserFromSyncFactory(sourceId, options) {
245
+ return {
246
+ $mode: "async",
247
+ metavar: options.metavar,
248
+ [DerivedValueParserMarker]: true,
249
+ [DependencyId]: sourceId,
250
+ parse(input) {
251
+ const sourceValues = options.defaultValues();
252
+ const derivedParser = options.factory(...sourceValues);
253
+ return Promise.resolve(derivedParser.parse(input));
254
+ },
255
+ [ParseWithDependency](input, dependencyValue) {
256
+ const derivedParser = options.factory(...dependencyValue);
257
+ return Promise.resolve(derivedParser.parse(input));
258
+ },
259
+ format(value) {
260
+ const sourceValues = options.defaultValues();
261
+ const derivedParser = options.factory(...sourceValues);
262
+ return derivedParser.format(value);
263
+ },
264
+ async *suggest(prefix) {
265
+ const sourceValues = options.defaultValues();
266
+ const derivedParser = options.factory(...sourceValues);
267
+ if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
268
+ }
269
+ };
270
+ }
271
+ function createDerivedValueParser(sourceId, sourceParser, options) {
272
+ const factoryReturnsAsync = determineFactoryMode(options);
273
+ const isAsync = sourceParser.$mode === "async" || factoryReturnsAsync;
274
+ if (isAsync) {
275
+ if (factoryReturnsAsync) return createAsyncDerivedParserFromAsyncFactory(sourceId, options);
276
+ return createAsyncDerivedParserFromSyncFactory(sourceId, options);
277
+ }
278
+ return createSyncDerivedParser(sourceId, options);
279
+ }
280
+ /**
281
+ * Determines if the factory returns an async parser by calling it with
282
+ * the default value and checking the mode.
283
+ */
284
+ function determineFactoryMode(options) {
285
+ const defaultValue = options.defaultValue();
286
+ const parser = options.factory(defaultValue);
287
+ return parser.$mode === "async";
288
+ }
289
+ function createSyncDerivedParser(sourceId, options) {
290
+ return {
291
+ $mode: "sync",
292
+ metavar: options.metavar,
293
+ [DerivedValueParserMarker]: true,
294
+ [DependencyId]: sourceId,
295
+ parse(input) {
296
+ const sourceValue = options.defaultValue();
297
+ const derivedParser = options.factory(sourceValue);
298
+ return derivedParser.parse(input);
299
+ },
300
+ [ParseWithDependency](input, dependencyValue) {
301
+ const derivedParser = options.factory(dependencyValue);
302
+ return derivedParser.parse(input);
303
+ },
304
+ format(value) {
305
+ const sourceValue = options.defaultValue();
306
+ const derivedParser = options.factory(sourceValue);
307
+ return derivedParser.format(value);
308
+ },
309
+ *suggest(prefix) {
310
+ const sourceValue = options.defaultValue();
311
+ const derivedParser = options.factory(sourceValue);
312
+ if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
313
+ }
314
+ };
315
+ }
316
+ /**
317
+ * Creates an async derived parser when the factory returns an async parser.
318
+ * The parse result is awaited since the factory returns an async parser.
319
+ */
320
+ function createAsyncDerivedParserFromAsyncFactory(sourceId, options) {
321
+ return {
322
+ $mode: "async",
323
+ metavar: options.metavar,
324
+ [DerivedValueParserMarker]: true,
325
+ [DependencyId]: sourceId,
326
+ parse(input) {
327
+ const sourceValue = options.defaultValue();
328
+ const derivedParser = options.factory(sourceValue);
329
+ return derivedParser.parse(input);
330
+ },
331
+ [ParseWithDependency](input, dependencyValue) {
332
+ const derivedParser = options.factory(dependencyValue);
333
+ return derivedParser.parse(input);
334
+ },
335
+ format(value) {
336
+ const sourceValue = options.defaultValue();
337
+ const derivedParser = options.factory(sourceValue);
338
+ return derivedParser.format(value);
339
+ },
340
+ async *suggest(prefix) {
341
+ const sourceValue = options.defaultValue();
342
+ const derivedParser = options.factory(sourceValue);
343
+ if (derivedParser.suggest) for await (const suggestion of derivedParser.suggest(prefix)) yield suggestion;
344
+ }
345
+ };
346
+ }
347
+ /**
348
+ * Creates an async derived parser when the source is async but the factory
349
+ * returns a sync parser. The sync result is wrapped in a Promise.
350
+ */
351
+ function createAsyncDerivedParserFromSyncFactory(sourceId, options) {
352
+ return {
353
+ $mode: "async",
354
+ metavar: options.metavar,
355
+ [DerivedValueParserMarker]: true,
356
+ [DependencyId]: sourceId,
357
+ parse(input) {
358
+ const sourceValue = options.defaultValue();
359
+ const derivedParser = options.factory(sourceValue);
360
+ return Promise.resolve(derivedParser.parse(input));
361
+ },
362
+ [ParseWithDependency](input, dependencyValue) {
363
+ const derivedParser = options.factory(dependencyValue);
364
+ return Promise.resolve(derivedParser.parse(input));
365
+ },
366
+ format(value) {
367
+ const sourceValue = options.defaultValue();
368
+ const derivedParser = options.factory(sourceValue);
369
+ return derivedParser.format(value);
370
+ },
371
+ async *suggest(prefix) {
372
+ const sourceValue = options.defaultValue();
373
+ const derivedParser = options.factory(sourceValue);
374
+ if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
375
+ }
376
+ };
377
+ }
378
+ /**
379
+ * A unique symbol used to identify deferred parse states.
380
+ * @since 0.10.0
381
+ */
382
+ const DeferredParseMarker = Symbol.for("@optique/core/dependency/DeferredParseMarker");
383
+ /**
384
+ * Checks if a value is a {@link DeferredParseState}.
385
+ *
386
+ * @param value The value to check.
387
+ * @returns `true` if the value is a deferred parse state, `false` otherwise.
388
+ * @since 0.10.0
389
+ */
390
+ function isDeferredParseState(value) {
391
+ return typeof value === "object" && value !== null && DeferredParseMarker in value && value[DeferredParseMarker] === true;
392
+ }
393
+ /**
394
+ * Creates a deferred parse state for a DerivedValueParser.
395
+ *
396
+ * @template T The type of value the parser will produce.
397
+ * @template S The type of the source dependency value.
398
+ * @param rawInput The raw input string to be parsed.
399
+ * @param parser The DerivedValueParser that will parse the input.
400
+ * @param preliminaryResult The parse result using default dependency value.
401
+ * @returns A DeferredParseState object.
402
+ * @since 0.10.0
403
+ */
404
+ function createDeferredParseState(rawInput, parser, preliminaryResult) {
405
+ return {
406
+ [DeferredParseMarker]: true,
407
+ rawInput,
408
+ parser,
409
+ dependencyId: parser[DependencyId],
410
+ preliminaryResult
411
+ };
412
+ }
413
+ /**
414
+ * A unique symbol used to identify dependency source parse states.
415
+ * @since 0.10.0
416
+ */
417
+ const DependencySourceStateMarker = Symbol.for("@optique/core/dependency/DependencySourceStateMarker");
418
+ /**
419
+ * Checks if a value is a {@link DependencySourceState}.
420
+ *
421
+ * @param value The value to check.
422
+ * @returns `true` if the value is a dependency source state, `false` otherwise.
423
+ * @since 0.10.0
424
+ */
425
+ function isDependencySourceState(value) {
426
+ return typeof value === "object" && value !== null && DependencySourceStateMarker in value && value[DependencySourceStateMarker] === true;
427
+ }
428
+ /**
429
+ * Creates a dependency source state from a parse result.
430
+ *
431
+ * @template T The type of value the state contains.
432
+ * @param result The parse result.
433
+ * @param dependencyId The dependency ID.
434
+ * @returns A DependencySourceState object.
435
+ * @since 0.10.0
436
+ */
437
+ function createDependencySourceState(result, dependencyId) {
438
+ return {
439
+ [DependencySourceStateMarker]: true,
440
+ [DependencyId]: dependencyId,
441
+ result
442
+ };
443
+ }
444
+ /**
445
+ * A registry for storing resolved dependency values during parsing.
446
+ * This is used to pass dependency values from DependencySource options
447
+ * to DerivedValueParser options.
448
+ * @since 0.10.0
449
+ */
450
+ var DependencyRegistry = class DependencyRegistry {
451
+ values = /* @__PURE__ */ new Map();
452
+ /**
453
+ * Registers a resolved dependency value.
454
+ * @param id The dependency ID.
455
+ * @param value The resolved value.
456
+ */
457
+ set(id, value) {
458
+ this.values.set(id, value);
459
+ }
460
+ /**
461
+ * Gets a resolved dependency value.
462
+ * @param id The dependency ID.
463
+ * @returns The resolved value, or undefined if not found.
464
+ */
465
+ get(id) {
466
+ return this.values.get(id);
467
+ }
468
+ /**
469
+ * Checks if a dependency has been resolved.
470
+ * @param id The dependency ID.
471
+ * @returns `true` if the dependency has been resolved.
472
+ */
473
+ has(id) {
474
+ return this.values.has(id);
475
+ }
476
+ /**
477
+ * Creates a copy of the registry.
478
+ */
479
+ clone() {
480
+ const copy = new DependencyRegistry();
481
+ for (const [id, value] of this.values) copy.values.set(id, value);
482
+ return copy;
483
+ }
484
+ };
485
+ /**
486
+ * Formats a {@link DependencyError} into a human-readable {@link Message}.
487
+ *
488
+ * @param error The dependency error to format.
489
+ * @returns A Message describing the error.
490
+ * @since 0.10.0
491
+ */
492
+ function formatDependencyError(error) {
493
+ switch (error.kind) {
494
+ case "duplicate": return [{
495
+ type: "text",
496
+ text: `Dependency used in multiple locations: ${error.locations.join(", ")}.`
497
+ }];
498
+ case "unresolved": return [{
499
+ type: "text",
500
+ text: `Unresolved dependency for ${error.derivedParserMetavar}: the dependency was not provided.`
501
+ }];
502
+ case "circular": return [{
503
+ type: "text",
504
+ text: `Circular dependency detected.`
505
+ }];
506
+ }
507
+ }
508
+
509
+ //#endregion
510
+ export { DeferredParseMarker, DependencyId, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser };
package/dist/facade.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  const require_message = require('./message.cjs');
2
+ const require_completion = require('./completion.cjs');
2
3
  const require_usage = require('./usage.cjs');
3
4
  const require_constructs = require('./constructs.cjs');
4
5
  const require_doc = require('./doc.cjs');
5
- const require_completion = require('./completion.cjs');
6
6
  const require_modifiers = require('./modifiers.cjs');
7
7
  const require_valueparser = require('./valueparser.cjs');
8
8
  const require_primitives = require('./primitives.cjs');
package/dist/facade.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { commandLine, formatMessage, message, optionName, text, value } from "./message.js";
2
+ import { bash, fish, nu, pwsh, zsh } from "./completion.js";
2
3
  import { formatUsage } from "./usage.js";
3
4
  import { longestMatch, object } from "./constructs.js";
4
5
  import { formatDocPage } from "./doc.js";
5
- import { bash, fish, nu, pwsh, zsh } from "./completion.js";
6
6
  import { multiple, optional, withDefault } from "./modifiers.js";
7
7
  import { string } from "./valueparser.js";
8
8
  import { argument, command, constant, flag, option } from "./primitives.js";
package/dist/index.cjs CHANGED
@@ -1,8 +1,9 @@
1
1
  const require_message = require('./message.cjs');
2
+ const require_completion = require('./completion.cjs');
3
+ const require_dependency = require('./dependency.cjs');
2
4
  const require_usage = require('./usage.cjs');
3
5
  const require_constructs = require('./constructs.cjs');
4
6
  const require_doc = require('./doc.cjs');
5
- const require_completion = require('./completion.cjs');
6
7
  const require_modifiers = require('./modifiers.cjs');
7
8
  const require_nonempty = require('./nonempty.cjs');
8
9
  const require_valueparser = require('./valueparser.cjs');
@@ -10,7 +11,14 @@ const require_primitives = require('./primitives.cjs');
10
11
  const require_parser = require('./parser.cjs');
11
12
  const require_facade = require('./facade.cjs');
12
13
 
14
+ exports.DeferredParseMarker = require_dependency.DeferredParseMarker;
15
+ exports.DependencyId = require_dependency.DependencyId;
16
+ exports.DependencyRegistry = require_dependency.DependencyRegistry;
17
+ exports.DependencySourceMarker = require_dependency.DependencySourceMarker;
18
+ exports.DependencySourceStateMarker = require_dependency.DependencySourceStateMarker;
19
+ exports.DerivedValueParserMarker = require_dependency.DerivedValueParserMarker;
13
20
  exports.DuplicateOptionError = require_constructs.DuplicateOptionError;
21
+ exports.ParseWithDependency = require_dependency.ParseWithDependency;
14
22
  exports.RunError = require_facade.RunError;
15
23
  exports.RunParserError = require_facade.RunParserError;
16
24
  exports.WithDefaultError = require_modifiers.WithDefaultError;
@@ -22,6 +30,12 @@ exports.commandLine = require_message.commandLine;
22
30
  exports.concat = require_constructs.concat;
23
31
  exports.conditional = require_constructs.conditional;
24
32
  exports.constant = require_primitives.constant;
33
+ exports.createDeferredParseState = require_dependency.createDeferredParseState;
34
+ exports.createDependencySourceState = require_dependency.createDependencySourceState;
35
+ exports.dependency = require_dependency.dependency;
36
+ exports.deriveFrom = require_dependency.deriveFrom;
37
+ exports.deriveFromAsync = require_dependency.deriveFromAsync;
38
+ exports.deriveFromSync = require_dependency.deriveFromSync;
25
39
  exports.ensureNonEmptyString = require_nonempty.ensureNonEmptyString;
26
40
  exports.envVar = require_message.envVar;
27
41
  exports.extractArgumentMetavars = require_usage.extractArgumentMetavars;
@@ -30,6 +44,7 @@ exports.extractOptionNames = require_usage.extractOptionNames;
30
44
  exports.fish = require_completion.fish;
31
45
  exports.flag = require_primitives.flag;
32
46
  exports.float = require_valueparser.float;
47
+ exports.formatDependencyError = require_dependency.formatDependencyError;
33
48
  exports.formatDocPage = require_doc.formatDocPage;
34
49
  exports.formatMessage = require_message.formatMessage;
35
50
  exports.formatUsage = require_usage.formatUsage;
@@ -39,6 +54,10 @@ exports.getDocPageAsync = require_parser.getDocPageAsync;
39
54
  exports.getDocPageSync = require_parser.getDocPageSync;
40
55
  exports.group = require_constructs.group;
41
56
  exports.integer = require_valueparser.integer;
57
+ exports.isDeferredParseState = require_dependency.isDeferredParseState;
58
+ exports.isDependencySource = require_dependency.isDependencySource;
59
+ exports.isDependencySourceState = require_dependency.isDependencySourceState;
60
+ exports.isDerivedValueParser = require_dependency.isDerivedValueParser;
42
61
  exports.isNonEmptyString = require_nonempty.isNonEmptyString;
43
62
  exports.isValueParser = require_valueparser.isValueParser;
44
63
  exports.locale = require_valueparser.locale;
package/dist/index.d.cts CHANGED
@@ -3,10 +3,11 @@ import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLin
3
3
  import { OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, extractArgumentMetavars, extractCommandNames, extractOptionNames, formatUsage, formatUsageTerm, normalizeUsage } from "./usage.cjs";
4
4
  import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, ShowDefaultOptions, formatDocPage } from "./doc.cjs";
5
5
  import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, FloatOptions, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, choice, float, integer, isValueParser, locale, string, url, uuid } from "./valueparser.cjs";
6
+ import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.cjs";
6
7
  import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, optional, withDefault } from "./modifiers.cjs";
7
- import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.cjs";
8
+ import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser } from "./dependency.cjs";
9
+ import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.cjs";
8
10
  import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, ModeValue, Parser, ParserContext, ParserResult, Result, Suggestion, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.cjs";
9
- import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.cjs";
10
11
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
11
12
  import { RunError, RunOptions, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.cjs";
12
- export { ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineModes, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OrErrorOptions, OrOptions, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, choice, command, commandLine, concat, conditional, constant, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
13
+ export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.d.ts CHANGED
@@ -3,10 +3,11 @@ import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLin
3
3
  import { OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, extractArgumentMetavars, extractCommandNames, extractOptionNames, formatUsage, formatUsageTerm, normalizeUsage } from "./usage.js";
4
4
  import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, ShowDefaultOptions, formatDocPage } from "./doc.js";
5
5
  import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, FloatOptions, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, choice, float, integer, isValueParser, locale, string, url, uuid } from "./valueparser.js";
6
+ import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
6
7
  import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, optional, withDefault } from "./modifiers.js";
7
- import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.js";
8
+ import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, ResolvedDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser } from "./dependency.js";
9
+ import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.js";
8
10
  import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, ModeValue, Parser, ParserContext, ParserResult, Result, Suggestion, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
9
- import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
10
11
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
11
12
  import { RunError, RunOptions, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.js";
12
- export { ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineModes, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OrErrorOptions, OrOptions, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, choice, command, commandLine, concat, conditional, constant, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
13
+ export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { commandLine, envVar, formatMessage, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
2
+ import { bash, fish, nu, pwsh, zsh } from "./completion.js";
3
+ import { DeferredParseMarker, DependencyId, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser } from "./dependency.js";
2
4
  import { extractArgumentMetavars, extractCommandNames, extractOptionNames, formatUsage, formatUsageTerm, normalizeUsage } from "./usage.js";
3
5
  import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
4
6
  import { formatDocPage } from "./doc.js";
5
- import { bash, fish, nu, pwsh, zsh } from "./completion.js";
6
7
  import { WithDefaultError, map, multiple, optional, withDefault } from "./modifiers.js";
7
8
  import { ensureNonEmptyString, isNonEmptyString } from "./nonempty.js";
8
9
  import { choice, float, integer, isValueParser, locale, string, url, uuid } from "./valueparser.js";
@@ -10,4 +11,4 @@ import { argument, command, constant, flag, option, passThrough } from "./primit
10
11
  import { getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
11
12
  import { RunError, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.js";
12
13
 
13
- export { DuplicateOptionError, RunError, RunParserError, WithDefaultError, argument, bash, choice, command, commandLine, concat, conditional, constant, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
14
+ export { DeferredParseMarker, DependencyId, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, DuplicateOptionError, ParseWithDependency, RunError, RunParserError, WithDefaultError, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isValueParser, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };