Socket
Socket
Sign inDemoInstall

micro-observables

Package Overview
Dependencies
Maintainers
2
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

micro-observables - npm Package Compare versions

Comparing version 1.7.1 to 1.7.2

4

dist/baseObservable.d.ts

@@ -9,2 +9,3 @@ import { Plugin } from "./plugin";

private _val;
private _prevVal;
private _options;

@@ -15,3 +16,2 @@ private _inputs;

private _attachedToInputs;
private _dirty;
constructor(val: T, options?: Options);

@@ -40,5 +40,5 @@ get(): T;

private _detachFromInput;
private _addOutputsToBatch;
private _addToBatchRecursively;
protected static _batch(block: () => void): void;
protected static _use(plugin: Plugin): void;
}

@@ -131,2 +131,3 @@ 'use strict';

var UNSET = /*#__PURE__*/Symbol();
var plugins = /*#__PURE__*/new PluginManager();

@@ -143,2 +144,3 @@ var capturedInputFrames = [];

this._prevVal = UNSET;
this._inputs = [];

@@ -148,3 +150,2 @@ this._outputs = [];

this._attachedToInputs = false;
this._dirty = false;
/**

@@ -179,3 +180,3 @@ * @deprecated Use observable.subscribe() instead

_proto._get = function _get() {
var shouldEvaluate = !this._attachedToInputs || this._dirty;
var shouldEvaluate = !this._attachedToInputs || this._prevVal !== UNSET;
return shouldEvaluate ? this._evaluate() : this._val;

@@ -190,15 +191,5 @@ };

if (this._val !== val) {
var prevVal = this._val;
this._addToBatchRecursively();
this._val = val;
if (batchDepth > 0) {
this._addOutputsToBatch();
}
for (var _iterator = _createForOfIteratorHelperLoose(this._listeners.slice()), _step; !(_step = _iterator()).done;) {
var listener = _step.value;
listener(val, prevVal);
}
plugins.onChange(this, val, prevVal);
}

@@ -289,4 +280,4 @@ };

for (var _iterator2 = _createForOfIteratorHelperLoose(this._inputs), _step2; !(_step2 = _iterator2()).done;) {
var input = _step2.value;
for (var _iterator = _createForOfIteratorHelperLoose(this._inputs), _step; !(_step = _iterator()).done;) {
var input = _step.value;

@@ -304,4 +295,4 @@ this._attachToInput(input);

for (var _iterator3 = _createForOfIteratorHelperLoose(this._inputs), _step3; !(_step3 = _iterator3()).done;) {
var input = _step3.value;
for (var _iterator2 = _createForOfIteratorHelperLoose(this._inputs), _step2; !(_step2 = _iterator2()).done;) {
var input = _step2.value;

@@ -330,15 +321,13 @@ this._detachFromInput(input);

_proto._addOutputsToBatch = function _addOutputsToBatch() {
// Add outputs in reverse topological order (reverse for performance reasons as push() is faster than unshift()).
// Ensure that each observable is added only once using the dirty flag
for (var _iterator4 = _createForOfIteratorHelperLoose(this._outputs), _step4; !(_step4 = _iterator4()).done;) {
var output = _step4.value;
_proto._addToBatchRecursively = function _addToBatchRecursively() {
if (this._prevVal === UNSET) {
this._prevVal = this._val; // Add the observable and its outputs in reverse topological order
if (!output._dirty) {
output._dirty = true;
for (var _iterator3 = _createForOfIteratorHelperLoose(this._outputs), _step3; !(_step3 = _iterator3()).done;) {
var output = _step3.value;
output._addOutputsToBatch();
output._addToBatchRecursively();
}
batchedObservables.push(output);
}
batchedObservables.push(this);
}

@@ -361,9 +350,19 @@ };

var observablesToUpdate = batchedObservables;
batchedObservables = []; // Iterate in reverse order as _addOutputsToBatch add them in reverse topological order
batchedObservables = []; // Iterate in reverse order as _addToBatchRecursively() adds them in reverse topological order
for (var i = observablesToUpdate.length - 1; i >= 0; i--) {
var observable = observablesToUpdate[i];
observable._dirty = false;
var prevVal = observable._prevVal;
observable._prevVal = UNSET;
observable._val = observable._evaluate();
var val = observable._val;
observable._set(observable._evaluate());
if (val !== prevVal) {
for (var _iterator4 = _createForOfIteratorHelperLoose(observable._listeners.slice()), _step4; !(_step4 = _iterator4()).done;) {
var listener = _step4.value;
listener(val, prevVal);
}
plugins.onChange(observable, val, prevVal);
}
}

@@ -370,0 +369,0 @@ }

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

"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var n=require("react"),e=t(n),r=t(require("hoist-non-react-statics"));function u(){return(u=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t}).apply(this,arguments)}function o(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function i(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}function s(t,n){var e;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(e=function(t,n){if(t){if("string"==typeof t)return i(t,void 0);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?i(t,void 0):void 0}}(t))||n&&t&&"number"==typeof t.length){e&&(t=e);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(e=t[Symbol.iterator]()).next.bind(e)}var a=new(function(){function t(){this._plugins=[]}var n=t.prototype;return n.use=function(t){this._plugins.push(t)},n.onCreate=function(t,n){this._plugins.forEach((function(e){return null==e.onCreate?void 0:e.onCreate(t,n)}))},n.onChange=function(t,n,e){this._plugins.forEach((function(r){return null==r.onChange?void 0:r.onChange(t,n,e)}))},n.onBecomeObserved=function(t){this._plugins.forEach((function(n){return null==n.onBecomeObserved?void 0:n.onBecomeObserved(t)}))},n.onBecomeUnobserved=function(t){this._plugins.forEach((function(n){return null==n.onBecomeUnobserved?void 0:n.onBecomeUnobserved(t)}))},n.onAttach=function(t,n){this._plugins.forEach((function(e){return null==e.onAttach?void 0:e.onAttach(t,n)}))},n.onDetach=function(t,n){this._plugins.forEach((function(e){return null==e.onDetach?void 0:e.onDetach(t,n)}))},t}()),c=[],h=!1,p=[],f=0,l=function(){function t(t,n){void 0===n&&(n={}),this._inputs=[],this._outputs=[],this._listeners=[],this._attachedToInputs=!1,this._dirty=!1,this.onChange=this.subscribe,this._val=t,this._options=n,a.onCreate(this,t)}var n=t.prototype;return n.get=function(){var t=c[c.length-1];if(!t||!h)return this._get();try{return h=!1,t.push(this),this._get()}finally{h=!0}},n._get=function(){return!this._attachedToInputs||this._dirty?this._evaluate():this._val},n._evaluate=function(){return this._val},n._set=function(t){if(this._val!==t){var n=this._val;this._val=t,f>0&&this._addOutputsToBatch();for(var e,r=s(this._listeners.slice());!(e=r()).done;)(0,e.value)(t,n);a.onChange(this,t,n)}},n.subscribe=function(t){var n=this;this._listeners.push(t),this._attachToInputs();var e=!1;return function(){e||(e=!0,n._listeners.splice(n._listeners.indexOf(t),1),n._detachFromInputs())}},n.onBecomeObserved=function(){},n.onBecomeUnobserved=function(){},n.getInputs=function(){return this._inputs},n.getOptions=function(){return this._options},n.withOptions=function(t){return this._options=u({},this._options,t),this},t._captureInputs=function(t){try{var n=[];return c.push(n),h=!0,t(),n}finally{c.pop(),h=!1}},n._addInput=function(t){this._inputs.push(t),this._attachedToInputs&&this._attachToInput(t)},n._removeInput=function(t){this._inputs.splice(this._inputs.indexOf(t),1),this._attachedToInputs&&this._detachFromInput(t)},n._shouldAttachToInputs=function(){return this._listeners.length>0||this._outputs.length>0},n._attachToInputs=function(){if(!this._attachedToInputs&&this._shouldAttachToInputs()){this._attachedToInputs=!0,this._val=this._evaluate(),this.onBecomeObserved(),a.onBecomeObserved(this);for(var t,n=s(this._inputs);!(t=n()).done;){var e=t.value;this._attachToInput(e),e._attachToInputs()}}},n._detachFromInputs=function(){if(this._attachedToInputs&&!this._shouldAttachToInputs()){this._attachedToInputs=!1;for(var t,n=s(this._inputs);!(t=n()).done;){var e=t.value;this._detachFromInput(e),e._detachFromInputs()}this.onBecomeUnobserved(),a.onBecomeUnobserved(this)}},n._attachToInput=function(t){t._outputs.push(this),a.onAttach(this,t)},n._detachFromInput=function(t){t._outputs.splice(t._outputs.indexOf(this),1),a.onDetach(this,t)},n._addOutputsToBatch=function(){for(var t,n=s(this._outputs);!(t=n()).done;){var e=t.value;e._dirty||(e._dirty=!0,e._addOutputsToBatch(),p.push(e))}},t._batch=function(t){try{1==++f&&exports.batchedUpdater?exports.batchedUpdater(t):t()}finally{if(0==--f){var n=p;p=[];for(var e=n.length-1;e>=0;e--){var r=n[e];r._dirty=!1,r._set(r._evaluate())}}}},t._use=function(t){a.use(t)},t}();function _(t,n){return new d(t,n)}var v=function(t){function n(e,r){var u;return(u=t.call(this,e instanceof n?e.get():e,r)||this).transform=u.select,u._updateValInput(e),u}o(n,t);var e=n.prototype;return e._evaluate=function(){return this._valInput?this._valInput.get():t.prototype._evaluate.call(this)},e.select=function(t){return new b([this],(function(n){return t(n[0])}))},e.onlyIf=function(t){var n=void 0;return this.select((function(e){return t(e)&&(n=e),n}))},e.default=function(t){return this.select((function(n){return null!=n?n:t}))},e.as=function(){return this},n.select=function(t,n){return new b(t,(function(t){return n.apply(void 0,t)}))},n.from=function(){for(var t=arguments.length,n=new Array(t),e=0;e<t;e++)n[e]=arguments[e];return new b(n,(function(t){return t}))},n.merge=function(t){return new b(t,(function(t){return t}))},n.latest=function(){for(var t,n=arguments.length,e=new Array(n),r=0;r<n;r++)e[r]=arguments[r];return new b(e,(function(n){var e=t?n.find((function(n,e){return n!==t[e]})):n[0];return t=n,e}))},n.compute=function(t){return new m(t)},n.fromPromise=function(t,n){var e=_(void 0);return t.then((function(t){return e.set(t)}),(function(t){return n&&e.set(n(t))})),e},e.toPromise=function(){var t=this;return new Promise((function(n){var e=t.subscribe((function(t){n(t),e()}))}))},n.batch=function(t){l._batch(t)},n.use=function(t){l._use(t)},e._updateValInput=function(t){this._valInput!==t&&(this._valInput&&(this._removeInput(this._valInput),this._valInput=void 0),t instanceof n&&(this._addInput(t),this._valInput=t))},n}(l),d=function(t){function n(){return t.apply(this,arguments)||this}o(n,t);var e=n.prototype;return e.set=function(t){var n=this;this._updateValInput(t),v.batch((function(){return n._set(t instanceof v?t.get():t)}))},e.update=function(t){this.set(t(this.get()))},e.readOnly=function(){return this},n}(v),b=function(t){function n(n,e){var r,u,o,i;(r=t.call(this,void 0)||this)._compute=(u=e,function(t){var n=!1;if(o&&t.length===o.length){for(var e=0;e<t.length;e++)if(t[e]!==o[e]){n=!0;break}}else n=!0;return n&&(o=t,i=u(t)),i}),r._computeInputs=n;for(var a,c=s(n);!(a=c()).done;)r._addInput(a.value);return r}return o(n,t),n.prototype._evaluate=function(){var t=this._compute(this._computeInputs.map((function(t){return t.get()})));return this._updateValInput(t),t instanceof v?t.get():t},n}(v),m=function(t){function n(n){var e;return(e=t.call(this,void 0)||this)._currentInputs=new Set,e._compute=n,e}return o(n,t),n.prototype._evaluate=function(){var t,n=this,e=new Set(l._captureInputs((function(){return t=n._compute()})));return e.forEach((function(t){n._currentInputs.has(t)?n._currentInputs.delete(t):n._addInput(t)})),this._currentInputs.forEach((function(t){return n._removeInput(t)})),this._currentInputs=e,t},n}(v);function y(t){var e=n.useState({})[1],r=t.get();return n.useLayoutEffect((function(){return t.subscribe((function(){return e({})}))}),[t]),r}function g(t,e){return void 0===e&&(e=[]),y(n.useMemo(t,e))}function I(t,n){return t===n&&(0!==t||1/t==1/n)||t!=t&&n!=n}exports.BaseObservable=l,exports.Observable=v,exports.WritableObservable=d,exports.derived=function(t){return v.compute(t)},exports.observable=_,exports.setBatchedUpdater=function(t){exports.batchedUpdater=t},exports.useComputedObservable=function(t,n){return void 0===n&&(n=[]),g((function(){return v.compute(t)}),n)},exports.useMemoizedObservable=g,exports.useObservable=y,exports.withObservables=function(t,n){return r(function(r){function i(){var t;return(t=r.apply(this,arguments)||this)._unsubscribers=[],t}o(i,r);var s=i.prototype;return s.componentWillUnmount=function(){this._unsubscribers.forEach((function(t){return t()})),this._unsubscribers=[]},s.render=function(){this.updateMapping();for(var n={},r=0,o=Object.keys(this._mapping);r<o.length;r++){var i=o[r];n[i]=this._mapping[i].get()}return e.createElement(t,u({},this.props,n))},s.updateMapping=function(){var t=this;if(!this._ownProps||!function(t,n){if(I(t,n))return!0;if("object"!=typeof t||null===t||"object"!=typeof n||null===n)return!1;var e=Object.keys(t),r=Object.keys(n);if(e.length!==r.length)return!1;for(var u=0;u<e.length;u++)if(!n.hasOwnProperty(e[u])||!I(t[e[u]],n[e[u]]))return!1;return!0}(this._ownProps,this.props)){this._ownProps=this.props,this._mapping="function"==typeof n?n(this.props):n;var e=Object.values(this._mapping).map((function(n){return n.subscribe((function(){return t.forceUpdate()}))}));this._unsubscribers.forEach((function(t){return t()})),this._unsubscribers=e}},i}(e.PureComponent),t)};
"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var n=require("react"),e=t(n),r=t(require("hoist-non-react-statics"));function u(){return(u=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t}).apply(this,arguments)}function o(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function i(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,r=new Array(n);e<n;e++)r[e]=t[e];return r}function s(t,n){var e;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(e=function(t,n){if(t){if("string"==typeof t)return i(t,void 0);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?i(t,void 0):void 0}}(t))||n&&t&&"number"==typeof t.length){e&&(t=e);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(e=t[Symbol.iterator]()).next.bind(e)}var a=function(){function t(){this._plugins=[]}var n=t.prototype;return n.use=function(t){this._plugins.push(t)},n.onCreate=function(t,n){this._plugins.forEach((function(e){return null==e.onCreate?void 0:e.onCreate(t,n)}))},n.onChange=function(t,n,e){this._plugins.forEach((function(r){return null==r.onChange?void 0:r.onChange(t,n,e)}))},n.onBecomeObserved=function(t){this._plugins.forEach((function(n){return null==n.onBecomeObserved?void 0:n.onBecomeObserved(t)}))},n.onBecomeUnobserved=function(t){this._plugins.forEach((function(n){return null==n.onBecomeUnobserved?void 0:n.onBecomeUnobserved(t)}))},n.onAttach=function(t,n){this._plugins.forEach((function(e){return null==e.onAttach?void 0:e.onAttach(t,n)}))},n.onDetach=function(t,n){this._plugins.forEach((function(e){return null==e.onDetach?void 0:e.onDetach(t,n)}))},t}(),c=Symbol(),h=new a,p=[],f=!1,l=[],v=0,_=function(){function t(t,n){void 0===n&&(n={}),this._prevVal=c,this._inputs=[],this._outputs=[],this._listeners=[],this._attachedToInputs=!1,this.onChange=this.subscribe,this._val=t,this._options=n,h.onCreate(this,t)}var n=t.prototype;return n.get=function(){var t=p[p.length-1];if(!t||!f)return this._get();try{return f=!1,t.push(this),this._get()}finally{f=!0}},n._get=function(){return this._attachedToInputs&&this._prevVal===c?this._val:this._evaluate()},n._evaluate=function(){return this._val},n._set=function(t){this._val!==t&&(this._addToBatchRecursively(),this._val=t)},n.subscribe=function(t){var n=this;this._listeners.push(t),this._attachToInputs();var e=!1;return function(){e||(e=!0,n._listeners.splice(n._listeners.indexOf(t),1),n._detachFromInputs())}},n.onBecomeObserved=function(){},n.onBecomeUnobserved=function(){},n.getInputs=function(){return this._inputs},n.getOptions=function(){return this._options},n.withOptions=function(t){return this._options=u({},this._options,t),this},t._captureInputs=function(t){try{var n=[];return p.push(n),f=!0,t(),n}finally{p.pop(),f=!1}},n._addInput=function(t){this._inputs.push(t),this._attachedToInputs&&this._attachToInput(t)},n._removeInput=function(t){this._inputs.splice(this._inputs.indexOf(t),1),this._attachedToInputs&&this._detachFromInput(t)},n._shouldAttachToInputs=function(){return this._listeners.length>0||this._outputs.length>0},n._attachToInputs=function(){if(!this._attachedToInputs&&this._shouldAttachToInputs()){this._attachedToInputs=!0,this._val=this._evaluate(),this.onBecomeObserved(),h.onBecomeObserved(this);for(var t,n=s(this._inputs);!(t=n()).done;){var e=t.value;this._attachToInput(e),e._attachToInputs()}}},n._detachFromInputs=function(){if(this._attachedToInputs&&!this._shouldAttachToInputs()){this._attachedToInputs=!1;for(var t,n=s(this._inputs);!(t=n()).done;){var e=t.value;this._detachFromInput(e),e._detachFromInputs()}this.onBecomeUnobserved(),h.onBecomeUnobserved(this)}},n._attachToInput=function(t){t._outputs.push(this),h.onAttach(this,t)},n._detachFromInput=function(t){t._outputs.splice(t._outputs.indexOf(this),1),h.onDetach(this,t)},n._addToBatchRecursively=function(){if(this._prevVal===c){this._prevVal=this._val;for(var t,n=s(this._outputs);!(t=n()).done;)t.value._addToBatchRecursively();l.push(this)}},t._batch=function(t){try{1==++v&&exports.batchedUpdater?exports.batchedUpdater(t):t()}finally{if(0==--v){var n=l;l=[];for(var e=n.length-1;e>=0;e--){var r=n[e],u=r._prevVal;r._prevVal=c,r._val=r._evaluate();var o=r._val;if(o!==u){for(var i,a=s(r._listeners.slice());!(i=a()).done;)(0,i.value)(o,u);h.onChange(r,o,u)}}}}},t._use=function(t){h.use(t)},t}();function d(t,n){return new m(t,n)}var b=function(t){function n(e,r){var u;return(u=t.call(this,e instanceof n?e.get():e,r)||this).transform=u.select,u._updateValInput(e),u}o(n,t);var e=n.prototype;return e._evaluate=function(){return this._valInput?this._valInput.get():t.prototype._evaluate.call(this)},e.select=function(t){return new g([this],(function(n){return t(n[0])}))},e.onlyIf=function(t){var n=void 0;return this.select((function(e){return t(e)&&(n=e),n}))},e.default=function(t){return this.select((function(n){return null!=n?n:t}))},e.as=function(){return this},n.select=function(t,n){return new g(t,(function(t){return n.apply(void 0,t)}))},n.from=function(){for(var t=arguments.length,n=new Array(t),e=0;e<t;e++)n[e]=arguments[e];return new g(n,(function(t){return t}))},n.merge=function(t){return new g(t,(function(t){return t}))},n.latest=function(){for(var t,n=arguments.length,e=new Array(n),r=0;r<n;r++)e[r]=arguments[r];return new g(e,(function(n){var e=t?n.find((function(n,e){return n!==t[e]})):n[0];return t=n,e}))},n.compute=function(t){return new y(t)},n.fromPromise=function(t,n){var e=d(void 0);return t.then((function(t){return e.set(t)}),(function(t){return n&&e.set(n(t))})),e},e.toPromise=function(){var t=this;return new Promise((function(n){var e=t.subscribe((function(t){n(t),e()}))}))},n.batch=function(t){_._batch(t)},n.use=function(t){_._use(t)},e._updateValInput=function(t){this._valInput!==t&&(this._valInput&&(this._removeInput(this._valInput),this._valInput=void 0),t instanceof n&&(this._addInput(t),this._valInput=t))},n}(_),m=function(t){function n(){return t.apply(this,arguments)||this}o(n,t);var e=n.prototype;return e.set=function(t){var n=this;this._updateValInput(t),b.batch((function(){return n._set(t instanceof b?t.get():t)}))},e.update=function(t){this.set(t(this.get()))},e.readOnly=function(){return this},n}(b),g=function(t){function n(n,e){var r,u,o,i;(r=t.call(this,void 0)||this)._compute=(u=e,function(t){var n=!1;if(o&&t.length===o.length){for(var e=0;e<t.length;e++)if(t[e]!==o[e]){n=!0;break}}else n=!0;return n&&(o=t,i=u(t)),i}),r._computeInputs=n;for(var a,c=s(n);!(a=c()).done;)r._addInput(a.value);return r}return o(n,t),n.prototype._evaluate=function(){var t=this._compute(this._computeInputs.map((function(t){return t.get()})));return this._updateValInput(t),t instanceof b?t.get():t},n}(b),y=function(t){function n(n){var e;return(e=t.call(this,void 0)||this)._currentInputs=new Set,e._compute=n,e}return o(n,t),n.prototype._evaluate=function(){var t,n=this,e=new Set(_._captureInputs((function(){return t=n._compute()})));return e.forEach((function(t){n._currentInputs.has(t)?n._currentInputs.delete(t):n._addInput(t)})),this._currentInputs.forEach((function(t){return n._removeInput(t)})),this._currentInputs=e,t},n}(b);function I(t){var e=n.useState({})[1],r=t.get();return n.useLayoutEffect((function(){return t.subscribe((function(){return e({})}))}),[t]),r}function O(t,e){return void 0===e&&(e=[]),I(n.useMemo(t,e))}function w(t,n){return t===n&&(0!==t||1/t==1/n)||t!=t&&n!=n}exports.BaseObservable=_,exports.Observable=b,exports.WritableObservable=m,exports.derived=function(t){return b.compute(t)},exports.observable=d,exports.setBatchedUpdater=function(t){exports.batchedUpdater=t},exports.useComputedObservable=function(t,n){return void 0===n&&(n=[]),O((function(){return b.compute(t)}),n)},exports.useMemoizedObservable=O,exports.useObservable=I,exports.withObservables=function(t,n){return r(function(r){function i(){var t;return(t=r.apply(this,arguments)||this)._unsubscribers=[],t}o(i,r);var s=i.prototype;return s.componentWillUnmount=function(){this._unsubscribers.forEach((function(t){return t()})),this._unsubscribers=[]},s.render=function(){this.updateMapping();for(var n={},r=0,o=Object.keys(this._mapping);r<o.length;r++){var i=o[r];n[i]=this._mapping[i].get()}return e.createElement(t,u({},this.props,n))},s.updateMapping=function(){var t=this;if(!this._ownProps||!function(t,n){if(w(t,n))return!0;if("object"!=typeof t||null===t||"object"!=typeof n||null===n)return!1;var e=Object.keys(t),r=Object.keys(n);if(e.length!==r.length)return!1;for(var u=0;u<e.length;u++)if(!n.hasOwnProperty(e[u])||!w(t[e[u]],n[e[u]]))return!1;return!0}(this._ownProps,this.props)){this._ownProps=this.props,this._mapping="function"==typeof n?n(this.props):n;var e=Object.values(this._mapping).map((function(n){return n.subscribe((function(){return t.forceUpdate()}))}));this._unsubscribers.forEach((function(t){return t()})),this._unsubscribers=e}},i}(e.PureComponent),t)};
//# sourceMappingURL=micro-observables.cjs.production.min.js.map

@@ -125,2 +125,3 @@ import React, { useState, useLayoutEffect, useMemo } from 'react';

var UNSET = /*#__PURE__*/Symbol();
var plugins = /*#__PURE__*/new PluginManager();

