rewriteDefinition method

dynamic rewriteDefinition(
  1. dynamic node
)

Recursively rewrites bundle:// strings inside a definition JSON tree.

Implementation

dynamic rewriteDefinition(dynamic node) {
  if (node is Map) {
    return <String, dynamic>{
      for (final entry in node.entries) entry.key: rewriteDefinition(entry.value),
    };
  }
  if (node is List) {
    return node.map(rewriteDefinition).toList();
  }
  if (node is String && node.startsWith('bundle://')) {
    try {
      return resolve(node).target.toString();
    } on BundleUriResolutionException catch (e) {
      _logger.warn('bundle.uri.resolve.miss', {'uri': node, 'reason': e.message});
      return node;
    }
  }
  return node;
}