UNPKG

ember-source

Version:

A JavaScript framework for creating ambitious web applications

80 lines (75 loc) 2.22 kB
import { warn, debug } from '../@ember/debug/index.js'; import VERSION from '../ember/version.js'; import { g as get } from './property_get-CIBS9umw.js'; import { assert } from '../@ember/debug/lib/assert.js'; /** @module ember */ /** Helper class that allows you to register your library with Ember. Singleton created at `Ember.libraries`. @class Libraries @constructor @private */ class Libraries { _registry; _coreLibIndex; constructor() { this._registry = []; this._coreLibIndex = 0; } _getLibraryByName(name) { let libs = this._registry; for (let lib of libs) { if (lib.name === name) { return lib; } } return undefined; } register(name, version, isCoreLibrary) { let index = this._registry.length; if (!this._getLibraryByName(name)) { if (isCoreLibrary) { index = this._coreLibIndex++; } this._registry.splice(index, 0, { name, version }); } else { (warn(`Library "${name}" is already registered with Ember.`, false, { id: 'ember-metal.libraries-register' })); } } registerCoreLibrary(name, version) { this.register(name, version, true); } deRegister(name) { let lib = this._getLibraryByName(name); let index; if (lib) { index = this._registry.indexOf(lib); this._registry.splice(index, 1); } } } { Libraries.prototype.logVersions = function () { let libs = this._registry; let nameLengths = libs.map(item => get(item, 'name.length')); (!(nameLengths instanceof Array && nameLengths.every(n => typeof n === 'number')) && assert('nameLengths is number array', nameLengths instanceof Array && nameLengths.every(n => typeof n === 'number'))); let maxNameLength = Math.max.apply(null, nameLengths); debug('-------------------------------'); for (let lib of libs) { let spaces = new Array(maxNameLength - lib.name.length + 1).join(' '); debug([lib.name, spaces, ' : ', lib.version].join('')); } debug('-------------------------------'); }; } const LIBRARIES = new Libraries(); LIBRARIES.registerCoreLibrary('Ember', VERSION); export { LIBRARIES as L, Libraries as a };