in build_runner_core/lib/src/asset_graph/serialization.dart [94:187]
AssetNode _deserializeAssetNode(List serializedNode) {
AssetNode node;
var typeId =
_NodeType.values[serializedNode[_AssetField.nodeType.index] as int];
var id = _idToAssetId[serializedNode[_AssetField.id.index] as int]!;
var serializedDigest = serializedNode[_AssetField.digest.index] as String?;
var digest = _deserializeDigest(serializedDigest);
switch (typeId) {
case _NodeType.source:
assert(serializedNode.length == _WrappedAssetNode._length);
node = SourceAssetNode(id, lastKnownDigest: digest);
break;
case _NodeType.syntheticSource:
assert(serializedNode.length == _WrappedAssetNode._length);
node = SyntheticSourceAssetNode(id);
break;
case _NodeType.generated:
assert(serializedNode.length == _WrappedGeneratedAssetNode._length);
var offset = _AssetField.values.length;
node = GeneratedAssetNode(
id,
phaseNumber:
serializedNode[_GeneratedField.phaseNumber.index + offset] as int,
primaryInput: _idToAssetId[
serializedNode[_GeneratedField.primaryInput.index + offset]
as int]!,
state: NodeState.values[
serializedNode[_GeneratedField.state.index + offset] as int],
wasOutput: _deserializeBool(
serializedNode[_GeneratedField.wasOutput.index + offset] as int),
isFailure: _deserializeBool(
serializedNode[_GeneratedField.isFailure.index + offset] as int),
builderOptionsId: _idToAssetId[
serializedNode[_GeneratedField.builderOptions.index + offset]
as int]!,
lastKnownDigest: digest,
previousInputsDigest: _deserializeDigest(serializedNode[
_GeneratedField.previousInputsDigest.index + offset] as String?),
isHidden: _deserializeBool(
serializedNode[_GeneratedField.isHidden.index + offset] as int),
);
break;
case _NodeType.glob:
assert(serializedNode.length == _WrappedGlobAssetNode._length);
var offset = _AssetField.values.length;
node = GlobAssetNode(
id,
Glob(serializedNode[_GlobField.glob.index + offset] as String),
serializedNode[_GlobField.phaseNumber.index + offset] as int,
NodeState
.values[serializedNode[_GlobField.state.index + offset] as int],
lastKnownDigest: digest,
results: _deserializeAssetIds(
serializedNode[_GlobField.results.index + offset] as List)
.toList(),
);
break;
case _NodeType.internal:
assert(serializedNode.length == _WrappedAssetNode._length);
node = InternalAssetNode(id, lastKnownDigest: digest);
break;
case _NodeType.builderOptions:
assert(serializedNode.length == _WrappedAssetNode._length);
node = BuilderOptionsAssetNode(id, digest!);
break;
case _NodeType.placeholder:
assert(serializedNode.length == _WrappedAssetNode._length);
node = PlaceHolderAssetNode(id);
break;
case _NodeType.postProcessAnchor:
assert(serializedNode.length == _WrappedPostProcessAnchorNode._length);
var offset = _AssetField.values.length;
node = PostProcessAnchorNode(
id,
_idToAssetId[
serializedNode[_PostAnchorField.primaryInput.index + offset]
as int]!,
serializedNode[_PostAnchorField.actionNumber.index + offset] as int,
_idToAssetId[
serializedNode[_PostAnchorField.builderOptions.index + offset]
as int]!,
previousInputsDigest: _deserializeDigest(serializedNode[
_PostAnchorField.previousInputsDigest.index + offset]
as String?));
break;
}
node.outputs.addAll(_deserializeAssetIds(
serializedNode[_AssetField.outputs.index] as List));
node.primaryOutputs.addAll(_deserializeAssetIds(
serializedNode[_AssetField.primaryOutputs.index] as List));
node.deletedBy.addAll(_deserializeAssetIds(
(serializedNode[_AssetField.deletedBy.index] as List).cast<int>()));
return node;
}