deserializeInputs function
Deserializes provider input structs and applies dependency metadata.
Implementation
Future<Inputs> deserializeInputs(
Struct inputs,
List<String> Function(String key) dependencyUrnsForKey,
) async {
final result = <String, Input<dynamic>>{};
for (final entry in inputs.fields.entries) {
final key = entry.key;
final decoded = Deserializer.deserialize<dynamic>(entry.value);
final value = decoded.value;
final depsUrns = dependencyUrnsForKey(key);
if (!decoded.isSecret &&
(depsUrns.isEmpty ||
containsOutputs(value) ||
await _isResourceReference(value, depsUrns))) {
result[key] = _asInput(value);
continue;
}
final deps = depsUrns.map((urn) => DependencyResource(urn)).toSet();
final wrapped = Output<dynamic>(
Future.value(
OutputData<dynamic>(
value: value,
isKnown: decoded.isKnown,
isSecret: decoded.isSecret,
resources: deps,
),
),
);
result[key] = Input.fromOutput(wrapped);
}
return result;
}