@yamiteru/cynic
Advanced tools
Comparing version 3.2.0 to 3.3.0
@@ -1,2 +0,1 @@ | ||
import { EventEmitter } from "events"; | ||
declare const SET: unique symbol; | ||
@@ -15,7 +14,6 @@ declare const ON_CLEAR: unique symbol; | ||
export function size<O>(event$: Event<O>): number; | ||
export function has<O>($event: Event<O>, callback: TCallback<O>): boolean; | ||
export function has<O>(event$: Event<O>, callback: TCallback<O>): boolean; | ||
export function clear<I, O>(event$: Event<O>): void; | ||
export function fromTarget<O>(target: EventTarget, type: string, subs?: TCallback<O>[]): Event<O>; | ||
export function fromEmitter<O>(emitter: EventEmitter, type: string, subs?: TCallback<O>[]): Event<O>; | ||
export function once<O>(subs?: TCallback<O>[]): Event<O>; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -29,3 +29,3 @@ function $parcel$exportWildcard(dest, source) { | ||
return { | ||
[$e1d9e69861c0ee79$export$5e8f180ef0142226]: subs && new Set(subs) | ||
[$e1d9e69861c0ee79$export$5e8f180ef0142226]: subs ? new Set(subs) : false | ||
}; | ||
@@ -60,3 +60,3 @@ } | ||
function $c9e258e8c825c755$export$346677f925de839c(event$) { | ||
return event$[$e1d9e69861c0ee79$export$5e8f180ef0142226]?.$c9e258e8c825c755$export$346677f925de839c || 0; | ||
return event$[$e1d9e69861c0ee79$export$5e8f180ef0142226] ? event$[$e1d9e69861c0ee79$export$5e8f180ef0142226].size : 0; | ||
} | ||
@@ -69,4 +69,4 @@ | ||
function $514f40b04d64f4e6$export$a4f4bb6b1453fff5($event, callback) { | ||
return $event[$e1d9e69861c0ee79$export$5e8f180ef0142226]?.$514f40b04d64f4e6$export$a4f4bb6b1453fff5(callback) || false; | ||
function $514f40b04d64f4e6$export$a4f4bb6b1453fff5(event$, callback) { | ||
return event$[$e1d9e69861c0ee79$export$5e8f180ef0142226] ? event$[$e1d9e69861c0ee79$export$5e8f180ef0142226].has(callback) : false; | ||
} | ||
@@ -88,39 +88,16 @@ | ||
var $3f6c853c9ad136ca$exports = {}; | ||
$parcel$export($3f6c853c9ad136ca$exports, "fromTarget", () => $3f6c853c9ad136ca$export$83bbfe56b7693998); | ||
var $2938d486d5952a46$exports = {}; | ||
$parcel$export($2938d486d5952a46$exports, "once", () => $2938d486d5952a46$export$d2de3aaeafa91619); | ||
function $3f6c853c9ad136ca$export$83bbfe56b7693998(target, type, subs = []) { | ||
const $event = $a1c4a171850df66e$export$6cd530ed55e06764(subs); | ||
const callback = (v)=>$135ecce5f69ee703$export$89b472e03be495df($event, v) | ||
; | ||
target.addEventListener(type, callback); | ||
return { | ||
...$event, | ||
[$e1d9e69861c0ee79$export$a222d8dacac11c54]: ()=>target.removeEventListener(type, callback) | ||
}; | ||
function $2938d486d5952a46$export$d2de3aaeafa91619(subs = []) { | ||
return $a1c4a171850df66e$export$6cd530ed55e06764([ | ||
...subs, | ||
(_, this$)=>$0c7a43d1ad7f036a$export$42ffd38884aecdac(this$) | ||
]); | ||
} | ||
var $7d3a57290066691b$exports = {}; | ||
$parcel$export($7d3a57290066691b$exports, "fromEmitter", () => $7d3a57290066691b$export$d692b5265cd99b71); | ||
function $7d3a57290066691b$export$d692b5265cd99b71(emitter, type, subs = []) { | ||
const $event = $a1c4a171850df66e$export$6cd530ed55e06764(subs); | ||
const callback = (v)=>$135ecce5f69ee703$export$89b472e03be495df($event, v) | ||
; | ||
emitter.addListener(type, callback); | ||
return { | ||
...$event, | ||
[$e1d9e69861c0ee79$export$a222d8dacac11c54]: ()=>emitter.removeListener(type, callback) | ||
}; | ||
} | ||
$parcel$exportWildcard(module.exports, $a1c4a171850df66e$exports); | ||
@@ -133,6 +110,5 @@ $parcel$exportWildcard(module.exports, $9b31693306eb8804$exports); | ||
$parcel$exportWildcard(module.exports, $ba2c07b5499f050e$exports); | ||
$parcel$exportWildcard(module.exports, $3f6c853c9ad136ca$exports); | ||
$parcel$exportWildcard(module.exports, $7d3a57290066691b$exports); | ||
$parcel$exportWildcard(module.exports, $2938d486d5952a46$exports); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@yamiteru/cynic", | ||
"version": "3.2.0", | ||
"version": "3.3.0", | ||
"license": "MIT", | ||
@@ -39,21 +39,17 @@ "author": "Miroslav Vršecký <yamiteru@icloud.com>", | ||
"npm": "yarn test && yarn build && yarn publish", | ||
"benchmark": "ts-node-dev --respawn --transpile-only __benchmarks__/index.ts" | ||
"benchmark": "ts-node __benchmarks__/index.ts" | ||
}, | ||
"devDependencies": { | ||
"@parcel/config-default": "^2.4.1", | ||
"@parcel/config-default": "2.4.1", | ||
"@parcel/packager-ts": "2.4.1", | ||
"@parcel/transformer-typescript-types": "2.4.1", | ||
"@types/benchmark": "^2.1.1", | ||
"@types/benchmark": "2.1.1", | ||
"@types/jest": "27.4.1", | ||
"@types/node": "16.11.27", | ||
"benchmark": "^2.1.4", | ||
"events": "3.3.0", | ||
"benchmark": "2.1.4", | ||
"jest": "27.5.1", | ||
"microtime": "^3.0.0", | ||
"mitt": "^3.0.0", | ||
"nano-pubsub": "^2.0.1", | ||
"nanoid": "^3.3.3", | ||
"parcel": "2.4.1", | ||
"rxjs": "7.5.5", | ||
"ts-jest": "27.1.4", | ||
"ts-node-dev": "1.1.8", | ||
"ts-node": "10.7.0", | ||
"typescript": "4.6.3" | ||
@@ -60,0 +56,0 @@ }, |
# Cynic | ||
Tiny and simple TS pub/sub library with great focus on performance. | ||
Tiny and simple TS pub/sub library with great focus on performance. | ||
_(run `yarn benchmark` too see how much faster Cynic is)_ | ||
@@ -26,3 +27,3 @@ ## Concept | ||
```typescript | ||
for (const $event of player) { | ||
for (const event$ of player) { | ||
clear(event$); | ||
@@ -41,19 +42,10 @@ } | ||
```typescript | ||
// Non-mapped event | ||
const $playerPosition = event<{ x: number, y: number, z: number }>(); | ||
// Event w/ input | ||
const playerPosition$ = event<{ x: number, y: number, z: number }>(); | ||
// Mapped event | ||
const $trigger = event<boolean, "active" | "inactive">((v) => v ? "active": "inactive"); | ||
// Event w/o input | ||
const clicked$ = event<undefined>(); | ||
// Validated event | ||
const $onlyPositive event<number>((v) => v >= 0 ? v: undefined); | ||
// Event with no input | ||
const $clicked = trigger(); | ||
// Readonly event | ||
const $readonlyTrigger = readonly($trigger); | ||
// Event from EventTarget or EventEmitter | ||
const $onWindowResize = from(window, "resize"); | ||
// Event that triggers only once | ||
const once$ = once<number>(); | ||
``` | ||
@@ -64,3 +56,3 @@ | ||
```typescript | ||
const playerPositionUnsubscribe = subscribe($playerPosition, (pos) => { | ||
const playerPositionUnsubscribe = subscribe(playerPosition$, (pos) => { | ||
notifyEnemies(pos); | ||
@@ -75,8 +67,5 @@ updateChunks(pos); | ||
// event | ||
publish($playerPosition, { | ||
publish(playerPosition$, { | ||
x: 10, y: 0, z: 4 | ||
}); | ||
// trigger | ||
publish($clicked); | ||
``` | ||
@@ -87,3 +76,3 @@ | ||
```typescript | ||
const subCount = size($playerPosition); | ||
const subCount = size(playerPosition$); | ||
``` | ||
@@ -94,3 +83,3 @@ | ||
```typescript | ||
const hasLog = has($playerPosition, console.log); | ||
const hasLog = has(playerPosition$, console.log); | ||
``` | ||
@@ -101,3 +90,3 @@ | ||
```typescript | ||
clear($playerPosition); | ||
clear(playerPosition$); | ||
``` | ||
@@ -104,0 +93,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
Sorry, the diff of this file is not supported yet
13
21895
141
97