UNPKG

aurelia-bootstrap

Version:
146 lines (124 loc) 4.74 kB
/* */ define(['exports', 'aurelia-pal', 'aurelia-pal-browser', 'aurelia-polyfills'], function (exports, _aureliaPal, _aureliaPalBrowser) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.bootstrap = bootstrap; var bootstrapQueue = []; var sharedLoader = null; var Aurelia = null; function onBootstrap(callback) { return new Promise(function (resolve, reject) { if (sharedLoader) { resolve(callback(sharedLoader)); } else { bootstrapQueue.push(function () { try { resolve(callback(sharedLoader)); } catch (e) { reject(e); } }); } }); } function ready(global) { return new Promise(function (resolve, reject) { if (global.document.readyState === 'complete') { resolve(global.document); } else { global.document.addEventListener('DOMContentLoaded', completed); global.addEventListener('load', completed); } function completed() { global.document.removeEventListener('DOMContentLoaded', completed); global.removeEventListener('load', completed); resolve(global.document); } }); } function createLoader() { if (_aureliaPal.PLATFORM.Loader) { return Promise.resolve(new _aureliaPal.PLATFORM.Loader()); } if (window.System && typeof window.System.import === 'function') { return System.normalize('aurelia-bootstrapper').then(function (bootstrapperName) { return System.normalize('aurelia-loader-default', bootstrapperName); }).then(function (loaderName) { return System.import(loaderName).then(function (m) { return new m.DefaultLoader(); }); }); } if (typeof window.require === 'function') { return new Promise(function (resolve, reject) { return require(['aurelia-loader-default'], function (m) { return resolve(new m.DefaultLoader()); }, reject); }); } return Promise.reject('No PLATFORM.Loader is defined and there is neither a System API (ES6) or a Require API (AMD) globally available to load your app.'); } function preparePlatform(loader) { return loader.normalize('aurelia-bootstrapper').then(function (bootstrapperName) { return loader.normalize('aurelia-framework', bootstrapperName).then(function (frameworkName) { loader.map('aurelia-framework', frameworkName); return Promise.all([loader.normalize('aurelia-dependency-injection', frameworkName).then(function (diName) { return loader.map('aurelia-dependency-injection', diName); }), loader.normalize('aurelia-router', bootstrapperName).then(function (routerName) { return loader.map('aurelia-router', routerName); }), loader.normalize('aurelia-logging-console', bootstrapperName).then(function (loggingConsoleName) { return loader.map('aurelia-logging-console', loggingConsoleName); })]).then(function () { return loader.loadModule(frameworkName).then(function (m) { return Aurelia = m.Aurelia; }); }); }); }); } function handleApp(loader, appHost) { var moduleId = appHost.getAttribute('aurelia-app') || appHost.getAttribute('data-aurelia-app'); return config(loader, appHost, moduleId); } function config(loader, appHost, configModuleId) { var aurelia = new Aurelia(loader); aurelia.host = appHost; aurelia.configModuleId = configModuleId || null; if (configModuleId) { return loader.loadModule(configModuleId).then(function (customConfig) { return customConfig.configure(aurelia); }); } aurelia.use.standardConfiguration().developmentLogging(); return aurelia.start().then(function () { return aurelia.setRoot(); }); } function run() { return ready(window).then(function (doc) { (0, _aureliaPalBrowser.initialize)(); var appHost = doc.querySelectorAll('[aurelia-app],[data-aurelia-app]'); return createLoader().then(function (loader) { return preparePlatform(loader).then(function () { for (var i = 0, ii = appHost.length; i < ii; ++i) { handleApp(loader, appHost[i]).catch(console.error.bind(console)); } sharedLoader = loader; for (var _i = 0, _ii = bootstrapQueue.length; _i < _ii; ++_i) { bootstrapQueue[_i](); } bootstrapQueue = null; }); }); }); } function bootstrap(configure) { return onBootstrap(function (loader) { var aurelia = new Aurelia(loader); return configure(aurelia); }); } run(); });