UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

117 lines 6.39 kB
'use strict';var di_1 = require('angular2/src/core/di'); var forms_1 = require('angular2/src/common/forms'); var lang_1 = require('angular2/src/facade/lang'); var exceptions_1 = require('angular2/src/facade/exceptions'); var async_1 = require('angular2/src/facade/async'); var xhr_1 = require('angular2/src/compiler/xhr'); var xhr_impl_1 = require('angular2/src/web_workers/worker/xhr_impl'); var app_root_url_1 = require('angular2/src/compiler/app_root_url'); var renderer_1 = require('./renderer'); var api_1 = require('angular2/src/core/render/api'); var client_message_broker_1 = require('angular2/src/web_workers/shared/client_message_broker'); var service_message_broker_1 = require('angular2/src/web_workers/shared/service_message_broker'); var message_bus_1 = require('angular2/src/web_workers/shared/message_bus'); var application_ref_1 = require('angular2/src/core/application_ref'); var serializer_1 = require("angular2/src/web_workers/shared/serializer"); var api_2 = require("angular2/src/web_workers/shared/api"); var render_proto_view_ref_store_1 = require('angular2/src/web_workers/shared/render_proto_view_ref_store'); var render_view_with_fragments_store_1 = require('angular2/src/web_workers/shared/render_view_with_fragments_store'); var async_2 = require('angular2/src/facade/async'); var messaging_api_1 = require('angular2/src/web_workers/shared/messaging_api'); var event_dispatcher_1 = require('angular2/src/web_workers/worker/event_dispatcher'); var compiler_1 = require('angular2/src/compiler/compiler'); /** * Initialize the Angular 'platform' on the page in a manner suitable for applications * running in a web worker. Applications running on a web worker do not have direct * access to DOM APIs. * * See {@link PlatformRef} for details on the Angular platform. * *##Without specified providers * * If no providers are specified, `platform`'s behavior depends on whether an existing * platform exists: * * If no platform exists, a new one will be created with the default {@link platformProviders}. * * If a platform already exists, it will be returned (regardless of what providers it * was created with). This is a convenience feature, allowing for multiple applications * to be loaded into the same platform without awareness of each other. * *##With specified providers * * It is also possible to specify providers to be made in the new platform. These providers * will be shared between all applications on the page. For example, an abstraction for * the browser cookie jar should be bound at the platform level, because there is only one * cookie jar regardless of how many applications on the age will be accessing it. * * If providers are specified directly, `platform` will create the Angular platform with * them if a platform did not exist already. If it did exist, however, an error will be * thrown. * *##For Web Worker Appplications * * This version of `platform` initializes Angular for use with applications * that do not directly touch the DOM, such as applications which run in a * web worker context. Applications that need direct access to the DOM should * use `platform` from `core/application_common` instead. */ function platform(bindings) { return application_ref_1.platformCommon(bindings); } exports.platform = platform; var PrintLogger = (function () { function PrintLogger() { this.log = lang_1.print; this.logError = lang_1.print; this.logGroup = lang_1.print; } PrintLogger.prototype.logGroupEnd = function () { }; return PrintLogger; })(); function webWorkerProviders(appComponentType, bus, initData) { return [ compiler_1.compilerProviders(), serializer_1.Serializer, di_1.provide(message_bus_1.MessageBus, { useValue: bus }), di_1.provide(client_message_broker_1.ClientMessageBrokerFactory, { useClass: client_message_broker_1.ClientMessageBrokerFactory_ }), di_1.provide(service_message_broker_1.ServiceMessageBrokerFactory, { useClass: service_message_broker_1.ServiceMessageBrokerFactory_ }), renderer_1.WebWorkerRenderer, di_1.provide(api_1.Renderer, { useExisting: renderer_1.WebWorkerRenderer }), di_1.provide(api_2.ON_WEB_WORKER, { useValue: true }), render_view_with_fragments_store_1.RenderViewWithFragmentsStore, render_proto_view_ref_store_1.RenderProtoViewRefStore, di_1.provide(exceptions_1.ExceptionHandler, { useFactory: function () { return new exceptions_1.ExceptionHandler(new PrintLogger()); }, deps: [] }), xhr_impl_1.WebWorkerXHRImpl, di_1.provide(xhr_1.XHR, { useExisting: xhr_impl_1.WebWorkerXHRImpl }), di_1.provide(app_root_url_1.AppRootUrl, { useValue: new app_root_url_1.AppRootUrl(initData['rootUrl']) }), event_dispatcher_1.WebWorkerEventDispatcher, forms_1.FORM_PROVIDERS ]; } function bootstrapWebWorkerCommon(appComponentType, bus, appProviders) { if (appProviders === void 0) { appProviders = null; } var bootstrapProcess = async_1.PromiseWrapper.completer(); var appPromise = platform().asyncApplication(function (zone) { // TODO(rado): prepopulate template cache, so applications with only // index.html and main.js are possible. // bus.attachToZone(zone); bus.initChannel(messaging_api_1.SETUP_CHANNEL, false); var subscription; var emitter = bus.from(messaging_api_1.SETUP_CHANNEL); subscription = async_2.ObservableWrapper.subscribe(emitter, function (message) { var bindings = [application_ref_1.applicationCommonProviders(), webWorkerProviders(appComponentType, bus, message)]; if (lang_1.isPresent(appProviders)) { bindings.push(appProviders); } bootstrapProcess.resolve(bindings); async_2.ObservableWrapper.dispose(subscription); }); async_2.ObservableWrapper.callNext(bus.to(messaging_api_1.SETUP_CHANNEL), "ready"); return bootstrapProcess.promise; }); return async_1.PromiseWrapper.then(appPromise, function (app) { return app.bootstrap(appComponentType); }); } exports.bootstrapWebWorkerCommon = bootstrapWebWorkerCommon; //# sourceMappingURL=application_common.js.map