@companion-module/host 0.1.0-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.
Files changed (66) hide show
  1. package/README.md +19 -0
  2. package/dist/__tests__/ipc-wrapper.spec.d.ts +2 -0
  3. package/dist/__tests__/ipc-wrapper.spec.d.ts.map +1 -0
  4. package/dist/__tests__/ipc-wrapper.spec.js +272 -0
  5. package/dist/__tests__/ipc-wrapper.spec.js.map +1 -0
  6. package/dist/api.d.ts +360 -0
  7. package/dist/api.d.ts.map +1 -0
  8. package/dist/api.js +8 -0
  9. package/dist/api.js.map +1 -0
  10. package/dist/context.d.ts +125 -0
  11. package/dist/context.d.ts.map +1 -0
  12. package/dist/context.js +2 -0
  13. package/dist/context.js.map +1 -0
  14. package/dist/instance.d.ts +51 -0
  15. package/dist/instance.d.ts.map +1 -0
  16. package/dist/instance.js +317 -0
  17. package/dist/instance.js.map +1 -0
  18. package/dist/internal/__tests__/feedback.spec.d.ts +2 -0
  19. package/dist/internal/__tests__/feedback.spec.d.ts.map +1 -0
  20. package/dist/internal/__tests__/feedback.spec.js +686 -0
  21. package/dist/internal/__tests__/feedback.spec.js.map +1 -0
  22. package/dist/internal/__tests__/serializeIsVisibleFn.spec.d.ts +2 -0
  23. package/dist/internal/__tests__/serializeIsVisibleFn.spec.d.ts.map +1 -0
  24. package/dist/internal/__tests__/serializeIsVisibleFn.spec.js +119 -0
  25. package/dist/internal/__tests__/serializeIsVisibleFn.spec.js.map +1 -0
  26. package/dist/internal/__tests__/upgrade.spec.d.ts +2 -0
  27. package/dist/internal/__tests__/upgrade.spec.d.ts.map +1 -0
  28. package/dist/internal/__tests__/upgrade.spec.js +280 -0
  29. package/dist/internal/__tests__/upgrade.spec.js.map +1 -0
  30. package/dist/internal/actions.d.ts +16 -0
  31. package/dist/internal/actions.d.ts.map +1 -0
  32. package/dist/internal/actions.js +212 -0
  33. package/dist/internal/actions.js.map +1 -0
  34. package/dist/internal/base.d.ts +4 -0
  35. package/dist/internal/base.d.ts.map +1 -0
  36. package/dist/internal/base.js +31 -0
  37. package/dist/internal/base.js.map +1 -0
  38. package/dist/internal/feedback.d.ts +19 -0
  39. package/dist/internal/feedback.d.ts.map +1 -0
  40. package/dist/internal/feedback.js +296 -0
  41. package/dist/internal/feedback.js.map +1 -0
  42. package/dist/internal/upgrade.d.ts +15 -0
  43. package/dist/internal/upgrade.d.ts.map +1 -0
  44. package/dist/internal/upgrade.js +168 -0
  45. package/dist/internal/upgrade.js.map +1 -0
  46. package/dist/ipc-wrapper.d.ts +37 -0
  47. package/dist/ipc-wrapper.d.ts.map +1 -0
  48. package/dist/ipc-wrapper.js +123 -0
  49. package/dist/ipc-wrapper.js.map +1 -0
  50. package/dist/logging.d.ts +3 -0
  51. package/dist/logging.d.ts.map +1 -0
  52. package/dist/logging.js +4 -0
  53. package/dist/logging.js.map +1 -0
  54. package/dist/main.d.ts +5 -0
  55. package/dist/main.d.ts.map +1 -0
  56. package/dist/main.js +5 -0
  57. package/dist/main.js.map +1 -0
  58. package/dist/plugin.d.ts +25 -0
  59. package/dist/plugin.d.ts.map +1 -0
  60. package/dist/plugin.js +301 -0
  61. package/dist/plugin.js.map +1 -0
  62. package/dist/versions.d.ts +10 -0
  63. package/dist/versions.d.ts.map +1 -0
  64. package/dist/versions.js +2 -0
  65. package/dist/versions.js.map +1 -0
  66. package/package.json +31 -0
