Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

reactive-di

Package Overview
Dependencies
Maintainers
1
Versions
134
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

reactive-di - npm Package Compare versions

Comparing version 4.0.9 to 4.0.10

src/cloneComponent.js

5

CHANGELOG.md

@@ -5,2 +5,7 @@ # Change Log

<a name="4.0.10"></a>
## [4.0.10](https://github.com/zerkalica/reactive-di/compare/v4.0.9...v4.0.10) (2017-09-06)
<a name="4.0.9"></a>

@@ -7,0 +12,0 @@ ## [4.0.9](https://github.com/zerkalica/reactive-di/compare/v4.0.8...v4.0.9) (2017-08-27)

213

dist/reactive-di.es.js

@@ -125,12 +125,13 @@ import { defaultContext, detached, memkey } from 'lom_atom';

function empty() {}
var Injector = function () {
function Injector(items, sheetProcessor, parent, displayName) {
function Injector(items, sheetProcessor, state, parent, displayName, instance) {
this._resolved = false;
this._listeners = undefined;
this._instance = instance || 0;
this._state = state || null;
this.parent = parent;
this.displayName = displayName || 'Injector';
this.displayName = displayName || '$';
this._sheetManager = sheetProcessor instanceof SheetManager ? sheetProcessor : new SheetManager(sheetProcessor, this);
var map = this._map = new WeakMap();
var map = this._cache = new Map();
var sticked = undefined;

@@ -144,3 +145,7 @@ if (items !== undefined) {

} else if (typeof item === 'function') {
map.set(item, empty);
if (sticked === undefined) {
sticked = new Set();
}
sticked.add(item);
} else {

@@ -151,22 +156,26 @@ map.set(item.constructor, item);

}
this._sticked = sticked;
}
Injector.prototype.value = function value(key) {
var value = this._map.get(key);
var value = this._cache.get(key);
if (value === undefined) {
var current = this.parent;
if (this._sticked === undefined || !this._sticked.has(key)) {
var current = this.parent;
if (current !== undefined) {
do {
value = current._map.get(key);
if (current !== undefined) {
do {
value = current._cache.get(key);
if (value !== undefined) {
this._map.set(key, value);
if (value !== undefined) {
this._cache.set(key, value);
return value;
}
return value;
}
current = current.parent;
} while (current !== undefined);
current = current.parent;
} while (current !== undefined);
}
}

@@ -176,7 +185,15 @@

this._map.set(key, value);
} else if (value === empty) {
value = this._fastNew(key);
this._cache.set(key, value);
this._map.set(key, value);
var keyName = (key.displayName || key.name) + (this._instance > 0 ? '[' + this._instance + ']' : '');
value.displayName = this.displayName + '.' + keyName;
var state = this._state;
if (state && value.__lom_state !== undefined) {
if (state[keyName] === undefined) {
state[keyName] = Object.create(value.__lom_state);
}
defaultContext.setState(value, state[keyName], true);
}
}

@@ -188,2 +205,4 @@

Injector.prototype.destroy = function destroy() {
this._state = undefined;
this._cache = undefined;
this.parent = undefined;

@@ -195,5 +214,5 @@ this._listeners = undefined;

Injector.prototype._fastNew = function _fastNew(key) {
var args = this.resolve(key.deps);
var a = this.resolve(key.deps);
switch (args.length) {
switch (a.length) {
case 0:

@@ -203,21 +222,21 @@ return new key();

case 1:
return new key(args[0]);
return new key(a[0]);
case 2:
return new key(args[0], args[1]);
return new key(a[0], a[1]);
case 3:
return new key(args[0], args[1], args[2]);
return new key(a[0], a[1], a[2]);
case 4:
return new key(args[0], args[1], args[2], args[3]);
return new key(a[0], a[1], a[2], a[3]);
case 5:
return new key(args[0], args[1], args[2], args[3], args[4]);
return new key(a[0], a[1], a[2], a[3], a[4]);
case 6:
return new key(args[0], args[1], args[2], args[3], args[4], args[5]);
return new key(a[0], a[1], a[2], a[3], a[4], a[5]);
default:
return new (Function.prototype.bind.apply(key, [null].concat(args)))();
return new (Function.prototype.bind.apply(key, [null].concat(a)))();
}

@@ -227,5 +246,5 @@ };

Injector.prototype.invoke = function invoke(key) {
var args = this.resolve(key.deps);
var a = this.resolve(key.deps);
switch (args.length) {
switch (a.length) {
case 0:

@@ -235,24 +254,28 @@ return key();

case 1:
return key(args[0]);
return key(a[0]);
case 2:
return key(args[0], args[1]);
return key(a[0], a[1]);
case 3:
return key(args[0], args[1], args[2]);
return key(a[0], a[1], a[2]);
case 4:
return key(args[0], args[1], args[2], args[3]);
return key(a[0], a[1], a[2], a[3]);
case 5:
return key(args[0], args[1], args[2], args[3], args[4]);
return key(a[0], a[1], a[2], a[3], a[4]);
case 6:
return key(args[0], args[1], args[2], args[3], args[4], args[5]);
return key(a[0], a[1], a[2], a[3], a[4], a[5]);
default:
return key.apply(undefined, args);
return key.apply(undefined, a);
}
};
Injector.prototype.alias = function alias(key) {
return this._cache.get(key) || key;
};
Injector.prototype.invokeWithProps = function invokeWithProps(key, props, propsChanged) {

@@ -263,3 +286,3 @@ if (key.deps === undefined) {

var args = this.resolve(key.deps);
var a = this.resolve(key.deps);

@@ -279,3 +302,3 @@ if (propsChanged === true) {

switch (args.length) {
switch (a.length) {
case 0:

@@ -285,29 +308,29 @@ return key(props);

case 1:
return key(props, args[0]);
return key(props, a[0]);
case 2:
return key(props, args[0], args[1]);
return key(props, a[0], a[1]);
case 3:
return key(props, args[0], args[1], args[2]);
return key(props, a[0], a[1], a[2]);
case 4:
return key(props, args[0], args[1], args[2], args[3]);
return key(props, a[0], a[1], a[2], a[3]);
case 5:
return key(props, args[0], args[1], args[2], args[3], args[4]);
return key(props, a[0], a[1], a[2], a[3], a[4]);
case 6:
return key(props, args[0], args[1], args[2], args[3], args[4], args[5]);
return key(props, a[0], a[1], a[2], a[3], a[4], a[5]);
case 7:
return key(props, args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
return key(props, a[0], a[1], a[2], a[3], a[4], a[5], a[6]);
default:
return key.apply(undefined, [props].concat(args));
return key.apply(undefined, [props].concat(a));
}
};
Injector.prototype.copy = function copy(items, displayName) {
return new Injector(items, this._sheetManager, this, this.displayName + '_' + displayName);
Injector.prototype.copy = function copy(items, displayName, instance) {
return new Injector(items, this._sheetManager, this._state, this, this.displayName + '.' + displayName, instance);
};

@@ -317,3 +340,3 @@

var result = [];
var map = this._map;
var map = this._cache;

@@ -468,3 +491,2 @@ if (argDeps !== undefined) {

var rootInjector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Injector();
var useContext = arguments[3];
var AtomizedComponent = (_class = function (_BaseComponent) {

@@ -479,6 +501,19 @@ inheritsLoose(AtomizedComponent, _BaseComponent);

_this._el = undefined;
var render = _this.constructor.render;
var injector = props.__lom_ctx || rootInjector;
_this._keys = Object.keys(props);
_this._injector = (props.__lom_ctx || rootInjector).copy(undefined, _this.constructor.displayName);
var cns = _this.constructor;
var parentInjector = props.__lom_ctx || rootInjector;
var render = parentInjector._cache.get(cns.render);
if (render === null) {
_this._el = null;
_this._keys = undefined;
_this._render = undefined;
} else {
_this._render = render === undefined ? cns.render : render;
var injectorName = cns.displayName + (cns.instance ? '[' + cns.instance + ']' : '');
_this._injector = parentInjector.copy(_this._render.provides, injectorName, cns.instance);
cns.instance++;
}
return _this;

@@ -489,2 +524,3 @@ }

var keys = this._keys;
if (this._render === undefined) return false;
var oldProps = this.props;

@@ -507,3 +543,3 @@

AtomizedComponent.prototype.componentWillUnmount = function componentWillUnmount() {
defaultContext.getAtom('r$', this).destroyed(true);
defaultContext.getAtom('r', this).destroyed(true);
};

@@ -513,4 +549,12 @@

this._el = undefined;
this._keys = undefined;
this.props = undefined;
this._injector = undefined;
if (this._render !== undefined) {
this.constructor.instance--;
this._injector.destroy();
this._injector = undefined;
}
};

@@ -520,3 +564,3 @@

var data = void 0;
var render = this.constructor.render;
var render = this._render;
var prevContext = parentContext;

@@ -560,2 +604,3 @@ parentContext = this._injector;

WrappedComponent.instance = 0;
WrappedComponent.render = render;

@@ -569,3 +614,51 @@ WrappedComponent.displayName = render.displayName || render.name;

export { createReactWrapper, createCreateElement, Injector };
function dn(fn) {
if (!fn) return 'null';
if (_typeof(fn) === 'object') {
var cons = fn.constructor;
return cons.displayName || cons.name;
}
if (typeof fn === 'function') {
return fn.displayName || fn.name;
}
return String(fn);
}
function provideMap(item) {
return item instanceof Array ? "[" + dn(item[0]) + ", " + dn(item[1]) + "]" : dn(item);
}
function cloneComponent(fn, items, name) {
var cloned = function cloned() {
switch (arguments.length) {
case 1:
return fn(arguments[0]);
case 2:
return fn(arguments[0], arguments[1]);
case 3:
return fn(arguments[0], arguments[1], arguments[2]);
case 4:
return fn(arguments[0], arguments[1], arguments[2], arguments[3]);
case 5:
return fn(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
default:
return fn.apply(null, arguments);
}
};
cloned.deps = fn.deps;
cloned.provides = items;
cloned.displayName = name || "cloneComponent(" + dn(fn) + ", [" + items.map(provideMap).join(', ') + "])";
return cloned;
}
export { createReactWrapper, createCreateElement, Injector, cloneComponent };
//# sourceMappingURL=reactive-di.es.js.map

@@ -129,12 +129,13 @@ 'use strict';

function empty() {}
var Injector = function () {
function Injector(items, sheetProcessor, parent, displayName) {
function Injector(items, sheetProcessor, state, parent, displayName, instance) {
this._resolved = false;
this._listeners = undefined;
this._instance = instance || 0;
this._state = state || null;
this.parent = parent;
this.displayName = displayName || 'Injector';
this.displayName = displayName || '$';
this._sheetManager = sheetProcessor instanceof SheetManager ? sheetProcessor : new SheetManager(sheetProcessor, this);
var map = this._map = new WeakMap();
var map = this._cache = new Map();
var sticked = undefined;

@@ -148,3 +149,7 @@ if (items !== undefined) {

} else if (typeof item === 'function') {
map.set(item, empty);
if (sticked === undefined) {
sticked = new Set();
}
sticked.add(item);
} else {

@@ -155,22 +160,26 @@ map.set(item.constructor, item);

}
this._sticked = sticked;
}
Injector.prototype.value = function value(key) {
var value = this._map.get(key);
var value = this._cache.get(key);
if (value === undefined) {
var current = this.parent;
if (this._sticked === undefined || !this._sticked.has(key)) {
var current = this.parent;
if (current !== undefined) {
do {
value = current._map.get(key);
if (current !== undefined) {
do {
value = current._cache.get(key);
if (value !== undefined) {
this._map.set(key, value);
if (value !== undefined) {
this._cache.set(key, value);
return value;
}
return value;
}
current = current.parent;
} while (current !== undefined);
current = current.parent;
} while (current !== undefined);
}
}

@@ -180,7 +189,15 @@

this._map.set(key, value);
} else if (value === empty) {
value = this._fastNew(key);
this._cache.set(key, value);
this._map.set(key, value);
var keyName = (key.displayName || key.name) + (this._instance > 0 ? '[' + this._instance + ']' : '');
value.displayName = this.displayName + '.' + keyName;
var state = this._state;
if (state && value.__lom_state !== undefined) {
if (state[keyName] === undefined) {
state[keyName] = Object.create(value.__lom_state);
}
lom_atom.defaultContext.setState(value, state[keyName], true);
}
}

@@ -192,2 +209,4 @@

Injector.prototype.destroy = function destroy() {
this._state = undefined;
this._cache = undefined;
this.parent = undefined;

@@ -199,5 +218,5 @@ this._listeners = undefined;

Injector.prototype._fastNew = function _fastNew(key) {
var args = this.resolve(key.deps);
var a = this.resolve(key.deps);
switch (args.length) {
switch (a.length) {
case 0:

@@ -207,21 +226,21 @@ return new key();

case 1:
return new key(args[0]);
return new key(a[0]);
case 2:
return new key(args[0], args[1]);
return new key(a[0], a[1]);
case 3:
return new key(args[0], args[1], args[2]);
return new key(a[0], a[1], a[2]);
case 4:
return new key(args[0], args[1], args[2], args[3]);
return new key(a[0], a[1], a[2], a[3]);
case 5:
return new key(args[0], args[1], args[2], args[3], args[4]);
return new key(a[0], a[1], a[2], a[3], a[4]);
case 6:
return new key(args[0], args[1], args[2], args[3], args[4], args[5]);
return new key(a[0], a[1], a[2], a[3], a[4], a[5]);
default:
return new (Function.prototype.bind.apply(key, [null].concat(args)))();
return new (Function.prototype.bind.apply(key, [null].concat(a)))();
}

@@ -231,5 +250,5 @@ };

Injector.prototype.invoke = function invoke(key) {
var args = this.resolve(key.deps);
var a = this.resolve(key.deps);
switch (args.length) {
switch (a.length) {
case 0:

@@ -239,24 +258,28 @@ return key();

case 1:
return key(args[0]);
return key(a[0]);
case 2:
return key(args[0], args[1]);
return key(a[0], a[1]);
case 3:
return key(args[0], args[1], args[2]);
return key(a[0], a[1], a[2]);
case 4:
return key(args[0], args[1], args[2], args[3]);
return key(a[0], a[1], a[2], a[3]);
case 5:
return key(args[0], args[1], args[2], args[3], args[4]);
return key(a[0], a[1], a[2], a[3], a[4]);
case 6:
return key(args[0], args[1], args[2], args[3], args[4], args[5]);
return key(a[0], a[1], a[2], a[3], a[4], a[5]);
default:
return key.apply(undefined, args);
return key.apply(undefined, a);
}
};
Injector.prototype.alias = function alias(key) {
return this._cache.get(key) || key;
};
Injector.prototype.invokeWithProps = function invokeWithProps(key, props, propsChanged) {

@@ -267,3 +290,3 @@ if (key.deps === undefined) {

var args = this.resolve(key.deps);
var a = this.resolve(key.deps);

@@ -283,3 +306,3 @@ if (propsChanged === true) {

switch (args.length) {
switch (a.length) {
case 0:

@@ -289,29 +312,29 @@ return key(props);

case 1:
return key(props, args[0]);
return key(props, a[0]);
case 2:
return key(props, args[0], args[1]);
return key(props, a[0], a[1]);
case 3:
return key(props, args[0], args[1], args[2]);
return key(props, a[0], a[1], a[2]);
case 4:
return key(props, args[0], args[1], args[2], args[3]);
return key(props, a[0], a[1], a[2], a[3]);
case 5:
return key(props, args[0], args[1], args[2], args[3], args[4]);
return key(props, a[0], a[1], a[2], a[3], a[4]);
case 6:
return key(props, args[0], args[1], args[2], args[3], args[4], args[5]);
return key(props, a[0], a[1], a[2], a[3], a[4], a[5]);
case 7:
return key(props, args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
return key(props, a[0], a[1], a[2], a[3], a[4], a[5], a[6]);
default:
return key.apply(undefined, [props].concat(args));
return key.apply(undefined, [props].concat(a));
}
};
Injector.prototype.copy = function copy(items, displayName) {
return new Injector(items, this._sheetManager, this, this.displayName + '_' + displayName);
Injector.prototype.copy = function copy(items, displayName, instance) {
return new Injector(items, this._sheetManager, this._state, this, this.displayName + '.' + displayName, instance);
};

@@ -321,3 +344,3 @@

var result = [];
var map = this._map;
var map = this._cache;

@@ -472,3 +495,2 @@ if (argDeps !== undefined) {

var rootInjector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Injector();
var useContext = arguments[3];
var AtomizedComponent = (_class = function (_BaseComponent) {

@@ -483,6 +505,19 @@ inheritsLoose(AtomizedComponent, _BaseComponent);

_this._el = undefined;
var render = _this.constructor.render;
var injector = props.__lom_ctx || rootInjector;
_this._keys = Object.keys(props);
_this._injector = (props.__lom_ctx || rootInjector).copy(undefined, _this.constructor.displayName);
var cns = _this.constructor;
var parentInjector = props.__lom_ctx || rootInjector;
var render = parentInjector._cache.get(cns.render);
if (render === null) {
_this._el = null;
_this._keys = undefined;
_this._render = undefined;
} else {
_this._render = render === undefined ? cns.render : render;
var injectorName = cns.displayName + (cns.instance ? '[' + cns.instance + ']' : '');
_this._injector = parentInjector.copy(_this._render.provides, injectorName, cns.instance);
cns.instance++;
}
return _this;

@@ -493,2 +528,3 @@ }

var keys = this._keys;
if (this._render === undefined) return false;
var oldProps = this.props;

@@ -511,3 +547,3 @@

AtomizedComponent.prototype.componentWillUnmount = function componentWillUnmount() {
lom_atom.defaultContext.getAtom('r$', this).destroyed(true);
lom_atom.defaultContext.getAtom('r', this).destroyed(true);
};

@@ -517,4 +553,12 @@

this._el = undefined;
this._keys = undefined;
this.props = undefined;
this._injector = undefined;
if (this._render !== undefined) {
this.constructor.instance--;
this._injector.destroy();
this._injector = undefined;
}
};

@@ -524,3 +568,3 @@

var data = void 0;
var render = this.constructor.render;
var render = this._render;
var prevContext = parentContext;

@@ -564,2 +608,3 @@ parentContext = this._injector;

WrappedComponent.instance = 0;
WrappedComponent.render = render;

@@ -573,5 +618,54 @@ WrappedComponent.displayName = render.displayName || render.name;

function dn(fn) {
if (!fn) return 'null';
if (_typeof(fn) === 'object') {
var cons = fn.constructor;
return cons.displayName || cons.name;
}
if (typeof fn === 'function') {
return fn.displayName || fn.name;
}
return String(fn);
}
function provideMap(item) {
return item instanceof Array ? "[" + dn(item[0]) + ", " + dn(item[1]) + "]" : dn(item);
}
function cloneComponent(fn, items, name) {
var cloned = function cloned() {
switch (arguments.length) {
case 1:
return fn(arguments[0]);
case 2:
return fn(arguments[0], arguments[1]);
case 3:
return fn(arguments[0], arguments[1], arguments[2]);
case 4:
return fn(arguments[0], arguments[1], arguments[2], arguments[3]);
case 5:
return fn(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
default:
return fn.apply(null, arguments);
}
};
cloned.deps = fn.deps;
cloned.provides = items;
cloned.displayName = name || "cloneComponent(" + dn(fn) + ", [" + items.map(provideMap).join(', ') + "])";
return cloned;
}
exports.createReactWrapper = createReactWrapper;
exports.createCreateElement = createCreateElement;
exports.Injector = Injector;
exports.cloneComponent = cloneComponent;
//# sourceMappingURL=reactive-di.js.map

@@ -129,12 +129,13 @@ (function (global, factory) {

function empty() {}
var Injector = function () {
function Injector(items, sheetProcessor, parent, displayName) {
function Injector(items, sheetProcessor, state, parent, displayName, instance) {
this._resolved = false;
this._listeners = undefined;
this._instance = instance || 0;
this._state = state || null;
this.parent = parent;
this.displayName = displayName || 'Injector';
this.displayName = displayName || '$';
this._sheetManager = sheetProcessor instanceof SheetManager ? sheetProcessor : new SheetManager(sheetProcessor, this);
var map = this._map = new WeakMap();
var map = this._cache = new Map();
var sticked = undefined;

@@ -148,3 +149,7 @@ if (items !== undefined) {

} else if (typeof item === 'function') {
map.set(item, empty);
if (sticked === undefined) {
sticked = new Set();
}
sticked.add(item);
} else {

@@ -155,22 +160,26 @@ map.set(item.constructor, item);

}
this._sticked = sticked;
}
Injector.prototype.value = function value(key) {
var value = this._map.get(key);
var value = this._cache.get(key);
if (value === undefined) {
var current = this.parent;
if (this._sticked === undefined || !this._sticked.has(key)) {
var current = this.parent;
if (current !== undefined) {
do {
value = current._map.get(key);
if (current !== undefined) {
do {
value = current._cache.get(key);
if (value !== undefined) {
this._map.set(key, value);
if (value !== undefined) {
this._cache.set(key, value);
return value;
}
return value;
}
current = current.parent;
} while (current !== undefined);
current = current.parent;
} while (current !== undefined);
}
}

@@ -180,7 +189,15 @@

this._map.set(key, value);
} else if (value === empty) {
value = this._fastNew(key);
this._cache.set(key, value);
this._map.set(key, value);
var keyName = (key.displayName || key.name) + (this._instance > 0 ? '[' + this._instance + ']' : '');
value.displayName = this.displayName + '.' + keyName;
var state = this._state;
if (state && value.__lom_state !== undefined) {
if (state[keyName] === undefined) {
state[keyName] = Object.create(value.__lom_state);
}
lom_atom.defaultContext.setState(value, state[keyName], true);
}
}

@@ -192,2 +209,4 @@

Injector.prototype.destroy = function destroy() {
this._state = undefined;
this._cache = undefined;
this.parent = undefined;

@@ -199,5 +218,5 @@ this._listeners = undefined;

Injector.prototype._fastNew = function _fastNew(key) {
var args = this.resolve(key.deps);
var a = this.resolve(key.deps);
switch (args.length) {
switch (a.length) {
case 0:

@@ -207,21 +226,21 @@ return new key();

case 1:
return new key(args[0]);
return new key(a[0]);
case 2:
return new key(args[0], args[1]);
return new key(a[0], a[1]);
case 3:
return new key(args[0], args[1], args[2]);
return new key(a[0], a[1], a[2]);
case 4:
return new key(args[0], args[1], args[2], args[3]);
return new key(a[0], a[1], a[2], a[3]);
case 5:
return new key(args[0], args[1], args[2], args[3], args[4]);
return new key(a[0], a[1], a[2], a[3], a[4]);
case 6:
return new key(args[0], args[1], args[2], args[3], args[4], args[5]);
return new key(a[0], a[1], a[2], a[3], a[4], a[5]);
default:
return new (Function.prototype.bind.apply(key, [null].concat(args)))();
return new (Function.prototype.bind.apply(key, [null].concat(a)))();
}

@@ -231,5 +250,5 @@ };

Injector.prototype.invoke = function invoke(key) {
var args = this.resolve(key.deps);
var a = this.resolve(key.deps);
switch (args.length) {
switch (a.length) {
case 0:

@@ -239,24 +258,28 @@ return key();

case 1:
return key(args[0]);
return key(a[0]);
case 2:
return key(args[0], args[1]);
return key(a[0], a[1]);
case 3:
return key(args[0], args[1], args[2]);
return key(a[0], a[1], a[2]);
case 4:
return key(args[0], args[1], args[2], args[3]);
return key(a[0], a[1], a[2], a[3]);
case 5:
return key(args[0], args[1], args[2], args[3], args[4]);
return key(a[0], a[1], a[2], a[3], a[4]);
case 6:
return key(args[0], args[1], args[2], args[3], args[4], args[5]);
return key(a[0], a[1], a[2], a[3], a[4], a[5]);
default:
return key.apply(undefined, args);
return key.apply(undefined, a);
}
};
Injector.prototype.alias = function alias(key) {
return this._cache.get(key) || key;
};
Injector.prototype.invokeWithProps = function invokeWithProps(key, props, propsChanged) {

@@ -267,3 +290,3 @@ if (key.deps === undefined) {

var args = this.resolve(key.deps);
var a = this.resolve(key.deps);

@@ -283,3 +306,3 @@ if (propsChanged === true) {

switch (args.length) {
switch (a.length) {
case 0:

@@ -289,29 +312,29 @@ return key(props);

case 1:
return key(props, args[0]);
return key(props, a[0]);
case 2:
return key(props, args[0], args[1]);
return key(props, a[0], a[1]);
case 3:
return key(props, args[0], args[1], args[2]);
return key(props, a[0], a[1], a[2]);
case 4:
return key(props, args[0], args[1], args[2], args[3]);
return key(props, a[0], a[1], a[2], a[3]);
case 5:
return key(props, args[0], args[1], args[2], args[3], args[4]);
return key(props, a[0], a[1], a[2], a[3], a[4]);
case 6:
return key(props, args[0], args[1], args[2], args[3], args[4], args[5]);
return key(props, a[0], a[1], a[2], a[3], a[4], a[5]);
case 7:
return key(props, args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
return key(props, a[0], a[1], a[2], a[3], a[4], a[5], a[6]);
default:
return key.apply(undefined, [props].concat(args));
return key.apply(undefined, [props].concat(a));
}
};
Injector.prototype.copy = function copy(items, displayName) {
return new Injector(items, this._sheetManager, this, this.displayName + '_' + displayName);
Injector.prototype.copy = function copy(items, displayName, instance) {
return new Injector(items, this._sheetManager, this._state, this, this.displayName + '.' + displayName, instance);
};

@@ -321,3 +344,3 @@

var result = [];
var map = this._map;
var map = this._cache;

@@ -472,3 +495,2 @@ if (argDeps !== undefined) {

var rootInjector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Injector();
var useContext = arguments[3];
var AtomizedComponent = (_class = function (_BaseComponent) {

@@ -483,6 +505,19 @@ inheritsLoose(AtomizedComponent, _BaseComponent);

_this._el = undefined;
var render = _this.constructor.render;
var injector = props.__lom_ctx || rootInjector;
_this._keys = Object.keys(props);
_this._injector = (props.__lom_ctx || rootInjector).copy(undefined, _this.constructor.displayName);
var cns = _this.constructor;
var parentInjector = props.__lom_ctx || rootInjector;
var render = parentInjector._cache.get(cns.render);
if (render === null) {
_this._el = null;
_this._keys = undefined;
_this._render = undefined;
} else {
_this._render = render === undefined ? cns.render : render;
var injectorName = cns.displayName + (cns.instance ? '[' + cns.instance + ']' : '');
_this._injector = parentInjector.copy(_this._render.provides, injectorName, cns.instance);
cns.instance++;
}
return _this;

@@ -493,2 +528,3 @@ }

var keys = this._keys;
if (this._render === undefined) return false;
var oldProps = this.props;

@@ -511,3 +547,3 @@

AtomizedComponent.prototype.componentWillUnmount = function componentWillUnmount() {
lom_atom.defaultContext.getAtom('r$', this).destroyed(true);
lom_atom.defaultContext.getAtom('r', this).destroyed(true);
};

@@ -517,4 +553,12 @@

this._el = undefined;
this._keys = undefined;
this.props = undefined;
this._injector = undefined;
if (this._render !== undefined) {
this.constructor.instance--;
this._injector.destroy();
this._injector = undefined;
}
};

@@ -524,3 +568,3 @@

var data = void 0;
var render = this.constructor.render;
var render = this._render;
var prevContext = parentContext;

@@ -564,2 +608,3 @@ parentContext = this._injector;

WrappedComponent.instance = 0;
WrappedComponent.render = render;

@@ -573,5 +618,54 @@ WrappedComponent.displayName = render.displayName || render.name;

function dn(fn) {
if (!fn) return 'null';
if (_typeof(fn) === 'object') {
var cons = fn.constructor;
return cons.displayName || cons.name;
}
if (typeof fn === 'function') {
return fn.displayName || fn.name;
}
return String(fn);
}
function provideMap(item) {
return item instanceof Array ? "[" + dn(item[0]) + ", " + dn(item[1]) + "]" : dn(item);
}
function cloneComponent(fn, items, name) {
var cloned = function cloned() {
switch (arguments.length) {
case 1:
return fn(arguments[0]);
case 2:
return fn(arguments[0], arguments[1]);
case 3:
return fn(arguments[0], arguments[1], arguments[2]);
case 4:
return fn(arguments[0], arguments[1], arguments[2], arguments[3]);
case 5:
return fn(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
default:
return fn.apply(null, arguments);
}
};
cloned.deps = fn.deps;
cloned.provides = items;
cloned.displayName = name || "cloneComponent(" + dn(fn) + ", [" + items.map(provideMap).join(', ') + "])";
return cloned;
}
exports.createReactWrapper = createReactWrapper;
exports.createCreateElement = createCreateElement;
exports.Injector = Injector;
exports.cloneComponent = cloneComponent;

@@ -578,0 +672,0 @@ Object.defineProperty(exports, '__esModule', { value: true });

{
"name": "reactive-di",
"version": "4.0.9",
"version": "4.0.10",
"description": "Reactive dependency injection",

@@ -64,3 +64,3 @@ "publishConfig": {

"chokidar-cli": "^1.2.0",
"flow-bin": "^0.53.1",
"flow-bin": "^0.54.0",
"mocha": "^3.5.0",

@@ -77,4 +77,4 @@ "rimraf": "^2.6.1",

"dependencies": {
"lom_atom": "^1.0.14"
"lom_atom": "^1.1.1"
}
}

@@ -14,3 +14,3 @@ // @flow

interface IRenderFn<IElement, State> {
export interface IRenderFn<IElement, State> {
(props: IPropsWithContext, state?: State): IElement;

@@ -20,4 +20,4 @@ __lom?: Class<IReactComponent<IElement>>;

deps?: IArg[];
props?: Function;
onError?: IFromError<IElement>;
provides?: IProvideItem[];
}

@@ -60,3 +60,3 @@

return function lomCreateElement() {
const el = arguments[0]
let el = arguments[0]
let attrs = arguments[1]

@@ -117,4 +117,3 @@

defaultFromError: IFromError<IElement>,
rootInjector?: Injector = new Injector(),
useContext?: boolean
rootInjector?: Injector = new Injector()
): IAtomize<IElement, *> {

@@ -128,4 +127,6 @@ class AtomizedComponent<State> extends BaseComponent {

static render: IRenderFn<IElement, State>
static instance: number
_keys: string[]
_render: IRenderFn<IElement, State>

@@ -137,9 +138,22 @@ constructor(

super(props, reactContext)
const render = this.constructor.render
const injector: Injector = props.__lom_ctx || rootInjector
this._keys = Object.keys(props)
this._injector = (props.__lom_ctx || rootInjector).copy(
undefined,
this.constructor.displayName
)
const cns = this.constructor
const parentInjector = props.__lom_ctx || rootInjector
const render = parentInjector._cache.get(cns.render)
if (render === null) {
this._el = null
this._keys = (undefined: any)
this._render = (undefined: any)
} else {
this._render = render === undefined ? cns.render : render
const injectorName = cns.displayName + (cns.instance ? ('[' + cns.instance + ']') : '')
this._injector = parentInjector.copy(
this._render.provides,
injectorName,
cns.instance
)
cns.instance++
}
}

@@ -149,2 +163,3 @@

const keys = this._keys
if (this._render === undefined) return false
const oldProps = this.props

@@ -165,3 +180,3 @@ for (let i = 0; i < keys.length; i++) { // eslint-disable-line

componentWillUnmount() {
defaultContext.getAtom('r$', this).destroyed(true)
defaultContext.getAtom('r', this).destroyed(true)
}

@@ -171,7 +186,12 @@

this._el = undefined
this._keys = (undefined: any)
this.props = (undefined: any)
this._injector = (undefined: any)
if (this._render !== undefined) {
this.constructor.instance--
this._injector.destroy()
this._injector = (undefined: any)
}
}
_el: IElement | void = undefined
_el: ?(IElement | void) = undefined

@@ -182,3 +202,3 @@ @detached

const render = this.constructor.render
const render = this._render

@@ -221,2 +241,3 @@ const prevContext = parentContext

}
WrappedComponent.instance = 0
WrappedComponent.render = render

@@ -223,0 +244,0 @@ WrappedComponent.displayName = render.displayName || render.name

@@ -5,2 +5,3 @@ // @flow

export {default as Injector} from './Injector'
export {default as cloneComponent} from './cloneComponent'

@@ -7,0 +8,0 @@ export type {

// @flow
import {memkey} from 'lom_atom'
import {defaultContext, memkey} from 'lom_atom'

@@ -77,4 +77,2 @@ export type IArg = Function | {+[id: string]: Function}

function empty() {}
type IListener = Object

@@ -86,11 +84,26 @@

_sheetManager: SheetManager
_map: WeakMap<Function, any>
_cache: Map<Function, any>
_instance: number
constructor(items?: IProvideItem[], sheetProcessor?: IProcessor | SheetManager, parent?: Injector, displayName?: string) {
_state: ?Object
_sticked: Set<Function> | void
constructor(
items?: IProvideItem[],
sheetProcessor?: IProcessor | SheetManager,
state?: ?Object,
parent?: Injector,
displayName?: string,
instance?: number
) {
this._instance = instance || 0
this._state = state || null
this.parent = parent
this.displayName = displayName || 'Injector'
this.displayName = displayName || '$'
this._sheetManager = sheetProcessor instanceof SheetManager
? sheetProcessor
: new SheetManager(sheetProcessor, this)
const map = this._map = new WeakMap()
const map = this._cache = new Map()
let sticked: Set<Function> | void = undefined
if (items !== undefined) {

@@ -102,3 +115,6 @@ for (let i = 0; i < items.length; i++) {

} else if (typeof item === 'function') {
map.set(item, empty)
if (sticked === undefined) {
sticked = new Set()
}
sticked.add(item)
} else {

@@ -109,24 +125,33 @@ map.set(item.constructor, item)

}
this._sticked = sticked
}
value<V>(key: Function): V {
let value = this._map.get(key)
let value = this._cache.get(key)
if (value === undefined) {
let current = this.parent
if (current !== undefined) {
do {
value = current._map.get(key)
if (value !== undefined) {
this._map.set(key, value)
return value
}
current = current.parent
} while (current !== undefined)
if (this._sticked === undefined || !this._sticked.has(key)) {
let current = this.parent
if (current !== undefined) {
do {
value = current._cache.get(key)
if (value !== undefined) {
this._cache.set(key, value)
return value
}
current = current.parent
} while (current !== undefined)
}
}
value = this._fastNew(key)
this._map.set(key, value)
} else if (value === empty) {
value = this._fastNew(key)
this._map.set(key, value)
this._cache.set(key, value)
const keyName = (key.displayName || key.name) + (this._instance > 0 ? ('[' + this._instance + ']') : '')
value.displayName = this.displayName + '.' + keyName
const state = this._state
if (state && value.__lom_state !== undefined) {
if (state[keyName] === undefined) {
state[keyName] = Object.create(value.__lom_state)
}
defaultContext.setState(value, state[keyName], true)
}
}

@@ -138,2 +163,4 @@

destroy() {
this._state = undefined
this._cache = (undefined: any)
this.parent = undefined

@@ -145,12 +172,12 @@ this._listeners = undefined

_fastNew<V>(key: any): V {
const args = this.resolve(key.deps)
switch (args.length) {
const a = this.resolve(key.deps)
switch (a.length) {
case 0: return new key()
case 1: return new key(args[0])
case 2: return new key(args[0], args[1])
case 3: return new key(args[0], args[1], args[2])
case 4: return new key(args[0], args[1], args[2], args[3])
case 5: return new key(args[0], args[1], args[2], args[3], args[4])
case 6: return new key(args[0], args[1], args[2], args[3], args[4], args[5])
default: return new key(...args)
case 1: return new key(a[0])
case 2: return new key(a[0], a[1])
case 3: return new key(a[0], a[1], a[2])
case 4: return new key(a[0], a[1], a[2], a[3])
case 5: return new key(a[0], a[1], a[2], a[3], a[4])
case 6: return new key(a[0], a[1], a[2], a[3], a[4], a[5])
default: return new key(...a)
}

@@ -160,12 +187,12 @@ }

invoke<V>(key: Function): V {
const args = this.resolve(key.deps)
switch (args.length) {
const a = this.resolve(key.deps)
switch (a.length) {
case 0: return key()
case 1: return key(args[0])
case 2: return key(args[0], args[1])
case 3: return key(args[0], args[1], args[2])
case 4: return key(args[0], args[1], args[2], args[3])
case 5: return key(args[0], args[1], args[2], args[3], args[4])
case 6: return key(args[0], args[1], args[2], args[3], args[4], args[5])
default: return key(...args)
case 1: return key(a[0])
case 2: return key(a[0], a[1])
case 3: return key(a[0], a[1], a[2])
case 4: return key(a[0], a[1], a[2], a[3])
case 5: return key(a[0], a[1], a[2], a[3], a[4])
case 6: return key(a[0], a[1], a[2], a[3], a[4], a[5])
default: return key(...a)
}

@@ -177,2 +204,6 @@ }

alias(key: Function) {
return this._cache.get(key) || key
}
invokeWithProps<V>(key: Function, props?: Object, propsChanged?: boolean): V {

@@ -182,3 +213,3 @@ if (key.deps === undefined) {

}
const args = this.resolve(key.deps)
const a = this.resolve(key.deps)
if (propsChanged === true) {

@@ -194,23 +225,29 @@ const listeners = this._listeners

this._resolved = true
switch (args.length) {
switch (a.length) {
case 0: return key(props)
case 1: return key(props, args[0])
case 2: return key(props, args[0], args[1])
case 3: return key(props, args[0], args[1], args[2])
case 4: return key(props, args[0], args[1], args[2], args[3])
case 5: return key(props, args[0], args[1], args[2], args[3], args[4])
case 6: return key(props, args[0], args[1], args[2], args[3], args[4], args[5])
case 7: return key(props, args[0], args[1], args[2], args[3], args[4], args[5], args[6])
default: return key(props, ...args)
case 1: return key(props, a[0])
case 2: return key(props, a[0], a[1])
case 3: return key(props, a[0], a[1], a[2])
case 4: return key(props, a[0], a[1], a[2], a[3])
case 5: return key(props, a[0], a[1], a[2], a[3], a[4])
case 6: return key(props, a[0], a[1], a[2], a[3], a[4], a[5])
case 7: return key(props, a[0], a[1], a[2], a[3], a[4], a[5], a[6])
default: return key(props, ...a)
}
}
copy(items?: IProvideItem[], displayName: string): Injector {
return new Injector(items, this._sheetManager, this, this.displayName + '_' + displayName)
copy(items?: IProvideItem[], displayName: string, instance?: number): Injector {
return new Injector(
items,
this._sheetManager,
this._state,
this,
this.displayName + '.' + displayName,
instance
)
}
resolve(argDeps?: IArg[]): any[] {
const result = []
const map = this._map
const map = this._cache
if (argDeps !== undefined) {

@@ -217,0 +254,0 @@ const resolved = this._resolved

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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