@optique/core 0.10.0-dev.295 → 0.10.0-dev.297

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.
@@ -1,3 +1,5 @@
1
+ import { message } from "./message.js";
2
+
1
3
  //#region src/dependency.ts
2
4
  /**
3
5
  * A unique symbol used to identify dependency sources at compile time.
@@ -25,11 +27,23 @@ const DependencyId = Symbol.for("@optique/core/dependency/DependencyId");
25
27
  */
26
28
  const DependencyIds = Symbol.for("@optique/core/dependency/DependencyIds");
27
29
  /**
30
+ * A unique symbol used to store the default values function on derived parsers.
31
+ * This is used during partial dependency resolution to fill in missing values.
32
+ * @since 0.10.0
33
+ */
34
+ const DefaultValues = Symbol.for("@optique/core/dependency/DefaultValues");
35
+ /**
28
36
  * A unique symbol used to access the parseWithDependency method on derived parsers.
29
37
  * @since 0.10.0
30
38
  */
31
39
  const ParseWithDependency = Symbol.for("@optique/core/dependency/ParseWithDependency");
32
40
  /**
41
+ * A unique symbol used to access the suggestWithDependency method on derived parsers.
42
+ * This method generates suggestions using the provided dependency values instead of defaults.
43
+ * @since 0.10.0
44
+ */
45
+ const SuggestWithDependency = Symbol.for("@optique/core/dependency/SuggestWithDependency");
46
+ /**
33
47
  * Creates a dependency source from a {@link ValueParser}.
34
48
  *
35
49
  * A dependency source wraps an existing value parser and enables creating
@@ -193,13 +207,23 @@ function createSyncDerivedFromParser(sourceId, options) {
193
207
  [DerivedValueParserMarker]: true,
194
208
  [DependencyId]: sourceId,
195
209
  [DependencyIds]: allDependencyIds,
210
+ [DefaultValues]: options.defaultValues,
196
211
  parse(input) {
197
212
  const sourceValues = options.defaultValues();
198
213
  const derivedParser = options.factory(...sourceValues);
199
214
  return derivedParser.parse(input);
200
215
  },
201
216
  [ParseWithDependency](input, dependencyValue) {
202
- const derivedParser = options.factory(...dependencyValue);
217
+ let derivedParser;
218
+ try {
219
+ derivedParser = options.factory(...dependencyValue);
220
+ } catch (e) {
221
+ const msg = e instanceof Error ? e.message : String(e);
222
+ return {
223
+ success: false,
224
+ error: message`Factory error: ${msg}`
225
+ };
226
+ }
203
227
  return derivedParser.parse(input);
204
228
  },
205
229
  format(value) {
@@ -211,6 +235,16 @@ function createSyncDerivedFromParser(sourceId, options) {
211
235
  const sourceValues = options.defaultValues();
212
236
  const derivedParser = options.factory(...sourceValues);
213
237
  if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
238
+ },
239
+ *[SuggestWithDependency](prefix, dependencyValue) {
240
+ let derivedParser;
241
+ try {
242
+ derivedParser = options.factory(...dependencyValue);
243
+ } catch {
244
+ const sourceValues = options.defaultValues();
245
+ derivedParser = options.factory(...sourceValues);
246
+ }
247
+ if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
214
248
  }
215
249
  };
216
250
  }
@@ -226,13 +260,23 @@ function createAsyncDerivedFromParserFromAsyncFactory(sourceId, options) {
226
260
  [DerivedValueParserMarker]: true,
227
261
  [DependencyId]: sourceId,
228
262
  [DependencyIds]: allDependencyIds,
263
+ [DefaultValues]: options.defaultValues,
229
264
  parse(input) {
230
265
  const sourceValues = options.defaultValues();
231
266
  const derivedParser = options.factory(...sourceValues);
232
267
  return derivedParser.parse(input);
233
268
  },
234
269
  [ParseWithDependency](input, dependencyValue) {
235
- const derivedParser = options.factory(...dependencyValue);
270
+ let derivedParser;
271
+ try {
272
+ derivedParser = options.factory(...dependencyValue);
273
+ } catch (e) {
274
+ const msg = e instanceof Error ? e.message : String(e);
275
+ return Promise.resolve({
276
+ success: false,
277
+ error: message`Factory error: ${msg}`
278
+ });
279
+ }
236
280
  return derivedParser.parse(input);
237
281
  },
238
282
  format(value) {
@@ -244,6 +288,16 @@ function createAsyncDerivedFromParserFromAsyncFactory(sourceId, options) {
244
288
  const sourceValues = options.defaultValues();
245
289
  const derivedParser = options.factory(...sourceValues);
246
290
  if (derivedParser.suggest) for await (const suggestion of derivedParser.suggest(prefix)) yield suggestion;
291
+ },
292
+ async *[SuggestWithDependency](prefix, dependencyValue) {
293
+ let derivedParser;
294
+ try {
295
+ derivedParser = options.factory(...dependencyValue);
296
+ } catch {
297
+ const sourceValues = options.defaultValues();
298
+ derivedParser = options.factory(...sourceValues);
299
+ }
300
+ if (derivedParser.suggest) for await (const suggestion of derivedParser.suggest(prefix)) yield suggestion;
247
301
  }
248
302
  };
249
303
  }
@@ -259,13 +313,23 @@ function createAsyncDerivedFromParserFromSyncFactory(sourceId, options) {
259
313
  [DerivedValueParserMarker]: true,
260
314
  [DependencyId]: sourceId,
261
315
  [DependencyIds]: allDependencyIds,
316
+ [DefaultValues]: options.defaultValues,
262
317
  parse(input) {
263
318
  const sourceValues = options.defaultValues();
264
319
  const derivedParser = options.factory(...sourceValues);
265
320
  return Promise.resolve(derivedParser.parse(input));
266
321
  },
267
322
  [ParseWithDependency](input, dependencyValue) {
268
- const derivedParser = options.factory(...dependencyValue);
323
+ let derivedParser;
324
+ try {
325
+ derivedParser = options.factory(...dependencyValue);
326
+ } catch (e) {
327
+ const msg = e instanceof Error ? e.message : String(e);
328
+ return Promise.resolve({
329
+ success: false,
330
+ error: message`Factory error: ${msg}`
331
+ });
332
+ }
269
333
  return Promise.resolve(derivedParser.parse(input));
270
334
  },
271
335
  format(value) {
@@ -277,6 +341,16 @@ function createAsyncDerivedFromParserFromSyncFactory(sourceId, options) {
277
341
  const sourceValues = options.defaultValues();
278
342
  const derivedParser = options.factory(...sourceValues);
279
343
  if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
344
+ },
345
+ *[SuggestWithDependency](prefix, dependencyValue) {
346
+ let derivedParser;
347
+ try {
348
+ derivedParser = options.factory(...dependencyValue);
349
+ } catch {
350
+ const sourceValues = options.defaultValues();
351
+ derivedParser = options.factory(...sourceValues);
352
+ }
353
+ if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
280
354
  }
281
355
  };
282
356
  }
@@ -310,7 +384,16 @@ function createSyncDerivedParser(sourceId, options) {
310
384
  return derivedParser.parse(input);
311
385
  },
312
386
  [ParseWithDependency](input, dependencyValue) {
313
- const derivedParser = options.factory(dependencyValue);
387
+ let derivedParser;
388
+ try {
389
+ derivedParser = options.factory(dependencyValue);
390
+ } catch (e) {
391
+ const msg = e instanceof Error ? e.message : String(e);
392
+ return {
393
+ success: false,
394
+ error: message`Factory error: ${msg}`
395
+ };
396
+ }
314
397
  return derivedParser.parse(input);
315
398
  },
316
399
  format(value) {
@@ -322,6 +405,15 @@ function createSyncDerivedParser(sourceId, options) {
322
405
  const sourceValue = options.defaultValue();
323
406
  const derivedParser = options.factory(sourceValue);
324
407
  if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
408
+ },
409
+ *[SuggestWithDependency](prefix, dependencyValue) {
410
+ let derivedParser;
411
+ try {
412
+ derivedParser = options.factory(dependencyValue);
413
+ } catch {
414
+ derivedParser = options.factory(options.defaultValue());
415
+ }
416
+ if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
325
417
  }
326
418
  };
327
419
  }
@@ -341,7 +433,16 @@ function createAsyncDerivedParserFromAsyncFactory(sourceId, options) {
341
433
  return derivedParser.parse(input);
342
434
  },
343
435
  [ParseWithDependency](input, dependencyValue) {
344
- const derivedParser = options.factory(dependencyValue);
436
+ let derivedParser;
437
+ try {
438
+ derivedParser = options.factory(dependencyValue);
439
+ } catch (e) {
440
+ const msg = e instanceof Error ? e.message : String(e);
441
+ return Promise.resolve({
442
+ success: false,
443
+ error: message`Factory error: ${msg}`
444
+ });
445
+ }
345
446
  return derivedParser.parse(input);
346
447
  },
347
448
  format(value) {
@@ -353,6 +454,15 @@ function createAsyncDerivedParserFromAsyncFactory(sourceId, options) {
353
454
  const sourceValue = options.defaultValue();
354
455
  const derivedParser = options.factory(sourceValue);
355
456
  if (derivedParser.suggest) for await (const suggestion of derivedParser.suggest(prefix)) yield suggestion;
457
+ },
458
+ async *[SuggestWithDependency](prefix, dependencyValue) {
459
+ let derivedParser;
460
+ try {
461
+ derivedParser = options.factory(dependencyValue);
462
+ } catch {
463
+ derivedParser = options.factory(options.defaultValue());
464
+ }
465
+ if (derivedParser.suggest) for await (const suggestion of derivedParser.suggest(prefix)) yield suggestion;
356
466
  }
357
467
  };
358
468
  }
@@ -372,7 +482,16 @@ function createAsyncDerivedParserFromSyncFactory(sourceId, options) {
372
482
  return Promise.resolve(derivedParser.parse(input));
373
483
  },
374
484
  [ParseWithDependency](input, dependencyValue) {
375
- const derivedParser = options.factory(dependencyValue);
485
+ let derivedParser;
486
+ try {
487
+ derivedParser = options.factory(dependencyValue);
488
+ } catch (e) {
489
+ const msg = e instanceof Error ? e.message : String(e);
490
+ return Promise.resolve({
491
+ success: false,
492
+ error: message`Factory error: ${msg}`
493
+ });
494
+ }
376
495
  return Promise.resolve(derivedParser.parse(input));
377
496
  },
378
497
  format(value) {
@@ -384,6 +503,15 @@ function createAsyncDerivedParserFromSyncFactory(sourceId, options) {
384
503
  const sourceValue = options.defaultValue();
385
504
  const derivedParser = options.factory(sourceValue);
386
505
  if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
506
+ },
507
+ *[SuggestWithDependency](prefix, dependencyValue) {
508
+ let derivedParser;
509
+ try {
510
+ derivedParser = options.factory(dependencyValue);
511
+ } catch {
512
+ derivedParser = options.factory(options.defaultValue());
513
+ }
514
+ if (derivedParser.suggest) yield* derivedParser.suggest(prefix);
387
515
  }
388
516
  };
389
517
  }
@@ -415,12 +543,15 @@ function isDeferredParseState(value) {
415
543
  */
