Socket
Socket
Sign inDemoInstall

@glimmer/di

Package Overview
Dependencies
0
Maintainers
10
Versions
14
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.11 to 0.2.0

dist/amd/es5/glimmer-di.js

5

Brocfile.js
"use strict";
const build = require('@glimmer/build');
const buildVendorPackage = require('@glimmer/build/lib/build-vendor-package');
let buildOptions = {};
module.exports = build(buildOptions);
module.exports = build();

33

dist/commonjs/es2017/container.js

@@ -33,4 +33,7 @@ 'use strict';

let singleton = this._registry.registeredOption(specifier, 'singleton') !== false;
if (singleton && this._lookups[specifier]) {
return this._lookups[specifier];
if (singleton) {
let lookup = this._lookups[specifier];
if (lookup) {
return lookup.instance;
}
}

@@ -44,7 +47,7 @@ let factory = this.factoryFor(specifier);

}
let object = factory.create();
if (singleton && object) {
this._lookups[specifier] = object;
let instance = factory.create();
if (singleton && instance) {
this._lookups[specifier] = { factory, instance };
}
return object;
return instance;
}

@@ -54,2 +57,11 @@ defaultInjections(specifier) {

}
teardown() {
let specifiers = Object.keys(this._lookups);
for (let i = 0; i < specifiers.length; i++) {
let specifier = specifiers[i];
let { factory, instance } = this._lookups[specifier];
factory.teardown(instance);
}
}
defaultTeardown(instance) {}
buildInjections(specifier) {

@@ -69,2 +81,9 @@ let hash = this.defaultInjections(specifier);

class: factoryDefinition,
teardown: instance => {
if (factoryDefinition.teardown) {
factoryDefinition.teardown(instance);
} else {
this.defaultTeardown(instance);
}
},
create(options) {

@@ -78,2 +97,2 @@ let mergedOptions = Object.assign({}, injections, options);

exports.default = Container;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFXRSxnQkFBWSxBQUF3QixVQUFFLFdBQXFCLEFBQUk7QUFDN0QsQUFBSSxhQUFDLEFBQVMsWUFBRyxBQUFRLEFBQUM7QUFDMUIsQUFBSSxhQUFDLEFBQVMsWUFBRyxBQUFRLEFBQUM7QUFDMUIsQUFBSSxhQUFDLEFBQVEsV0FBRyxBQUFFLEFBQUM7QUFDbkIsQUFBSSxhQUFDLEFBQXlCLDRCQUFHLEFBQUUsQUFBQyxBQUN0QztBQUFDO0FBRUQsQUFBVSxlQUFDLEFBQWlCO0FBQzFCLFlBQUksQUFBaUIsb0JBQTJCLEFBQUksS0FBQyxBQUF5QiwwQkFBQyxBQUFTLEFBQUMsQUFBQztBQUUxRixBQUFFLEFBQUMsWUFBQyxDQUFDLEFBQWlCLEFBQUMsbUJBQUMsQUFBQztBQUN2QixBQUFFLEFBQUMsZ0JBQUMsQUFBSSxLQUFDLEFBQVMsQUFBQyxXQUFDLEFBQUM7QUFDbkIsQUFBaUIsb0NBQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFRLFNBQUMsQUFBUyxBQUFDLEFBQUMsQUFDekQ7QUFBQztBQUVELEFBQUUsQUFBQyxnQkFBQyxDQUFDLEFBQWlCLEFBQUMsbUJBQUMsQUFBQztBQUN2QixBQUFpQixvQ0FBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQVksYUFBQyxBQUFTLEFBQUMsQUFBQyxBQUM3RDtBQUFDO0FBRUQsQUFBRSxBQUFDLGdCQUFDLEFBQWlCLEFBQUMsbUJBQUMsQUFBQztBQUN0QixBQUFJLHFCQUFDLEFBQXlCLDBCQUFDLEFBQVMsQUFBQyxhQUFHLEFBQWlCLEFBQUMsQUFDaEU7QUFBQyxBQUNIO0FBQUM7QUFFRCxBQUFFLEFBQUMsWUFBQyxDQUFDLEFBQWlCLEFBQUMsbUJBQUMsQUFBQztBQUN2QixBQUFNLEFBQUMsQUFDVDtBQUFDO0FBRUQsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFZLGFBQUMsQUFBUyxXQUFFLEFBQWlCLEFBQUMsQUFBQyxBQUN6RDtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQWlCO0FBQ3RCLFlBQUksQUFBUyxBQUFHLFlBQUMsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFnQixpQkFBQyxBQUFTLFdBQUUsQUFBVyxBQUFDLGlCQUFLLEFBQUssQUFBQyxBQUFDO0FBRXBGLEFBQUUsQUFBQyxZQUFDLEFBQVMsYUFBSSxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQVMsQUFBQyxBQUFDLFlBQUMsQUFBQztBQUMxQyxBQUFNLG1CQUFDLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBUyxBQUFDLEFBQUMsQUFDbEM7QUFBQztBQUVELFlBQUksQUFBTyxVQUFHLEFBQUksS0FBQyxBQUFVLFdBQUMsQUFBUyxBQUFDLEFBQUM7QUFDekMsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFPLEFBQUMsU0FBQyxBQUFDO0FBQUMsQUFBTSxBQUFDLEFBQUM7QUFBQztBQUV6QixBQUFFLEFBQUMsWUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQWdCLGlCQUFDLEFBQVMsV0FBRSxBQUFhLEFBQUMsbUJBQUssQUFBSyxBQUFDLE9BQUMsQUFBQztBQUN4RSxBQUFNLG1CQUFDLEFBQU8sUUFBQyxBQUFLLEFBQUMsQUFDdkI7QUFBQztBQUVELFlBQUksQUFBTSxTQUFHLEFBQU8sUUFBQyxBQUFNLEFBQUUsQUFBQztBQUU5QixBQUFFLEFBQUMsWUFBQyxBQUFTLGFBQUksQUFBTSxBQUFDLFFBQUMsQUFBQztBQUN4QixBQUFJLGlCQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsYUFBRyxBQUFNLEFBQUMsQUFDcEM7QUFBQztBQUVELEFBQU0sZUFBQyxBQUFNLEFBQUMsQUFDaEI7QUFBQztBQUVELEFBQWlCLHNCQUFDLEFBQWlCO0FBQ2pDLEFBQU0sZUFBQyxBQUFFLEFBQUMsQUFDWjtBQUFDO0FBRU8sQUFBZSxvQkFBQyxBQUFpQjtBQUN2QyxZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBaUIsa0JBQUMsQUFBUyxBQUFDLEFBQUM7QUFDN0MsWUFBSSxBQUFVLGFBQWdCLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBb0IscUJBQUMsQUFBUyxBQUFDLEFBQUM7QUFDN0UsWUFBSSxBQUFvQixBQUFDO0FBRXpCLEFBQUcsQUFBQyxhQUFDLElBQUksQUFBQyxJQUFHLEFBQUMsR0FBRSxBQUFDLElBQUcsQUFBVSxXQUFDLEFBQU0sUUFBRSxBQUFDLEFBQUUsS0FBRSxBQUFDO0FBQzNDLEFBQVMsd0JBQUcsQUFBVSxXQUFDLEFBQUMsQUFBQyxBQUFDO0FBQzFCLEFBQUksaUJBQUMsQUFBUyxVQUFDLEFBQVEsQUFBQyxZQUFHLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBUyxVQUFDLEFBQU0sQUFBQyxBQUFDLEFBQzNEO0FBQUM7QUFFRCxBQUFNLGVBQUMsQUFBSSxBQUFDLEFBQ2Q7QUFBQztBQUVPLEFBQVksaUJBQUMsQUFBaUIsV0FBRSxBQUF5QztBQUMvRSxZQUFJLEFBQVUsYUFBRyxBQUFJLEtBQUMsQUFBZSxnQkFBQyxBQUFTLEFBQUMsQUFBQztBQUVqRCxBQUFNO0FBQ0osQUFBSyxtQkFBRSxBQUFpQjtBQUN4QixBQUFNLG1CQUFDLEFBQU87QUFDWixvQkFBSSxBQUFhLGdCQUFHLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBRSxJQUFFLEFBQVUsWUFBRSxBQUFPLEFBQUMsQUFBQztBQUUzRCxBQUFNLHVCQUFDLEFBQWlCLGtCQUFDLEFBQU0sT0FBQyxBQUFhLEFBQUMsQUFBQyxBQUNqRDtBQUFDLEFBQ0YsQUFDSDtBQVJTO0FBUVIsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvcnksIEZhY3RvcnlEZWZpbml0aW9uIH0gZnJvbSAnLi9mYWN0b3J5JztcbmltcG9ydCB7IFJlZ2lzdHJ5UmVhZGVyLCBJbmplY3Rpb24gfSBmcm9tICcuL3JlZ2lzdHJ5JztcbmltcG9ydCB7IFJlc29sdmVyIH0gZnJvbSAnLi9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0IH0gZnJvbSAnLi9kaWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGFpbmVyIHtcbiAgcHJpdmF0ZSBfcmVnaXN0cnk6IFJlZ2lzdHJ5UmVhZGVyO1xuICBwcml2YXRlIF9yZXNvbHZlcjogUmVzb2x2ZXI7XG4gIHByaXZhdGUgX2xvb2t1cHM6IERpY3Q8YW55PjtcbiAgcHJpdmF0ZSBfZmFjdG9yeURlZmluaXRpb25Mb29rdXBzOiBEaWN0PEZhY3RvcnlEZWZpbml0aW9uPGFueT4+O1xuXG4gIGNvbnN0cnVjdG9yKHJlZ2lzdHJ5OiBSZWdpc3RyeVJlYWRlciwgcmVzb2x2ZXI6IFJlc29sdmVyID0gbnVsbCkge1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gICAgdGhpcy5fcmVzb2x2ZXIgPSByZXNvbHZlcjtcbiAgICB0aGlzLl9sb29rdXBzID0ge307XG4gICAgdGhpcy5fZmFjdG9yeURlZmluaXRpb25Mb29rdXBzID0ge307XG4gIH1cblxuICBmYWN0b3J5Rm9yKHNwZWNpZmllcjogc3RyaW5nKTogRmFjdG9yeTxhbnk+IHtcbiAgICBsZXQgZmFjdG9yeURlZmluaXRpb246IEZhY3RvcnlEZWZpbml0aW9uPGFueT4gPSB0aGlzLl9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHNbc3BlY2lmaWVyXTtcblxuICAgIGlmICghZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgIGlmICh0aGlzLl9yZXNvbHZlcikge1xuICAgICAgICBmYWN0b3J5RGVmaW5pdGlvbiA9IHRoaXMuX3Jlc29sdmVyLnJldHJpZXZlKHNwZWNpZmllcik7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgICAgZmFjdG9yeURlZmluaXRpb24gPSB0aGlzLl9yZWdpc3RyeS5yZWdpc3RyYXRpb24oc3BlY2lmaWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMuX2ZhY3RvcnlEZWZpbml0aW9uTG9va3Vwc1tzcGVjaWZpZXJdID0gZmFjdG9yeURlZmluaXRpb247XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJ1aWxkRmFjdG9yeShzcGVjaWZpZXIsIGZhY3RvcnlEZWZpbml0aW9uKTtcbiAgfVxuXG4gIGxvb2t1cChzcGVjaWZpZXI6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IHNpbmdsZXRvbiA9ICh0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkT3B0aW9uKHNwZWNpZmllciwgJ3NpbmdsZXRvbicpICE9PSBmYWxzZSk7XG5cbiAgICBpZiAoc2luZ2xldG9uICYmIHRoaXMuX2xvb2t1cHNbc3BlY2lmaWVyXSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cHNbc3BlY2lmaWVyXTtcbiAgICB9XG5cbiAgICBsZXQgZmFjdG9yeSA9IHRoaXMuZmFjdG9yeUZvcihzcGVjaWZpZXIpO1xuICAgIGlmICghZmFjdG9yeSkgeyByZXR1cm47IH1cblxuICAgIGlmICh0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkT3B0aW9uKHNwZWNpZmllciwgJ2luc3RhbnRpYXRlJykgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeS5jbGFzcztcbiAgICB9XG5cbiAgICBsZXQgb2JqZWN0ID0gZmFjdG9yeS5jcmVhdGUoKTtcblxuICAgIGlmIChzaW5nbGV0b24gJiYgb2JqZWN0KSB7XG4gICAgICB0aGlzLl9sb29rdXBzW3NwZWNpZmllcl0gPSBvYmplY3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIGRlZmF1bHRJbmplY3Rpb25zKHNwZWNpZmllcjogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSW5qZWN0aW9ucyhzcGVjaWZpZXI6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IGhhc2ggPSB0aGlzLmRlZmF1bHRJbmplY3Rpb25zKHNwZWNpZmllcik7XG4gICAgbGV0IGluamVjdGlvbnM6IEluamVjdGlvbltdID0gdGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJlZEluamVjdGlvbnMoc3BlY2lmaWVyKTtcbiAgICBsZXQgaW5qZWN0aW9uOiBJbmplY3Rpb247XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluamVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluamVjdGlvbiA9IGluamVjdGlvbnNbaV07XG4gICAgICBoYXNoW2luamVjdGlvbi5wcm9wZXJ0eV0gPSB0aGlzLmxvb2t1cChpbmplY3Rpb24uc291cmNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGYWN0b3J5KHNwZWNpZmllcjogc3RyaW5nLCBmYWN0b3J5RGVmaW5pdGlvbjogRmFjdG9yeURlZmluaXRpb248YW55Pik6IEZhY3Rvcnk8YW55PiB7XG4gICAgbGV0IGluamVjdGlvbnMgPSB0aGlzLmJ1aWxkSW5qZWN0aW9ucyhzcGVjaWZpZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYXNzOiBmYWN0b3J5RGVmaW5pdGlvbixcbiAgICAgIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgICAgIGxldCBtZXJnZWRPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgaW5qZWN0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIGZhY3RvcnlEZWZpbml0aW9uLmNyZWF0ZShtZXJnZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFnQkUsZ0JBQVksQUFBd0IsVUFBRSxXQUFxQixBQUFJO0FBQzdELEFBQUksYUFBQyxBQUFTLFlBQUcsQUFBUSxBQUFDO0FBQzFCLEFBQUksYUFBQyxBQUFTLFlBQUcsQUFBUSxBQUFDO0FBQzFCLEFBQUksYUFBQyxBQUFRLFdBQUcsQUFBRSxBQUFDO0FBQ25CLEFBQUksYUFBQyxBQUF5Qiw0QkFBRyxBQUFFLEFBQUMsQUFDdEM7QUFBQztBQUVELEFBQVUsZUFBQyxBQUFpQjtBQUMxQixZQUFJLEFBQWlCLG9CQUEyQixBQUFJLEtBQUMsQUFBeUIsMEJBQUMsQUFBUyxBQUFDLEFBQUM7QUFFMUYsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFpQixBQUFDLG1CQUFDLEFBQUM7QUFDdkIsQUFBRSxBQUFDLGdCQUFDLEFBQUksS0FBQyxBQUFTLEFBQUMsV0FBQyxBQUFDO0FBQ25CLEFBQWlCLG9DQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBUSxTQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ3pEO0FBQUM7QUFFRCxBQUFFLEFBQUMsZ0JBQUMsQ0FBQyxBQUFpQixBQUFDLG1CQUFDLEFBQUM7QUFDdkIsQUFBaUIsb0NBQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFZLGFBQUMsQUFBUyxBQUFDLEFBQUMsQUFDN0Q7QUFBQztBQUVELEFBQUUsQUFBQyxnQkFBQyxBQUFpQixBQUFDLG1CQUFDLEFBQUM7QUFDdEIsQUFBSSxxQkFBQyxBQUF5QiwwQkFBQyxBQUFTLEFBQUMsYUFBRyxBQUFpQixBQUFDLEFBQ2hFO0FBQUMsQUFDSDtBQUFDO0FBRUQsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFpQixBQUFDLG1CQUFDLEFBQUM7QUFDdkIsQUFBTSxBQUFDLEFBQ1Q7QUFBQztBQUVELEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFB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QUMsQUFBZSxnQkFBQyxBQUFTLEFBQUMsQUFBQztBQUVqRCxBQUFNO0FBQ0osQUFBSyxtQkFBRSxBQUFpQjtBQUN4QixBQUFRLHNCQUFHLEFBQVEsUUFBVDtBQUNSLEFBQUUsQUFBQyxvQkFBQyxBQUFpQixrQkFBQyxBQUFRLEFBQUMsVUFBQyxBQUFDO0FBQy9CLEFBQWlCLHNDQUFDLEFBQVEsU0FBQyxBQUFRLEFBQUMsQUFBQyxBQUN2QztBQUFDLEFBQUMsQUFBSSx1QkFBQyxBQUFDO0FBQ04sQUFBSSx5QkFBQyxBQUFlLGdCQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ2pDO0FBQUMsQUFDSDtBQUFDO0FBQ0QsQUFBTSxtQkFBQyxBQUFPO0FBQ1osb0JBQUksQUFBYSxnQkFBRyxBQUFNLE9BQUMsQUFBTSxPQUFDLEFBQUUsSUFBRSxBQUFVLFlBQUUsQUFBTyxBQUFDLEFBQUM7QUFFM0QsQUFBTSx1QkFBQyxBQUFpQixrQkFBQyxBQUFNLE9BQUMsQUFBYSxBQUFDLEFBQUMsQUFDakQ7QUFBQyxBQUNGLEFBQ0g7QUFmUztBQWVSLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYWN0b3J5LCBGYWN0b3J5RGVmaW5pdGlvbiB9IGZyb20gJy4vZmFjdG9yeSc7XG5pbXBvcnQgeyBSZWdpc3RyeVJlYWRlciwgSW5qZWN0aW9uIH0gZnJvbSAnLi9yZWdpc3RyeSc7XG5pbXBvcnQgeyBSZXNvbHZlciB9IGZyb20gJy4vcmVzb2x2ZXInO1xuaW1wb3J0IHsgRGljdCB9IGZyb20gJy4vZGljdCc7XG5cbmludGVyZmFjZSBMb29rdXAge1xuICBmYWN0b3J5OiBGYWN0b3J5PGFueT47XG4gIGluc3RhbmNlOiBhbnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRhaW5lciB7XG4gIHByaXZhdGUgX3JlZ2lzdHJ5OiBSZWdpc3RyeVJlYWRlcjtcbiAgcHJpdmF0ZSBfcmVzb2x2ZXI6IFJlc29sdmVyO1xuICBwcml2YXRlIF9sb29rdXBzOiBEaWN0PExvb2t1cD47XG4gIHByaXZhdGUgX2ZhY3RvcnlEZWZpbml0aW9uTG9va3VwczogRGljdDxGYWN0b3J5RGVmaW5pdGlvbjxhbnk+PjtcblxuICBjb25zdHJ1Y3RvcihyZWdpc3RyeTogUmVnaXN0cnlSZWFkZXIsIHJlc29sdmVyOiBSZXNvbHZlciA9IG51bGwpIHtcbiAgICB0aGlzLl9yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICAgIHRoaXMuX3Jlc29sdmVyID0gcmVzb2x2ZXI7XG4gICAgdGhpcy5fbG9va3VwcyA9IHt9O1xuICAgIHRoaXMuX2ZhY3RvcnlEZWZpbml0aW9uTG9va3VwcyA9IHt9O1xuICB9XG5cbiAgZmFjdG9yeUZvcihzcGVjaWZpZXI6IHN0cmluZyk6IEZhY3Rvcnk8YW55PiB7XG4gICAgbGV0IGZhY3RvcnlEZWZpbml0aW9uOiBGYWN0b3J5RGVmaW5pdGlvbjxhbnk+ID0gdGhpcy5fZmFjdG9yeURlZmluaXRpb25Mb29rdXBzW3NwZWNpZmllcl07XG5cbiAgICBpZiAoIWZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICBpZiAodGhpcy5fcmVzb2x2ZXIpIHtcbiAgICAgICAgZmFjdG9yeURlZmluaXRpb24gPSB0aGlzLl9yZXNvbHZlci5yZXRyaWV2ZShzcGVjaWZpZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICAgIGZhY3RvcnlEZWZpbml0aW9uID0gdGhpcy5fcmVnaXN0cnkucmVnaXN0cmF0aW9uKHNwZWNpZmllcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgICB0aGlzLl9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHNbc3BlY2lmaWVyXSA9IGZhY3RvcnlEZWZpbml0aW9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5idWlsZEZhY3Rvcnkoc3BlY2lmaWVyLCBmYWN0b3J5RGVmaW5pdGlvbik7XG4gIH1cblxuICBsb29rdXAoc3BlY2lmaWVyOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBzaW5nbGV0b24gPSAodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJlZE9wdGlvbihzcGVjaWZpZXIsICdzaW5nbGV0b24nKSAhPT0gZmFsc2UpO1xuXG4gICAgaWYgKHNpbmdsZXRvbikge1xuICAgICAgbGV0IGxvb2t1cCA9IHRoaXMuX2xvb2t1cHNbc3BlY2lmaWVyXTtcbiAgICAgIGlmIChsb29rdXApIHtcbiAgICAgICAgcmV0dXJuIGxvb2t1cC5pbnN0YW5jZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZmFjdG9yeSA9IHRoaXMuZmFjdG9yeUZvcihzcGVjaWZpZXIpO1xuICAgIGlmICghZmFjdG9yeSkgeyByZXR1cm47IH1cblxuICAgIGlmICh0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkT3B0aW9uKHNwZWNpZmllciwgJ2luc3RhbnRpYXRlJykgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeS5jbGFzcztcbiAgICB9XG5cbiAgICBsZXQgaW5zdGFuY2UgPSBmYWN0b3J5LmNyZWF0ZSgpO1xuXG4gICAgaWYgKHNpbmdsZXRvbiAmJiBpbnN0YW5jZSkge1xuICAgICAgdGhpcy5fbG9va3Vwc1tzcGVjaWZpZXJdID0geyBmYWN0b3J5LCBpbnN0YW5jZSB9O1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIGRlZmF1bHRJbmplY3Rpb25zKHNwZWNpZmllcjogc3RyaW5nKTogb2JqZWN0IHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICB0ZWFyZG93bigpOiB2b2lkIHtcbiAgICBsZXQgc3BlY2lmaWVycyA9IE9iamVjdC5rZXlzKHRoaXMuX2xvb2t1cHMpO1xuXG4gICAgZm9yIChsZXQgaT0wO2k8c3BlY2lmaWVycy5sZW5ndGg7aSsrKSB7XG4gICAgICBsZXQgc3BlY2lmaWVyID0gc3BlY2lmaWVyc1tpXTtcbiAgICAgIGxldCB7IGZhY3RvcnksIGluc3RhbmNlIH0gPSB0aGlzLl9sb29rdXBzW3NwZWNpZmllcl07XG4gICAgICBmYWN0b3J5LnRlYXJkb3duKGluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICBkZWZhdWx0VGVhcmRvd24oaW5zdGFuY2UpOiB2b2lkIHtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbmplY3Rpb25zKHNwZWNpZmllcjogc3RyaW5nKTogb2JqZWN0IHtcbiAgICBsZXQgaGFzaCA9IHRoaXMuZGVmYXVsdEluamVjdGlvbnMoc3BlY2lmaWVyKTtcbiAgICBsZXQgaW5qZWN0aW9uczogSW5qZWN0aW9uW10gPSB0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkSW5qZWN0aW9ucyhzcGVjaWZpZXIpO1xuICAgIGxldCBpbmplY3Rpb246IEluamVjdGlvbjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5qZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaW5qZWN0aW9uID0gaW5qZWN0aW9uc1tpXTtcbiAgICAgIGhhc2hbaW5qZWN0aW9uLnByb3BlcnR5XSA9IHRoaXMubG9va3VwKGluamVjdGlvbi5zb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZhY3Rvcnkoc3BlY2lmaWVyOiBzdHJpbmcsIGZhY3RvcnlEZWZpbml0aW9uOiBGYWN0b3J5RGVmaW5pdGlvbjxhbnk+KTogRmFjdG9yeTxhbnk+IHtcbiAgICBsZXQgaW5qZWN0aW9ucyA9IHRoaXMuYnVpbGRJbmplY3Rpb25zKHNwZWNpZmllcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3M6IGZhY3RvcnlEZWZpbml0aW9uLFxuICAgICAgdGVhcmRvd246IChpbnN0YW5jZSkgPT4ge1xuICAgICAgICBpZiAoZmFjdG9yeURlZmluaXRpb24udGVhcmRvd24pIHtcbiAgICAgICAgICBmYWN0b3J5RGVmaW5pdGlvbi50ZWFyZG93bihpbnN0YW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kZWZhdWx0VGVhcmRvd24oaW5zdGFuY2UpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY3JlYXRlKG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBpbmplY3Rpb25zLCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gZmFjdG9yeURlZmluaXRpb24uY3JlYXRlKG1lcmdlZE9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
"use strict";
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlEZWZpbml0aW9uPFQ+IHtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBPYmplY3QpOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhY3Rvcnk8VD4ge1xuICBjbGFzczogRmFjdG9yeURlZmluaXRpb248VD47XG4gIGNyZWF0ZShpbmplY3Rpb25zPzogT2JqZWN0KTogVDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlEZWZpbml0aW9uPFQ+IHtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBvYmplY3QpOiBUO1xuICB0ZWFyZG93bj8oaW5zdGFuY2U6IG9iamVjdCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeTxUPiB7XG4gIGNsYXNzOiBGYWN0b3J5RGVmaW5pdGlvbjxUPjtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBvYmplY3QpOiBUO1xuICB0ZWFyZG93bihpbnN0YW5jZTogYW55KTogdm9pZDtcbn1cbiJdfQ==

@@ -16,2 +16,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb3duZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLEFBQW9CLEFBQ3BCLEFBQU07QUFBQyxNQUFNLEFBQUssd0JBQUcsQUFBVyxBQUFDLEFBRWpDLEFBQU07a0JBQW1CLEFBQWM7QUFDckMsQUFBTSxXQUFDLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUN2QjtBQUFDLEFBRUQsQUFBTTtrQkFBbUIsQUFBYyxRQUFFLEFBQVk7QUFDbkQsQUFBTSxXQUFDLEFBQUssQUFBQyxTQUFHLEFBQUssQUFBQyxBQUN4QjtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaXN0cmF0aW9uT3B0aW9ucyB9IGZyb20gJy4vcmVnaXN0cnknO1xuaW1wb3J0IHsgRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yeSc7XG5cbi8vIFRPRE8gLSB1c2Ugc3ltYm9sXG5leHBvcnQgY29uc3QgT1dORVIgPSAnX19vd25lcl9fJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE93bmVyKG9iamVjdDogT2JqZWN0KTogT3duZXIge1xuICByZXR1cm4gb2JqZWN0W09XTkVSXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE93bmVyKG9iamVjdDogT2JqZWN0LCBvd25lcjogT3duZXIpOiB2b2lkIHtcbiAgb2JqZWN0W09XTkVSXSA9IG93bmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE93bmVyIHtcbiAgaWRlbnRpZnkoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGZhY3RvcnlGb3Ioc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogRmFjdG9yeTxhbnk+O1xuICBcbiAgbG9va3VwKHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IGFueTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb3duZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLEFBQW9CLEFBQ3BCLEFBQU07QUFBQyxNQUFNLEFBQUssd0JBQUcsQUFBVyxBQUFDLEFBRWpDLEFBQU07a0JBQW1CLEFBQWM7QUFDckMsQUFBTSxXQUFDLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUN2QjtBQUFDLEFBRUQsQUFBTTtrQkFBbUIsQUFBYyxRQUFFLEFBQVk7QUFDbkQsQUFBTSxXQUFDLEFBQUssQUFBQyxTQUFHLEFBQUssQUFBQyxBQUN4QjtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaXN0cmF0aW9uT3B0aW9ucyB9IGZyb20gJy4vcmVnaXN0cnknO1xuaW1wb3J0IHsgRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yeSc7XG5cbi8vIFRPRE8gLSB1c2Ugc3ltYm9sXG5leHBvcnQgY29uc3QgT1dORVIgPSAnX19vd25lcl9fJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE93bmVyKG9iamVjdDogb2JqZWN0KTogT3duZXIge1xuICByZXR1cm4gb2JqZWN0W09XTkVSXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE93bmVyKG9iamVjdDogb2JqZWN0LCBvd25lcjogT3duZXIpOiB2b2lkIHtcbiAgb2JqZWN0W09XTkVSXSA9IG93bmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE93bmVyIHtcbiAgaWRlbnRpZnkoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGZhY3RvcnlGb3Ioc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogRmFjdG9yeTxhbnk+O1xuICBcbiAgbG9va3VwKHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IGFueTtcbn1cbiJdfQ==

@@ -45,4 +45,7 @@ 'use strict';

var singleton = this._registry.registeredOption(specifier, 'singleton') !== false;
if (singleton && this._lookups[specifier]) {
return this._lookups[specifier];
if (singleton) {
var lookup = this._lookups[specifier];
if (lookup) {
return lookup.instance;
}
}

@@ -56,7 +59,7 @@ var factory = this.factoryFor(specifier);

}
var object = factory.create();
if (singleton && object) {
this._lookups[specifier] = object;
var instance = factory.create();
if (singleton && instance) {
this._lookups[specifier] = { factory: factory, instance: instance };
}
return object;
return instance;
};

@@ -68,2 +71,16 @@

Container.prototype.teardown = function teardown() {
var specifiers = Object.keys(this._lookups);
for (var i = 0; i < specifiers.length; i++) {
var specifier = specifiers[i];
var _lookups$specifier = this._lookups[specifier],
factory = _lookups$specifier.factory,
instance = _lookups$specifier.instance;
factory.teardown(instance);
}
};
Container.prototype.defaultTeardown = function defaultTeardown(instance) {};
Container.prototype.buildInjections = function buildInjections(specifier) {

@@ -81,5 +98,14 @@ var hash = this.defaultInjections(specifier);

Container.prototype.buildFactory = function buildFactory(specifier, factoryDefinition) {
var _this = this;
var injections = this.buildInjections(specifier);
return {
class: factoryDefinition,
teardown: function (instance) {
if (factoryDefinition.teardown) {
factoryDefinition.teardown(instance);
} else {
_this.defaultTeardown(instance);
}
},
create: function (options) {

@@ -96,2 +122,2 @@ var mergedOptions = Object.assign({}, injections, options);

exports.default = Container;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs0QkFXRTt1QkFBWSxBQUF3QjtZQUFFLCtFQUFxQixBQUFJOzs4QkFDN0QsQUFBSTs7YUFBQyxBQUFTLFlBQUcsQUFBUSxBQUFDLEFBQzFCLEFBQUk7YUFBQyxBQUFTLFlBQUcsQUFBUSxBQUFDLEFBQzFCLEFBQUk7YUFBQyxBQUFRLFdBQUcsQUFBRSxBQUFDLEFBQ25CLEFBQUk7YUFBQyxBQUF5Qiw0QkFBRyxBQUFFLEFBQUMsQUFDdEMsQUFBQzs7O3dCQUVELEFBQVUsaUNBQUMsQUFBaUIsV0FDMUI7WUFBSSxBQUFpQixvQkFBMkIsQUFBSSxLQUFDLEFBQXlCLDBCQUFDLEFBQVMsQUFBQyxBQUFDLEFBRTFGLEFBQUUsQUFBQztZQUFDLENBQUMsQUFBaUIsQUFBQyxtQkFBQyxBQUFDLEFBQ3ZCLEFBQUUsQUFBQztnQkFBQyxBQUFJLEtBQUMsQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUNuQixBQUFpQjtvQ0FBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsQUFBQyxBQUN6RCxBQUFDO0FBRUQsQUFBRSxBQUFDO2dCQUFDLENBQUMsQUFBaUIsQUFBQyxtQkFBQyxBQUFDLEFBQ3ZCLEFBQWlCO29DQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBWSxhQUFDLEFBQVMsQUFBQyxBQUFDLEFBQzdELEFBQUM7QUFFRCxBQUFFLEFBQUM7Z0JBQUMsQUFBaUIsQUFBQyxtQkFBQyxBQUFDLEFBQ3RCLEFBQUk7cUJBQUMsQUFBeUIsMEJBQUMsQUFBUyxBQUFDLGFBQUcsQUFBaUIsQUFBQyxBQUNoRSxBQUFDLEFBQ0g7QUFBQztBQUVELEFBQUUsQUFBQztZQUFDLENBQUMsQUFBaUIsQUFBQyxtQkFBQyxBQUFDLEFBQ3ZCLEFBQU0sQUFBQyxBQUNUO0FBQUM7QUFFRCxBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQVksYUFBQyxBQUFTLFdBQUUsQUFBaUIsQUFBQyxBQUFDLEFBQ3pELEFBQUM7Ozt3QkFFRCxBQUFNLHlCQUFDLEFBQWlCLFdBQ3RCO1lBQUksQUFBUyxBQUFHLFlBQUMsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFnQixpQkFBQyxBQUFTLFdBQUUsQUFBVyxBQUFDLGlCQUFLLEFBQUssQUFBQyxBQUFDLEFBRXBGLEFBQUUsQUFBQztZQUFDLEFBQVMsYUFBSSxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQVMsQUFBQyxBQUFDLFlBQUMsQUFBQyxBQUMxQyxBQUFNO21CQUFDLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBUyxBQUFDLEFBQUMsQUFDbEMsQUFBQztBQUVEO1lBQUksQUFBTyxVQUFHLEFBQUksS0FBQyxBQUFVLFdBQUMsQUFBUyxBQUFDLEFBQUMsQUFDekMsQUFBRSxBQUFDO1lBQUMsQ0FBQyxBQUFPLEFBQUMsU0FBQyxBQUFDLEFBQUMsQUFBTSxBQUFDLEFBQUM7QUFBQztBQUV6QixBQUFFLEFBQUM7WUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQWdCLGlCQUFDLEFBQVMsV0FBRSxBQUFhLEFBQUMsbUJBQUssQUFBSyxBQUFDLE9BQUMsQUFBQyxBQUN4RSxBQUFNO21CQUFDLEFBQU8sUUFBQyxBQUFLLEFBQUMsQUFDdkIsQUFBQztBQUVEO1lBQUksQUFBTSxTQUFHLEFBQU8sUUFBQyxBQUFNLEFBQUUsQUFBQyxBQUU5QixBQUFFLEFBQUM7WUFBQyxBQUFTLGFBQUksQUFBTSxBQUFDLFFBQUMsQUFBQyxBQUN4QixBQUFJO2lCQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsYUFBRyxBQUFNLEFBQUMsQUFDcEMsQUFBQztBQUVELEFBQU07ZUFBQyxBQUFNLEFBQUMsQUFDaEIsQUFBQzs7O3dCQUVELEFBQWlCLCtDQUFDLEFBQWlCLFdBQ2pDLEFBQU07ZUFBQyxBQUFFLEFBQUMsQUFDWixBQUFDOzs7d0JBRU8sQUFBZSwyQ0FBQyxBQUFpQixXQUN2QztZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBaUIsa0JBQUMsQUFBUyxBQUFDLEFBQUMsQUFDN0M7WUFBSSxBQUFVLGFBQWdCLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBb0IscUJBQUMsQUFBUyxBQUFDLEFBQUMsQUFDN0U7WUFBSSxBQUFvQixBQUFDLGlCQUV6QixBQUFHLEFBQUM7YUFBQyxJQUFJLEFBQUMsSUFBRyxBQUFDLEdBQUUsQUFBQyxJQUFHLEFBQVUsV0FBQyxBQUFNLFFBQUUsQUFBQyxBQUFFLEtBQUUsQUFBQyxBQUMzQyxBQUFTO3dCQUFHLEFBQVUsV0FBQyxBQUFDLEFBQUMsQUFBQyxBQUMxQixBQUFJO2lCQUFDLEFBQVMsVUFBQyxBQUFRLEFBQUMsWUFBRyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQVMsVUFBQyxBQUFNLEFBQUMsQUFBQyxBQUMzRCxBQUFDO0FBRUQsQUFBTTtlQUFDLEFBQUksQUFBQyxBQUNkLEFBQUM7Ozt3QkFFTyxBQUFZLHFDQUFDLEFBQWlCLFdBQUUsQUFBeUMsbUJBQy9FO1lBQUksQUFBVSxhQUFHLEFBQUksS0FBQyxBQUFlLGdCQUFDLEFBQVMsQUFBQyxBQUFDLEFBRWpELEFBQU07O21CQUNHLEFBQWlCLEFBQ3hCLEFBQU07OEJBQUMsQUFBTyxTQUNaO29CQUFJLEFBQWEsZ0JBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFFLElBQUUsQUFBVSxZQUFFLEFBQU8sQUFBQyxBQUFDLEFBRTNELEFBQU07dUJBQUMsQUFBaUIsa0JBQUMsQUFBTSxPQUFDLEFBQWEsQUFBQyxBQUFDLEFBQ2pELEFBQUMsQUFDRixBQUNIO0FBUlMsQUFRUixBQUNGO0FBUkssQUFBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvcnksIEZhY3RvcnlEZWZpbml0aW9uIH0gZnJvbSAnLi9mYWN0b3J5JztcbmltcG9ydCB7IFJlZ2lzdHJ5UmVhZGVyLCBJbmplY3Rpb24gfSBmcm9tICcuL3JlZ2lzdHJ5JztcbmltcG9ydCB7IFJlc29sdmVyIH0gZnJvbSAnLi9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0IH0gZnJvbSAnLi9kaWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGFpbmVyIHtcbiAgcHJpdmF0ZSBfcmVnaXN0cnk6IFJlZ2lzdHJ5UmVhZGVyO1xuICBwcml2YXRlIF9yZXNvbHZlcjogUmVzb2x2ZXI7XG4gIHByaXZhdGUgX2xvb2t1cHM6IERpY3Q8YW55PjtcbiAgcHJpdmF0ZSBfZmFjdG9yeURlZmluaXRpb25Mb29rdXBzOiBEaWN0PEZhY3RvcnlEZWZpbml0aW9uPGFueT4+O1xuXG4gIGNvbnN0cnVjdG9yKHJlZ2lzdHJ5OiBSZWdpc3RyeVJlYWRlciwgcmVzb2x2ZXI6IFJlc29sdmVyID0gbnVsbCkge1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gICAgdGhpcy5fcmVzb2x2ZXIgPSByZXNvbHZlcjtcbiAgICB0aGlzLl9sb29rdXBzID0ge307XG4gICAgdGhpcy5fZmFjdG9yeURlZmluaXRpb25Mb29rdXBzID0ge307XG4gIH1cblxuICBmYWN0b3J5Rm9yKHNwZWNpZmllcjogc3RyaW5nKTogRmFjdG9yeTxhbnk+IHtcbiAgICBsZXQgZmFjdG9yeURlZmluaXRpb246IEZhY3RvcnlEZWZpbml0aW9uPGFueT4gPSB0aGlzLl9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHNbc3BlY2lmaWVyXTtcblxuICAgIGlmICghZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgIGlmICh0aGlzLl9yZXNvbHZlcikge1xuICAgICAgICBmYWN0b3J5RGVmaW5pdGlvbiA9IHRoaXMuX3Jlc29sdmVyLnJldHJpZXZlKHNwZWNpZmllcik7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgICAgZmFjdG9yeURlZmluaXRpb24gPSB0aGlzLl9yZWdpc3RyeS5yZWdpc3RyYXRpb24oc3BlY2lmaWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMuX2ZhY3RvcnlEZWZpbml0aW9uTG9va3Vwc1tzcGVjaWZpZXJdID0gZmFjdG9yeURlZmluaXRpb247XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJ1aWxkRmFjdG9yeShzcGVjaWZpZXIsIGZhY3RvcnlEZWZpbml0aW9uKTtcbiAgfVxuXG4gIGxvb2t1cChzcGVjaWZpZXI6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IHNpbmdsZXRvbiA9ICh0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkT3B0aW9uKHNwZWNpZmllciwgJ3NpbmdsZXRvbicpICE9PSBmYWxzZSk7XG5cbiAgICBpZiAoc2luZ2xldG9uICYmIHRoaXMuX2xvb2t1cHNbc3BlY2lmaWVyXSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cHNbc3BlY2lmaWVyXTtcbiAgICB9XG5cbiAgICBsZXQgZmFjdG9yeSA9IHRoaXMuZmFjdG9yeUZvcihzcGVjaWZpZXIpO1xuICAgIGlmICghZmFjdG9yeSkgeyByZXR1cm47IH1cblxuICAgIGlmICh0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkT3B0aW9uKHNwZWNpZmllciwgJ2luc3RhbnRpYXRlJykgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeS5jbGFzcztcbiAgICB9XG5cbiAgICBsZXQgb2JqZWN0ID0gZmFjdG9yeS5jcmVhdGUoKTtcblxuICAgIGlmIChzaW5nbGV0b24gJiYgb2JqZWN0KSB7XG4gICAgICB0aGlzLl9sb29rdXBzW3NwZWNpZmllcl0gPSBvYmplY3Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIGRlZmF1bHRJbmplY3Rpb25zKHNwZWNpZmllcjogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSW5qZWN0aW9ucyhzcGVjaWZpZXI6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IGhhc2ggPSB0aGlzLmRlZmF1bHRJbmplY3Rpb25zKHNwZWNpZmllcik7XG4gICAgbGV0IGluamVjdGlvbnM6IEluamVjdGlvbltdID0gdGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJlZEluamVjdGlvbnMoc3BlY2lmaWVyKTtcbiAgICBsZXQgaW5qZWN0aW9uOiBJbmplY3Rpb247XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluamVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluamVjdGlvbiA9IGluamVjdGlvbnNbaV07XG4gICAgICBoYXNoW2luamVjdGlvbi5wcm9wZXJ0eV0gPSB0aGlzLmxvb2t1cChpbmplY3Rpb24uc291cmNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGYWN0b3J5KHNwZWNpZmllcjogc3RyaW5nLCBmYWN0b3J5RGVmaW5pdGlvbjogRmFjdG9yeURlZmluaXRpb248YW55Pik6IEZhY3Rvcnk8YW55PiB7XG4gICAgbGV0IGluamVjdGlvbnMgPSB0aGlzLmJ1aWxkSW5qZWN0aW9ucyhzcGVjaWZpZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYXNzOiBmYWN0b3J5RGVmaW5pdGlvbixcbiAgICAgIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgICAgIGxldCBtZXJnZWRPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgaW5qZWN0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIGZhY3RvcnlEZWZpbml0aW9uLmNyZWF0ZShtZXJnZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs0QkFnQkU7dUJBQVksQUFBd0I7WUFBRSwrRUFBcUIsQUFBSTs7OEJBQzdELEFBQUk7O2FBQUMsQUFBUyxZQUFHLEFBQVEsQUFBQyxBQUMxQixBQUFJO2FBQUMsQUFBUyxZQUFHLEFBQVEsQUFBQyxBQUMxQixBQUFJO2FBQUMsQUFBUSxXQUFHLEFBQUUsQUFBQyxBQUNuQixBQUFJO2FBQUMsQUFBeUIsNEJBQUcsQUFBRSxBQUFDLEFBQ3RDLEFBQUM7Ozt3QkFFRCxBQUFVLGlDQUFDLEFBQWlCLFdBQzFCO1lBQUksQUFBaUIsb0JBQTJCLEFBQUksS0FBQyxBQUF5QiwwQkFBQyxBQUFTLEFBQUMsQUFBQyxBQUUxRixBQUFFLEFBQUM7WUFBQyxDQUFDLEFBQWlCLEFBQUMsbUJBQUMsQUFBQyxBQUN2QixBQUFFLEFBQUM7Z0JBQUMsQUFBSSxLQUFDLEFBQVMsQUFBQyxXQUFDLEFBQUMsQUFDbkIsQUFBaUI7b0NBQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFRLFNBQUMsQUFBUyxBQUFDLEFBQUMsQUFDekQsQUFBQztBQUVELEFBQUUsQUFBQztnQkFBQyxDQUFDLEFBQWlCLEFBQUMsbUJBQUMsQUFBQyxBQUN2QixBQUFpQjtvQ0FBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQVksYUFBQyxBQUFTLEFBQUMsQUFBQyxBQUM3RCxBQUFDO0FBRUQsQUFBRSxBQUFDO2dCQUFDLEFBQWlCLEFBQUMsbUJBQUMsQUFBQyxBQUN0QixBQUFJO3FCQUFDLEFBQXlCLDBCQUFDLEFBQVMsQUFBQyxhQUFHLEFBQWlCLEFBQUMsQUFDaEUsQUFBQyxBQUNIO0FBQUM7QUFFRCxBQUFFLEFBQUM7WUFBQyxDQUFDLEFBQWlCLEFBQUMsbUJBQUMsQUFBQyxBQUN2QixBQUFNLEFBQUMsQUFDVDtBQUFDO0FBRUQsQUFBTTtlQUFD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QixXQUFFLEFBQXlDO29CQUMvRTs7WUFBSSxBQUFVLGFBQUcsQUFBSSxLQUFDLEFBQWUsZ0JBQUMsQUFBUyxBQUFDLEFBQUMsQUFFakQsQUFBTTs7bUJBQ0csQUFBaUIsQUFDeEIsQUFBUTtzQkFBRSxVQUFDLEFBQVEsVUFDakIsQUFBRSxBQUFDO29CQUFDLEFBQWlCLGtCQUFDLEFBQVEsQUFBQyxVQUFDLEFBQUMsQUFDL0IsQUFBaUI7c0NBQUMsQUFBUSxTQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3ZDLEFBQUMsQUFBQyxBQUFJO3VCQUFDLEFBQUMsQUFDTixBQUFJOzBCQUFDLEFBQWUsZ0JBQUMsQUFBUSxBQUFDLEFBQUMsQUFDakMsQUFBQyxBQUNIO0FBQUM7QUFDRCxBQUFNOzhCQUFDLEFBQU8sU0FDWjtvQkFBSSxBQUFhLGdCQUFHLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBRSxJQUFFLEFBQVUsWUFBRSxBQUFPLEFBQUMsQUFBQyxBQUUzRCxBQUFNO3VCQUFDLEFBQWlCLGtCQUFDLEFBQU0sT0FBQyxBQUFhLEFBQUMsQUFBQyxBQUNqRCxBQUFDLEFBQ0YsQUFDSDtBQWZTLEFBZVIsQUFDRjtBQWZLLEFBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYWN0b3J5LCBGYWN0b3J5RGVmaW5pdGlvbiB9IGZyb20gJy4vZmFjdG9yeSc7XG5pbXBvcnQgeyBSZWdpc3RyeVJlYWRlciwgSW5qZWN0aW9uIH0gZnJvbSAnLi9yZWdpc3RyeSc7XG5pbXBvcnQgeyBSZXNvbHZlciB9IGZyb20gJy4vcmVzb2x2ZXInO1xuaW1wb3J0IHsgRGljdCB9IGZyb20gJy4vZGljdCc7XG5cbmludGVyZmFjZSBMb29rdXAge1xuICBmYWN0b3J5OiBGYWN0b3J5PGFueT47XG4gIGluc3RhbmNlOiBhbnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRhaW5lciB7XG4gIHByaXZhdGUgX3JlZ2lzdHJ5OiBSZWdpc3RyeVJlYWRlcjtcbiAgcHJpdmF0ZSBfcmVzb2x2ZXI6IFJlc29sdmVyO1xuICBwcml2YXRlIF9sb29rdXBzOiBEaWN0PExvb2t1cD47XG4gIHByaXZhdGUgX2ZhY3RvcnlEZWZpbml0aW9uTG9va3VwczogRGljdDxGYWN0b3J5RGVmaW5pdGlvbjxhbnk+PjtcblxuICBjb25zdHJ1Y3RvcihyZWdpc3RyeTogUmVnaXN0cnlSZWFkZXIsIHJlc29sdmVyOiBSZXNvbHZlciA9IG51bGwpIHtcbiAgICB0aGlzLl9yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICAgIHRoaXMuX3Jlc29sdmVyID0gcmVzb2x2ZXI7XG4gICAgdGhpcy5fbG9va3VwcyA9IHt9O1xuICAgIHRoaXMuX2ZhY3RvcnlEZWZpbml0aW9uTG9va3VwcyA9IHt9O1xuICB9XG5cbiAgZmFjdG9yeUZvcihzcGVjaWZpZXI6IHN0cmluZyk6IEZhY3Rvcnk8YW55PiB7XG4gICAgbGV0IGZhY3RvcnlEZWZpbml0aW9uOiBGYWN0b3J5RGVmaW5pdGlvbjxhbnk+ID0gdGhpcy5fZmFjdG9yeURlZmluaXRpb25Mb29rdXBzW3NwZWNpZmllcl07XG5cbiAgICBpZiAoIWZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICBpZiAodGhpcy5fcmVzb2x2ZXIpIHtcbiAgICAgICAgZmFjdG9yeURlZmluaXRpb24gPSB0aGlzLl9yZXNvbHZlci5yZXRyaWV2ZShzcGVjaWZpZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICAgIGZhY3RvcnlEZWZpbml0aW9uID0gdGhpcy5fcmVnaXN0cnkucmVnaXN0cmF0aW9uKHNwZWNpZmllcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgICB0aGlzLl9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHNbc3BlY2lmaWVyXSA9IGZhY3RvcnlEZWZpbml0aW9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5idWlsZEZhY3Rvcnkoc3BlY2lmaWVyLCBmYWN0b3J5RGVmaW5pdGlvbik7XG4gIH1cblxuICBsb29rdXAoc3BlY2lmaWVyOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBzaW5nbGV0b24gPSAodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJlZE9wdGlvbihzcGVjaWZpZXIsICdzaW5nbGV0b24nKSAhPT0gZmFsc2UpO1xuXG4gICAgaWYgKHNpbmdsZXRvbikge1xuICAgICAgbGV0IGxvb2t1cCA9IHRoaXMuX2xvb2t1cHNbc3BlY2lmaWVyXTtcbiAgICAgIGlmIChsb29rdXApIHtcbiAgICAgICAgcmV0dXJuIGxvb2t1cC5pbnN0YW5jZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZmFjdG9yeSA9IHRoaXMuZmFjdG9yeUZvcihzcGVjaWZpZXIpO1xuICAgIGlmICghZmFjdG9yeSkgeyByZXR1cm47IH1cblxuICAgIGlmICh0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkT3B0aW9uKHNwZWNpZmllciwgJ2luc3RhbnRpYXRlJykgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeS5jbGFzcztcbiAgICB9XG5cbiAgICBsZXQgaW5zdGFuY2UgPSBmYWN0b3J5LmNyZWF0ZSgpO1xuXG4gICAgaWYgKHNpbmdsZXRvbiAmJiBpbnN0YW5jZSkge1xuICAgICAgdGhpcy5fbG9va3Vwc1tzcGVjaWZpZXJdID0geyBmYWN0b3J5LCBpbnN0YW5jZSB9O1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIGRlZmF1bHRJbmplY3Rpb25zKHNwZWNpZmllcjogc3RyaW5nKTogb2JqZWN0IHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICB0ZWFyZG93bigpOiB2b2lkIHtcbiAgICBsZXQgc3BlY2lmaWVycyA9IE9iamVjdC5rZXlzKHRoaXMuX2xvb2t1cHMpO1xuXG4gICAgZm9yIChsZXQgaT0wO2k8c3BlY2lmaWVycy5sZW5ndGg7aSsrKSB7XG4gICAgICBsZXQgc3BlY2lmaWVyID0gc3BlY2lmaWVyc1tpXTtcbiAgICAgIGxldCB7IGZhY3RvcnksIGluc3RhbmNlIH0gPSB0aGlzLl9sb29rdXBzW3NwZWNpZmllcl07XG4gICAgICBmYWN0b3J5LnRlYXJkb3duKGluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICBkZWZhdWx0VGVhcmRvd24oaW5zdGFuY2UpOiB2b2lkIHtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbmplY3Rpb25zKHNwZWNpZmllcjogc3RyaW5nKTogb2JqZWN0IHtcbiAgICBsZXQgaGFzaCA9IHRoaXMuZGVmYXVsdEluamVjdGlvbnMoc3BlY2lmaWVyKTtcbiAgICBsZXQgaW5qZWN0aW9uczogSW5qZWN0aW9uW10gPSB0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkSW5qZWN0aW9ucyhzcGVjaWZpZXIpO1xuICAgIGxldCBpbmplY3Rpb246IEluamVjdGlvbjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5qZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaW5qZWN0aW9uID0gaW5qZWN0aW9uc1tpXTtcbiAgICAgIGhhc2hbaW5qZWN0aW9uLnByb3BlcnR5XSA9IHRoaXMubG9va3VwKGluamVjdGlvbi5zb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZhY3Rvcnkoc3BlY2lmaWVyOiBzdHJpbmcsIGZhY3RvcnlEZWZpbml0aW9uOiBGYWN0b3J5RGVmaW5pdGlvbjxhbnk+KTogRmFjdG9yeTxhbnk+IHtcbiAgICBsZXQgaW5qZWN0aW9ucyA9IHRoaXMuYnVpbGRJbmplY3Rpb25zKHNwZWNpZmllcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3M6IGZhY3RvcnlEZWZpbml0aW9uLFxuICAgICAgdGVhcmRvd246IChpbnN0YW5jZSkgPT4ge1xuICAgICAgICBpZiAoZmFjdG9yeURlZmluaXRpb24udGVhcmRvd24pIHtcbiAgICAgICAgICBmYWN0b3J5RGVmaW5pdGlvbi50ZWFyZG93bihpbnN0YW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kZWZhdWx0VGVhcmRvd24oaW5zdGFuY2UpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY3JlYXRlKG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBpbmplY3Rpb25zLCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gZmFjdG9yeURlZmluaXRpb24uY3JlYXRlKG1lcmdlZE9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
"use strict";
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlEZWZpbml0aW9uPFQ+IHtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBPYmplY3QpOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhY3Rvcnk8VD4ge1xuICBjbGFzczogRmFjdG9yeURlZmluaXRpb248VD47XG4gIGNyZWF0ZShpbmplY3Rpb25zPzogT2JqZWN0KTogVDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlEZWZpbml0aW9uPFQ+IHtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBvYmplY3QpOiBUO1xuICB0ZWFyZG93bj8oaW5zdGFuY2U6IG9iamVjdCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeTxUPiB7XG4gIGNsYXNzOiBGYWN0b3J5RGVmaW5pdGlvbjxUPjtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBvYmplY3QpOiBUO1xuICB0ZWFyZG93bihpbnN0YW5jZTogYW55KTogdm9pZDtcbn1cbiJdfQ==

@@ -16,2 +16,2 @@ 'use strict';

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb3duZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLEFBQW9CLEFBQ3BCLEFBQU07QUFBQyxJQUFNLEFBQUssd0JBQUcsQUFBVyxBQUFDLEFBRWpDLEFBQU07a0JBQW1CLEFBQWMsUUFDckMsQUFBTTtXQUFDLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUN2QixBQUFDO0FBRUQsQUFBTTtrQkFBbUIsQUFBYyxRQUFFLEFBQVksT0FDbkQsQUFBTTtXQUFDLEFBQUssQUFBQyxTQUFHLEFBQUssQUFBQyxBQUN4QixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaXN0cmF0aW9uT3B0aW9ucyB9IGZyb20gJy4vcmVnaXN0cnknO1xuaW1wb3J0IHsgRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yeSc7XG5cbi8vIFRPRE8gLSB1c2Ugc3ltYm9sXG5leHBvcnQgY29uc3QgT1dORVIgPSAnX19vd25lcl9fJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE93bmVyKG9iamVjdDogT2JqZWN0KTogT3duZXIge1xuICByZXR1cm4gb2JqZWN0W09XTkVSXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE93bmVyKG9iamVjdDogT2JqZWN0LCBvd25lcjogT3duZXIpOiB2b2lkIHtcbiAgb2JqZWN0W09XTkVSXSA9IG93bmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE93bmVyIHtcbiAgaWRlbnRpZnkoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGZhY3RvcnlGb3Ioc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogRmFjdG9yeTxhbnk+O1xuICBcbiAgbG9va3VwKHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IGFueTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb3duZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLEFBQW9CLEFBQ3BCLEFBQU07QUFBQyxJQUFNLEFBQUssd0JBQUcsQUFBVyxBQUFDLEFBRWpDLEFBQU07a0JBQW1CLEFBQWMsUUFDckMsQUFBTTtXQUFDLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUN2QixBQUFDO0FBRUQsQUFBTTtrQkFBbUIsQUFBYyxRQUFFLEFBQVksT0FDbkQsQUFBTTtXQUFDLEFBQUssQUFBQyxTQUFHLEFBQUssQUFBQyxBQUN4QixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaXN0cmF0aW9uT3B0aW9ucyB9IGZyb20gJy4vcmVnaXN0cnknO1xuaW1wb3J0IHsgRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yeSc7XG5cbi8vIFRPRE8gLSB1c2Ugc3ltYm9sXG5leHBvcnQgY29uc3QgT1dORVIgPSAnX19vd25lcl9fJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE93bmVyKG9iamVjdDogb2JqZWN0KTogT3duZXIge1xuICByZXR1cm4gb2JqZWN0W09XTkVSXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE93bmVyKG9iamVjdDogb2JqZWN0LCBvd25lcjogT3duZXIpOiB2b2lkIHtcbiAgb2JqZWN0W09XTkVSXSA9IG93bmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE93bmVyIHtcbiAgaWRlbnRpZnkoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGZhY3RvcnlGb3Ioc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogRmFjdG9yeTxhbnk+O1xuICBcbiAgbG9va3VwKHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IGFueTtcbn1cbiJdfQ==

@@ -28,4 +28,7 @@ export default class Container {

let singleton = (this._registry.registeredOption(specifier, 'singleton') !== false);
if (singleton && this._lookups[specifier]) {
return this._lookups[specifier];
if (singleton) {
let lookup = this._lookups[specifier];
if (lookup) {
return lookup.instance;
}
}

@@ -39,7 +42,7 @@ let factory = this.factoryFor(specifier);

}
let object = factory.create();
if (singleton && object) {
this._lookups[specifier] = object;
let instance = factory.create();
if (singleton && instance) {
this._lookups[specifier] = { factory, instance };
}
return object;
return instance;
}

@@ -49,2 +52,12 @@ defaultInjections(specifier) {

}
teardown() {
let specifiers = Object.keys(this._lookups);
for (let i = 0; i < specifiers.length; i++) {
let specifier = specifiers[i];
let { factory, instance } = this._lookups[specifier];
factory.teardown(instance);
}
}
defaultTeardown(instance) {
}
buildInjections(specifier) {

@@ -64,2 +77,10 @@ let hash = this.defaultInjections(specifier);

class: factoryDefinition,
teardown: (instance) => {
if (factoryDefinition.teardown) {
factoryDefinition.teardown(instance);
}
else {
this.defaultTeardown(instance);
}
},
create(options) {

@@ -72,2 +93,2 @@ let mergedOptions = Object.assign({}, injections, options);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQUMsT0FBTztJQU1aLFlBQVksUUFBd0IsRUFBRSxXQUFxQixJQUFJO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFpQjtRQUMxQixJQUFJLGlCQUFpQixHQUEyQixJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUYsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFFRCxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDdkIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUVELEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1lBQ2hFLENBQUM7UUFDSCxDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDdkIsTUFBTSxDQUFDO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsU0FBaUI7UUFDdEIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUVwRixFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDO1FBQUMsQ0FBQztRQUV6QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFOUIsRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDcEMsQ0FBQztRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQWlCO1FBQ2pDLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQWlCO1FBQ3ZDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLFVBQVUsR0FBZ0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RSxJQUFJLFNBQW9CLENBQUM7UUFFekIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0MsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFpQixFQUFFLGlCQUF5QztRQUMvRSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpELE1BQU0sQ0FBQztZQUNMLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsTUFBTSxDQUFDLE9BQU87Z0JBQ1osSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUUzRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pELENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFjdG9yeSwgRmFjdG9yeURlZmluaXRpb24gfSBmcm9tICcuL2ZhY3RvcnknO1xuaW1wb3J0IHsgUmVnaXN0cnlSZWFkZXIsIEluamVjdGlvbiB9IGZyb20gJy4vcmVnaXN0cnknO1xuaW1wb3J0IHsgUmVzb2x2ZXIgfSBmcm9tICcuL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QgfSBmcm9tICcuL2RpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250YWluZXIge1xuICBwcml2YXRlIF9yZWdpc3RyeTogUmVnaXN0cnlSZWFkZXI7XG4gIHByaXZhdGUgX3Jlc29sdmVyOiBSZXNvbHZlcjtcbiAgcHJpdmF0ZSBfbG9va3VwczogRGljdDxhbnk+O1xuICBwcml2YXRlIF9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHM6IERpY3Q8RmFjdG9yeURlZmluaXRpb248YW55Pj47XG5cbiAgY29uc3RydWN0b3IocmVnaXN0cnk6IFJlZ2lzdHJ5UmVhZGVyLCByZXNvbHZlcjogUmVzb2x2ZXIgPSBudWxsKSB7XG4gICAgdGhpcy5fcmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgICB0aGlzLl9yZXNvbHZlciA9IHJlc29sdmVyO1xuICAgIHRoaXMuX2xvb2t1cHMgPSB7fTtcbiAgICB0aGlzLl9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHMgPSB7fTtcbiAgfVxuXG4gIGZhY3RvcnlGb3Ioc3BlY2lmaWVyOiBzdHJpbmcpOiBGYWN0b3J5PGFueT4ge1xuICAgIGxldCBmYWN0b3J5RGVmaW5pdGlvbjogRmFjdG9yeURlZmluaXRpb248YW55PiA9IHRoaXMuX2ZhY3RvcnlEZWZpbml0aW9uTG9va3Vwc1tzcGVjaWZpZXJdO1xuXG4gICAgaWYgKCFmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgaWYgKHRoaXMuX3Jlc29sdmVyKSB7XG4gICAgICAgIGZhY3RvcnlEZWZpbml0aW9uID0gdGhpcy5fcmVzb2x2ZXIucmV0cmlldmUoc3BlY2lmaWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgICBmYWN0b3J5RGVmaW5pdGlvbiA9IHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdHJhdGlvbihzcGVjaWZpZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgICAgdGhpcy5fZmFjdG9yeURlZmluaXRpb25Mb29rdXBzW3NwZWNpZmllcl0gPSBmYWN0b3J5RGVmaW5pdGlvbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYnVpbGRGYWN0b3J5KHNwZWNpZmllciwgZmFjdG9yeURlZmluaXRpb24pO1xuICB9XG5cbiAgbG9va3VwKHNwZWNpZmllcjogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgc2luZ2xldG9uID0gKHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyZWRPcHRpb24oc3BlY2lmaWVyLCAnc2luZ2xldG9uJykgIT09IGZhbHNlKTtcblxuICAgIGlmIChzaW5nbGV0b24gJiYgdGhpcy5fbG9va3Vwc1tzcGVjaWZpZXJdKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbG9va3Vwc1tzcGVjaWZpZXJdO1xuICAgIH1cblxuICAgIGxldCBmYWN0b3J5ID0gdGhpcy5mYWN0b3J5Rm9yKHNwZWNpZmllcik7XG4gICAgaWYgKCFmYWN0b3J5KSB7IHJldHVybjsgfVxuXG4gICAgaWYgKHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyZWRPcHRpb24oc3BlY2lmaWVyLCAnaW5zdGFudGlhdGUnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBmYWN0b3J5LmNsYXNzO1xuICAgIH1cblxuICAgIGxldCBvYmplY3QgPSBmYWN0b3J5LmNyZWF0ZSgpO1xuXG4gICAgaWYgKHNpbmdsZXRvbiAmJiBvYmplY3QpIHtcbiAgICAgIHRoaXMuX2xvb2t1cHNbc3BlY2lmaWVyXSA9IG9iamVjdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgZGVmYXVsdEluamVjdGlvbnMoc3BlY2lmaWVyOiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRJbmplY3Rpb25zKHNwZWNpZmllcjogc3RyaW5nKTogT2JqZWN0IHtcbiAgICBsZXQgaGFzaCA9IHRoaXMuZGVmYXVsdEluamVjdGlvbnMoc3BlY2lmaWVyKTtcbiAgICBsZXQgaW5qZWN0aW9uczogSW5qZWN0aW9uW10gPSB0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkSW5qZWN0aW9ucyhzcGVjaWZpZXIpO1xuICAgIGxldCBpbmplY3Rpb246IEluamVjdGlvbjtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5qZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaW5qZWN0aW9uID0gaW5qZWN0aW9uc1tpXTtcbiAgICAgIGhhc2hbaW5qZWN0aW9uLnByb3BlcnR5XSA9IHRoaXMubG9va3VwKGluamVjdGlvbi5zb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZhY3Rvcnkoc3BlY2lmaWVyOiBzdHJpbmcsIGZhY3RvcnlEZWZpbml0aW9uOiBGYWN0b3J5RGVmaW5pdGlvbjxhbnk+KTogRmFjdG9yeTxhbnk+IHtcbiAgICBsZXQgaW5qZWN0aW9ucyA9IHRoaXMuYnVpbGRJbmplY3Rpb25zKHNwZWNpZmllcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3M6IGZhY3RvcnlEZWZpbml0aW9uLFxuICAgICAgY3JlYXRlKG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBpbmplY3Rpb25zLCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gZmFjdG9yeURlZmluaXRpb24uY3JlYXRlKG1lcmdlZE9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLENBQUMsT0FBTztJQU1aLFlBQVksUUFBd0IsRUFBRSxXQUFxQixJQUFJO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFpQjtRQUMxQixJQUFJLGlCQUFpQixHQUEyQixJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUYsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFFRCxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDdkIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUVELEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1lBQ2hFLENBQUM7UUFDSCxDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDdkIsTUFBTSxDQUFDO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxJ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QUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpELE1BQU0sQ0FBQztZQUNMLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsUUFBUSxFQUFFLENBQUMsUUFBUTtnQkFDakIsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDL0IsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxDQUFDLE9BQU87Z0JBQ1osSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUUzRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pELENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFjdG9yeSwgRmFjdG9yeURlZmluaXRpb24gfSBmcm9tICcuL2ZhY3RvcnknO1xuaW1wb3J0IHsgUmVnaXN0cnlSZWFkZXIsIEluamVjdGlvbiB9IGZyb20gJy4vcmVnaXN0cnknO1xuaW1wb3J0IHsgUmVzb2x2ZXIgfSBmcm9tICcuL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QgfSBmcm9tICcuL2RpY3QnO1xuXG5pbnRlcmZhY2UgTG9va3VwIHtcbiAgZmFjdG9yeTogRmFjdG9yeTxhbnk+O1xuICBpbnN0YW5jZTogYW55O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250YWluZXIge1xuICBwcml2YXRlIF9yZWdpc3RyeTogUmVnaXN0cnlSZWFkZXI7XG4gIHByaXZhdGUgX3Jlc29sdmVyOiBSZXNvbHZlcjtcbiAgcHJpdmF0ZSBfbG9va3VwczogRGljdDxMb29rdXA+O1xuICBwcml2YXRlIF9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHM6IERpY3Q8RmFjdG9yeURlZmluaXRpb248YW55Pj47XG5cbiAgY29uc3RydWN0b3IocmVnaXN0cnk6IFJlZ2lzdHJ5UmVhZGVyLCByZXNvbHZlcjogUmVzb2x2ZXIgPSBudWxsKSB7XG4gICAgdGhpcy5fcmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgICB0aGlzLl9yZXNvbHZlciA9IHJlc29sdmVyO1xuICAgIHRoaXMuX2xvb2t1cHMgPSB7fTtcbiAgICB0aGlzLl9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHMgPSB7fTtcbiAgfVxuXG4gIGZhY3RvcnlGb3Ioc3BlY2lmaWVyOiBzdHJpbmcpOiBGYWN0b3J5PGFueT4ge1xuICAgIGxldCBmYWN0b3J5RGVmaW5pdGlvbjogRmFjdG9yeURlZmluaXRpb248YW55PiA9IHRoaXMuX2ZhY3RvcnlEZWZpbml0aW9uTG9va3Vwc1tzcGVjaWZpZXJdO1xuXG4gICAgaWYgKCFmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgaWYgKHRoaXMuX3Jlc29sdmVyKSB7XG4gICAgICAgIGZhY3RvcnlEZWZpbml0aW9uID0gdGhpcy5fcmVzb2x2ZXIucmV0cmlldmUoc3BlY2lmaWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgICBmYWN0b3J5RGVmaW5pdGlvbiA9IHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdHJhdGlvbihzcGVjaWZpZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgICAgdGhpcy5fZmFjdG9yeURlZmluaXRpb25Mb29rdXBzW3NwZWNpZmllcl0gPSBmYWN0b3J5RGVmaW5pdGlvbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYnVpbGRGYWN0b3J5KHNwZWNpZmllciwgZmFjdG9yeURlZmluaXRpb24pO1xuICB9XG5cbiAgbG9va3VwKHNwZWNpZmllcjogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgc2luZ2xldG9uID0gKHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyZWRPcHRpb24oc3BlY2lmaWVyLCAnc2luZ2xldG9uJykgIT09IGZhbHNlKTtcblxuICAgIGlmIChzaW5nbGV0b24pIHtcbiAgICAgIGxldCBsb29rdXAgPSB0aGlzLl9sb29rdXBzW3NwZWNpZmllcl07XG4gICAgICBpZiAobG9va3VwKSB7XG4gICAgICAgIHJldHVybiBsb29rdXAuaW5zdGFuY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZhY3RvcnkgPSB0aGlzLmZhY3RvcnlGb3Ioc3BlY2lmaWVyKTtcbiAgICBpZiAoIWZhY3RvcnkpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJlZE9wdGlvbihzcGVjaWZpZXIsICdpbnN0YW50aWF0ZScpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGZhY3RvcnkuY2xhc3M7XG4gICAgfVxuXG4gICAgbGV0IGluc3RhbmNlID0gZmFjdG9yeS5jcmVhdGUoKTtcblxuICAgIGlmIChzaW5nbGV0b24gJiYgaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuX2xvb2t1cHNbc3BlY2lmaWVyXSA9IHsgZmFjdG9yeSwgaW5zdGFuY2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICBkZWZhdWx0SW5qZWN0aW9ucyhzcGVjaWZpZXI6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgdGVhcmRvd24oKTogdm9pZCB7XG4gICAgbGV0IHNwZWNpZmllcnMgPSBPYmplY3Qua2V5cyh0aGlzLl9sb29rdXBzKTtcblxuICAgIGZvciAobGV0IGk9MDtpPHNwZWNpZmllcnMubGVuZ3RoO2krKykge1xuICAgICAgbGV0IHNwZWNpZmllciA9IHNwZWNpZmllcnNbaV07XG4gICAgICBsZXQgeyBmYWN0b3J5LCBpbnN0YW5jZSB9ID0gdGhpcy5fbG9va3Vwc1tzcGVjaWZpZXJdO1xuICAgICAgZmFjdG9yeS50ZWFyZG93bihpbnN0YW5jZSk7XG4gICAgfVxuICB9XG5cbiAgZGVmYXVsdFRlYXJkb3duKGluc3RhbmNlKTogdm9pZCB7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSW5qZWN0aW9ucyhzcGVjaWZpZXI6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgbGV0IGhhc2ggPSB0aGlzLmRlZmF1bHRJbmplY3Rpb25zKHNwZWNpZmllcik7XG4gICAgbGV0IGluamVjdGlvbnM6IEluamVjdGlvbltdID0gdGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJlZEluamVjdGlvbnMoc3BlY2lmaWVyKTtcbiAgICBsZXQgaW5qZWN0aW9uOiBJbmplY3Rpb247XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluamVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluamVjdGlvbiA9IGluamVjdGlvbnNbaV07XG4gICAgICBoYXNoW2luamVjdGlvbi5wcm9wZXJ0eV0gPSB0aGlzLmxvb2t1cChpbmplY3Rpb24uc291cmNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzaDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGYWN0b3J5KHNwZWNpZmllcjogc3RyaW5nLCBmYWN0b3J5RGVmaW5pdGlvbjogRmFjdG9yeURlZmluaXRpb248YW55Pik6IEZhY3Rvcnk8YW55PiB7XG4gICAgbGV0IGluamVjdGlvbnMgPSB0aGlzLmJ1aWxkSW5qZWN0aW9ucyhzcGVjaWZpZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYXNzOiBmYWN0b3J5RGVmaW5pdGlvbixcbiAgICAgIHRlYXJkb3duOiAoaW5zdGFuY2UpID0+IHtcbiAgICAgICAgaWYgKGZhY3RvcnlEZWZpbml0aW9uLnRlYXJkb3duKSB7XG4gICAgICAgICAgZmFjdG9yeURlZmluaXRpb24udGVhcmRvd24oaW5zdGFuY2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGVmYXVsdFRlYXJkb3duKGluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgICAgIGxldCBtZXJnZWRPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgaW5qZWN0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIGZhY3RvcnlEZWZpbml0aW9uLmNyZWF0ZShtZXJnZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==

@@ -1,1 +0,1 @@

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlEZWZpbml0aW9uPFQ+IHtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBPYmplY3QpOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhY3Rvcnk8VD4ge1xuICBjbGFzczogRmFjdG9yeURlZmluaXRpb248VD47XG4gIGNyZWF0ZShpbmplY3Rpb25zPzogT2JqZWN0KTogVDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlEZWZpbml0aW9uPFQ+IHtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBvYmplY3QpOiBUO1xuICB0ZWFyZG93bj8oaW5zdGFuY2U6IG9iamVjdCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeTxUPiB7XG4gIGNsYXNzOiBGYWN0b3J5RGVmaW5pdGlvbjxUPjtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBvYmplY3QpOiBUO1xuICB0ZWFyZG93bihpbnN0YW5jZTogYW55KTogdm9pZDtcbn1cbiJdfQ==

@@ -9,2 +9,2 @@ // TODO - use symbol

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb3duZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0Esb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUM7QUFFakMsTUFBTSxtQkFBbUIsTUFBYztJQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLG1CQUFtQixNQUFjLEVBQUUsS0FBWTtJQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RyYXRpb25PcHRpb25zIH0gZnJvbSAnLi9yZWdpc3RyeSc7XG5pbXBvcnQgeyBGYWN0b3J5IH0gZnJvbSAnLi9mYWN0b3J5JztcblxuLy8gVE9ETyAtIHVzZSBzeW1ib2xcbmV4cG9ydCBjb25zdCBPV05FUiA9ICdfX293bmVyX18nO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3duZXIob2JqZWN0OiBPYmplY3QpOiBPd25lciB7XG4gIHJldHVybiBvYmplY3RbT1dORVJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0T3duZXIob2JqZWN0OiBPYmplY3QsIG93bmVyOiBPd25lcik6IHZvaWQge1xuICBvYmplY3RbT1dORVJdID0gb3duZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3duZXIge1xuICBpZGVudGlmeShzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgZmFjdG9yeUZvcihzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBGYWN0b3J5PGFueT47XG4gIFxuICBsb29rdXAoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogYW55O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb3duZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0Esb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUM7QUFFakMsTUFBTSxtQkFBbUIsTUFBYztJQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLG1CQUFtQixNQUFjLEVBQUUsS0FBWTtJQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RyYXRpb25PcHRpb25zIH0gZnJvbSAnLi9yZWdpc3RyeSc7XG5pbXBvcnQgeyBGYWN0b3J5IH0gZnJvbSAnLi9mYWN0b3J5JztcblxuLy8gVE9ETyAtIHVzZSBzeW1ib2xcbmV4cG9ydCBjb25zdCBPV05FUiA9ICdfX293bmVyX18nO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3duZXIob2JqZWN0OiBvYmplY3QpOiBPd25lciB7XG4gIHJldHVybiBvYmplY3RbT1dORVJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0T3duZXIob2JqZWN0OiBvYmplY3QsIG93bmVyOiBPd25lcik6IHZvaWQge1xuICBvYmplY3RbT1dORVJdID0gb3duZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3duZXIge1xuICBpZGVudGlmeShzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgZmFjdG9yeUZvcihzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBGYWN0b3J5PGFueT47XG4gIFxuICBsb29rdXAoc3BlY2lmaWVyOiBzdHJpbmcsIHJlZmVycmVyPzogc3RyaW5nKTogYW55O1xufVxuIl19

@@ -36,4 +36,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var singleton = this._registry.registeredOption(specifier, 'singleton') !== false;
if (singleton && this._lookups[specifier]) {
return this._lookups[specifier];
if (singleton) {
var lookup = this._lookups[specifier];
if (lookup) {
return lookup.instance;
}
}

@@ -47,7 +50,7 @@ var factory = this.factoryFor(specifier);

}
var object = factory.create();
if (singleton && object) {
this._lookups[specifier] = object;
var instance = factory.create();
if (singleton && instance) {
this._lookups[specifier] = { factory: factory, instance: instance };
}
return object;
return instance;
};

@@ -59,2 +62,16 @@

Container.prototype.teardown = function teardown() {
var specifiers = Object.keys(this._lookups);
for (var i = 0; i < specifiers.length; i++) {
var specifier = specifiers[i];
var _lookups$specifier = this._lookups[specifier],
factory = _lookups$specifier.factory,
instance = _lookups$specifier.instance;
factory.teardown(instance);
}
};
Container.prototype.defaultTeardown = function defaultTeardown(instance) {};
Container.prototype.buildInjections = function buildInjections(specifier) {

@@ -72,5 +89,14 @@ var hash = this.defaultInjections(specifier);

Container.prototype.buildFactory = function buildFactory(specifier, factoryDefinition) {
var _this = this;
var injections = this.buildInjections(specifier);
return {
class: factoryDefinition,
teardown: function (instance) {
if (factoryDefinition.teardown) {
factoryDefinition.teardown(instance);
} else {
_this.defaultTeardown(instance);
}
},
create: function (options) {

@@ -87,2 +113,2 @@ var mergedOptions = Object.assign({}, injections, options);

export default Container;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXRSx1QkFBWSxBQUF3QjtZQUFFLCtFQUFxQixBQUFJOzs7O0FBQzdELEFBQUksYUFBQyxBQUFTLFlBQUcsQUFBUSxBQUFDO0FBQzFCLEFBQUksYUFBQyxBQUFTLFlBQUcsQUFBUSxBQUFDO0FBQzFCLEFBQUksYUFBQyxBQUFRLFdBQUcsQUFBRSxBQUFDO0FBQ25CLEFBQUksYUFBQyxBQUF5Qiw0QkFBRyxBQUFFLEFBQUMsQUFDdEM7QUFBQzs7d0JBRUQsQUFBVSxpQ0FBQyxBQUFpQjtBQUMxQixZQUFJLEFBQWlCLG9CQUEyQixBQUFJLEtBQUMsQUFBeUIsMEJBQUMsQUFBUyxBQUFDLEFBQUM7QUFFMUYsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFpQixBQUFDLG1CQUFDLEFBQUM7QUFDdkIsQUFBRSxBQUFDLGdCQUFDLEFBQUksS0FBQyxBQUFTLEFBQUMsV0FBQyxBQUFDO0FBQ25CLEFBQWlCLG9DQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBUSxTQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ3pEO0FBQUM7QUFFRCxBQUFFLEFBQUMsZ0JBQUMsQ0FBQyxBQUFpQixBQUFDLG1CQUFDLEFBQUM7QUFDdkIsQUFBaUIsb0NBQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFZLGFBQUMsQUFBUyxBQUFDLEFBQUMsQUFDN0Q7QUFBQztBQUVELEFBQUUsQUFBQyxnQkFBQyxBQUFpQixBQUFDLG1CQUFDLEFBQUM7QUFDdEIsQUFBSSxxQkFBQyxBQUF5QiwwQkFBQyxBQUFTLEFBQUMsYUFBRyxBQUFpQixBQUFDLEFBQ2hFO0FBQUMsQUFDSDtBQUFDO0FBRUQsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFpQixBQUFDLG1CQUFDLEFBQUM7QUFDdkIsQUFBTSxBQUFDLEFBQ1Q7QUFBQztBQUVELEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBWSxhQUFDLEFBQVMsV0FBRSxBQUFpQixBQUFDLEFBQUMsQUFDekQ7QUFBQzs7d0JBRUQsQUFBTSx5QkFBQyxBQUFpQjtBQUN0QixZQUFJLEFBQVMsQUFBRyxZQUFDLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBZ0IsaUJBQUMsQUFBUyxXQUFFLEFBQVcsQUFBQyxpQkFBSyxBQUFLLEFBQUMsQUFBQztBQUVwRixBQUFFLEFBQUMsWUFBQyxBQUFTLGFBQUksQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsQUFBQyxZQUFDLEFBQUM7QUFDMUMsQUFBTSxtQkFBQyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ2xDO0FBQUM7QUFFRCxZQUFJLEFBQU8sVUFBRyxBQUFJLEtBQUMsQUFBVSxXQUFDLEFBQVMsQUFBQyxBQUFDO0FBQ3pDLEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBTyxBQUFDLFNBQUMsQUFBQztBQUFDLEFBQU0sQUFBQyxBQUFDO0FBQUM7QUFFekIsQUFBRSxBQUFDLFlBQUMsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFnQixpQkFBQyxBQUFTLFdBQUUsQUFBYSxBQUFDLG1CQUFLLEFBQUssQUFBQyxPQUFDLEFBQUM7QUFDeEUsQUFBTSxtQkFBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQ3ZCO0FBQUM7QUFFRCxZQUFJLEFBQU0sU0FBRyxBQUFPLFFBQUMsQUFBTSxBQUFFLEFBQUM7QUFFOUIsQUFBRSxBQUFDLFlBQUMsQUFBUyxhQUFJLEFBQU0sQUFBQyxRQUFDLEFBQUM7QUFDeEIsQUFBSSxpQkFBQyxBQUFRLFNBQUMsQUFBUyxBQUFDLGFBQUcsQUFBTSxBQUFDLEFBQ3BDO0FBQUM7QUFFRCxBQUFNLGVBQUMsQUFBTSxBQUFDLEFBQ2hCO0FBQUM7O3dCQUVELEFBQWlCLCtDQUFDLEFBQWlCO0FBQ2pDLEFBQU0sZUFBQyxBQUFFLEFBQUMsQUFDWjtBQUFDOzt3QkFFTyxBQUFlLDJDQUFDLEFBQWlCO0FBQ3ZDLFlBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFpQixrQkFBQyxBQUFTLEFBQUMsQUFBQztBQUM3QyxZQUFJLEFBQVUsYUFBZ0IsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFvQixxQkFBQyxBQUFTLEFBQUMsQUFBQztBQUM3RSxZQUFJLEFBQW9CLEFBQUM7QUFFekIsQUFBRyxBQUFDLGFBQUMsSUFBSSxBQUFDLElBQUcsQUFBQyxHQUFFLEFBQUMsSUFBRyxBQUFVLFdBQUMsQUFBTSxRQUFFLEFBQUMsQUFBRSxLQUFFLEFBQUM7QUFDM0MsQUFBUyx3QkFBRyxBQUFVLFdBQUMsQUFBQyxBQUFDLEFBQUM7QUFDMUIsQUFBSSxpQkFBQyxBQUFTLFVBQUMsQUFBUSxBQUFDLFlBQUcsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFTLFVBQUMsQUFBTSxBQUFDLEFBQUMsQUFDM0Q7QUFBQztBQUVELEFBQU0sZUFBQyxBQUFJLEFBQUMsQUFDZDtBQUFDOzt3QkFFTyxBQUFZLHFDQUFDLEFBQWlCLFdBQUUsQUFBeUM7QUFDL0UsWUFBSSxBQUFVLGFBQUcsQUFBSSxLQUFDLEFBQWUsZ0JBQUMsQUFBUyxBQUFDLEFBQUM7QUFFakQsQUFBTTtBQUNKLEFBQUssbUJBQUUsQUFBaUI7QUFDeEIsQUFBTSw4QkFBQyxBQUFPO0FBQ1osb0JBQUksQUFBYSxnQkFBRyxBQUFNLE9BQUMsQUFBTSxPQUFDLEFBQUUsSUFBRSxBQUFVLFlBQUUsQUFBTyxBQUFDLEFBQUM7QUFFM0QsQUFBTSx1QkFBQyxBQUFpQixrQkFBQyxBQUFNLE9BQUMsQUFBYSxBQUFDLEFBQUMsQUFDakQ7QUFBQyxBQUNGLEFBQ0g7QUFSUztBQVFSLEFBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYWN0b3J5LCBGYWN0b3J5RGVmaW5pdGlvbiB9IGZyb20gJy4vZmFjdG9yeSc7XG5pbXBvcnQgeyBSZWdpc3RyeVJlYWRlciwgSW5qZWN0aW9uIH0gZnJvbSAnLi9yZWdpc3RyeSc7XG5pbXBvcnQgeyBSZXNvbHZlciB9IGZyb20gJy4vcmVzb2x2ZXInO1xuaW1wb3J0IHsgRGljdCB9IGZyb20gJy4vZGljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRhaW5lciB7XG4gIHByaXZhdGUgX3JlZ2lzdHJ5OiBSZWdpc3RyeVJlYWRlcjtcbiAgcHJpdmF0ZSBfcmVzb2x2ZXI6IFJlc29sdmVyO1xuICBwcml2YXRlIF9sb29rdXBzOiBEaWN0PGFueT47XG4gIHByaXZhdGUgX2ZhY3RvcnlEZWZpbml0aW9uTG9va3VwczogRGljdDxGYWN0b3J5RGVmaW5pdGlvbjxhbnk+PjtcblxuICBjb25zdHJ1Y3RvcihyZWdpc3RyeTogUmVnaXN0cnlSZWFkZXIsIHJlc29sdmVyOiBSZXNvbHZlciA9IG51bGwpIHtcbiAgICB0aGlzLl9yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICAgIHRoaXMuX3Jlc29sdmVyID0gcmVzb2x2ZXI7XG4gICAgdGhpcy5fbG9va3VwcyA9IHt9O1xuICAgIHRoaXMuX2ZhY3RvcnlEZWZpbml0aW9uTG9va3VwcyA9IHt9O1xuICB9XG5cbiAgZmFjdG9yeUZvcihzcGVjaWZpZXI6IHN0cmluZyk6IEZhY3Rvcnk8YW55PiB7XG4gICAgbGV0IGZhY3RvcnlEZWZpbml0aW9uOiBGYWN0b3J5RGVmaW5pdGlvbjxhbnk+ID0gdGhpcy5fZmFjdG9yeURlZmluaXRpb25Mb29rdXBzW3NwZWNpZmllcl07XG5cbiAgICBpZiAoIWZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICBpZiAodGhpcy5fcmVzb2x2ZXIpIHtcbiAgICAgICAgZmFjdG9yeURlZmluaXRpb24gPSB0aGlzLl9yZXNvbHZlci5yZXRyaWV2ZShzcGVjaWZpZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICAgIGZhY3RvcnlEZWZpbml0aW9uID0gdGhpcy5fcmVnaXN0cnkucmVnaXN0cmF0aW9uKHNwZWNpZmllcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgICB0aGlzLl9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHNbc3BlY2lmaWVyXSA9IGZhY3RvcnlEZWZpbml0aW9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5idWlsZEZhY3Rvcnkoc3BlY2lmaWVyLCBmYWN0b3J5RGVmaW5pdGlvbik7XG4gIH1cblxuICBsb29rdXAoc3BlY2lmaWVyOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBzaW5nbGV0b24gPSAodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJlZE9wdGlvbihzcGVjaWZpZXIsICdzaW5nbGV0b24nKSAhPT0gZmFsc2UpO1xuXG4gICAgaWYgKHNpbmdsZXRvbiAmJiB0aGlzLl9sb29rdXBzW3NwZWNpZmllcl0pIHtcbiAgICAgIHJldHVybiB0aGlzLl9sb29rdXBzW3NwZWNpZmllcl07XG4gICAgfVxuXG4gICAgbGV0IGZhY3RvcnkgPSB0aGlzLmZhY3RvcnlGb3Ioc3BlY2lmaWVyKTtcbiAgICBpZiAoIWZhY3RvcnkpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXJlZE9wdGlvbihzcGVjaWZpZXIsICdpbnN0YW50aWF0ZScpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGZhY3RvcnkuY2xhc3M7XG4gICAgfVxuXG4gICAgbGV0IG9iamVjdCA9IGZhY3RvcnkuY3JlYXRlKCk7XG5cbiAgICBpZiAoc2luZ2xldG9uICYmIG9iamVjdCkge1xuICAgICAgdGhpcy5fbG9va3Vwc1tzcGVjaWZpZXJdID0gb2JqZWN0O1xuICAgIH1cblxuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cblxuICBkZWZhdWx0SW5qZWN0aW9ucyhzcGVjaWZpZXI6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEluamVjdGlvbnMoc3BlY2lmaWVyOiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIGxldCBoYXNoID0gdGhpcy5kZWZhdWx0SW5qZWN0aW9ucyhzcGVjaWZpZXIpO1xuICAgIGxldCBpbmplY3Rpb25zOiBJbmplY3Rpb25bXSA9IHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyZWRJbmplY3Rpb25zKHNwZWNpZmllcik7XG4gICAgbGV0IGluamVjdGlvbjogSW5qZWN0aW9uO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmplY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbmplY3Rpb24gPSBpbmplY3Rpb25zW2ldO1xuICAgICAgaGFzaFtpbmplY3Rpb24ucHJvcGVydHldID0gdGhpcy5sb29rdXAoaW5qZWN0aW9uLnNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2g7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRmFjdG9yeShzcGVjaWZpZXI6IHN0cmluZywgZmFjdG9yeURlZmluaXRpb246IEZhY3RvcnlEZWZpbml0aW9uPGFueT4pOiBGYWN0b3J5PGFueT4ge1xuICAgIGxldCBpbmplY3Rpb25zID0gdGhpcy5idWlsZEluamVjdGlvbnMoc3BlY2lmaWVyKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjbGFzczogZmFjdG9yeURlZmluaXRpb24sXG4gICAgICBjcmVhdGUob3B0aW9ucykge1xuICAgICAgICBsZXQgbWVyZ2VkT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGluamVjdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBmYWN0b3J5RGVmaW5pdGlvbi5jcmVhdGUobWVyZ2VkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnQkUsdUJBQVksQUFBd0I7WUFBRSwrRUFBcUIsQUFBSTs7OztBQUM3RCxBQUFJLGFBQUMsQUFBUyxZQUFHLEFBQVEsQUFBQztBQUMxQixBQUFJLGFBQUMsQUFBUyxZQUFHLEFBQVEsQUFBQztBQUMxQixBQUFJLGFBQUMsQUFBUSxXQUFHLEFBQUUsQUFBQztBQUNuQixBQUFJLGFBQUMsQUFBeUIsNEJBQUcsQUFBRSxBQUFDLEFBQ3RDO0FBQUM7O3dCQUVELEFBQVUsaUNBQUMsQUFBaUI7QUFDMUIsWUFBSSxBQUFpQixvQkFBMkIsQUFBSSxLQUFDLEFBQXlCLDBCQUFDLEFBQVMsQUFBQyxBQUFDO0FBRTFGLEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBaUIsQUFBQyxtQkFBQyxBQUFDO0FBQ3ZCLEFBQUUsQUFBQyxnQkFBQyxBQUFJLEtBQUMsQUFBUyxBQUFDLFdBQUMsQUFBQztBQUNuQixBQUFpQixvQ0FBRyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsQUFBQyxBQUN6RDtBQUFDO0FBRUQsQUFBRSxBQUFDLGdCQUFDLENBQUMsQUFBaUIsQUFBQyxtQkFBQyxBQUFDO0FBQ3ZCLEFBQWlCLG9DQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBWSxhQUFDLEFBQVMsQUFBQyxBQUFDLEFBQzdEO0FBQUM7QUFFRCxBQUFFLEFBQUMsZ0JBQUMsQUFBaUIsQUFBQyxtQkFBQyxBQUFDO0FBQ3RCLEFBQUkscUJBQUMsQUFBeUIsMEJBQUMsQUFBUyxBQUFDLGFBQUcsQUFBaUIsQUFBQyxBQUNoRTtBQUFDLEFBQ0g7QUFBQztBQUVELEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBaUIsQUFBQyxtQkFBQyxBQUFDO0FBQ3ZCLEFBQU0sQUFBQyxBQUNUO0FBQUM7QUFFRCxBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQVksYUFBQyxBQUFTLFdBQUUsQUFBaUIsQUFBQyxBQUFDLEFBQ3pEO0FBQUM7O3dCQUVELEFBQU0seUJBQUMsQUFBaUI7QUFDdEIsWUFBSSxBQUFTLEFBQUcsWUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQWdCLGlCQUFDLEFBQVMsV0FBRSxBQUFXLEFBQUMsaUJBQUssQUFBSyxBQUFDLEFBQUM7QUFFcEYsQUFBRSxBQUFDLFlBQUMsQUFBUyxBQUFDLFdBQUMsQUFBQztBQUNkLGdCQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQVMsQUFBQyxBQUFDO0FBQ3RDLEFBQUUsQUFBQyxnQkFBQyxBQUFNLEFBQUMsUUFBQyxBQUFDO0FBQ1gsQUFBTSx1QkFBQyxBQUFNLE9BQUMsQUFBUSxBQUFDLEFBQ3pCO0FBQUMsQUFDSDtBQUFDO0FBRUQsWUFBSSxBQUFPLFVBQUcsQUFBSSxLQUFDLEFBQVUsV0FBQyxBQUFTLEFBQUMsQUFBQztBQUN6QyxBQUFFLEFBQUMsWUFBQyxDQUFDLEFBQU8sQUFBQyxTQUFDLEFBQUM7QUFBQyxBQUFNLEFBQUMsQUFBQztBQUFDO0FBRXpCLEFBQUUsQUFBQyxZQUFDLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBZ0IsaUJBQUMsQUFBUyxXQUFFLEFBQWEsQUFBQyxtQkFBSyxBQUFLLEFBQUMsT0FBQyxBQUFDO0FBQ3hFLEFBQU0sbUJBQUMsQUFBTyxRQUFDLEFBQUssQUFBQyxBQUN2QjtBQUFDO0FBRUQsWUFBSSxBQUFRLFdBQUcsQUFBTyxRQUFDLEFBQU0sQUFBRSxBQUFDO0FBRWhDLEFBQUUsQUFBQyxZQUFDLEFBQVMsYUFBSSxBQUFRLEFBQUMsVUFBQyxBQUFDO0FBQzFCLEFBQUksaUJBQUMsQUFBUSxTQUFDLEFBQVMsQUFBQyxhQUFHLEVBQUUsQUFBTyxrQkFBRSxBQUFRLEFBQUUsQUFBQyxBQUNuRDtBQUFDO0FBRUQsQUFBTSxlQUFDLEFBQVEsQUFBQyxBQUNsQjtBQUFDOzt3QkFFRCxBQUFpQiwrQ0FBQyxBQUFpQjtBQUNqQyxBQUFNLGVBQUMsQUFBRSxBQUFDLEFBQ1o7QUFBQzs7d0JBRUQsQUFBUTtBQUNOLFlBQUksQUFBVSxhQUFHLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDO0FBRTVDLEFBQUcsQUFBQyxhQUFDLElBQUksQUFBQyxJQUFDLEFBQUMsR0FBQyxBQUFDLElBQUMsQUFBVSxXQUFDLEFBQU0sUUFBQyxBQUFDLEFBQUU7QUFDbEMsZ0JBQUksQUFBUyxZQUFHLEFBQVUsV0FBQyxBQUFDLEFBQUMsQUFBQyxBQUM5QixBQUFJO0FBRmdDLEFBQUMscUNBRVQsQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsQUFBQztnQkFBL0MsQUFBTztnQkFBRSxBQUFRLEFBQUU7O0FBQ3pCLEFBQU8sb0JBQUMsQUFBUSxTQUFDLEFBQVEsQUFBQyxBQUFDLEFBQzdCO0FBQUMsQUFDSDtBQUFDOzt3QkFFRCxBQUFlLDJDQUFDLEFBQVEsVUFDeEIsQ0FBQzs7d0JBRU8sQUFBZSwyQ0FBQyxBQUFpQjtBQUN2QyxZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBaUIsa0JBQUMsQUFBUyxBQUFDLEFBQUM7QUFDN0MsWUFBSSxBQUFVLGFBQWdCLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBb0IscUJBQUMsQUFBUyxBQUFDLEFBQUM7QUFDN0UsWUFBSSxBQUFvQixBQUFDO0FBRXpCLEFBQUcsQUFBQyxhQUFDLElBQUksQUFBQyxJQUFHLEFBQUMsR0FBRSxBQUFDLElBQUcsQUFBVSxXQUFDLEFBQU0sUUFBRSxBQUFDLEFBQUUsS0FBRSxBQUFDO0FBQzNDLEFBQVMsd0JBQUcsQUFBVSxXQUFDLEFBQUMsQUFBQyxBQUFDO0FBQzFCLEFBQUksaUJBQUMsQUFBUyxVQUFDLEFBQVEsQUFBQyxZQUFHLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBUyxVQUFDLEFBQU0sQUFBQyxBQUFDLEFBQzNEO0FBQUM7QUFFRCxBQUFNLGVBQUMsQUFBSSxBQUFDLEFBQ2Q7QUFBQzs7d0JBRU8sQUFBWSxxQ0FBQyxBQUFpQixXQUFFLEFBQXlDOzs7QUFDL0UsWUFBSSxBQUFVLGFBQUcsQUFBSSxLQUFDLEFBQWUsZ0JBQUMsQUFBUyxBQUFDLEFBQUM7QUFFakQsQUFBTTtBQUNKLEFBQUssbUJBQUUsQUFBaUI7QUFDeEIsQUFBUSxzQkFBRSxVQUFDLEFBQVE7QUFDakIsQUFBRSxBQUFDLG9CQUFDLEFBQWlCLGtCQUFDLEFBQVEsQUFBQyxVQUFDLEFBQUM7QUFDL0IsQUFBaUIsc0NBQUMsQUFBUSxTQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3ZDO0FBQUMsQUFBQyxBQUFJLHVCQUFDLEFBQUM7QUFDTixBQUFJLDBCQUFDLEFBQWUsZ0JBQUMsQUFBUSxBQUFDLEFBQUMsQUFDakM7QUFBQyxBQUNIO0FBQUM7QUFDRCxBQUFNLDhCQUFDLEFBQU87QUFDWixvQkFBSSxBQUFhLGdCQUFHLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBRSxJQUFFLEFBQVUsWUFBRSxBQUFPLEFBQUMsQUFBQztBQUUzRCxBQUFNLHVCQUFDLEFBQWlCLGtCQUFDLEFBQU0sT0FBQyxBQUFhLEFBQUMsQUFBQyxBQUNqRDtBQUFDLEFBQ0YsQUFDSDtBQWZTO0FBZVIsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvcnksIEZhY3RvcnlEZWZpbml0aW9uIH0gZnJvbSAnLi9mYWN0b3J5JztcbmltcG9ydCB7IFJlZ2lzdHJ5UmVhZGVyLCBJbmplY3Rpb24gfSBmcm9tICcuL3JlZ2lzdHJ5JztcbmltcG9ydCB7IFJlc29sdmVyIH0gZnJvbSAnLi9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0IH0gZnJvbSAnLi9kaWN0JztcblxuaW50ZXJmYWNlIExvb2t1cCB7XG4gIGZhY3Rvcnk6IEZhY3Rvcnk8YW55PjtcbiAgaW5zdGFuY2U6IGFueTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGFpbmVyIHtcbiAgcHJpdmF0ZSBfcmVnaXN0cnk6IFJlZ2lzdHJ5UmVhZGVyO1xuICBwcml2YXRlIF9yZXNvbHZlcjogUmVzb2x2ZXI7XG4gIHByaXZhdGUgX2xvb2t1cHM6IERpY3Q8TG9va3VwPjtcbiAgcHJpdmF0ZSBfZmFjdG9yeURlZmluaXRpb25Mb29rdXBzOiBEaWN0PEZhY3RvcnlEZWZpbml0aW9uPGFueT4+O1xuXG4gIGNvbnN0cnVjdG9yKHJlZ2lzdHJ5OiBSZWdpc3RyeVJlYWRlciwgcmVzb2x2ZXI6IFJlc29sdmVyID0gbnVsbCkge1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gICAgdGhpcy5fcmVzb2x2ZXIgPSByZXNvbHZlcjtcbiAgICB0aGlzLl9sb29rdXBzID0ge307XG4gICAgdGhpcy5fZmFjdG9yeURlZmluaXRpb25Mb29rdXBzID0ge307XG4gIH1cblxuICBmYWN0b3J5Rm9yKHNwZWNpZmllcjogc3RyaW5nKTogRmFjdG9yeTxhbnk+IHtcbiAgICBsZXQgZmFjdG9yeURlZmluaXRpb246IEZhY3RvcnlEZWZpbml0aW9uPGFueT4gPSB0aGlzLl9mYWN0b3J5RGVmaW5pdGlvbkxvb2t1cHNbc3BlY2lmaWVyXTtcblxuICAgIGlmICghZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgIGlmICh0aGlzLl9yZXNvbHZlcikge1xuICAgICAgICBmYWN0b3J5RGVmaW5pdGlvbiA9IHRoaXMuX3Jlc29sdmVyLnJldHJpZXZlKHNwZWNpZmllcik7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmFjdG9yeURlZmluaXRpb24pIHtcbiAgICAgICAgZmFjdG9yeURlZmluaXRpb24gPSB0aGlzLl9yZWdpc3RyeS5yZWdpc3RyYXRpb24oc3BlY2lmaWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZhY3RvcnlEZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMuX2ZhY3RvcnlEZWZpbml0aW9uTG9va3Vwc1tzcGVjaWZpZXJdID0gZmFjdG9yeURlZmluaXRpb247XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFmYWN0b3J5RGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJ1aWxkRmFjdG9yeShzcGVjaWZpZXIsIGZhY3RvcnlEZWZpbml0aW9uKTtcbiAgfVxuXG4gIGxvb2t1cChzcGVjaWZpZXI6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IHNpbmdsZXRvbiA9ICh0aGlzLl9yZWdpc3RyeS5yZWdpc3RlcmVkT3B0aW9uKHNwZWNpZmllciwgJ3NpbmdsZXRvbicpICE9PSBmYWxzZSk7XG5cbiAgICBpZiAoc2luZ2xldG9uKSB7XG4gICAgICBsZXQgbG9va3VwID0gdGhpcy5fbG9va3Vwc1tzcGVjaWZpZXJdO1xuICAgICAgaWYgKGxvb2t1cCkge1xuICAgICAgICByZXR1cm4gbG9va3VwLmluc3RhbmNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBmYWN0b3J5ID0gdGhpcy5mYWN0b3J5Rm9yKHNwZWNpZmllcik7XG4gICAgaWYgKCFmYWN0b3J5KSB7IHJldHVybjsgfVxuXG4gICAgaWYgKHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyZWRPcHRpb24oc3BlY2lmaWVyLCAnaW5zdGFudGlhdGUnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBmYWN0b3J5LmNsYXNzO1xuICAgIH1cblxuICAgIGxldCBpbnN0YW5jZSA9IGZhY3RvcnkuY3JlYXRlKCk7XG5cbiAgICBpZiAoc2luZ2xldG9uICYmIGluc3RhbmNlKSB7XG4gICAgICB0aGlzLl9sb29rdXBzW3NwZWNpZmllcl0gPSB7IGZhY3RvcnksIGluc3RhbmNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgZGVmYXVsdEluamVjdGlvbnMoc3BlY2lmaWVyOiBzdHJpbmcpOiBvYmplY3Qge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHRlYXJkb3duKCk6IHZvaWQge1xuICAgIGxldCBzcGVjaWZpZXJzID0gT2JqZWN0LmtleXModGhpcy5fbG9va3Vwcyk7XG5cbiAgICBmb3IgKGxldCBpPTA7aTxzcGVjaWZpZXJzLmxlbmd0aDtpKyspIHtcbiAgICAgIGxldCBzcGVjaWZpZXIgPSBzcGVjaWZpZXJzW2ldO1xuICAgICAgbGV0IHsgZmFjdG9yeSwgaW5zdGFuY2UgfSA9IHRoaXMuX2xvb2t1cHNbc3BlY2lmaWVyXTtcbiAgICAgIGZhY3RvcnkudGVhcmRvd24oaW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuXG4gIGRlZmF1bHRUZWFyZG93bihpbnN0YW5jZSk6IHZvaWQge1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEluamVjdGlvbnMoc3BlY2lmaWVyOiBzdHJpbmcpOiBvYmplY3Qge1xuICAgIGxldCBoYXNoID0gdGhpcy5kZWZhdWx0SW5qZWN0aW9ucyhzcGVjaWZpZXIpO1xuICAgIGxldCBpbmplY3Rpb25zOiBJbmplY3Rpb25bXSA9IHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyZWRJbmplY3Rpb25zKHNwZWNpZmllcik7XG4gICAgbGV0IGluamVjdGlvbjogSW5qZWN0aW9uO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmplY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbmplY3Rpb24gPSBpbmplY3Rpb25zW2ldO1xuICAgICAgaGFzaFtpbmplY3Rpb24ucHJvcGVydHldID0gdGhpcy5sb29rdXAoaW5qZWN0aW9uLnNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2g7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRmFjdG9yeShzcGVjaWZpZXI6IHN0cmluZywgZmFjdG9yeURlZmluaXRpb246IEZhY3RvcnlEZWZpbml0aW9uPGFueT4pOiBGYWN0b3J5PGFueT4ge1xuICAgIGxldCBpbmplY3Rpb25zID0gdGhpcy5idWlsZEluamVjdGlvbnMoc3BlY2lmaWVyKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjbGFzczogZmFjdG9yeURlZmluaXRpb24sXG4gICAgICB0ZWFyZG93bjogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIGlmIChmYWN0b3J5RGVmaW5pdGlvbi50ZWFyZG93bikge1xuICAgICAgICAgIGZhY3RvcnlEZWZpbml0aW9uLnRlYXJkb3duKGluc3RhbmNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRlZmF1bHRUZWFyZG93bihpbnN0YW5jZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjcmVhdGUob3B0aW9ucykge1xuICAgICAgICBsZXQgbWVyZ2VkT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGluamVjdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBmYWN0b3J5RGVmaW5pdGlvbi5jcmVhdGUobWVyZ2VkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlEZWZpbml0aW9uPFQ+IHtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBPYmplY3QpOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhY3Rvcnk8VD4ge1xuICBjbGFzczogRmFjdG9yeURlZmluaXRpb248VD47XG4gIGNyZWF0ZShpbmplY3Rpb25zPzogT2JqZWN0KTogVDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlEZWZpbml0aW9uPFQ+IHtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBvYmplY3QpOiBUO1xuICB0ZWFyZG93bj8oaW5zdGFuY2U6IG9iamVjdCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeTxUPiB7XG4gIGNsYXNzOiBGYWN0b3J5RGVmaW5pdGlvbjxUPjtcbiAgY3JlYXRlKGluamVjdGlvbnM/OiBvYmplY3QpOiBUO1xuICB0ZWFyZG93bihpbnN0YW5jZTogYW55KTogdm9pZDtcbn1cbiJdfQ==

@@ -9,2 +9,2 @@ // TODO - use symbol

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb3duZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsQUFBb0I7QUFDcEIsQUFBTSxPQUFDLElBQU0sQUFBSyxRQUFHLEFBQVcsQUFBQztBQUVqQyxBQUFNLHlCQUFtQixBQUFjO0FBQ3JDLEFBQU0sV0FBQyxBQUFNLE9BQUMsQUFBSyxBQUFDLEFBQUMsQUFDdkI7QUFBQztBQUVELEFBQU0seUJBQW1CLEFBQWMsUUFBRSxBQUFZO0FBQ25ELEFBQU0sV0FBQyxBQUFLLEFBQUMsU0FBRyxBQUFLLEFBQUMsQUFDeEI7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZ2lzdHJhdGlvbk9wdGlvbnMgfSBmcm9tICcuL3JlZ2lzdHJ5JztcbmltcG9ydCB7IEZhY3RvcnkgfSBmcm9tICcuL2ZhY3RvcnknO1xuXG4vLyBUT0RPIC0gdXNlIHN5bWJvbFxuZXhwb3J0IGNvbnN0IE9XTkVSID0gJ19fb3duZXJfXyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPd25lcihvYmplY3Q6IE9iamVjdCk6IE93bmVyIHtcbiAgcmV0dXJuIG9iamVjdFtPV05FUl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRPd25lcihvYmplY3Q6IE9iamVjdCwgb3duZXI6IE93bmVyKTogdm9pZCB7XG4gIG9iamVjdFtPV05FUl0gPSBvd25lcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPd25lciB7XG4gIGlkZW50aWZ5KHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IHN0cmluZztcblxuICBmYWN0b3J5Rm9yKHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IEZhY3Rvcnk8YW55PjtcbiAgXG4gIGxvb2t1cChzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBhbnk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvb3duZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsQUFBb0I7QUFDcEIsQUFBTSxPQUFDLElBQU0sQUFBSyxRQUFHLEFBQVcsQUFBQztBQUVqQyxBQUFNLHlCQUFtQixBQUFjO0FBQ3JDLEFBQU0sV0FBQyxBQUFNLE9BQUMsQUFBSyxBQUFDLEFBQUMsQUFDdkI7QUFBQztBQUVELEFBQU0seUJBQW1CLEFBQWMsUUFBRSxBQUFZO0FBQ25ELEFBQU0sV0FBQyxBQUFLLEFBQUMsU0FBRyxBQUFLLEFBQUMsQUFDeEI7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZ2lzdHJhdGlvbk9wdGlvbnMgfSBmcm9tICcuL3JlZ2lzdHJ5JztcbmltcG9ydCB7IEZhY3RvcnkgfSBmcm9tICcuL2ZhY3RvcnknO1xuXG4vLyBUT0RPIC0gdXNlIHN5bWJvbFxuZXhwb3J0IGNvbnN0IE9XTkVSID0gJ19fb3duZXJfXyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPd25lcihvYmplY3Q6IG9iamVjdCk6IE93bmVyIHtcbiAgcmV0dXJuIG9iamVjdFtPV05FUl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRPd25lcihvYmplY3Q6IG9iamVjdCwgb3duZXI6IE93bmVyKTogdm9pZCB7XG4gIG9iamVjdFtPV05FUl0gPSBvd25lcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPd25lciB7XG4gIGlkZW50aWZ5KHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IHN0cmluZztcblxuICBmYWN0b3J5Rm9yKHNwZWNpZmllcjogc3RyaW5nLCByZWZlcnJlcj86IHN0cmluZyk6IEZhY3Rvcnk8YW55PjtcbiAgXG4gIGxvb2t1cChzcGVjaWZpZXI6IHN0cmluZywgcmVmZXJyZXI/OiBzdHJpbmcpOiBhbnk7XG59XG4iXX0=

@@ -12,5 +12,7 @@ import { Factory } from './factory';

lookup(specifier: string): any;
defaultInjections(specifier: string): Object;
defaultInjections(specifier: string): object;
teardown(): void;
defaultTeardown(instance: any): void;
private buildInjections(specifier);
private buildFactory(specifier, factoryDefinition);
}
export interface FactoryDefinition<T> {
create(injections?: Object): T;
create(injections?: object): T;
teardown?(instance: object): void;
}
export interface Factory<T> {
class: FactoryDefinition<T>;
create(injections?: Object): T;
create(injections?: object): T;
teardown(instance: any): void;
}
import { Factory } from './factory';
export declare const OWNER = "__owner__";
export declare function getOwner(object: Object): Owner;
export declare function setOwner(object: Object, owner: Owner): void;
export declare function getOwner(object: object): Owner;
export declare function setOwner(object: object, owner: Owner): void;
export interface Owner {

@@ -6,0 +6,0 @@ identify(specifier: string, referrer?: string): string;

{
"name": "@glimmer/di",
"version": "0.1.11",
"version": "0.2.0",
"description": "Dependency injection support for Glimmer applications.",

@@ -21,3 +21,3 @@ "contributors": [

"devDependencies": {
"@glimmer/build": "^0.4.0",
"@glimmer/build": "^0.6.0",
"broccoli": "^1.1.0",

@@ -24,0 +24,0 @@ "broccoli-cli": "^1.0.0",

@@ -6,6 +6,11 @@ import { Factory, FactoryDefinition } from './factory';

interface Lookup {
factory: Factory<any>;
instance: any;
}
export default class Container {
private _registry: RegistryReader;
private _resolver: Resolver;
private _lookups: Dict<any>;
private _lookups: Dict<Lookup>;
private _factoryDefinitionLookups: Dict<FactoryDefinition<any>>;

@@ -47,4 +52,7 @@

if (singleton && this._lookups[specifier]) {
return this._lookups[specifier];
if (singleton) {
let lookup = this._lookups[specifier];
if (lookup) {
return lookup.instance;
}
}

@@ -59,16 +67,29 @@

let object = factory.create();
let instance = factory.create();
if (singleton && object) {
this._lookups[specifier] = object;
if (singleton && instance) {
this._lookups[specifier] = { factory, instance };
}
return object;
return instance;
}
defaultInjections(specifier: string): Object {
defaultInjections(specifier: string): object {
return {};
}
private buildInjections(specifier: string): Object {
teardown(): void {
let specifiers = Object.keys(this._lookups);
for (let i=0;i<specifiers.length;i++) {
let specifier = specifiers[i];
let { factory, instance } = this._lookups[specifier];
factory.teardown(instance);
}
}
defaultTeardown(instance): void {
}
private buildInjections(specifier: string): object {
let hash = this.defaultInjections(specifier);

@@ -91,2 +112,9 @@ let injections: Injection[] = this._registry.registeredInjections(specifier);

class: factoryDefinition,
teardown: (instance) => {
if (factoryDefinition.teardown) {
factoryDefinition.teardown(instance);
} else {
this.defaultTeardown(instance);
}
},
create(options) {

@@ -93,0 +121,0 @@ let mergedOptions = Object.assign({}, injections, options);

export interface FactoryDefinition<T> {
create(injections?: Object): T;
create(injections?: object): T;
teardown?(instance: object): void;
}

@@ -7,3 +8,4 @@

class: FactoryDefinition<T>;
create(injections?: Object): T;
create(injections?: object): T;
teardown(instance: any): void;
}

@@ -7,7 +7,7 @@ import { RegistrationOptions } from './registry';

export function getOwner(object: Object): Owner {
export function getOwner(object: object): Owner {
return object[OWNER];
}
export function setOwner(object: Object, owner: Owner): void {
export function setOwner(object: object, owner: Owner): void {
object[OWNER] = owner;

@@ -14,0 +14,0 @@ }

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc