@nx-js/observer-util
Advanced tools
Comparing version 4.2.0 to 4.2.1
@@ -186,2 +186,31 @@ 'use strict'; | ||
function findObservable(obj) { | ||
var observableObj = rawToProxy.get(obj); | ||
if (hasRunningReaction() && typeof obj === 'object' && obj !== null) { | ||
if (observableObj) { | ||
return observableObj; | ||
} | ||
return observable(obj); | ||
} | ||
return observableObj || obj; | ||
} | ||
function patchIterator(iterator, isEntries) { | ||
var originalNext = iterator.next; | ||
iterator.next = function () { | ||
var ref = originalNext.call(iterator); | ||
var done = ref.done; | ||
var value = ref.value; | ||
if (!done) { | ||
if (isEntries) { | ||
value[1] = findObservable(value[1]); | ||
} else { | ||
value = findObservable(value); | ||
} | ||
} | ||
return { done: done, value: value }; | ||
}; | ||
return iterator; | ||
} | ||
var instrumentations = { | ||
@@ -198,3 +227,3 @@ has: function has(key) { | ||
registerRunningReactionForOperation({ target: target, key: key, type: 'get' }); | ||
return proto.get.apply(target, arguments); | ||
return findObservable(proto.get.apply(target, arguments)); | ||
}, | ||
@@ -250,7 +279,19 @@ add: function add(key) { | ||
}, | ||
forEach: function forEach() { | ||
forEach: function forEach(cb) { | ||
var args = [], len = arguments.length - 1; | ||
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ]; | ||
var target = proxyToRaw.get(this); | ||
var proto = Reflect.getPrototypeOf(this); | ||
registerRunningReactionForOperation({ target: target, type: 'iterate' }); | ||
return proto.forEach.apply(target, arguments); | ||
// swap out the raw values with their observable pairs | ||
// before passing them to the callback | ||
var wrappedCb = function (value) { | ||
var rest = [], len = arguments.length - 1; | ||
while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; | ||
return cb.apply(void 0, [ findObservable(value) ].concat( rest )); | ||
}; | ||
return (ref = proto.forEach).call.apply(ref, [ target, wrappedCb ].concat( args )); | ||
var ref; | ||
}, | ||
@@ -267,3 +308,4 @@ keys: function keys() { | ||
registerRunningReactionForOperation({ target: target, type: 'iterate' }); | ||
return proto.values.apply(target, arguments); | ||
var iterator = proto.values.apply(target, arguments); | ||
return patchIterator(iterator, false); | ||
}, | ||
@@ -274,3 +316,4 @@ entries: function entries() { | ||
registerRunningReactionForOperation({ target: target, type: 'iterate' }); | ||
return proto.entries.apply(target, arguments); | ||
var iterator = proto.entries.apply(target, arguments); | ||
return patchIterator(iterator, true); | ||
}, | ||
@@ -288,3 +331,4 @@ get size() { | ||
registerRunningReactionForOperation({ target: target, type: 'iterate' }); | ||
return proto[Symbol.iterator].apply(target, arguments); | ||
var iterator = proto[Symbol.iterator].apply(target, arguments); | ||
return patchIterator(iterator, target instanceof Map); | ||
}; | ||
@@ -291,0 +335,0 @@ |
@@ -176,2 +176,29 @@ 'use strict'; | ||
function findObservable(obj) { | ||
const observableObj = rawToProxy.get(obj); | ||
if (hasRunningReaction() && typeof obj === 'object' && obj !== null) { | ||
if (observableObj) { | ||
return observableObj; | ||
} | ||
return observable(obj); | ||
} | ||
return observableObj || obj; | ||
} | ||
function patchIterator(iterator, isEntries) { | ||
const originalNext = iterator.next; | ||
iterator.next = () => { | ||
let { done, value } = originalNext.call(iterator); | ||
if (!done) { | ||
if (isEntries) { | ||
value[1] = findObservable(value[1]); | ||
} else { | ||
value = findObservable(value); | ||
} | ||
} | ||
return { done, value }; | ||
}; | ||
return iterator; | ||
} | ||
const instrumentations = { | ||
@@ -188,3 +215,3 @@ has(key) { | ||
registerRunningReactionForOperation({ target, key, type: 'get' }); | ||
return proto.get.apply(target, arguments); | ||
return findObservable(proto.get.apply(target, arguments)); | ||
}, | ||
@@ -240,7 +267,10 @@ add(key) { | ||
}, | ||
forEach() { | ||
forEach(cb, ...args) { | ||
const target = proxyToRaw.get(this); | ||
const proto = Reflect.getPrototypeOf(this); | ||
registerRunningReactionForOperation({ target, type: 'iterate' }); | ||
return proto.forEach.apply(target, arguments); | ||
// swap out the raw values with their observable pairs | ||
// before passing them to the callback | ||
const wrappedCb = (value, ...rest) => cb(findObservable(value), ...rest); | ||
return proto.forEach.call(target, wrappedCb, ...args); | ||
}, | ||
@@ -257,3 +287,4 @@ keys() { | ||
registerRunningReactionForOperation({ target, type: 'iterate' }); | ||
return proto.values.apply(target, arguments); | ||
const iterator = proto.values.apply(target, arguments); | ||
return patchIterator(iterator, false); | ||
}, | ||
@@ -264,3 +295,4 @@ entries() { | ||
registerRunningReactionForOperation({ target, type: 'iterate' }); | ||
return proto.entries.apply(target, arguments); | ||
const iterator = proto.entries.apply(target, arguments); | ||
return patchIterator(iterator, true); | ||
}, | ||
@@ -271,3 +303,4 @@ [Symbol.iterator]() { | ||
registerRunningReactionForOperation({ target, type: 'iterate' }); | ||
return proto[Symbol.iterator].apply(target, arguments); | ||
const iterator = proto[Symbol.iterator].apply(target, arguments); | ||
return patchIterator(iterator, target instanceof Map); | ||
}, | ||
@@ -274,0 +307,0 @@ get size() { |
@@ -182,2 +182,31 @@ var connectionStore = new WeakMap(); | ||
function findObservable(obj) { | ||
var observableObj = rawToProxy.get(obj); | ||
if (hasRunningReaction() && typeof obj === 'object' && obj !== null) { | ||
if (observableObj) { | ||
return observableObj; | ||
} | ||
return observable(obj); | ||
} | ||
return observableObj || obj; | ||
} | ||
function patchIterator(iterator, isEntries) { | ||
var originalNext = iterator.next; | ||
iterator.next = function () { | ||
var ref = originalNext.call(iterator); | ||
var done = ref.done; | ||
var value = ref.value; | ||
if (!done) { | ||
if (isEntries) { | ||
value[1] = findObservable(value[1]); | ||
} else { | ||
value = findObservable(value); | ||
} | ||
} | ||
return { done: done, value: value }; | ||
}; | ||
return iterator; | ||
} | ||
var instrumentations = { | ||
@@ -194,3 +223,3 @@ has: function has(key) { | ||
registerRunningReactionForOperation({ target: target, key: key, type: 'get' }); | ||
return proto.get.apply(target, arguments); | ||
return findObservable(proto.get.apply(target, arguments)); | ||
}, | ||
@@ -246,7 +275,19 @@ add: function add(key) { | ||
}, | ||
forEach: function forEach() { | ||
forEach: function forEach(cb) { | ||
var args = [], len = arguments.length - 1; | ||
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ]; | ||
var target = proxyToRaw.get(this); | ||
var proto = Reflect.getPrototypeOf(this); | ||
registerRunningReactionForOperation({ target: target, type: 'iterate' }); | ||
return proto.forEach.apply(target, arguments); | ||
// swap out the raw values with their observable pairs | ||
// before passing them to the callback | ||
var wrappedCb = function (value) { | ||
var rest = [], len = arguments.length - 1; | ||
while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; | ||
return cb.apply(void 0, [ findObservable(value) ].concat( rest )); | ||
}; | ||
return (ref = proto.forEach).call.apply(ref, [ target, wrappedCb ].concat( args )); | ||
var ref; | ||
}, | ||
@@ -263,3 +304,4 @@ keys: function keys() { | ||
registerRunningReactionForOperation({ target: target, type: 'iterate' }); | ||
return proto.values.apply(target, arguments); | ||
var iterator = proto.values.apply(target, arguments); | ||
return patchIterator(iterator, false); | ||
}, | ||
@@ -270,3 +312,4 @@ entries: function entries() { | ||
registerRunningReactionForOperation({ target: target, type: 'iterate' }); | ||
return proto.entries.apply(target, arguments); | ||
var iterator = proto.entries.apply(target, arguments); | ||
return patchIterator(iterator, true); | ||
}, | ||
@@ -284,3 +327,4 @@ get size() { | ||
registerRunningReactionForOperation({ target: target, type: 'iterate' }); | ||
return proto[Symbol.iterator].apply(target, arguments); | ||
var iterator = proto[Symbol.iterator].apply(target, arguments); | ||
return patchIterator(iterator, target instanceof Map); | ||
}; | ||
@@ -287,0 +331,0 @@ |
@@ -172,2 +172,29 @@ const connectionStore = new WeakMap(); | ||
function findObservable(obj) { | ||
const observableObj = rawToProxy.get(obj); | ||
if (hasRunningReaction() && typeof obj === 'object' && obj !== null) { | ||
if (observableObj) { | ||
return observableObj; | ||
} | ||
return observable(obj); | ||
} | ||
return observableObj || obj; | ||
} | ||
function patchIterator(iterator, isEntries) { | ||
const originalNext = iterator.next; | ||
iterator.next = () => { | ||
let { done, value } = originalNext.call(iterator); | ||
if (!done) { | ||
if (isEntries) { | ||
value[1] = findObservable(value[1]); | ||
} else { | ||
value = findObservable(value); | ||
} | ||
} | ||
return { done, value }; | ||
}; | ||
return iterator; | ||
} | ||
const instrumentations = { | ||
@@ -184,3 +211,3 @@ has(key) { | ||
registerRunningReactionForOperation({ target, key, type: 'get' }); | ||
return proto.get.apply(target, arguments); | ||
return findObservable(proto.get.apply(target, arguments)); | ||
}, | ||
@@ -236,7 +263,10 @@ add(key) { | ||
}, | ||
forEach() { | ||
forEach(cb, ...args) { | ||
const target = proxyToRaw.get(this); | ||
const proto = Reflect.getPrototypeOf(this); | ||
registerRunningReactionForOperation({ target, type: 'iterate' }); | ||
return proto.forEach.apply(target, arguments); | ||
// swap out the raw values with their observable pairs | ||
// before passing them to the callback | ||
const wrappedCb = (value, ...rest) => cb(findObservable(value), ...rest); | ||
return proto.forEach.call(target, wrappedCb, ...args); | ||
}, | ||
@@ -253,3 +283,4 @@ keys() { | ||
registerRunningReactionForOperation({ target, type: 'iterate' }); | ||
return proto.values.apply(target, arguments); | ||
const iterator = proto.values.apply(target, arguments); | ||
return patchIterator(iterator, false); | ||
}, | ||
@@ -260,3 +291,4 @@ entries() { | ||
registerRunningReactionForOperation({ target, type: 'iterate' }); | ||
return proto.entries.apply(target, arguments); | ||
const iterator = proto.entries.apply(target, arguments); | ||
return patchIterator(iterator, true); | ||
}, | ||
@@ -267,3 +299,4 @@ [Symbol.iterator]() { | ||
registerRunningReactionForOperation({ target, type: 'iterate' }); | ||
return proto[Symbol.iterator].apply(target, arguments); | ||
const iterator = proto[Symbol.iterator].apply(target, arguments); | ||
return patchIterator(iterator, target instanceof Map); | ||
}, | ||
@@ -270,0 +303,0 @@ get size() { |
{ | ||
"name": "@nx-js/observer-util", | ||
"version": "4.2.0", | ||
"version": "4.2.1", | ||
"description": "Simple transparent reactivity with 100% language coverage. Made with ES6 Proxies.", | ||
@@ -5,0 +5,0 @@ "main": "dist/cjs.es5.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
85339
1700