416
544
  function createDeferredParseState(rawInput, parser, preliminaryResult) {
417
545
  const multipleIds = DependencyIds in parser ? parser[DependencyIds] : void 0;
546
+ const defaultValuesFn = DefaultValues in parser ? parser[DefaultValues] : void 0;
547
+ const defaultVals = defaultValuesFn ? defaultValuesFn() : void 0;
418
548
  return {
419
549
  [DeferredParseMarker]: true,
420
550
  rawInput,
421
551
  parser,
422
552
  dependencyId: parser[DependencyId],
423
553
  dependencyIds: multipleIds,
554
+ defaultValues: defaultVals,
424
555
  preliminaryResult
425
556
  };
426
557
  }
@@ -491,6 +622,28 @@ function createPendingDependencySourceState(dependencyId) {
491
622
  */
492
623
  const WrappedDependencySourceMarker = Symbol.for("@optique/core/dependency/WrappedDependencySourceMarker");
493
624
  /**
625
+ * A unique symbol used to indicate that a wrapper transforms the dependency
626
+ * source value. This is used by withDefault to determine whether its default
627
+ * value should be registered as the dependency value.
628
+ *
629
+ * When a wrapper has this marker set to `true`, it means the wrapper transforms
630
+ * the dependency source value (e.g., via map()), so the wrapper's output is NOT
631
+ * a valid dependency source value.
632
+ *
633
+ * @since 0.10.0
634
+ */
635
+ const TransformsDependencyValueMarker = Symbol.for("@optique/core/dependency/TransformsDependencyValueMarker");
636
+ /**
637
+ * Checks if a parser transforms the dependency value (has TransformsDependencyValueMarker).
638
+ *
639
+ * @param parser The parser to check.
640
+ * @returns `true` if the parser transforms the dependency value.
641
+ * @since 0.10.0
642
+ */
643
+ function transformsDependencyValue(parser) {
644
+ return typeof parser === "object" && parser !== null && TransformsDependencyValueMarker in parser && parser[TransformsDependencyValueMarker] === true;
645
+ }
646
+ /**
494
647
  * Checks if a parser wraps a dependency source (has WrappedDependencySourceMarker).
495
648
  *
496
649
  * @param parser The parser to check.
@@ -566,4 +719,4 @@ function formatDependencyError(error) {
566
719
  }
567
720
 
568
721
  //#endregion
569
- export { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceStateMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource };
722
+ export { DefaultValues, DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceStateMarker, SuggestWithDependency, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue };
package/dist/index.cjs CHANGED
@@ -11,6 +11,7 @@ const require_primitives = require('./primitives.cjs');
11
11
  const require_parser = require('./parser.cjs');
12
12
  const require_facade = require('./facade.cjs');
13
13
 
14
+ exports.DefaultValues = require_dependency.DefaultValues;
14
15
  exports.DeferredParseMarker = require_dependency.DeferredParseMarker;
15
16
  exports.DependencyId = require_dependency.DependencyId;
16
17
  exports.DependencyIds = require_dependency.DependencyIds;
@@ -23,6 +24,8 @@ exports.ParseWithDependency = require_dependency.ParseWithDependency;
23
24
  exports.PendingDependencySourceStateMarker = require_dependency.PendingDependencySourceStateMarker;
24
25
  exports.RunError = require_facade.RunError;
25
26
  exports.RunParserError = require_facade.RunParserError;
27
+ exports.SuggestWithDependency = require_dependency.SuggestWithDependency;
28
+ exports.TransformsDependencyValueMarker = require_dependency.TransformsDependencyValueMarker;
26
29
  exports.WithDefaultError = require_modifiers.WithDefaultError;
27
30
  exports.WrappedDependencySourceMarker = require_dependency.WrappedDependencySourceMarker;
28
31
  exports.argument = require_primitives.argument;
@@ -95,6 +98,7 @@ exports.suggest = require_parser.suggest;
95
98
  exports.suggestAsync = require_parser.suggestAsync;
96
99
  exports.suggestSync = require_parser.suggestSync;
97
100
  exports.text = require_message.text;
101
+ exports.transformsDependencyValue = require_dependency.transformsDependencyValue;
98
102
  exports.tuple = require_constructs.tuple;
99
103
  exports.url = require_valueparser.url;
100
104
  exports.uuid = require_valueparser.uuid;
package/dist/index.d.cts CHANGED
@@ -5,9 +5,9 @@ import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, Doc
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
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";
7
7
  import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, optional, withDefault } from "./modifiers.cjs";
8
- import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource } from "./dependency.cjs";
8
+ import { AnyDependencySource, CombineMode, CombinedDependencyMode, DefaultValues, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, SuggestWithDependency, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue } from "./dependency.cjs";
9
9
  import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.cjs";
10
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";
11
11
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
12
12
  import { RunError, RunOptions, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.cjs";
13
- export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, 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, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, 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, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, 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, DefaultValues, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, 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, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, SuggestWithDependency, Suggestion, TransformsDependencyValueMarker, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, 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, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, 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, transformsDependencyValue, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.d.ts CHANGED
@@ -5,9 +5,9 @@ import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, Doc
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
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";
7
7
  import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, optional, withDefault } from "./modifiers.js";
8
- import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource } from "./dependency.js";
8
+ import { AnyDependencySource, CombineMode, CombinedDependencyMode, DefaultValues, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, SuggestWithDependency, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue } from "./dependency.js";
9
9
  import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.js";
10
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";
11
11
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
12
12
  import { RunError, RunOptions, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.js";
13
- export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, 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, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, 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, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, 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, DefaultValues, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, 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, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, SuggestWithDependency, Suggestion, TransformsDependencyValueMarker, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, 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, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, 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, transformsDependencyValue, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { commandLine, envVar, formatMessage, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
2
2
  import { bash, fish, nu, pwsh, zsh } from "./completion.js";
3
- import { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceStateMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource } from "./dependency.js";
3
+ import { DefaultValues, DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceStateMarker, SuggestWithDependency, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue } from "./dependency.js";
4
4
  import { extractArgumentMetavars, extractCommandNames, extractOptionNames, formatUsage, formatUsageTerm, normalizeUsage } from "./usage.js";
5
5
  import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
6
6
  import { formatDocPage } from "./doc.js";
@@ -11,4 +11,4 @@ import { argument, command, constant, flag, option, passThrough } from "./primit
11
11
  import { getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
12
12
  import { RunError, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.js";
13
13
 
14
- export { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, DuplicateOptionError, ParseWithDependency, PendingDependencySourceStateMarker, RunError, RunParserError, WithDefaultError, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, 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, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, 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 { DefaultValues, DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, DuplicateOptionError, ParseWithDependency, PendingDependencySourceStateMarker, RunError, RunParserError, SuggestWithDependency, TransformsDependencyValueMarker, WithDefaultError, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, 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, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, 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, transformsDependencyValue, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
@@ -90,6 +90,11 @@ function optional(parser) {
90
90
  }, prefix);
91
91
  for await (const s of suggestions) yield s;
92
92
  }
93
+ const innerHasWrappedDependency = require_dependency.isWrappedDependencySource(parser);
94
+ const innerHasDirectDependency = require_dependency.isPendingDependencySourceState(syncParser.initialState);
95
+ const wrappedDependencyMarker = innerHasWrappedDependency ? { [require_dependency.WrappedDependencySourceMarker]: parser[require_dependency.WrappedDependencySourceMarker] } : innerHasDirectDependency ? { [require_dependency.WrappedDependencySourceMarker]: syncParser.initialState } : {};
96
+ const hasWrappedDependencySource = require_dependency.WrappedDependencySourceMarker in wrappedDependencyMarker;
97
+ const wrappedPendingState = hasWrappedDependencySource ? wrappedDependencyMarker[require_dependency.WrappedDependencySourceMarker] : void 0;
93
98
  return {
94
99
  $mode: parser.$mode,
95
100
  $valueType: [],
@@ -100,15 +105,32 @@ function optional(parser) {
100
105
  terms: parser.usage
101
106
  }],
102
107
  initialState: void 0,
108
+ ...wrappedDependencyMarker,
103
109
  parse(context) {
104
110
  if (isAsync) return parseOptionalStyleAsync(context, parser);
105
111
  return parseOptionalStyleSync(context, syncParser);
106
112
  },
107
113
  complete(state) {
108
- if (typeof state === "undefined") return {
109
- success: true,
110
- value: void 0
111
- };
114
+ if (typeof state === "undefined") {
115
+ if (innerHasWrappedDependency && wrappedPendingState) {
116
+ if (!isAsync) return syncParser.complete([wrappedPendingState]);
117
+ return parser.complete([wrappedPendingState]);
118
+ }
119
+ return {
120
+ success: true,
121
+ value: void 0
122
+ };
123
+ }
124
+ if (Array.isArray(state) && state.length === 1 && require_dependency.isPendingDependencySourceState(state[0])) {
125
+ if (innerHasWrappedDependency) {
126
+ if (!isAsync) return syncParser.complete(state);
127
+ return parser.complete(state);
128
+ }
129
+ return {
130
+ success: true,
131
+ value: void 0
132
+ };
133
+ }
112
134
  if (!isAsync) return syncParser.complete(state[0]);
113
135
  return parser.complete(state[0]);
114
136
  },
@@ -178,7 +200,7 @@ function withDefault(parser, defaultValue, options) {
178
200
  for await (const s of suggestions) yield s;
179
201
  }
180
202
  const innerInitialState = syncParser.initialState;
181
- const wrappedDependencyMarker = require_dependency.isPendingDependencySourceState(innerInitialState) ? { [require_dependency.WrappedDependencySourceMarker]: innerInitialState } : {};
203
+ const wrappedDependencyMarker = require_dependency.isPendingDependencySourceState(innerInitialState) ? { [require_dependency.WrappedDependencySourceMarker]: innerInitialState } : require_dependency.isWrappedDependencySource(parser) ? { [require_dependency.WrappedDependencySourceMarker]: parser[require_dependency.WrappedDependencySourceMarker] } : {};
182
204
  return {
183
205
  $mode: parser.$mode,
184
206
  $valueType: [],
@@ -195,29 +217,108 @@ function withDefault(parser, defaultValue, options) {
195
217
  return parseOptionalStyleSync(context, syncParser);
196
218
  },
197
219
  complete(state) {
198
- if (typeof state === "undefined") try {
199
- const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
200
- return {
201
- success: true,
202
- value
203
- };
204
- } catch (error) {
205
- return {
206
- success: false,
207
- error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
208
- };
220
+ if (typeof state === "undefined") {
221
+ if (require_dependency.transformsDependencyValue(parser)) {
222
+ const innerResult = !isAsync ? syncParser.complete(void 0) : parser.complete(void 0);
223
+ const handleInnerResult = (res) => {
224
+ if (require_dependency.isDependencySourceState(res)) try {
225
+ const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
226
+ return require_dependency.createDependencySourceState({
227
+ success: true,
228
+ value
229
+ }, res[require_dependency.DependencyId]);
230
+ } catch (error) {
231
+ return {
232
+ success: false,
233
+ error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
234
+ };
235
+ }
236
+ try {
237
+ const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
238
+ return {
239
+ success: true,
240
+ value
241
+ };
242
+ } catch (error) {
243
+ return {
244
+ success: false,
245
+ error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
246
+ };
247
+ }
248
+ };
249
+ if (innerResult instanceof Promise) return innerResult.then(handleInnerResult);
250
+ return handleInnerResult(innerResult);
251
+ }
252
+ if (require_dependency.isWrappedDependencySource(parser)) try {
253
+ const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
254
+ const pendingState = parser[require_dependency.WrappedDependencySourceMarker];
255
+ return require_dependency.createDependencySourceState({
256
+ success: true,
257
+ value
258
+ }, pendingState[require_dependency.DependencyId]);
259
+ } catch (error) {
260
+ return {
261
+ success: false,
262
+ error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
263
+ };
264
+ }
265
+ try {
266
+ const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
267
+ return {
268
+ success: true,
269
+ value
270
+ };
271
+ } catch (error) {
272
+ return {
273
+ success: false,
274
+ error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
275
+ };
276
+ }
209
277
  }
210
- if (require_dependency.isPendingDependencySourceState(state[0])) try {
211
- const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
212
- return require_dependency.createDependencySourceState({
213
- success: true,
214
- value
215
- }, state[0][require_dependency.DependencyId]);
216
- } catch (error) {
217
- return {
218
- success: false,
219
- error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
220
- };
278
+ if (require_dependency.isPendingDependencySourceState(state[0])) {
279
+ if (require_dependency.transformsDependencyValue(parser)) {
280
+ const innerResult = !isAsync ? syncParser.complete(state) : parser.complete(state);
281
+ const handleInnerResult = (res) => {
282
+ if (require_dependency.isDependencySourceState(res)) try {
283
+ const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
284
+ return require_dependency.createDependencySourceState({
285
+ success: true,
286
+ value
287
+ }, res[require_dependency.DependencyId]);
288
+ } catch (error) {
289
+ return {
290
+ success: false,
291
+ error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
292
+ };
293
+ }
294
+ try {
295
+ const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
296
+ return {
297
+ success: true,
298
+ value
299
+ };
300
+ } catch (error) {
301
+ return {
302
+ success: false,
303
+ error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
304
+ };
305
+ }
306
+ };
307
+ if (innerResult instanceof Promise) return innerResult.then(handleInnerResult);
308
+ return handleInnerResult(innerResult);
309
+ }
310
+ try {
311
+ const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
312
+ return require_dependency.createDependencySourceState({
313
+ success: true,
314
+ value
315
+ }, state[0][require_dependency.DependencyId]);
316
+ } catch (error) {
317
+ return {
318
+ success: false,
319
+ error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
320
+ };
321
+ }
221
322
  }
222
323
  if (!isAsync) return syncParser.complete(state[0]);
223
324
  return parser.complete(state[0]);
@@ -300,10 +401,15 @@ function map(parser, transform) {
300
401
  };
301
402
  return res;
302
403
  };
404
+ const dependencyMarkers = require_dependency.isWrappedDependencySource(parser) ? {
405
+ [require_dependency.WrappedDependencySourceMarker]: parser[require_dependency.WrappedDependencySourceMarker],
406
+ [require_dependency.TransformsDependencyValueMarker]: true
407
+ } : {};
303
408
  return {
304
409
  ...parser,
305
410
  $valueType: [],
306
411
  complete,
412
+ ...dependencyMarkers,
307
413
  getDocFragments(state, _defaultValue) {
308
414
  return parser.getDocFragments(state, void 0);
309
415
  }