# 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:
#
#     python ./tools/yaml2json.py sdk/lib/libraries.yaml sdk/lib/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.

vm:
  libraries:
    _builtin:
      uri: "../../runtime/bin/builtin.dart"

    _internal:
      uri: "internal/internal.dart"
      patches:
        - "../../runtime/lib/internal_patch.dart"
        - "../../runtime/lib/class_id_fasta.dart"
        - "../../runtime/lib/print_patch.dart"
        - "../../runtime/lib/symbol_patch.dart"
        - "internal/patch.dart"

    async:
      uri: "async/async.dart"
      patches:
        - "../../runtime/lib/async_patch.dart"
        - "../../runtime/lib/deferred_load_patch.dart"
        - "../../runtime/lib/schedule_microtask_patch.dart"
        - "../../runtime/lib/timer_patch.dart"

    collection:
      uri: "collection/collection.dart"
      patches:
        - "../../runtime/lib/collection_patch.dart"
        - "../../runtime/lib/compact_hash.dart"

    convert:
      uri: "convert/convert.dart"
      patches: "../../runtime/lib/convert_patch.dart"

    core:
      uri: "core/core.dart"
      patches:
        - "../../runtime/lib/core_patch.dart"
        - "../../runtime/lib/array.dart"
        - "../../runtime/lib/array_patch.dart"
        - "../../runtime/lib/bigint.dart"
        - "../../runtime/lib/bool_patch.dart"
        - "../../runtime/lib/date_patch.dart"
        - "../../runtime/lib/double.dart"
        - "../../runtime/lib/double_patch.dart"
        - "../../runtime/lib/errors_patch.dart"
        - "../../runtime/lib/expando_patch.dart"
        - "../../runtime/lib/function.dart"
        - "../../runtime/lib/function_patch.dart"
        - "../../runtime/lib/growable_array.dart"
        - "../../runtime/lib/identical_patch.dart"
        - "../../runtime/lib/immutable_map.dart"
        - "../../runtime/lib/integers.dart"
        - "../../runtime/lib/integers_patch.dart"
        - "../../runtime/lib/invocation_mirror_patch.dart"
        - "../../runtime/lib/lib_prefix.dart"
        - "../../runtime/lib/map_patch.dart"
        - "../../runtime/lib/null_patch.dart"
        - "../../runtime/lib/object_patch.dart"
        - "../../runtime/lib/regexp_patch.dart"
        - "../../runtime/lib/stacktrace.dart"
        - "../../runtime/lib/stopwatch_patch.dart"
        - "../../runtime/lib/string_buffer_patch.dart"
        - "../../runtime/lib/string_patch.dart"
        - "../../runtime/lib/type_patch.dart"
        - "../../runtime/lib/uri_patch.dart"
        - "../../runtime/lib/weak_property.dart"

    developer:
      uri: "developer/developer.dart"
      patches:
        - "../../runtime/lib/developer.dart"
        - "../../runtime/lib/profiler.dart"
        - "../../runtime/lib/timeline.dart"

    _http:
      uri: "_http/http.dart"

    io:
      uri: "io/io.dart"
      patches:
        - "../../runtime/bin/common_patch.dart"
        - "../../runtime/bin/directory_patch.dart"
        - "../../runtime/bin/eventhandler_patch.dart"
        - "../../runtime/bin/file_patch.dart"
        - "../../runtime/bin/file_system_entity_patch.dart"
        - "../../runtime/bin/filter_patch.dart"
        - "../../runtime/bin/io_service_patch.dart"
        - "../../runtime/bin/namespace_patch.dart"
        - "../../runtime/bin/platform_patch.dart"
        - "../../runtime/bin/process_patch.dart"
        - "../../runtime/bin/socket_patch.dart"
        - "../../runtime/bin/stdio_patch.dart"
        - "../../runtime/bin/secure_socket_patch.dart"
        - "../../runtime/bin/sync_socket_patch.dart"

    isolate:
      uri: "isolate/isolate.dart"
      patches:
        - "../../runtime/lib/isolate_patch.dart"
        - "../../runtime/lib/timer_impl.dart"

    math:
      uri: "math/math.dart"
      patches: "../../runtime/lib/math_patch.dart"

    mirrors:
      uri: "mirrors/mirrors.dart"
      patches:
        - "../../runtime/lib/mirrors_patch.dart"
        - "../../runtime/lib/mirrors_impl.dart"
        - "../../runtime/lib/mirror_reference.dart"

    nativewrappers:
      uri: "html/dartium/nativewrappers.dart"

    profiler:
      uri: "profiler/profiler.dart"

    typed_data:
      uri: "typed_data/typed_data.dart"
      patches: "../../runtime/lib/typed_data_patch.dart"
