@optique/core 1.0.0-dev.1611 → 1.0.0-dev.1658
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/constructs.cjs +937 -557
- package/dist/constructs.js +938 -558
- package/dist/dependency-metadata.cjs +12 -13
- package/dist/dependency-metadata.d.cts +7 -3
- package/dist/dependency-metadata.d.ts +7 -3
- package/dist/dependency-metadata.js +12 -13
- package/dist/dependency-runtime.cjs +372 -13
- package/dist/dependency-runtime.d.cts +28 -2
- package/dist/dependency-runtime.d.ts +28 -2
- package/dist/dependency-runtime.js +367 -14
- package/dist/dependency.cjs +158 -65
- package/dist/dependency.d.cts +34 -8
- package/dist/dependency.d.ts +34 -8
- package/dist/dependency.js +156 -66
- package/dist/facade.cjs +2 -2
- package/dist/facade.js +2 -2
- package/dist/index.cjs +6 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -4
- package/dist/input-trace.cjs +56 -0
- package/dist/input-trace.d.cts +77 -0
- package/dist/input-trace.d.ts +77 -0
- package/dist/input-trace.js +55 -0
- package/dist/modifiers.cjs +320 -182
- package/dist/modifiers.js +320 -182
- package/dist/parser.cjs +106 -12
- package/dist/parser.d.cts +87 -5
- package/dist/parser.d.ts +87 -5
- package/dist/parser.js +105 -13
- package/dist/primitives.cjs +293 -163
- package/dist/primitives.d.cts +2 -8
- package/dist/primitives.d.ts +2 -8
- package/dist/primitives.js +294 -164
- package/package.json +1 -1
package/dist/modifiers.cjs
CHANGED
|
@@ -1,10 +1,83 @@
|
|
|
1
1
|
const require_annotations = require('./annotations.cjs');
|
|
2
2
|
const require_message = require('./message.cjs');
|
|
3
|
-
const require_dependency = require('./dependency.cjs');
|
|
4
3
|
const require_mode_dispatch = require('./mode-dispatch.cjs');
|
|
5
4
|
const require_dependency_metadata = require('./dependency-metadata.cjs');
|
|
6
5
|
|
|
7
6
|
//#region src/modifiers.ts
|
|
7
|
+
function withChildExecPath(exec, segment) {
|
|
8
|
+
if (exec == null) return void 0;
|
|
9
|
+
return {
|
|
10
|
+
...exec,
|
|
11
|
+
path: [...exec.path ?? [], segment]
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function mergeChildExec(parent, child) {
|
|
15
|
+
if (parent == null) return child;
|
|
16
|
+
if (child == null) return parent;
|
|
17
|
+
return {
|
|
18
|
+
...parent,
|
|
19
|
+
trace: child.trace ?? parent.trace,
|
|
20
|
+
dependencyRuntime: child.dependencyRuntime ?? parent.dependencyRuntime,
|
|
21
|
+
dependencyRegistry: child.dependencyRegistry ?? parent.dependencyRegistry,
|
|
22
|
+
preCompletedByParser: child.preCompletedByParser ?? parent.preCompletedByParser,
|
|
23
|
+
excludedSourceFields: child.excludedSourceFields ?? parent.excludedSourceFields
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function withChildContext(context, segment, state) {
|
|
27
|
+
const exec = withChildExecPath(context.exec, segment);
|
|
28
|
+
const dependencyRegistry = context.dependencyRegistry ?? exec?.dependencyRegistry;
|
|
29
|
+
return {
|
|
30
|
+
...context,
|
|
31
|
+
state,
|
|
32
|
+
...exec != null ? {
|
|
33
|
+
exec: dependencyRegistry === exec.dependencyRegistry ? exec : {
|
|
34
|
+
...exec,
|
|
35
|
+
dependencyRegistry
|
|
36
|
+
},
|
|
37
|
+
dependencyRegistry
|
|
38
|
+
} : {}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function isTerminalMultipleItemState(state) {
|
|
42
|
+
const unwrapped = unwrapMultipleItemState(state).value;
|
|
43
|
+
return unwrapped != null && typeof unwrapped === "object" && Object.hasOwn(unwrapped, "success") && typeof unwrapped.success === "boolean";
|
|
44
|
+
}
|
|
45
|
+
function isUnstartedMultipleItemState(state, originalState) {
|
|
46
|
+
const unwrappedState = unwrapMultipleItemState(state);
|
|
47
|
+
if (unwrappedState.value == null) return true;
|
|
48
|
+
if (originalState === void 0) return false;
|
|
49
|
+
const unwrappedOriginalState = unwrapMultipleItemState(originalState);
|
|
50
|
+
return unwrappedState.value === unwrappedOriginalState.value && (unwrappedState.viaBoundCliWrapper || unwrappedOriginalState.viaBoundCliWrapper || unwrappedOriginalState.value != null && typeof unwrappedOriginalState.value === "object");
|
|
51
|
+
}
|
|
52
|
+
function isBoundCliWrapperState(state) {
|
|
53
|
+
return state != null && typeof state === "object" && Object.hasOwn(state, "hasCliValue") && typeof state.hasCliValue === "boolean" && (Object.hasOwn(state, "cliState") || state.hasCliValue === false);
|
|
54
|
+
}
|
|
55
|
+
function unwrapMultipleItemState(state) {
|
|
56
|
+
let unwrapped = state;
|
|
57
|
+
let viaBoundCliWrapper = false;
|
|
58
|
+
while (true) {
|
|
59
|
+
if (require_annotations.isInjectedAnnotationWrapper(unwrapped)) {
|
|
60
|
+
unwrapped = require_annotations.unwrapInjectedAnnotationWrapper(unwrapped);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (Array.isArray(unwrapped) && unwrapped.length === 1) {
|
|
64
|
+
unwrapped = unwrapped[0];
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (isBoundCliWrapperState(unwrapped)) {
|
|
68
|
+
viaBoundCliWrapper = true;
|
|
69
|
+
unwrapped = unwrapped.cliState;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
value: unwrapped,
|
|
74
|
+
viaBoundCliWrapper
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function isPromiseLike(value) {
|
|
79
|
+
return value != null && (typeof value === "object" || typeof value === "function") && "then" in value && typeof value.then === "function";
|
|
80
|
+
}
|
|
8
81
|
/**
|
|
9
82
|
* Internal helper for optional-style parsing logic shared by optional()
|
|
10
83
|
* and withDefault(). Handles the common pattern of:
|
|
@@ -77,14 +150,16 @@ function processOptionalStyleResult(result, innerState, context) {
|
|
|
77
150
|
*/
|
|
78
151
|
function adaptShouldDeferCompletion(innerCheck) {
|
|
79
152
|
return (state, exec) => {
|
|
80
|
-
if (Array.isArray(state))
|
|
81
|
-
const inner = require_annotations.getAnnotations(state) != null && state[0] != null && typeof state[0] === "object" ? require_annotations.inheritAnnotations(state, state[0]) : state[0];
|
|
82
|
-
return innerCheck(inner, exec);
|
|
83
|
-
}
|
|
153
|
+
if (Array.isArray(state)) return innerCheck(normalizeOptionalLikeInnerState(state, state[0]), exec);
|
|
84
154
|
if (state != null && typeof state === "object") return innerCheck(state, exec);
|
|
85
155
|
return false;
|
|
86
156
|
};
|
|
87
157
|
}
|
|
158
|
+
function normalizeOptionalLikeInnerState(state, initialState) {
|
|
159
|
+
if (Array.isArray(state)) return require_annotations.getAnnotations(state) != null && state[0] != null && typeof state[0] === "object" ? require_annotations.inheritAnnotations(state, state[0]) : state[0];
|
|
160
|
+
if (state != null && typeof state === "object") return state;
|
|
161
|
+
return initialState;
|
|
162
|
+
}
|
|
88
163
|
/**
|
|
89
164
|
* Creates a parser that makes another parser optional, allowing it to succeed
|
|
90
165
|
* without consuming input if the wrapped parser fails to match.
|
|
@@ -100,25 +175,20 @@ function adaptShouldDeferCompletion(innerCheck) {
|
|
|
100
175
|
function optional(parser) {
|
|
101
176
|
const syncParser = parser;
|
|
102
177
|
function* suggestSync(context, prefix) {
|
|
103
|
-
const innerState =
|
|
178
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
104
179
|
yield* syncParser.suggest({
|
|
105
180
|
...context,
|
|
106
181
|
state: innerState
|
|
107
182
|
}, prefix);
|
|
108
183
|
}
|
|
109
184
|
async function* suggestAsync(context, prefix) {
|
|
110
|
-
const innerState =
|
|
185
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
111
186
|
const suggestions = parser.suggest({
|
|
112
187
|
...context,
|
|
113
188
|
state: innerState
|
|
114
189
|
}, prefix);
|
|
115
190
|
for await (const s of suggestions) yield s;
|
|
116
191
|
}
|
|
117
|
-
const innerHasWrappedDependency = require_dependency.isWrappedDependencySource(parser);
|
|
118
|
-
const innerHasDirectDependency = require_dependency.isPendingDependencySourceState(syncParser.initialState);
|
|
119
|
-
const wrappedDependencyMarker = innerHasWrappedDependency ? { [require_dependency.wrappedDependencySourceMarker]: parser[require_dependency.wrappedDependencySourceMarker] } : innerHasDirectDependency ? { [require_dependency.wrappedDependencySourceMarker]: syncParser.initialState } : {};
|
|
120
|
-
const hasWrappedDependencySource = require_dependency.wrappedDependencySourceMarker in wrappedDependencyMarker;
|
|
121
|
-
const wrappedPendingState = hasWrappedDependencySource ? wrappedDependencyMarker[require_dependency.wrappedDependencySourceMarker] : void 0;
|
|
122
192
|
const optionalParser = {
|
|
123
193
|
$mode: parser.$mode,
|
|
124
194
|
$valueType: [],
|
|
@@ -132,17 +202,29 @@ function optional(parser) {
|
|
|
132
202
|
leadingNames: parser.leadingNames,
|
|
133
203
|
acceptingAnyToken: false,
|
|
134
204
|
initialState: void 0,
|
|
135
|
-
...wrappedDependencyMarker,
|
|
136
205
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
206
|
+
getSuggestRuntimeNodes(state, path) {
|
|
207
|
+
if (optionalParser.dependencyMetadata?.source != null) return [{
|
|
208
|
+
path,
|
|
209
|
+
parser: optionalParser,
|
|
210
|
+
state
|
|
211
|
+
}];
|
|
212
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
213
|
+
return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
|
|
214
|
+
path,
|
|
215
|
+
parser,
|
|
216
|
+
state: innerState
|
|
217
|
+
}] : []);
|
|
218
|
+
},
|
|
137
219
|
parse(context) {
|
|
138
220
|
return require_mode_dispatch.dispatchByMode(parser.$mode, () => parseOptionalStyleSync(context, syncParser), () => parseOptionalStyleAsync(context, parser));
|
|
139
221
|
},
|
|
140
222
|
complete(state, exec) {
|
|
141
223
|
if (!Array.isArray(state)) {
|
|
142
|
-
if (innerHasWrappedDependency && wrappedPendingState) return require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete([wrappedPendingState], exec), () => parser.complete([wrappedPendingState], exec));
|
|
143
224
|
if (typeof parser.shouldDeferCompletion === "function" && state != null && typeof state === "object") {
|
|
144
225
|
const innerComplete = () => {
|
|
145
|
-
const
|
|
226
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
227
|
+
const innerResult = require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerState, exec), async () => await parser.complete(innerState, exec));
|
|
146
228
|
return require_mode_dispatch.mapModeValue(parser.$mode, innerResult, (result) => result.success ? result : {
|
|
147
229
|
success: true,
|
|
148
230
|
value: void 0
|
|
@@ -150,20 +232,18 @@ function optional(parser) {
|
|
|
150
232
|
};
|
|
151
233
|
return innerComplete();
|
|
152
234
|
}
|
|
235
|
+
const sourceMetadata = parser.dependencyMetadata?.source;
|
|
236
|
+
if (sourceMetadata?.preservesSourceValue !== false && sourceMetadata?.getMissingSourceValue != null) {
|
|
237
|
+
const delegatedState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
238
|
+
return require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(delegatedState, exec), async () => await parser.complete(delegatedState, exec));
|
|
239
|
+
}
|
|
153
240
|
return {
|
|
154
241
|
success: true,
|
|
155
242
|
value: void 0
|
|
156
243
|
};
|
|
157
244
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
return {
|
|
161
|
-
success: true,
|
|
162
|
-
value: void 0
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
const innerElement = require_annotations.getAnnotations(state) != null && state[0] != null && typeof state[0] === "object" ? require_annotations.inheritAnnotations(state, state[0]) : state[0];
|
|
166
|
-
return require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerElement, exec), () => parser.complete(innerElement, exec));
|
|
245
|
+
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
246
|
+
return require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerElement, exec), async () => await parser.complete(innerElement, exec));
|
|
167
247
|
},
|
|
168
248
|
suggest(context, prefix) {
|
|
169
249
|
return require_mode_dispatch.dispatchIterableByMode(parser.$mode, () => suggestSync(context, prefix), () => suggestAsync(context, prefix));
|
|
@@ -240,22 +320,20 @@ function withDefault(parser, defaultValue, options) {
|
|
|
240
320
|
}
|
|
241
321
|
};
|
|
242
322
|
function* suggestSync(context, prefix) {
|
|
243
|
-
const innerState =
|
|
323
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
244
324
|
yield* syncParser.suggest({
|
|
245
325
|
...context,
|
|
246
326
|
state: innerState
|
|
247
327
|
}, prefix);
|
|
248
328
|
}
|
|
249
329
|
async function* suggestAsync(context, prefix) {
|
|
250
|
-
const innerState =
|
|
330
|
+
const innerState = normalizeOptionalLikeInnerState(context.state, syncParser.initialState);
|
|
251
331
|
const suggestions = parser.suggest({
|
|
252
332
|
...context,
|
|
253
333
|
state: innerState
|
|
254
334
|
}, prefix);
|
|
255
335
|
for await (const s of suggestions) yield s;
|
|
256
336
|
}
|
|
257
|
-
const innerInitialState = syncParser.initialState;
|
|
258
|
-
const wrappedDependencyMarker = require_dependency.isPendingDependencySourceState(innerInitialState) ? { [require_dependency.wrappedDependencySourceMarker]: innerInitialState } : require_dependency.isWrappedDependencySource(parser) ? { [require_dependency.wrappedDependencySourceMarker]: parser[require_dependency.wrappedDependencySourceMarker] } : {};
|
|
259
337
|
const withDefaultParser = {
|
|
260
338
|
$mode: parser.$mode,
|
|
261
339
|
$valueType: [],
|
|
@@ -268,8 +346,20 @@ function withDefault(parser, defaultValue, options) {
|
|
|
268
346
|
leadingNames: parser.leadingNames,
|
|
269
347
|
acceptingAnyToken: false,
|
|
270
348
|
initialState: void 0,
|
|
271
|
-
...wrappedDependencyMarker,
|
|
272
349
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: adaptShouldDeferCompletion(parser.shouldDeferCompletion.bind(parser)) } : {},
|
|
350
|
+
getSuggestRuntimeNodes(state, path) {
|
|
351
|
+
if (withDefaultParser.dependencyMetadata?.source != null) return [{
|
|
352
|
+
path,
|
|
353
|
+
parser: withDefaultParser,
|
|
354
|
+
state
|
|
355
|
+
}];
|
|
356
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
357
|
+
return parser.getSuggestRuntimeNodes?.(innerState, path) ?? (parser.dependencyMetadata?.source != null ? [{
|
|
358
|
+
path,
|
|
359
|
+
parser,
|
|
360
|
+
state: innerState
|
|
361
|
+
}] : []);
|
|
362
|
+
},
|
|
273
363
|
parse(context) {
|
|
274
364
|
return require_mode_dispatch.dispatchByMode(parser.$mode, () => parseOptionalStyleSync(context, syncParser), () => parseOptionalStyleAsync(context, parser));
|
|
275
365
|
},
|
|
@@ -282,51 +372,9 @@ function withDefault(parser, defaultValue, options) {
|
|
|
282
372
|
return raw;
|
|
283
373
|
}
|
|
284
374
|
if (!Array.isArray(state)) {
|
|
285
|
-
if (require_dependency.transformsDependencyValue(parser)) {
|
|
286
|
-
const innerResult = require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(void 0, exec), () => parser.complete(void 0, exec));
|
|
287
|
-
const handleInnerResult = (res) => {
|
|
288
|
-
if (require_dependency.isDependencySourceState(res)) try {
|
|
289
|
-
const value = evaluateDefault();
|
|
290
|
-
return require_dependency.createDependencySourceState({
|
|
291
|
-
success: true,
|
|
292
|
-
value
|
|
293
|
-
}, res[require_dependency.dependencyId]);
|
|
294
|
-
} catch (error) {
|
|
295
|
-
return {
|
|
296
|
-
success: false,
|
|
297
|
-
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
try {
|
|
301
|
-
const value = evaluateDefault();
|
|
302
|
-
return {
|
|
303
|
-
success: true,
|
|
304
|
-
value
|
|
305
|
-
};
|
|
306
|
-
} catch (error) {
|
|
307
|
-
return {
|
|
308
|
-
success: false,
|
|
309
|
-
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
};
|
|
313
|
-
return require_mode_dispatch.mapModeValue(parser.$mode, innerResult, handleInnerResult);
|
|
314
|
-
}
|
|
315
|
-
if (require_dependency.isWrappedDependencySource(parser)) try {
|
|
316
|
-
const value = evaluateDefault();
|
|
317
|
-
const pendingState = parser[require_dependency.wrappedDependencySourceMarker];
|
|
318
|
-
return require_dependency.createDependencySourceState({
|
|
319
|
-
success: true,
|
|
320
|
-
value
|
|
321
|
-
}, pendingState[require_dependency.dependencyId]);
|
|
322
|
-
} catch (error) {
|
|
323
|
-
return {
|
|
324
|
-
success: false,
|
|
325
|
-
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
326
|
-
};
|
|
327
|
-
}
|
|
328
375
|
if (typeof parser.shouldDeferCompletion === "function" && state != null && typeof state === "object") {
|
|
329
|
-
const
|
|
376
|
+
const innerState = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
377
|
+
const innerResult = require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerState, exec), async () => await parser.complete(innerState, exec));
|
|
330
378
|
return innerResult;
|
|
331
379
|
}
|
|
332
380
|
try {
|
|
@@ -342,52 +390,8 @@ function withDefault(parser, defaultValue, options) {
|
|
|
342
390
|
};
|
|
343
391
|
}
|
|
344
392
|
}
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
const innerResult = require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(state, exec), () => parser.complete(state, exec));
|
|
348
|
-
const handleInnerResult = (res) => {
|
|
349
|
-
if (require_dependency.isDependencySourceState(res)) try {
|
|
350
|
-
const value = evaluateDefault();
|
|
351
|
-
return require_dependency.createDependencySourceState({
|
|
352
|
-
success: true,
|
|
353
|
-
value
|
|
354
|
-
}, res[require_dependency.dependencyId]);
|
|
355
|
-
} catch (error) {
|
|
356
|
-
return {
|
|
357
|
-
success: false,
|
|
358
|
-
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
try {
|
|
362
|
-
const value = evaluateDefault();
|
|
363
|
-
return {
|
|
364
|
-
success: true,
|
|
365
|
-
value
|
|
366
|
-
};
|
|
367
|
-
} catch (error) {
|
|
368
|
-
return {
|
|
369
|
-
success: false,
|
|
370
|
-
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
371
|
-
};
|
|
372
|
-
}
|
|
373
|
-
};
|
|
374
|
-
return require_mode_dispatch.mapModeValue(parser.$mode, innerResult, handleInnerResult);
|
|
375
|
-
}
|
|
376
|
-
try {
|
|
377
|
-
const value = evaluateDefault();
|
|
378
|
-
return require_dependency.createDependencySourceState({
|
|
379
|
-
success: true,
|
|
380
|
-
value
|
|
381
|
-
}, state[0][require_dependency.dependencyId]);
|
|
382
|
-
} catch (error) {
|
|
383
|
-
return {
|
|
384
|
-
success: false,
|
|
385
|
-
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
const innerElement = require_annotations.getAnnotations(state) != null && state[0] != null && typeof state[0] === "object" ? require_annotations.inheritAnnotations(state, state[0]) : state[0];
|
|
390
|
-
return require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerElement, exec), () => parser.complete(innerElement, exec));
|
|
393
|
+
const innerElement = normalizeOptionalLikeInnerState(state, parser.initialState);
|
|
394
|
+
return require_mode_dispatch.dispatchByMode(parser.$mode, () => syncParser.complete(innerElement, exec), async () => await parser.complete(innerElement, exec));
|
|
391
395
|
},
|
|
392
396
|
suggest(context, prefix) {
|
|
393
397
|
return require_mode_dispatch.dispatchIterableByMode(parser.$mode, () => suggestSync(context, prefix), () => suggestAsync(context, prefix));
|
|
@@ -561,15 +565,22 @@ function map(parser, transform) {
|
|
|
561
565
|
};
|
|
562
566
|
});
|
|
563
567
|
};
|
|
564
|
-
const dependencyMarkers = require_dependency.isWrappedDependencySource(parser) ? {
|
|
565
|
-
[require_dependency.wrappedDependencySourceMarker]: parser[require_dependency.wrappedDependencySourceMarker],
|
|
566
|
-
[require_dependency.transformsDependencyValueMarker]: true
|
|
567
|
-
} : {};
|
|
568
568
|
const mappedParser = {
|
|
569
569
|
...parser,
|
|
570
570
|
$valueType: [],
|
|
571
571
|
complete,
|
|
572
|
-
|
|
572
|
+
getSuggestRuntimeNodes(state, path) {
|
|
573
|
+
if (mappedParser.dependencyMetadata?.source != null) return [{
|
|
574
|
+
path,
|
|
575
|
+
parser: mappedParser,
|
|
576
|
+
state
|
|
577
|
+
}];
|
|
578
|
+
return parser.getSuggestRuntimeNodes?.(state, path) ?? (parser.dependencyMetadata?.source != null ? [{
|
|
579
|
+
path,
|
|
580
|
+
parser,
|
|
581
|
+
state
|
|
582
|
+
}] : []);
|
|
583
|
+
},
|
|
573
584
|
getDocFragments(state, _defaultValue) {
|
|
574
585
|
return parser.getDocFragments(state, void 0);
|
|
575
586
|
}
|
|
@@ -616,7 +627,7 @@ function map(parser, transform) {
|
|
|
616
627
|
...composed.derived,
|
|
617
628
|
replayParse: (rawInput, depValues) => {
|
|
618
629
|
const result = innerReplay(rawInput, depValues);
|
|
619
|
-
return result
|
|
630
|
+
return isPromiseLike(result) ? result.then(applyMappedReplay) : applyMappedReplay(result);
|
|
620
631
|
}
|
|
621
632
|
}
|
|
622
633
|
};
|
|
@@ -646,7 +657,9 @@ function multiple(parser, options = {}) {
|
|
|
646
657
|
const unwrapInjectedWrapper = require_annotations.unwrapInjectedAnnotationWrapper;
|
|
647
658
|
const completeSyncWithUnwrappedFallback = (state, exec) => {
|
|
648
659
|
try {
|
|
649
|
-
|
|
660
|
+
const result = syncParser.complete(state, exec);
|
|
661
|
+
if (!result.success && require_annotations.isInjectedAnnotationWrapper(state)) return syncParser.complete(unwrapInjectedWrapper(state), exec);
|
|
662
|
+
return result;
|
|
650
663
|
} catch (error) {
|
|
651
664
|
if (!require_annotations.isInjectedAnnotationWrapper(state)) throw error;
|
|
652
665
|
return syncParser.complete(unwrapInjectedWrapper(state), exec);
|
|
@@ -670,7 +683,9 @@ function multiple(parser, options = {}) {
|
|
|
670
683
|
};
|
|
671
684
|
const completeAsyncWithUnwrappedFallback = async (state, exec) => {
|
|
672
685
|
try {
|
|
673
|
-
|
|
686
|
+
const result = await parser.complete(state, exec);
|
|
687
|
+
if (!result.success && require_annotations.isInjectedAnnotationWrapper(state)) return await parser.complete(unwrapInjectedWrapper(state), exec);
|
|
688
|
+
return result;
|
|
674
689
|
} catch (error) {
|
|
675
690
|
if (!require_annotations.isInjectedAnnotationWrapper(state)) throw error;
|
|
676
691
|
return await parser.complete(unwrapInjectedWrapper(state), exec);
|
|
@@ -692,56 +707,133 @@ function multiple(parser, options = {}) {
|
|
|
692
707
|
});
|
|
693
708
|
}
|
|
694
709
|
};
|
|
710
|
+
const getInnerSuggestRuntimeNodes = (state, path) => parser.getSuggestRuntimeNodes?.(state, path) ?? (parser.dependencyMetadata?.source != null ? [{
|
|
711
|
+
path,
|
|
712
|
+
parser,
|
|
713
|
+
state
|
|
714
|
+
}] : []);
|
|
695
715
|
const parseSync = (context) => {
|
|
696
|
-
|
|
697
|
-
const
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
716
|
+
const currentItemState = context.state.at(-1);
|
|
717
|
+
const canExtendCurrent = currentItemState != null && !isTerminalMultipleItemState(currentItemState);
|
|
718
|
+
const canOpenFreshItem = context.state.length < max;
|
|
719
|
+
if (!canExtendCurrent && !canOpenFreshItem) return {
|
|
720
|
+
success: true,
|
|
721
|
+
next: context,
|
|
722
|
+
consumed: []
|
|
723
|
+
};
|
|
724
|
+
let added = !canExtendCurrent;
|
|
725
|
+
let itemIndex = canExtendCurrent ? context.state.length - 1 : context.state.length;
|
|
726
|
+
const currentItemStateWithAnnotations = canExtendCurrent ? currentItemState : require_annotations.inheritAnnotations(context.state, syncParser.initialState);
|
|
727
|
+
let result = parseSyncWithUnwrappedFallback(withChildContext(context, itemIndex, currentItemStateWithAnnotations));
|
|
728
|
+
if (!result.success) if (!added && canOpenFreshItem && result.consumed === 0) {
|
|
703
729
|
const nextInitialState = require_annotations.inheritAnnotations(context.state, syncParser.initialState);
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
state: nextInitialState
|
|
707
|
-
});
|
|
730
|
+
itemIndex = context.state.length;
|
|
731
|
+
result = parseSyncWithUnwrappedFallback(withChildContext(context, itemIndex, nextInitialState));
|
|
708
732
|
if (!result.success) return result;
|
|
709
733
|
added = true;
|
|
710
734
|
} else return result;
|
|
735
|
+
const mergedExec = mergeChildExec(context.exec, result.next.exec);
|
|
736
|
+
if (added && result.consumed.length === 0 && result.next.optionsTerminated === context.optionsTerminated && isUnstartedMultipleItemState(result.next.state, currentItemStateWithAnnotations)) return {
|
|
737
|
+
success: true,
|
|
738
|
+
next: {
|
|
739
|
+
...result.next,
|
|
740
|
+
state: context.state,
|
|
741
|
+
...mergedExec != null ? {
|
|
742
|
+
trace: mergedExec.trace,
|
|
743
|
+
exec: mergedExec,
|
|
744
|
+
dependencyRegistry: mergedExec.dependencyRegistry
|
|
745
|
+
} : {}
|
|
746
|
+
},
|
|
747
|
+
consumed: result.consumed
|
|
748
|
+
};
|
|
711
749
|
const itemAnnotationSource = added ? context.state : currentItemStateWithAnnotations;
|
|
750
|
+
if (result.next.state === currentItemStateWithAnnotations && result.consumed.length > 0 && (!added || result.next.optionsTerminated !== context.optionsTerminated)) return {
|
|
751
|
+
success: true,
|
|
752
|
+
next: {
|
|
753
|
+
...result.next,
|
|
754
|
+
state: context.state,
|
|
755
|
+
...mergedExec != null ? {
|
|
756
|
+
trace: mergedExec.trace,
|
|
757
|
+
exec: mergedExec,
|
|
758
|
+
dependencyRegistry: mergedExec.dependencyRegistry
|
|
759
|
+
} : {}
|
|
760
|
+
},
|
|
761
|
+
consumed: result.consumed
|
|
762
|
+
};
|
|
712
763
|
const nextItemState = require_annotations.inheritAnnotations(itemAnnotationSource, result.next.state);
|
|
713
764
|
return {
|
|
714
765
|
success: true,
|
|
715
766
|
next: {
|
|
716
767
|
...result.next,
|
|
717
|
-
state: require_annotations.annotateFreshArray(context.state, [...added ? context.state : context.state.slice(0, -1), nextItemState])
|
|
768
|
+
state: require_annotations.annotateFreshArray(context.state, [...added ? context.state : context.state.slice(0, -1), nextItemState]),
|
|
769
|
+
...mergedExec != null ? {
|
|
770
|
+
trace: mergedExec.trace,
|
|
771
|
+
exec: mergedExec,
|
|
772
|
+
dependencyRegistry: mergedExec.dependencyRegistry
|
|
773
|
+
} : {}
|
|
718
774
|
},
|
|
719
775
|
consumed: result.consumed
|
|
720
776
|
};
|
|
721
777
|
};
|
|
722
778
|
const parseAsync = async (context) => {
|
|
723
|
-
|
|
724
|
-
const
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
779
|
+
const currentItemState = context.state.at(-1);
|
|
780
|
+
const canExtendCurrent = currentItemState != null && !isTerminalMultipleItemState(currentItemState);
|
|
781
|
+
const canOpenFreshItem = context.state.length < max;
|
|
782
|
+
if (!canExtendCurrent && !canOpenFreshItem) return {
|
|
783
|
+
success: true,
|
|
784
|
+
next: context,
|
|
785
|
+
consumed: []
|
|
786
|
+
};
|
|
787
|
+
let added = !canExtendCurrent;
|
|
788
|
+
let itemIndex = canExtendCurrent ? context.state.length - 1 : context.state.length;
|
|
789
|
+
const currentItemStateWithAnnotations = canExtendCurrent ? currentItemState : require_annotations.inheritAnnotations(context.state, parser.initialState);
|
|
790
|
+
let result = await parseAsyncWithUnwrappedFallback(withChildContext(context, itemIndex, currentItemStateWithAnnotations));
|
|
791
|
+
if (!result.success) if (!added && canOpenFreshItem && result.consumed === 0) {
|
|
730
792
|
const nextInitialState = require_annotations.inheritAnnotations(context.state, parser.initialState);
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
state: nextInitialState
|
|
734
|
-
});
|
|
793
|
+
itemIndex = context.state.length;
|
|
794
|
+
result = await parseAsyncWithUnwrappedFallback(withChildContext(context, itemIndex, nextInitialState));
|
|
735
795
|
if (!result.success) return result;
|
|
736
796
|
added = true;
|
|
737
797
|
} else return result;
|
|
798
|
+
const mergedExec = mergeChildExec(context.exec, result.next.exec);
|
|
799
|
+
if (added && result.consumed.length === 0 && result.next.optionsTerminated === context.optionsTerminated && isUnstartedMultipleItemState(result.next.state, currentItemStateWithAnnotations)) return {
|
|
800
|
+
success: true,
|
|
801
|
+
next: {
|
|
802
|
+
...result.next,
|
|
803
|
+
state: context.state,
|
|
804
|
+
...mergedExec != null ? {
|
|
805
|
+
trace: mergedExec.trace,
|
|
806
|
+
exec: mergedExec,
|
|
807
|
+
dependencyRegistry: mergedExec.dependencyRegistry
|
|
808
|
+
} : {}
|
|
809
|
+
},
|
|
810
|
+
consumed: result.consumed
|
|
811
|
+
};
|
|
738
812
|
const itemAnnotationSource = added ? context.state : currentItemStateWithAnnotations;
|
|
813
|
+
if (result.next.state === currentItemStateWithAnnotations && result.consumed.length > 0 && (!added || result.next.optionsTerminated !== context.optionsTerminated)) return {
|
|
814
|
+
success: true,
|
|
815
|
+
next: {
|
|
816
|
+
...result.next,
|
|
817
|
+
state: context.state,
|
|
818
|
+
...mergedExec != null ? {
|
|
819
|
+
trace: mergedExec.trace,
|
|
820
|
+
exec: mergedExec,
|
|
821
|
+
dependencyRegistry: mergedExec.dependencyRegistry
|
|
822
|
+
} : {}
|
|
823
|
+
},
|
|
824
|
+
consumed: result.consumed
|
|
825
|
+
};
|
|
739
826
|
const nextItemState = require_annotations.inheritAnnotations(itemAnnotationSource, result.next.state);
|
|
740
827
|
return {
|
|
741
828
|
success: true,
|
|
742
829
|
next: {
|
|
743
830
|
...result.next,
|
|
744
|
-
state: require_annotations.annotateFreshArray(context.state, [...added ? context.state : context.state.slice(0, -1), nextItemState])
|
|
831
|
+
state: require_annotations.annotateFreshArray(context.state, [...added ? context.state : context.state.slice(0, -1), nextItemState]),
|
|
832
|
+
...mergedExec != null ? {
|
|
833
|
+
trace: mergedExec.trace,
|
|
834
|
+
exec: mergedExec,
|
|
835
|
+
dependencyRegistry: mergedExec.dependencyRegistry
|
|
836
|
+
} : {}
|
|
745
837
|
},
|
|
746
838
|
consumed: result.consumed
|
|
747
839
|
};
|
|
@@ -759,6 +851,14 @@ function multiple(parser, options = {}) {
|
|
|
759
851
|
leadingNames: parser.leadingNames,
|
|
760
852
|
acceptingAnyToken: min > 0 && (parser.acceptingAnyToken ?? false),
|
|
761
853
|
initialState: [],
|
|
854
|
+
getSuggestRuntimeNodes(state, path) {
|
|
855
|
+
const innerNodes = state.flatMap((item, i) => [...getInnerSuggestRuntimeNodes(item, [...path, i])]);
|
|
856
|
+
return resultParser.dependencyMetadata?.source != null ? [{
|
|
857
|
+
path,
|
|
858
|
+
parser: resultParser,
|
|
859
|
+
state
|
|
860
|
+
}, ...innerNodes] : innerNodes;
|
|
861
|
+
},
|
|
762
862
|
parse(context) {
|
|
763
863
|
return require_mode_dispatch.dispatchByMode(parser.$mode, () => parseSync(context), () => parseAsync(context));
|
|
764
864
|
},
|
|
@@ -768,7 +868,7 @@ function multiple(parser, options = {}) {
|
|
|
768
868
|
const deferredIndices = /* @__PURE__ */ new Map();
|
|
769
869
|
let hasDeferred = false;
|
|
770
870
|
for (let i = 0; i < state.length; i++) {
|
|
771
|
-
const valueResult = completeSyncWithUnwrappedFallback(state[i], exec);
|
|
871
|
+
const valueResult = completeSyncWithUnwrappedFallback(state[i], withChildExecPath(exec, i));
|
|
772
872
|
if (valueResult.success) {
|
|
773
873
|
const unwrappedValue = unwrapInjectedWrapper(valueResult.value);
|
|
774
874
|
result.push(unwrappedValue);
|
|
@@ -782,12 +882,11 @@ function multiple(parser, options = {}) {
|
|
|
782
882
|
}
|
|
783
883
|
return validateMultipleResult(result, deferredIndices, hasDeferred);
|
|
784
884
|
}, async () => {
|
|
785
|
-
const results = await Promise.all(state.map((s) => completeAsyncWithUnwrappedFallback(s, exec)));
|
|
786
885
|
const values = [];
|
|
787
886
|
const deferredIndices = /* @__PURE__ */ new Map();
|
|
788
887
|
let hasDeferred = false;
|
|
789
|
-
for (let i = 0; i <
|
|
790
|
-
const valueResult =
|
|
888
|
+
for (let i = 0; i < state.length; i++) {
|
|
889
|
+
const valueResult = await completeAsyncWithUnwrappedFallback(state[i], withChildExecPath(exec, i));
|
|
791
890
|
if (valueResult.success) {
|
|
792
891
|
const unwrappedValue = unwrapInjectedWrapper(valueResult.value);
|
|
793
892
|
values.push(unwrappedValue);
|
|
@@ -803,18 +902,33 @@ function multiple(parser, options = {}) {
|
|
|
803
902
|
});
|
|
804
903
|
},
|
|
805
904
|
suggest(context, prefix) {
|
|
806
|
-
const
|
|
807
|
-
const
|
|
905
|
+
const currentItemState = context.state.at(-1);
|
|
906
|
+
const canExtendCurrent = currentItemState != null && !isTerminalMultipleItemState(currentItemState);
|
|
907
|
+
const canOpenNew = context.state.length < max;
|
|
908
|
+
if (!canExtendCurrent && !canOpenNew) return require_mode_dispatch.dispatchIterableByMode(parser.$mode, function* () {}, async function* () {});
|
|
909
|
+
const itemIndex = canExtendCurrent ? context.state.length - 1 : context.state.length;
|
|
910
|
+
const suggestInitialState = canExtendCurrent ? currentItemState : require_annotations.inheritAnnotations(context.state, parser.initialState);
|
|
808
911
|
const suggestFallbackState = unwrapInjectedWrapper(suggestInitialState);
|
|
809
912
|
const hasSuggestFallbackState = suggestFallbackState !== suggestInitialState;
|
|
810
|
-
|
|
811
|
-
const
|
|
812
|
-
|
|
813
|
-
const
|
|
814
|
-
|
|
913
|
+
const collectSelectedValuesSync = () => {
|
|
914
|
+
const selectedValues = /* @__PURE__ */ new Set();
|
|
915
|
+
for (let i = 0; i < context.state.length; i++) {
|
|
916
|
+
const childContext = withChildContext(context, i, context.state[i]);
|
|
917
|
+
const completed = completeSyncWithUnwrappedFallback(childContext.state, childContext.exec);
|
|
918
|
+
if (completed.success) selectedValues.add(String(unwrapInjectedWrapper(completed.value)));
|
|
815
919
|
}
|
|
816
|
-
|
|
817
|
-
|
|
920
|
+
return selectedValues;
|
|
921
|
+
};
|
|
922
|
+
const collectSelectedValuesAsync = async () => {
|
|
923
|
+
const selectedValues = /* @__PURE__ */ new Set();
|
|
924
|
+
for (let i = 0; i < context.state.length; i++) {
|
|
925
|
+
const childContext = withChildContext(context, i, context.state[i]);
|
|
926
|
+
const completed = await completeAsyncWithUnwrappedFallback(childContext.state, childContext.exec);
|
|
927
|
+
if (completed.success) selectedValues.add(String(unwrapInjectedWrapper(completed.value)));
|
|
928
|
+
}
|
|
929
|
+
return selectedValues;
|
|
930
|
+
};
|
|
931
|
+
const shouldInclude = (selectedValues, suggestion) => {
|
|
818
932
|
if (suggestion.kind === "literal") return !selectedValues.has(suggestion.text);
|
|
819
933
|
return true;
|
|
820
934
|
};
|
|
@@ -835,11 +949,12 @@ function multiple(parser, options = {}) {
|
|
|
835
949
|
]);
|
|
836
950
|
};
|
|
837
951
|
return require_mode_dispatch.dispatchIterableByMode(parser.$mode, function* () {
|
|
952
|
+
const selectedValues = collectSelectedValuesSync();
|
|
838
953
|
const emitted = /* @__PURE__ */ new Set();
|
|
839
954
|
const yieldUnique = function* (suggestions) {
|
|
840
955
|
for (const s of suggestions) {
|
|
841
956
|
const key = suggestionKey(s);
|
|
842
|
-
if (shouldInclude(s) && !emitted.has(key)) {
|
|
957
|
+
if (shouldInclude(selectedValues, s) && !emitted.has(key)) {
|
|
843
958
|
emitted.add(key);
|
|
844
959
|
yield s;
|
|
845
960
|
}
|
|
@@ -847,24 +962,19 @@ function multiple(parser, options = {}) {
|
|
|
847
962
|
};
|
|
848
963
|
let shouldTryFallback = false;
|
|
849
964
|
try {
|
|
850
|
-
yield* yieldUnique(syncParser.suggest(
|
|
851
|
-
...context,
|
|
852
|
-
state: suggestInitialState
|
|
853
|
-
}, prefix));
|
|
965
|
+
yield* yieldUnique(syncParser.suggest(withChildContext(context, itemIndex, suggestInitialState), prefix));
|
|
854
966
|
} catch (error) {
|
|
855
967
|
if (!hasSuggestFallbackState) throw error;
|
|
856
968
|
shouldTryFallback = true;
|
|
857
969
|
}
|
|
858
|
-
if (shouldTryFallback) yield* yieldUnique(syncParser.suggest(
|
|
859
|
-
...context,
|
|
860
|
-
state: suggestFallbackState
|
|
861
|
-
}, prefix));
|
|
970
|
+
if (shouldTryFallback) yield* yieldUnique(syncParser.suggest(withChildContext(context, itemIndex, suggestFallbackState), prefix));
|
|
862
971
|
}, async function* () {
|
|
972
|
+
const selectedValues = await collectSelectedValuesAsync();
|
|
863
973
|
const emitted = /* @__PURE__ */ new Set();
|
|
864
974
|
const yieldUnique = async function* (suggestions) {
|
|
865
975
|
for await (const s of suggestions) {
|
|
866
976
|
const key = suggestionKey(s);
|
|
867
|
-
if (shouldInclude(s) && !emitted.has(key)) {
|
|
977
|
+
if (shouldInclude(selectedValues, s) && !emitted.has(key)) {
|
|
868
978
|
emitted.add(key);
|
|
869
979
|
yield s;
|
|
870
980
|
}
|
|
@@ -872,18 +982,12 @@ function multiple(parser, options = {}) {
|
|
|
872
982
|
};
|
|
873
983
|
let shouldTryFallback = false;
|
|
874
984
|
try {
|
|
875
|
-
yield* yieldUnique(parser.suggest(
|
|
876
|
-
...context,
|
|
877
|
-
state: suggestInitialState
|
|
878
|
-
}, prefix));
|
|
985
|
+
yield* yieldUnique(parser.suggest(withChildContext(context, itemIndex, suggestInitialState), prefix));
|
|
879
986
|
} catch (error) {
|
|
880
987
|
if (!hasSuggestFallbackState) throw error;
|
|
881
988
|
shouldTryFallback = true;
|
|
882
989
|
}
|
|
883
|
-
if (shouldTryFallback) yield* yieldUnique(parser.suggest(
|
|
884
|
-
...context,
|
|
885
|
-
state: suggestFallbackState
|
|
886
|
-
}, prefix));
|
|
990
|
+
if (shouldTryFallback) yield* yieldUnique(parser.suggest(withChildContext(context, itemIndex, suggestFallbackState), prefix));
|
|
887
991
|
});
|
|
888
992
|
},
|
|
889
993
|
getDocFragments(state, defaultValue) {
|
|
@@ -951,6 +1055,33 @@ function multiple(parser, options = {}) {
|
|
|
951
1055
|
enumerable: false
|
|
952
1056
|
});
|
|
953
1057
|
}
|
|
1058
|
+
if (parser.dependencyMetadata?.source != null) {
|
|
1059
|
+
const innerSource = parser.dependencyMetadata.source;
|
|
1060
|
+
Object.defineProperty(resultParser, "dependencyMetadata", {
|
|
1061
|
+
value: {
|
|
1062
|
+
...parser.dependencyMetadata,
|
|
1063
|
+
source: {
|
|
1064
|
+
...innerSource,
|
|
1065
|
+
preservesSourceValue: false,
|
|
1066
|
+
extractSourceValue: (state) => {
|
|
1067
|
+
if (!Array.isArray(state)) return innerSource.extractSourceValue(state);
|
|
1068
|
+
const scan = (index) => {
|
|
1069
|
+
for (let i = index; i >= 0; i--) {
|
|
1070
|
+
const result = innerSource.extractSourceValue(state[i]);
|
|
1071
|
+
if (result == null) continue;
|
|
1072
|
+
if (isPromiseLike(result)) return Promise.resolve(result).then((resolved) => resolved ?? scan(i - 1));
|
|
1073
|
+
return result;
|
|
1074
|
+
}
|
|
1075
|
+
return void 0;
|
|
1076
|
+
};
|
|
1077
|
+
return scan(state.length - 1);
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
},
|
|
1081
|
+
configurable: true,
|
|
1082
|
+
enumerable: false
|
|
1083
|
+
});
|
|
1084
|
+
}
|
|
954
1085
|
return resultParser;
|
|
955
1086
|
}
|
|
956
1087
|
/**
|
|
@@ -1019,6 +1150,13 @@ function nonEmpty(parser) {
|
|
|
1019
1150
|
acceptingAnyToken: parser.acceptingAnyToken,
|
|
1020
1151
|
initialState: parser.initialState,
|
|
1021
1152
|
...typeof parser.shouldDeferCompletion === "function" ? { shouldDeferCompletion: parser.shouldDeferCompletion.bind(parser) } : {},
|
|
1153
|
+
getSuggestRuntimeNodes(state, path) {
|
|
1154
|
+
return parser.getSuggestRuntimeNodes?.(state, path) ?? (parser.dependencyMetadata?.source != null ? [{
|
|
1155
|
+
path,
|
|
1156
|
+
parser,
|
|
1157
|
+
state
|
|
1158
|
+
}] : []);
|
|
1159
|
+
},
|
|
1022
1160
|
parse(context) {
|
|
1023
1161
|
return require_mode_dispatch.dispatchByMode(parser.$mode, () => parseSync(context), () => parseAsync(context));
|
|
1024
1162
|
},
|