@companion-module/base 0.0.3

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.
Files changed (95) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +14 -0
  3. package/dist/common/osc.d.ts +17 -0
  4. package/dist/common/osc.d.ts.map +1 -0
  5. package/dist/common/osc.js +7 -0
  6. package/dist/common/osc.js.map +1 -0
  7. package/dist/entrypoint.d.ts +12 -0
  8. package/dist/entrypoint.d.ts.map +1 -0
  9. package/dist/entrypoint.js +131 -0
  10. package/dist/entrypoint.js.map +1 -0
  11. package/dist/host-api/api.d.ts +212 -0
  12. package/dist/host-api/api.d.ts.map +1 -0
  13. package/dist/host-api/api.js +9 -0
  14. package/dist/host-api/api.js.map +1 -0
  15. package/dist/host-api/versions.d.ts +7 -0
  16. package/dist/host-api/versions.d.ts.map +1 -0
  17. package/dist/host-api/versions.js +5 -0
  18. package/dist/host-api/versions.js.map +1 -0
  19. package/dist/index.d.ts +6 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +15 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/instance-base.d.ts +12 -0
  24. package/dist/instance-base.d.ts.map +1 -0
  25. package/dist/instance-base.js +3 -0
  26. package/dist/instance-base.js.map +1 -0
  27. package/dist/internal/base.d.ts +24 -0
  28. package/dist/internal/base.d.ts.map +1 -0
  29. package/dist/internal/base.js +57 -0
  30. package/dist/internal/base.js.map +1 -0
  31. package/dist/internal/feedback.d.ts +5 -0
  32. package/dist/internal/feedback.d.ts.map +1 -0
  33. package/dist/internal/feedback.js +34 -0
  34. package/dist/internal/feedback.js.map +1 -0
  35. package/dist/internal/upgrade.d.ts +18 -0
  36. package/dist/internal/upgrade.d.ts.map +1 -0
  37. package/dist/internal/upgrade.js +126 -0
  38. package/dist/internal/upgrade.js.map +1 -0
  39. package/dist/manifest.d.ts +42 -0
  40. package/dist/manifest.d.ts.map +1 -0
  41. package/dist/manifest.js +9 -0
  42. package/dist/manifest.js.map +1 -0
  43. package/dist/module-api/action.d.ts +59 -0
  44. package/dist/module-api/action.d.ts.map +1 -0
  45. package/dist/module-api/action.js +3 -0
  46. package/dist/module-api/action.js.map +1 -0
  47. package/dist/module-api/base.d.ts +137 -0
  48. package/dist/module-api/base.d.ts.map +1 -0
  49. package/dist/module-api/base.js +613 -0
  50. package/dist/module-api/base.js.map +1 -0
  51. package/dist/module-api/config.d.ts +12 -0
  52. package/dist/module-api/config.d.ts.map +1 -0
  53. package/dist/module-api/config.js +3 -0
  54. package/dist/module-api/config.js.map +1 -0
  55. package/dist/module-api/enums.d.ts +21 -0
  56. package/dist/module-api/enums.d.ts.map +1 -0
  57. package/dist/module-api/enums.js +20 -0
  58. package/dist/module-api/enums.js.map +1 -0
  59. package/dist/module-api/feedback.d.ts +106 -0
  60. package/dist/module-api/feedback.d.ts.map +1 -0
  61. package/dist/module-api/feedback.js +3 -0
  62. package/dist/module-api/feedback.js.map +1 -0
  63. package/dist/module-api/http.d.ts +17 -0
  64. package/dist/module-api/http.d.ts.map +1 -0
  65. package/dist/module-api/http.js +3 -0
  66. package/dist/module-api/http.js.map +1 -0
  67. package/dist/module-api/index.d.ts +10 -0
  68. package/dist/module-api/index.d.ts.map +1 -0
  69. package/dist/module-api/index.js +13 -0
  70. package/dist/module-api/index.js.map +1 -0
  71. package/dist/module-api/input.d.ts +136 -0
  72. package/dist/module-api/input.d.ts.map +1 -0
  73. package/dist/module-api/input.js +3 -0
  74. package/dist/module-api/input.js.map +1 -0
  75. package/dist/module-api/preset.d.ts +102 -0
  76. package/dist/module-api/preset.d.ts.map +1 -0
  77. package/dist/module-api/preset.js +3 -0
  78. package/dist/module-api/preset.js.map +1 -0
  79. package/dist/module-api/style.d.ts +20 -0
  80. package/dist/module-api/style.d.ts.map +1 -0
  81. package/dist/module-api/style.js +3 -0
  82. package/dist/module-api/style.js.map +1 -0
  83. package/dist/module-api/upgrade.d.ts +95 -0
  84. package/dist/module-api/upgrade.d.ts.map +1 -0
  85. package/dist/module-api/upgrade.js +56 -0
  86. package/dist/module-api/upgrade.js.map +1 -0
  87. package/dist/module-api/variable.d.ts +18 -0
  88. package/dist/module-api/variable.d.ts.map +1 -0
  89. package/dist/module-api/variable.js +3 -0
  90. package/dist/module-api/variable.js.map +1 -0
  91. package/dist/util.d.ts +12 -0
  92. package/dist/util.d.ts.map +1 -0
  93. package/dist/util.js +37 -0
  94. package/dist/util.js.map +1 -0
  95. package/package.json +32 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,27 @@
1
+ # Changelog
2
+
3
+ ## [0.0.3](https://github.com/bitfocus/companion-module-base/compare/v0.0.2...v0.0.3) (2022-07-10)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * another attempt at npm ([3d7738b](https://github.com/bitfocus/companion-module-base/commit/3d7738b77bdf6ced282cd043428e3ccde66851ef))
9
+
10
+ ## [0.0.2](https://github.com/bitfocus/companion-module-base/compare/v0.0.1...v0.0.2) (2022-07-10)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * npm-publish workflow ([0147cd2](https://github.com/bitfocus/companion-module-base/commit/0147cd2f8c30b22edf287dba2f3038f88b522c34))
16
+
17
+ ## 0.0.1 (2022-07-10)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * test ([8319a36](https://github.com/bitfocus/companion-module-base/commit/8319a362248d93c42e027c7ca431ddf10b1ca931))
23
+
24
+
25
+ ### Miscellaneous Chores
26
+
27
+ * add warning to readme ([dd30e25](https://github.com/bitfocus/companion-module-base/commit/dd30e25ffa4c9a5c63c5be8184cf7e1efad63932))
package/README.md ADDED
@@ -0,0 +1,14 @@
1
+ # @companion-module/base
2
+
3
+ If you have found this without being directed here, then this is not for you.
4
+ Companion 3.0 is not ready for users yet, so you should not be targetting a module to it yet. We will make some announcements when we are ready
5
+
6
+ This module provides the base class and framework needed to write a module for [Companion 3.0](https://github.com/bitfocus/companion) and later in NodeJS.
7
+
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
+
10
+ ## Getting started with a new module
11
+
12
+ 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.
13
+
14
+ - TODO
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Warning: these types are used in various stable apis.
3
+ * BE VERY CAREFUL WHEN MAKING CHANGES
4
+ */
5
+ export declare type OSCArgument = number | string | Uint8Array;
6
+ export declare type OSCMetaArgument = {
7
+ type: 'i' | 'f';
8
+ value: number;
9
+ } | {
10
+ type: 's';
11
+ value: string;
12
+ } | {
13
+ type: 'b';
14
+ value: Uint8Array;
15
+ };
16
+ export declare type OSCSomeArguments = OSCArgument | Array<OSCArgument> | OSCMetaArgument | Array<OSCMetaArgument>;
17
+ //# sourceMappingURL=osc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osc.d.ts","sourceRoot":"","sources":["../../src/common/osc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAY,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;AACtD,oBAAY,eAAe,GACxB;IAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAA;AACnC,oBAAY,gBAAgB,GAAG,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Warning: these types are used in various stable apis.
4
+ * BE VERY CAREFUL WHEN MAKING CHANGES
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=osc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osc.js","sourceRoot":"","sources":["../../src/common/osc.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,12 @@
1
+ import { CompanionStaticUpgradeScript } from './module-api/upgrade.js';
2
+ import { InstanceBase } from './module-api/base.js';
3
+ import '@sentry/tracing';
4
+ export declare type InstanceConstructor<TConfig> = new (internal: unknown) => InstanceBase<TConfig>;
5
+ /**
6
+ * Setup the module for execution
7
+ * This should be called once per-module, to register the class that should be executed
8
+ * @param factory The class for the module
9
+ * @param upgradeScripts Upgrade scripts
10
+ */
11
+ export declare function runEntrypoint<TConfig>(factory: InstanceConstructor<TConfig>, upgradeScripts: CompanionStaticUpgradeScript<TConfig>[]): void;
12
+ //# sourceMappingURL=entrypoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../src/entrypoint.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAInD,OAAO,iBAAiB,CAAA;AAIxB,oBAAY,mBAAmB,CAAC,OAAO,IAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,YAAY,CAAC,OAAO,CAAC,CAAA;AAe3F;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EACpC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,EACrC,cAAc,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAE,GACrD,IAAI,CAiHN"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runEntrypoint = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const SocketIOClient = tslib_1.__importStar(require("socket.io-client"));
6
+ const p_timeout_1 = tslib_1.__importDefault(require("p-timeout"));
7
+ const versions_js_1 = require("./host-api/versions.js");
8
+ const promises_1 = tslib_1.__importDefault(require("fs/promises"));
9
+ const util_js_1 = require("./util.js");
10
+ const node_1 = require("@sentry/node");
11
+ require("@sentry/tracing");
12
+ let hasEntrypoint = false;
13
+ // async function readFileUrl(url: URL): Promise<string> {
14
+ // // Hack to make json files be loadable after being inlined by webpack
15
+ // const prefix = 'application/json;base64,'
16
+ // if (url.pathname.startsWith(prefix)) {
17
+ // const base64 = url.pathname.substring(prefix.length)
18
+ // return Buffer.from(base64, 'base64').toString()
19
+ // }
20
+ // // Fallback to reading from disk
21
+ // const buf = await fs.readFile(url)
22
+ // return buf.toString()
23
+ // }
24
+ /**
25
+ * Setup the module for execution
26
+ * This should be called once per-module, to register the class that should be executed
27
+ * @param factory The class for the module
28
+ * @param upgradeScripts Upgrade scripts
29
+ */
30
+ function runEntrypoint(factory, upgradeScripts) {
31
+ Promise.resolve().then(async () => {
32
+ try {
33
+ const pkgJsonStr = (await promises_1.default.readFile('../package.json')).toString();
34
+ const pkgJson = JSON.parse(pkgJsonStr);
35
+ if (!pkgJson || pkgJson.name !== '@companion-module/base')
36
+ throw new Error('Failed to find the package.json for @companion-module/base');
37
+ if (!pkgJson.version)
38
+ throw new Error('Missing version field in the package.json for @companion-module/base');
39
+ // Ensure only called once per module
40
+ if (hasEntrypoint)
41
+ throw new Error(`runEntrypoint can only be called once`);
42
+ hasEntrypoint = true;
43
+ const manifestPath = process.env.MODULE_MANIFEST;
44
+ if (!manifestPath)
45
+ throw new Error('Module initialise is missing MODULE_MANIFEST');
46
+ // check manifest api field against apiVersion
47
+ const manifestBlob = await promises_1.default.readFile(manifestPath);
48
+ const manifestJson = JSON.parse(manifestBlob.toString());
49
+ if (manifestJson.runtime?.api !== versions_js_1.HostApiSocketIo)
50
+ throw new Error(`Module manifest 'api' mismatch`);
51
+ console.log(`Starting up module class: ${factory.name}`);
52
+ const connectionId = process.env.CONNECTION_ID;
53
+ if (typeof connectionId !== 'string' || !connectionId)
54
+ throw new Error('Module initialise is missing CONNECTION_ID');
55
+ const socketIoUrl = process.env.SOCKETIO_URL;
56
+ if (typeof socketIoUrl !== 'string' || !socketIoUrl)
57
+ throw new Error('Module initialise is missing SOCKETIO_URL');
58
+ const socketIoToken = process.env.SOCKETIO_TOKEN;
59
+ if (typeof socketIoToken !== 'string' || !socketIoToken)
60
+ throw new Error('Module initialise is missing SOCKETIO_TOKEN');
61
+ // Allow the DSN to be provided as an env variable
62
+ const sentryDsn = process.env.SENTRY_DSN;
63
+ const sentryUserId = process.env.SENTRY_USERID;
64
+ const sentryCompanionVersion = process.env.SENTRY_COMPANION_VERSION;
65
+ if (sentryDsn && sentryUserId && sentryDsn.substring(0, 8) == 'https://') {
66
+ console.log('Sentry enabled');
67
+ (0, node_1.init)({
68
+ dsn: sentryDsn,
69
+ release: `${pkgJson.name}@${pkgJson.version}`,
70
+ beforeSend(event) {
71
+ if (event.exception) {
72
+ console.log('sentry', 'error', event.exception);
73
+ }
74
+ return event;
75
+ },
76
+ });
77
+ (0, node_1.configureScope)((scope) => {
78
+ scope.setUser({ id: sentryUserId });
79
+ scope.setTag('companion', sentryCompanionVersion);
80
+ });
81
+ }
82
+ else {
83
+ console.log('Sentry disabled');
84
+ }
85
+ let module;
86
+ const socket = SocketIOClient.io(socketIoUrl, {
87
+ reconnection: false,
88
+ timeout: 5000,
89
+ transports: ['websocket'],
90
+ });
91
+ socket.on('connect', () => {
92
+ console.log(`Connected to module-host: ${socket.id}`);
93
+ socket.emit('register', pkgJson.version, connectionId, socketIoToken, () => {
94
+ console.log(`Module-host accepted registration`);
95
+ module = new factory((0, util_js_1.literal)({
96
+ id: connectionId,
97
+ socket,
98
+ upgradeScripts,
99
+ }));
100
+ });
101
+ });
102
+ socket.on('connect_error', (e) => {
103
+ console.log(`connection failed to module-host: ${socket.id}`, e.toString());
104
+ process.exit(12);
105
+ });
106
+ socket.on('disconnect', async () => {
107
+ console.log(`Disconnected from module-host: ${socket.id}`);
108
+ if (module) {
109
+ // Try and de-init the module before killing it
110
+ try {
111
+ const p = module.destroy();
112
+ if (p)
113
+ await (0, p_timeout_1.default)(p, 5000);
114
+ }
115
+ catch (e) {
116
+ // Ignore
117
+ }
118
+ }
119
+ // Kill the process
120
+ process.exit(11);
121
+ });
122
+ }
123
+ catch (e) {
124
+ console.error(`Failed to startup module:`);
125
+ console.error(e.stack || e.message);
126
+ process.exit(1);
127
+ }
128
+ });
129
+ }
130
+ exports.runEntrypoint = runEntrypoint;
131
+ //# sourceMappingURL=entrypoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint.js","sourceRoot":"","sources":["../src/entrypoint.ts"],"names":[],"mappings":";;;;AAAA,yEAAkD;AAClD,kEAAgC;AAChC,wDAAwG;AACxG,mEAA4B;AAI5B,uCAAmC;AAEnC,uCAAmD;AACnD,2BAAwB;AAExB,IAAI,aAAa,GAAG,KAAK,CAAA;AAIzB,0DAA0D;AAC1D,yEAAyE;AACzE,6CAA6C;AAC7C,0CAA0C;AAC1C,yDAAyD;AACzD,oDAAoD;AACpD,KAAK;AAEL,oCAAoC;AACpC,sCAAsC;AACtC,yBAAyB;AACzB,IAAI;AAEJ;;;;;GAKG;AACH,SAAgB,aAAa,CAC5B,OAAqC,EACrC,cAAuD;IAEvD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACjC,IAAI;YACH,MAAM,UAAU,GAAG,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;YACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YACtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,wBAAwB;gBACxD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;YAC9E,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;YAE7G,qCAAqC;YACrC,IAAI,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;YAC3E,aAAa,GAAG,IAAI,CAAA;YAEpB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;YAChD,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;YAElF,8CAA8C;YAC9C,MAAM,YAAY,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;YACpD,MAAM,YAAY,GAA4B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YAEjF,IAAI,YAAY,CAAC,OAAO,EAAE,GAAG,KAAK,6BAAe;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;YAEpG,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YAExD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAA;YAC9C,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,YAAY;gBACpD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;YAE9D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;YAC5C,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAEjH,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;YAChD,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,aAAa;gBACtD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAE/D,kDAAkD;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAA;YACxC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAA;YAC9C,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAA;YACnE,IAAI,SAAS,IAAI,YAAY,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,EAAE;gBACzE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;gBAE7B,IAAA,WAAI,EAAC;oBACJ,GAAG,EAAE,SAAS;oBACd,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;oBAC7C,UAAU,CAAC,KAAK;wBACf,IAAI,KAAK,CAAC,SAAS,EAAE;4BACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;yBAC/C;wBACD,OAAO,KAAK,CAAA;oBACb,CAAC;iBACD,CAAC,CAAA;gBAEF,IAAA,qBAAc,EAAC,CAAC,KAAK,EAAE,EAAE;oBACxB,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;oBACnC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;gBAClD,CAAC,CAAC,CAAA;aACF;iBAAM;gBACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;aAC9B;YAED,IAAI,MAAqC,CAAA;YAEzC,MAAM,MAAM,GAA0E,cAAc,CAAC,EAAE,CACtG,WAAW,EACX;gBACC,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,CAAC,WAAW,CAAC;aACzB,CACD,CAAA;YACD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBACzB,OAAO,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;gBAErD,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE;oBAC1E,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;oBAEhD,MAAM,GAAG,IAAI,OAAO,CACnB,IAAA,iBAAO,EAA6B;wBACnC,EAAE,EAAE,YAAY;wBAChB,MAAM;wBACN,cAAc;qBACd,CAAC,CACF,CAAA;gBACF,CAAC,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAM,EAAE,EAAE;gBACrC,OAAO,CAAC,GAAG,CAAC,qCAAqC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAE3E,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACjB,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,kCAAkC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;gBAE1D,IAAI,MAAM,EAAE;oBACX,+CAA+C;oBAC/C,IAAI;wBACH,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;wBAC1B,IAAI,CAAC;4BAAE,MAAM,IAAA,mBAAQ,EAAC,CAAC,EAAE,IAAI,CAAC,CAAA;qBAC9B;oBAAC,OAAO,CAAC,EAAE;wBACX,SAAS;qBACT;iBACD;gBAED,mBAAmB;gBACnB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACjB,CAAC,CAAC,CAAA;SACF;QAAC,OAAO,CAAM,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAC1C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SACf;IACF,CAAC,CAAC,CAAA;AACH,CAAC;AApHD,sCAoHC"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Warning: these types are intentionally semi-isolated from the module-api folder.
3
+ * While it causes a lot of duplicate typings and requires us to do translation of types,
4
+ * it allows for us to be selective as to whether a change impacts the module api or the host api.
5
+ * This will allow for cleaner and more stable apis which can both evolve at different rates
6
+ */
7
+ import { CompanionFeedbackButtonStyleResult } from '../module-api/feedback.js';
8
+ import { OSCSomeArguments } from '../common/osc.js';
9
+ import { SomeCompanionConfigField } from '../module-api/config.js';
10
+ import { LogLevel, InstanceStatus } from '../module-api/enums.js';
11
+ import { SomeCompanionInputField, InputValue, CompanionOptionValues } from '../module-api/input.js';
12
+ import { SomeCompanionPresetDefinition } from '../module-api/preset.js';
13
+ import { CompanionHTTPRequest, CompanionHTTPResponse } from '../module-api/http.js';
14
+ export interface ModuleToHostEventsV0 {
15
+ 'log-message': (msg: LogMessageMessage) => void;
16
+ 'set-status': (msg: SetStatusMessage) => void;
17
+ setActionDefinitions: (msg: SetActionDefinitionsMessage) => void;
18
+ setFeedbackDefinitions: (msg: SetFeedbackDefinitionsMessage) => void;
19
+ setVariableDefinitions: (msg: SetVariableDefinitionsMessage) => void;
20
+ setPresetDefinitions: (msg: SetPresetDefinitionsMessage) => void;
21
+ setVariableValues: (msg: SetVariableValuesMessage) => void;
22
+ updateFeedbackValues: (msg: UpdateFeedbackValuesMessage) => void;
23
+ saveConfig: (msg: SaveConfigMessage) => void;
24
+ 'send-osc': (msg: SendOscMessage) => void;
25
+ parseVariablesInString: (msg: ParseVariablesInStringMessage) => ParseVariablesInStringResponseMessage;
26
+ upgradedItems: (msg: UpgradedDataResponseMessage) => void;
27
+ }
28
+ export interface HostToModuleEventsV0 {
29
+ init: (msg: InitMessage) => InitResponseMessage;
30
+ destroy: (msg: Record<string, never>) => void;
31
+ updateConfig: (config: unknown) => void;
32
+ updateFeedbacks: (msg: UpdateFeedbackInstancesMessage) => void;
33
+ updateActions: (msg: UpdateActionInstancesMessage) => void;
34
+ executeAction: (msg: ExecuteActionMessage) => void;
35
+ getConfigFields: (msg: GetConfigFieldsMessage) => GetConfigFieldsResponseMessage;
36
+ handleHttpRequest: (msg: HandleHttpRequestMessage) => HandleHttpRequestResponseMessage;
37
+ learnAction: (msg: LearnActionMessage) => LearnActionResponseMessage;
38
+ learnFeedback: (msg: LearnFeedbackMessage) => LearnFeedbackResponseMessage;
39
+ }
40
+ export declare type EncodeIsVisible<T extends SomeCompanionInputField> = Omit<T, 'isVisible'> & {
41
+ isVisibleFn?: string;
42
+ };
43
+ export interface InitMessage {
44
+ label: string;
45
+ config: unknown;
46
+ lastUpgradeIndex: number;
47
+ feedbacks: {
48
+ [id: string]: FeedbackInstance | undefined;
49
+ };
50
+ actions: {
51
+ [id: string]: ActionInstance | undefined;
52
+ };
53
+ }
54
+ export interface InitResponseMessage {
55
+ hasHttpHandler: boolean;
56
+ newUpgradeIndex: number;
57
+ updatedConfig: unknown | undefined;
58
+ }
59
+ export interface UpgradedDataResponseMessage {
60
+ updatedFeedbacks: {
61
+ [id: string]: (FeedbackInstanceBase & {
62
+ style?: Partial<CompanionFeedbackButtonStyleResult>;
63
+ }) | undefined;
64
+ };
65
+ updatedActions: {
66
+ [id: string]: ActionInstanceBase | undefined;
67
+ };
68
+ }
69
+ export declare type GetConfigFieldsMessage = Record<string, never>;
70
+ export declare type SomeEncodedCompanionConfigField = EncodeIsVisible<SomeCompanionConfigField>;
71
+ export interface GetConfigFieldsResponseMessage {
72
+ fields: SomeEncodedCompanionConfigField[];
73
+ }
74
+ export interface LogMessageMessage {
75
+ level: LogLevel;
76
+ message: string;
77
+ }
78
+ export interface SetStatusMessage {
79
+ status: InstanceStatus;
80
+ message: string | null;
81
+ }
82
+ export declare type SomeEncodedCompanionInputField = EncodeIsVisible<SomeCompanionInputField>;
83
+ export interface SetActionDefinitionsMessage {
84
+ actions: Array<{
85
+ id: string;
86
+ name: string;
87
+ description?: string;
88
+ options: SomeEncodedCompanionInputField[];
89
+ hasLearn: boolean;
90
+ }>;
91
+ }
92
+ export interface SetFeedbackDefinitionsMessage {
93
+ feedbacks: Array<{
94
+ id: string;
95
+ name: string;
96
+ description?: string;
97
+ options: SomeEncodedCompanionInputField[];
98
+ type: 'boolean' | 'advanced';
99
+ defaultStyle?: Partial<CompanionFeedbackButtonStyleResult>;
100
+ hasLearn: boolean;
101
+ }>;
102
+ }
103
+ export interface SetVariableDefinitionsMessage {
104
+ variables: Array<{
105
+ id: string;
106
+ name: string;
107
+ }>;
108
+ }
109
+ export interface SetPresetDefinitionsMessage {
110
+ presets: Array<SomeCompanionPresetDefinition & {
111
+ id: string;
112
+ }>;
113
+ }
114
+ export interface SetVariableValuesMessage {
115
+ newValues: Array<{
116
+ id: string;
117
+ value: string | number | boolean | undefined;
118
+ }>;
119
+ }
120
+ export interface ExecuteActionMessage {
121
+ action: ActionInstance;
122
+ /** @deprecated */
123
+ deviceId: string | undefined;
124
+ }
125
+ export interface UpdateFeedbackValuesMessage {
126
+ values: Array<{
127
+ id: string;
128
+ controlId: string;
129
+ value: boolean | Partial<CompanionFeedbackButtonStyleResult> | undefined;
130
+ }>;
131
+ }
132
+ export interface FeedbackInstanceBase {
133
+ id: string;
134
+ upgradeIndex: number | null;
135
+ feedbackId: string;
136
+ options: {
137
+ [key: string]: InputValue | undefined;
138
+ };
139
+ }
140
+ export interface FeedbackInstance extends FeedbackInstanceBase {
141
+ controlId: string;
142
+ /** If control supports an imageBuffer, the dimensions the buffer must be */
143
+ image?: {
144
+ width: number;
145
+ height: number;
146
+ };
147
+ /** @deprecated */
148
+ page: number;
149
+ /** @deprecated */
150
+ bank: number;
151
+ /** @deprecated */
152
+ rawBank: any;
153
+ }
154
+ export interface UpdateFeedbackInstancesMessage {
155
+ feedbacks: {
156
+ [id: string]: FeedbackInstance | null | undefined;
157
+ };
158
+ }
159
+ export interface ActionInstanceBase {
160
+ id: string;
161
+ upgradeIndex: number | null;
162
+ actionId: string;
163
+ options: {
164
+ [key: string]: InputValue | undefined;
165
+ };
166
+ }
167
+ export interface ActionInstance extends ActionInstanceBase {
168
+ controlId: string;
169
+ /** @deprecated */
170
+ page: number;
171
+ /** @deprecated */
172
+ bank: number;
173
+ }
174
+ export interface UpdateActionInstancesMessage {
175
+ actions: {
176
+ [id: string]: ActionInstance | null | undefined;
177
+ };
178
+ }
179
+ export interface SaveConfigMessage {
180
+ config: unknown;
181
+ }
182
+ export interface SendOscMessage {
183
+ host: string;
184
+ port: number;
185
+ path: string;
186
+ args: OSCSomeArguments;
187
+ }
188
+ export interface ParseVariablesInStringMessage {
189
+ text: string;
190
+ }
191
+ export interface ParseVariablesInStringResponseMessage {
192
+ text: string;
193
+ }
194
+ export interface HandleHttpRequestMessage {
195
+ request: CompanionHTTPRequest;
196
+ }
197
+ export interface HandleHttpRequestResponseMessage {
198
+ response: CompanionHTTPResponse;
199
+ }
200
+ export interface LearnActionMessage {
201
+ action: ActionInstance;
202
+ }
203
+ export interface LearnActionResponseMessage {
204
+ options: CompanionOptionValues | undefined;
205
+ }
206
+ export interface LearnFeedbackMessage {
207
+ feedback: FeedbackInstance;
208
+ }
209
+ export interface LearnFeedbackResponseMessage {
210
+ options: CompanionOptionValues | undefined;
211
+ }
212
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/host-api/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Warning: these types are intentionally semi-isolated from the module-api folder.
4
+ * While it causes a lot of duplicate typings and requires us to do translation of types,
5
+ * it allows for us to be selective as to whether a change impacts the module api or the host api.
6
+ * This will allow for cleaner and more stable apis which can both evolve at different rates
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/host-api/api.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,7 @@
1
+ export declare const HostApiSocketIo = "socket.io";
2
+ export declare type ResultCallback<T> = (err: any, res: T) => void;
3
+ export interface ModuleToHostEventsInit {
4
+ register: (apiVersion: string, connectionId: string, socketIoToken: string, cb: () => void) => void;
5
+ }
6
+ export declare type HostToModuleEventsInit = Record<never, never>;
7
+ //# sourceMappingURL=versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../src/host-api/versions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,cAAc,CAAA;AAE1C,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAE1D,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;CACnG;AACD,oBAAY,sBAAsB,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HostApiSocketIo = void 0;
4
+ exports.HostApiSocketIo = 'socket.io';
5
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/host-api/versions.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,WAAW,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from './manifest.js';
2
+ export * from './module-api/index.js';
3
+ export * from './common/osc.js';
4
+ export { literal, combineRgb, splitRgb, RgbComponents, assertNever } from './util.js';
5
+ export { runEntrypoint } from './entrypoint.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runEntrypoint = exports.assertNever = exports.splitRgb = exports.combineRgb = exports.literal = void 0;
4
+ const tslib_1 = require("tslib");
5
+ tslib_1.__exportStar(require("./manifest.js"), exports);
6
+ tslib_1.__exportStar(require("./module-api/index.js"), exports);
7
+ tslib_1.__exportStar(require("./common/osc.js"), exports);
8
+ var util_js_1 = require("./util.js");
9
+ Object.defineProperty(exports, "literal", { enumerable: true, get: function () { return util_js_1.literal; } });
10
+ Object.defineProperty(exports, "combineRgb", { enumerable: true, get: function () { return util_js_1.combineRgb; } });
11
+ Object.defineProperty(exports, "splitRgb", { enumerable: true, get: function () { return util_js_1.splitRgb; } });
12
+ Object.defineProperty(exports, "assertNever", { enumerable: true, get: function () { return util_js_1.assertNever; } });
13
+ var entrypoint_js_1 = require("./entrypoint.js");
14
+ Object.defineProperty(exports, "runEntrypoint", { enumerable: true, get: function () { return entrypoint_js_1.runEntrypoint; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,wDAA6B;AAC7B,gEAAqC;AACrC,0DAA+B;AAC/B,qCAAqF;AAA5E,kGAAA,OAAO,OAAA;AAAE,qGAAA,UAAU,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAiB,sGAAA,WAAW,OAAA;AAElE,iDAA+C;AAAtC,8GAAA,aAAa,OAAA"}
@@ -0,0 +1,12 @@
1
+ export interface InstanceBaseShared<TConfig> {
2
+ /**
3
+ * Main initialization function called once the module
4
+ * is OK to start doing things.
5
+ */
6
+ init(config: TConfig): void | Promise<void>;
7
+ /**
8
+ * Clean up the instance before it is destroyed.
9
+ */
10
+ destroy(): void | Promise<void>;
11
+ }
12
+ //# sourceMappingURL=instance-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-base.d.ts","sourceRoot":"","sources":["../src/instance-base.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB,CAAC,OAAO;IAC1C;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3C;;OAEG;IACH,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=instance-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-base.js","sourceRoot":"","sources":["../src/instance-base.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import * as SocketIOClient from 'socket.io-client';
2
+ import { CompanionStaticUpgradeScript } from '../module-api/upgrade';
3
+ import { EncodeIsVisible } from '../host-api/api.js';
4
+ import { SomeCompanionInputField } from '../module-api/input';
5
+ /**
6
+ * Signature for the handler functions
7
+ */
8
+ declare type HandlerFunction<T extends (...args: any) => any> = (data: Parameters<T>[0]) => Promise<ReturnType<T>>;
9
+ declare type HandlerFunctionOrNever<T> = T extends (...args: any) => any ? HandlerFunction<T> : never;
10
+ /** Map of handler functions */
11
+ export declare type EventHandlers<T extends object> = {
12
+ [K in keyof T]: HandlerFunctionOrNever<T[K]>;
13
+ };
14
+ /** Subscribe to all the events defined in the handlers, and wrap with safety and logging */
15
+ export declare function listenToEvents<T extends object>(socket: SocketIOClient.Socket<T>, handlers: EventHandlers<T>): void;
16
+ export declare function serializeIsVisibleFn<T extends SomeCompanionInputField>(options: T[]): EncodeIsVisible<T>[];
17
+ export interface InstanceBaseProps<TConfig> {
18
+ id: string;
19
+ socket: SocketIOClient.Socket;
20
+ upgradeScripts: CompanionStaticUpgradeScript<TConfig>[];
21
+ }
22
+ export declare function isInstanceBaseProps<TConfig>(obj: unknown): obj is InstanceBaseProps<TConfig>;
23
+ export {};
24
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/internal/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAE7D;;GAEG;AACH,aAAK,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAE1G,aAAK,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,oBAAY,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;KAC5C,CAAC,IAAI,MAAM,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAA;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CA0BnH;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,uBAAuB,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAkB1G;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,cAAc,CAAC,MAAM,CAAA;IAC7B,cAAc,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAE,CAAA;CACvD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAG5F"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isInstanceBaseProps = exports.serializeIsVisibleFn = exports.listenToEvents = void 0;
4
+ /** Subscribe to all the events defined in the handlers, and wrap with safety and logging */
5
+ function listenToEvents(socket, handlers) {
6
+ // const logger = createChildLogger(`module/${connectionId}`);
7
+ for (const [event, handler] of Object.entries(handlers)) {
8
+ socket.on(event, async (msg, cb) => {
9
+ if (!msg || typeof msg !== 'object') {
10
+ console.warn(`Received malformed message object "${event}"`);
11
+ return; // Ignore messages without correct structure
12
+ }
13
+ if (cb && typeof cb !== 'function') {
14
+ console.warn(`Received malformed callback "${event}"`);
15
+ return; // Ignore messages without correct structure
16
+ }
17
+ try {
18
+ // Run it
19
+ const handler2 = handler;
20
+ const result = await handler2(msg);
21
+ if (cb)
22
+ cb(null, result);
23
+ }
24
+ catch (e) {
25
+ console.error(`Command failed: ${e}`, e.stack);
26
+ if (cb)
27
+ cb(e?.toString() ?? JSON.stringify(e), undefined);
28
+ }
29
+ });
30
+ }
31
+ }
32
+ exports.listenToEvents = listenToEvents;
33
+ function serializeIsVisibleFn(options) {
34
+ return options.map((option) => {
35
+ if ('isVisible' in option) {
36
+ if (typeof option.isVisible === 'function') {
37
+ return {
38
+ ...option,
39
+ isVisibleFn: option.isVisible.toString(),
40
+ isVisible: undefined,
41
+ };
42
+ }
43
+ }
44
+ // ignore any existing `isVisibleFn` to avoid code injection
45
+ return {
46
+ ...option,
47
+ isVisibleFn: undefined,
48
+ };
49
+ });
50
+ }
51
+ exports.serializeIsVisibleFn = serializeIsVisibleFn;
52
+ function isInstanceBaseProps(obj) {
53
+ const obj2 = obj;
54
+ return typeof obj2 === 'object' && typeof obj2.id === 'string' && typeof obj2.socket === 'object';
55
+ }
56
+ exports.isInstanceBaseProps = isInstanceBaseProps;
57
+ //# sourceMappingURL=base.js.map