@companion-module/base 1.5.0 → 1.5.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/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [1.5.
|
|
3
|
+
## [1.5.1](https://github.com/bitfocus/companion-module-base/compare/v1.5.0...v1.5.1) (2023-10-02)
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* use sequential ids in ipcWrapper, to ensure nanoid doesn't drain the system entropy pool ([5b5c32c](https://github.com/bitfocus/companion-module-base/commit/5b5c32cf3b9a1fe5b9b900c90d02a1970fd0a7c1))
|
|
9
|
+
|
|
10
|
+
## [1.5.0](https://github.com/bitfocus/companion-module-base/compare/v1.4.3...v1.5.0) (2023-08-27)
|
|
11
|
+
|
|
12
|
+
Requires Companion 3.1 or later
|
|
13
|
+
|
|
6
14
|
### Features
|
|
7
15
|
|
|
8
16
|
* boolean feedback invert ([#59](https://github.com/bitfocus/companion-module-base/issues/59)) ([aa28207](https://github.com/bitfocus/companion-module-base/commit/aa28207ee5f71f280a5c61d78424f9f6a03e12f9))
|
package/README.md
CHANGED
|
@@ -7,6 +7,15 @@ This module provides the base class and framework needed to write a module for [
|
|
|
7
7
|
|
|
8
8
|
In the future it will be possible to write modules in other languages, but it is not recommended as it will reduce the change of gettings other in the community to contribute features and fixes. If you interested in doing this then reach out and we can work together on creating an alternate framework for the language you are using.
|
|
9
9
|
|
|
10
|
+
## Supported versions of this library
|
|
11
|
+
|
|
12
|
+
Each version of Companion supports a limited range of versions of this library listed below. Any patch version (the third number) are not relevant for the compatibility check, so are not listed here
|
|
13
|
+
|
|
14
|
+
| Companion | Module-base |
|
|
15
|
+
|-----------|-------------|
|
|
16
|
+
| v3.0 | v1.0 - v1.4 |
|
|
17
|
+
| v3.1 | v1.0 - v1.5 |
|
|
18
|
+
|
|
10
19
|
## Getting started with a new module
|
|
11
20
|
|
|
12
21
|
To get started with creating a new module, you should start with one of the following templates. These should be kept up to date, but you should make sure all the dependencies are up to date before you begin.
|
|
@@ -14,11 +14,11 @@ interface IpcCallMessagePacket {
|
|
|
14
14
|
direction: 'call';
|
|
15
15
|
name: string;
|
|
16
16
|
payload: string;
|
|
17
|
-
callbackId:
|
|
17
|
+
callbackId: number | undefined;
|
|
18
18
|
}
|
|
19
19
|
interface IpcResponseMessagePacket {
|
|
20
20
|
direction: 'response';
|
|
21
|
-
callbackId:
|
|
21
|
+
callbackId: number;
|
|
22
22
|
success: boolean;
|
|
23
23
|
payload: string;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc-wrapper.d.ts","sourceRoot":"","sources":["../../src/host-api/ipc-wrapper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ipc-wrapper.d.ts","sourceRoot":"","sources":["../../src/host-api/ipc-wrapper.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,KAAK,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAExG,KAAK,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,KAAK,GAClF,OAAO,CAAC,IAAI,CAAC,GACb,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAEzB,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AAE7F,+BAA+B;AAC/B,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;KACrC,CAAC,IAAI,MAAM,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAA;AAED,KAAK,qBAAqB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AACnH,KAAK,qBAAqB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;AAEnH,UAAU,oBAAoB;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B;AACD,UAAU,wBAAwB;IACjC,SAAS,EAAE,UAAU,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CACf;AAQD,qBAAa,UAAU,CAAC,SAAS,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAAE,QAAQ,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;;gBASvG,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,EACjC,WAAW,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,wBAAwB,KAAK,IAAI,EAC/E,cAAc,EAAE,MAAM;IAOjB,UAAU,CAAC,CAAC,SAAS,MAAM,SAAS,EACzC,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3C,eAAe,CAAC,EAAE,MAAM,KAAK,EAC7B,OAAO,SAAI,GACT,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAgCpC,YAAY,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IASnG,eAAe,CAAC,GAAG,EAAE,oBAAoB,GAAG,wBAAwB,GAAG,IAAI;CA+E3E"}
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IpcWrapper = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const nanoid_1 = require("nanoid");
|
|
6
5
|
const util_1 = require("../util");
|
|
7
6
|
const ejson_1 = tslib_1.__importDefault(require("ejson"));
|
|
7
|
+
const MAX_CALLBACK_ID = 1 << 28;
|
|
8
8
|
class IpcWrapper {
|
|
9
9
|
#handlers;
|
|
10
10
|
#sendMessage;
|
|
11
11
|
#defaultTimeout;
|
|
12
|
-
#
|
|
12
|
+
#nextCallbackId = 1;
|
|
13
|
+
#pendingCallbacks = new Map();
|
|
13
14
|
constructor(handlers, sendMessage, defaultTimeout) {
|
|
14
15
|
this.#handlers = handlers;
|
|
15
16
|
this.#sendMessage = sendMessage;
|
|
@@ -23,8 +24,11 @@ class IpcWrapper {
|
|
|
23
24
|
callbacks.resolve = resolve;
|
|
24
25
|
callbacks.reject = reject;
|
|
25
26
|
});
|
|
26
|
-
|
|
27
|
-
this.#
|
|
27
|
+
// Reset the id when it gets really high
|
|
28
|
+
if (this.#nextCallbackId > MAX_CALLBACK_ID)
|
|
29
|
+
this.#nextCallbackId = 1;
|
|
30
|
+
const id = this.#nextCallbackId++;
|
|
31
|
+
this.#pendingCallbacks.set(id, callbacks);
|
|
28
32
|
this.#sendMessage({
|
|
29
33
|
direction: 'call',
|
|
30
34
|
name: String(name),
|
|
@@ -35,7 +39,7 @@ class IpcWrapper {
|
|
|
35
39
|
const timeoutError = new Error('Call timed out');
|
|
36
40
|
callbacks.timeout = setTimeout(() => {
|
|
37
41
|
callbacks.reject(defaultResponse ? defaultResponse() : timeoutError);
|
|
38
|
-
|
|
42
|
+
this.#pendingCallbacks.delete(id);
|
|
39
43
|
}, timeout);
|
|
40
44
|
return promise;
|
|
41
45
|
}
|
|
@@ -91,8 +95,8 @@ class IpcWrapper {
|
|
|
91
95
|
console.error(`Ipc: Response message has no callbackId`);
|
|
92
96
|
return;
|
|
93
97
|
}
|
|
94
|
-
const callbacks = this.#pendingCallbacks
|
|
95
|
-
|
|
98
|
+
const callbacks = this.#pendingCallbacks.get(msg.callbackId);
|
|
99
|
+
this.#pendingCallbacks.delete(msg.callbackId);
|
|
96
100
|
if (!callbacks) {
|
|
97
101
|
// Likely timed out, we should ignore
|
|
98
102
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipc-wrapper.js","sourceRoot":"","sources":["../../src/host-api/ipc-wrapper.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"ipc-wrapper.js","sourceRoot":"","sources":["../../src/host-api/ipc-wrapper.ts"],"names":[],"mappings":"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"}
|