@awesome-nodes/mvvm
Version:
Application development framework using the *model* *view* *view-model* design pattern.
78 lines (62 loc) • 10 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ServiceProviderBase = void 0;
var _object = require("@awesome-nodes/object");
var _data = require("@awesome-nodes/object/data");
class ServiceProviderBase extends _object.ObjectBase {
provide(provide) {
const factoryProvider = this.constructor.createFactoryProvider(provide, this);
if (!factoryProvider.provide) factoryProvider.provide = provide;
return this.inject({
provide: factoryProvider.provide,
useFactory: factoryProvider.useFactory,
deps: factoryProvider.deps
});
}
static createFactoryProvider(provide, provider = new this()) {
let factoryProvider;
switch (_data.ENVIRONMENT_TOKEN.value) {
case null:
case undefined:
factoryProvider = provider.designFactory;
break;
case false:
factoryProvider = provider.developmentFactory;
break;
default:
factoryProvider = provider.productionFactory;
}
if (!factoryProvider.provide) factoryProvider.provide = provide;
return {
provide: factoryProvider.provide,
useFactory: (...deps) => {
return new (factoryProvider.provide.bind(null, ...deps))();
},
deps: factoryProvider.deps || []
};
}
static createClassProvider() {
const providerBase = new this();
const productionFactory = providerBase.productionFactory;
let factoryProvider;
switch (_data.ENVIRONMENT_TOKEN.value) {
case null:
case undefined:
factoryProvider = providerBase.designFactory;
break;
case false:
factoryProvider = providerBase.developmentFactory;
break;
default:
factoryProvider = productionFactory;
}
return {
provide: productionFactory.provide,
useClass: factoryProvider.provide
};
}
}
exports.ServiceProviderBase = ServiceProviderBase;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tdnZtL3Byb3ZpZGVycy9TZXJ2aWNlUHJvdmlkZXJCYXNlLnRzIl0sIm5hbWVzIjpbIlNlcnZpY2VQcm92aWRlckJhc2UiLCJPYmplY3RCYXNlIiwicHJvdmlkZSIsImZhY3RvcnlQcm92aWRlciIsImNvbnN0cnVjdG9yIiwiY3JlYXRlRmFjdG9yeVByb3ZpZGVyIiwiaW5qZWN0IiwidXNlRmFjdG9yeSIsImRlcHMiLCJwcm92aWRlciIsIkVOVklST05NRU5UX1RPS0VOIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJkZXNpZ25GYWN0b3J5IiwiZGV2ZWxvcG1lbnRGYWN0b3J5IiwicHJvZHVjdGlvbkZhY3RvcnkiLCJiaW5kIiwiY3JlYXRlQ2xhc3NQcm92aWRlciIsInByb3ZpZGVyQmFzZSIsInVzZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBQ0E7O0FBeUJPLE1BQWVBLG1CQUFmLFNBQTJFQyxrQkFBM0UsQ0FDUDtBQU9XQyxFQUFBQSxPQUFPLENBQUNBLE9BQUQsRUFDZDtBQUNJLFVBQU1DLGVBQWUsR0FBSSxLQUFLQyxXQUFOLENBQ25CQyxxQkFEbUIsQ0FDTUgsT0FETixFQUNlLElBRGYsQ0FBeEI7QUFHQSxRQUFJLENBQUNDLGVBQWUsQ0FBQ0QsT0FBckIsRUFDSUMsZUFBZSxDQUFDRCxPQUFoQixHQUEwQkEsT0FBMUI7QUFFSixXQUFPLEtBQUtJLE1BQUwsQ0FDSDtBQUNJSixNQUFBQSxPQUFPLEVBQUtDLGVBQWUsQ0FBQ0QsT0FEaEM7QUFFSUssTUFBQUEsVUFBVSxFQUFFSixlQUFlLENBQUNJLFVBRmhDO0FBR0lDLE1BQUFBLElBQUksRUFBUUwsZUFBZSxDQUFDSztBQUhoQyxLQURHLENBQVA7QUFPSDs7QUFTa0MsU0FBckJILHFCQUFxQixDQUMvQkgsT0FEK0IsRUFFL0JPLFFBQWdDLEdBQUcsSUFBSyxJQUFMLEVBRkosRUFJbkM7QUFDSSxRQUFJTixlQUFKOztBQUNBLFlBQVFPLHdCQUFrQkMsS0FBMUI7QUFDSSxXQUFLLElBQUw7QUFDQSxXQUFLQyxTQUFMO0FBQ0lULFFBQUFBLGVBQWUsR0FBR00sUUFBUSxDQUFDSSxhQUEzQjtBQUNBOztBQUNKLFdBQUssS0FBTDtBQUNJVixRQUFBQSxlQUFlLEdBQUdNLFFBQVEsQ0FBQ0ssa0JBQTNCO0FBQ0E7O0FBQ0o7QUFDSVgsUUFBQUEsZUFBZSxHQUFHTSxRQUFRLENBQUNNLGlCQUEzQjtBQVRSOztBQVlBLFFBQUksQ0FBQ1osZUFBZSxDQUFDRCxPQUFyQixFQUNJQyxlQUFlLENBQUNELE9BQWhCLEdBQTBCQSxPQUExQjtBQUVKLFdBQU87QUFDSEEsTUFBQUEsT0FBTyxFQUFLQyxlQUFlLENBQUNELE9BRHpCO0FBRUhLLE1BQUFBLFVBQVUsRUFBRyxDQUFDLEdBQUdDLElBQUosS0FDYjtBQUNJLGVBQU8sS0FBTUwsZUFBZSxDQUFDRCxPQUFqQixDQUF5RGMsSUFBekQsQ0FBOEQsSUFBOUQsRUFBb0UsR0FBR1IsSUFBdkUsQ0FBTCxHQUFQO0FBQ0gsT0FMRTtBQU1IQSxNQUFBQSxJQUFJLEVBQVFMLGVBQWUsQ0FBQ0ssSUFBaEIsSUFBd0I7QUFOakMsS0FBUDtBQVFIOztBQUtnQyxTQUFuQlMsbUJBQW1CLEdBQ2pDO0FBQ0ksVUFBTUMsWUFBWSxHQUFRLElBQUssSUFBTCxFQUExQjtBQUNBLFVBQU1ILGlCQUFpQixHQUFHRyxZQUFZLENBQUNILGlCQUF2QztBQUNBLFFBQUlaLGVBQUo7O0FBRUEsWUFBUU8sd0JBQWtCQyxLQUExQjtBQUNJLFdBQUssSUFBTDtBQUNBLFdBQUtDLFNBQUw7QUFDSVQsUUFBQUEsZUFBZSxHQUFHZSxZQUFZLENBQUNMLGFBQS9CO0FBQ0E7O0FBQ0osV0FBSyxLQUFMO0FBQ0lWLFFBQUFBLGVBQWUsR0FBR2UsWUFBWSxDQUFDSixrQkFBL0I7QUFDQTs7QUFDSjtBQUNJWCxRQUFBQSxlQUFlLEdBQUdZLGlCQUFsQjtBQVRSOztBQVlBLFdBQU87QUFDSGIsTUFBQUEsT0FBTyxFQUFHYSxpQkFBaUIsQ0FBQ2IsT0FEekI7QUFFSGlCLE1BQUFBLFFBQVEsRUFBRWhCLGVBQWUsQ0FBQ0Q7QUFGdkIsS0FBUDtBQUlIOztBQXZGTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsYXNzUHJvdmlkZXJDb25maWcsIEZhY3RvcnlQcm92aWRlckNvbmZpZywgVG9rZW4gfSBmcm9tICdAYXdlc29tZS1ub2Rlcy9pbmplY3Rpb24tZmFjdG9yeSc7XG5pbXBvcnQgeyBPYmplY3RCYXNlIH0gZnJvbSAnQGF3ZXNvbWUtbm9kZXMvb2JqZWN0JztcbmltcG9ydCB7IEVOVklST05NRU5UX1RPS0VOIH0gZnJvbSAnQGF3ZXNvbWUtbm9kZXMvb2JqZWN0L2RhdGEnO1xuaW1wb3J0IHsgU2VydmljZUJhc2UgfSBmcm9tICdtdnZtL3NlcnZpY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdG9yRnVuY3Rpb24gfSBmcm9tICdzaW1wbHl0eXBlZCc7XG5cblxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSBmYWN0b3J5IHByb3ZpZGVyIHRvIHJldHVybiB0aGUgc2VydmljZSBmYWN0b3J5IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcnZpY2VQcm92aWRlclxue1xuICAgIC8qKlxuICAgICAqIEFuIGluamVjdGlvbiB0b2tlbi4gKFR5cGljYWxseSBhbiBpbnN0YW5jZSBvZiBgVHlwZWAgb3IgYEluamVjdGlvblRva2VuYCwgYnV0IGNhbiBiZSBgYW55YCkuXG4gICAgICovXG4gICAgcHJvdmlkZT86IENvbnN0cnVjdG9yRnVuY3Rpb248b2JqZWN0PjtcblxuICAgIC8qKlxuICAgICAqIEEgbGlzdCBvZiBgdG9rZW5gcyB3aGljaCBuZWVkIHRvIGJlIHJlc29sdmVkIGJ5IHRoZSBpbmplY3Rvci4gVGhlIGxpc3Qgb2YgdmFsdWVzIGlzIHRoZW5cbiAgICAgKiB1c2VkIGFzIGFyZ3VtZW50cyB0byB0aGUgYHVzZUZhY3RvcnlgIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGRlcHM/OiBBcnJheTxUb2tlbj47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgYmFzZSBvYmplY3QgZm9yIHRoZSBwcm92aWRlciBpbiB0aGUgc2VydmljZSBwcm92aWRlciBwYXR0ZXJuLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2VydmljZVByb3ZpZGVyQmFzZTxUIGV4dGVuZHMgU2VydmljZUJhc2U8dW5rbm93bj4+IGV4dGVuZHMgT2JqZWN0QmFzZVxue1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXQgZGVzaWduRmFjdG9yeSgpOiBJU2VydmljZVByb3ZpZGVyO1xuXG4gICAgcHVibGljIGFic3RyYWN0IGdldCBkZXZlbG9wbWVudEZhY3RvcnkoKTogSVNlcnZpY2VQcm92aWRlcjtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXQgcHJvZHVjdGlvbkZhY3RvcnkoKTogSVNlcnZpY2VQcm92aWRlcjtcblxuICAgIHB1YmxpYyBwcm92aWRlKHByb3ZpZGU6IENvbnN0cnVjdG9yRnVuY3Rpb248VD4pOiBUXG4gICAge1xuICAgICAgICBjb25zdCBmYWN0b3J5UHJvdmlkZXIgPSAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgU2VydmljZVByb3ZpZGVyQmFzZSlcbiAgICAgICAgICAgIC5jcmVhdGVGYWN0b3J5UHJvdmlkZXI8VD4ocHJvdmlkZSwgdGhpcyk7XG5cbiAgICAgICAgaWYgKCFmYWN0b3J5UHJvdmlkZXIucHJvdmlkZSlcbiAgICAgICAgICAgIGZhY3RvcnlQcm92aWRlci5wcm92aWRlID0gcHJvdmlkZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3QoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZSAgIDogZmFjdG9yeVByb3ZpZGVyLnByb3ZpZGUsXG4gICAgICAgICAgICAgICAgdXNlRmFjdG9yeTogZmFjdG9yeVByb3ZpZGVyLnVzZUZhY3RvcnksXG4gICAgICAgICAgICAgICAgZGVwcyAgICAgIDogZmFjdG9yeVByb3ZpZGVyLmRlcHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBpbmplY3QocHJvdmlkZXI6IEZhY3RvcnlQcm92aWRlckNvbmZpZzxUPik6IFQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBmYWN0b3J5IGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQgYnkgYSBkZXJpdmVkIHByb3ZpZGVyIHR5cGUgb24gd2hpY2ggdGhpcyBmdW5jdGlvbiB3YXMgaW52b2tlZCBvbi5cbiAgICAgKiBAcGFyYW0gcHJvdmlkZVxuICAgICAqIEBwYXJhbSBwcm92aWRlclxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRmFjdG9yeVByb3ZpZGVyPFUgZXh0ZW5kcyBTZXJ2aWNlQmFzZTx1bmtub3duPj4oXG4gICAgICAgIHByb3ZpZGU6IENvbnN0cnVjdG9yRnVuY3Rpb248VT4sXG4gICAgICAgIHByb3ZpZGVyOiBTZXJ2aWNlUHJvdmlkZXJCYXNlPFU+ID0gbmV3ICh0aGlzIGFzIHVua25vd24gYXMgQ29uc3RydWN0b3JGdW5jdGlvbjxTZXJ2aWNlUHJvdmlkZXJCYXNlPFU+PikoKSk6XG4gICAgICAgIEZhY3RvcnlQcm92aWRlckNvbmZpZzxVPlxuICAgIHtcbiAgICAgICAgbGV0IGZhY3RvcnlQcm92aWRlcjogSVNlcnZpY2VQcm92aWRlcjtcbiAgICAgICAgc3dpdGNoIChFTlZJUk9OTUVOVF9UT0tFTi52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBudWxsOlxuICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgZmFjdG9yeVByb3ZpZGVyID0gcHJvdmlkZXIuZGVzaWduRmFjdG9yeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgZmFsc2U6XG4gICAgICAgICAgICAgICAgZmFjdG9yeVByb3ZpZGVyID0gcHJvdmlkZXIuZGV2ZWxvcG1lbnRGYWN0b3J5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBmYWN0b3J5UHJvdmlkZXIgPSBwcm92aWRlci5wcm9kdWN0aW9uRmFjdG9yeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZmFjdG9yeVByb3ZpZGVyLnByb3ZpZGUpXG4gICAgICAgICAgICBmYWN0b3J5UHJvdmlkZXIucHJvdmlkZSA9IHByb3ZpZGU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3ZpZGUgICA6IGZhY3RvcnlQcm92aWRlci5wcm92aWRlLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCguLi5kZXBzOiBBcnJheTx1bmtub3duPik6IG9iamVjdCA9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKChmYWN0b3J5UHJvdmlkZXIucHJvdmlkZSBhcyBDb25zdHJ1Y3RvckZ1bmN0aW9uPG9iamVjdD4pLmJpbmQobnVsbCwgLi4uZGVwcykpKCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGRlcHMgICAgICA6IGZhY3RvcnlQcm92aWRlci5kZXBzIHx8IFtdLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0YWdpbmcgY29uZmlndXJhdGlvbiBwcm92aWRlZCBieSB0aGUgdHlwZSBvbiB3aGljaCB0aGlzIGZ1bmN0aW9uIHdhcyBpbnZva2VkIG9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlQ2xhc3NQcm92aWRlcjxVIGV4dGVuZHMgU2VydmljZUJhc2U8dW5rbm93bj4+KCk6IENsYXNzUHJvdmlkZXJDb25maWc8VT5cbiAgICB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyQmFzZSAgICAgID0gbmV3ICh0aGlzIGFzIHVua25vd24gYXMgQ29uc3RydWN0b3JGdW5jdGlvbjxTZXJ2aWNlUHJvdmlkZXJCYXNlPFU+PikoKTtcbiAgICAgICAgY29uc3QgcHJvZHVjdGlvbkZhY3RvcnkgPSBwcm92aWRlckJhc2UucHJvZHVjdGlvbkZhY3Rvcnk7XG4gICAgICAgIGxldCBmYWN0b3J5UHJvdmlkZXI6IElTZXJ2aWNlUHJvdmlkZXI7XG5cbiAgICAgICAgc3dpdGNoIChFTlZJUk9OTUVOVF9UT0tFTi52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBudWxsOlxuICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgZmFjdG9yeVByb3ZpZGVyID0gcHJvdmlkZXJCYXNlLmRlc2lnbkZhY3Rvcnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGZhbHNlOlxuICAgICAgICAgICAgICAgIGZhY3RvcnlQcm92aWRlciA9IHByb3ZpZGVyQmFzZS5kZXZlbG9wbWVudEZhY3Rvcnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZhY3RvcnlQcm92aWRlciA9IHByb2R1Y3Rpb25GYWN0b3J5O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb3ZpZGUgOiBwcm9kdWN0aW9uRmFjdG9yeS5wcm92aWRlIGFzIFRva2VuPFU+LFxuICAgICAgICAgICAgdXNlQ2xhc3M6IGZhY3RvcnlQcm92aWRlci5wcm92aWRlIGFzIENvbnN0cnVjdG9yRnVuY3Rpb248VT4sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19