{"version":3,"sources":["key.js"],"names":[],"mappings":"AAAA;AAAA,KAAO,EAAC,UAAS,CAAC,KAAO,iCAA+B,CAAC;AAiBzD,KAAO,MAAM,IAAE;AAIb,YAAU,CAAE,KAAI,CAAG,CAAA,EAAC,CAAa;AAC/B,OAAG,MAAM,EAAI,MAAI,CAAC;AAClB,OAAG,GAAG,EAAI,GAAC,CAAC;AACZ,OAAG,SAAS,EAAI,KAAG,CAAC;EACtB;AAAA,AAKA,OAAO,IAAE,CAAE,KAAI;AA9BjB,SAAO,CAAA,MAAK,WAAW,AAAC,CAAC,CA+Bd,kBAAiB,IAAI,AAAC,CAAC,KAAI,CAAC,CA/BI,CA8BvB,IAAE,CA9ByC,CAAA;EAgC7D;AAKA,WAAW,aAAW,EAAc;AAClC,SAAO,CAAA,kBAAiB,aAAa,CAAC;EACxC;AAAA,AACF;AAAA,AAKA,KAAO,MAAM,YAAU;AAErB,YAAU,CAAE,AAAD,CAAG;AACZ,OAAG,SAAS,EAAI,CAAA,UAAS,OAAO,AAAC,EAAC,CAAC;EACrC;AAAA,AAEA,IAAE,CAAE,KAAI;AACN,OAAI,KAAI,WAAa,IAAE;AApD3B,WAAO,CAAA,MAAK,WAAW,AAAC,CAAC,CAoDY,KAAI,CApDE,CAmD9B,IAAE,CAnDgD,CAAA;AAoDrB,AAEtC,OAAI,UAAS,SAAS,AAAC,CAAC,IAAG,SAAS,CAAG,MAAI,CAAC,CAAG;AAtDnD,WAAO,CAAA,MAAK,WAAW,AAAC,CAAC,CAuDZ,UAAS,IAAI,AAAC,CAAC,IAAG,SAAS,CAAG,MAAI,CAAC,CAvDL,CAmD9B,IAAE,CAnDgD,CAAA;IAwD3D;AAAA,AAEI,MAAA,CAAA,MAAK,EAAI,IAAI,IAAE,AAAC,CAAC,KAAI,CAAG,CAAA,GAAE,aAAa,CAAC,CAAC;AAC7C,aAAS,IAAI,AAAC,CAAC,IAAG,SAAS,CAAG,MAAI,CAAG,OAAK,CAAC,CAAC;AA3DhD,SAAO,CAAA,MAAK,WAAW,AAAC,CAAC,CA4Dd,MAAK,CA5D2B,CAmD9B,IAAE,CAnDgD,CAAA;EA6D7D;AAEA,IAAI,aAAW,EAAc;AAC3B,SAAO,CAAA,UAAS,KAAK,AAAC,CAAC,IAAG,SAAS,CAAC,CAAC;EACvC;AAAA,AACF;AAAA,AAEI,EAAA,CAAA,kBAAiB,EAAI,IAAI,YAAU,AAAC,EAAC,CAAC;AAC1C","file":"angular2/src/di/key.es6","sourcesContent":["import {MapWrapper} from 'angular2/src/facade/collection';\n//import {int} from 'angular2/src/facade/lang';\n\n// TODO: uncoment `int` once https://github.com/angular/angular/issues/1414 is fixed\n\n/**\n * A unique object used for retrieving items from the {@link Injector}.\n *\n * Keys have:\n * - a system-wide unique `id`.\n * - a `token`, usually the `Type` of the instance.\n *\n * Keys are used internally by the {@link Injector} because their system-wide unique `id`s allow the\n * injector to index in arrays rather than looking up items in maps.\n *\n * @exportedAs angular2/di\n */\nexport class Key {\n  token;\n  id/* :int */;\n  metadata:any;\n  constructor(token, id/* :int */) {\n    this.token = token;\n    this.id = id;\n    this.metadata = null;\n  }\n\n  /**\n   * Retrieves a `Key` for a token.\n   */\n  static get(token):Key {\n    return _globalKeyRegistry.get(token);\n  }\n\n  /**\n   * @returns the number of keys registered in the system.\n   */\n  static get numberOfKeys()/* :int */ {\n    return _globalKeyRegistry.numberOfKeys;\n  }\n}\n\n/**\n * @private\n */\nexport class KeyRegistry {\n  _allKeys:Map;\n  constructor() {\n    this._allKeys = MapWrapper.create();\n  }\n\n  get(token):Key {\n    if (token instanceof Key) return token;\n\n    if (MapWrapper.contains(this._allKeys, token)) {\n      return MapWrapper.get(this._allKeys, token);\n    }\n\n    var newKey = new Key(token, Key.numberOfKeys);\n    MapWrapper.set(this._allKeys, token, newKey);\n    return newKey;\n  }\n\n  get numberOfKeys()/* :int */ {\n    return MapWrapper.size(this._allKeys);\n  }\n}\n\nvar _globalKeyRegistry = new KeyRegistry();\n"]}