@alwatr/signal 0.24.0 → 0.25.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 +8 -0
- package/core.js +10 -7
- package/core.js.map +1 -1
- package/package.json +3 -3
- package/signal.d.ts +4 -4
- package/signal.d.ts.map +1 -1
- package/signal.js.map +1 -1
- package/type.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
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.25.0](https://github.com/AliMD/alwatr/compare/v0.24.1...v0.25.0) (2022-12-07)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @alwatr/signal
|
|
9
|
+
|
|
10
|
+
## [0.24.1](https://github.com/AliMD/alwatr/compare/v0.24.0...v0.24.1) (2022-12-01)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package @alwatr/signal
|
|
13
|
+
|
|
6
14
|
# [0.24.0](https://github.com/AliMD/alwatr/compare/v0.23.0...v0.24.0) (2022-11-28)
|
|
7
15
|
|
|
8
16
|
### Bug Fixes
|
package/core.js
CHANGED
|
@@ -74,10 +74,11 @@ function __callListeners(signal) {
|
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
76
|
export function _addSignalListener(signal, listenerCallback, options = {}) {
|
|
77
|
-
|
|
78
|
-
options.
|
|
79
|
-
options.
|
|
80
|
-
options.
|
|
77
|
+
var _a, _b, _c, _d;
|
|
78
|
+
(_a = options.once) !== null && _a !== void 0 ? _a : (options.once = false);
|
|
79
|
+
(_b = options.disabled) !== null && _b !== void 0 ? _b : (options.disabled = false);
|
|
80
|
+
(_c = options.receivePrevious) !== null && _c !== void 0 ? _c : (options.receivePrevious = true);
|
|
81
|
+
(_d = options.priority) !== null && _d !== void 0 ? _d : (options.priority = false);
|
|
81
82
|
logger.logMethodArgs('_addSignalListener', { signalName: signal.name, options });
|
|
82
83
|
const listener = {
|
|
83
84
|
id: ++_lastListenerId,
|
|
@@ -155,7 +156,8 @@ export function _removeSignalListener(signal, listenerId) {
|
|
|
155
156
|
* _dispatchSignal(signal, content);
|
|
156
157
|
*/
|
|
157
158
|
export function _dispatchSignal(signal, value, options = {}) {
|
|
158
|
-
|
|
159
|
+
var _a;
|
|
160
|
+
(_a = options.debounce) !== null && _a !== void 0 ? _a : (options.debounce = true);
|
|
159
161
|
logger.logMethodArgs('dispatchSignal', { signalName: signal.name, value, options });
|
|
160
162
|
// set value before check signal.debounced for act like throttle (call listeners with last dispatch value).
|
|
161
163
|
signal.value = value;
|
|
@@ -195,8 +197,9 @@ export function _dispatchSignal(signal, value, options = {}) {
|
|
|
195
197
|
* ```
|
|
196
198
|
*/
|
|
197
199
|
export function _setSignalProvider(signal, requestSignal, signalProvider, options = {}) {
|
|
198
|
-
|
|
199
|
-
options.
|
|
200
|
+
var _a, _b;
|
|
201
|
+
(_a = options.debounce) !== null && _a !== void 0 ? _a : (options.debounce = true);
|
|
202
|
+
(_b = options.receivePrevious) !== null && _b !== void 0 ? _b : (options.receivePrevious = true);
|
|
200
203
|
logger.logMethodArgs('_setSignalProvider', { signal: signal.name, requestSignal: requestSignal.name, options });
|
|
201
204
|
if (requestSignal.listenerList.length > 0) {
|
|
202
205
|
logger.accident('_setSignalProvider', 'another_signal_provider_exist', 'Another provider exist! It will be removed to fix the problem', {
|
package/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["src/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["src/core.ts"],"names":[],"mappings":"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","sourcesContent":["import {createLogger, alwatrRegisteredList} from '@alwatr/logger';\n\nimport type {\n DispatchOptions,\n ListenerCallback,\n ListenerObject,\n ListenerOptions,\n SignalObject,\n SignalProvider,\n SignalProviderOptions,\n SignalStack,\n} from './type.js';\n\nexport const logger = createLogger('alwatr/signal');\n\nalwatrRegisteredList.push({\n name: '@alwatr/signal',\n version: '{{ALWATR_VERSION}}',\n});\n\n/**\n * Listener `id`\n */\nlet _lastListenerId = 0;\n\n/**\n * Signal stack database.\n */\nconst _signalStack: SignalStack = {};\n\n/**\n * Get signal object by name, If not available, it will create a new signal with default options.\n *\n * Example:\n *\n * ```ts\n * const signal = _getSignalObject('content-change');\n * signal.disabled = true;\n * ```\n */\nexport function _getSignalObject<SignalName extends keyof AlwatrSignals>(\n signalName: SignalName,\n): SignalObject<SignalName> {\n if (!_signalStack[signalName]) {\n _signalStack[signalName] = {\n name: signalName,\n disabled: false,\n debounced: false,\n listenerList: [],\n };\n }\n return _signalStack[signalName] as unknown as SignalObject<SignalName>;\n}\n\nfunction __callListeners<SignalName extends keyof AlwatrSignals>(signal: SignalObject<SignalName>): void {\n logger.logMethodArgs('_callListeners', {signalName: signal.name, signalValue: signal.value});\n if (signal.value === undefined) {\n // null is a valid value for signal.\n logger.accident('_callListeners', 'no_signal_value', 'signal must have a value', {\n signalName: signal.name,\n });\n return;\n }\n\n for (const listener of signal.listenerList) {\n if (listener.disabled) continue;\n try {\n const ret = listener.callback(signal.value);\n if (ret instanceof Promise) {\n ret.catch((err) =>\n logger.error('_callListeners', 'call_listener_failed', (err as Error).stack || err, {\n signalName: signal.name,\n }),\n );\n }\n }\n catch (err) {\n logger.error('_callListeners', 'call_listener_failed', (err as Error).stack || err, {\n signalName: signal.name,\n });\n }\n }\n\n signal.listenerList\n .filter((listener) => !listener.disabled && listener.once)\n .forEach((listener) => _removeSignalListener(signal, listener.id));\n}\n\n/**\n * Adds a new listener to the signal.\n *\n * Example:\n *\n * ```ts\n * const signal = _getSignalObject('content-change')\n * const listener = _addSignalListener(signal, (content) => console.log(content));\n * ```\n */\nexport function _addSignalListener<SignalName extends keyof AlwatrSignals>(\n signal: SignalObject<SignalName>,\n listenerCallback: ListenerCallback<SignalName>,\n options: ListenerOptions = {},\n): ListenerObject<SignalName> {\n options.once ??= false;\n options.disabled ??= false;\n options.receivePrevious ??= true;\n options.priority ??= false;\n\n logger.logMethodArgs('_addSignalListener', {signalName: signal.name, options});\n\n const listener: ListenerObject<SignalName> = {\n id: ++_lastListenerId,\n once: options.once,\n disabled: options.disabled,\n callback: listenerCallback,\n };\n\n let callbackCalled = false;\n\n // Run callback for old dispatch signal\n if (signal.value !== undefined) {\n // null is a valid value for signal.\n if (options.receivePrevious === 'Immediate') {\n logger.incident('_addSignalListener', 'call_signal_callback', 'run callback with previous signal value', {\n signalName: signal.name,\n mode: 'Immediate',\n });\n try {\n listenerCallback(signal.value);\n }\n catch (err) {\n logger.error('_addSignalListener', 'call_signal_callback_failed', (err as Error).stack || err, {\n signalName: signal.name,\n });\n }\n callbackCalled = true;\n }\n else if (options.receivePrevious === true) {\n requestAnimationFrame(() => {\n if (signal.value !== undefined) {\n // null is a valid value for signal.\n logger.incident('_addSignalListener', 'call_signal_callback', 'run callback with previous signal value', {\n signalName: signal.name,\n mode: 'Delay',\n });\n listenerCallback(signal.value);\n }\n });\n callbackCalled = true; // must be outside of requestAnimationFrame.\n }\n }\n\n // if once then must remove listener after fist callback called! then why push it to listenerList?!\n if (!(options.once === true && callbackCalled === true)) {\n if (options.priority === true) {\n signal.listenerList.unshift(listener);\n }\n else {\n signal.listenerList.push(listener);\n }\n }\n\n return listener;\n}\n\n/**\n * Removes a listener from the signal.\n *\n * Example:\n *\n * ```ts\n * const signal = _getSignalObject('content-change')\n * const listener = _addSignalListener(signal, ...);\n * _removeSignalListener(signal, listener);\n * ```\n */\nexport function _removeSignalListener<SignalName extends keyof AlwatrSignals>(\n signal: SignalObject<SignalName>,\n listenerId: number,\n): void {\n logger.logMethodArgs('_removeSignalListener', {signalName: signal.name, listenerId});\n const listenerIndex = signal.listenerList.findIndex((_listener) => _listener.id === listenerId);\n if (listenerIndex !== -1) {\n signal.listenerList.splice(listenerIndex, 1);\n }\n}\n\n/**\n * Dispatch (send) signal to all listeners.\n *\n * @example\n * const signal = _getSignalObject('content-change')\n * _dispatchSignal(signal, content);\n */\nexport function _dispatchSignal<SignalName extends keyof AlwatrSignals>(\n signal: SignalObject<SignalName>,\n value: AlwatrSignals[SignalName],\n options: DispatchOptions = {},\n): void {\n options.debounce ??= true;\n\n logger.logMethodArgs('dispatchSignal', {signalName: signal.name, value, options});\n\n // set value before check signal.debounced for act like throttle (call listeners with last dispatch value).\n signal.value = value;\n\n if (signal.disabled) return; // signal is disabled.\n if (options.debounce === true && signal.debounced === true) return; // last dispatch in progress.\n\n if (options.debounce !== true) {\n // call listeners immediately.\n __callListeners(signal);\n return;\n }\n // else: call listeners in next frame.\n signal.debounced = true;\n requestAnimationFrame(() => {\n __callListeners(signal);\n signal.debounced = false;\n });\n}\n\n/**\n * Defines the provider of the signal that will be called when the signal requested (addRequestSignalListener).\n *\n * Example:\n *\n * ```ts\n * const signal = _getSignalObject('content-change');\n * const requestSignal = _getSignalObject('request-content-change');\n * _setSignalProvider(signal, requestSignal, async (requestParam) => {\n * const content = await fetchNewContent(requestParam);\n * if (content != null) {\n * return content; // dispatchSignal('content-change', content);\n * }\n * else {\n * dispatchSignal('content-not-found');\n * }\n * }\n * ```\n */\nexport function _setSignalProvider<SignalName extends keyof AlwatrSignals>(\n signal: SignalObject<SignalName>,\n requestSignal: SignalObject<SignalName>,\n signalProvider: SignalProvider<SignalName>,\n options: SignalProviderOptions = {},\n): ListenerObject<SignalName> {\n options.debounce ??= true;\n options.receivePrevious ??= true;\n\n logger.logMethodArgs('_setSignalProvider', {signal: signal.name, requestSignal: requestSignal.name, options});\n\n if (requestSignal.listenerList.length > 0) {\n logger.accident(\n '_setSignalProvider',\n 'another_signal_provider_exist',\n 'Another provider exist! It will be removed to fix the problem',\n {\n signalName: signal.name,\n },\n );\n requestSignal.listenerList = [];\n }\n\n const _callback = async (requestParam: AlwatrRequestSignals[SignalName]): Promise<void> => {\n const signalValue = await signalProvider(requestParam);\n if (signalValue !== undefined) {\n // null is a valid value for signal.\n _dispatchSignal(signal, signalValue, {debounce: options.debounce});\n }\n };\n\n return _addSignalListener(requestSignal, _callback as unknown as ListenerCallback<SignalName>, {\n receivePrevious: options.receivePrevious,\n });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alwatr/signal",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.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.25.0",
|
|
36
36
|
"tslib": "~2.4.1"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "03cf3c146f075309527bcf1e762a589696d0ce1d"
|
|
39
39
|
}
|
package/signal.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ import type { ListenerOptions, DispatchOptions, ListenerCallback, SignalProvider
|
|
|
3
3
|
* Signal API interface as a remote controller.
|
|
4
4
|
*/
|
|
5
5
|
export declare class SignalInterface<SignalName extends keyof AlwatrSignals> {
|
|
6
|
-
protected _signal:
|
|
7
|
-
protected _requestSignal:
|
|
8
|
-
protected _logger:
|
|
6
|
+
protected _signal: any;
|
|
7
|
+
protected _requestSignal: any;
|
|
8
|
+
protected _logger: any;
|
|
9
9
|
constructor(signalName: SignalName);
|
|
10
10
|
/**
|
|
11
11
|
* Get signal name.
|
|
@@ -159,7 +159,7 @@ export declare class SignalInterface<SignalName extends keyof AlwatrSignals> {
|
|
|
159
159
|
export declare class ListenerInterface<SignalName extends keyof AlwatrSignals> {
|
|
160
160
|
protected _signal: SignalObject<SignalName>;
|
|
161
161
|
protected _listener: ListenerObject<SignalName>;
|
|
162
|
-
protected _logger:
|
|
162
|
+
protected _logger: any;
|
|
163
163
|
constructor(_signal: SignalObject<SignalName>, _listener: ListenerObject<SignalName>);
|
|
164
164
|
/**
|
|
165
165
|
* Disable the listener, not called anymore.
|
package/signal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["src/signal.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB;;GAEG;AACH,qBAAa,eAAe,CAAC,UAAU,SAAS,MAAM,aAAa;IACjE,SAAS,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["src/signal.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB;;GAEG;AACH,qBAAa,eAAe,CAAC,UAAU,SAAS,MAAM,aAAa;IACjE,SAAS,CAAC,OAAO,MAAC;IAClB,SAAS,CAAC,cAAc,MAAC;IACzB,SAAS,CAAC,OAAO,MAAC;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;IAUpD;;;;;;;;;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,MAAC;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.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,EACL,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAYnB;;GAEG;AACH,MAAM,OAAO,eAAe;IAK1B,YAAY,UAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,UAAU,UAAU,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,WAAW,UAAU,EAA2B,CAAC,CAAC;IAC3F,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,IAAI,UAAU;QACZ,OAAO,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;IACjC,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IACD,IAAI,QAAQ,CAAC,QAAiB;QAC5B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM;QACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CACP,cAA0C,EAC1C,OAA+B;QAEjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,EAAC,OAAO,EAAC,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAChG,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,YAA8C;QACpD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,EAAC,YAAY,EAAC,CAAC,CAAC;QACtD,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzD,eAAe,CACX,IAAI,CAAC,cAAc,EACrB,YAAoD,CACrD,CAAC;QACF,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED;;;;;;;;;;OAUG;IACH,kBAAkB;QAChB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBACxB,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,IAAI;gBACd,eAAe,EAAE,KAAK;aACvB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc;QACZ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;YACpC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC5C;aACI;YACH,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAClC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAsC,EAAE,OAAyB;QACxE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,EAAC,WAAW,EAAE,OAAO,EAAC,CAAC,CAAC;QAC/D,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;OASG;IACH,WAAW,CACP,gBAA8C,EAC9C,OAAyB;QAE3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,EAAC,OAAO,EAAC,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC7E,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAE5B,YAAsB,OAAiC,EAAY,SAAqC;QAAlF,YAAO,GAAP,OAAO,CAA0B;QAAY,cAAS,GAAT,SAAS,CAA4B;QACtG,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;OAUG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACjC,CAAC;IACD,IAAI,QAAQ,CAAC,QAAiB;QAC5B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACrC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM;QACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACjC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"signal.js","sourceRoot":"","sources":["src/signal.ts"],"names":[],"mappings":"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","sourcesContent":["import {createLogger} from '@alwatr/logger';\n\nimport {\n _getSignalObject,\n _removeSignalListener,\n _setSignalProvider,\n _dispatchSignal,\n _addSignalListener,\n} from './core.js';\n\nimport type {\n ListenerOptions,\n DispatchOptions,\n ListenerCallback,\n SignalProvider,\n SignalProviderOptions,\n ListenerObject,\n SignalObject,\n} from './type.js';\n\n/**\n * Signal API interface as a remote controller.\n */\nexport class SignalInterface<SignalName extends keyof AlwatrSignals> {\n protected _signal;\n protected _requestSignal;\n protected _logger;\n\n constructor(signalName: SignalName) {\n this._logger = createLogger(`signal<${signalName}>`);\n this._signal = _getSignalObject(signalName);\n this._requestSignal = _getSignalObject(`request-${signalName}` as unknown as SignalName);\n }\n\n /**\n * Get signal name.\n *\n * Example:\n *\n * ```ts\n * console.log(contentChangeSignal.name);\n * ```\n */\n get name(): SignalName {\n return this._signal.name;\n }\n\n /**\n * Get last dispatched signal value or undefined.\n *\n * Example:\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * if (contentChangeSignal.dispatched) {\n * const content = contentChangeSignal.value!;\n * ...\n * }\n * ```\n */\n get value(): AlwatrSignals[SignalName] | undefined {\n return this._signal.value;\n }\n\n /**\n * Check signal dispatched before or not!\n *\n * Example\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * if(contentChangeSignal.dispatched) {\n * // contentChangeSignal.value exist.\n * }\n * ```\n */\n get dispatched(): boolean {\n return 'value' in this._signal;\n }\n\n /**\n * Disable signal, all dispatch's ignored (just value updated) and no more listeners will be called.\n *\n * Example:\n *\n * ```ts\n * contentChangeSignal.disabled = true;\n * ```\n */\n get disabled(): boolean {\n return this._signal.disabled;\n }\n set disabled(disabled: boolean) {\n this._logger.logProperty('disabled', disabled);\n this._signal.disabled = disabled;\n }\n\n /**\n * Expire the signal by clear last dispatched value.\n *\n * dispatched and receivePrevious etc not work until new signal.\n *\n * Example:\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * contentChangeSignal.dispatched; // true\n * contentChangeSignal.expire();\n * contentChangeSignal.value; // undefined\n * contentChangeSignal.dispatched; // false\n * ```\n */\n expire(): void {\n this._logger.logMethod('expire');\n delete this._signal.value;\n }\n\n /**\n * Defines the provider of the signal that will be called when the signal requested (addRequestSignalListener).\n *\n * Example:\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * contentChangeSignal.setProvider(async (requestParam) => {\n * const content = await fetchNewContent(requestParam);\n * if (content != null) {\n * return content; // Dispatch signal 'content-change' with content.\n * }\n * else {\n * // dispatch new signal: 'content-not-found'\n * }\n * });\n * ```\n */\n setProvider(\n signalProvider: SignalProvider<SignalName>,\n options?: SignalProviderOptions,\n ): ListenerInterface<SignalName> {\n this._logger.logMethodArgs('setProvider', {options});\n const listener = _setSignalProvider(this._signal, this._requestSignal, signalProvider, options);\n return new ListenerInterface(this._requestSignal, listener);\n }\n\n /**\n * Dispatch request signal and wait for answer (wait for new signal dispatched).\n *\n * Resolved with signal value when new signal received (getNextSignalValue).\n *\n * Example:\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * // dispatch request signal and wait for answer (wait for NEW signal).\n * const newContent = await contentChangeSignal.request({foo: 'bar'});\n * ```\n */\n request(requestParam: AlwatrRequestSignals[SignalName]): Promise<AlwatrSignals[SignalName]> {\n this._logger.logMethodArgs('request', {requestParam});\n const nextSignalValuePromise = this.getNextSignalValue();\n _dispatchSignal(\n this._requestSignal,\n requestParam as unknown as AlwatrSignals[SignalName], // mastmalize to avoid type error\n );\n return nextSignalValuePromise;\n }\n\n /**\n * Resolved with signal value when new signal received.\n *\n * Example:\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * // Wait for NEW signal received.\n * const newContent = await contentChangeSignal.getNextSignalValue();\n * ```\n */\n getNextSignalValue(): Promise<AlwatrSignals[SignalName]> {\n this._logger.logMethod('getNextSignalValue');\n return new Promise((resolve) => {\n this.addListener(resolve, {\n once: true,\n priority: true,\n receivePrevious: false,\n });\n });\n }\n\n /**\n * Resolved with signal value when signal is ready.\n *\n * Get signal value from last dispatched signal (if any) or wait for new signal received.\n *\n * Example:\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * // get signal value from last dispatched signal (if any) or wait new signal received.\n * const content = await contentChangeSignal.getSignalValue();\n * ```\n */\n getSignalValue(): Promise<AlwatrSignals[SignalName]> {\n this._logger.logMethod('getSignalValue');\n if (this._signal.value !== undefined) {\n return Promise.resolve(this._signal.value);\n }\n else {\n return this.getNextSignalValue();\n }\n }\n\n /**\n * Dispatch signal to all listeners.\n *\n * Example:\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * contentChangeSignal.dispatch(content);\n * ```\n */\n dispatch(signalValue: AlwatrSignals[SignalName], options?: DispatchOptions): void {\n this._logger.logMethodArgs('dispatch', {signalValue, options});\n _dispatchSignal(this._signal, signalValue, options);\n }\n\n /**\n * Adds a new listener to the signal.\n *\n * Example:\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * const listener = contentChangeSignal.addListener((content) => console.log(content));\n * ```\n */\n addListener(\n listenerCallback: ListenerCallback<SignalName>,\n options?: ListenerOptions,\n ): ListenerInterface<SignalName> {\n this._logger.logMethodArgs('addListener', {options});\n const listener = _addSignalListener(this._signal, listenerCallback, options);\n return new ListenerInterface(this._signal, listener);\n }\n}\n\n/**\n * Signal Listener API interface as a remote controller.\n */\nexport class ListenerInterface<SignalName extends keyof AlwatrSignals> {\n protected _logger;\n constructor(protected _signal: SignalObject<SignalName>, protected _listener: ListenerObject<SignalName>) {\n this._logger = createLogger('Listener of ' + _signal.name);\n }\n\n /**\n * Disable the listener, not called anymore.\n *\n * Example:\n *\n * ```ts\n * const listener = contentChangeSignal.addListener((content) => console.log(content));\n * ...\n * listener.disabled = true;\n * ```\n */\n get disabled(): boolean {\n return this._listener.disabled;\n }\n set disabled(disabled: boolean) {\n this._logger.logProperty('disabled', disabled);\n this._listener.disabled = disabled;\n }\n\n /**\n * Removes a listener from the signal.\n *\n * Example:\n *\n * ```ts\n * const contentChangeSignal = new SignalInterface('content-change');\n * const listener = contentChangeSignal.addListener((content) => console.log(content));\n * ...\n * listener.remove();\n * ```\n */\n remove(): void {\n this._logger.logMethod('remove');\n _removeSignalListener(this._signal, this._listener.id);\n }\n}\n"]}
|
package/type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.js","sourceRoot":"","sources":["src/type.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["src/type.ts"],"names":[],"mappings":"","sourcesContent":["declare global {\n /**\n * Global signals value type registry.\n */\n interface AlwatrSignals {\n readonly 'easter-egg': string;\n }\n\n /**\n * Global request signal parameters types.\n */\n interface AlwatrRequestSignals {\n readonly 'easter-egg': number;\n }\n}\n\n/**\n * addSignalListener options type\n */\nexport interface ListenerOptions {\n /**\n * If true, the listener will be called only once.\n * @default false\n */\n once?: boolean;\n\n /**\n * If true, the listener will be called before other.\n * @default false\n */\n priority?: boolean;\n\n /**\n * If true, the listener will be defined disabled by default.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Calling this listener (callback) with preview signal value (if dispatched before).\n * If Immediate, the listener will be called immediately without any debounce for preview signal.\n *\n * @default true\n */\n receivePrevious?: boolean | 'Immediate';\n}\n\n/**\n * dispatchSignal options type\n */\nexport interface DispatchOptions {\n /**\n * If true, the dispatch will be send after animation frame debounce.\n * If false, every signal is matter and count.\n * tips: debounce work like throttle this means listeners call with last dispatch value.\n *\n * @default true\n */\n debounce?: boolean;\n}\n\nexport interface SignalProviderOptions {\n /**\n * Calling signal provider (request signal callback) with preview signal value (if dispatched before).\n * If Immediate, the listener will be called immediately without any debounce for preview signal.\n *\n * @default true\n */\n receivePrevious?: boolean | 'Immediate';\n\n /**\n * If true, the dispatch will be send after animation frame debounce.\n * If false, every signal is matter and count.\n * tips: debounce work like throttle this means listeners call with last dispatch value.\n *\n * @default true\n */\n debounce?: boolean;\n}\n\n/**\n * Signal listeners callback function type.\n */\nexport type ListenerCallback<SignalName extends keyof AlwatrSignals> = (\n signalValue: AlwatrSignals[SignalName]\n) => void | Promise<void>;\n\n/**\n * Signal provider function type used to setSignalProvider.\n */\nexport type SignalProvider<SignalName extends keyof AlwatrRequestSignals> = (\n requestParam: AlwatrRequestSignals[SignalName]\n) => AlwatrSignals[SignalName] | void | Promise<AlwatrSignals[SignalName] | void>;\n\n/**\n * Signal listeners object in database.\n */\nexport interface ListenerObject<SignalName extends keyof AlwatrSignals> {\n /**\n * Unique listener id\n */\n id: number;\n\n /**\n * If true, the listener will be called only once and removed automatically after first call\n */\n once: boolean;\n\n /**\n * If true, the listener will be disabled.\n */\n disabled: boolean;\n\n callback: ListenerCallback<SignalName>;\n}\n\n/**\n * Signal object in database.\n */\nexport interface SignalObject<SignalName extends keyof AlwatrSignals> {\n /**\n * Signal name for direct access.\n */\n name: SignalName;\n\n /**\n * Last dispatched value.\n */\n value?: AlwatrSignals[SignalName];\n\n /**\n * If true, the signal is disabled.\n */\n disabled: boolean;\n\n /**\n * Dispatches debounced (delayed).\n * Internal use case for debounce dispatch signal.\n */\n debounced: boolean;\n\n /**\n * Signal listeners list.\n */\n listenerList: Array<ListenerObject<SignalName>>;\n}\n\n/**\n * Signal stack database.\n */\nexport type SignalStack = {\n [SignalName in keyof AlwatrSignals]?: SignalObject<SignalName>;\n};\n"]}
|