Index: pkg/dev_compiler/tool/input_sdk/libraries.dart |
diff --git a/pkg/dev_compiler/tool/input_sdk/libraries.dart b/pkg/dev_compiler/tool/input_sdk/libraries.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..69b4856d11afb63120aab838a8c264c5f1d07c18 |
--- /dev/null |
+++ b/pkg/dev_compiler/tool/input_sdk/libraries.dart |
@@ -0,0 +1,378 @@ |
+// Copyright (c) 2012, 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. |
+ |
+library libraries; |
+ |
+/** |
+ * A bit flag used by [LibraryInfo] indicating that a library is used by dart2js |
+ */ |
+const int DART2JS_PLATFORM = 1; |
+ |
+/** |
+ * A bit flag used by [LibraryInfo] indicating that a library is used by the VM |
+ */ |
+const int VM_PLATFORM = 2; |
+ |
+/// The contexts that a library can be used from. |
+enum Category { |
+ /// Indicates that a library can be used in a browser context. |
+ client, |
+ /// Indicates that a library can be used in a command line context. |
+ server, |
+ /// Indicates that a library can be used from embedded devices. |
+ embedded |
+} |
+ |
+Category parseCategory(String name) { |
+ switch (name) { |
+ case "Client": return Category.client; |
+ case "Server": return Category.server; |
+ case "Embedded": return Category.embedded; |
+ } |
+ return null; |
+} |
+ |
+/// Mapping of "dart:" library name (e.g. "core") to information about that |
+/// library. |
+const Map<String, LibraryInfo> libraries = const { |
+ "async": const LibraryInfo( |
+ "async/async.dart", |
+ categories: "Client,Server", |
+ maturity: Maturity.STABLE, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/async_patch.dart"), |
+ |
+ "_blink": const LibraryInfo( |
+ "_blink/dartium/_blink_dartium.dart", |
+ categories: "Client", |
+ implementation: true, |
+ documented: false, |
+ platforms: VM_PLATFORM), |
+ |
+ "_chrome": const LibraryInfo( |
+ "_chrome/dart2js/chrome_dart2js.dart", |
+ categories: "Client", |
+ documented: false), |
+ |
+ "collection": const LibraryInfo( |
+ "collection/collection.dart", |
+ categories: "Client,Server,Embedded", |
+ maturity: Maturity.STABLE, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/collection_patch.dart"), |
+ |
+ "convert": const LibraryInfo( |
+ "convert/convert.dart", |
+ categories: "Client,Server", |
+ maturity: Maturity.STABLE, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/convert_patch.dart"), |
+ |
+ "core": const LibraryInfo( |
+ "core/core.dart", |
+ categories: "Client,Server,Embedded", |
+ maturity: Maturity.STABLE, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/core_patch.dart"), |
+ |
+ "developer": const LibraryInfo( |
+ "developer/developer.dart", |
+ categories: "Client,Server,Embedded", |
+ maturity: Maturity.UNSTABLE, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/developer_patch.dart"), |
+ |
+ "html": const LibraryInfo( |
+ "html/dartium/html_dartium.dart", |
+ categories: "Client", |
+ maturity: Maturity.WEB_STABLE, |
+ dart2jsPath: "html/dart2js/html_dart2js.dart"), |
+ |
+ "html_common": const LibraryInfo( |
+ "html/html_common/html_common.dart", |
+ categories: "Client", |
+ maturity: Maturity.WEB_STABLE, |
+ dart2jsPath: "html/html_common/html_common_dart2js.dart", |
+ documented: false, |
+ implementation: true), |
+ |
+ "indexed_db": const LibraryInfo( |
+ "indexed_db/dartium/indexed_db_dartium.dart", |
+ categories: "Client", |
+ maturity: Maturity.WEB_STABLE, |
+ dart2jsPath: "indexed_db/dart2js/indexed_db_dart2js.dart"), |
+ |
+ "io": const LibraryInfo( |
+ "io/io.dart", |
+ categories: "Server", |
+ dart2jsPatchPath: "_internal/js_runtime/lib/io_patch.dart"), |
+ |
+ "isolate": const LibraryInfo( |
+ "isolate/isolate.dart", |
+ categories: "Client,Server", |
+ maturity: Maturity.STABLE, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/isolate_patch.dart"), |
+ |
+ "js": const LibraryInfo( |
+ "js/dartium/js_dartium.dart", |
+ categories: "Client", |
+ maturity: Maturity.STABLE, |
+ dart2jsPath: "js/dart2js/js_dart2js.dart"), |
+ |
+ "js_util": const LibraryInfo( |
+ "js_util/dartium/js_util_dartium.dart", |
+ categories: "Client", |
+ maturity: Maturity.STABLE, |
+ dart2jsPath: "js_util/dart2js/js_util_dart2js.dart"), |
+ |
+ "math": const LibraryInfo( |
+ "math/math.dart", |
+ categories: "Client,Server,Embedded", |
+ maturity: Maturity.STABLE, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/math_patch.dart"), |
+ |
+ "mirrors": const LibraryInfo( |
+ "mirrors/mirrors.dart", |
+ categories: "Client,Server", |
+ maturity: Maturity.UNSTABLE, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/mirrors_patch.dart"), |
+ |
+ "typed_data": const LibraryInfo( |
+ "typed_data/typed_data.dart", |
+ categories: "Client,Server,Embedded", |
+ maturity: Maturity.STABLE, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/typed_data_patch.dart"), |
+ |
+ "_native_typed_data": const LibraryInfo( |
+ "_internal/js_runtime/lib/native_typed_data.dart", |
+ categories: "", |
+ implementation: true, |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "svg": const LibraryInfo( |
+ "svg/dartium/svg_dartium.dart", |
+ categories: "Client", |
+ maturity: Maturity.WEB_STABLE, |
+ dart2jsPath: "svg/dart2js/svg_dart2js.dart"), |
+ |
+ "web_audio": const LibraryInfo( |
+ "web_audio/dartium/web_audio_dartium.dart", |
+ categories: "Client", |
+ maturity: Maturity.WEB_STABLE, |
+ dart2jsPath: "web_audio/dart2js/web_audio_dart2js.dart"), |
+ |
+ "web_gl": const LibraryInfo( |
+ "web_gl/dartium/web_gl_dartium.dart", |
+ categories: "Client", |
+ maturity: Maturity.WEB_STABLE, |
+ dart2jsPath: "web_gl/dart2js/web_gl_dart2js.dart"), |
+ |
+ "web_sql": const LibraryInfo( |
+ "web_sql/dartium/web_sql_dartium.dart", |
+ categories: "Client", |
+ maturity: Maturity.WEB_STABLE, |
+ dart2jsPath: "web_sql/dart2js/web_sql_dart2js.dart"), |
+ |
+ "_internal": const LibraryInfo( |
+ "internal/internal.dart", |
+ categories: "", |
+ documented: false, |
+ dart2jsPatchPath: "_internal/js_runtime/lib/internal_patch.dart"), |
+ |
+ "_js_helper": const LibraryInfo( |
+ "_internal/js_runtime/lib/js_helper.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_interceptors": const LibraryInfo( |
+ "_internal/js_runtime/lib/interceptors.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_foreign_helper": const LibraryInfo( |
+ "_internal/js_runtime/lib/foreign_helper.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_isolate_helper": const LibraryInfo( |
+ "_internal/js_runtime/lib/isolate_helper.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_js_mirrors": const LibraryInfo( |
+ "_internal/js_runtime/lib/js_mirrors.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_js_names": const LibraryInfo( |
+ "_internal/js_runtime/lib/js_names.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_js_primitives": const LibraryInfo( |
+ "_internal/js_runtime/lib/js_primitives.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_js_embedded_names": const LibraryInfo( |
+ "_internal/js_runtime/lib/shared/embedded_names.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_async_await_error_codes": const LibraryInfo( |
+ "_internal/js_runtime/lib/shared/async_await_error_codes.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_metadata": const LibraryInfo( |
+ "html/html_common/metadata.dart", |
+ categories: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_debugger": const LibraryInfo( |
+ "_internal/js_runtime/lib/debugger.dart", |
+ category: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+ |
+ "_runtime": const LibraryInfo( |
+ "_internal/js_runtime/lib/ddc_runtime/runtime.dart", |
+ category: "", |
+ documented: false, |
+ platforms: DART2JS_PLATFORM), |
+}; |
+ |
+/** |
+ * Information about a "dart:" library. |
+ */ |
+class LibraryInfo { |
+ /** |
+ * Path to the library's *.dart file relative to this file. |
+ */ |
+ final String path; |
+ |
+ /** |
+ * The categories in which the library can be used encoded as a |
+ * comma-separated String. |
+ */ |
+ final String _categories; |
+ |
+ /** |
+ * Path to the dart2js library's *.dart file relative to this file |
+ * or null if dart2js uses the common library path defined above. |
+ * Access using the [#getDart2JsPath()] method. |
+ */ |
+ final String dart2jsPath; |
+ |
+ /** |
+ * Path to the dart2js library's patch file relative to this file |
+ * or null if no dart2js patch file associated with this library. |
+ * Access using the [#getDart2JsPatchPath()] method. |
+ */ |
+ final String dart2jsPatchPath; |
+ |
+ /** |
+ * True if this library is documented and should be shown to the user. |
+ */ |
+ final bool documented; |
+ |
+ /** |
+ * Bit flags indicating which platforms consume this library. |
+ * See [DART2JS_LIBRARY] and [VM_LIBRARY]. |
+ */ |
+ final int platforms; |
+ |
+ /** |
+ * True if the library contains implementation details for another library. |
+ * The implication is that these libraries are less commonly used |
+ * and that tools like Dart Editor should not show these libraries |
+ * in a list of all libraries unless the user specifically asks the tool to |
+ * do so. |
+ */ |
+ final bool implementation; |
+ |
+ /** |
+ * States the current maturity of this library. |
+ */ |
+ final Maturity maturity; |
+ |
+ const LibraryInfo(this.path, { |
+ String categories: "", |
+ this.dart2jsPath, |
+ this.dart2jsPatchPath, |
+ this.implementation: false, |
+ this.documented: true, |
+ this.maturity: Maturity.UNSPECIFIED, |
+ this.platforms: DART2JS_PLATFORM | VM_PLATFORM}) |
+ : _categories = categories; |
+ |
+ bool get isDart2jsLibrary => (platforms & DART2JS_PLATFORM) != 0; |
+ bool get isVmLibrary => (platforms & VM_PLATFORM) != 0; |
+ |
+ /** |
+ * The categories in which the library can be used. |
+ * |
+ * If no categories are specified, the library is internal and can not be |
+ * loaded by user code. |
+ */ |
+ List<Category> get categories { |
+ // `"".split(,)` returns [""] not [], so we handle that case separately. |
+ if (_categories == "") return const <Category>[]; |
+ return _categories.split(",").map(parseCategory).toList(); |
+ } |
+ |
+ bool get isInternal => categories.isEmpty; |
+ |
+ /// The original "categories" String that was passed to the constructor. |
+ /// |
+ /// Can be used to construct a slightly modified copy of this LibraryInfo. |
+ String get categoriesString { |
+ return _categories; |
+ } |
+} |
+ |
+/** |
+ * Abstraction to capture the maturity of a library. |
+ */ |
+class Maturity { |
+ final int level; |
+ final String name; |
+ final String description; |
+ |
+ const Maturity(this.level, this.name, this.description); |
+ |
+ String toString() => "$name: $level\n$description\n"; |
+ |
+ static const Maturity DEPRECATED = const Maturity(0, "Deprecated", |
+ "This library will be remove before next major release."); |
+ |
+ static const Maturity EXPERIMENTAL = const Maturity(1, "Experimental", |
+ "This library is experimental and will likely change or be removed\n" |
+ "in future versions."); |
+ |
+ static const Maturity UNSTABLE = const Maturity(2, "Unstable", |
+ "This library is in still changing and have not yet endured\n" |
+ "sufficient real-world testing.\n" |
+ "Backwards-compatibility is NOT guaranteed."); |
+ |
+ static const Maturity WEB_STABLE = const Maturity(3, "Web Stable", |
+ "This library is tracking the DOM evolution as defined by WC3.\n" |
+ "Backwards-compatibility is NOT guaranteed."); |
+ |
+ static const Maturity STABLE = const Maturity(4, "Stable", |
+ "The library is stable. API backwards-compatibility is guaranteed.\n" |
+ "However implementation details might change."); |
+ |
+ static const Maturity LOCKED = const Maturity(5, "Locked", |
+ "This library will not change except when serious bugs are encountered."); |
+ |
+ static const Maturity UNSPECIFIED = const Maturity(-1, "Unspecified", |
+ "The maturity for this library has not been specified."); |
+} |