@@ -0,0 +1,168 @@
1
+ import { literal, } from '@companion-module/base';
2
+ /**
3
+ * Run through the upgrade scripts for the given data
4
+ * Note: this updates the inputs in place, but the result needs to be sent back to companion
5
+ * @param allActions Actions that may need upgrading
6
+ * @param allFeedbacks Feedbacks that may need upgrading
7
+ * @param defaultUpgradeIndex The lastUpgradeIndex of the connection, if known
8
+ * @param upgradeScripts The scripts that may be run
9
+ * @param config The current config of the module
10
+ * @param skipConfigAndSecretsUpgrade Whether to skip upgrading the config and secrets
11
+ * @returns The upgraded data that needs persisting
12
+ */
13
+ export function runThroughUpgradeScripts(allActionsArray, allFeedbacksArray, defaultUpgradeIndex, upgradeScripts, config, secrets, skipConfigAndSecretsUpgrade) {
14
+ // First we group all the actions and feedbacks by the version they currently are.
15
+ const pendingUpgradesGrouped = new Map();
16
+ const getPendingUpgradeGroup = (i) => {
17
+ let v = pendingUpgradesGrouped.get(i);
18
+ if (!v) {
19
+ v = { actions: [], feedbacks: [], config: false };
20
+ pendingUpgradesGrouped.set(i, v);
21
+ }
22
+ return v;
23
+ };
24
+ for (const action of allActionsArray) {
25
+ const upgradeIndex = action?.upgradeIndex ?? defaultUpgradeIndex;
26
+ if (action && typeof upgradeIndex === 'number') {
27
+ const pending = getPendingUpgradeGroup(upgradeIndex);
28
+ pending.actions.push(action.id);
29
+ }
30
+ }
31
+ for (const feedback of allFeedbacksArray) {
32
+ const upgradeIndex = feedback?.upgradeIndex ?? defaultUpgradeIndex;
33
+ if (feedback && typeof upgradeIndex === 'number') {
34
+ const pending = getPendingUpgradeGroup(upgradeIndex);
35
+ pending.feedbacks.push(feedback.id);
36
+ }
37
+ }
38
+ if (!skipConfigAndSecretsUpgrade) {
39
+ // If there is config we still need to upgrade that
40
+ for (let i = defaultUpgradeIndex ?? -1; i < upgradeScripts.length; i++) {
41
+ // ensure the group is registered
42
+ getPendingUpgradeGroup(i).config = true;
43
+ }
44
+ }
45
+ const allActions = Object.fromEntries(allActionsArray.map((a) => [a.id, a]));
46
+ const allFeedbacks = Object.fromEntries(allFeedbacksArray.map((a) => [a.id, a]));
47
+ const updatedFeedbacks = {};
48
+ const updatedActions = {};
49
+ let updatedConfig;
50
+ let updatedSecrets;
51
+ if (pendingUpgradesGrouped.size > 0) {
52
+ // Figure out which script to run first. Note: we track the last index we ran, so it is offset by one
53
+ const pendingUpgradeGroups = Array.from(pendingUpgradesGrouped.keys()).sort();
54
+ const firstUpgradeGroup = Math.min(...pendingUpgradeGroups, defaultUpgradeIndex ?? -1) + 1;
55
+ // Start building arrays of the ids which we are upgrading as we go
56
+ const actionsIdsToUpgrade = [];
57
+ const feedbackIdsToUpgrade = [];
58
+ // Perform the upgrades. We start on the first batch/instance, and work our way up to the last
59
+ const targetCount = upgradeScripts.length;
60
+ for (let i = firstUpgradeGroup; i < targetCount; i++) {
61
+ const group = pendingUpgradesGrouped.get(i - 1);
62
+ if (group) {
63
+ // Update the list of objects that need upgrading
64
+ actionsIdsToUpgrade.push(...group.actions);
65
+ feedbackIdsToUpgrade.push(...group.feedbacks);
66
+ }
67
+ // Only upgrade the config, if we are past the last version we had for it
68
+ const upgradeConfigAndSecrets = !!group?.config;
69
+ // Ensure there is something to upgrade
70
+ if (!upgradeConfigAndSecrets && actionsIdsToUpgrade.length === 0 && feedbackIdsToUpgrade.length === 0)
71
+ continue;
72
+ const inputConfig = updatedConfig ?? config;
73
+ const inputSecrets = updatedSecrets ?? secrets;
74
+ // We have an upgrade script that can be run
75
+ const fcn = upgradeScripts[i];
76
+ const res = fcn({
77
+ // Pass a clone to avoid mutations
78
+ currentConfig: structuredClone(inputConfig),
79
+ }, {
80
+ config: upgradeConfigAndSecrets ? inputConfig : null,
81
+ secrets: upgradeConfigAndSecrets ? inputSecrets : null,
82
+ // Only pass the actions & feedbacks which need upgrading from this version
83
+ actions: actionsIdsToUpgrade
84
+ .map((id) => {
85
+ const inst = allActions[id];
86
+ if (inst) {
87
+ return literal({
88
+ id: inst.id,
89
+ controlId: inst.controlId,
90
+ actionId: inst.actionId,
91
+ options: inst.options !== undefined ? structuredClone(inst.options) : {},
92
+ });
93
+ }
94
+ })
95
+ .filter((v) => !!v),
96
+ feedbacks: feedbackIdsToUpgrade
97
+ .map((id) => {
98
+ const inst = allFeedbacks[id];
99
+ if (inst) {
100
+ return literal({
101
+ id: inst.id,
102
+ controlId: inst.controlId,
103
+ feedbackId: inst.feedbackId,
104
+ options: inst.options !== undefined ? structuredClone(inst.options) : {},
105
+ // TODO - style?
106
+ isInverted: inst.isInverted,
107
+ });
108
+ }
109
+ })
110
+ .filter((v) => !!v),
111
+ });
112
+ // Apply changes
113
+ if (upgradeConfigAndSecrets && res.updatedConfig)
114
+ updatedConfig = res.updatedConfig;
115
+ if (upgradeConfigAndSecrets && res.updatedSecrets)
116
+ updatedSecrets = res.updatedSecrets;
117
+ for (const action of res.updatedActions) {
118
+ if (action) {
119
+ const instance = allActions[action.id];
120
+ if (instance) {
121
+ instance.actionId = action.actionId;
122
+ instance.options = action.options;
123
+ instance.upgradeIndex = i;
124
+ // Mark it as changed
125
+ updatedActions[action.id] = instance;
126
+ }
127
+ }
128
+ }
129
+ for (const feedback of res.updatedFeedbacks) {
130
+ if (feedback) {
131
+ const instance = allFeedbacks[feedback.id];
132
+ if (instance) {
133
+ instance.feedbackId = feedback.feedbackId;
134
+ instance.options = feedback.options;
135
+ instance.upgradeIndex = i;
136
+ // Mark it as changed
137
+ updatedFeedbacks[feedback.id] = {
138
+ ...instance,
139
+ style: updatedFeedbacks[feedback.id]?.style ?? feedback.style,
140
+ isInverted: feedback.isInverted ?? false,
141
+ };
142
+ }
143
+ }
144
+ }
145
+ }
146
+ // Make sure that everything with a upgradeIndex set is sent back
147
+ for (const [id, action] of Object.entries(allActions)) {
148
+ if (!updatedActions[id] && typeof action?.upgradeIndex === 'number') {
149
+ // Send it back to acknowledge that it has been 'upgraded'
150
+ updatedActions[id] = action;
151
+ }
152
+ }
153
+ for (const [id, feedback] of Object.entries(allFeedbacks)) {
154
+ if (!updatedFeedbacks[id] && typeof feedback?.upgradeIndex === 'number') {
155
+ // Send it back to acknowledge that it has been 'upgraded'
156
+ updatedFeedbacks[id] = feedback;
157
+ }
158
+ }
159
+ }
160
+ return {
161
+ updatedActions: Object.values(updatedActions),
162
+ updatedFeedbacks: Object.values(updatedFeedbacks),
163
+ updatedConfig,
164
+ updatedSecrets,
165
+ latestUpgradeIndex: upgradeScripts.length - 1,
166
+ };
167
+ }
168
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/internal/upgrade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Signature for the handler functions
3
+ */
4
+ type HandlerFunction<T extends (...args: any) => any> = (data: Parameters<T>[0]) => HandlerReturnType<T>;
5
+ type HandlerReturnType<T extends (...args: any) => any> = ReturnType<T> extends never ? Promise<void> : Promise<ReturnType<T>>;
6
+ type HandlerFunctionOrNever<T> = T extends (...args: any) => any ? HandlerFunction<T> : never;
7
+ /** Map of handler functions */
8
+ export type IpcEventHandlers<T extends object> = {
9
+ [K in keyof T]: HandlerFunctionOrNever<T[K]>;
10
+ };
11
+ type ParamsIfReturnIsNever<T extends (...args: any[]) => any> = ReturnType<T> extends never ? Parameters<T> : never;
12
+ type ParamsIfReturnIsValid<T extends (...args: any[]) => any> = ReturnType<T> extends never ? never : Parameters<T>;
13
+ export interface IpcCallMessagePacket {
14
+ direction: 'call';
15
+ name: string;
16
+ payload: string;
17
+ callbackId: number | undefined;
18
+ }
19
+ export interface IpcResponseMessagePacket {
20
+ direction: 'response';
21
+ callbackId: number;
22
+ success: boolean;
23
+ payload: string;
24
+ }
25
+ export declare class IpcWrapper<TOutbound extends {
26
+ [key: string]: any;
27
+ }, TInbound extends {
28
+ [key: string]: any;
29
+ }> {
30
+ #private;
31
+ constructor(handlers: IpcEventHandlers<TInbound>, sendMessage: (message: IpcCallMessagePacket | IpcResponseMessagePacket) => void, defaultTimeout: number);
32
+ sendWithCb<T extends keyof TOutbound>(name: T, msg: ParamsIfReturnIsValid<TOutbound[T]>[0], defaultResponse?: () => Error, timeout?: number): Promise<ReturnType<TOutbound[T]>>;
33
+ sendWithNoCb<T extends keyof TOutbound>(name: T, msg: ParamsIfReturnIsNever<TOutbound[T]>[0]): void;
34
+ receivedMessage(msg: IpcCallMessagePacket | IpcResponseMessagePacket): void;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=ipc-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc-wrapper.d.ts","sourceRoot":"","sources":["../src/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,IACrD,UAAU,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAErE,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,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI;KAC/C,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,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B;AACD,MAAM,WAAW,wBAAwB;IACxC,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,gBAAgB,CAAC,QAAQ,CAAC,EACpC,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"}
@@ -0,0 +1,123 @@
1
+ import { assertNever } from '@companion-module/base';
2
+ import ejson from 'ejson';
3
+ const MAX_CALLBACK_ID = 1 << 28;
4
+ export class IpcWrapper {
5
+ #handlers;
6
+ #sendMessage;
7
+ #defaultTimeout;
8
+ #nextCallbackId = 1;
9
+ #pendingCallbacks = new Map();
10
+ constructor(handlers, sendMessage, defaultTimeout) {
11
+ this.#handlers = handlers;
12
+ this.#sendMessage = sendMessage;
13
+ this.#defaultTimeout = defaultTimeout;
14
+ }
15
+ async sendWithCb(name, msg, defaultResponse, timeout = 0) {
16
+ if (timeout <= 0)
17
+ timeout = this.#defaultTimeout;
18
+ const callbacks = { timeout: undefined, resolve: () => null, reject: () => null };
19
+ const promise = new Promise((resolve, reject) => {
20
+ callbacks.resolve = resolve;
21
+ callbacks.reject = reject;
22
+ });
23
+ // Reset the id when it gets really high
24
+ if (this.#nextCallbackId > MAX_CALLBACK_ID)
25
+ this.#nextCallbackId = 1;
26
+ const id = this.#nextCallbackId++;
27
+ this.#pendingCallbacks.set(id, callbacks);
28
+ this.#sendMessage({
29
+ direction: 'call',
30
+ name: String(name),
31
+ payload: ejson.stringify(msg),
32
+ callbackId: id,
33
+ });
34
+ // Setup a timeout, creating the error in the call, so that the stack trace is useful
35
+ const timeoutError = new Error('Call timed out');
36
+ callbacks.timeout = setTimeout(() => {
37
+ callbacks.reject(defaultResponse ? defaultResponse() : timeoutError);
38
+ this.#pendingCallbacks.delete(id);
39
+ }, timeout);
40
+ return promise;
41
+ }
42
+ sendWithNoCb(name, msg) {
43
+ this.#sendMessage({
44
+ direction: 'call',
45
+ name: String(name),
46
+ payload: ejson.stringify(msg),
47
+ callbackId: undefined,
48
+ });
49
+ }
50
+ receivedMessage(msg) {
51
+ const rawMsg = msg;
52
+ switch (msg.direction) {
53
+ case 'call': {
54
+ const handler = this.#handlers[msg.name];
55
+ if (!handler) {
56
+ if (msg.callbackId) {
57
+ this.#sendMessage({
58
+ direction: 'response',
59
+ callbackId: msg.callbackId,
60
+ success: false,
61
+ payload: ejson.stringify({ message: `Unknown command "${msg.name}"` }),
62
+ });
63
+ }
64
+ return;
65
+ }
66
+ // TODO - should anything be logged here?
67
+ const data = msg.payload ? ejson.parse(msg.payload) : undefined;
68
+ handler(data).then((res) => {
69
+ if (msg.callbackId) {
70
+ this.#sendMessage({
71
+ direction: 'response',
72
+ callbackId: msg.callbackId,
73
+ success: true,
74
+ payload: ejson.stringify(res),
75
+ });
76
+ }
77
+ }, (err) => {
78
+ if (msg.callbackId) {
79
+ this.#sendMessage({
80
+ direction: 'response',
81
+ callbackId: msg.callbackId,
82
+ success: false,
83
+ payload: err instanceof Error ? JSON.stringify(err, Object.getOwnPropertyNames(err)) : ejson.stringify(err),
84
+ });
85
+ }
86
+ });
87
+ break;
88
+ }
89
+ case 'response': {
90
+ if (!msg.callbackId) {
91
+ console.error(`Ipc: Response message has no callbackId`);
92
+ return;
93
+ }
94
+ const callbacks = this.#pendingCallbacks.get(msg.callbackId);
95
+ this.#pendingCallbacks.delete(msg.callbackId);
96
+ if (!callbacks) {
97
+ // Likely timed out, we should ignore
98
+ return;
99
+ }
100
+ clearTimeout(callbacks.timeout);
101
+ const data = msg.payload ? ejson.parse(msg.payload) : undefined;
102
+ if (msg.success) {
103
+ callbacks.resolve(data);
104
+ }
105
+ else {
106
+ let err = data;
107
+ if (data && typeof data === 'object' && 'message' in data) {
108
+ err = new Error(data.message);
109
+ if (data.stack)
110
+ err.stack = data.stack;
111
+ }
112
+ callbacks.reject(err);
113
+ }
114
+ break;
115
+ }
116
+ default:
117
+ assertNever(msg);
118
+ console.error(`Ipc: Message of unknown direction "${rawMsg.direction}"`);
119
+ break;
120
+ }
121
+ }
122
+ }
123
+ //# sourceMappingURL=ipc-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc-wrapper.js","sourceRoot":"","sources":["../src/ipc-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LoggingSink } from '@companion-module/base';
2
+ export declare function registerLoggingSink(sink: LoggingSink): void;
3
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEzD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAE3D"}
@@ -0,0 +1,4 @@
1
+ export function registerLoggingSink(sink) {
2
+ global.SURFACE_LOGGER = sink;
3
+ }
4
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,IAAiB;IACpD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAA;AAC7B,CAAC"}
package/dist/main.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './context.js';
2
+ export * from './instance.js';
3
+ export * from './logging.js';
4
+ export * from '@companion-module/base';
5
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAE5B,cAAc,wBAAwB,CAAA"}
package/dist/main.js ADDED
@@ -0,0 +1,5 @@
1
+ export * from './context.js';
2
+ export * from './instance.js';
3
+ export * from './logging.js';
4
+ export * from '@companion-module/base';
5
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAE5B,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { type RemoteSurfaceConnectionInfo, type HIDDevice, type SurfaceDrawProps, type SurfacePlugin } from '@companion-surface/base';
2
+ import type { SurfaceHostContext } from './context.js';
3
+ import type { PluginFeatures, CheckDeviceResult, OpenDeviceResult } from './types.js';
4
+ export declare class PluginWrapper<TInfo = unknown> {
5
+ #private;
6
+ constructor(host: SurfaceHostContext, plugin: SurfacePlugin<TInfo>);
7
+ getPluginFeatures(): PluginFeatures;
8
+ init(): Promise<void>;
9
+ destroy(): Promise<void>;
10
+ checkHidDevice(hidDevice: HIDDevice): Promise<CheckDeviceResult | null>;
11
+ openHidDevice(hidDevice: HIDDevice): Promise<OpenDeviceResult | null>;
12
+ scanForDevices(): Promise<CheckDeviceResult[]>;
13
+ openScannedDevice(device: CheckDeviceResult): Promise<OpenDeviceResult | null>;
14
+ setBrightness(surfaceId: string, brightness: number): Promise<void>;
15
+ blankSurface(surfaceId: string): Promise<void>;
16
+ updateConfig(surfaceId: string, config: Record<string, any>): Promise<void>;
17
+ readySurface(surfaceId: string, config: Record<string, any>): Promise<void>;
18
+ draw(surfaceId: string, drawProps: SurfaceDrawProps[]): Promise<void>;
19
+ onVariableValue(surfaceId: string, name: string, value: any): Promise<void>;
20
+ showLockedStatus(surfaceId: string, locked: boolean, characterCount: number): Promise<void>;
21
+ showStatus(surfaceId: string, hostname: string, status: string): Promise<void>;
22
+ setupRemoteConnections(connectionInfos: RemoteSurfaceConnectionInfo[]): Promise<void>;
23
+ stopRemoteConnections(connectionIds: string[]): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAEN,KAAK,2BAA2B,EAEhC,KAAK,SAAS,EAEd,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAGrF,qBAAa,aAAa,CAAC,KAAK,GAAG,OAAO;;gBAS7B,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;IAQlE,iBAAiB,IAAI,cAAc;IAc7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBxB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAkBvE,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAiGrE,cAAc,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAuB9C,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAkC9E,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3E,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3E,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3E,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9E,sBAAsB,CAAC,eAAe,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrF,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAUnE"}