@@ -137,2 +138,3 @@ var capturedInputFrames = [];

this._prevVal = UNSET;
this._inputs = [];

@@ -142,3 +144,2 @@ this._outputs = [];

this._attachedToInputs = false;
this._dirty = false;
/**

@@ -173,3 +174,3 @@ * @deprecated Use observable.subscribe() instead

_proto._get = function _get() {
var shouldEvaluate = !this._attachedToInputs || this._dirty;
var shouldEvaluate = !this._attachedToInputs || this._prevVal !== UNSET;
return shouldEvaluate ? this._evaluate() : this._val;

@@ -184,15 +185,5 @@ };

if (this._val !== val) {
var prevVal = this._val;
this._addToBatchRecursively();
this._val = val;
if (batchDepth > 0) {
this._addOutputsToBatch();
}
for (var _iterator = _createForOfIteratorHelperLoose(this._listeners.slice()), _step; !(_step = _iterator()).done;) {
var listener = _step.value;
listener(val, prevVal);
}
plugins.onChange(this, val, prevVal);
}

@@ -283,4 +274,4 @@ };

for (var _iterator2 = _createForOfIteratorHelperLoose(this._inputs), _step2; !(_step2 = _iterator2()).done;) {
var input = _step2.value;
for (var _iterator = _createForOfIteratorHelperLoose(this._inputs), _step; !(_step = _iterator()).done;) {
var input = _step.value;

@@ -298,4 +289,4 @@ this._attachToInput(input);

for (var _iterator3 = _createForOfIteratorHelperLoose(this._inputs), _step3; !(_step3 = _iterator3()).done;) {
var input = _step3.value;
for (var _iterator2 = _createForOfIteratorHelperLoose(this._inputs), _step2; !(_step2 = _iterator2()).done;) {
var input = _step2.value;

@@ -324,15 +315,13 @@ this._detachFromInput(input);

_proto._addOutputsToBatch = function _addOutputsToBatch() {
// Add outputs in reverse topological order (reverse for performance reasons as push() is faster than unshift()).
// Ensure that each observable is added only once using the dirty flag
for (var _iterator4 = _createForOfIteratorHelperLoose(this._outputs), _step4; !(_step4 = _iterator4()).done;) {
var output = _step4.value;
_proto._addToBatchRecursively = function _addToBatchRecursively() {
if (this._prevVal === UNSET) {
this._prevVal = this._val; // Add the observable and its outputs in reverse topological order
if (!output._dirty) {
output._dirty = true;
for (var _iterator3 = _createForOfIteratorHelperLoose(this._outputs), _step3; !(_step3 = _iterator3()).done;) {
var output = _step3.value;
output._addOutputsToBatch();
output._addToBatchRecursively();
}
batchedObservables.push(output);
}
batchedObservables.push(this);
}

@@ -355,9 +344,19 @@ };

var observablesToUpdate = batchedObservables;
batchedObservables = []; // Iterate in reverse order as _addOutputsToBatch add them in reverse topological order
batchedObservables = []; // Iterate in reverse order as _addToBatchRecursively() adds them in reverse topological order
for (var i = observablesToUpdate.length - 1; i >= 0; i--) {
var observable = observablesToUpdate[i];
observable._dirty = false;
var prevVal = observable._prevVal;
observable._prevVal = UNSET;
observable._val = observable._evaluate();
var val = observable._val;
observable._set(observable._evaluate());
if (val !== prevVal) {
for (var _iterator4 = _createForOfIteratorHelperLoose(observable._listeners.slice()), _step4; !(_step4 = _iterator4()).done;) {
var listener = _step4.value;
listener(val, prevVal);
}
plugins.onChange(observable, val, prevVal);
}
}

@@ -364,0 +363,0 @@ }

{
"name": "micro-observables",
"version": "1.7.1",
"version": "1.7.2",
"description": "A simple Observable library that can be used for easy state management in React applications.",

@@ -5,0 +5,0 @@ "author": "BeTomorrow",

@@ -5,2 +5,4 @@ import { batchedUpdater } from "./batchedUpdater";

const UNSET = Symbol();
const plugins = new PluginManager();

@@ -20,2 +22,3 @@

private _val: T;
private _prevVal: T | typeof UNSET = UNSET;
private _options: Options;

@@ -26,3 +29,2 @@ private _inputs: BaseObservable<any>[] = [];

private _attachedToInputs = false;
private _dirty = false;

@@ -51,3 +53,3 @@ constructor(val: T, options: Options = {}) {

protected _get(): T {
const shouldEvaluate = !this._attachedToInputs || this._dirty;
const shouldEvaluate = !this._attachedToInputs || this._prevVal !== UNSET;
return shouldEvaluate ? this._evaluate() : this._val;

@@ -62,14 +64,4 @@ }

if (this._val !== val) {
const prevVal = this._val;
this._addToBatchRecursively();
this._val = val;
if (batchDepth > 0) {
this._addOutputsToBatch();
}
for (const listener of this._listeners.slice()) {
listener(val, prevVal);
}
plugins.onChange(this, val, prevVal);
}

@@ -192,11 +184,11 @@ }

private _addOutputsToBatch() {
// Add outputs in reverse topological order (reverse for performance reasons as push() is faster than unshift()).
// Ensure that each observable is added only once using the dirty flag
for (const output of this._outputs) {
if (!output._dirty) {
output._dirty = true;
output._addOutputsToBatch();
batchedObservables.push(output);
private _addToBatchRecursively() {
if (this._prevVal === UNSET) {
this._prevVal = this._val;
// Add the observable and its outputs in reverse topological order
for (const output of this._outputs) {
output._addToBatchRecursively();
}
batchedObservables.push(this);
}

@@ -219,7 +211,16 @@ }

// Iterate in reverse order as _addOutputsToBatch add them in reverse topological order
// Iterate in reverse order as _addToBatchRecursively() adds them in reverse topological order
for (let i = observablesToUpdate.length - 1; i >= 0; i--) {
const observable = observablesToUpdate[i];
observable._dirty = false;
observable._set(observable._evaluate());
const prevVal = observable._prevVal;
observable._prevVal = UNSET;
observable._val = observable._evaluate();
const val = observable._val;
if (val !== prevVal) {
for (const listener of observable._listeners.slice()) {
listener(val, prevVal);
}
plugins.onChange(observable, val, prevVal);
}
}

@@ -226,0 +227,0 @@ }

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