@optique/core 0.10.0-dev.295 → 0.10.0-dev.296
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 +140 -16
- package/dist/constructs.js +140 -16
- package/dist/dependency.cjs +86 -7
- package/dist/dependency.d.cts +23 -1
- package/dist/dependency.d.ts +23 -1
- package/dist/dependency.js +85 -7
- package/dist/index.cjs +2 -0
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/modifiers.cjs +133 -27
- package/dist/modifiers.js +134 -28
- package/package.json +1 -1
package/dist/constructs.cjs
CHANGED
|
@@ -243,11 +243,38 @@ function or(...args) {
|
|
|
243
243
|
state: context.state == null || context.state[0] !== i || !context.state[1].success ? parser.initialState : context.state[1].next.state
|
|
244
244
|
});
|
|
245
245
|
if (result.success && result.consumed.length > 0) {
|
|
246
|
-
if (context.state?.[0] !== i && context.state?.[1].success)
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
246
|
+
if (context.state?.[0] !== i && context.state?.[1].success) {
|
|
247
|
+
const previouslyConsumed = context.state[1].consumed;
|
|
248
|
+
const checkResult = parser.parse({
|
|
249
|
+
...context,
|
|
250
|
+
buffer: previouslyConsumed,
|
|
251
|
+
state: parser.initialState
|
|
252
|
+
});
|
|
253
|
+
const canConsumeShared = checkResult.success && checkResult.consumed.length === previouslyConsumed.length && checkResult.consumed.every((c, idx) => c === previouslyConsumed[idx]);
|
|
254
|
+
if (!canConsumeShared) return {
|
|
255
|
+
success: false,
|
|
256
|
+
consumed: context.buffer.length - result.next.buffer.length,
|
|
257
|
+
error: require_message.message`${require_message.values(context.state[1].consumed)} and ${require_message.values(result.consumed)} cannot be used together.`
|
|
258
|
+
};
|
|
259
|
+
const replayedResult = parser.parse({
|
|
260
|
+
...context,
|
|
261
|
+
state: checkResult.next.state
|
|
262
|
+
});
|
|
263
|
+
if (!replayedResult.success) return replayedResult;
|
|
264
|
+
return {
|
|
265
|
+
success: true,
|
|
266
|
+
next: {
|
|
267
|
+
...context,
|
|
268
|
+
buffer: replayedResult.next.buffer,
|
|
269
|
+
optionsTerminated: replayedResult.next.optionsTerminated,
|
|
270
|
+
state: [i, {
|
|
271
|
+
...replayedResult,
|
|
272
|
+
consumed: [...previouslyConsumed, ...replayedResult.consumed]
|
|
273
|
+
}]
|
|
274
|
+
},
|
|
275
|
+
consumed: replayedResult.consumed
|
|
276
|
+
};
|
|
277
|
+
}
|
|
251
278
|
return {
|
|
252
279
|
success: true,
|
|
253
280
|
next: {
|
|
@@ -276,11 +303,40 @@ function or(...args) {
|
|
|
276
303
|
});
|
|
277
304
|
const result = await resultOrPromise;
|
|
278
305
|
if (result.success && result.consumed.length > 0) {
|
|
279
|
-
if (context.state?.[0] !== i && context.state?.[1].success)
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
306
|
+
if (context.state?.[0] !== i && context.state?.[1].success) {
|
|
307
|
+
const previouslyConsumed = context.state[1].consumed;
|
|
308
|
+
const checkResultOrPromise = parser.parse({
|
|
309
|
+
...context,
|
|
310
|
+
buffer: previouslyConsumed,
|
|
311
|
+
state: parser.initialState
|
|
312
|
+
});
|
|
313
|
+
const checkResult = await checkResultOrPromise;
|
|
314
|
+
const canConsumeShared = checkResult.success && checkResult.consumed.length === previouslyConsumed.length && checkResult.consumed.every((c, idx) => c === previouslyConsumed[idx]);
|
|
315
|
+
if (!canConsumeShared) return {
|
|
316
|
+
success: false,
|
|
317
|
+
consumed: context.buffer.length - result.next.buffer.length,
|
|
318
|
+
error: require_message.message`${require_message.values(context.state[1].consumed)} and ${require_message.values(result.consumed)} cannot be used together.`
|
|
319
|
+
};
|
|
320
|
+
const replayedResultOrPromise = parser.parse({
|
|
321
|
+
...context,
|
|
322
|
+
state: checkResult.next.state
|
|
323
|
+
});
|
|
324
|
+
const replayedResult = await replayedResultOrPromise;
|
|
325
|
+
if (!replayedResult.success) return replayedResult;
|
|
326
|
+
return {
|
|
327
|
+
success: true,
|
|
328
|
+
next: {
|
|
329
|
+
...context,
|
|
330
|
+
buffer: replayedResult.next.buffer,
|
|
331
|
+
optionsTerminated: replayedResult.next.optionsTerminated,
|
|
332
|
+
state: [i, {
|
|
333
|
+
...replayedResult,
|
|
334
|
+
consumed: [...previouslyConsumed, ...replayedResult.consumed]
|
|
335
|
+
}]
|
|
336
|
+
},
|
|
337
|
+
consumed: replayedResult.consumed
|
|
338
|
+
};
|
|
339
|
+
}
|
|
284
340
|
return {
|
|
285
341
|
success: true,
|
|
286
342
|
next: {
|
|
@@ -863,7 +919,8 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
863
919
|
} else if (fieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
864
920
|
const pendingState = fieldParser[require_dependency.WrappedDependencySourceMarker];
|
|
865
921
|
const completed = fieldParser.complete([pendingState]);
|
|
866
|
-
preCompletedState[fieldKey] = completed;
|
|
922
|
+
if (require_dependency.isDependencySourceState(completed)) preCompletedState[fieldKey] = completed;
|
|
923
|
+
else preCompletedState[fieldKey] = fieldState;
|
|
867
924
|
} else preCompletedState[fieldKey] = fieldState;
|
|
868
925
|
}
|
|
869
926
|
const resolvedState = resolveDeferredParseStates(preCompletedState);
|
|
@@ -912,7 +969,8 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
912
969
|
} else if (fieldState === void 0 && require_dependency.isWrappedDependencySource(fieldParser)) {
|
|
913
970
|
const pendingState = fieldParser[require_dependency.WrappedDependencySourceMarker];
|
|
914
971
|
const completed = await fieldParser.complete([pendingState]);
|
|
915
|
-
preCompletedState[fieldKey] = completed;
|
|
972
|
+
if (require_dependency.isDependencySourceState(completed)) preCompletedState[fieldKey] = completed;
|
|
973
|
+
else preCompletedState[fieldKey] = fieldState;
|
|
916
974
|
} else preCompletedState[fieldKey] = fieldState;
|
|
917
975
|
}
|
|
918
976
|
const resolvedState = await resolveDeferredParseStatesAsync(preCompletedState);
|
|
@@ -1162,10 +1220,43 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1162
1220
|
},
|
|
1163
1221
|
complete(state) {
|
|
1164
1222
|
if (!isAsync) {
|
|
1165
|
-
const result = [];
|
|
1166
1223
|
const stateArray = state;
|
|
1224
|
+
const preCompletedState = [];
|
|
1167
1225
|
for (let i = 0; i < syncParsers.length; i++) {
|
|
1168
|
-
const
|
|
1226
|
+
const elementState = stateArray[i];
|
|
1227
|
+
const elementParser = syncParsers[i];
|
|
1228
|
+
if (Array.isArray(elementState) && elementState.length === 1 && require_dependency.isPendingDependencySourceState(elementState[0])) {
|
|
1229
|
+
const completed = elementParser.complete(elementState);
|
|
1230
|
+
preCompletedState[i] = completed;
|
|
1231
|
+
} else if (elementState === void 0 && require_dependency.isPendingDependencySourceState(elementParser.initialState)) {
|
|
1232
|
+
const completed = elementParser.complete([elementParser.initialState]);
|
|
1233
|
+
preCompletedState[i] = completed;
|
|
1234
|
+
} else if (elementState === void 0 && require_dependency.isWrappedDependencySource(elementParser)) {
|
|
1235
|
+
const pendingState = elementParser[require_dependency.WrappedDependencySourceMarker];
|
|
1236
|
+
const completed = elementParser.complete([pendingState]);
|
|
1237
|
+
preCompletedState[i] = completed;
|
|
1238
|
+
} else preCompletedState[i] = elementState;
|
|
1239
|
+
}
|
|
1240
|
+
const resolvedState = resolveDeferredParseStates(preCompletedState);
|
|
1241
|
+
const resolvedArray = resolvedState;
|
|
1242
|
+
const result = [];
|
|
1243
|
+
for (let i = 0; i < syncParsers.length; i++) {
|
|
1244
|
+
const elementResolvedState = resolvedArray[i];
|
|
1245
|
+
const elementParser = syncParsers[i];
|
|
1246
|
+
const originalElementState = stateArray[i];
|
|
1247
|
+
const wasPreCompletedCase1 = Array.isArray(originalElementState) && originalElementState.length === 1 && require_dependency.isPendingDependencySourceState(originalElementState[0]);
|
|
1248
|
+
const wasPreCompletedCase2 = originalElementState === void 0 && require_dependency.isPendingDependencySourceState(elementParser.initialState);
|
|
1249
|
+
const wasPreCompletedCase3 = originalElementState === void 0 && require_dependency.isWrappedDependencySource(elementParser);
|
|
1250
|
+
if (require_dependency.isDependencySourceState(elementResolvedState) && (wasPreCompletedCase1 || wasPreCompletedCase2 || wasPreCompletedCase3)) {
|
|
1251
|
+
const depResult = elementResolvedState.result;
|
|
1252
|
+
if (depResult.success) result[i] = depResult.value;
|
|
1253
|
+
else return {
|
|
1254
|
+
success: false,
|
|
1255
|
+
error: depResult.error
|
|
1256
|
+
};
|
|
1257
|
+
continue;
|
|
1258
|
+
}
|
|
1259
|
+
const valueResult = elementParser.complete(elementResolvedState);
|
|
1169
1260
|
if (valueResult.success) result[i] = valueResult.value;
|
|
1170
1261
|
else return {
|
|
1171
1262
|
success: false,
|
|
@@ -1178,10 +1269,43 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1178
1269
|
};
|
|
1179
1270
|
}
|
|
1180
1271
|
return (async () => {
|
|
1181
|
-
const result = [];
|
|
1182
1272
|
const stateArray = state;
|
|
1273
|
+
const preCompletedState = [];
|
|
1274
|
+
for (let i = 0; i < parsers.length; i++) {
|
|
1275
|
+
const elementState = stateArray[i];
|
|
1276
|
+
const elementParser = parsers[i];
|
|
1277
|
+
if (Array.isArray(elementState) && elementState.length === 1 && require_dependency.isPendingDependencySourceState(elementState[0])) {
|
|
1278
|
+
const completed = await elementParser.complete(elementState);
|
|
1279
|
+
preCompletedState[i] = completed;
|
|
1280
|
+
} else if (elementState === void 0 && require_dependency.isPendingDependencySourceState(elementParser.initialState)) {
|
|
1281
|
+
const completed = await elementParser.complete([elementParser.initialState]);
|
|
1282
|
+
preCompletedState[i] = completed;
|
|
1283
|
+
} else if (elementState === void 0 && require_dependency.isWrappedDependencySource(elementParser)) {
|
|
1284
|
+
const pendingState = elementParser[require_dependency.WrappedDependencySourceMarker];
|
|
1285
|
+
const completed = await elementParser.complete([pendingState]);
|
|
1286
|
+
preCompletedState[i] = completed;
|
|
1287
|
+
} else preCompletedState[i] = elementState;
|
|
1288
|
+
}
|
|
1289
|
+
const resolvedState = await resolveDeferredParseStatesAsync(preCompletedState);
|
|
1290
|
+
const resolvedArray = resolvedState;
|
|
1291
|
+
const result = [];
|
|
1183
1292
|
for (let i = 0; i < parsers.length; i++) {
|
|
1184
|
-
const
|
|
1293
|
+
const elementResolvedState = resolvedArray[i];
|
|
1294
|
+
const elementParser = parsers[i];
|
|
1295
|
+
const originalElementState = stateArray[i];
|
|
1296
|
+
const wasPreCompletedCase1 = Array.isArray(originalElementState) && originalElementState.length === 1 && require_dependency.isPendingDependencySourceState(originalElementState[0]);
|
|
1297
|
+
const wasPreCompletedCase2 = originalElementState === void 0 && require_dependency.isPendingDependencySourceState(elementParser.initialState);
|
|
1298
|
+
const wasPreCompletedCase3 = originalElementState === void 0 && require_dependency.isWrappedDependencySource(elementParser);
|
|
1299
|
+
if (require_dependency.isDependencySourceState(elementResolvedState) && (wasPreCompletedCase1 || wasPreCompletedCase2 || wasPreCompletedCase3)) {
|
|
1300
|
+
const depResult = elementResolvedState.result;
|
|
1301
|
+
if (depResult.success) result[i] = depResult.value;
|
|
1302
|
+
else return {
|
|
1303
|
+
success: false,
|
|
1304
|
+
error: depResult.error
|
|
1305
|
+
};
|
|
1306
|
+
continue;
|
|
1307
|
+
}
|
|
1308
|
+
const valueResult = await elementParser.complete(elementResolvedState);
|
|
1185
1309
|
if (valueResult.success) result[i] = valueResult.value;
|
|
1186
1310
|
else return {
|
|
1187
1311
|
success: false,
|
package/dist/constructs.js
CHANGED
|
@@ -243,11 +243,38 @@ function or(...args) {
|
|
|
243
243
|
state: context.state == null || context.state[0] !== i || !context.state[1].success ? parser.initialState : context.state[1].next.state
|
|
244
244
|
});
|
|
245
245
|
if (result.success && result.consumed.length > 0) {
|
|
246
|
-
if (context.state?.[0] !== i && context.state?.[1].success)
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
246
|
+
if (context.state?.[0] !== i && context.state?.[1].success) {
|
|
247
|
+
const previouslyConsumed = context.state[1].consumed;
|
|
248
|
+
const checkResult = parser.parse({
|
|
249
|
+
...context,
|
|
250
|
+
buffer: previouslyConsumed,
|
|
251
|
+
state: parser.initialState
|
|
252
|
+
});
|
|
253
|
+
const canConsumeShared = checkResult.success && checkResult.consumed.length === previouslyConsumed.length && checkResult.consumed.every((c, idx) => c === previouslyConsumed[idx]);
|
|
254
|
+
if (!canConsumeShared) return {
|
|
255
|
+
success: false,
|
|
256
|
+
consumed: context.buffer.length - result.next.buffer.length,
|
|
257
|
+
error: message`${values(context.state[1].consumed)} and ${values(result.consumed)} cannot be used together.`
|
|
258
|
+
};
|
|
259
|
+
const replayedResult = parser.parse({
|
|
260
|
+
...context,
|
|
261
|
+
state: checkResult.next.state
|
|
262
|
+
});
|
|
263
|
+
if (!replayedResult.success) return replayedResult;
|
|
264
|
+
return {
|
|
265
|
+
success: true,
|
|
266
|
+
next: {
|
|
267
|
+
...context,
|
|
268
|
+
buffer: replayedResult.next.buffer,
|
|
269
|
+
optionsTerminated: replayedResult.next.optionsTerminated,
|
|
270
|
+
state: [i, {
|
|
271
|
+
...replayedResult,
|
|
272
|
+
consumed: [...previouslyConsumed, ...replayedResult.consumed]
|
|
273
|
+
}]
|
|
274
|
+
},
|
|
275
|
+
consumed: replayedResult.consumed
|
|
276
|
+
};
|
|
277
|
+
}
|
|
251
278
|
return {
|
|
252
279
|
success: true,
|
|
253
280
|
next: {
|
|
@@ -276,11 +303,40 @@ function or(...args) {
|
|
|
276
303
|
});
|
|
277
304
|
const result = await resultOrPromise;
|
|
278
305
|
if (result.success && result.consumed.length > 0) {
|
|
279
|
-
if (context.state?.[0] !== i && context.state?.[1].success)
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
306
|
+
if (context.state?.[0] !== i && context.state?.[1].success) {
|
|
307
|
+
const previouslyConsumed = context.state[1].consumed;
|
|
308
|
+
const checkResultOrPromise = parser.parse({
|
|
309
|
+
...context,
|
|
310
|
+
buffer: previouslyConsumed,
|
|
311
|
+
state: parser.initialState
|
|
312
|
+
});
|
|
313
|
+
const checkResult = await checkResultOrPromise;
|
|
314
|
+
const canConsumeShared = checkResult.success && checkResult.consumed.length === previouslyConsumed.length && checkResult.consumed.every((c, idx) => c === previouslyConsumed[idx]);
|
|
315
|
+
if (!canConsumeShared) return {
|
|
316
|
+
success: false,
|
|
317
|
+
consumed: context.buffer.length - result.next.buffer.length,
|
|
318
|
+
error: message`${values(context.state[1].consumed)} and ${values(result.consumed)} cannot be used together.`
|
|
319
|
+
};
|
|
320
|
+
const replayedResultOrPromise = parser.parse({
|
|
321
|
+
...context,
|
|
322
|
+
state: checkResult.next.state
|
|
323
|
+
});
|
|
324
|
+
const replayedResult = await replayedResultOrPromise;
|
|
325
|
+
if (!replayedResult.success) return replayedResult;
|
|
326
|
+
return {
|
|
327
|
+
success: true,
|
|
328
|
+
next: {
|
|
329
|
+
...context,
|
|
330
|
+
buffer: replayedResult.next.buffer,
|
|
331
|
+
optionsTerminated: replayedResult.next.optionsTerminated,
|
|
332
|
+
state: [i, {
|
|
333
|
+
...replayedResult,
|
|
334
|
+
consumed: [...previouslyConsumed, ...replayedResult.consumed]
|
|
335
|
+
}]
|
|
336
|
+
},
|
|
337
|
+
consumed: replayedResult.consumed
|
|
338
|
+
};
|
|
339
|
+
}
|
|
284
340
|
return {
|
|
285
341
|
success: true,
|
|
286
342
|
next: {
|
|
@@ -863,7 +919,8 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
863
919
|
} else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
|
|
864
920
|
const pendingState = fieldParser[WrappedDependencySourceMarker];
|
|
865
921
|
const completed = fieldParser.complete([pendingState]);
|
|
866
|
-
preCompletedState[fieldKey] = completed;
|
|
922
|
+
if (isDependencySourceState(completed)) preCompletedState[fieldKey] = completed;
|
|
923
|
+
else preCompletedState[fieldKey] = fieldState;
|
|
867
924
|
} else preCompletedState[fieldKey] = fieldState;
|
|
868
925
|
}
|
|
869
926
|
const resolvedState = resolveDeferredParseStates(preCompletedState);
|
|
@@ -912,7 +969,8 @@ function object(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
912
969
|
} else if (fieldState === void 0 && isWrappedDependencySource(fieldParser)) {
|
|
913
970
|
const pendingState = fieldParser[WrappedDependencySourceMarker];
|
|
914
971
|
const completed = await fieldParser.complete([pendingState]);
|
|
915
|
-
preCompletedState[fieldKey] = completed;
|
|
972
|
+
if (isDependencySourceState(completed)) preCompletedState[fieldKey] = completed;
|
|
973
|
+
else preCompletedState[fieldKey] = fieldState;
|
|
916
974
|
} else preCompletedState[fieldKey] = fieldState;
|
|
917
975
|
}
|
|
918
976
|
const resolvedState = await resolveDeferredParseStatesAsync(preCompletedState);
|
|
@@ -1162,10 +1220,43 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1162
1220
|
},
|
|
1163
1221
|
complete(state) {
|
|
1164
1222
|
if (!isAsync) {
|
|
1165
|
-
const result = [];
|
|
1166
1223
|
const stateArray = state;
|
|
1224
|
+
const preCompletedState = [];
|
|
1167
1225
|
for (let i = 0; i < syncParsers.length; i++) {
|
|
1168
|
-
const
|
|
1226
|
+
const elementState = stateArray[i];
|
|
1227
|
+
const elementParser = syncParsers[i];
|
|
1228
|
+
if (Array.isArray(elementState) && elementState.length === 1 && isPendingDependencySourceState(elementState[0])) {
|
|
1229
|
+
const completed = elementParser.complete(elementState);
|
|
1230
|
+
preCompletedState[i] = completed;
|
|
1231
|
+
} else if (elementState === void 0 && isPendingDependencySourceState(elementParser.initialState)) {
|
|
1232
|
+
const completed = elementParser.complete([elementParser.initialState]);
|
|
1233
|
+
preCompletedState[i] = completed;
|
|
1234
|
+
} else if (elementState === void 0 && isWrappedDependencySource(elementParser)) {
|
|
1235
|
+
const pendingState = elementParser[WrappedDependencySourceMarker];
|
|
1236
|
+
const completed = elementParser.complete([pendingState]);
|
|
1237
|
+
preCompletedState[i] = completed;
|
|
1238
|
+
} else preCompletedState[i] = elementState;
|
|
1239
|
+
}
|
|
1240
|
+
const resolvedState = resolveDeferredParseStates(preCompletedState);
|
|
1241
|
+
const resolvedArray = resolvedState;
|
|
1242
|
+
const result = [];
|
|
1243
|
+
for (let i = 0; i < syncParsers.length; i++) {
|
|
1244
|
+
const elementResolvedState = resolvedArray[i];
|
|
1245
|
+
const elementParser = syncParsers[i];
|
|
1246
|
+
const originalElementState = stateArray[i];
|
|
1247
|
+
const wasPreCompletedCase1 = Array.isArray(originalElementState) && originalElementState.length === 1 && isPendingDependencySourceState(originalElementState[0]);
|
|
1248
|
+
const wasPreCompletedCase2 = originalElementState === void 0 && isPendingDependencySourceState(elementParser.initialState);
|
|
1249
|
+
const wasPreCompletedCase3 = originalElementState === void 0 && isWrappedDependencySource(elementParser);
|
|
1250
|
+
if (isDependencySourceState(elementResolvedState) && (wasPreCompletedCase1 || wasPreCompletedCase2 || wasPreCompletedCase3)) {
|
|
1251
|
+
const depResult = elementResolvedState.result;
|
|
1252
|
+
if (depResult.success) result[i] = depResult.value;
|
|
1253
|
+
else return {
|
|
1254
|
+
success: false,
|
|
1255
|
+
error: depResult.error
|
|
1256
|
+
};
|
|
1257
|
+
continue;
|
|
1258
|
+
}
|
|
1259
|
+
const valueResult = elementParser.complete(elementResolvedState);
|
|
1169
1260
|
if (valueResult.success) result[i] = valueResult.value;
|
|
1170
1261
|
else return {
|
|
1171
1262
|
success: false,
|
|
@@ -1178,10 +1269,43 @@ function tuple(labelOrParsers, maybeParsersOrOptions, maybeOptions) {
|
|
|
1178
1269
|
};
|
|
1179
1270
|
}
|
|
1180
1271
|
return (async () => {
|
|
1181
|
-
const result = [];
|
|
1182
1272
|
const stateArray = state;
|
|
1273
|
+
const preCompletedState = [];
|
|
1274
|
+
for (let i = 0; i < parsers.length; i++) {
|
|
1275
|
+
const elementState = stateArray[i];
|
|
1276
|
+
const elementParser = parsers[i];
|
|
1277
|
+
if (Array.isArray(elementState) && elementState.length === 1 && isPendingDependencySourceState(elementState[0])) {
|
|
1278
|
+
const completed = await elementParser.complete(elementState);
|
|
1279
|
+
preCompletedState[i] = completed;
|
|
1280
|
+
} else if (elementState === void 0 && isPendingDependencySourceState(elementParser.initialState)) {
|
|
1281
|
+
const completed = await elementParser.complete([elementParser.initialState]);
|
|
1282
|
+
preCompletedState[i] = completed;
|
|
1283
|
+
} else if (elementState === void 0 && isWrappedDependencySource(elementParser)) {
|
|
1284
|
+
const pendingState = elementParser[WrappedDependencySourceMarker];
|
|
1285
|
+
const completed = await elementParser.complete([pendingState]);
|
|
1286
|
+
preCompletedState[i] = completed;
|
|
1287
|
+
} else preCompletedState[i] = elementState;
|
|
1288
|
+
}
|
|
1289
|
+
const resolvedState = await resolveDeferredParseStatesAsync(preCompletedState);
|
|
1290
|
+
const resolvedArray = resolvedState;
|
|
1291
|
+
const result = [];
|
|
1183
1292
|
for (let i = 0; i < parsers.length; i++) {
|
|
1184
|
-
const
|
|
1293
|
+
const elementResolvedState = resolvedArray[i];
|
|
1294
|
+
const elementParser = parsers[i];
|
|
1295
|
+
const originalElementState = stateArray[i];
|
|
1296
|
+
const wasPreCompletedCase1 = Array.isArray(originalElementState) && originalElementState.length === 1 && isPendingDependencySourceState(originalElementState[0]);
|
|
1297
|
+
const wasPreCompletedCase2 = originalElementState === void 0 && isPendingDependencySourceState(elementParser.initialState);
|
|
1298
|
+
const wasPreCompletedCase3 = originalElementState === void 0 && isWrappedDependencySource(elementParser);
|
|
1299
|
+
if (isDependencySourceState(elementResolvedState) && (wasPreCompletedCase1 || wasPreCompletedCase2 || wasPreCompletedCase3)) {
|
|
1300
|
+
const depResult = elementResolvedState.result;
|
|
1301
|
+
if (depResult.success) result[i] = depResult.value;
|
|
1302
|
+
else return {
|
|
1303
|
+
success: false,
|
|
1304
|
+
error: depResult.error
|
|
1305
|
+
};
|
|
1306
|
+
continue;
|
|
1307
|
+
}
|
|
1308
|
+
const valueResult = await elementParser.complete(elementResolvedState);
|
|
1185
1309
|
if (valueResult.success) result[i] = valueResult.value;
|
|
1186
1310
|
else return {
|
|
1187
1311
|
success: false,
|
package/dist/dependency.cjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const require_message = require('./message.cjs');
|
|
1
2
|
|
|
2
3
|
//#region src/dependency.ts
|
|
3
4
|
/**
|
|
@@ -200,7 +201,16 @@ function createSyncDerivedFromParser(sourceId, options) {
|
|
|
200
201
|
return derivedParser.parse(input);
|
|
201
202
|
},
|
|
202
203
|
[ParseWithDependency](input, dependencyValue) {
|
|
203
|
-
|
|
204
|
+
let derivedParser;
|
|
205
|
+
try {
|
|
206
|
+
derivedParser = options.factory(...dependencyValue);
|
|
207
|
+
} catch (e) {
|
|
208
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
209
|
+
return {
|
|
210
|
+
success: false,
|
|
211
|
+
error: require_message.message`Factory error: ${msg}`
|
|
212
|
+
};
|
|
213
|
+
}
|
|
204
214
|
return derivedParser.parse(input);
|
|
205
215
|
},
|
|
206
216
|
format(value) {
|
|
@@ -233,7 +243,16 @@ function createAsyncDerivedFromParserFromAsyncFactory(sourceId, options) {
|
|
|
233
243
|
return derivedParser.parse(input);
|
|
234
244
|
},
|
|
235
245
|
[ParseWithDependency](input, dependencyValue) {
|
|
236
|
-
|
|
246
|
+
let derivedParser;
|
|
247
|
+
try {
|
|
248
|
+
derivedParser = options.factory(...dependencyValue);
|
|
249
|
+
} catch (e) {
|
|
250
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
251
|
+
return Promise.resolve({
|
|
252
|
+
success: false,
|
|
253
|
+
error: require_message.message`Factory error: ${msg}`
|
|
254
|
+
});
|
|
255
|
+
}
|
|
237
256
|
return derivedParser.parse(input);
|
|
238
257
|
},
|
|
239
258
|
format(value) {
|
|
@@ -266,7 +285,16 @@ function createAsyncDerivedFromParserFromSyncFactory(sourceId, options) {
|
|
|
266
285
|
return Promise.resolve(derivedParser.parse(input));
|
|
267
286
|
},
|
|
268
287
|
[ParseWithDependency](input, dependencyValue) {
|
|
269
|
-
|
|
288
|
+
let derivedParser;
|
|
289
|
+
try {
|
|
290
|
+
derivedParser = options.factory(...dependencyValue);
|
|
291
|
+
} catch (e) {
|
|
292
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
293
|
+
return Promise.resolve({
|
|
294
|
+
success: false,
|
|
295
|
+
error: require_message.message`Factory error: ${msg}`
|
|
296
|
+
});
|
|
297
|
+
}
|
|
270
298
|
return Promise.resolve(derivedParser.parse(input));
|
|
271
299
|
},
|
|
272
300
|
format(value) {
|
|
@@ -311,7 +339,16 @@ function createSyncDerivedParser(sourceId, options) {
|
|
|
311
339
|
return derivedParser.parse(input);
|
|
312
340
|
},
|
|
313
341
|
[ParseWithDependency](input, dependencyValue) {
|
|
314
|
-
|
|
342
|
+
let derivedParser;
|
|
343
|
+
try {
|
|
344
|
+
derivedParser = options.factory(dependencyValue);
|
|
345
|
+
} catch (e) {
|
|
346
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
347
|
+
return {
|
|
348
|
+
success: false,
|
|
349
|
+
error: require_message.message`Factory error: ${msg}`
|
|
350
|
+
};
|
|
351
|
+
}
|
|
315
352
|
return derivedParser.parse(input);
|
|
316
353
|
},
|
|
317
354
|
format(value) {
|
|
@@ -342,7 +379,16 @@ function createAsyncDerivedParserFromAsyncFactory(sourceId, options) {
|
|
|
342
379
|
return derivedParser.parse(input);
|
|
343
380
|
},
|
|
344
381
|
[ParseWithDependency](input, dependencyValue) {
|
|
345
|
-
|
|
382
|
+
let derivedParser;
|
|
383
|
+
try {
|
|
384
|
+
derivedParser = options.factory(dependencyValue);
|
|
385
|
+
} catch (e) {
|
|
386
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
387
|
+
return Promise.resolve({
|
|
388
|
+
success: false,
|
|
389
|
+
error: require_message.message`Factory error: ${msg}`
|
|
390
|
+
});
|
|
391
|
+
}
|
|
346
392
|
return derivedParser.parse(input);
|
|
347
393
|
},
|
|
348
394
|
format(value) {
|
|
@@ -373,7 +419,16 @@ function createAsyncDerivedParserFromSyncFactory(sourceId, options) {
|
|
|
373
419
|
return Promise.resolve(derivedParser.parse(input));
|
|
374
420
|
},
|
|
375
421
|
[ParseWithDependency](input, dependencyValue) {
|
|
376
|
-
|
|
422
|
+
let derivedParser;
|
|
423
|
+
try {
|
|
424
|
+
derivedParser = options.factory(dependencyValue);
|
|
425
|
+
} catch (e) {
|
|
426
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
427
|
+
return Promise.resolve({
|
|
428
|
+
success: false,
|
|
429
|
+
error: require_message.message`Factory error: ${msg}`
|
|
430
|
+
});
|
|
431
|
+
}
|
|
377
432
|
return Promise.resolve(derivedParser.parse(input));
|
|
378
433
|
},
|
|
379
434
|
format(value) {
|
|
@@ -492,6 +547,28 @@ function createPendingDependencySourceState(dependencyId) {
|
|
|
492
547
|
*/
|
|
493
548
|
const WrappedDependencySourceMarker = Symbol.for("@optique/core/dependency/WrappedDependencySourceMarker");
|
|
494
549
|
/**
|
|
550
|
+
* A unique symbol used to indicate that a wrapper transforms the dependency
|
|
551
|
+
* source value. This is used by withDefault to determine whether its default
|
|
552
|
+
* value should be registered as the dependency value.
|
|
553
|
+
*
|
|
554
|
+
* When a wrapper has this marker set to `true`, it means the wrapper transforms
|
|
555
|
+
* the dependency source value (e.g., via map()), so the wrapper's output is NOT
|
|
556
|
+
* a valid dependency source value.
|
|
557
|
+
*
|
|
558
|
+
* @since 0.10.0
|
|
559
|
+
*/
|
|
560
|
+
const TransformsDependencyValueMarker = Symbol.for("@optique/core/dependency/TransformsDependencyValueMarker");
|
|
561
|
+
/**
|
|
562
|
+
* Checks if a parser transforms the dependency value (has TransformsDependencyValueMarker).
|
|
563
|
+
*
|
|
564
|
+
* @param parser The parser to check.
|
|
565
|
+
* @returns `true` if the parser transforms the dependency value.
|
|
566
|
+
* @since 0.10.0
|
|
567
|
+
*/
|
|
568
|
+
function transformsDependencyValue(parser) {
|
|
569
|
+
return typeof parser === "object" && parser !== null && TransformsDependencyValueMarker in parser && parser[TransformsDependencyValueMarker] === true;
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
495
572
|
* Checks if a parser wraps a dependency source (has WrappedDependencySourceMarker).
|
|
496
573
|
*
|
|
497
574
|
* @param parser The parser to check.
|
|
@@ -576,6 +653,7 @@ exports.DependencySourceStateMarker = DependencySourceStateMarker;
|
|
|
576
653
|
exports.DerivedValueParserMarker = DerivedValueParserMarker;
|
|
577
654
|
exports.ParseWithDependency = ParseWithDependency;
|
|
578
655
|
exports.PendingDependencySourceStateMarker = PendingDependencySourceStateMarker;
|
|
656
|
+
exports.TransformsDependencyValueMarker = TransformsDependencyValueMarker;
|
|
579
657
|
exports.WrappedDependencySourceMarker = WrappedDependencySourceMarker;
|
|
580
658
|
exports.createDeferredParseState = createDeferredParseState;
|
|
581
659
|
exports.createDependencySourceState = createDependencySourceState;
|
|
@@ -590,4 +668,5 @@ exports.isDependencySource = isDependencySource;
|
|
|
590
668
|
exports.isDependencySourceState = isDependencySourceState;
|
|
591
669
|
exports.isDerivedValueParser = isDerivedValueParser;
|
|
592
670
|
exports.isPendingDependencySourceState = isPendingDependencySourceState;
|
|
593
|
-
exports.isWrappedDependencySource = isWrappedDependencySource;
|
|
671
|
+
exports.isWrappedDependencySource = isWrappedDependencySource;
|
|
672
|
+
exports.transformsDependencyValue = transformsDependencyValue;
|
package/dist/dependency.d.cts
CHANGED
|
@@ -602,6 +602,28 @@ declare function createPendingDependencySourceState(dependencyId: symbol): Pendi
|
|
|
602
602
|
* @since 0.10.0
|
|
603
603
|
*/
|
|
604
604
|
declare const WrappedDependencySourceMarker: unique symbol;
|
|
605
|
+
/**
|
|
606
|
+
* A unique symbol used to indicate that a wrapper transforms the dependency
|
|
607
|
+
* source value. This is used by withDefault to determine whether its default
|
|
608
|
+
* value should be registered as the dependency value.
|
|
609
|
+
*
|
|
610
|
+
* When a wrapper has this marker set to `true`, it means the wrapper transforms
|
|
611
|
+
* the dependency source value (e.g., via map()), so the wrapper's output is NOT
|
|
612
|
+
* a valid dependency source value.
|
|
613
|
+
*
|
|
614
|
+
* @since 0.10.0
|
|
615
|
+
*/
|
|
616
|
+
declare const TransformsDependencyValueMarker: unique symbol;
|
|
617
|
+
/**
|
|
618
|
+
* Checks if a parser transforms the dependency value (has TransformsDependencyValueMarker).
|
|
619
|
+
*
|
|
620
|
+
* @param parser The parser to check.
|
|
621
|
+
* @returns `true` if the parser transforms the dependency value.
|
|
622
|
+
* @since 0.10.0
|
|
623
|
+
*/
|
|
624
|
+
declare function transformsDependencyValue(parser: unknown): parser is {
|
|
625
|
+
[TransformsDependencyValueMarker]: true;
|
|
626
|
+
};
|
|
605
627
|
/**
|
|
606
628
|
* Checks if a parser wraps a dependency source (has WrappedDependencySourceMarker).
|
|
607
629
|
*
|
|
@@ -691,4 +713,4 @@ type DependencyError = {
|
|
|
691
713
|
*/
|
|
692
714
|
declare function formatDependencyError(error: DependencyError): Message;
|
|
693
715
|
//#endregion
|
|
694
|
-
export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource };
|
|
716
|
+
export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue };
|
package/dist/dependency.d.ts
CHANGED
|
@@ -602,6 +602,28 @@ declare function createPendingDependencySourceState(dependencyId: symbol): Pendi
|
|
|
602
602
|
* @since 0.10.0
|
|
603
603
|
*/
|
|
604
604
|
declare const WrappedDependencySourceMarker: unique symbol;
|
|
605
|
+
/**
|
|
606
|
+
* A unique symbol used to indicate that a wrapper transforms the dependency
|
|
607
|
+
* source value. This is used by withDefault to determine whether its default
|
|
608
|
+
* value should be registered as the dependency value.
|
|
609
|
+
*
|
|
610
|
+
* When a wrapper has this marker set to `true`, it means the wrapper transforms
|
|
611
|
+
* the dependency source value (e.g., via map()), so the wrapper's output is NOT
|
|
612
|
+
* a valid dependency source value.
|
|
613
|
+
*
|
|
614
|
+
* @since 0.10.0
|
|
615
|
+
*/
|
|
616
|
+
declare const TransformsDependencyValueMarker: unique symbol;
|
|
617
|
+
/**
|
|
618
|
+
* Checks if a parser transforms the dependency value (has TransformsDependencyValueMarker).
|
|
619
|
+
*
|
|
620
|
+
* @param parser The parser to check.
|
|
621
|
+
* @returns `true` if the parser transforms the dependency value.
|
|
622
|
+
* @since 0.10.0
|
|
623
|
+
*/
|
|
624
|
+
declare function transformsDependencyValue(parser: unknown): parser is {
|
|
625
|
+
[TransformsDependencyValueMarker]: true;
|
|
626
|
+
};
|
|
605
627
|
/**
|
|
606
628
|
* Checks if a parser wraps a dependency source (has WrappedDependencySourceMarker).
|
|
607
629
|
*
|
|
@@ -691,4 +713,4 @@ type DependencyError = {
|
|
|
691
713
|
*/
|
|
692
714
|
declare function formatDependencyError(error: DependencyError): Message;
|
|
693
715
|
//#endregion
|
|
694
|
-
export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource };
|
|
716
|
+
export { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue };
|
package/dist/dependency.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { message } from "./message.js";
|
|
2
|
+
|
|
1
3
|
//#region src/dependency.ts
|
|
2
4
|
/**
|
|
3
5
|
* A unique symbol used to identify dependency sources at compile time.
|
|
@@ -199,7 +201,16 @@ function createSyncDerivedFromParser(sourceId, options) {
|
|
|
199
201
|
return derivedParser.parse(input);
|
|
200
202
|
},
|
|
201
203
|
[ParseWithDependency](input, dependencyValue) {
|
|
202
|
-
|
|
204
|
+
let derivedParser;
|
|
205
|
+
try {
|
|
206
|
+
derivedParser = options.factory(...dependencyValue);
|
|
207
|
+
} catch (e) {
|
|
208
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
209
|
+
return {
|
|
210
|
+
success: false,
|
|
211
|
+
error: message`Factory error: ${msg}`
|
|
212
|
+
};
|
|
213
|
+
}
|
|
203
214
|
return derivedParser.parse(input);
|
|
204
215
|
},
|
|
205
216
|
format(value) {
|
|
@@ -232,7 +243,16 @@ function createAsyncDerivedFromParserFromAsyncFactory(sourceId, options) {
|
|
|
232
243
|
return derivedParser.parse(input);
|
|
233
244
|
},
|
|
234
245
|
[ParseWithDependency](input, dependencyValue) {
|
|
235
|
-
|
|
246
|
+
let derivedParser;
|
|
247
|
+
try {
|
|
248
|
+
derivedParser = options.factory(...dependencyValue);
|
|
249
|
+
} catch (e) {
|
|
250
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
251
|
+
return Promise.resolve({
|
|
252
|
+
success: false,
|
|
253
|
+
error: message`Factory error: ${msg}`
|
|
254
|
+
});
|
|
255
|
+
}
|
|
236
256
|
return derivedParser.parse(input);
|
|
237
257
|
},
|
|
238
258
|
format(value) {
|
|
@@ -265,7 +285,16 @@ function createAsyncDerivedFromParserFromSyncFactory(sourceId, options) {
|
|
|
265
285
|
return Promise.resolve(derivedParser.parse(input));
|
|
266
286
|
},
|
|
267
287
|
[ParseWithDependency](input, dependencyValue) {
|
|
268
|
-
|
|
288
|
+
let derivedParser;
|
|
289
|
+
try {
|
|
290
|
+
derivedParser = options.factory(...dependencyValue);
|
|
291
|
+
} catch (e) {
|
|
292
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
293
|
+
return Promise.resolve({
|
|
294
|
+
success: false,
|
|
295
|
+
error: message`Factory error: ${msg}`
|
|
296
|
+
});
|
|
297
|
+
}
|
|
269
298
|
return Promise.resolve(derivedParser.parse(input));
|
|
270
299
|
},
|
|
271
300
|
format(value) {
|
|
@@ -310,7 +339,16 @@ function createSyncDerivedParser(sourceId, options) {
|
|
|
310
339
|
return derivedParser.parse(input);
|
|
311
340
|
},
|
|
312
341
|
[ParseWithDependency](input, dependencyValue) {
|
|
313
|
-
|
|
342
|
+
let derivedParser;
|
|
343
|
+
try {
|
|
344
|
+
derivedParser = options.factory(dependencyValue);
|
|
345
|
+
} catch (e) {
|
|
346
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
347
|
+
return {
|
|
348
|
+
success: false,
|
|
349
|
+
error: message`Factory error: ${msg}`
|
|
350
|
+
};
|
|
351
|
+
}
|
|
314
352
|
return derivedParser.parse(input);
|
|
315
353
|
},
|
|
316
354
|
format(value) {
|
|
@@ -341,7 +379,16 @@ function createAsyncDerivedParserFromAsyncFactory(sourceId, options) {
|
|
|
341
379
|
return derivedParser.parse(input);
|
|
342
380
|
},
|
|
343
381
|
[ParseWithDependency](input, dependencyValue) {
|
|
344
|
-
|
|
382
|
+
let derivedParser;
|
|
383
|
+
try {
|
|
384
|
+
derivedParser = options.factory(dependencyValue);
|
|
385
|
+
} catch (e) {
|
|
386
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
387
|
+
return Promise.resolve({
|
|
388
|
+
success: false,
|
|
389
|
+
error: message`Factory error: ${msg}`
|
|
390
|
+
});
|
|
391
|
+
}
|
|
345
392
|
return derivedParser.parse(input);
|
|
346
393
|
},
|
|
347
394
|
format(value) {
|
|
@@ -372,7 +419,16 @@ function createAsyncDerivedParserFromSyncFactory(sourceId, options) {
|
|
|
372
419
|
return Promise.resolve(derivedParser.parse(input));
|
|
373
420
|
},
|
|
374
421
|
[ParseWithDependency](input, dependencyValue) {
|
|
375
|
-
|
|
422
|
+
let derivedParser;
|
|
423
|
+
try {
|
|
424
|
+
derivedParser = options.factory(dependencyValue);
|
|
425
|
+
} catch (e) {
|
|
426
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
427
|
+
return Promise.resolve({
|
|
428
|
+
success: false,
|
|
429
|
+
error: message`Factory error: ${msg}`
|
|
430
|
+
});
|
|
431
|
+
}
|
|
376
432
|
return Promise.resolve(derivedParser.parse(input));
|
|
377
433
|
},
|
|
378
434
|
format(value) {
|
|
@@ -491,6 +547,28 @@ function createPendingDependencySourceState(dependencyId) {
|
|
|
491
547
|
*/
|
|
492
548
|
const WrappedDependencySourceMarker = Symbol.for("@optique/core/dependency/WrappedDependencySourceMarker");
|
|
493
549
|
/**
|
|
550
|
+
* A unique symbol used to indicate that a wrapper transforms the dependency
|
|
551
|
+
* source value. This is used by withDefault to determine whether its default
|
|
552
|
+
* value should be registered as the dependency value.
|
|
553
|
+
*
|
|
554
|
+
* When a wrapper has this marker set to `true`, it means the wrapper transforms
|
|
555
|
+
* the dependency source value (e.g., via map()), so the wrapper's output is NOT
|
|
556
|
+
* a valid dependency source value.
|
|
557
|
+
*
|
|
558
|
+
* @since 0.10.0
|
|
559
|
+
*/
|
|
560
|
+
const TransformsDependencyValueMarker = Symbol.for("@optique/core/dependency/TransformsDependencyValueMarker");
|
|
561
|
+
/**
|
|
562
|
+
* Checks if a parser transforms the dependency value (has TransformsDependencyValueMarker).
|
|
563
|
+
*
|
|
564
|
+
* @param parser The parser to check.
|
|
565
|
+
* @returns `true` if the parser transforms the dependency value.
|
|
566
|
+
* @since 0.10.0
|
|
567
|
+
*/
|
|
568
|
+
function transformsDependencyValue(parser) {
|
|
569
|
+
return typeof parser === "object" && parser !== null && TransformsDependencyValueMarker in parser && parser[TransformsDependencyValueMarker] === true;
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
494
572
|
* Checks if a parser wraps a dependency source (has WrappedDependencySourceMarker).
|
|
495
573
|
*
|
|
496
574
|
* @param parser The parser to check.
|
|
@@ -566,4 +644,4 @@ function formatDependencyError(error) {
|
|
|
566
644
|
}
|
|
567
645
|
|
|
568
646
|
//#endregion
|
|
569
|
-
export { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceStateMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource };
|
|
647
|
+
export { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceStateMarker, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue };
|
package/dist/index.cjs
CHANGED
|
@@ -23,6 +23,7 @@ exports.ParseWithDependency = require_dependency.ParseWithDependency;
|
|
|
23
23
|
exports.PendingDependencySourceStateMarker = require_dependency.PendingDependencySourceStateMarker;
|
|
24
24
|
exports.RunError = require_facade.RunError;
|
|
25
25
|
exports.RunParserError = require_facade.RunParserError;
|
|
26
|
+
exports.TransformsDependencyValueMarker = require_dependency.TransformsDependencyValueMarker;
|
|
26
27
|
exports.WithDefaultError = require_modifiers.WithDefaultError;
|
|
27
28
|
exports.WrappedDependencySourceMarker = require_dependency.WrappedDependencySourceMarker;
|
|
28
29
|
exports.argument = require_primitives.argument;
|
|
@@ -95,6 +96,7 @@ exports.suggest = require_parser.suggest;
|
|
|
95
96
|
exports.suggestAsync = require_parser.suggestAsync;
|
|
96
97
|
exports.suggestSync = require_parser.suggestSync;
|
|
97
98
|
exports.text = require_message.text;
|
|
99
|
+
exports.transformsDependencyValue = require_dependency.transformsDependencyValue;
|
|
98
100
|
exports.tuple = require_constructs.tuple;
|
|
99
101
|
exports.url = require_valueparser.url;
|
|
100
102
|
exports.uuid = require_valueparser.uuid;
|
package/dist/index.d.cts
CHANGED
|
@@ -5,9 +5,9 @@ import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, Doc
|
|
|
5
5
|
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, FloatOptions, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, choice, float, integer, isValueParser, locale, string, url, uuid } from "./valueparser.cjs";
|
|
6
6
|
import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.cjs";
|
|
7
7
|
import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, optional, withDefault } from "./modifiers.cjs";
|
|
8
|
-
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource } from "./dependency.cjs";
|
|
8
|
+
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue } from "./dependency.cjs";
|
|
9
9
|
import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.cjs";
|
|
10
10
|
import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, ModeValue, Parser, ParserContext, ParserResult, Result, Suggestion, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.cjs";
|
|
11
11
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
|
|
12
12
|
import { RunError, RunOptions, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.cjs";
|
|
13
|
-
export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
|
13
|
+
export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TransformsDependencyValueMarker, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, transformsDependencyValue, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
package/dist/index.d.ts
CHANGED
|
@@ -5,9 +5,9 @@ import { DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, Doc
|
|
|
5
5
|
import { ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, FloatOptions, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, StringOptions, UrlOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, choice, float, integer, isValueParser, locale, string, url, uuid } from "./valueparser.js";
|
|
6
6
|
import { ConditionalErrorOptions, ConditionalOptions, DuplicateOptionError, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, NoMatchContext, ObjectErrorOptions, ObjectOptions, OrErrorOptions, OrOptions, TupleOptions, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
|
|
7
7
|
import { MultipleErrorOptions, MultipleOptions, WithDefaultError, WithDefaultOptions, map, multiple, optional, withDefault } from "./modifiers.js";
|
|
8
|
-
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource } from "./dependency.js";
|
|
8
|
+
import { AnyDependencySource, CombineMode, CombinedDependencyMode, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue } from "./dependency.js";
|
|
9
9
|
import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOptions, FlagErrorOptions, FlagOptions, OptionErrorOptions, OptionOptions, OptionState, PassThroughFormat, PassThroughOptions, argument, command, constant, flag, option, passThrough } from "./primitives.js";
|
|
10
10
|
import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, ModeValue, Parser, ParserContext, ParserResult, Result, Suggestion, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
|
|
11
11
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
12
12
|
import { RunError, RunOptions, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.js";
|
|
13
|
-
export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
|
13
|
+
export { AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseMarker, DeferredParseState, DependencyError, DependencyId, DependencyIds, DependencyMode, DependencyRegistry, DependencySource, DependencySourceMarker, DependencySourceState, DependencySourceStateMarker, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DerivedValueParserMarker, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DuplicateOptionError, FlagErrorOptions, FlagOptions, FloatOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MergeOptions, Message, MessageFormatOptions, MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, ParseWithDependency, Parser, ParserContext, ParserResult, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PendingDependencySourceStateMarker, ResolvedDependency, Result, RunError, RunOptions, RunParserError, ShellCompletion, ShowDefaultOptions, StringOptions, Suggestion, TransformsDependencyValueMarker, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, ValueSetOptions, WithDefaultError, WithDefaultOptions, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, transformsDependencyValue, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { commandLine, envVar, formatMessage, message, metavar, optionName, optionNames, text, value, valueSet, values } from "./message.js";
|
|
2
2
|
import { bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
3
|
-
import { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceStateMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource } from "./dependency.js";
|
|
3
|
+
import { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, ParseWithDependency, PendingDependencySourceStateMarker, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, formatDependencyError, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue } from "./dependency.js";
|
|
4
4
|
import { extractArgumentMetavars, extractCommandNames, extractOptionNames, formatUsage, formatUsageTerm, normalizeUsage } from "./usage.js";
|
|
5
5
|
import { DuplicateOptionError, concat, conditional, group, longestMatch, merge, object, or, tuple } from "./constructs.js";
|
|
6
6
|
import { formatDocPage } from "./doc.js";
|
|
@@ -11,4 +11,4 @@ import { argument, command, constant, flag, option, passThrough } from "./primit
|
|
|
11
11
|
import { getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
|
|
12
12
|
import { RunError, RunParserError, run, runParser, runParserAsync, runParserSync } from "./facade.js";
|
|
13
13
|
|
|
14
|
-
export { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, DuplicateOptionError, ParseWithDependency, PendingDependencySourceStateMarker, RunError, RunParserError, WithDefaultError, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
|
14
|
+
export { DeferredParseMarker, DependencyId, DependencyIds, DependencyRegistry, DependencySourceMarker, DependencySourceStateMarker, DerivedValueParserMarker, DuplicateOptionError, ParseWithDependency, PendingDependencySourceStateMarker, RunError, RunParserError, TransformsDependencyValueMarker, WithDefaultError, WrappedDependencySourceMarker, argument, bash, choice, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, dependency, deriveFrom, deriveFromAsync, deriveFromSync, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getDocPage, getDocPageAsync, getDocPageSync, group, integer, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, locale, longestMatch, map, merge, message, metavar, multiple, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, passThrough, pwsh, run, runParser, runParserAsync, runParserSync, string, suggest, suggestAsync, suggestSync, text, transformsDependencyValue, tuple, url, uuid, value, valueSet, values, withDefault, zsh };
|
package/dist/modifiers.cjs
CHANGED
|
@@ -90,6 +90,11 @@ function optional(parser) {
|
|
|
90
90
|
}, prefix);
|
|
91
91
|
for await (const s of suggestions) yield s;
|
|
92
92
|
}
|
|
93
|
+
const innerHasWrappedDependency = require_dependency.isWrappedDependencySource(parser);
|
|
94
|
+
const innerHasDirectDependency = require_dependency.isPendingDependencySourceState(syncParser.initialState);
|
|
95
|
+
const wrappedDependencyMarker = innerHasWrappedDependency ? { [require_dependency.WrappedDependencySourceMarker]: parser[require_dependency.WrappedDependencySourceMarker] } : innerHasDirectDependency ? { [require_dependency.WrappedDependencySourceMarker]: syncParser.initialState } : {};
|
|
96
|
+
const hasWrappedDependencySource = require_dependency.WrappedDependencySourceMarker in wrappedDependencyMarker;
|
|
97
|
+
const wrappedPendingState = hasWrappedDependencySource ? wrappedDependencyMarker[require_dependency.WrappedDependencySourceMarker] : void 0;
|
|
93
98
|
return {
|
|
94
99
|
$mode: parser.$mode,
|
|
95
100
|
$valueType: [],
|
|
@@ -100,15 +105,32 @@ function optional(parser) {
|
|
|
100
105
|
terms: parser.usage
|
|
101
106
|
}],
|
|
102
107
|
initialState: void 0,
|
|
108
|
+
...wrappedDependencyMarker,
|
|
103
109
|
parse(context) {
|
|
104
110
|
if (isAsync) return parseOptionalStyleAsync(context, parser);
|
|
105
111
|
return parseOptionalStyleSync(context, syncParser);
|
|
106
112
|
},
|
|
107
113
|
complete(state) {
|
|
108
|
-
if (typeof state === "undefined")
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
114
|
+
if (typeof state === "undefined") {
|
|
115
|
+
if (innerHasWrappedDependency && wrappedPendingState) {
|
|
116
|
+
if (!isAsync) return syncParser.complete([wrappedPendingState]);
|
|
117
|
+
return parser.complete([wrappedPendingState]);
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
success: true,
|
|
121
|
+
value: void 0
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (Array.isArray(state) && state.length === 1 && require_dependency.isPendingDependencySourceState(state[0])) {
|
|
125
|
+
if (innerHasWrappedDependency) {
|
|
126
|
+
if (!isAsync) return syncParser.complete(state);
|
|
127
|
+
return parser.complete(state);
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
success: true,
|
|
131
|
+
value: void 0
|
|
132
|
+
};
|
|
133
|
+
}
|
|
112
134
|
if (!isAsync) return syncParser.complete(state[0]);
|
|
113
135
|
return parser.complete(state[0]);
|
|
114
136
|
},
|
|
@@ -178,7 +200,7 @@ function withDefault(parser, defaultValue, options) {
|
|
|
178
200
|
for await (const s of suggestions) yield s;
|
|
179
201
|
}
|
|
180
202
|
const innerInitialState = syncParser.initialState;
|
|
181
|
-
const wrappedDependencyMarker = require_dependency.isPendingDependencySourceState(innerInitialState) ? { [require_dependency.WrappedDependencySourceMarker]: innerInitialState } : {};
|
|
203
|
+
const wrappedDependencyMarker = require_dependency.isPendingDependencySourceState(innerInitialState) ? { [require_dependency.WrappedDependencySourceMarker]: innerInitialState } : require_dependency.isWrappedDependencySource(parser) ? { [require_dependency.WrappedDependencySourceMarker]: parser[require_dependency.WrappedDependencySourceMarker] } : {};
|
|
182
204
|
return {
|
|
183
205
|
$mode: parser.$mode,
|
|
184
206
|
$valueType: [],
|
|
@@ -195,29 +217,108 @@ function withDefault(parser, defaultValue, options) {
|
|
|
195
217
|
return parseOptionalStyleSync(context, syncParser);
|
|
196
218
|
},
|
|
197
219
|
complete(state) {
|
|
198
|
-
if (typeof state === "undefined")
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
220
|
+
if (typeof state === "undefined") {
|
|
221
|
+
if (require_dependency.transformsDependencyValue(parser)) {
|
|
222
|
+
const innerResult = !isAsync ? syncParser.complete(void 0) : parser.complete(void 0);
|
|
223
|
+
const handleInnerResult = (res) => {
|
|
224
|
+
if (require_dependency.isDependencySourceState(res)) try {
|
|
225
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
226
|
+
return require_dependency.createDependencySourceState({
|
|
227
|
+
success: true,
|
|
228
|
+
value
|
|
229
|
+
}, res[require_dependency.DependencyId]);
|
|
230
|
+
} catch (error) {
|
|
231
|
+
return {
|
|
232
|
+
success: false,
|
|
233
|
+
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
238
|
+
return {
|
|
239
|
+
success: true,
|
|
240
|
+
value
|
|
241
|
+
};
|
|
242
|
+
} catch (error) {
|
|
243
|
+
return {
|
|
244
|
+
success: false,
|
|
245
|
+
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
if (innerResult instanceof Promise) return innerResult.then(handleInnerResult);
|
|
250
|
+
return handleInnerResult(innerResult);
|
|
251
|
+
}
|
|
252
|
+
if (require_dependency.isWrappedDependencySource(parser)) try {
|
|
253
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
254
|
+
const pendingState = parser[require_dependency.WrappedDependencySourceMarker];
|
|
255
|
+
return require_dependency.createDependencySourceState({
|
|
256
|
+
success: true,
|
|
257
|
+
value
|
|
258
|
+
}, pendingState[require_dependency.DependencyId]);
|
|
259
|
+
} catch (error) {
|
|
260
|
+
return {
|
|
261
|
+
success: false,
|
|
262
|
+
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
try {
|
|
266
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
267
|
+
return {
|
|
268
|
+
success: true,
|
|
269
|
+
value
|
|
270
|
+
};
|
|
271
|
+
} catch (error) {
|
|
272
|
+
return {
|
|
273
|
+
success: false,
|
|
274
|
+
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
275
|
+
};
|
|
276
|
+
}
|
|
209
277
|
}
|
|
210
|
-
if (require_dependency.isPendingDependencySourceState(state[0]))
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
278
|
+
if (require_dependency.isPendingDependencySourceState(state[0])) {
|
|
279
|
+
if (require_dependency.transformsDependencyValue(parser)) {
|
|
280
|
+
const innerResult = !isAsync ? syncParser.complete(state) : parser.complete(state);
|
|
281
|
+
const handleInnerResult = (res) => {
|
|
282
|
+
if (require_dependency.isDependencySourceState(res)) try {
|
|
283
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
284
|
+
return require_dependency.createDependencySourceState({
|
|
285
|
+
success: true,
|
|
286
|
+
value
|
|
287
|
+
}, res[require_dependency.DependencyId]);
|
|
288
|
+
} catch (error) {
|
|
289
|
+
return {
|
|
290
|
+
success: false,
|
|
291
|
+
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
try {
|
|
295
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
296
|
+
return {
|
|
297
|
+
success: true,
|
|
298
|
+
value
|
|
299
|
+
};
|
|
300
|
+
} catch (error) {
|
|
301
|
+
return {
|
|
302
|
+
success: false,
|
|
303
|
+
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
if (innerResult instanceof Promise) return innerResult.then(handleInnerResult);
|
|
308
|
+
return handleInnerResult(innerResult);
|
|
309
|
+
}
|
|
310
|
+
try {
|
|
311
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
312
|
+
return require_dependency.createDependencySourceState({
|
|
313
|
+
success: true,
|
|
314
|
+
value
|
|
315
|
+
}, state[0][require_dependency.DependencyId]);
|
|
316
|
+
} catch (error) {
|
|
317
|
+
return {
|
|
318
|
+
success: false,
|
|
319
|
+
error: error instanceof WithDefaultError ? error.errorMessage : require_message.message`${require_message.text(String(error))}`
|
|
320
|
+
};
|
|
321
|
+
}
|
|
221
322
|
}
|
|
222
323
|
if (!isAsync) return syncParser.complete(state[0]);
|
|
223
324
|
return parser.complete(state[0]);
|
|
@@ -300,10 +401,15 @@ function map(parser, transform) {
|
|
|
300
401
|
};
|
|
301
402
|
return res;
|
|
302
403
|
};
|
|
404
|
+
const dependencyMarkers = require_dependency.isWrappedDependencySource(parser) ? {
|
|
405
|
+
[require_dependency.WrappedDependencySourceMarker]: parser[require_dependency.WrappedDependencySourceMarker],
|
|
406
|
+
[require_dependency.TransformsDependencyValueMarker]: true
|
|
407
|
+
} : {};
|
|
303
408
|
return {
|
|
304
409
|
...parser,
|
|
305
410
|
$valueType: [],
|
|
306
411
|
complete,
|
|
412
|
+
...dependencyMarkers,
|
|
307
413
|
getDocFragments(state, _defaultValue) {
|
|
308
414
|
return parser.getDocFragments(state, void 0);
|
|
309
415
|
}
|
package/dist/modifiers.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formatMessage, message, text } from "./message.js";
|
|
2
|
-
import { DependencyId, WrappedDependencySourceMarker, createDependencySourceState, isPendingDependencySourceState } from "./dependency.js";
|
|
2
|
+
import { DependencyId, TransformsDependencyValueMarker, WrappedDependencySourceMarker, createDependencySourceState, isDependencySourceState, isPendingDependencySourceState, isWrappedDependencySource, transformsDependencyValue } from "./dependency.js";
|
|
3
3
|
|
|
4
4
|
//#region src/modifiers.ts
|
|
5
5
|
/**
|
|
@@ -90,6 +90,11 @@ function optional(parser) {
|
|
|
90
90
|
}, prefix);
|
|
91
91
|
for await (const s of suggestions) yield s;
|
|
92
92
|
}
|
|
93
|
+
const innerHasWrappedDependency = isWrappedDependencySource(parser);
|
|
94
|
+
const innerHasDirectDependency = isPendingDependencySourceState(syncParser.initialState);
|
|
95
|
+
const wrappedDependencyMarker = innerHasWrappedDependency ? { [WrappedDependencySourceMarker]: parser[WrappedDependencySourceMarker] } : innerHasDirectDependency ? { [WrappedDependencySourceMarker]: syncParser.initialState } : {};
|
|
96
|
+
const hasWrappedDependencySource = WrappedDependencySourceMarker in wrappedDependencyMarker;
|
|
97
|
+
const wrappedPendingState = hasWrappedDependencySource ? wrappedDependencyMarker[WrappedDependencySourceMarker] : void 0;
|
|
93
98
|
return {
|
|
94
99
|
$mode: parser.$mode,
|
|
95
100
|
$valueType: [],
|
|
@@ -100,15 +105,32 @@ function optional(parser) {
|
|
|
100
105
|
terms: parser.usage
|
|
101
106
|
}],
|
|
102
107
|
initialState: void 0,
|
|
108
|
+
...wrappedDependencyMarker,
|
|
103
109
|
parse(context) {
|
|
104
110
|
if (isAsync) return parseOptionalStyleAsync(context, parser);
|
|
105
111
|
return parseOptionalStyleSync(context, syncParser);
|
|
106
112
|
},
|
|
107
113
|
complete(state) {
|
|
108
|
-
if (typeof state === "undefined")
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
114
|
+
if (typeof state === "undefined") {
|
|
115
|
+
if (innerHasWrappedDependency && wrappedPendingState) {
|
|
116
|
+
if (!isAsync) return syncParser.complete([wrappedPendingState]);
|
|
117
|
+
return parser.complete([wrappedPendingState]);
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
success: true,
|
|
121
|
+
value: void 0
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (Array.isArray(state) && state.length === 1 && isPendingDependencySourceState(state[0])) {
|
|
125
|
+
if (innerHasWrappedDependency) {
|
|
126
|
+
if (!isAsync) return syncParser.complete(state);
|
|
127
|
+
return parser.complete(state);
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
success: true,
|
|
131
|
+
value: void 0
|
|
132
|
+
};
|
|
133
|
+
}
|
|
112
134
|
if (!isAsync) return syncParser.complete(state[0]);
|
|
113
135
|
return parser.complete(state[0]);
|
|
114
136
|
},
|
|
@@ -178,7 +200,7 @@ function withDefault(parser, defaultValue, options) {
|
|
|
178
200
|
for await (const s of suggestions) yield s;
|
|
179
201
|
}
|
|
180
202
|
const innerInitialState = syncParser.initialState;
|
|
181
|
-
const wrappedDependencyMarker = isPendingDependencySourceState(innerInitialState) ? { [WrappedDependencySourceMarker]: innerInitialState } : {};
|
|
203
|
+
const wrappedDependencyMarker = isPendingDependencySourceState(innerInitialState) ? { [WrappedDependencySourceMarker]: innerInitialState } : isWrappedDependencySource(parser) ? { [WrappedDependencySourceMarker]: parser[WrappedDependencySourceMarker] } : {};
|
|
182
204
|
return {
|
|
183
205
|
$mode: parser.$mode,
|
|
184
206
|
$valueType: [],
|
|
@@ -195,29 +217,108 @@ function withDefault(parser, defaultValue, options) {
|
|
|
195
217
|
return parseOptionalStyleSync(context, syncParser);
|
|
196
218
|
},
|
|
197
219
|
complete(state) {
|
|
198
|
-
if (typeof state === "undefined")
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
220
|
+
if (typeof state === "undefined") {
|
|
221
|
+
if (transformsDependencyValue(parser)) {
|
|
222
|
+
const innerResult = !isAsync ? syncParser.complete(void 0) : parser.complete(void 0);
|
|
223
|
+
const handleInnerResult = (res) => {
|
|
224
|
+
if (isDependencySourceState(res)) try {
|
|
225
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
226
|
+
return createDependencySourceState({
|
|
227
|
+
success: true,
|
|
228
|
+
value
|
|
229
|
+
}, res[DependencyId]);
|
|
230
|
+
} catch (error) {
|
|
231
|
+
return {
|
|
232
|
+
success: false,
|
|
233
|
+
error: error instanceof WithDefaultError ? error.errorMessage : message`${text(String(error))}`
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
238
|
+
return {
|
|
239
|
+
success: true,
|
|
240
|
+
value
|
|
241
|
+
};
|
|
242
|
+
} catch (error) {
|
|
243
|
+
return {
|
|
244
|
+
success: false,
|
|
245
|
+
error: error instanceof WithDefaultError ? error.errorMessage : message`${text(String(error))}`
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
if (innerResult instanceof Promise) return innerResult.then(handleInnerResult);
|
|
250
|
+
return handleInnerResult(innerResult);
|
|
251
|
+
}
|
|
252
|
+
if (isWrappedDependencySource(parser)) try {
|
|
253
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
254
|
+
const pendingState = parser[WrappedDependencySourceMarker];
|
|
255
|
+
return createDependencySourceState({
|
|
256
|
+
success: true,
|
|
257
|
+
value
|
|
258
|
+
}, pendingState[DependencyId]);
|
|
259
|
+
} catch (error) {
|
|
260
|
+
return {
|
|
261
|
+
success: false,
|
|
262
|
+
error: error instanceof WithDefaultError ? error.errorMessage : message`${text(String(error))}`
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
try {
|
|
266
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
267
|
+
return {
|
|
268
|
+
success: true,
|
|
269
|
+
value
|
|
270
|
+
};
|
|
271
|
+
} catch (error) {
|
|
272
|
+
return {
|
|
273
|
+
success: false,
|
|
274
|
+
error: error instanceof WithDefaultError ? error.errorMessage : message`${text(String(error))}`
|
|
275
|
+
};
|
|
276
|
+
}
|
|
209
277
|
}
|
|
210
|
-
if (isPendingDependencySourceState(state[0]))
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
278
|
+
if (isPendingDependencySourceState(state[0])) {
|
|
279
|
+
if (transformsDependencyValue(parser)) {
|
|
280
|
+
const innerResult = !isAsync ? syncParser.complete(state) : parser.complete(state);
|
|
281
|
+
const handleInnerResult = (res) => {
|
|
282
|
+
if (isDependencySourceState(res)) try {
|
|
283
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
284
|
+
return createDependencySourceState({
|
|
285
|
+
success: true,
|
|
286
|
+
value
|
|
287
|
+
}, res[DependencyId]);
|
|
288
|
+
} catch (error) {
|
|
289
|
+
return {
|
|
290
|
+
success: false,
|
|
291
|
+
error: error instanceof WithDefaultError ? error.errorMessage : message`${text(String(error))}`
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
try {
|
|
295
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
296
|
+
return {
|
|
297
|
+
success: true,
|
|
298
|
+
value
|
|
299
|
+
};
|
|
300
|
+
} catch (error) {
|
|
301
|
+
return {
|
|
302
|
+
success: false,
|
|
303
|
+
error: error instanceof WithDefaultError ? error.errorMessage : message`${text(String(error))}`
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
if (innerResult instanceof Promise) return innerResult.then(handleInnerResult);
|
|
308
|
+
return handleInnerResult(innerResult);
|
|
309
|
+
}
|
|
310
|
+
try {
|
|
311
|
+
const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
312
|
+
return createDependencySourceState({
|
|
313
|
+
success: true,
|
|
314
|
+
value
|
|
315
|
+
}, state[0][DependencyId]);
|
|
316
|
+
} catch (error) {
|
|
317
|
+
return {
|
|
318
|
+
success: false,
|
|
319
|
+
error: error instanceof WithDefaultError ? error.errorMessage : message`${text(String(error))}`
|
|
320
|
+
};
|
|
321
|
+
}
|
|
221
322
|
}
|
|
222
323
|
if (!isAsync) return syncParser.complete(state[0]);
|
|
223
324
|
return parser.complete(state[0]);
|
|
@@ -300,10 +401,15 @@ function map(parser, transform) {
|
|
|
300
401
|
};
|
|
301
402
|
return res;
|
|
302
403
|
};
|
|
404
|
+
const dependencyMarkers = isWrappedDependencySource(parser) ? {
|
|
405
|
+
[WrappedDependencySourceMarker]: parser[WrappedDependencySourceMarker],
|
|
406
|
+
[TransformsDependencyValueMarker]: true
|
|
407
|
+
} : {};
|
|
303
408
|
return {
|
|
304
409
|
...parser,
|
|
305
410
|
$valueType: [],
|
|
306
411
|
complete,
|
|
412
|
+
...dependencyMarkers,
|
|
307
413
|
getDocFragments(state, _defaultValue) {
|
|
308
414
|
return parser.getDocFragments(state, void 0);
|
|
309
415
|
}
|