@nbottarini/observable 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +25 -18
- package/dist/cjs/Observable.d.ts +0 -9
- package/dist/cjs/index.d.ts +0 -1
- package/dist/esm/Observable.d.ts +0 -9
- package/dist/esm/index.d.ts +0 -1
- /package/dist/{index.d.ts → types/index.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,4 +1,49 @@
|
|
|
1
|
+
[](https://www.npmjs.com/package/@nbottarini/observable)
|
|
1
2
|
[](https://opensource.org/licenses/MIT)
|
|
3
|
+
[](https://github.com/nbottarini/observable-js/actions)
|
|
2
4
|
|
|
3
5
|
# Observable-Js
|
|
4
6
|
Tiny Observable pattern implementation for creating observable properties
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Npm:
|
|
10
|
+
```
|
|
11
|
+
$ npm install --save @nbottarini/observable
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Yarn:
|
|
15
|
+
```
|
|
16
|
+
$ yarn add @nbottarini/observable
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
**View1.ts:**
|
|
22
|
+
```typescript
|
|
23
|
+
export class View1 {
|
|
24
|
+
public readonly buttonClicked = new Observable<ClickEvent>()
|
|
25
|
+
public readonly textChanged = new Observable<TextChangedEvent>()
|
|
26
|
+
|
|
27
|
+
// Do something internally to handle UI events
|
|
28
|
+
|
|
29
|
+
private handleButtonClick(e: ClickEvent) {
|
|
30
|
+
this.buttonClicked.notify(e)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**View2.ts:**
|
|
36
|
+
```typescript
|
|
37
|
+
export class View2 {
|
|
38
|
+
private sampleView: View1
|
|
39
|
+
|
|
40
|
+
constructor() {
|
|
41
|
+
this.sampleView = new View1()
|
|
42
|
+
this.sampleView.buttonClicked.subscribe(this, this.onSampleViewButtonClicked)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
onSampleViewButtonClicked(e: ClickEvent) {
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";exports.Observable=class{observers=new Set;handlers=new Map;subscribe(observer,handler){this.observers.add(observer),this.handlers.set(observer,handler.bind(observer))}unsubscribe(observer){this.observers.delete(observer),this.handlers.delete(observer)}unsubscribeAll(){this.observers.clear(),this.handlers.clear()}notify(value){for(const handler of this.handlers.values())handler(value)}};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/Observable.ts"],"sourcesContent":["export type ObserverFunc<T> = (subject: T) => void\n\nexport class Observable<T = void> {\n private observers: Set<object> = new Set()\n private handlers: Map<object, ObserverFunc<T>> = new Map()\n\n subscribe(observer: object, handler: ObserverFunc<T>) {\n this.observers.add(observer)\n this.handlers.set(observer, handler.bind(observer))\n }\n\n unsubscribe(observer: object) {\n this.observers.delete(observer)\n this.handlers.delete(observer)\n }\n\n unsubscribeAll() {\n this.observers.clear()\n this.handlers.clear()\n }\n\n notify(value?: T) {\n for (const handler of this.handlers.values()) {\n // @ts-ignore\n handler(value)\n }\n }\n}\n"],"names":["observers","Set","handlers","Map","subscribe","observer","handler","this","add","set","bind","unsubscribe","delete","unsubscribeAll","clear","notify","value","values"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/Observable.ts"],"sourcesContent":["export type ObserverFunc<T> = (subject: T) => void\n\nexport class Observable<T = void> {\n private observers: Set<object> = new Set()\n private handlers: Map<object, ObserverFunc<T>> = new Map()\n\n subscribe(observer: object, handler: ObserverFunc<T>) {\n this.observers.add(observer)\n this.handlers.set(observer, handler.bind(observer))\n }\n\n unsubscribe(observer: object) {\n this.observers.delete(observer)\n this.handlers.delete(observer)\n }\n\n unsubscribeAll() {\n this.observers.clear()\n this.handlers.clear()\n }\n\n notify(value?: T) {\n for (const handler of this.handlers.values()) {\n // @ts-ignore\n handler(value)\n }\n }\n}\n"],"names":["observers","Set","handlers","Map","subscribe","observer","handler","this","add","set","bind","unsubscribe","delete","unsubscribeAll","clear","notify","value","values"],"mappings":"sCAGYA,UAAyB,IAAIC,IAC7BC,SAAyC,IAAIC,IAErD,SAAAC,CAAUC,SAAkBC,SACxBC,KAAKP,UAAUQ,IAAIH,UACnBE,KAAKL,SAASO,IAAIJ,SAAUC,QAAQI,KAAKL,UAC5C,CAED,WAAAM,CAAYN,UACRE,KAAKP,UAAUY,OAAOP,UACtBE,KAAKL,SAASU,OAAOP,SACxB,CAED,cAAAQ,GACIN,KAAKP,UAAUc,QACfP,KAAKL,SAASY,OACjB,CAED,MAAAC,CAAOC,OACH,IAAK,MAAMV,WAAWC,KAAKL,SAASe,SAEhCX,QAAQU,MAEf"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
class
|
|
1
|
+
class Observable{observers=new Set;handlers=new Map;subscribe(observer,handler){this.observers.add(observer),this.handlers.set(observer,handler.bind(observer))}unsubscribe(observer){this.observers.delete(observer),this.handlers.delete(observer)}unsubscribeAll(){this.observers.clear(),this.handlers.clear()}notify(value){for(const handler of this.handlers.values())handler(value)}}export{Observable};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/Observable.ts"],"sourcesContent":["export type ObserverFunc<T> = (subject: T) => void\n\nexport class Observable<T = void> {\n private observers: Set<object> = new Set()\n private handlers: Map<object, ObserverFunc<T>> = new Map()\n\n subscribe(observer: object, handler: ObserverFunc<T>) {\n this.observers.add(observer)\n this.handlers.set(observer, handler.bind(observer))\n }\n\n unsubscribe(observer: object) {\n this.observers.delete(observer)\n this.handlers.delete(observer)\n }\n\n unsubscribeAll() {\n this.observers.clear()\n this.handlers.clear()\n }\n\n notify(value?: T) {\n for (const handler of this.handlers.values()) {\n // @ts-ignore\n handler(value)\n }\n }\n}\n"],"names":["Observable","observers","Set","handlers","Map","subscribe","observer","handler","this","add","set","bind","unsubscribe","delete","unsubscribeAll","clear","notify","value","values"],"mappings":"MAEaA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/Observable.ts"],"sourcesContent":["export type ObserverFunc<T> = (subject: T) => void\n\nexport class Observable<T = void> {\n private observers: Set<object> = new Set()\n private handlers: Map<object, ObserverFunc<T>> = new Map()\n\n subscribe(observer: object, handler: ObserverFunc<T>) {\n this.observers.add(observer)\n this.handlers.set(observer, handler.bind(observer))\n }\n\n unsubscribe(observer: object) {\n this.observers.delete(observer)\n this.handlers.delete(observer)\n }\n\n unsubscribeAll() {\n this.observers.clear()\n this.handlers.clear()\n }\n\n notify(value?: T) {\n for (const handler of this.handlers.values()) {\n // @ts-ignore\n handler(value)\n }\n }\n}\n"],"names":["Observable","observers","Set","handlers","Map","subscribe","observer","handler","this","add","set","bind","unsubscribe","delete","unsubscribeAll","clear","notify","value","values"],"mappings":"MAEaA,WACDC,UAAyB,IAAIC,IAC7BC,SAAyC,IAAIC,IAErD,SAAAC,CAAUC,SAAkBC,SACxBC,KAAKP,UAAUQ,IAAIH,UACnBE,KAAKL,SAASO,IAAIJ,SAAUC,QAAQI,KAAKL,UAC5C,CAED,WAAAM,CAAYN,UACRE,KAAKP,UAAUY,OAAOP,UACtBE,KAAKL,SAASU,OAAOP,SACxB,CAED,cAAAQ,GACIN,KAAKP,UAAUc,QACfP,KAAKL,SAASY,OACjB,CAED,MAAAC,CAAOC,OACH,IAAK,MAAMV,WAAWC,KAAKL,SAASe,SAEhCX,QAAQU,MAEf"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nbottarini/observable",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Tiny Observable pattern implementation for creating observable properties",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
7
|
-
"types": "dist/index.d.ts",
|
|
7
|
+
"types": "dist/types/index.d.ts",
|
|
8
8
|
"author": "Nicolás Bottarini <nicolasbottarini@gmail.com>",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"homepage": "https://github.com/nbottarini/observable-js#readme",
|
|
@@ -20,28 +20,35 @@
|
|
|
20
20
|
],
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "rollup -c",
|
|
23
|
-
"
|
|
23
|
+
"check-all": "yarn lint && yarn test",
|
|
24
|
+
"lint": "eslint . && tsc --noEmit",
|
|
25
|
+
"test": "jest"
|
|
24
26
|
},
|
|
25
27
|
"devDependencies": {
|
|
26
|
-
"@babel/core": "^7.
|
|
27
|
-
"@babel/preset-env": "^7.
|
|
28
|
-
"@babel/preset-typescript": "^7.
|
|
29
|
-
"@rollup/plugin-commonjs": "^
|
|
30
|
-
"@rollup/plugin-node-resolve": "^
|
|
31
|
-
"@rollup/plugin-
|
|
32
|
-
"@
|
|
33
|
-
"@
|
|
34
|
-
"eslint": "^
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
28
|
+
"@babel/core": "^7.22.10",
|
|
29
|
+
"@babel/preset-env": "^7.22.10",
|
|
30
|
+
"@babel/preset-typescript": "^7.22.5",
|
|
31
|
+
"@rollup/plugin-commonjs": "^25.0.3",
|
|
32
|
+
"@rollup/plugin-node-resolve": "^15.1.0",
|
|
33
|
+
"@rollup/plugin-terser": "^0.4.3",
|
|
34
|
+
"@rollup/plugin-typescript": "^11.1.2",
|
|
35
|
+
"@types/jest": "^29.5.3",
|
|
36
|
+
"@typescript-eslint/eslint-plugin": "^6.3.0",
|
|
37
|
+
"@typescript-eslint/parser": "^6.3.0",
|
|
38
|
+
"babel-jest": "^29.6.2",
|
|
39
|
+
"eslint": "^8.46.0",
|
|
40
|
+
"jest": "^29.6.2",
|
|
41
|
+
"jest-extended": "^4.0.1",
|
|
42
|
+
"rollup": "^3.27.2",
|
|
43
|
+
"rollup-plugin-dts": "^5.3.1",
|
|
44
|
+
"rollup-plugin-exclude-dependencies-from-bundle": "^1.1.23",
|
|
45
|
+
"tslib": "^2.6.1",
|
|
46
|
+
"typescript": "^5.1.6"
|
|
40
47
|
},
|
|
41
48
|
"publishConfig": {
|
|
42
49
|
"registry": "https://registry.npmjs.org/"
|
|
43
50
|
},
|
|
44
51
|
"engines": {
|
|
45
|
-
"node": ">=
|
|
52
|
+
"node": ">= 18.0.0"
|
|
46
53
|
}
|
|
47
54
|
}
|
package/dist/cjs/Observable.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export type ObserverFunc<T> = (subject: T) => void;
|
|
2
|
-
export declare class Observable<T = void> {
|
|
3
|
-
private observers;
|
|
4
|
-
private handlers;
|
|
5
|
-
subscribe(observer: object, handler: ObserverFunc<T>): void;
|
|
6
|
-
unsubscribe(observer: object): void;
|
|
7
|
-
unsubscribeAll(): void;
|
|
8
|
-
notify(value?: T): void;
|
|
9
|
-
}
|
package/dist/cjs/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Observable } from './Observable';
|
package/dist/esm/Observable.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export type ObserverFunc<T> = (subject: T) => void;
|
|
2
|
-
export declare class Observable<T = void> {
|
|
3
|
-
private observers;
|
|
4
|
-
private handlers;
|
|
5
|
-
subscribe(observer: object, handler: ObserverFunc<T>): void;
|
|
6
|
-
unsubscribe(observer: object): void;
|
|
7
|
-
unsubscribeAll(): void;
|
|
8
|
-
notify(value?: T): void;
|
|
9
|
-
}
|
package/dist/esm/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Observable } from './Observable';
|
|
File without changes
|