# 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.

# This libraries file is only used for building the ddc kernel.
#
# Note: if you edit this file, you must also edit libraries.json in this
# directory:
#
#.    python third_party/dart/tools/yaml2json.py flutter/web_sdk/libraries.yaml flutter/web_sdk/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.

dartdevc:
  libraries:
    _runtime:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart"

    _debugger:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/private/debugger.dart"

    _foreign_helper:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart"

    _http:
      uri: "../dart-sdk/lib/_http/http.dart"

    _interceptors:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/private/interceptors.dart"

    _internal:
      uri: "../dart-sdk/lib/internal/internal.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/internal_patch.dart"

    _isolate_helper:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart"

    _js_helper:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"

    _js_mirrors:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/private/js_mirrors.dart"

    _js_primitives:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/private/js_primitives.dart"

    _metadata:
      uri: "../dart-sdk/lib/html/html_common/metadata.dart"

    _native_typed_data:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"

    async:
      uri: "../dart-sdk/lib/async/async.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"

    collection:
      uri: "../dart-sdk/lib/collection/collection.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart"

    convert:
      uri: "../dart-sdk/lib/convert/convert.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"

    core:
      uri: "../dart-sdk/lib/core/core.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"

    developer:
      uri: "../dart-sdk/lib/developer/developer.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart"

    io:
      uri: "../dart-sdk/lib/io/io.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"
      supported: false

    isolate:
      uri: "../dart-sdk/lib/isolate/isolate.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/isolate_patch.dart"
      supported: false

    mirrors:
      uri: "../dart-sdk/lib/mirrors/mirrors.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/mirrors_patch.dart"
      supported: false

    math:
      uri: "../dart-sdk/lib/math/math.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart"

    typed_data:
      uri: "../dart-sdk/lib/typed_data/typed_data.dart"
      patches: "../dart-sdk/lib/_internal/js_dev_runtime/patch/typed_data_patch.dart"

    html:
      uri: "../dart-sdk/lib/html/dart2js/html_dart2js.dart"

    html_common:
      uri: "../dart-sdk/lib/html/html_common/html_common_dart2js.dart"

    indexed_db:
      uri: "../dart-sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart"

    js:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/lib/js/dart2js/js_dart2js.dart"

    js_util:
      uri: "../dart-sdk/lib/_internal/js_dev_runtime/lib/js_util/dart2js/js_util_dart2js.dart"

    svg:
      uri: "../dart-sdk/lib/svg/dart2js/svg_dart2js.dart"

    web_audio:
      uri: "../dart-sdk/lib/web_audio/dart2js/web_audio_dart2js.dart"

    web_gl:
      uri: "../dart-sdk/lib/web_gl/dart2js/web_gl_dart2js.dart"

    web_sql:
      uri: "../dart-sdk/lib/web_sql/dart2js/web_sql_dart2js.dart"

    ui:
      uri: "lib/ui/ui.dart"

    _engine:
      uri: "lib/_engine/engine.dart"

dart2js:
  libraries:
    ui:
      uri: "lib/ui/ui.dart"

    _engine:
      uri: "lib/_engine/engine.dart"

    async:
      uri: "../dart-sdk/lib/async/async.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/async_patch.dart"

    collection:
      uri: "../dart-sdk/lib/collection/collection.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/collection_patch.dart"

    convert:
      uri: "../dart-sdk/lib/convert/convert.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/convert_patch.dart"

    core:
      uri: "../dart-sdk/lib/core/core.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/core_patch.dart"

    developer:
      uri: "../dart-sdk/lib/developer/developer.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/developer_patch.dart"

    html:
      uri: "../dart-sdk/lib/html/dart2js/html_dart2js.dart"

    html_common:
      uri: "../dart-sdk/lib/html/html_common/html_common_dart2js.dart"

    indexed_db:
      uri: "../dart-sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart"

    _http:
      uri: "../dart-sdk/lib/_http/http.dart"

    io:
      uri: "../dart-sdk/lib/io/io.dart"
      patches: "io_patch.dart"
      supported: false

    isolate:
      uri: "../dart-sdk/lib/isolate/isolate.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/isolate_patch.dart"
      supported: false

    js:
      uri: "../dart-sdk/lib/js/dart2js/js_dart2js.dart"

    _js:
      uri: "../dart-sdk/lib/js/_js.dart"
      patches: "../dart-sdk/lib/js/_js_client.dart"

    js_util:
      uri: "../dart-sdk/lib/js_util/dart2js/js_util_dart2js.dart"

    math:
      uri: "../dart-sdk/lib/math/math.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/math_patch.dart"

    mirrors:
      uri: "../dart-sdk/lib/mirrors/mirrors.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/mirrors_patch_cfe.dart"
      supported: false

    typed_data:
      uri: "../dart-sdk/lib/typed_data/typed_data.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart"

    _native_typed_data:
      uri: "../dart-sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"

    svg:
      uri: "../dart-sdk/lib/svg/dart2js/svg_dart2js.dart"

    web_audio:
      uri: "../dart-sdk/lib/web_audio/dart2js/web_audio_dart2js.dart"

    web_gl:
      uri: "../dart-sdk/lib/web_gl/dart2js/web_gl_dart2js.dart"

    web_sql:
      uri: "../dart-sdk/lib/web_sql/dart2js/web_sql_dart2js.dart"

    _internal:
      uri: "../dart-sdk/lib/internal/internal.dart"
      patches: "../dart-sdk/lib/_internal/js_runtime/lib/internal_patch.dart"

    _js_helper:
      uri: "../dart-sdk/lib/_internal/js_runtime/lib/js_helper.dart"

    _interceptors:
      uri: "../dart-sdk/lib/_internal/js_runtime/lib/interceptors.dart"

    _foreign_helper:
      uri: "../dart-sdk/lib/_internal/js_runtime/lib/foreign_helper.dart"

    _js_names:
      uri: "../dart-sdk/lib/_internal/js_runtime/lib/js_names.dart"

    _js_primitives:
      uri: "../dart-sdk/lib/_internal/js_runtime/lib/js_primitives.dart"

    _js_embedded_names:
      uri: "../dart-sdk/lib/_internal/js_runtime/lib/shared/embedded_names.dart"

    _async_await_error_codes:
      uri: "../dart-sdk/lib/_internal/js_runtime/lib/shared/async_await_error_codes.dart"

    _metadata:
      uri: "../dart-sdk/lib/html/html_common/metadata.dart"