@optique/core 1.0.0-dev.1897 → 1.0.0-dev.1901

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.
@@ -132,14 +132,103 @@ function normalizeNestedDelegatedStructuredState(source, seen) {
132
132
  entry.result = clone;
133
133
  return clone;
134
134
  }
135
+ function normalizeNestedDelegatedMapState(source, seen) {
136
+ const clone = /* @__PURE__ */ new Map();
137
+ const entry = {
138
+ clone,
139
+ finalized: false,
140
+ result: clone
141
+ };
142
+ seen.set(source, entry);
143
+ const normalizedEntries = [];
144
+ const overrides = /* @__PURE__ */ new Map();
145
+ let changed = false;
146
+ for (const [key, value] of source) {
147
+ const nextKey = normalizeNestedDelegatedAnnotationState(key, seen);
148
+ const nextValue = normalizeNestedDelegatedAnnotationState(value, seen);
149
+ normalizedEntries.push([nextKey, nextValue]);
150
+ if (!isPendingNestedNormalizationAlias(key, nextKey, seen) && nextKey !== key || !isPendingNestedNormalizationAlias(value, nextValue, seen) && nextValue !== value) changed = true;
151
+ }
152
+ for (const key of Reflect.ownKeys(source)) {
153
+ const descriptor = Object.getOwnPropertyDescriptor(source, key);
154
+ if (descriptor == null || !("value" in descriptor)) continue;
155
+ const nextValue = normalizeNestedDelegatedAnnotationState(descriptor.value, seen);
156
+ if (nextValue === descriptor.value) continue;
157
+ overrides.set(key, nextValue);
158
+ if (!isPendingNestedNormalizationAlias(descriptor.value, nextValue, seen)) changed = true;
159
+ }
160
+ if (!changed) {
161
+ entry.finalized = true;
162
+ entry.result = source;
163
+ return source;
164
+ }
165
+ for (const [key, value] of normalizedEntries) clone.set(key, value);
166
+ const descriptors = Object.getOwnPropertyDescriptors(source);
167
+ for (const [key, nextValue] of overrides) {
168
+ const descriptor = descriptors[key];
169
+ if (descriptor == null || !("value" in descriptor)) continue;
170
+ descriptors[key] = {
171
+ ...descriptor,
172
+ value: nextValue
173
+ };
174
+ }
175
+ Object.defineProperties(clone, descriptors);
176
+ entry.finalized = true;
177
+ entry.result = clone;
178
+ return clone;
179
+ }
180
+ function normalizeNestedDelegatedSetState(source, seen) {
181
+ const clone = /* @__PURE__ */ new Set();
182
+ const entry = {
183
+ clone,
184
+ finalized: false,
185
+ result: clone
186
+ };
187
+ seen.set(source, entry);
188
+ const normalizedValues = [];
189
+ const overrides = /* @__PURE__ */ new Map();
190
+ let changed = false;
191
+ for (const value of source) {
192
+ const nextValue = normalizeNestedDelegatedAnnotationState(value, seen);
193
+ normalizedValues.push(nextValue);
194
+ if (nextValue !== value && !isPendingNestedNormalizationAlias(value, nextValue, seen)) changed = true;
195
+ }
196
+ for (const key of Reflect.ownKeys(source)) {
197
+ const descriptor = Object.getOwnPropertyDescriptor(source, key);
198
+ if (descriptor == null || !("value" in descriptor)) continue;
199
+ const nextValue = normalizeNestedDelegatedAnnotationState(descriptor.value, seen);
200
+ if (nextValue === descriptor.value) continue;
201
+ overrides.set(key, nextValue);
202
+ if (!isPendingNestedNormalizationAlias(descriptor.value, nextValue, seen)) changed = true;
203
+ }
204
+ if (!changed) {
205
+ entry.finalized = true;
206
+ entry.result = source;
207
+ return source;
208
+ }
209
+ for (const value of normalizedValues) clone.add(value);
210
+ const descriptors = Object.getOwnPropertyDescriptors(source);
211
+ for (const [key, nextValue] of overrides) {
212
+ const descriptor = descriptors[key];
213
+ if (descriptor == null || !("value" in descriptor)) continue;
214
+ descriptors[key] = {
215
+ ...descriptor,
216
+ value: nextValue
217
+ };
218
+ }
219
+ Object.defineProperties(clone, descriptors);
220
+ entry.finalized = true;
221
+ entry.result = clone;
222
+ return clone;
223
+ }
135
224
  /**
136
- * Recursively removes delegated annotation carriers from plain-object and array
137
- * structures.
225
+ * Recursively removes delegated annotation carriers from plain-object, array,
226
+ * and built-in collection structures.
138
227
  *
139
- * Nested plain objects and arrays are shallow-cloned only when a delegated
140
- * carrier is found below them. Non-plain objects are unwrapped at the top
141
- * level and then preserved as-is to avoid mutating or reconstructing class
142
- * instances.
228
+ * Nested plain objects, arrays, Maps, and Sets are shallow-cloned only when a
229
+ * delegated carrier is found below them. Other non-plain objects are unwrapped
230
+ * at the top level and then preserved as-is to avoid mutating or reconstructing
231
+ * class instances.
143
232
  *
144
233
  * @param value The candidate value to normalize.
145
234
  * @param seen Tracks already-normalized objects so cyclic values keep their
@@ -155,6 +244,8 @@ function normalizeNestedDelegatedAnnotationState(value, seen = /* @__PURE__ */ n
155
244
  const existing = seen.get(source);
