Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(225)

Unified Diff: lib/runtime/dart_library.js

Issue 2249233002: fix #626, add AMD module format and make it default (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: merged Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/js/legacy/dart_sdk.js ('k') | lib/runtime/run.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/runtime/dart_library.js
diff --git a/lib/runtime/dart_library.js b/lib/runtime/dart_library.js
deleted file mode 100644
index 3b766c227f11ab39fb882afa5c599dd776025567..0000000000000000000000000000000000000000
--- a/lib/runtime/dart_library.js
+++ /dev/null
@@ -1,168 +0,0 @@
-// 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.
-
-/* This file defines the module loader for the dart runtime.
-*/
-
-var dart_library =
- typeof module != "undefined" && module.exports || {};
-
-(function (dart_library) {
- 'use strict';
-
- /** Note that we cannot use dart_utils.throwInternalError from here. */
- function throwLibraryError(message) {
- throw Error(message);
- }
-
- const dartLibraryName = Symbol('dartLibraryName');
- dart_library.dartLibraryName = dartLibraryName;
-
- const libraryImports = Symbol('libraryImports');
- dart_library.libraryImports = libraryImports;
-
- // Module support. This is a simplified module system for Dart.
- // Longer term, we can easily migrate to an existing JS module system:
- // ES6, AMD, RequireJS, ....
-
- class LibraryLoader {
-
- constructor(name, defaultValue, imports, loader) {
- this._name = name;
- this._library = defaultValue ? defaultValue : {};
- this._imports = imports;
- this._loader = loader;
-
- // Cyclic import detection
- this._state = LibraryLoader.NOT_LOADED;
- }
-
- loadImports() {
- let results = [];
- for (let name of this._imports) {
- let lib = libraries.get(name);
- if (!lib) {
- throwLibraryError('Library not available: ' + name);
- }
- results.push(lib.load());
- }
- return results;
- }
-
- load() {
- // Check for cycles
- if (this._state == LibraryLoader.LOADING) {
- throwLibraryError('Circular dependence on library: '
- + this._name);
- } else if (this._state >= LibraryLoader.READY) {
- return this._library;
- }
- this._state = LibraryLoader.LOADING;
-
- // Handle imports
- let args = this.loadImports();
-
- // Load the library
- args.unshift(this._library);
- this._loader.apply(null, args);
- this._state = LibraryLoader.READY;
- this._library[dartLibraryName] = this._name;
- this._library[libraryImports] = this._imports;
- return this._library;
- }
-
- stub() {
- return this._library;
- }
- }
- LibraryLoader.NOT_LOADED = 0;
- LibraryLoader.LOADING = 1;
- LibraryLoader.READY = 2;
-
- // Map from name to LibraryLoader
- let libraries = new Map();
- dart_library.libraries = function() { return libraries.keys(); };
- dart_library.debuggerLibraries = function() {
- var debuggerLibraries = [];
- libraries.forEach(function (value, key, map) {
- debuggerLibraries.push(value.load());
- });
- debuggerLibraries.__proto__ = null;
- return debuggerLibraries;
- };
-
- function library(name, defaultValue, imports, loader) {
- let result = new LibraryLoader(name, defaultValue, imports, loader);
- libraries.set(name, result);
- return result;
- }
- dart_library.library = library;
-
- function import_(libraryName) {
- bootstrap();
- let loader = libraries.get(libraryName);
- // TODO(vsm): A user might call this directly from JS (as we do in tests).
- // We may want a different error type.
- if (!loader) throwLibraryError('Library not found: ' + libraryName);
- return loader.load();
- }
- dart_library.import = import_;
-
- function start(moduleName, libraryName) {
- if (libraryName == null) libraryName = moduleName;
- let library = import_(moduleName)[libraryName];
- let dart_sdk = import_('dart_sdk');
- dart_sdk._isolate_helper.startRootIsolate(library.main, []);
- }
- dart_library.start = start;
-
- let _bootstrapped = false;
- function bootstrap() {
- if (_bootstrapped) return;
- _bootstrapped = true;
-
- // Force import of core.
- var dart_sdk = import_('dart_sdk');
-
- // TODO(vsm): DOM facades?
- // See: https://github.com/dart-lang/dev_compiler/issues/173
- if (typeof NodeList !== "undefined") {
- NodeList.prototype.get = function(i) { return this[i]; };
- NamedNodeMap.prototype.get = function(i) { return this[i]; };
- DOMTokenList.prototype.get = function(i) { return this[i]; };
- HTMLCollection.prototype.get = function(i) { return this[i]; };
- // Expose constructors for DOM types dart:html needs to assume are
- // available on window.
- if (typeof PannerNode == "undefined") {
- let audioContext = new AudioContext();
- window.PannerNode = audioContext.createPanner().constructor;
- window.StereoPannerNode = audioContext.createStereoPanner().constructor;
- }
- if (typeof AudioSourceNode == "undefined") {
- window.AudioSourceNode = MediaElementAudioSourceNode.constructor;
- }
- if (typeof FontFaceSet == "undefined") {
- window.FontFaceSet = document.fonts.__proto__.constructor;
- }
- if (typeof MemoryInfo == "undefined") {
- window.MemoryInfo = window.performance.memory.constructor;
- }
- if (typeof Geolocation == "undefined") {
- navigator.geolocation.constructor;
- }
- if (typeof Animation == "undefined") {
- let d = document.createElement('div');
- window.Animation = d.animate(d).constructor;
- }
- if (typeof SourceBufferList == "undefined") {
- window.SourceBufferList = new MediaSource().sourceBuffers.constructor;
- }
- }
-
- // This import is only needed for chrome debugging. We should provide an
- // option to compile without it.
- dart_sdk._debugger.registerDevtoolsFormatter();
- }
-
-})(dart_library);
« no previous file with comments | « lib/js/legacy/dart_sdk.js ('k') | lib/runtime/run.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698