// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:build/build.dart';

/// Factory for the build script.
Builder copyBuilder(_) => _CopyBuilder();

/// Copies the [_clientJsId] file to [_clientJsCopyId].
class _CopyBuilder extends Builder {
  @override
  Map<String, List<String>> get buildExtensions => {
        _clientJsId.path: [_clientJsCopyId.path],
      };

  @override
  void build(BuildStep buildStep) {
    if (buildStep.inputId != _clientJsId) {
      throw StateError(
        'Unexpected input for `CopyBuilder` expected only $_clientJsId',
      );
    }
    buildStep.writeAsString(
      _clientJsCopyId,
      buildStep.readAsString(_clientJsId),
    );
  }
}

final _clientJsId = AssetId('dwds', 'web/client.dart.js');
final _clientJsCopyId = AssetId('dwds', 'lib/src/injected/client.js');