156
245
  if (existing != null) return existing.finalized ? existing.result : existing.clone;
157
246
  if (Array.isArray(source)) return normalizeNestedDelegatedStructuredState(source, seen);
247
+ if (source instanceof Map) return normalizeNestedDelegatedMapState(source, seen);
248
+ if (source instanceof Set) return normalizeNestedDelegatedSetState(source, seen);
158
249
  const proto = Object.getPrototypeOf(source);
159
250
  if (proto !== Object.prototype && proto !== null) return normalized;
160
251
  return normalizeNestedDelegatedStructuredState(source, seen);
@@ -132,14 +132,103 @@ function normalizeNestedDelegatedStructuredState(source, seen) {
132
132
  entry.result = clone;
133
133
  return clone;
134
134
  }
135
+ function normalizeNestedDelegatedMapState(source, seen) {
136
+ const clone = /* @__PURE__ */ new Map();
137
+ const entry = {
138
+ clone,
139
+ finalized: false,
140
+ result: clone
141
+ };
142
+ seen.set(source, entry);
143
+ const normalizedEntries = [];
144
+ const overrides = /* @__PURE__ */ new Map();
145
+ let changed = false;
146
+ for (const [key, value] of source) {
147
+ const nextKey = normalizeNestedDelegatedAnnotationState(key, seen);
148
+ const nextValue = normalizeNestedDelegatedAnnotationState(value, seen);
149
+ normalizedEntries.push([nextKey, nextValue]);
150
+ if (!isPendingNestedNormalizationAlias(key, nextKey, seen) && nextKey !== key || !isPendingNestedNormalizationAlias(value, nextValue, seen) && nextValue !== value) changed = true;
151
+ }
152
+ for (const key of Reflect.ownKeys(source)) {
153
+ const descriptor = Object.getOwnPropertyDescriptor(source, key);
154
+ if (descriptor == null || !("value" in descriptor)) continue;
155
+ const nextValue = normalizeNestedDelegatedAnnotationState(descriptor.value, seen);
156
+ if (nextValue === descriptor.value) continue;
157
+ overrides.set(key, nextValue);
158
+ if (!isPendingNestedNormalizationAlias(descriptor.value, nextValue, seen)) changed = true;
159
+ }
160
+ if (!changed) {
161
+ entry.finalized = true;
162
+ entry.result = source;
163
+ return source;
164
+ }
165
+ for (const [key, value] of normalizedEntries) clone.set(key, value);
166
+ const descriptors = Object.getOwnPropertyDescriptors(source);
167
+ for (const [key, nextValue] of overrides) {
168
+ const descriptor = descriptors[key];
169
+ if (descriptor == null || !("value" in descriptor)) continue;
170
+ descriptors[key] = {
171
+ ...descriptor,
172
+ value: nextValue
173
+ };
174
+ }
175
+ Object.defineProperties(clone, descriptors);
176
+ entry.finalized = true;
177
+ entry.result = clone;
178
+ return clone;
179
+ }
180
+ function normalizeNestedDelegatedSetState(source, seen) {
181
+ const clone = /* @__PURE__ */ new Set();
182
+ const entry = {
183
+ clone,
184
+ finalized: false,
185
+ result: clone
186
+ };
187
+ seen.set(source, entry);
188
+ const normalizedValues = [];
189
+ const overrides = /* @__PURE__ */ new Map();
190
+ let changed = false;
191
+ for (const value of source) {
192
+ const nextValue = normalizeNestedDelegatedAnnotationState(value, seen);
193
+ normalizedValues.push(nextValue);
194
+ if (nextValue !== value && !isPendingNestedNormalizationAlias(value, nextValue, seen)) changed = true;
195
+ }
196
+ for (const key of Reflect.ownKeys(source)) {
197
+ const descriptor = Object.getOwnPropertyDescriptor(source, key);
198
+ if (descriptor == null || !("value" in descriptor)) continue;
199
+ const nextValue = normalizeNestedDelegatedAnnotationState(descriptor.value, seen);
200
+ if (nextValue === descriptor.value) continue;
201
+ overrides.set(key, nextValue);
202
+ if (!isPendingNestedNormalizationAlias(descriptor.value, nextValue, seen)) changed = true;
203
+ }
204
+ if (!changed) {
205
+ entry.finalized = true;
206
+ entry.result = source;
207
+ return source;
208
+ }
209
+ for (const value of normalizedValues) clone.add(value);
210
+ const descriptors = Object.getOwnPropertyDescriptors(source);
211
+ for (const [key, nextValue] of overrides) {
212
+ const descriptor = descriptors[key];
213
+ if (descriptor == null || !("value" in descriptor)) continue;
214
+ descriptors[key] = {
215
+ ...descriptor,
216
+ value: nextValue
217
+ };
218
+ }
219
+ Object.defineProperties(clone, descriptors);
220
+ entry.finalized = true;
221
+ entry.result = clone;
222
+ return clone;
223
+ }
135
224
  /**
136
- * Recursively removes delegated annotation carriers from plain-object and array
137
- * structures.
225
+ * Recursively removes delegated annotation carriers from plain-object, array,
226
+ * and built-in collection structures.
138
227
  *
139
- * Nested plain objects and arrays are shallow-cloned only when a delegated
140
- * carrier is found below them. Non-plain objects are unwrapped at the top
141
- * level and then preserved as-is to avoid mutating or reconstructing class
142
- * instances.
228
+ * Nested plain objects, arrays, Maps, and Sets are shallow-cloned only when a
229
+ * delegated carrier is found below them. Other non-plain objects are unwrapped
230
+ * at the top level and then preserved as-is to avoid mutating or reconstructing
231
+ * class instances.
143
232
  *
144
233
  * @param value The candidate value to normalize.
145
234
  * @param seen Tracks already-normalized objects so cyclic values keep their
@@ -155,6 +244,8 @@ function normalizeNestedDelegatedAnnotationState(value, seen = /* @__PURE__ */ n
155
244
  const existing = seen.get(source);
