tryBuild method
Non-throwing variant of build for developer tools and JSON-driven UIs.
By default, config resolution is skipped when validation has errors.
Set buildWhenInvalid to true when you need to collect parser failures
as well, for example in diagnostics tooling.
Implementation
TenunOptionBuildResult tryBuild({
bool deep = true,
bool requireRegisteredType = true,
bool buildWhenInvalid = false,
}) {
final payload = toRenderJson();
final validation = ChartConfigValidator.validateJsonPayload(
payload,
deep: deep,
requireRegisteredType: requireRegisteredType,
);
if (!validation.isValid && !buildWhenInvalid) {
return TenunOptionBuildResult(
payload: payload,
validation: validation,
config: null,
error: null,
stackTrace: null,
buildAttempted: false,
);
}
try {
final config = ChartRegistry.resolve(payload);
return TenunOptionBuildResult(
payload: payload,
validation: validation,
config: config,
error: null,
stackTrace: null,
buildAttempted: true,
);
} catch (error, stackTrace) {
return TenunOptionBuildResult(
payload: payload,
validation: validation,
config: null,
error: error,
stackTrace: stackTrace,
buildAttempted: true,
);
}
}