@alwatr/signal 0.12.0 → 0.15.0
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/CHANGELOG.md +18 -1
- package/README.md +5 -5
- package/core.d.ts +28 -16
- package/core.d.ts.map +1 -1
- package/core.js +67 -52
- package/core.js.map +1 -1
- package/package.json +3 -3
- package/signal.d.ts +8 -7
- package/signal.d.ts.map +1 -1
- package/signal.js +15 -14
- package/signal.js.map +1 -1
- package/type.d.ts +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,13 +3,30 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
# [0.
|
|
6
|
+
# [0.15.0](https://github.com/AliMD/alwatr/compare/v0.14.0...v0.15.0) (2022-09-01)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* get signal object of `request` signal ([eec4b62](https://github.com/AliMD/alwatr/commit/eec4b6201d79785aa10f4b9c777449525158a346))
|
|
12
|
+
* **signal:** fix some issues of `review` ([36ceb8b](https://github.com/AliMD/alwatr/commit/36ceb8b25987621065327b4fa475a213562af8e7))
|
|
13
|
+
* **signal:** log performance and security issue ([dbe9483](https://github.com/AliMD/alwatr/commit/dbe9483b672099b91c18c3a103c2878435fd6508))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# [0.14.0](https://github.com/AliMD/alwatr/compare/v0.13.0...v0.14.0) (2022-08-19)
|
|
7
20
|
|
|
8
21
|
**Note:** Version bump only for package @alwatr/signal
|
|
9
22
|
|
|
23
|
+
# [0.13.0](https://github.com/AliMD/alwatr/compare/v0.12.0...v0.13.0) (2022-08-06)
|
|
10
24
|
|
|
25
|
+
**Note:** Version bump only for package @alwatr/signal
|
|
11
26
|
|
|
27
|
+
# [0.12.0](https://github.com/AliMD/alwatr/compare/v0.11.0...v0.12.0) (2022-07-22)
|
|
12
28
|
|
|
29
|
+
**Note:** Version bump only for package @alwatr/signal
|
|
13
30
|
|
|
14
31
|
# [0.11.0](https://github.com/AliMD/alwatr/compare/v0.10.1...v0.11.0) (2022-04-16)
|
|
15
32
|
|
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ contentChangeSignal1.dispatch({a: 1, b: 2});
|
|
|
37
37
|
|
|
38
38
|
contentChangeSignal1.dispatch({a: 2, b: 3});
|
|
39
39
|
|
|
40
|
-
// Multiple dispatch debounced and last value dispatched after an
|
|
40
|
+
// Multiple dispatch debounced and last value dispatched after an animation frame.
|
|
41
41
|
contentChangeSignal1.dispatch({a: 3, b: 4});
|
|
42
42
|
```
|
|
43
43
|
|
|
@@ -127,7 +127,7 @@ contentChangeSignal.dispatched; // false
|
|
|
127
127
|
|
|
128
128
|
### `setProvider(provider)`
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
Defines the provider of the signal that will be called when the signal requested (addRequestSignalListener).
|
|
131
131
|
|
|
132
132
|
Example:
|
|
133
133
|
|
|
@@ -175,7 +175,7 @@ Get signal value from last dispatched signal (if any) or wait for new signal rec
|
|
|
175
175
|
Example:
|
|
176
176
|
|
|
177
177
|
```ts
|
|
178
|
-
// get signal value from last dispatched signal (if any) or wait new signal
|
|
178
|
+
// get signal value from last dispatched signal (if any) or wait for a new signal to receive
|
|
179
179
|
const content = await contentChangeSignal.getSignalValue();
|
|
180
180
|
```
|
|
181
181
|
|
|
@@ -191,7 +191,7 @@ contentChangeSignal.dispatch(content);
|
|
|
191
191
|
|
|
192
192
|
### `addListener(listener)`
|
|
193
193
|
|
|
194
|
-
|
|
194
|
+
Adds a new listener to the signal.
|
|
195
195
|
|
|
196
196
|
Example:
|
|
197
197
|
|
|
@@ -215,7 +215,7 @@ listener.disabled = true;
|
|
|
215
215
|
|
|
216
216
|
#### `listener.remove()`
|
|
217
217
|
|
|
218
|
-
|
|
218
|
+
Removes a listener from the signal.
|
|
219
219
|
|
|
220
220
|
Example:
|
|
221
221
|
|
package/core.d.ts
CHANGED
|
@@ -1,44 +1,56 @@
|
|
|
1
1
|
import type { DispatchOptions, ListenerCallback, ListenerObject, ListenerOptions, SignalObject, SignalProvider, SignalProviderOptions } from './type';
|
|
2
|
-
export declare const logger: import("@alwatr/logger
|
|
2
|
+
export declare const logger: import("@alwatr/logger").AlwatrLogger;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Get signal object by name, If not available, it will create a new signal with default options.
|
|
5
|
+
*
|
|
6
|
+
* Example:
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* const signal = _getSignalObject('content-change');
|
|
10
|
+
* signal.disabled = true;
|
|
11
|
+
* ```
|
|
5
12
|
*/
|
|
6
|
-
export declare function
|
|
13
|
+
export declare function _getSignalObject<SignalName extends keyof AlwatrSignals>(signalName: SignalName): SignalObject<SignalName>;
|
|
7
14
|
/**
|
|
8
|
-
*
|
|
15
|
+
* Adds a new listener to the signal.
|
|
9
16
|
*
|
|
10
17
|
* Example:
|
|
11
18
|
*
|
|
12
19
|
* ```ts
|
|
13
|
-
* const
|
|
20
|
+
* const signal = _getSignalObject('content-change')
|
|
21
|
+
* const listener = _addSignalListener(signal, (content) => console.log(content));
|
|
14
22
|
* ```
|
|
15
23
|
*/
|
|
16
|
-
export declare function _addSignalListener<SignalName extends keyof AlwatrSignals>(
|
|
24
|
+
export declare function _addSignalListener<SignalName extends keyof AlwatrSignals>(signal: SignalObject<SignalName>, listenerCallback: ListenerCallback<SignalName>, options?: ListenerOptions): ListenerObject<SignalName>;
|
|
17
25
|
/**
|
|
18
|
-
*
|
|
26
|
+
* Removes a listener from the signal.
|
|
19
27
|
*
|
|
20
28
|
* Example:
|
|
21
29
|
*
|
|
22
30
|
* ```ts
|
|
23
|
-
* const
|
|
24
|
-
*
|
|
31
|
+
* const signal = _getSignalObject('content-change')
|
|
32
|
+
* const listener = _addSignalListener(signal, ...);
|
|
33
|
+
* _removeSignalListener(signal, listener);
|
|
25
34
|
* ```
|
|
26
35
|
*/
|
|
27
|
-
export declare function _removeSignalListener<SignalName extends keyof AlwatrSignals>(
|
|
36
|
+
export declare function _removeSignalListener<SignalName extends keyof AlwatrSignals>(signal: SignalObject<SignalName>, listenerId: number): void;
|
|
28
37
|
/**
|
|
29
|
-
* Dispatch signal to all listeners.
|
|
38
|
+
* Dispatch (send) signal to all listeners.
|
|
30
39
|
*
|
|
31
40
|
* @example
|
|
32
|
-
*
|
|
41
|
+
* const signal = _getSignalObject('content-change')
|
|
42
|
+
* _dispatchSignal(signal, content);
|
|
33
43
|
*/
|
|
34
|
-
export declare function _dispatchSignal<SignalName extends keyof AlwatrSignals>(
|
|
44
|
+
export declare function _dispatchSignal<SignalName extends keyof AlwatrSignals>(signal: SignalObject<SignalName>, value: AlwatrSignals[SignalName], options?: DispatchOptions): void;
|
|
35
45
|
/**
|
|
36
|
-
*
|
|
46
|
+
* Defines the provider of the signal that will be called when the signal requested (addRequestSignalListener).
|
|
37
47
|
*
|
|
38
48
|
* Example:
|
|
39
49
|
*
|
|
40
50
|
* ```ts
|
|
41
|
-
*
|
|
51
|
+
* const signal = _getSignalObject('content-change');
|
|
52
|
+
* const requestSignal = _getSignalObject('request-content-change');
|
|
53
|
+
* _setSignalProvider(signal, requestSignal, async (requestParam) => {
|
|
42
54
|
* const content = await fetchNewContent(requestParam);
|
|
43
55
|
* if (content != null) {
|
|
44
56
|
* return content; // dispatchSignal('content-change', content);
|
|
@@ -49,5 +61,5 @@ export declare function _dispatchSignal<SignalName extends keyof AlwatrSignals>(
|
|
|
49
61
|
* }
|
|
50
62
|
* ```
|
|
51
63
|
*/
|
|
52
|
-
export declare function _setSignalProvider<SignalName extends keyof
|
|
64
|
+
export declare function _setSignalProvider<SignalName extends keyof AlwatrSignals>(signal: SignalObject<SignalName>, requestSignal: SignalObject<SignalName>, signalProvider: SignalProvider<SignalName>, options?: SignalProviderOptions): ListenerObject<SignalName>;
|
|
53
65
|
//# sourceMappingURL=core.d.ts.map
|
package/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["src/core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EAEtB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["src/core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EAEtB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,MAAM,uCAAgC,CAAC;AAiBpD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,SAAS,MAAM,aAAa,EACnE,UAAU,EAAE,UAAU,GACvB,YAAY,CAAC,UAAU,CAAC,CAU1B;AAmCD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,SAAS,MAAM,aAAa,EACrE,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,EAChC,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAC9C,OAAO,CAAC,EAAE,eAAe,GAC1B,cAAc,CAAC,UAAU,CAAC,CAqD5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,SAAS,MAAM,aAAa,EACxE,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,EAChC,UAAU,EAAE,MAAM,GACnB,IAAI,CAMN;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,SAAS,MAAM,aAAa,EAClE,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,EAChC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,OAAO,CAAC,EAAE,eAAe,GAC1B,IAAI,CAoBN;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,SAAS,MAAM,aAAa,EACrE,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,EAChC,aAAa,EAAE,YAAY,CAAC,UAAU,CAAC,EACvC,cAAc,EAAE,cAAc,CAAC,UAAU,CAAC,EAC1C,OAAO,CAAC,EAAE,qBAAqB,GAChC,cAAc,CAAC,UAAU,CAAC,CA0B5B"}
|
package/core.js
CHANGED
|
@@ -4,14 +4,25 @@ alwatrRegisteredList.push({
|
|
|
4
4
|
name: '@alwatr/signal',
|
|
5
5
|
version: '{{ALWATR_VERSION}}',
|
|
6
6
|
});
|
|
7
|
+
/**
|
|
8
|
+
* Listener `id`
|
|
9
|
+
*/
|
|
10
|
+
let _lastListenerId = 0;
|
|
7
11
|
/**
|
|
8
12
|
* Signal stack database.
|
|
9
13
|
*/
|
|
10
14
|
const _signalStack = {};
|
|
11
15
|
/**
|
|
12
|
-
*
|
|
16
|
+
* Get signal object by name, If not available, it will create a new signal with default options.
|
|
17
|
+
*
|
|
18
|
+
* Example:
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* const signal = _getSignalObject('content-change');
|
|
22
|
+
* signal.disabled = true;
|
|
23
|
+
* ```
|
|
13
24
|
*/
|
|
14
|
-
export function
|
|
25
|
+
export function _getSignalObject(signalName) {
|
|
15
26
|
if (!_signalStack[signalName]) {
|
|
16
27
|
_signalStack[signalName] = {
|
|
17
28
|
name: signalName,
|
|
@@ -25,6 +36,7 @@ export function __getSignalObject(signalName) {
|
|
|
25
36
|
function __callListeners(signal) {
|
|
26
37
|
logger.logMethodArgs('_callListeners', { signalName: signal.name, signalValue: signal.value });
|
|
27
38
|
if (signal.value === undefined) {
|
|
39
|
+
// null is a valid value for signal.
|
|
28
40
|
logger.accident('_callListeners', 'no_signal_value', 'signal must have a value', {
|
|
29
41
|
signalName: signal.name,
|
|
30
42
|
});
|
|
@@ -49,59 +61,62 @@ function __callListeners(signal) {
|
|
|
49
61
|
}
|
|
50
62
|
signal.listenerList
|
|
51
63
|
.filter((listener) => !listener.disabled && listener.once)
|
|
52
|
-
.forEach((listener) => _removeSignalListener(signal
|
|
64
|
+
.forEach((listener) => _removeSignalListener(signal, listener.id));
|
|
53
65
|
}
|
|
54
66
|
/**
|
|
55
|
-
*
|
|
67
|
+
* Adds a new listener to the signal.
|
|
56
68
|
*
|
|
57
69
|
* Example:
|
|
58
70
|
*
|
|
59
71
|
* ```ts
|
|
60
|
-
* const
|
|
72
|
+
* const signal = _getSignalObject('content-change')
|
|
73
|
+
* const listener = _addSignalListener(signal, (content) => console.log(content));
|
|
61
74
|
* ```
|
|
62
75
|
*/
|
|
63
|
-
export function _addSignalListener(
|
|
64
|
-
|
|
65
|
-
logger.logMethodArgs('addSignalListener', { signalName, options });
|
|
66
|
-
const signal = __getSignalObject(signalName);
|
|
76
|
+
export function _addSignalListener(signal, listenerCallback, options) {
|
|
77
|
+
logger.logMethodArgs('_addSignalListener', { signalName: signal.name, options });
|
|
67
78
|
const listener = {
|
|
68
|
-
id:
|
|
69
|
-
once:
|
|
70
|
-
disabled:
|
|
71
|
-
callback:
|
|
79
|
+
id: ++_lastListenerId,
|
|
80
|
+
once: options?.once ?? false,
|
|
81
|
+
disabled: options?.disabled ?? false,
|
|
82
|
+
callback: listenerCallback,
|
|
72
83
|
};
|
|
73
84
|
let callbackCalled = false;
|
|
74
85
|
// Run callback for old dispatch signal
|
|
75
86
|
if (signal.value !== undefined) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
87
|
+
// null is a valid value for signal.
|
|
88
|
+
if (options?.receivePrevious === 'Immediate') {
|
|
89
|
+
logger.incident('_addSignalListener', 'call_signal_callback', 'run callback with previous signal value!', {
|
|
90
|
+
signalName: signal.name,
|
|
79
91
|
mode: 'Immediate',
|
|
80
92
|
});
|
|
81
93
|
try {
|
|
82
|
-
|
|
94
|
+
listenerCallback(signal.value);
|
|
83
95
|
}
|
|
84
96
|
catch (err) {
|
|
85
|
-
logger.error('
|
|
97
|
+
logger.error('_addSignalListener', 'call_signal_callback_failed', err.stack || err, {
|
|
98
|
+
signalName: signal.name,
|
|
99
|
+
});
|
|
86
100
|
}
|
|
87
101
|
callbackCalled = true;
|
|
88
102
|
}
|
|
89
|
-
else if (
|
|
103
|
+
else if (options?.receivePrevious === true) {
|
|
90
104
|
requestAnimationFrame(() => {
|
|
91
105
|
if (signal.value !== undefined) {
|
|
92
|
-
|
|
93
|
-
|
|
106
|
+
// null is a valid value for signal.
|
|
107
|
+
logger.incident('_addSignalListener', 'call_signal_callback', 'run callback with previous signal value!', {
|
|
108
|
+
signalName: signal.name,
|
|
94
109
|
mode: 'Delay',
|
|
95
110
|
});
|
|
96
|
-
|
|
111
|
+
listenerCallback(signal.value);
|
|
97
112
|
}
|
|
98
113
|
});
|
|
99
114
|
callbackCalled = true; // must be outside of requestAnimationFrame.
|
|
100
115
|
}
|
|
101
116
|
}
|
|
102
117
|
// if once then must remove listener after fist callback called! then why push it to listenerList?!
|
|
103
|
-
if (!(
|
|
104
|
-
if (options
|
|
118
|
+
if (!(options?.once && callbackCalled)) {
|
|
119
|
+
if (options?.priority) {
|
|
105
120
|
signal.listenerList.unshift(listener);
|
|
106
121
|
}
|
|
107
122
|
else {
|
|
@@ -111,39 +126,39 @@ export function _addSignalListener(signalName, signalCallback, options) {
|
|
|
111
126
|
return listener;
|
|
112
127
|
}
|
|
113
128
|
/**
|
|
114
|
-
*
|
|
129
|
+
* Removes a listener from the signal.
|
|
115
130
|
*
|
|
116
131
|
* Example:
|
|
117
132
|
*
|
|
118
133
|
* ```ts
|
|
119
|
-
* const
|
|
120
|
-
*
|
|
134
|
+
* const signal = _getSignalObject('content-change')
|
|
135
|
+
* const listener = _addSignalListener(signal, ...);
|
|
136
|
+
* _removeSignalListener(signal, listener);
|
|
121
137
|
* ```
|
|
122
138
|
*/
|
|
123
|
-
export function _removeSignalListener(
|
|
124
|
-
logger.logMethodArgs('_removeSignalListener', signalName);
|
|
125
|
-
const signal = __getSignalObject(signalName);
|
|
139
|
+
export function _removeSignalListener(signal, listenerId) {
|
|
140
|
+
logger.logMethodArgs('_removeSignalListener', { signalName: signal.name, listenerId });
|
|
126
141
|
const listenerIndex = signal.listenerList.findIndex((_listener) => _listener.id === listenerId);
|
|
127
142
|
if (listenerIndex !== -1) {
|
|
128
143
|
signal.listenerList.splice(listenerIndex, 1);
|
|
129
144
|
}
|
|
130
145
|
}
|
|
131
146
|
/**
|
|
132
|
-
* Dispatch signal to all listeners.
|
|
147
|
+
* Dispatch (send) signal to all listeners.
|
|
133
148
|
*
|
|
134
149
|
* @example
|
|
135
|
-
*
|
|
150
|
+
* const signal = _getSignalObject('content-change')
|
|
151
|
+
* _dispatchSignal(signal, content);
|
|
136
152
|
*/
|
|
137
|
-
export function _dispatchSignal(
|
|
138
|
-
logger.logMethodArgs('dispatchSignal', { signalName, value, options });
|
|
139
|
-
const signal = __getSignalObject(signalName);
|
|
153
|
+
export function _dispatchSignal(signal, value, options) {
|
|
154
|
+
logger.logMethodArgs('dispatchSignal', { signalName: signal.name, value, options });
|
|
140
155
|
// set value before check signal.debounced for act like throttle (call listeners with last dispatch value).
|
|
141
156
|
signal.value = value;
|
|
142
157
|
if (signal.disabled)
|
|
143
158
|
return; // signal is disabled.
|
|
144
|
-
if (
|
|
159
|
+
if (options?.debounce && signal.debounced)
|
|
145
160
|
return; // last dispatch in progress.
|
|
146
|
-
if (!
|
|
161
|
+
if (!options?.debounce) {
|
|
147
162
|
// call listeners immediately.
|
|
148
163
|
__callListeners(signal);
|
|
149
164
|
return;
|
|
@@ -156,12 +171,14 @@ export function _dispatchSignal(signalName, value, options) {
|
|
|
156
171
|
});
|
|
157
172
|
}
|
|
158
173
|
/**
|
|
159
|
-
*
|
|
174
|
+
* Defines the provider of the signal that will be called when the signal requested (addRequestSignalListener).
|
|
160
175
|
*
|
|
161
176
|
* Example:
|
|
162
177
|
*
|
|
163
178
|
* ```ts
|
|
164
|
-
*
|
|
179
|
+
* const signal = _getSignalObject('content-change');
|
|
180
|
+
* const requestSignal = _getSignalObject('request-content-change');
|
|
181
|
+
* _setSignalProvider(signal, requestSignal, async (requestParam) => {
|
|
165
182
|
* const content = await fetchNewContent(requestParam);
|
|
166
183
|
* if (content != null) {
|
|
167
184
|
* return content; // dispatchSignal('content-change', content);
|
|
@@ -172,25 +189,23 @@ export function _dispatchSignal(signalName, value, options) {
|
|
|
172
189
|
* }
|
|
173
190
|
* ```
|
|
174
191
|
*/
|
|
175
|
-
export function _setSignalProvider(
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
if (signal.listenerList.length > 0) {
|
|
181
|
-
logger.accident('setSignalProvider', 'signal_provider_already_set', 'another provider defined and will removed', {
|
|
182
|
-
signalName,
|
|
192
|
+
export function _setSignalProvider(signal, requestSignal, signalProvider, options) {
|
|
193
|
+
logger.logMethodArgs('_setSignalProvider', { signal: signal.name, requestSignal: requestSignal.name, options });
|
|
194
|
+
if (requestSignal.listenerList.length > 0) {
|
|
195
|
+
logger.accident('_setSignalProvider', 'another_signal_provider_exist', 'Another provider exist! It will be removed to fix the problem', {
|
|
196
|
+
signalName: signal.name,
|
|
183
197
|
});
|
|
184
|
-
|
|
198
|
+
requestSignal.listenerList = [];
|
|
185
199
|
}
|
|
186
200
|
const _callback = async (requestParam) => {
|
|
187
|
-
var _a;
|
|
188
201
|
const signalValue = await signalProvider(requestParam);
|
|
189
202
|
if (signalValue !== undefined) {
|
|
190
|
-
// null
|
|
191
|
-
_dispatchSignal(
|
|
203
|
+
// null is a valid value for signal.
|
|
204
|
+
_dispatchSignal(signal, signalValue, { debounce: options?.debounce ?? true });
|
|
192
205
|
}
|
|
193
206
|
};
|
|
194
|
-
return _addSignalListener(
|
|
207
|
+
return _addSignalListener(requestSignal, _callback, {
|
|
208
|
+
receivePrevious: options?.receivePrevious ?? true,
|
|
209
|
+
});
|
|
195
210
|
}
|
|
196
211
|
//# sourceMappingURL=core.js.map
|
package/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,oBAAoB,EAAC,MAAM,gBAAgB,CAAC;AAalE,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;AAEpD,oBAAoB,CAAC,IAAI,CAAC;IACxB,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,oBAAoB;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,YAAY,GAAgB,EAAE,CAAC;AAErC
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["src/core.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alwatr/signal",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Elegant powerful event system for handle global signals and states written in tiny TypeScript module.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"signal",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"url": "https://github.com/AliMD/alwatr/issues"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@alwatr/logger": "^0.
|
|
35
|
+
"@alwatr/logger": "^0.15.0",
|
|
36
36
|
"tslib": "^2.3.1"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "785516d9da483e429ed9b79b3c6d71012c9aa822"
|
|
39
39
|
}
|
package/signal.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ import type { ListenerOptions, DispatchOptions, ListenerCallback, SignalProvider
|
|
|
4
4
|
*/
|
|
5
5
|
export declare class SignalInterface<SignalName extends keyof AlwatrSignals> {
|
|
6
6
|
protected _signal: SignalObject<SignalName>;
|
|
7
|
-
protected
|
|
7
|
+
protected _requestSignal: SignalObject<SignalName>;
|
|
8
|
+
protected _logger: import("@alwatr/logger").AlwatrLogger;
|
|
8
9
|
constructor(signalName: SignalName);
|
|
9
10
|
/**
|
|
10
11
|
* Get signal name.
|
|
@@ -71,7 +72,7 @@ export declare class SignalInterface<SignalName extends keyof AlwatrSignals> {
|
|
|
71
72
|
*/
|
|
72
73
|
expire(): void;
|
|
73
74
|
/**
|
|
74
|
-
*
|
|
75
|
+
* Defines the provider of the signal that will be called when the signal requested (addRequestSignalListener).
|
|
75
76
|
*
|
|
76
77
|
* Example:
|
|
77
78
|
*
|
|
@@ -88,7 +89,7 @@ export declare class SignalInterface<SignalName extends keyof AlwatrSignals> {
|
|
|
88
89
|
* });
|
|
89
90
|
* ```
|
|
90
91
|
*/
|
|
91
|
-
setProvider(signalProvider: SignalProvider<SignalName>, options?: SignalProviderOptions):
|
|
92
|
+
setProvider(signalProvider: SignalProvider<SignalName>, options?: SignalProviderOptions): ListenerInterface<SignalName>;
|
|
92
93
|
/**
|
|
93
94
|
* Dispatch request signal and wait for answer (wait for new signal dispatched).
|
|
94
95
|
*
|
|
@@ -141,7 +142,7 @@ export declare class SignalInterface<SignalName extends keyof AlwatrSignals> {
|
|
|
141
142
|
*/
|
|
142
143
|
dispatch(signalValue: AlwatrSignals[SignalName], options?: DispatchOptions): void;
|
|
143
144
|
/**
|
|
144
|
-
*
|
|
145
|
+
* Adds a new listener to the signal.
|
|
145
146
|
*
|
|
146
147
|
* Example:
|
|
147
148
|
*
|
|
@@ -150,7 +151,7 @@ export declare class SignalInterface<SignalName extends keyof AlwatrSignals> {
|
|
|
150
151
|
* const listener = contentChangeSignal.addListener((content) => console.log(content));
|
|
151
152
|
* ```
|
|
152
153
|
*/
|
|
153
|
-
addListener(
|
|
154
|
+
addListener(listenerCallback: ListenerCallback<SignalName>, options?: ListenerOptions): ListenerInterface<SignalName>;
|
|
154
155
|
}
|
|
155
156
|
/**
|
|
156
157
|
* Signal Listener API interface as a remote controller.
|
|
@@ -158,7 +159,7 @@ export declare class SignalInterface<SignalName extends keyof AlwatrSignals> {
|
|
|
158
159
|
export declare class ListenerInterface<SignalName extends keyof AlwatrSignals> {
|
|
159
160
|
protected _signal: SignalObject<SignalName>;
|
|
160
161
|
protected _listener: ListenerObject<SignalName>;
|
|
161
|
-
protected _logger: import("@alwatr/logger
|
|
162
|
+
protected _logger: import("@alwatr/logger").AlwatrLogger;
|
|
162
163
|
constructor(_signal: SignalObject<SignalName>, _listener: ListenerObject<SignalName>);
|
|
163
164
|
/**
|
|
164
165
|
* Disable the listener, not called anymore.
|
|
@@ -174,7 +175,7 @@ export declare class ListenerInterface<SignalName extends keyof AlwatrSignals> {
|
|
|
174
175
|
get disabled(): boolean;
|
|
175
176
|
set disabled(disabled: boolean);
|
|
176
177
|
/**
|
|
177
|
-
*
|
|
178
|
+
* Removes a listener from the signal.
|
|
178
179
|
*
|
|
179
180
|
* Example:
|
|
180
181
|
*
|
package/signal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["src/signal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["src/signal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,YAAY,EACb,MAAM,QAAQ,CAAC;AAEhB;;GAEG;AACH,qBAAa,eAAe,CAAC,UAAU,SAAS,MAAM,aAAa;IACjE,SAAS,CAAC,OAAO,2BAAC;IAClB,SAAS,CAAC,cAAc,2BAAC;IACzB,SAAS,CAAC,OAAO,wCAAC;gBAEN,UAAU,EAAE,UAAU;IAMlC;;;;;;;;OAQG;IACH,IAAI,IAAI,IAAI,UAAU,CAErB;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,KAAK,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS,CAEjD;IAED;;;;;;;;;;;OAWG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;;;;;OAQG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAG7B;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,IAAI,IAAI;IAKd;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CACP,cAAc,EAAE,cAAc,CAAC,UAAU,CAAC,EAC1C,OAAO,CAAC,EAAE,qBAAqB,GAChC,iBAAiB,CAAC,UAAU,CAAC;IAMhC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,YAAY,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAU3F;;;;;;;;;;OAUG;IACH,kBAAkB,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAWxD;;;;;;;;;;;;OAYG;IACH,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IASpD;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAKjF;;;;;;;;;OASG;IACH,WAAW,CACP,gBAAgB,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAC9C,OAAO,CAAC,EAAE,eAAe,GAC1B,iBAAiB,CAAC,UAAU,CAAC;CAKjC;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,UAAU,SAAS,MAAM,aAAa;IAEvD,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC;IAAE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC;IADxG,SAAS,CAAC,OAAO,wCAAC;gBACI,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,EAAY,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC;IAIxG;;;;;;;;;;OAUG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAG7B;IAED;;;;;;;;;;;OAWG;IACH,MAAM,IAAI,IAAI;CAIf"}
|
package/signal.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { createLogger } from '@alwatr/logger';
|
|
2
|
-
import {
|
|
2
|
+
import { _getSignalObject, _removeSignalListener, _setSignalProvider, _dispatchSignal, _addSignalListener } from './core';
|
|
3
3
|
/**
|
|
4
4
|
* Signal API interface as a remote controller.
|
|
5
5
|
*/
|
|
6
6
|
export class SignalInterface {
|
|
7
7
|
constructor(signalName) {
|
|
8
8
|
this._logger = createLogger(`signal<${signalName}>`);
|
|
9
|
-
this._signal =
|
|
9
|
+
this._signal = _getSignalObject(signalName);
|
|
10
|
+
this._requestSignal = _getSignalObject(`request-${signalName}`);
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
13
|
* Get signal name.
|
|
@@ -87,7 +88,7 @@ export class SignalInterface {
|
|
|
87
88
|
delete this._signal.value;
|
|
88
89
|
}
|
|
89
90
|
/**
|
|
90
|
-
*
|
|
91
|
+
* Defines the provider of the signal that will be called when the signal requested (addRequestSignalListener).
|
|
91
92
|
*
|
|
92
93
|
* Example:
|
|
93
94
|
*
|
|
@@ -106,9 +107,9 @@ export class SignalInterface {
|
|
|
106
107
|
*/
|
|
107
108
|
setProvider(signalProvider, options) {
|
|
108
109
|
this._logger.logMethodArgs('setProvider', { options });
|
|
109
|
-
|
|
110
|
+
const listener = _setSignalProvider(this._signal, this._requestSignal, signalProvider, options);
|
|
111
|
+
return new ListenerInterface(this._requestSignal, listener);
|
|
110
112
|
}
|
|
111
|
-
// @TODO: removeProvider(signalName): void
|
|
112
113
|
/**
|
|
113
114
|
* Dispatch request signal and wait for answer (wait for new signal dispatched).
|
|
114
115
|
*
|
|
@@ -125,7 +126,7 @@ export class SignalInterface {
|
|
|
125
126
|
request(requestParam) {
|
|
126
127
|
this._logger.logMethodArgs('request', { requestParam });
|
|
127
128
|
const nextSignalValuePromise = this.getNextSignalValue();
|
|
128
|
-
_dispatchSignal(
|
|
129
|
+
_dispatchSignal(this._requestSignal, requestParam);
|
|
129
130
|
return nextSignalValuePromise;
|
|
130
131
|
}
|
|
131
132
|
/**
|
|
@@ -183,10 +184,10 @@ export class SignalInterface {
|
|
|
183
184
|
*/
|
|
184
185
|
dispatch(signalValue, options) {
|
|
185
186
|
this._logger.logMethodArgs('dispatch', { signalValue, options });
|
|
186
|
-
_dispatchSignal(this._signal
|
|
187
|
+
_dispatchSignal(this._signal, signalValue, options);
|
|
187
188
|
}
|
|
188
189
|
/**
|
|
189
|
-
*
|
|
190
|
+
* Adds a new listener to the signal.
|
|
190
191
|
*
|
|
191
192
|
* Example:
|
|
192
193
|
*
|
|
@@ -195,10 +196,10 @@ export class SignalInterface {
|
|
|
195
196
|
* const listener = contentChangeSignal.addListener((content) => console.log(content));
|
|
196
197
|
* ```
|
|
197
198
|
*/
|
|
198
|
-
addListener(
|
|
199
|
-
this._logger.logMethodArgs('addListener', {
|
|
200
|
-
const
|
|
201
|
-
return new ListenerInterface(this._signal,
|
|
199
|
+
addListener(listenerCallback, options) {
|
|
200
|
+
this._logger.logMethodArgs('addListener', { options });
|
|
201
|
+
const listener = _addSignalListener(this._signal, listenerCallback, options);
|
|
202
|
+
return new ListenerInterface(this._signal, listener);
|
|
202
203
|
}
|
|
203
204
|
}
|
|
204
205
|
/**
|
|
@@ -229,7 +230,7 @@ export class ListenerInterface {
|
|
|
229
230
|
this._listener.disabled = disabled;
|
|
230
231
|
}
|
|
231
232
|
/**
|
|
232
|
-
*
|
|
233
|
+
* Removes a listener from the signal.
|
|
233
234
|
*
|
|
234
235
|
* Example:
|
|
235
236
|
*
|
|
@@ -242,7 +243,7 @@ export class ListenerInterface {
|
|
|
242
243
|
*/
|
|
243
244
|
remove() {
|
|
244
245
|
this._logger.logMethod('remove');
|
|
245
|
-
_removeSignalListener(this._signal
|
|
246
|
+
_removeSignalListener(this._signal, this._listener.id);
|
|
246
247
|
}
|
|
247
248
|
}
|
|
248
249
|
//# sourceMappingURL=signal.js.map
|
package/signal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal.js","sourceRoot":"","sources":["src/signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"signal.js","sourceRoot":"","sources":["src/signal.ts"],"names":[],"mappings":"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"}
|
package/type.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ declare global {
|
|
|
3
3
|
* Global signals value type registry.
|
|
4
4
|
*/
|
|
5
5
|
interface AlwatrSignals {
|
|
6
|
-
readonly 'easter-egg':
|
|
6
|
+
readonly 'easter-egg': string;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Global request signal parameters types.
|
|
@@ -83,9 +83,9 @@ export declare type SignalProvider<SignalName extends keyof AlwatrRequestSignals
|
|
|
83
83
|
*/
|
|
84
84
|
export interface ListenerObject<SignalName extends keyof AlwatrSignals> {
|
|
85
85
|
/**
|
|
86
|
-
*
|
|
86
|
+
* Unique listener id
|
|
87
87
|
*/
|
|
88
|
-
id:
|
|
88
|
+
id: number;
|
|
89
89
|
/**
|
|
90
90
|
* If true, the listener will be called only once and removed automatically after first call
|
|
91
91
|
*/
|