156
245
  if (existing != null) return existing.finalized ? existing.result : existing.clone;
157
246
  if (Array.isArray(source)) return normalizeNestedDelegatedStructuredState(source, seen);
247
+ if (source instanceof Map) return normalizeNestedDelegatedMapState(source, seen);
248
+ if (source instanceof Set) return normalizeNestedDelegatedSetState(source, seen);
158
249
  const proto = Object.getPrototypeOf(source);
159
250
  if (proto !== Object.prototype && proto !== null) return normalized;
160
251
  return normalizeNestedDelegatedStructuredState(source, seen);
@@ -90,22 +90,28 @@ function normalizeOptionalLikeCompleteResult(result) {
90
90
  }
91
91
  function completeOptionalLikeSync(parser, state, exec) {
92
92
  const hasCarrier = require_annotation_state.hasDelegatedAnnotationCarrier(state);
93
+ const shouldRetryFalseResult = require_annotation_state.isAnnotationWrappedInitialState(state);
94
+ const run = (candidate) => normalizeOptionalLikeCompleteResult(parser.complete(candidate, exec));
93
95
  try {
94
- return normalizeOptionalLikeCompleteResult(parser.complete(state, exec));
96
+ const result = run(state);
97
+ if (!result.success && shouldRetryFalseResult) return run(require_annotation_state.normalizeDelegatedAnnotationState(state));
98
+ return result;
95
99
  } catch (error) {
96
100
  if (!hasCarrier) throw error;
97
- const fallbackState = require_annotation_state.normalizeDelegatedAnnotationState(state);
98
- return normalizeOptionalLikeCompleteResult(parser.complete(fallbackState, exec));
101
+ return run(require_annotation_state.normalizeDelegatedAnnotationState(state));
99
102
  }
100
103
  }
