Socket
Socket
Sign inDemoInstall

rsdi

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rsdi - npm Package Compare versions

Comparing version 0.0.8 to 0.0.9

7

definitions/FactoryDefinition.d.ts

@@ -6,4 +6,11 @@ import BaseDefinition from "../definitions/BaseDefinition";

private readonly factory;
private isSingleton;
private value;
constructor(factory: Factory);
/**
* Makes factory to resolve dependency only once,
* then resolved value will be returned
*/
singleton(): this;
resolve: <T>(container: IDIContainer) => T;
}

18

definitions/FactoryDefinition.js

@@ -24,4 +24,12 @@ "use strict";

var _this = _super.call(this) || this;
_this.isSingleton = false;
_this.resolve = function (container) {
return _this.factory(container);
if (!_this.isSingleton) {
return _this.factory(container);
}
if (_this.value !== undefined) {
return _this.value;
}
_this.value = _this.factory(container);
return _this.value;
};

@@ -31,2 +39,10 @@ _this.factory = factory;

}
/**
* Makes factory to resolve dependency only once,
* then resolved value will be returned
*/
FactoryDefinition.prototype.singleton = function () {
this.isSingleton = true;
return this;
};
return FactoryDefinition;

@@ -33,0 +49,0 @@ }(BaseDefinition_1.default));

2

package.json
{
"name": "rsdi",
"version": "0.0.8",
"version": "0.0.9",
"description": "dependency injection container",

@@ -5,0 +5,0 @@ "scripts": {

@@ -10,8 +10,9 @@ # RSDI - Dependency Injection Container

const config = {
"ENV": value("PRODUCTION"), // define raw value
"Storage": object(CookieStorage), // constructor without arguments
"ENV": value("PRODUCTION"), // define raw value
"AuthStorage": object(AuthStorage).construct(
get("Storage") // refer to dependency described above
get("Storage") // refer to another dependency
),
"BrowserHistory": factory(configureHistory),
"Storage": object(CookieStorage), // constructor without arguments
"dateFormatter": factory(dateFormatter), // factory
"BrowserHistory": factory(configureHistory).singleton(), // factory singleton
};

@@ -21,8 +22,7 @@ const container = new DIContainer();

const env = container.get<string>("ENV"); // PRODUCTION
const authStorage = container.get<AuthStorage>("AuthStorage"); // object of AuthStorage
const history = container.get<History>("BrowserHistory"); // object of History
function configureHistory(container: IDIContainer): History {
function dateFormatter(date: Date) {
return moment(date).format("ddd, DD MMM YYYY");
}
function configureHistory(container: IDIContainer): History {
// this factory will be called only once
const history = createBrowserHistory();

@@ -36,2 +36,10 @@ const env = container.get("ENV");

// in your code
const env = container.get<string>("ENV"); // PRODUCTION
const authStorage = container.get<AuthStorage>("AuthStorage"); // object of AuthStorage
const history = container.get<History>("BrowserHistory"); // History singleton will be returned
```

@@ -53,2 +61,4 @@

```
Why component Foo should know that it's injectable?
Why component Foo should know that it's injectable?
More details thoughts in my [blog article](https://medium.com/@radzserg/https-medium-com-radzserg-dependency-injection-in-react-part-1-c1decd9c2e7a)

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc