{"version":3,"sources":["injector.js"],"names":[],"mappings":"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","file":"angular2/src/di/injector.js","sourcesContent":["import {Map, List, MapWrapper, ListWrapper} from 'angular2/src/facade/collection';\nimport {ResolvedBinding, Binding, BindingBuilder, bind} from './binding';\nimport {AbstractBindingError, NoBindingError, AsyncBindingError, CyclicDependencyError,\n  InstantiationError, InvalidBindingError} from './exceptions';\nimport {FunctionWrapper, Type, isPresent, isBlank} from 'angular2/src/facade/lang';\nimport {Promise, PromiseWrapper} from 'angular2/src/facade/async';\nimport {Key} from './key';\n\nvar _constructing = new Object();\nvar _notFound = new Object();\n\nclass _Waiting {\n  promise:Promise;\n  constructor(promise:Promise) {\n    this.promise = promise;\n  }\n}\nfunction _isWaiting(obj):boolean {\n  return obj instanceof _Waiting;\n}\n\n\n/**\n * A dependency injection container used for resolving dependencies.\n *\n * An `Injector` is a replacement for a `new` operator, which can automatically resolve the constructor dependencies.\n * In typical use, application code asks for the dependencies in the constructor and they are resolved by the\n * `Injector`.\n *\n * ## Example:\n *\n * Suppose that we want to inject an `Engine` into class `Car`, we would define it like this:\n *\n * ```javascript\n * class Engine {\n * }\n *\n * class Car {\n * \tconstructor(@Inject(Engine) engine) {\n * \t}\n * }\n *\n * ```\n *\n * Next we need to write the code that creates and instantiates the `Injector`. We then ask for the `root` object,\n * `Car`, so that the `Injector` can recursively build all of that object's dependencies.\n *\n * ```javascript\n * main() {\n *   var injector = Injector.resolveAndCreate([Car, Engine]);\n *\n *   // Get a reference to the `root` object, which will recursively instantiate the tree.\n *   var car = injector.get(Car);\n * }\n * ```\n * Notice that we don't use the `new` operator because we explicitly want to have the `Injector` resolve all of the\n * object's dependencies automatically.\n *\n * @exportedAs angular2/di\n */\nexport class Injector {\n  _bindings:List;\n  _instances:List;\n  _parent:Injector;\n  _defaultBindings:boolean;\n  _asyncStrategy: _AsyncInjectorStrategy;\n  _syncStrategy:_SyncInjectorStrategy;\n\n  /**\n   * Turns a list of binding definitions into an internal resolved list of resolved bindings.\n   *\n   * A resolution is a process of flattening multiple nested lists and converting individual bindings into a\n   * list of {@link ResolvedBinding}s. The resolution can be cached by `resolve` for the {@link Injector} for\n   * performance-sensitive code.\n   *\n   * @param `bindings` can be a list of `Type`, {@link Binding}, {@link ResolvedBinding}, or a recursive\n   * list of more bindings.\n   *\n   * The returned list is sparse, indexed by `id` for the {@link Key}. It is generally not useful to application code\n   * other than for passing it to {@link Injector} functions that require resolved binding lists, such as\n   * `fromResolvedBindings` and `createChildFromResolved`.\n   */\n  static resolve(bindings:List/*<ResolvedBinding|Binding|Type|List>*/):List<ResolvedBinding> {\n    var resolvedBindings = _resolveBindings(bindings);\n    var flatten = _flattenBindings(resolvedBindings, MapWrapper.create());\n    return _createListOfBindings(flatten);\n  }\n\n  /**\n   * Resolves bindings and creates an injector based on those bindings. This function is slower than the\n   * corresponding `fromResolvedBindings` because it needs to resolve bindings first. See `resolve` for the\n   * {@link Injector}.\n   *\n   * Prefer `fromResolvedBindings` in performance-critical code that creates lots of injectors.\n   *\n   * @param `bindings` can be a list of `Type`, {@link Binding}, {@link ResolvedBinding}, or a recursive list of more\n   * bindings.\n   * @param `defaultBindings` Setting to true will auto-create bindings.\n   */\n  static resolveAndCreate(bindings:List/*<ResolvedBinding|Binding|Type|List>*/, {defaultBindings=false}={}) {\n    return new Injector(Injector.resolve(bindings), null, defaultBindings);\n  }\n\n  /**\n   * Creates an injector from previously resolved bindings. This bypasses resolution and flattening. This API is the\n   * recommended way to construct injectors in performance-sensitive parts.\n   *\n   * @param `bindings` A sparse list of {@link ResolvedBinding}s. See `resolve` for the {@link Injector}.\n   * @param `defaultBindings` Setting to true will auto-create bindings.\n   */\n  static fromResolvedBindings(bindings:List<ResolvedBinding>, {defaultBindings=false}={}) {\n    return new Injector(bindings, null, defaultBindings);\n  }\n\n  /**\n   * @param `bindings` A sparse list of {@link ResolvedBinding}s. See `resolve` for the {@link Injector}.\n   * @param `parent` Parent Injector or `null` if root Injector.\n   * @param `defaultBindings` Setting to true will auto-create bindings. (Only use with root injector.)\n   */\n  constructor(bindings:List<ResolvedBinding>, parent:Injector, defaultBindings:boolean) {\n    this._bindings = bindings;\n    this._instances = this._createInstances();\n    this._parent = parent;\n    this._defaultBindings = defaultBindings;\n    this._asyncStrategy = new _AsyncInjectorStrategy(this);\n    this._syncStrategy = new _SyncInjectorStrategy(this);\n  }\n\n  /**\n   * Retrieves an instance from the injector.\n   *\n   * @param `token`: usually the `Type` of an object. (Same as the token used while setting up a binding).\n   * @returns an instance represented by the token. Throws if not found.\n   */\n  get(token) {\n\n    return this._getByKey(Key.get(token), false, false, false);\n  }\n\n\n  /**\n   * Retrieves an instance from the injector.\n   *\n   * @param `token`: usually a `Type`. (Same as the token used while setting up a binding).\n   * @returns an instance represented by the token. Returns `null` if not found.\n   */\n  getOptional(token) {\n    return this._getByKey(Key.get(token), false, false, true);\n  }\n\n  /**\n   * Retrieves an instance from the injector asynchronously. Used with asynchronous bindings.\n   *\n   * @param `token`: usually a `Type`. (Same as token used while setting up a binding).\n   * @returns a `Promise` which resolves to the instance represented by the token.\n   */\n  asyncGet(token):Promise {\n    return this._getByKey(Key.get(token), true, false, false);\n  }\n\n  /**\n   * Creates a child injector and loads a new set of bindings into it.\n   *\n   * A resolution is a process of flattening multiple nested lists and converting individual bindings into a\n   * list of {@link ResolvedBinding}s. The resolution can be cached by `resolve` for the {@link Injector} for\n   * performance-sensitive code.\n   *\n   * @param `bindings` can be a list of `Type`, {@link Binding}, {@link ResolvedBinding}, or a recursive\n   * list of more bindings.\n   *\n   */\n  resolveAndCreateChild(bindings:List/*<ResolvedBinding|Binding|Type|List>*/):Injector {\n    return new Injector(Injector.resolve(bindings), this, false);\n  }\n\n  /**\n   * Creates a child injector and loads a new set of {@link ResolvedBinding}s into it.\n   *\n   * @param `bindings`: A sparse list of  {@link ResolvedBinding}s. See `resolve` for the {@link Injector}.\n   * @returns a new child {@link Injector}.\n   */\n  createChildFromResolved(bindings:List<ResolvedBinding>):Injector {\n    return new Injector(bindings, this, false);\n  }\n\n  _createInstances():List {\n    return ListWrapper.createFixedSize(Key.numberOfKeys + 1);\n  }\n\n  _getByKey(key:Key, returnPromise:boolean, returnLazy:boolean, optional:boolean) {\n    if (returnLazy) {\n      return () => this._getByKey(key, returnPromise, false, optional);\n    }\n\n    var strategy = returnPromise ? this._asyncStrategy : this._syncStrategy;\n\n    var instance = strategy.readFromCache(key);\n    if (instance !== _notFound) return instance;\n\n    instance = strategy.instantiate(key);\n    if (instance !== _notFound) return instance;\n\n    if (isPresent(this._parent)) {\n      return this._parent._getByKey(key, returnPromise, returnLazy, optional);\n    }\n\n    if (optional) {\n      return null;\n    } else {\n      throw new NoBindingError(key);\n    }\n  }\n\n  _resolveDependencies(key:Key, binding:ResolvedBinding, forceAsync:boolean):List {\n    try {\n      var getDependency = d => this._getByKey(d.key, forceAsync || d.asPromise, d.lazy, d.optional);\n      return ListWrapper.map(binding.dependencies, getDependency);\n    } catch (e) {\n      this._clear(key);\n      if (e instanceof AbstractBindingError) e.addKey(key);\n      throw e;\n    }\n  }\n\n  _getInstance(key:Key) {\n    if (this._instances.length <= key.id) return null;\n    return ListWrapper.get(this._instances, key.id);\n  }\n\n  _setInstance(key:Key, obj) {\n    ListWrapper.set(this._instances, key.id, obj);\n  }\n\n  _getBinding(key:Key) {\n    var binding = this._bindings.length <= key.id ?\n      null :\n      ListWrapper.get(this._bindings, key.id);\n\n    if (isBlank(binding) && this._defaultBindings) {\n      return bind(key.token).toClass(key.token).resolve();\n    } else {\n      return binding;\n    }\n  }\n\n  _markAsConstructing(key:Key) {\n    this._setInstance(key, _constructing);\n  }\n\n  _clear(key:Key) {\n    this._setInstance(key, null);\n  }\n}\n\n\nclass _SyncInjectorStrategy {\n  injector:Injector;\n  constructor(injector:Injector) {\n    this.injector = injector;\n  }\n\n  readFromCache(key:Key) {\n    if (key.token === Injector) {\n      return this.injector;\n    }\n\n    var instance = this.injector._getInstance(key);\n\n    if (instance === _constructing) {\n      throw new CyclicDependencyError(key);\n    } else if (isPresent(instance) && !_isWaiting(instance)) {\n      return instance;\n    } else {\n      return _notFound;\n    }\n  }\n\n  instantiate(key:Key) {\n    var binding = this.injector._getBinding(key);\n    if (isBlank(binding)) return _notFound;\n\n    if (binding.providedAsPromise) throw new AsyncBindingError(key);\n\n    //add a marker so we can detect cyclic dependencies\n    this.injector._markAsConstructing(key);\n\n    var deps = this.injector._resolveDependencies(key, binding, false);\n    return this._createInstance(key, binding, deps);\n  }\n\n  _createInstance(key:Key, binding:ResolvedBinding, deps:List) {\n    try {\n      var instance = FunctionWrapper.apply(binding.factory, deps);\n      this.injector._setInstance(key, instance);\n      return instance;\n    } catch (e) {\n      this.injector._clear(key);\n      throw new InstantiationError(e, key);\n    }\n  }\n}\n\n\nclass _AsyncInjectorStrategy {\n  injector:Injector;\n  constructor(injector:Injector) {\n    this.injector = injector;\n  }\n\n  readFromCache(key:Key) {\n    if (key.token === Injector) {\n      return PromiseWrapper.resolve(this.injector);\n    }\n\n    var instance = this.injector._getInstance(key);\n\n    if (instance === _constructing) {\n      throw new CyclicDependencyError(key);\n    } else if (_isWaiting(instance)) {\n      return instance.promise;\n    } else if (isPresent(instance)) {\n      return PromiseWrapper.resolve(instance);\n    } else {\n      return _notFound;\n    }\n  }\n\n  instantiate(key:Key) {\n    var binding = this.injector._getBinding(key);\n    if (isBlank(binding)) return _notFound;\n\n    //add a marker so we can detect cyclic dependencies\n    this.injector._markAsConstructing(key);\n\n    var deps = this.injector._resolveDependencies(key, binding, true);\n    var depsPromise = PromiseWrapper.all(deps);\n\n    var promise = PromiseWrapper\n      .then(depsPromise, null, (e) => this._errorHandler(key, e))\n      .then(deps => this._findOrCreate(key, binding, deps))\n      .then(instance => this._cacheInstance(key, instance));\n\n    this.injector._setInstance(key, new _Waiting(promise));\n    return promise;\n  }\n\n  _errorHandler(key:Key, e):Promise {\n    if (e instanceof AbstractBindingError) e.addKey(key);\n    return PromiseWrapper.reject(e);\n  }\n\n  _findOrCreate(key:Key, binding:ResolvedBinding, deps:List) {\n    try {\n      var instance = this.injector._getInstance(key);\n      if (!_isWaiting(instance)) return instance;\n      return FunctionWrapper.apply(binding.factory, deps);\n    } catch (e) {\n      this.injector._clear(key);\n      throw new InstantiationError(e, key);\n    }\n  }\n\n  _cacheInstance(key, instance) {\n    this.injector._setInstance(key, instance);\n    return instance\n  }\n}\n\nfunction _resolveBindings(bindings:List): List {\n  var resolvedList = ListWrapper.createFixedSize(bindings.length);\n  for (var i = 0; i < bindings.length; i++) {\n    var unresolved = bindings[i];\n    var resolved;\n    if (unresolved instanceof ResolvedBinding) {\n      resolved = unresolved;  // ha-ha! I'm easily amused\n    } else if (unresolved instanceof Type) {\n      resolved = bind(unresolved).toClass(unresolved).resolve();\n    } else if (unresolved instanceof Binding) {\n      resolved = unresolved.resolve();\n    } else if (unresolved instanceof List) {\n      resolved = _resolveBindings(unresolved);\n    } else if (unresolved instanceof BindingBuilder) {\n      throw new InvalidBindingError(unresolved.token);\n    } else {\n      throw new InvalidBindingError(unresolved);\n    }\n    resolvedList[i] = resolved;\n  }\n  return resolvedList;\n}\n\nfunction _createListOfBindings(flattenedBindings):List {\n  var bindings = ListWrapper.createFixedSize(Key.numberOfKeys + 1);\n  MapWrapper.forEach(flattenedBindings, (v, keyId) => bindings[keyId] = v);\n  return bindings;\n}\n\nfunction _flattenBindings(bindings:List, res:Map) {\n  ListWrapper.forEach(bindings, function (b) {\n    if (b instanceof ResolvedBinding) {\n      MapWrapper.set(res, b.key.id, b);\n    } else if (b instanceof List) {\n      _flattenBindings(b, res);\n    }\n  });\n  return res;\n}\n"]}