101
104
  async function completeOptionalLikeAsync(parser, state, exec) {
102
105
  const hasCarrier = require_annotation_state.hasDelegatedAnnotationCarrier(state);
106
+ const shouldRetryFalseResult = require_annotation_state.isAnnotationWrappedInitialState(state);
107
+ const run = async (candidate) => normalizeOptionalLikeCompleteResult(await parser.complete(candidate, exec));
103
108
  try {
104
- return normalizeOptionalLikeCompleteResult(await parser.complete(state, exec));
109
+ const result = await run(state);
110
+ if (!result.success && shouldRetryFalseResult) return await run(require_annotation_state.normalizeDelegatedAnnotationState(state));
111
+ return result;
105
112
  } catch (error) {
106
113
  if (!hasCarrier) throw error;
107
- const fallbackState = require_annotation_state.normalizeDelegatedAnnotationState(state);
108
- return normalizeOptionalLikeCompleteResult(await parser.complete(fallbackState, exec));
114
+ return await run(require_annotation_state.normalizeDelegatedAnnotationState(state));
109
115
  }
110
116
  }
111
117
  function normalizeOptionalLikePhase2Seed(seed) {
@@ -253,10 +259,14 @@ function adaptShouldDeferCompletion(innerCheck, parser) {
253
259
  return (state, exec) => {
254
260
  if (Array.isArray(state) || state != null && typeof state === "object") {
255
261
  const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
262
+ const hasCarrier = require_annotation_state.hasDelegatedAnnotationCarrier(innerState);
263
+ const shouldRetryFalseResult = hasCarrier && require_annotation_state.isAnnotationWrappedInitialState(innerState);
256
264
  try {
257
- return innerCheck(innerState, exec);
265
+ const result = innerCheck(innerState, exec);
266
+ if (!result && shouldRetryFalseResult) return innerCheck(require_annotation_state.normalizeDelegatedAnnotationState(innerState), exec);
267
+ return result;
258
268
  } catch (error) {
259
- if (!require_annotation_state.hasDelegatedAnnotationCarrier(innerState)) throw error;
269
+ if (!hasCarrier) throw error;
260
270
  return innerCheck(require_annotation_state.normalizeDelegatedAnnotationState(innerState), exec);
261
271
  }
262
272
  }
@@ -277,6 +287,13 @@ function normalizeOptionalLikeInnerState(state, initialState, parser) {
277
287
  if (state != null && typeof state === "object") return state;
278
288
  return initialState;
279
289
  }
290
+ function normalizeOptionalLikeSuggestState(state, initialState, parser) {
291
+ if (Array.isArray(state)) {
292
+ const innerState = state[0];
293
+ return innerState != null && typeof innerState === "object" ? require_annotation_state.getDelegatedAnnotationState(state, innerState) : innerState;
294
+ }
295
+ return normalizeOptionalLikeInnerState(state, initialState, parser);
296
+ }
280
297
  /**
281
298
  * Creates a parser that makes another parser optional, allowing it to succeed
282
299
  * without consuming input if the wrapped parser fails to match.
@@ -292,14 +309,14 @@ function normalizeOptionalLikeInnerState(state, initialState, parser) {
292
309
  function optional(parser) {
293
310
  const syncParser = parser;
294
311
  function* suggestSync(context, prefix) {
295
- const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
312
+ const innerState = normalizeOptionalLikeSuggestState(context.state, syncParser.initialState, parser);
296
313
  yield* syncParser.suggest({
297
314
  ...context,
298
315
  state: innerState
299
316
  }, prefix);
300
317
  }
301
318
  async function* suggestAsync(context, prefix) {
302
- const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
319
+ const innerState = normalizeOptionalLikeSuggestState(context.state, syncParser.initialState, parser);
303
320
  const suggestions = parser.suggest({
304
321
  ...context,
305
322
  state: innerState
@@ -327,7 +344,7 @@ function optional(parser) {
327
344
  parser: optionalParser,
328
345
  state
329
346
  }];
330
- const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
347
+ const innerState = normalizeOptionalLikeSuggestState(state, parser.initialState, parser);
331
348
  return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
332
349
  path,
333
350
  parser,
@@ -461,14 +478,14 @@ function withDefault(parser, defaultValue, options) {
461
478
  }
462
479
  };
463
480
  function* suggestSync(context, prefix) {
464
- const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
481
+ const innerState = normalizeOptionalLikeSuggestState(context.state, syncParser.initialState, parser);
465
482
  yield* syncParser.suggest({
466
483
  ...context,
467
484
  state: innerState
468
485
  }, prefix);
469
486
  }
470
487
  async function* suggestAsync(context, prefix) {
471
- const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
488
+ const innerState = normalizeOptionalLikeSuggestState(context.state, syncParser.initialState, parser);
472
489
  const suggestions = parser.suggest({
473
490
  ...context,
474
491
  state: innerState
@@ -495,7 +512,7 @@ function withDefault(parser, defaultValue, options) {
495
512
  parser: withDefaultParser,
496
513
  state
497
514
  }];
498
- const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
515
+ const innerState = normalizeOptionalLikeSuggestState(state, parser.initialState, parser);
499
516
  return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
500
517
  path,
501
518
  parser,
package/dist/modifiers.js CHANGED
@@ -4,7 +4,7 @@ import { dispatchByMode, dispatchIterableByMode, mapModeValue, wrapForMode } fro
4
4
  import { composeDependencyMetadata } from "./dependency-metadata.js";
5
5
  import { completeOrExtractPhase2Seed, extractPhase2Seed, extractPhase2SeedKey, phase2SeedFromValueResult } from "./phase2-seed.js";
6
6
  import { defineInheritedAnnotationParser, defineSourceBindingOnlyAnnotationCompletionParser, unmatchedNonCliDependencySourceStateMarker } from "./parser.js";
7
- import { getDelegatedAnnotationState, hasDelegatedAnnotationCarrier, normalizeDelegatedAnnotationState, normalizeNestedDelegatedAnnotationState } from "./annotation-state.js";
7
+ import { getDelegatedAnnotationState, hasDelegatedAnnotationCarrier, isAnnotationWrappedInitialState, normalizeDelegatedAnnotationState, normalizeNestedDelegatedAnnotationState } from "./annotation-state.js";
8
8
 
9
9
  //#region src/modifiers.ts
10
10
  function withChildExecPath(exec, segment) {
@@ -90,22 +90,28 @@ function normalizeOptionalLikeCompleteResult(result) {
90
90
  }
91
91
  function completeOptionalLikeSync(parser, state, exec) {
92
92
  const hasCarrier = hasDelegatedAnnotationCarrier(state);
93
+ const shouldRetryFalseResult = isAnnotationWrappedInitialState(state);
94
+ const run = (candidate) => normalizeOptionalLikeCompleteResult(parser.complete(candidate, exec));
93
95
  try {
94
- return normalizeOptionalLikeCompleteResult(parser.complete(state, exec));
96
+ const result = run(state);
97
+ if (!result.success && shouldRetryFalseResult) return run(normalizeDelegatedAnnotationState(state));
98
+ return result;
95
99
  } catch (error) {
96
100
  if (!hasCarrier) throw error;
97
- const fallbackState = normalizeDelegatedAnnotationState(state);
98
- return normalizeOptionalLikeCompleteResult(parser.complete(fallbackState, exec));
101
+ return run(normalizeDelegatedAnnotationState(state));
99
102
  }
100
103
  }
101
104
  async function completeOptionalLikeAsync(parser, state, exec) {
102
105
  const hasCarrier = hasDelegatedAnnotationCarrier(state);
106
+ const shouldRetryFalseResult = isAnnotationWrappedInitialState(state);
107
+ const run = async (candidate) => normalizeOptionalLikeCompleteResult(await parser.complete(candidate, exec));
103
108
  try {
104
- return normalizeOptionalLikeCompleteResult(await parser.complete(state, exec));
109
+ const result = await run(state);
110
+ if (!result.success && shouldRetryFalseResult) return await run(normalizeDelegatedAnnotationState(state));
111
+ return result;
105
112
  } catch (error) {
106
113
  if (!hasCarrier) throw error;
107
- const fallbackState = normalizeDelegatedAnnotationState(state);
108
- return normalizeOptionalLikeCompleteResult(await parser.complete(fallbackState, exec));
114
+ return await run(normalizeDelegatedAnnotationState(state));
109
115
  }
110
116
  }
111
117
  function normalizeOptionalLikePhase2Seed(seed) {
@@ -253,10 +259,14 @@ function adaptShouldDeferCompletion(innerCheck, parser) {
253
259
  return (state, exec) => {
254
260
  if (Array.isArray(state) || state != null && typeof state === "object") {
255
261
  const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
262
+ const hasCarrier = hasDelegatedAnnotationCarrier(innerState);
263
+ const shouldRetryFalseResult = hasCarrier && isAnnotationWrappedInitialState(innerState);
256
264
  try {
257
- return innerCheck(innerState, exec);
265
+ const result = innerCheck(innerState, exec);
266
+ if (!result && shouldRetryFalseResult) return innerCheck(normalizeDelegatedAnnotationState(innerState), exec);
267
+ return result;
258
268
  } catch (error) {
259
- if (!hasDelegatedAnnotationCarrier(innerState)) throw error;
269
+ if (!hasCarrier) throw error;
260
270
  return innerCheck(normalizeDelegatedAnnotationState(innerState), exec);
261
271
  }
262
272
  }
@@ -277,6 +287,13 @@ function normalizeOptionalLikeInnerState(state, initialState, parser) {
277
287
  if (state != null && typeof state === "object") return state;
278
288
  return initialState;
279
289
  }
290
+ function normalizeOptionalLikeSuggestState(state, initialState, parser) {
291
+ if (Array.isArray(state)) {
292
+ const innerState = state[0];
293
+ return innerState != null && typeof innerState === "object" ? getDelegatedAnnotationState(state, innerState) : innerState;
294
+ }
295
+ return normalizeOptionalLikeInnerState(state, initialState, parser);
296
+ }
280
297
  /**
281
298
  * Creates a parser that makes another parser optional, allowing it to succeed
282
299
  * without consuming input if the wrapped parser fails to match.
@@ -292,14 +309,14 @@ function normalizeOptionalLikeInnerState(state, initialState, parser) {
292
309
  function optional(parser) {
293
310
  const syncParser = parser;
294
311
  function* suggestSync(context, prefix) {
295
- const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
312
+ const innerState = normalizeOptionalLikeSuggestState(context.state, syncParser.initialState, parser);
296
313
  yield* syncParser.suggest({
297
314
  ...context,
298
315
  state: innerState
299
316
  }, prefix);
300
317
  }
301
318
  async function* suggestAsync(context, prefix) {
302
- const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
319
+ const innerState = normalizeOptionalLikeSuggestState(context.state, syncParser.initialState, parser);
303
320
  const suggestions = parser.suggest({
304
321
  ...context,
305
322
  state: innerState
@@ -327,7 +344,7 @@ function optional(parser) {
327
344
  parser: optionalParser,
328
345
  state
329
346
  }];
330
- const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
347
+ const innerState = normalizeOptionalLikeSuggestState(state, parser.initialState, parser);
331
348
  return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
332
349
  path,
333
350
  parser,
@@ -461,14 +478,14 @@ function withDefault(parser, defaultValue, options) {
461
478
  }
462
479
  };
463
480
  function* suggestSync(context, prefix) {
464
- const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
481
+ const innerState = normalizeOptionalLikeSuggestState(context.state, syncParser.initialState, parser);
465
482
  yield* syncParser.suggest({
466
483
  ...context,
467
484
  state: innerState
468
485
  }, prefix);
469
486
  }
470
487
  async function* suggestAsync(context, prefix) {
471
- const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState, parser);
488
+ const innerState = normalizeOptionalLikeSuggestState(context.state, syncParser.initialState, parser);
472
489
  const suggestions = parser.suggest({
473
490
  ...context,
474
491
  state: innerState
@@ -495,7 +512,7 @@ function withDefault(parser, defaultValue, options) {
495
512
  parser: withDefaultParser,
496
513
  state
497
514
  }];
498
- const innerState = normalizeOptionalLikeInnerState(state, parser.initialState, parser);
515
+ const innerState = normalizeOptionalLikeSuggestState(state, parser.initialState, parser);
499
516
  return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
500
517
  path,
501
518
  parser,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optique/core",
3
- "version": "1.0.0-dev.1897+409a60db",
3
+ "version": "1.0.0-dev.1901+a2ce4da0",
4
4
  "description": "Type-safe combinatorial command-line interface parser",
5
5
  "keywords": [
6
6
  "CLI",