observevent
Advanced tools
Comparing version 0.2.0 to 1.0.0
@@ -23,2 +23,2 @@ import type { Observer } from '../models'; | ||
*/ | ||
export declare function combine<T extends Tuple<Observer<unknown, boolean>>, U extends Observees<T>, V extends boolean = false>(observerOrSubjects: T, options?: Options<V>): V extends true ? Observer<U, true> : Observer<U, false>; | ||
export declare function combine<T extends Tuple<Observer<unknown>>, U extends Observees<T>>(observerOrSubjects: T, options?: Options): Observer<U>; |
import type { Observer } from '../models'; | ||
import type { Observees, Options, Tuple, Value } from '../types'; | ||
import type { Observees, Options, Tuple } from '../types'; | ||
/** | ||
@@ -22,2 +22,2 @@ * Combine and map | ||
*/ | ||
export declare function combineMap<T extends Tuple<Observer<unknown, boolean>>, U extends Observees<T>, V, W extends boolean = false>(observerOrSubjects: T, mapper: (values: Value<U, W>) => V, options?: Options<W>): Observer<V, W>; | ||
export declare function combineMap<T extends Tuple<Observer<unknown>>, U extends Observees<T>, V>(observerOrSubjects: T, mapper: (newValue: U, oldValue: U) => V, options?: Options): Observer<V>; |
import type { Observer } from '../models'; | ||
import type { Value } from '../types'; | ||
/** | ||
@@ -19,2 +18,2 @@ * Do not subscribe if condition is met. | ||
*/ | ||
export declare function exclude<T, U extends boolean = false>(observerOrSubject: Observer<T, U>, selector: (value: Value<T, U>) => boolean): Observer<T, U>; | ||
export declare function exclude<T>(observerOrSubject: Observer<T>, selector: (newValue: T, oldValue: T) => boolean): Observer<T>; |
@@ -6,2 +6,1 @@ export * from './combine'; | ||
export * from './map'; | ||
export * from './diff'; |
import type { Observer } from '../models'; | ||
import type { Value } from '../types'; | ||
/** | ||
@@ -23,2 +22,2 @@ * Map subscribed value to something | ||
*/ | ||
export declare function map<T, U extends boolean, V>(observerOrSubject: Observer<T, U>, mapper: (value: Value<T, U>) => V): Observer<V, U>; | ||
export declare function map<T, V>(observerOrSubject: Observer<T>, mapper: (newValue: T, oldValue: T) => V): Observer<V>; |
import { Observer } from '../models'; | ||
import { Value } from '../types'; | ||
/** | ||
@@ -20,2 +19,2 @@ * Subscribe if condition is met. | ||
*/ | ||
export declare function select<T, U extends boolean = false>(observerOrSubject: Observer<T, U>, selector: (value: Value<T, U>) => boolean): Observer<T, U>; | ||
export declare function select<T>(observerOrSubject: Observer<T>, selector: (newValue: T, oldValue: T) => boolean): Observer<T>; |
@@ -5,2 +5,2 @@ export * from './derives'; | ||
export * from './models'; | ||
export type { Options, Unsubscriber, Subscriber, Value, ValueOrUpdator, } from './types'; | ||
export type { Options, Unsubscriber, Subscriber, ValueOrUpdator } from './types'; |
@@ -1,2 +0,2 @@ | ||
function n(n,r){var u,t,e,i;void 0===r&&(r={});var f=function(n){return new Proxy(n,{set:function(n,r,u){return function(n){l.forEach(function(r){return r(n)})}(o?[u,n[r]]:u),s&&c.info({before:n[r],after:u}),n[r]=u,!0}})}({value:n}),o=null!=(u=r.diff)&&u,c=null!=(t=r.logger)?t:console,s=null!=(e=r.logging)&&e,b=null==(i=r.immediate)||i,l=[];return{get subscribed(){return l.length>0},get diff(){var n;return null!=(n=r.diff)&&n},notify:function(n){var r="function"==typeof n?n(f.value):n;f.value=r},subscribe:function(n){return b&&n(o?[f.value,void 0]:f.value),l.push(n),function(){l=l.filter(function(r){return r!==n})}}}}function r(r,u){void 0===u&&(u={});var t=[];t.length=r.length;var e=n(t,u),i=[];return r.forEach(function(n,r){i.push(n.subscribe(function(n){t[r]=n,e.notify([].concat(t))}))}),{subscribe:function(n){return e.subscribe(n),function(){i.forEach(function(n){return n()})}},get diff(){var n;return null!=(n=u.diff)&&n}}}function u(n,r){return{subscribe:function(u){return n.subscribe(function(n){return u(r(n))})},get diff(){return n.diff}}}exports.combine=r,exports.combineMap=function(n,t,e){return void 0===e&&(e={}),u(r(n,e),t)},exports.diff=function(n){var r;return{subscribe:function(u){return n.subscribe(function(n){u([n,r]),r=n})},get diff(){return n.diff}}},exports.exclude=function(n,r){var u;return{subscribe:function(t){return n.subscribe(function(e){r(e)||(t(n.diff?[e[0],u]:e),u=e[0])})},get diff(){return n.diff}}},exports.map=u,exports.observify=function(r,u,t){void 0===t&&(t={});var e=n(r,t),i=u(e.notify);return{subscribe:function(n){var r=e.subscribe(n);return function(){r(),e.subscribed||"function"!=typeof i||i()}},get diff(){var n;return null!=(n=t.diff)&&n}}},exports.select=function(n,r){var u;return{subscribe:function(t){return n.subscribe(function(e){r(e)&&(t(n.diff?[e[0],u]:e),u=e[0])})},get diff(){return n.diff}}},exports.subjectify=n; | ||
function n(n,r){var u,t,e;void 0===r&&(r={});var i=function(n){return new Proxy(n,{set:function(n,r,u){var t,e;return t=u,e=n[r],s.forEach(function(n){return n(t,e)}),c&&o.info({before:n[r],after:u}),n[r]=u,!0}})}({value:n}),o=null!=(u=r.logger)?u:console,c=null!=(t=r.logging)&&t,f=null==(e=r.immediate)||e,s=[];return{get subscribed(){return s.length>0},notify:function(n){var r="function"==typeof n?n(i.value):n;i.value=r},subscribe:function(n){return f&&n(i.value,void 0),s.push(n),function(){s=s.filter(function(r){return r!==n})}}}}function r(r,u){void 0===u&&(u={});var t=[],e=n(t,u),i=[];return r.forEach(function(n,r){i.push(n.subscribe(function(n){t[r]=n,e.notify([].concat(t))}))}),{subscribe:function(n){return e.subscribe(n),function(){i.forEach(function(n){return n()})}}}}function u(n,r){var u;return{subscribe:function(t){return n.subscribe(function(n,e){var i=r(n,e);t(i,u),u=i})}}}exports.combine=r,exports.combineMap=function(n,t,e){return void 0===e&&(e={}),u(r(n,e),t)},exports.exclude=function(n,r){var u;return{subscribe:function(t){return n.subscribe(function(n,e){r(n,e)||(t(n,u),u=n)})}}},exports.map=u,exports.observify=function(r,u,t){void 0===t&&(t={});var e=n(r,t),i=u(e.notify);return{subscribe:function(n){var r=e.subscribe(n);return function(){r(),e.subscribed||"function"!=typeof i||i()}}}},exports.select=function(n,r){var u;return{subscribe:function(t){return n.subscribe(function(n,e){r(n,e)&&(t(n,u),u=n)})}}},exports.subjectify=n; | ||
//# sourceMappingURL=index.js.map |
@@ -1,2 +0,2 @@ | ||
function n(n,r){var u,t,f,i;void 0===r&&(r={});var e=function(n){return new Proxy(n,{set:function(n,r,u){return function(n){l.forEach(function(r){return r(n)})}(c?[u,n[r]]:u),s&&o.info({before:n[r],after:u}),n[r]=u,!0}})}({value:n}),c=null!=(u=r.diff)&&u,o=null!=(t=r.logger)?t:console,s=null!=(f=r.logging)&&f,b=null==(i=r.immediate)||i,l=[];return{get subscribed(){return l.length>0},get diff(){var n;return null!=(n=r.diff)&&n},notify:function(n){var r="function"==typeof n?n(e.value):n;e.value=r},subscribe:function(n){return b&&n(c?[e.value,void 0]:e.value),l.push(n),function(){l=l.filter(function(r){return r!==n})}}}}function r(r,u){void 0===u&&(u={});var t=[];t.length=r.length;var f=n(t,u),i=[];return r.forEach(function(n,r){i.push(n.subscribe(function(n){t[r]=n,f.notify([].concat(t))}))}),{subscribe:function(n){return f.subscribe(n),function(){i.forEach(function(n){return n()})}},get diff(){var n;return null!=(n=u.diff)&&n}}}function u(n,r){return{subscribe:function(u){return n.subscribe(function(n){return u(r(n))})},get diff(){return n.diff}}}function t(n,t,f){return void 0===f&&(f={}),u(r(n,f),t)}function f(n,r){var u;return{subscribe:function(t){return n.subscribe(function(f){r(f)&&(t(n.diff?[f[0],u]:f),u=f[0])})},get diff(){return n.diff}}}function i(n,r){var u;return{subscribe:function(t){return n.subscribe(function(f){r(f)||(t(n.diff?[f[0],u]:f),u=f[0])})},get diff(){return n.diff}}}function e(n){var r;return{subscribe:function(u){return n.subscribe(function(n){u([n,r]),r=n})},get diff(){return n.diff}}}function c(r,u,t){void 0===t&&(t={});var f=n(r,t),i=u(f.notify);return{subscribe:function(n){var r=f.subscribe(n);return function(){r(),f.subscribed||"function"!=typeof i||i()}},get diff(){var n;return null!=(n=t.diff)&&n}}}export{r as combine,t as combineMap,e as diff,i as exclude,u as map,c as observify,f as select,n as subjectify}; | ||
function n(n,r){var u,t,i;void 0===r&&(r={});var e=function(n){return new Proxy(n,{set:function(n,r,u){var t,i;return t=u,i=n[r],s.forEach(function(n){return n(t,i)}),c&&o.info({before:n[r],after:u}),n[r]=u,!0}})}({value:n}),o=null!=(u=r.logger)?u:console,c=null!=(t=r.logging)&&t,f=null==(i=r.immediate)||i,s=[];return{get subscribed(){return s.length>0},notify:function(n){var r="function"==typeof n?n(e.value):n;e.value=r},subscribe:function(n){return f&&n(e.value,void 0),s.push(n),function(){s=s.filter(function(r){return r!==n})}}}}function r(r,u){void 0===u&&(u={});var t=[],i=n(t,u),e=[];return r.forEach(function(n,r){e.push(n.subscribe(function(n){t[r]=n,i.notify([].concat(t))}))}),{subscribe:function(n){return i.subscribe(n),function(){e.forEach(function(n){return n()})}}}}function u(n,r){var u;return{subscribe:function(t){return n.subscribe(function(n,i){var e=r(n,i);t(e,u),u=e})}}}function t(n,t,i){return void 0===i&&(i={}),u(r(n,i),t)}function i(n,r){var u;return{subscribe:function(t){return n.subscribe(function(n,i){r(n,i)&&(t(n,u),u=n)})}}}function e(n,r){var u;return{subscribe:function(t){return n.subscribe(function(n,i){r(n,i)||(t(n,u),u=n)})}}}function o(r,u,t){void 0===t&&(t={});var i=n(r,t),e=u(i.notify);return{subscribe:function(n){var r=i.subscribe(n);return function(){r(),i.subscribed||"function"!=typeof e||e()}}}}export{r as combine,t as combineMap,e as exclude,u as map,o as observify,i as select,n as subjectify}; | ||
//# sourceMappingURL=index.m.js.map |
import type { Subscriber, Unsubscriber, ValueOrUpdator } from '../types'; | ||
export interface Observer<T, U extends boolean> { | ||
subscribe: (subscriber: Subscriber<T, U>) => Unsubscriber; | ||
readonly diff: boolean; | ||
export interface Observer<T> { | ||
subscribe: (subscriber: Subscriber<T>) => Unsubscriber; | ||
} | ||
export interface Subject<T, U extends boolean> extends Observer<T, U> { | ||
export interface Subject<T> extends Observer<T> { | ||
readonly subscribed: boolean; | ||
@@ -8,0 +7,0 @@ notify: (valueOrUpdator: ValueOrUpdator<T>) => void; |
@@ -26,2 +26,2 @@ import type { Observer } from './models'; | ||
*/ | ||
export declare function observify<T, U extends boolean = false>(init: T, trigger: Trigger<T>, options?: Options<U>): U extends true ? Observer<T, true> : Observer<T, false>; | ||
export declare function observify<T>(init: T, trigger: Trigger<T>, options?: Options): Observer<T>; |
@@ -20,2 +20,2 @@ import type { Subject } from './models'; | ||
*/ | ||
export declare function subjectify<T, U extends boolean = false>(init: T, options?: Options<U>): U extends true ? Subject<T, true> : Subject<T, false>; | ||
export declare function subjectify<T>(init: T, options?: Options): Subject<T>; |
import { Logger, Observer } from '../models'; | ||
export declare type Value<T, U extends boolean> = U extends true ? [newer: T, older: T] : T; | ||
export declare type ValueOrUpdator<T> = T | ((value: T) => T); | ||
export declare type Subscriber<T, U extends boolean> = (value: Value<T, U>) => void; | ||
export declare type Subscriber<T> = (newValue: T, oldValue: T) => void; | ||
export declare type Unsubscriber = () => void; | ||
export declare type Tuple<T> = [T, ...Array<T>]; | ||
export declare type ObserveeOrNot<T> = T extends Observer<infer L, infer R> ? R extends true ? [newer: L, older: L] : L : never; | ||
export declare type ObserveeOrNot<T> = T extends Observer<infer L> ? L : never; | ||
export declare type Observees<T extends readonly unknown[]> = { | ||
[K in keyof T]: ObserveeOrNot<T[K]>; | ||
}; | ||
export declare type Options<T extends boolean = false> = { | ||
export declare type Options = { | ||
/** | ||
* Subscribe value to be tuple like `[newer, older]` if true | ||
* @default false | ||
*/ | ||
diff?: T; | ||
/** | ||
* @type {Logger} | ||
@@ -19,0 +13,0 @@ */ |
{ | ||
"name": "observevent", | ||
"version": "0.2.0", | ||
"version": "1.0.0", | ||
"description": "observe event", | ||
@@ -5,0 +5,0 @@ "homepage": "https://github.com/koheing/observevent", |
@@ -16,3 +16,5 @@ # Observent | ||
const food = subjectify('') | ||
const unsubscribe = food.subscribe(console.log) | ||
const unsubscribe = food.subscribe((newValue, oldValue) => console.log(newValue, oldValue)) | ||
// or | ||
// food.subscribe((newValue) => console.log(newValue)) | ||
@@ -26,5 +28,5 @@ food.notify('apple') | ||
// ---------- | ||
// '' | ||
// 'apple' | ||
// 'apple pie' | ||
// '', undefined | ||
// 'apple, ' | ||
// 'apple pie, apple' | ||
``` | ||
@@ -60,4 +62,4 @@ | ||
// ---------- | ||
// '[food] ["", undefined]' | ||
// '[food] ["apple", ""]' | ||
// '[food] "", undefined' | ||
// '[food] "", apple' | ||
``` | ||
@@ -68,23 +70,2 @@ | ||
### `diff` | ||
Setting `diff` to `true` will notify you of the values before and after the change. | ||
Default value is `false`. | ||
```ts | ||
import { subjectify } from 'observevent' | ||
const food = subjectify('', { diff: true }) | ||
const unsubscribe = food.subscribe((it) => console.log(it)) | ||
food.notify('apple') | ||
food.notify((it) => it + ' pie') | ||
unsubscribe() | ||
// Output | ||
// ---------- | ||
// ['', undefined] | ||
// ['apple', ''] | ||
// ['apple pie', 'apple'] | ||
``` | ||
### `logging` | ||
@@ -142,3 +123,3 @@ Setting `logging` to `true` will output changelog. | ||
const food = subjectify('', { immediate: false }) | ||
const unsubscribe = food.subscribe(console.log) | ||
const unsubscribe = food.subscribe((it) => console.log(it)) | ||
@@ -162,2 +143,1 @@ food.notify('apple') | ||
- [combineMap](https://github.com/koheing/observevent/blob/main/src/derives/combinemap.ts) | ||
- [diff](https://github.com/koheing/observevent/blob/main/src/derives/diff.ts) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
0
37010
19
229
138