@effection/subscription
Advanced tools
Comparing version 0.6.3-6e7f062 to 0.6.3-783b818
import { Operation } from 'effection'; | ||
import { Subscription, Subscriber } from './subscription'; | ||
import { DeepPartial } from './match'; | ||
export declare const SymbolSubscribable: unique symbol; | ||
@@ -18,2 +19,3 @@ export interface Subscribable<T, TReturn> { | ||
filter(predicate: (value: T) => boolean): Chain<T, TReturn>; | ||
match(reference: DeepPartial<T>): Chain<T, TReturn>; | ||
chain<X = T, XReturn = TReturn>(next: (source: SubscriptionSource<T, TReturn>) => Subscriber<X, XReturn>): Chain<X, XReturn>; | ||
@@ -20,0 +22,0 @@ forEach(visit: (value: T) => Operation<void>): Operation<TReturn>; |
@@ -80,2 +80,18 @@ 'use strict'; | ||
function matcher(reference) { | ||
return function (value) { | ||
if (typeof value === 'object' && typeof reference === 'object') { | ||
var castedValue = value; | ||
var castedReference = reference; | ||
return Object.entries(castedReference).every(function (_ref) { | ||
var key = _ref[0], | ||
ref = _ref[1]; | ||
return matcher(ref)(castedValue[key]); | ||
}); | ||
} else { | ||
return value === reference; | ||
} | ||
}; | ||
} | ||
var SymbolSubscribable = /*#__PURE__*/Symbol["for"]('Symbol.subscription'); | ||
@@ -134,2 +150,6 @@ | ||
_proto.match = function match(reference) { | ||
return this.filter(matcher(reference)); | ||
}; | ||
_proto.chain = function chain(next) { | ||
@@ -136,0 +156,0 @@ return new Chain(createSubscription(next(this.source))); |
@@ -1,2 +0,2 @@ | ||
"use strict";var n=require("effection"),r=function(){var n=this;this.waiters=[],this.signal=function(r){var t=n.waiters.pop();t&&t(r)},this.wait=function(){return new Promise((function(r){return n.waiters.push(r)}))}};function*t(t){var e=[],i=new r,u=function(n){e.push({done:!1,value:n}),i.signal()};return yield n.resource({next:function(){try{var n=i.wait();return e.length>0&&i.signal(),Promise.resolve(n.then((function(){return e.shift()})))}catch(n){return Promise.reject(n)}}},(function*(){try{var n=yield t((function(n){return u(n)}));e.push({done:!0,value:n}),i.signal()}finally{u=function(n){throw function(n){var r=new Error("tried to publish a value: "+n+" on an already finished subscription");return r.name="TypeError",r}(n)}}}))}var e=Symbol.for("Symbol.subscription");function*i(n,r){for(var t=yield c(n);;){var e=yield t.next();if(e.done)return e.value;yield r(e.value)}}var u={from:function(n){return new o(n)}},o=function(){function n(n){this.source=n}var r=n.prototype;return r[e]=function(){return c(this.source)},r.map=function(n){return this.chain((function(r){return function(t){return i(r,(function*(r){t(n(r))}))}}))},r.filter=function(n){return this.chain((function(r){return function(t){return i(r,(function*(r){n(r)&&t(r)}))}}))},r.chain=function(r){return new n(t(r(this.source)))},r.forEach=function(n){return i(this.source,n)},r.first=function*(){var n=yield c(this.source),r=yield n.next();return r.done?void 0:r.value},n}();function c(n){if(s(n)){var r=s(n);if(r)return r.call(n);var t=new Error("cannot subscribe to "+n+" because it does not contain Symbol.subscription");throw t.name="TypeError",t}return n}function s(n){return n[e]}exports.Subscribable=u,exports.SymbolSubscribable=e,exports.createSubscription=t,exports.forEach=i; | ||
"use strict";var n=require("effection"),r=function(){var n=this;this.waiters=[],this.signal=function(r){var t=n.waiters.pop();t&&t(r)},this.wait=function(){return new Promise((function(r){return n.waiters.push(r)}))}};function*t(t){var e=[],i=new r,u=function(n){e.push({done:!1,value:n}),i.signal()};return yield n.resource({next:function(){try{var n=i.wait();return e.length>0&&i.signal(),Promise.resolve(n.then((function(){return e.shift()})))}catch(n){return Promise.reject(n)}}},(function*(){try{var n=yield t((function(n){return u(n)}));e.push({done:!0,value:n}),i.signal()}finally{u=function(n){throw function(n){var r=new Error("tried to publish a value: "+n+" on an already finished subscription");return r.name="TypeError",r}(n)}}}))}var e=Symbol.for("Symbol.subscription");function*i(n,r){for(var t=yield c(n);;){var e=yield t.next();if(e.done)return e.value;yield r(e.value)}}var u={from:function(n){return new o(n)}},o=function(){function n(n){this.source=n}var r=n.prototype;return r[e]=function(){return c(this.source)},r.map=function(n){return this.chain((function(r){return function(t){return i(r,(function*(r){t(n(r))}))}}))},r.filter=function(n){return this.chain((function(r){return function(t){return i(r,(function*(r){n(r)&&t(r)}))}}))},r.match=function(n){return this.filter(function n(r){return function(t){if("object"==typeof t&&"object"==typeof r){var e=t;return Object.entries(r).every((function(r){var t=r[0];return n(r[1])(e[t])}))}return t===r}}(n))},r.chain=function(r){return new n(t(r(this.source)))},r.forEach=function(n){return i(this.source,n)},r.first=function*(){var n=yield c(this.source),r=yield n.next();return r.done?void 0:r.value},n}();function c(n){if(s(n)){var r=s(n);if(r)return r.call(n);var t=new Error("cannot subscribe to "+n+" because it does not contain Symbol.subscription");throw t.name="TypeError",t}return n}function s(n){return n[e]}exports.Subscribable=u,exports.SymbolSubscribable=e,exports.createSubscription=t,exports.forEach=i; | ||
//# sourceMappingURL=subscription.cjs.production.min.js.map |
@@ -78,2 +78,18 @@ import { resource } from 'effection'; | ||
function matcher(reference) { | ||
return function (value) { | ||
if (typeof value === 'object' && typeof reference === 'object') { | ||
var castedValue = value; | ||
var castedReference = reference; | ||
return Object.entries(castedReference).every(function (_ref) { | ||
var key = _ref[0], | ||
ref = _ref[1]; | ||
return matcher(ref)(castedValue[key]); | ||
}); | ||
} else { | ||
return value === reference; | ||
} | ||
}; | ||
} | ||
var SymbolSubscribable = /*#__PURE__*/Symbol["for"]('Symbol.subscription'); | ||
@@ -132,2 +148,6 @@ | ||
_proto.match = function match(reference) { | ||
return this.filter(matcher(reference)); | ||
}; | ||
_proto.chain = function chain(next) { | ||
@@ -134,0 +154,0 @@ return new Chain(createSubscription(next(this.source))); |
{ | ||
"name": "@effection/subscription", | ||
"version": "0.6.3-6e7f062", | ||
"version": "0.6.3-783b818", | ||
"description": "Effection Subscriptions", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -90,1 +90,20 @@ # @effection/subscription | ||
``` | ||
### Subscribable#match(reference) | ||
Return a new `Subscribable` that only produces items from its source that match | ||
`reference` in the sense that the produced items have the same properties and | ||
values as `reference`. | ||
``` javascript | ||
Subscribable.from(websocket).match({ type: 'command' }); | ||
``` | ||
### Subscribable#first() | ||
An operation that produces the first item in a subscription or | ||
undefined if the subscription has no items. | ||
``` javascript | ||
let message = yield Subscribable.from(websocket).first(); | ||
``` |
import { Operation } from 'effection'; | ||
import { Subscription, createSubscription, Subscriber } from './subscription'; | ||
import { DeepPartial, matcher } from './match'; | ||
@@ -49,2 +50,6 @@ export const SymbolSubscribable: unique symbol = Symbol.for('Symbol.subscription'); | ||
match(reference: DeepPartial<T>): Chain<T,TReturn> { | ||
return this.filter(matcher(reference)); | ||
} | ||
chain<X = T,XReturn = TReturn>(next: (source: SubscriptionSource<T,TReturn>) => Subscriber<X,XReturn>): Chain<X,XReturn> { | ||
@@ -51,0 +56,0 @@ return new Chain(createSubscription(next(this.source))); |
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
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
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
51310
20
535
109
0