@effection/channel
Advanced tools
Comparing version 2.0.0-preview.1-e00037d to 2.0.0-preview.2-0835ec2
# Changelog | ||
## 2.0.0-preview.2 | ||
### Patch Changes | ||
- 93ec0d6: Include CHANGELOGS and src with all packages | ||
- Updated dependencies [93ec0d6] | ||
- @effection/core@2.0.0-preview.2 | ||
- @effection/events@2.0.0-preview.2 | ||
- @effection/subscription@2.0.0-preview.2 | ||
## 2.0.0-preview.1 | ||
@@ -4,0 +14,0 @@ |
@@ -7,55 +7,47 @@ 'use strict'; | ||
var Channel = /*#__PURE__*/function () { | ||
function Channel() { | ||
this.bus = new events$1.EventEmitter(); | ||
function createChannel(options) { | ||
if (options === void 0) { | ||
options = {}; | ||
} | ||
var _proto = Channel.prototype; | ||
var bus = new events$1.EventEmitter(); | ||
_proto[subscription.SymbolOperationIterable] = function (task) { | ||
return this.subscribe(task); | ||
}; | ||
if (options.maxSubscribers) { | ||
bus.setMaxListeners(options.maxSubscribers); | ||
} | ||
_proto.setMaxListeners = function setMaxListeners(value) { | ||
this.bus.setMaxListeners(value); | ||
}; | ||
var subscribable = subscription.createSubscribable(function (publish) { | ||
return function* (task) { | ||
var subscription = events.on(bus, 'event').subscribe(task); | ||
_proto.send = function send(message) { | ||
this.bus.emit('event', { | ||
done: false, | ||
value: message | ||
}); | ||
}; | ||
while (true) { | ||
var _yield$subscription$n = yield subscription.next(), | ||
_yield$subscription$n2 = _yield$subscription$n.value, | ||
next = _yield$subscription$n2[0]; | ||
_proto.subscribe = function subscribe(task) { | ||
var bus = this.bus; | ||
return subscription.Subscription.create(task, function (publish) { | ||
return function* () { | ||
var subscription = events.on(task, bus, 'event'); | ||
while (true) { | ||
var _yield$subscription$e = yield subscription.expect(), | ||
event = _yield$subscription$e[0]; | ||
if (event.done) { | ||
return event.value; | ||
} else { | ||
publish(event.value); | ||
} | ||
if (next.done) { | ||
return next.value; | ||
} else { | ||
publish(next.value); | ||
} | ||
}; | ||
}); | ||
}; | ||
} | ||
}; | ||
}); | ||
return Object.assign(subscribable, { | ||
send: function send(message) { | ||
bus.emit('event', { | ||
done: false, | ||
value: message | ||
}); | ||
}, | ||
close: function close() { | ||
bus.emit('event', { | ||
done: true, | ||
value: arguments.length <= 0 ? undefined : arguments[0] | ||
}); | ||
} | ||
}); | ||
} | ||
_proto.close = function close() { | ||
this.bus.emit('event', { | ||
done: true, | ||
value: arguments.length <= 0 ? undefined : arguments[0] | ||
}); | ||
}; | ||
return Channel; | ||
}(); | ||
exports.Channel = Channel; | ||
exports.createChannel = createChannel; | ||
//# sourceMappingURL=channel.cjs.development.js.map |
@@ -1,2 +0,2 @@ | ||
"use strict";var e=require("@effection/subscription"),t=require("@effection/events"),n=require("events");exports.Channel=function(){function i(){this.bus=new n.EventEmitter}var r=i.prototype;return r[e.SymbolOperationIterable]=function(e){return this.subscribe(e)},r.setMaxListeners=function(e){this.bus.setMaxListeners(e)},r.send=function(e){this.bus.emit("event",{done:!1,value:e})},r.subscribe=function(n){var i=this.bus;return e.Subscription.create(n,(function(e){return function*(){for(var r=t.on(n,i,"event");;){var s=(yield r.expect())[0];if(s.done)return s.value;e(s.value)}}}))},r.close=function(){this.bus.emit("event",{done:!0,value:arguments.length<=0?void 0:arguments[0]})},i}(); | ||
"use strict";var e=require("@effection/subscription"),n=require("@effection/events"),r=require("events");exports.createChannel=function(t){void 0===t&&(t={});var i=new r.EventEmitter;t.maxSubscribers&&i.setMaxListeners(t.maxSubscribers);var u=e.createSubscribable((function(e){return function*(r){for(var t=n.on(i,"event").subscribe(r);;){var u=(yield t.next()).value[0];if(u.done)return u.value;e(u.value)}}}));return Object.assign(u,{send:function(e){i.emit("event",{done:!1,value:e})},close:function(){i.emit("event",{done:!0,value:arguments.length<=0?void 0:arguments[0]})}})}; | ||
//# sourceMappingURL=channel.cjs.production.min.js.map |
@@ -1,10 +0,9 @@ | ||
import { Task } from '@effection/core'; | ||
import { Subscription, SymbolOperationIterable, OperationIterator, OperationIterable } from '@effection/subscription'; | ||
export declare class Channel<T, TClose = undefined> implements OperationIterable<T, TClose> { | ||
private bus; | ||
[SymbolOperationIterable](task: Task): OperationIterator<T, TClose>; | ||
setMaxListeners(value: number): void; | ||
import { Subscribable } from '@effection/subscription'; | ||
export declare type ChannelOptions = { | ||
maxSubscribers?: number; | ||
}; | ||
export interface Channel<T, TClose = undefined> extends Subscribable<T, TClose> { | ||
send(message: T): void; | ||
subscribe(task: Task): Subscription<T, TClose>; | ||
close(...args: TClose extends undefined ? [] : [TClose]): void; | ||
} | ||
export declare function createChannel<T, TClose = undefined>(options?: ChannelOptions): Channel<T, TClose>; |
@@ -1,58 +0,50 @@ | ||
import { SymbolOperationIterable, Subscription } from '@effection/subscription'; | ||
import { createSubscribable } from '@effection/subscription'; | ||
import { on } from '@effection/events'; | ||
import { EventEmitter } from 'events'; | ||
var Channel = /*#__PURE__*/function () { | ||
function Channel() { | ||
this.bus = new EventEmitter(); | ||
function createChannel(options) { | ||
if (options === void 0) { | ||
options = {}; | ||
} | ||
var _proto = Channel.prototype; | ||
var bus = new EventEmitter(); | ||
_proto[SymbolOperationIterable] = function (task) { | ||
return this.subscribe(task); | ||
}; | ||
if (options.maxSubscribers) { | ||
bus.setMaxListeners(options.maxSubscribers); | ||
} | ||
_proto.setMaxListeners = function setMaxListeners(value) { | ||
this.bus.setMaxListeners(value); | ||
}; | ||
var subscribable = createSubscribable(function (publish) { | ||
return function* (task) { | ||
var subscription = on(bus, 'event').subscribe(task); | ||
_proto.send = function send(message) { | ||
this.bus.emit('event', { | ||
done: false, | ||
value: message | ||
}); | ||
}; | ||
while (true) { | ||
var _yield$subscription$n = yield subscription.next(), | ||
_yield$subscription$n2 = _yield$subscription$n.value, | ||
next = _yield$subscription$n2[0]; | ||
_proto.subscribe = function subscribe(task) { | ||
var bus = this.bus; | ||
return Subscription.create(task, function (publish) { | ||
return function* () { | ||
var subscription = on(task, bus, 'event'); | ||
while (true) { | ||
var _yield$subscription$e = yield subscription.expect(), | ||
event = _yield$subscription$e[0]; | ||
if (event.done) { | ||
return event.value; | ||
} else { | ||
publish(event.value); | ||
} | ||
if (next.done) { | ||
return next.value; | ||
} else { | ||
publish(next.value); | ||
} | ||
}; | ||
}); | ||
}; | ||
} | ||
}; | ||
}); | ||
return Object.assign(subscribable, { | ||
send: function send(message) { | ||
bus.emit('event', { | ||
done: false, | ||
value: message | ||
}); | ||
}, | ||
close: function close() { | ||
bus.emit('event', { | ||
done: true, | ||
value: arguments.length <= 0 ? undefined : arguments[0] | ||
}); | ||
} | ||
}); | ||
} | ||
_proto.close = function close() { | ||
this.bus.emit('event', { | ||
done: true, | ||
value: arguments.length <= 0 ? undefined : arguments[0] | ||
}); | ||
}; | ||
return Channel; | ||
}(); | ||
export { Channel }; | ||
export { createChannel }; | ||
//# sourceMappingURL=channel.esm.js.map |
@@ -1,1 +0,1 @@ | ||
export { Channel } from './channel'; | ||
export * from './channel'; |
{ | ||
"name": "@effection/channel", | ||
"version": "2.0.0-preview.1-e00037d", | ||
"version": "2.0.0-preview.2-0835ec2", | ||
"description": "MPMC Channel implementation for effection", | ||
@@ -36,6 +36,6 @@ "main": "dist/index.js", | ||
"dependencies": { | ||
"@effection/core": "^2.0.0-preview.1", | ||
"@effection/events": "^2.0.0-preview.1", | ||
"@effection/subscription": "^2.0.0-preview.1" | ||
"@effection/core": "^2.0.0-preview.2", | ||
"@effection/events": "^2.0.0-preview.2", | ||
"@effection/subscription": "^2.0.0-preview.2" | ||
} | ||
} |
@@ -1,39 +0,42 @@ | ||
import { Operation, Task } from '@effection/core'; | ||
import { Subscription, SymbolOperationIterable, OperationIterator, OperationIterable } from '@effection/subscription'; | ||
import { createSubscribable, Subscribable } from '@effection/subscription'; | ||
import { on } from '@effection/events'; | ||
import { EventEmitter } from 'events'; | ||
export class Channel<T, TClose = undefined> implements OperationIterable<T, TClose> { | ||
private bus = new EventEmitter(); | ||
export type ChannelOptions = { | ||
maxSubscribers?: number; | ||
} | ||
[SymbolOperationIterable](task: Task): OperationIterator<T, TClose> { | ||
return this.subscribe(task); | ||
} | ||
export interface Channel<T, TClose = undefined> extends Subscribable<T, TClose> { | ||
send(message: T): void; | ||
close(...args: TClose extends undefined ? [] : [TClose]): void; | ||
} | ||
setMaxListeners(value: number) { | ||
this.bus.setMaxListeners(value); | ||
} | ||
export function createChannel<T, TClose = undefined>(options: ChannelOptions = {}): Channel<T, TClose> { | ||
let bus = new EventEmitter(); | ||
send(message: T) { | ||
this.bus.emit('event', { done: false, value: message }); | ||
if(options.maxSubscribers) { | ||
bus.setMaxListeners(options.maxSubscribers); | ||
} | ||
subscribe(task: Task): Subscription<T, TClose> { | ||
let { bus } = this; | ||
return Subscription.create(task, (publish): Operation<TClose> => function*() { | ||
let subscription = on(task, bus, 'event'); | ||
while(true) { | ||
let [event] = yield subscription.expect(); | ||
if(event.done) { | ||
return event.value; | ||
} else { | ||
publish(event.value); | ||
} | ||
let subscribable = createSubscribable<T, TClose>((publish) => function*(task) { | ||
let subscription = on(bus, 'event').subscribe(task); | ||
while(true) { | ||
let { value: [next] } = yield subscription.next(); | ||
if(next.done) { | ||
return next.value; | ||
} else { | ||
publish(next.value); | ||
} | ||
}); | ||
} | ||
} | ||
}); | ||
close(...args: TClose extends undefined ? [] : [TClose]) { | ||
this.bus.emit('event', { done: true, value: args[0] }); | ||
} | ||
return Object.assign(subscribable, { | ||
send(message: T) { | ||
bus.emit('event', { done: false, value: message }); | ||
}, | ||
close(...args: TClose extends undefined ? [] : [TClose]) { | ||
bus.emit('event', { done: true, value: args[0] }); | ||
} | ||
}); | ||
} |
@@ -1,1 +0,1 @@ | ||
export { Channel } from './channel'; | ||
export * from './channel'; |
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
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
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
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
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
16534
143
1