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

# The platform for dart on the server with dart2js.
#
# Includes dart:io.
# Does not include dart:html and associated libraries.

[dart-spec]
spec:3rd edition.

[features]
# No extra features.

[libraries]
async: async/async.dart
collection: collection/collection.dart
convert: convert/convert.dart
core: core/core.dart
developer: developer/developer.dart
io: io/io.dart
cli: cli/cli.dart
isolate: isolate/isolate.dart
math: math/math.dart
mirrors: mirrors/mirrors.dart
nativewrappers: html/dartium/nativewrappers.dart
typed_data: typed_data/typed_data.dart
_native_typed_data: _internal/js_runtime/lib/native_typed_data.dart
html: unsupported:
html_common: unsupported:
_http: _http/http.dart
indexed_db: unsupported:
svg: unsupported:
web_audio: unsupported:
web_gl: unsupported:
web_sql: unsupported:
_chrome: unsupported:
js: js/dart2js/js_dart2js.dart
_js: js/_js.dart
js_util: js_util/dart2js/js_util_dart2js.dart
_mirror_helper: unsupported:
_internal: internal/internal.dart
_js_helper: _internal/js_runtime/lib/js_helper.dart
_interceptors: _internal/js_runtime/lib/interceptors.dart
_foreign_helper: _internal/js_runtime/lib/foreign_helper.dart
_js_names: _internal/js_runtime/lib/js_names.dart
_js_primitives: _internal/js_runtime/lib/js_primitives.dart
_js_embedded_names: _internal/js_runtime/lib/shared/embedded_names.dart
_async_await_error_codes: _internal/js_runtime/lib/shared/async_await_error_codes.dart
_metadata: html/html_common/metadata.dart
