@optique/core 1.3.0-dev.2379 → 1.3.0-dev.2380

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/facade.cjs CHANGED
@@ -116,7 +116,17 @@ function createParseExec(parser) {
116
116
  function getCommandPath(exec) {
117
117
  return exec?.commandPath ?? [];
118
118
  }
119
- function createCompleteExec(exec, context) {
119
+ const effectfulSessionOptionsKey = Symbol("@optique/core/facade/effectfulSessionOptionsKey");
120
+ function getEffectfulSessionOption(options) {
121
+ return options[effectfulSessionOptionsKey];
122
+ }
123
+ function withEffectfulSessionOption(options, session) {
124
+ return {
125
+ ...options,
126
+ [effectfulSessionOptionsKey]: session
127
+ };
128
+ }
129
+ function createCompleteExec(exec, context, session) {
120
130
  const runtime = require_dependency_runtime.createDependencyRuntimeContext();
121
131
  return {
122
132
  ...exec,
@@ -124,10 +134,11 @@ function createCompleteExec(exec, context) {
124
134
  dependencyRuntime: runtime,
125
135
  dependencyRegistry: runtime.registry,
126
136
  commandPath: getCommandPath(context.exec) ?? exec.commandPath,
127
- trace: context.exec?.trace ?? context.trace ?? exec.trace
137
+ trace: context.exec?.trace ?? context.trace ?? exec.trace,
138
+ effectfulCompletionSession: session ?? require_internal_parser.createEffectfulCompletionSession()
128
139
  };
129
140
  }
130
- function attemptParseSync(parser, args, mode = "complete") {
141
+ function attemptParseSync(parser, args, mode = "complete", session) {
131
142
  const shouldUnwrapAnnotatedValue = require_internal_annotations.isInjectedAnnotationWrapper(parser.initialState);
132
143
  const exec = createParseExec(parser);
133
144
  let context = require_internal_parser.createParserContext({
@@ -166,7 +177,7 @@ function attemptParseSync(parser, args, mode = "complete") {
166
177
  kind: "success",
167
178
  value: void 0
168
179
  };
169
- const endResult = parser.complete(context.state, createCompleteExec(exec, context));
180
+ const endResult = parser.complete(context.state, createCompleteExec(exec, context, session));
170
181
  if (!endResult.success) return {
171
182
  kind: "failure",
172
183
  error: endResult.error,
@@ -180,7 +191,7 @@ function attemptParseSync(parser, args, mode = "complete") {
180
191
  value: shouldUnwrapAnnotatedValue ? require_internal_annotations.unwrapInjectedAnnotationWrapper(endResult.value) : endResult.value
181
192
  };
182
193
  }
183
- async function attemptParseAsync(parser, args, mode = "complete") {
194
+ async function attemptParseAsync(parser, args, mode = "complete", session) {
184
195
  const shouldUnwrapAnnotatedValue = require_internal_annotations.isInjectedAnnotationWrapper(parser.initialState);
185
196
  const exec = createParseExec(parser);
186
197
  let context = require_internal_parser.createParserContext({
@@ -219,7 +230,7 @@ async function attemptParseAsync(parser, args, mode = "complete") {
219
230
  kind: "success",
220
231
  value: void 0
221
232
  };
222
- const endResult = await parser.complete(context.state, createCompleteExec(exec, context));
233
+ const endResult = await parser.complete(context.state, createCompleteExec(exec, context, session));
223
234
  if (!endResult.success) return {
224
235
  kind: "failure",
225
236
  error: endResult.error,
@@ -233,7 +244,7 @@ async function attemptParseAsync(parser, args, mode = "complete") {
233
244
  value: shouldUnwrapAnnotatedValue ? require_internal_annotations.unwrapInjectedAnnotationWrapper(endResult.value) : endResult.value
234
245
  };
235
246
  }
236
- function createPhase2SeedExec(parser, context) {
247
+ function createPhase2SeedExec(parser, context, session) {
237
248
  const exec = {
238
249
  usage: parser.usage,
239
250
  phase: "parse",
@@ -248,7 +259,8 @@ function createPhase2SeedExec(parser, context) {
248
259
  dependencyRuntime: runtime,
249
260
  dependencyRegistry: runtime.registry,
250
261
  commandPath: getCommandPath(context.exec),
251
- trace: context.exec?.trace ?? context.trace ?? exec.trace
262
+ trace: context.exec?.trace ?? context.trace ?? exec.trace,
263
+ effectfulCompletionSession: session ?? require_internal_parser.createEffectfulCompletionSession()
252
264
  };
253
265
  }
254
266
  function createPhase2SeedContext(parser, args) {
@@ -265,27 +277,27 @@ function createPhase2SeedContext(parser, args) {
265
277
  optionsTerminated: false
266
278
  }, exec);
267
279
  }
268
- function extractPhase2SeedSync(parser, args) {
280
+ function extractPhase2SeedSync(parser, args, session) {
269
281
  let context = createPhase2SeedContext(parser, args);
270
282
  do {
271
283
  const result = parser.parse(context);
272
- if (!result.success) return require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
284
+ if (!result.success) return require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
273
285
  const previousBuffer = context.buffer;
274
286
  context = result.next;
275
- if (isBufferUnchanged(previousBuffer, context.buffer)) return require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
287
+ if (isBufferUnchanged(previousBuffer, context.buffer)) return require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
276
288
  } while (context.buffer.length > 0);
277
- return require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
289
+ return require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
278
290
  }
279
- async function extractPhase2SeedAsync(parser, args) {
291
+ async function extractPhase2SeedAsync(parser, args, session) {
280
292
  let context = createPhase2SeedContext(parser, args);
281
293
  do {
282
294
  const result = await parser.parse(context);
283
- if (!result.success) return await require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
295
+ if (!result.success) return await require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
284
296
  const previousBuffer = context.buffer;
285
297
  context = result.next;
286
- if (isBufferUnchanged(previousBuffer, context.buffer)) return await require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
298
+ if (isBufferUnchanged(previousBuffer, context.buffer)) return await require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
287
299
  } while (context.buffer.length > 0);
288
- return await require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
300
+ return await require_phase2_seed.completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
289
301
  }
290
302
  function getMetaCommandAliases(names) {
291
303
  const [, firstAlias, ...restAliases] = names;
@@ -611,7 +623,7 @@ function classifyParseFailure(failure, helpOptionNames, helpCommandNames, versio
611
623
  * Handles shell completion requests.
612
624
  * @since 0.6.0
613
625
  */
614
- function handleCompletion(completionArgs, programName, parser, completionParser, stdout, stderr, onCompletion, onError, availableShells, colors, maxWidth, termWidth, completionCommandDisplayName, completionOptionDisplayName, isOptionMode, sectionOrder, showUsage, rootOptionSuggestions = []) {
626
+ function handleCompletion(completionArgs, programName, parser, completionParser, stdout, stderr, onCompletion, onError, availableShells, colors, maxWidth, completionCommandDisplayName, completionOptionDisplayName, isOptionMode, sectionOrder, showUsage, rootOptionSuggestions = []) {
615
627
  const shellName = completionArgs[0] || "";
616
628
  const args = completionArgs.slice(1);
617
629
  const callOnError = (code) => onError(code);
@@ -624,7 +636,6 @@ function handleCompletion(completionArgs, programName, parser, completionParser,
624
636
  if (doc) stderr(require_doc.formatDocPage(programName, doc, {
625
637
  colors,
626
638
  maxWidth,
627
- termWidth,
628
639
  sectionOrder,
629
640
  showUsage
630
641
  }));
@@ -953,7 +964,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
953
964
  options = optionsParam ?? {};
954
965
  }
955
966
  require_validate.validateProgramName(programName);
956
- const { colors, maxWidth, termWidth, showDefault, showChoices, sectionOrder, showUsage, usageLine, commandList = "recursive", aboveError = "usage", onError = () => {
967
+ const { colors, maxWidth, showDefault, showChoices, sectionOrder, showUsage, usageLine, commandList = "recursive", aboveError = "usage", onError = () => {
957
968
  throw new RunParserError("Failed to parse command line arguments.");
958
969
  }, stderr = console.error, stdout = console.log, brief, description, examples, author, bugs, footer } = options;
959
970
  const norm = (c) => c === true ? {} : c;
@@ -1091,7 +1102,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1091
1102
  classified.shell,
1092
1103
  ...classified.commandPath ?? [],
1093
1104
  ...classified.args
1094
- ], programName, parser, classified.source === "command" ? completionParsers.completionCommand : completionParsers.completionOption, stdout, stderr, onCompletionResult, onErrorResult, availableShells, colors, maxWidth, termWidth, completionCommandNames[0], completionOptionNames[0], classified.source === "option", sectionOrder, showUsage, rootOptionSuggestions);
1105
+ ], programName, parser, classified.source === "command" ? completionParsers.completionCommand : completionParsers.completionOption, stdout, stderr, onCompletionResult, onErrorResult, availableShells, colors, maxWidth, completionCommandNames[0], completionOptionNames[0], classified.source === "option", sectionOrder, showUsage, rootOptionSuggestions);
1095
1106
  case "help": {
1096
1107
  let helpGeneratorParser;
1097
1108
  let docGeneratorParser;
@@ -1141,7 +1152,6 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1141
1152
  stdout(require_doc.formatDocPage(programName, renderedDoc, {
1142
1153
  colors,
1143
1154
  maxWidth,
1144
- termWidth,
1145
1155
  showDefault,
1146
1156
  showChoices,
1147
1157
  sectionOrder,
@@ -1214,7 +1224,6 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1214
1224
  stderr(require_doc.formatDocPage(programName, renderedDoc, {
1215
1225
  colors,
1216
1226
  maxWidth,
1217
- termWidth,
1218
1227
  showDefault,
1219
1228
  showChoices,
1220
1229
  sectionOrder,
@@ -1246,7 +1255,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1246
1255
  };
1247
1256
  const parserMode = parser.mode;
1248
1257
  return require_mode_dispatch.dispatchByMode(parserMode, () => {
1249
- const attempted = attemptParseSync(parser, args);
1258
+ const attempted = attemptParseSync(parser, args, "complete", getEffectfulSessionOption(options));
1250
1259
  const classified = attempted.kind === "success" ? {
1251
1260
  type: "success",
1252
1261
  value: attempted.value
@@ -1255,7 +1264,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1255
1264
  if (handled instanceof Promise) throw new RunParserError("Synchronous parser returned async result.");
1256
1265
  return handled;
1257
1266
  }, async () => {
1258
- const attempted = await attemptParseAsync(parser, args);
1267
+ const attempted = await attemptParseAsync(parser, args, "complete", getEffectfulSessionOption(options));
1259
1268
  const classified = attempted.kind === "success" ? {
1260
1269
  type: "success",
1261
1270
  value: attempted.value
@@ -1603,16 +1612,24 @@ async function runWithBody(parser, programName, contexts, args, options) {
1603
1612
  if (parser.mode === "async") return runParser(augmentedParser1, programName, args, options);
1604
1613
  return Promise.resolve(runParser(augmentedParser1, programName, args, options));
1605
1614
  }
1606
- const firstPassSeed = await require_mode_dispatch.dispatchByMode(parser.mode, () => extractPhase2SeedSync(augmentedParser1, args), () => extractPhase2SeedAsync(augmentedParser1, args));
1615
+ const seedSession = require_internal_parser.createEffectfulCompletionSession("demand-only");
1616
+ const finalSession = {
1617
+ ...seedSession,
1618
+ policy: "eager",
1619
+ effectfulSources: /* @__PURE__ */ new Set(),
1620
+ completedByPath: /* @__PURE__ */ new Map()
1621
+ };
1622
+ const sessionOptions = withEffectfulSessionOption(options, finalSession);
1623
+ const firstPassSeed = await require_mode_dispatch.dispatchByMode(parser.mode, () => extractPhase2SeedSync(augmentedParser1, args, seedSession), () => extractPhase2SeedAsync(augmentedParser1, args, seedSession));
1607
1624
  if (firstPassSeed == null) {
1608
1625
  const fallbackParser = injectAnnotationsIntoParser(parser, phase1Annotations);
1609
- if (parser.mode === "async") return runParser(fallbackParser, programName, args, options);
1610
- return Promise.resolve(runParser(fallbackParser, programName, args, options));
1626
+ if (parser.mode === "async") return runParser(fallbackParser, programName, args, sessionOptions);
1627
+ return Promise.resolve(runParser(fallbackParser, programName, args, sessionOptions));
1611
1628
  }
1612
1629
  const { annotations: finalAnnotations } = await collectFinalAnnotations(contexts, phase1Snapshots, firstPassSeed.value, ctxOptions, firstPassSeed.deferred, firstPassSeed.deferredKeys);
1613
1630
  const augmentedParser2 = injectAnnotationsIntoParser(parser, finalAnnotations);
1614
- if (parser.mode === "async") return runParser(augmentedParser2, programName, args, options);
1615
- return Promise.resolve(runParser(augmentedParser2, programName, args, options));
1631
+ if (parser.mode === "async") return runParser(augmentedParser2, programName, args, sessionOptions);
1632
+ return Promise.resolve(runParser(augmentedParser2, programName, args, sessionOptions));
1616
1633
  }
1617
1634
  /**
1618
1635
  * Runs a parser with multiple source contexts.
@@ -1718,14 +1735,22 @@ function runWithSyncBody(parser, programName, contexts, args, options) {
1718
1735
  }
1719
1736
  const augmentedParser1 = injectAnnotationsIntoParser(parser, phase1Annotations);
1720
1737
  if (!needsTwoPhase) return runParser(augmentedParser1, programName, args, options);
1721
- const firstPassSeed = extractPhase2SeedSync(augmentedParser1, args);
1738
+ const seedSession = require_internal_parser.createEffectfulCompletionSession("demand-only");
1739
+ const finalSession = {
1740
+ ...seedSession,
1741
+ policy: "eager",
1742
+ effectfulSources: /* @__PURE__ */ new Set(),
1743
+ completedByPath: /* @__PURE__ */ new Map()
1744
+ };
1745
+ const sessionOptions = withEffectfulSessionOption(options, finalSession);
1746
+ const firstPassSeed = extractPhase2SeedSync(augmentedParser1, args, seedSession);
1722
1747
  if (firstPassSeed == null) {
1723
1748
  const fallbackParser = injectAnnotationsIntoParser(parser, phase1Annotations);
1724
- return runParser(fallbackParser, programName, args, options);
1749
+ return runParser(fallbackParser, programName, args, sessionOptions);
1725
1750
  }
1726
1751
  const { annotations: finalAnnotations } = collectFinalAnnotationsSync(contexts, phase1Snapshots, firstPassSeed.value, ctxOptions, firstPassSeed.deferred, firstPassSeed.deferredKeys);
1727
1752
  const augmentedParser2 = injectAnnotationsIntoParser(parser, finalAnnotations);
1728
- return runParser(augmentedParser2, programName, args, options);
1753
+ return runParser(augmentedParser2, programName, args, sessionOptions);
1729
1754
  }
1730
1755
  /**
1731
1756
  * Runs a synchronous parser with multiple source contexts.
package/dist/facade.d.cts CHANGED
@@ -89,14 +89,6 @@ interface RunOptions<THelp, TError> {
89
89
  * this width. If not specified, text will not be wrapped.
90
90
  */
91
91
  readonly maxWidth?: number;
92
- /**
93
- * Width allocated for help terms before descriptions start. Set to
94
- * `"auto"` to align descriptions after the widest visible term.
95
- *
96
- * @default `26`
97
- * @since 1.3.0
98
- */
99
- readonly termWidth?: number | "auto";
100
92
  /**
101
93
  * Whether and how to display default values for options and arguments.
102
94
  *
package/dist/facade.d.ts CHANGED
@@ -89,14 +89,6 @@ interface RunOptions<THelp, TError> {
89
89
  * this width. If not specified, text will not be wrapped.
90
90
  */
91
91
  readonly maxWidth?: number;
92
- /**
93
- * Width allocated for help terms before descriptions start. Set to
94
- * `"auto"` to align descriptions after the widest visible term.
95
- *
96
- * @default `26`
97
- * @since 1.3.0
98
- */
99
- readonly termWidth?: number | "auto";
100
92
  /**
101
93
  * Whether and how to display default values for options and arguments.
102
94
  *
package/dist/facade.js CHANGED
@@ -6,7 +6,7 @@ import { formatDocPage } from "./doc.js";
6
6
  import { dispatchByMode } from "./internal/mode-dispatch.js";
7
7
  import { collectExplicitSourceValues, collectExplicitSourceValuesAsync, createDependencyRuntimeContext } from "./dependency-runtime.js";
8
8
  import { createInputTrace } from "./input-trace.js";
9
- import { createParserContext, getDocPage } from "./internal/parser.js";
9
+ import { createEffectfulCompletionSession, createParserContext, getDocPage } from "./internal/parser.js";
10
10
  import { bash, fish, nu, pwsh, zsh } from "./completion.js";
11
11
  import { allowDuplicateLeadingCommandNamesKey, hiddenCommandAliasesKey } from "./internal/command-alias.js";
12
12
  import { completeOrExtractPhase2Seed } from "./phase2-seed.js";
@@ -116,7 +116,17 @@ function createParseExec(parser) {
116
116
  function getCommandPath(exec) {
117
117
  return exec?.commandPath ?? [];
118
118
  }
119
- function createCompleteExec(exec, context) {
119
+ const effectfulSessionOptionsKey = Symbol("@optique/core/facade/effectfulSessionOptionsKey");
120
+ function getEffectfulSessionOption(options) {
121
+ return options[effectfulSessionOptionsKey];
122
+ }
123
+ function withEffectfulSessionOption(options, session) {
124
+ return {
125
+ ...options,
126
+ [effectfulSessionOptionsKey]: session
127
+ };
128
+ }
129
+ function createCompleteExec(exec, context, session) {
120
130
  const runtime = createDependencyRuntimeContext();
121
131
  return {
122
132
  ...exec,
@@ -124,10 +134,11 @@ function createCompleteExec(exec, context) {
124
134
  dependencyRuntime: runtime,
125
135
  dependencyRegistry: runtime.registry,
126
136
  commandPath: getCommandPath(context.exec) ?? exec.commandPath,
127
- trace: context.exec?.trace ?? context.trace ?? exec.trace
137
+ trace: context.exec?.trace ?? context.trace ?? exec.trace,
138
+ effectfulCompletionSession: session ?? createEffectfulCompletionSession()
128
139
  };
129
140
  }
130
- function attemptParseSync(parser, args, mode = "complete") {
141
+ function attemptParseSync(parser, args, mode = "complete", session) {
131
142
  const shouldUnwrapAnnotatedValue = isInjectedAnnotationWrapper(parser.initialState);
132
143
  const exec = createParseExec(parser);
133
144
  let context = createParserContext({
@@ -166,7 +177,7 @@ function attemptParseSync(parser, args, mode = "complete") {
166
177
  kind: "success",
167
178
  value: void 0
168
179
  };
169
- const endResult = parser.complete(context.state, createCompleteExec(exec, context));
180
+ const endResult = parser.complete(context.state, createCompleteExec(exec, context, session));
170
181
  if (!endResult.success) return {
171
182
  kind: "failure",
172
183
  error: endResult.error,
@@ -180,7 +191,7 @@ function attemptParseSync(parser, args, mode = "complete") {
180
191
  value: shouldUnwrapAnnotatedValue ? unwrapInjectedAnnotationWrapper(endResult.value) : endResult.value
181
192
  };
182
193
  }
183
- async function attemptParseAsync(parser, args, mode = "complete") {
194
+ async function attemptParseAsync(parser, args, mode = "complete", session) {
184
195
  const shouldUnwrapAnnotatedValue = isInjectedAnnotationWrapper(parser.initialState);
185
196
  const exec = createParseExec(parser);
186
197
  let context = createParserContext({
@@ -219,7 +230,7 @@ async function attemptParseAsync(parser, args, mode = "complete") {
219
230
  kind: "success",
220
231
  value: void 0
221
232
  };
222
- const endResult = await parser.complete(context.state, createCompleteExec(exec, context));
233
+ const endResult = await parser.complete(context.state, createCompleteExec(exec, context, session));
223
234
  if (!endResult.success) return {
224
235
  kind: "failure",
225
236
  error: endResult.error,
@@ -233,7 +244,7 @@ async function attemptParseAsync(parser, args, mode = "complete") {
233
244
  value: shouldUnwrapAnnotatedValue ? unwrapInjectedAnnotationWrapper(endResult.value) : endResult.value
234
245
  };
235
246
  }
236
- function createPhase2SeedExec(parser, context) {
247
+ function createPhase2SeedExec(parser, context, session) {
237
248
  const exec = {
238
249
  usage: parser.usage,
239
250
  phase: "parse",
@@ -248,7 +259,8 @@ function createPhase2SeedExec(parser, context) {
248
259
  dependencyRuntime: runtime,
249
260
  dependencyRegistry: runtime.registry,
250
261
  commandPath: getCommandPath(context.exec),
251
- trace: context.exec?.trace ?? context.trace ?? exec.trace
262
+ trace: context.exec?.trace ?? context.trace ?? exec.trace,
263
+ effectfulCompletionSession: session ?? createEffectfulCompletionSession()
252
264
  };
253
265
  }
254
266
  function createPhase2SeedContext(parser, args) {
@@ -265,27 +277,27 @@ function createPhase2SeedContext(parser, args) {
265
277
  optionsTerminated: false
266
278
  }, exec);
267
279
  }
268
- function extractPhase2SeedSync(parser, args) {
280
+ function extractPhase2SeedSync(parser, args, session) {
269
281
  let context = createPhase2SeedContext(parser, args);
270
282
  do {
271
283
  const result = parser.parse(context);
272
- if (!result.success) return completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
284
+ if (!result.success) return completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
273
285
  const previousBuffer = context.buffer;
274
286
  context = result.next;
275
- if (isBufferUnchanged(previousBuffer, context.buffer)) return completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
287
+ if (isBufferUnchanged(previousBuffer, context.buffer)) return completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
276
288
  } while (context.buffer.length > 0);
277
- return completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
289
+ return completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
278
290
  }
279
- async function extractPhase2SeedAsync(parser, args) {
291
+ async function extractPhase2SeedAsync(parser, args, session) {
280
292
  let context = createPhase2SeedContext(parser, args);
281
293
  do {
282
294
  const result = await parser.parse(context);
283
- if (!result.success) return await completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
295
+ if (!result.success) return await completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
284
296
  const previousBuffer = context.buffer;
285
297
  context = result.next;
286
- if (isBufferUnchanged(previousBuffer, context.buffer)) return await completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
298
+ if (isBufferUnchanged(previousBuffer, context.buffer)) return await completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
287
299
  } while (context.buffer.length > 0);
288
- return await completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context));
300
+ return await completeOrExtractPhase2Seed(parser, context.state, createPhase2SeedExec(parser, context, session));
289
301
  }
290
302
  function getMetaCommandAliases(names) {
291
303
  const [, firstAlias, ...restAliases] = names;
@@ -611,7 +623,7 @@ function classifyParseFailure(failure, helpOptionNames, helpCommandNames, versio
611
623
  * Handles shell completion requests.
612
624
  * @since 0.6.0
613
625
  */
614
- function handleCompletion(completionArgs, programName, parser, completionParser, stdout, stderr, onCompletion, onError, availableShells, colors, maxWidth, termWidth, completionCommandDisplayName, completionOptionDisplayName, isOptionMode, sectionOrder, showUsage, rootOptionSuggestions = []) {
626
+ function handleCompletion(completionArgs, programName, parser, completionParser, stdout, stderr, onCompletion, onError, availableShells, colors, maxWidth, completionCommandDisplayName, completionOptionDisplayName, isOptionMode, sectionOrder, showUsage, rootOptionSuggestions = []) {
615
627
  const shellName = completionArgs[0] || "";
616
628
  const args = completionArgs.slice(1);
617
629
  const callOnError = (code) => onError(code);
@@ -624,7 +636,6 @@ function handleCompletion(completionArgs, programName, parser, completionParser,
624
636
  if (doc) stderr(formatDocPage(programName, doc, {
625
637
  colors,
626
638
  maxWidth,
627
- termWidth,
628
639
  sectionOrder,
629
640
  showUsage
630
641
  }));
@@ -953,7 +964,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
953
964
  options = optionsParam ?? {};
954
965
  }
955
966
  validateProgramName(programName);
956
- const { colors, maxWidth, termWidth, showDefault, showChoices, sectionOrder, showUsage, usageLine, commandList = "recursive", aboveError = "usage", onError = () => {
967
+ const { colors, maxWidth, showDefault, showChoices, sectionOrder, showUsage, usageLine, commandList = "recursive", aboveError = "usage", onError = () => {
957
968
  throw new RunParserError("Failed to parse command line arguments.");
958
969
  }, stderr = console.error, stdout = console.log, brief, description, examples, author, bugs, footer } = options;
959
970
  const norm = (c) => c === true ? {} : c;
@@ -1091,7 +1102,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1091
1102
  classified.shell,
1092
1103
  ...classified.commandPath ?? [],
1093
1104
  ...classified.args
1094
- ], programName, parser, classified.source === "command" ? completionParsers.completionCommand : completionParsers.completionOption, stdout, stderr, onCompletionResult, onErrorResult, availableShells, colors, maxWidth, termWidth, completionCommandNames[0], completionOptionNames[0], classified.source === "option", sectionOrder, showUsage, rootOptionSuggestions);
1105
+ ], programName, parser, classified.source === "command" ? completionParsers.completionCommand : completionParsers.completionOption, stdout, stderr, onCompletionResult, onErrorResult, availableShells, colors, maxWidth, completionCommandNames[0], completionOptionNames[0], classified.source === "option", sectionOrder, showUsage, rootOptionSuggestions);
1095
1106
  case "help": {
1096
1107
  let helpGeneratorParser;
1097
1108
  let docGeneratorParser;
@@ -1141,7 +1152,6 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1141
1152
  stdout(formatDocPage(programName, renderedDoc, {
1142
1153
  colors,
1143
1154
  maxWidth,
1144
- termWidth,
1145
1155
  showDefault,
1146
1156
  showChoices,
1147
1157
  sectionOrder,
@@ -1214,7 +1224,6 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1214
1224
  stderr(formatDocPage(programName, renderedDoc, {
1215
1225
  colors,
1216
1226
  maxWidth,
1217
- termWidth,
1218
1227
  showDefault,
1219
1228
  showChoices,
1220
1229
  sectionOrder,
@@ -1246,7 +1255,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1246
1255
  };
1247
1256
  const parserMode = parser.mode;
1248
1257
  return dispatchByMode(parserMode, () => {
1249
- const attempted = attemptParseSync(parser, args);
1258
+ const attempted = attemptParseSync(parser, args, "complete", getEffectfulSessionOption(options));
1250
1259
  const classified = attempted.kind === "success" ? {
1251
1260
  type: "success",
1252
1261
  value: attempted.value
@@ -1255,7 +1264,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
1255
1264
  if (handled instanceof Promise) throw new RunParserError("Synchronous parser returned async result.");
1256
1265
  return handled;
1257
1266
  }, async () => {
1258
- const attempted = await attemptParseAsync(parser, args);
1267
+ const attempted = await attemptParseAsync(parser, args, "complete", getEffectfulSessionOption(options));
1259
1268
  const classified = attempted.kind === "success" ? {
1260
1269
  type: "success",
1261
1270
  value: attempted.value
@@ -1603,16 +1612,24 @@ async function runWithBody(parser, programName, contexts, args, options) {
1603
1612
  if (parser.mode === "async") return runParser(augmentedParser1, programName, args, options);
1604
1613
  return Promise.resolve(runParser(augmentedParser1, programName, args, options));
1605
1614
  }
1606
- const firstPassSeed = await dispatchByMode(parser.mode, () => extractPhase2SeedSync(augmentedParser1, args), () => extractPhase2SeedAsync(augmentedParser1, args));
1615
+ const seedSession = createEffectfulCompletionSession("demand-only");
1616
+ const finalSession = {
1617
+ ...seedSession,
1618
+ policy: "eager",
1619
+ effectfulSources: /* @__PURE__ */ new Set(),
1620
+ completedByPath: /* @__PURE__ */ new Map()
1621
+ };
1622
+ const sessionOptions = withEffectfulSessionOption(options, finalSession);
1623
+ const firstPassSeed = await dispatchByMode(parser.mode, () => extractPhase2SeedSync(augmentedParser1, args, seedSession), () => extractPhase2SeedAsync(augmentedParser1, args, seedSession));
1607
1624
  if (firstPassSeed == null) {
1608
1625
  const fallbackParser = injectAnnotationsIntoParser(parser, phase1Annotations);
1609
- if (parser.mode === "async") return runParser(fallbackParser, programName, args, options);
1610
- return Promise.resolve(runParser(fallbackParser, programName, args, options));
1626
+ if (parser.mode === "async") return runParser(fallbackParser, programName, args, sessionOptions);
1627
+ return Promise.resolve(runParser(fallbackParser, programName, args, sessionOptions));
1611
1628
  }
1612
1629
  const { annotations: finalAnnotations } = await collectFinalAnnotations(contexts, phase1Snapshots, firstPassSeed.value, ctxOptions, firstPassSeed.deferred, firstPassSeed.deferredKeys);
1613
1630
  const augmentedParser2 = injectAnnotationsIntoParser(parser, finalAnnotations);
1614
- if (parser.mode === "async") return runParser(augmentedParser2, programName, args, options);
1615
- return Promise.resolve(runParser(augmentedParser2, programName, args, options));
1631
+ if (parser.mode === "async") return runParser(augmentedParser2, programName, args, sessionOptions);
1632
+ return Promise.resolve(runParser(augmentedParser2, programName, args, sessionOptions));
1616
1633
  }
1617
1634
  /**
1618
1635
  * Runs a parser with multiple source contexts.
@@ -1718,14 +1735,22 @@ function runWithSyncBody(parser, programName, contexts, args, options) {
1718
1735
  }
1719
1736
  const augmentedParser1 = injectAnnotationsIntoParser(parser, phase1Annotations);
1720
1737
  if (!needsTwoPhase) return runParser(augmentedParser1, programName, args, options);
1721
- const firstPassSeed = extractPhase2SeedSync(augmentedParser1, args);
1738
+ const seedSession = createEffectfulCompletionSession("demand-only");
1739
+ const finalSession = {
1740
+ ...seedSession,
1741
+ policy: "eager",
1742
+ effectfulSources: /* @__PURE__ */ new Set(),
1743
+ completedByPath: /* @__PURE__ */ new Map()
1744
+ };
1745
+ const sessionOptions = withEffectfulSessionOption(options, finalSession);
1746
+ const firstPassSeed = extractPhase2SeedSync(augmentedParser1, args, seedSession);
1722
1747
  if (firstPassSeed == null) {
1723
1748
  const fallbackParser = injectAnnotationsIntoParser(parser, phase1Annotations);
1724
- return runParser(fallbackParser, programName, args, options);
1749
+ return runParser(fallbackParser, programName, args, sessionOptions);
1725
1750
  }
1726
1751
  const { annotations: finalAnnotations } = collectFinalAnnotationsSync(contexts, phase1Snapshots, firstPassSeed.value, ctxOptions, firstPassSeed.deferred, firstPassSeed.deferredKeys);
1727
1752
  const augmentedParser2 = injectAnnotationsIntoParser(parser, finalAnnotations);
1728
- return runParser(augmentedParser2, programName, args, options);
1753
+ return runParser(augmentedParser2, programName, args, sessionOptions);
1729
1754
  }
1730
1755
  /**
1731
1756
  * Runs a synchronous parser with multiple source contexts.
package/dist/index.cjs CHANGED
@@ -108,7 +108,6 @@ exports.passThrough = require_primitives.passThrough;
108
108
  exports.port = require_valueparser.port;
109
109
  exports.portRange = require_valueparser.portRange;
110
110
  exports.pwsh = require_completion.pwsh;
111
- exports.regExp = require_valueparser.regExp;
112
111
  exports.runParser = require_facade.runParser;
113
112
  exports.runParserAsync = require_facade.runParserAsync;
114
113
  exports.runParserSync = require_facade.runParserSync;
package/dist/index.d.cts CHANGED
@@ -3,8 +3,8 @@ import { NonEmptyString, ensureNonEmptyString, isNonEmptyString } from "./nonemp
3
3
  import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.cjs";
4
4
  import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.cjs";
5
5
  import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, ShowChoicesOptions, ShowDefaultOptions, cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.cjs";
6
- import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.cjs";
7
- import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.cjs";
6
+ import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, port, portRange, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.cjs";
7
+ import { CombineModes, DocState, EffectfulCompletionSession, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.cjs";
8
8
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
9
9
  import { DeferredValue, DeferredValueOptions, DeferredValueSource, FluentParser, MultipleErrorOptions, MultipleOptions, ParserModifiers, WithDefaultError, WithDefaultOptions, deferredValue, fluent, isDeferredValue, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.cjs";
10
10
  import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, SeqOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, seq, tuple } from "./constructs.cjs";
@@ -12,4 +12,4 @@ import { ParserValuePlaceholder, SourceContext, SourceContextRequest } from "./c
12
12
  import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser } from "./internal/dependency.cjs";
13
13
  import { CommandListMode, CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.cjs";
14
14
  import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, negatableFlag, option, passThrough } from "./primitives.cjs";
15
- export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
15
+ export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.d.ts CHANGED
@@ -3,8 +3,8 @@ import { NonEmptyString, ensureNonEmptyString, isNonEmptyString } from "./nonemp
3
3
  import { Message, MessageFormatOptions, MessageTerm, ValueSetOptions, commandLine, envVar, formatMessage, lineBreak, link, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
4
4
  import { HiddenVisibility, OptionName, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, cloneUsage, cloneUsageTerm, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, formatUsage, formatUsageTerm, isDocHidden, isSuggestionHidden, isUsageHidden, mergeHidden, normalizeUsage } from "./usage.js";
5
5
  import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, ShowChoicesOptions, ShowDefaultOptions, cloneDocEntry, deduplicateDocEntries, deduplicateDocFragments, formatDocPage, isDocEntryHidden } from "./doc.js";
6
- import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.js";
7
- import { CombineModes, DocState, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.js";
6
+ import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DomainOptions, EmailOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FloatOptions, HostnameOptions, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, MacAddressOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SocketAddressOptions, SocketAddressValue, StringOptions, TransformMapping, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, port, portRange, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.js";
7
+ import { CombineModes, DocState, EffectfulCompletionSession, ExecutionContext, ExecutionPhase, InferMode, InferValue, Mode, ModeIterable, ModeValue, ParseFrame, Parser, ParserContext, ParserResult, Result, Suggestion, createParserContext, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./internal/parser.js";
8
8
  import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
9
9
  import { DeferredValue, DeferredValueOptions, DeferredValueSource, FluentParser, MultipleErrorOptions, MultipleOptions, ParserModifiers, WithDefaultError, WithDefaultOptions, deferredValue, fluent, isDeferredValue, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
10
10
  import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, GroupOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, SeqOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, seq, tuple } from "./constructs.js";
@@ -12,4 +12,4 @@ import { ParserValuePlaceholder, SourceContext, SourceContextRequest } from "./c
12
12
  import { AnyDependencySource, CombineMode, CombinedDependencyMode, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, dependency, deriveFrom, deriveFromAsync, deriveFromSync, isDependencySource, isDerivedValueParser } from "./internal/dependency.js";
13
13
  import { CommandListMode, CommandSubConfig, ContextOptionsParam, ExtractRequiredOptions, OptionSubConfig, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
14
14
  import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, fail, flag, negatableFlag, option, passThrough } from "./primitives.js";
15
- export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, RegExpOptions, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
15
+ export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, Color, ColorFormat, ColorOptions, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandListMode, CommandOptions, CommandSubConfig, ConditionalErrorOptions, ConditionalOptions, ContextOptionsParam, CronExpression, CronExpressionForOptions, CronOptions, DeferredMap, DeferredValue, DeferredValueOptions, DeferredValueSource, DependencyMode, DependencySource, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EffectfulCompletionSession, EmailOptions, ExecutionContext, ExecutionPhase, ExtractRequiredOptions, FileSizeOptions, FileSizeOptionsBigInt, FileSizeOptionsNumber, FileSizeUnit, FirstOfOptions, FlagErrorOptions, FlagOptions, FloatOptions, FluentParser, GroupOptions, HiddenVisibility, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, Json, JsonOptions, KeyValueOptions, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NegatableFlagErrorOptions, NegatableFlagNameList, NegatableFlagNames, NegatableFlagOptions, NegatableFlagState, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OptionSubConfig, OrErrorOptions, OrOptions, ParseFrame, type ParseOptions, Parser, ParserContext, ParserModifiers, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, Result, RunOptions, RunParserError, RunWithOptions, SemVer, SemVerOptionsObject, SemVerOptionsString, SemVerString, SeqOptions, ShellCompletion, ShowChoicesOptions, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, SourceContextRequest, StringOptions, SubstituteParserValue, Suggestion, TransformMapping, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
package/dist/index.js CHANGED
@@ -8,8 +8,8 @@ import { bash, fish, nu, pwsh, zsh } from "./completion.js";
8
8
  import { WithDefaultError, deferredValue, fluent, isDeferredValue, map, multiple, nonEmpty, optional, withDefault } from "./modifiers.js";
9
9
  import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, seq, tuple } from "./constructs.js";
10
10
  import { ensureNonEmptyString, isNonEmptyString } from "./nonempty.js";
11
- import { biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, port, portRange, regExp, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.js";
11
+ import { biject, checkBooleanOption, checkEnumOption, choice, cidr, color, cron, domain, email, fileSize, firstOf, float, hostname, integer, ip, ipv4, ipv6, isValueParser, json, keyValue, locale, macAddress, port, portRange, semVer, socketAddress, string, transform, url, uuid } from "./valueparser.js";
12
12
  import { argument, command, constant, fail, flag, negatableFlag, option, passThrough } from "./primitives.js";
13
13
  import { RunParserError, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
14
14
 
15
- export { DuplicateOptionError, RunParserError, WithDefaultError, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, regExp, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
15
+ export { DuplicateOptionError, RunParserError, WithDefaultError, argument, bash, biject, checkBooleanOption, checkEnumOption, choice, cidr, cloneDocEntry, cloneUsage, cloneUsageTerm, color, command, commandLine, concat, conditional, constant, createParserContext, cron, deduplicateDocEntries, deduplicateDocFragments, deferredValue, dependency, deriveFrom, deriveFromAsync, deriveFromSync, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractLiteralValues, extractOptionNames, fail, fileSize, firstOf, fish, flag, float, fluent, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredValue, isDependencySource, isDerivedValueParser, isDocEntryHidden, isDocHidden, isNonEmptyString, isSuggestionHidden, isUsageHidden, isValueParser, json, keyValue, lineBreak, link, locale, longestMatch, macAddress, map, merge, mergeHidden, message, metavar, multiple, negatableFlag, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, semVer, seq, socketAddress, string, suggest, suggestAsync, suggestSync, text, transform, tuple, url, uuid, value, valueSet, values, withDefault, zsh };