AssetNode _deserializeAssetNode()

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;
  }