# Copyright (c) 2017, 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.

# Note: if you edit this file, you must also edit libraries.json in this
# directory:
#
#     ../../tools/yaml2json.py libraries.yaml libraries.json
#
# We currently have several different files that needs to be updated when
# changing libraries, sources, and patch files.  See
# https://github.com/dart-lang/sdk/issues/28836.

async:
  sources:
    - async_patch.dart
    - deferred_load_patch.dart
    - schedule_microtask_patch.dart
    - timer_patch.dart
  directory: ../lib

collection:
  sources:
    - collection_patch.dart
    - compact_hash.dart
    - linked_hash_map.cc
  directory: ../lib

convert:
  sources:
    - convert_patch.dart
  directory: ../lib

core:
  sources:
    - core_patch.dart
    - array.cc
    - array.dart
    - array_patch.dart
    - bigint.dart
    - bool.cc
    - bool_patch.dart
    - date.cc
    - date_patch.dart
    - double.cc
    - double.dart
    - double_patch.dart
    - errors.cc
    - errors_patch.dart
    - expando_patch.dart
    - function.cc
    - function.dart
    - function_patch.dart
    - growable_array.cc
    - growable_array.dart
    - identical.cc
    - identical_patch.dart
    - immutable_map.dart
    - integers.cc
    - integers.dart
    - integers_patch.dart
    - invocation_mirror.h
    - invocation_mirror_patch.dart
    - lib_prefix.dart
    - map_patch.dart
    - null_patch.dart
    - object.cc
    - object_patch.dart
    - regexp.cc
    - regexp_patch.dart
    - stacktrace.cc
    - stacktrace.dart
    - stacktrace.h
    - stopwatch.cc
    - stopwatch_patch.dart
    - string.cc
    - string_buffer_patch.dart
    - string_patch.dart
    - type_patch.dart
    - uri.cc
    - uri_patch.dart
    - weak_property.cc
    - weak_property.dart
  directory: ../lib

developer:
  sources:
    - developer.cc
    - developer.dart
    - profiler.cc
    - profiler.dart
    - timeline.cc
    - timeline.dart
  directory: ../lib

_internal:
  sources:
    - internal_patch.dart
    - class_id.dart
    - class_id.cc
    - print_patch.dart
    - symbol_patch.dart
  directory: ../lib

isolate:
  sources:
    - isolate_patch.dart
    - isolate.cc
    - timer_impl.dart
  directory: ../lib

math:
  sources:
    - math.cc
    - math_patch.dart
  directory: ../lib

mirrors:
  sources:
    - mirrors.cc
    - mirrors.h
    - mirrors_patch.dart
    - mirrors_impl.dart
    - mirror_reference.dart
  directory: ../lib

profiler:
  sources:
    - empty_source.dart
  directory: ../lib

typed_data:
  sources:
    - typed_data.cc
    - typed_data_patch.dart
    - simd128.cc
  directory: ../lib

vmservice:
  sources:
    - vmservice_patch.dart
    - vmservice.cc
  directory: ../lib

io:
  sources:
    - common_patch.dart
    - directory_patch.dart
    - eventhandler_patch.dart
    - file_patch.dart
    - file_system_entity_patch.dart
    - filter_patch.dart
    - io_service_patch.dart
    - platform_patch.dart
    - process_patch.dart
    - socket_patch.dart
    - stdio_patch.dart
    - secure_socket_patch.dart
  directory: ../bin
