@companion-module/base 1.99.0-0-nightly-feat-split-api-20251221-153951-fa12995 → 1.99.0-nightly-feat-graphics-overhaul-20251222-140818-911eb31

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 (126) hide show
  1. package/README.md +11 -12
  2. package/dist/common/json-value.d.ts +1 -0
  3. package/dist/common/json-value.d.ts.map +1 -0
  4. package/dist/common/osc.d.ts +1 -0
  5. package/dist/common/osc.d.ts.map +1 -0
  6. package/dist/entrypoint.d.ts +1 -9
  7. package/dist/entrypoint.d.ts.map +1 -0
  8. package/dist/entrypoint.js +122 -4
  9. package/dist/entrypoint.js.map +1 -1
  10. package/dist/helpers/index.d.ts +1 -0
  11. package/dist/helpers/index.d.ts.map +1 -0
  12. package/dist/helpers/tcp.d.ts +1 -0
  13. package/dist/helpers/tcp.d.ts.map +1 -0
  14. package/dist/helpers/telnet.d.ts +1 -0
  15. package/dist/helpers/telnet.d.ts.map +1 -0
  16. package/dist/helpers/udp.d.ts +1 -0
  17. package/dist/helpers/udp.d.ts.map +1 -0
  18. package/dist/host-api/api.d.ts +402 -0
  19. package/dist/host-api/api.d.ts.map +1 -0
  20. package/dist/host-api/{context.js → api.js} +1 -6
  21. package/dist/host-api/api.js.map +1 -0
  22. package/dist/host-api/ipc-wrapper.d.ts +37 -0
  23. package/dist/host-api/ipc-wrapper.d.ts.map +1 -0
  24. package/dist/host-api/ipc-wrapper.js +128 -0
  25. package/dist/host-api/ipc-wrapper.js.map +1 -0
  26. package/dist/host-api/versions.d.ts +12 -0
  27. package/dist/host-api/versions.d.ts.map +1 -0
  28. package/dist/host-api/versions.js +5 -0
  29. package/dist/host-api/versions.js.map +1 -0
  30. package/dist/index.d.ts +8 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +22 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/instance-base.d.ts +1 -0
  35. package/dist/instance-base.d.ts.map +1 -0
  36. package/dist/internal/actions.d.ts +16 -0
  37. package/dist/internal/actions.d.ts.map +1 -0
  38. package/dist/internal/actions.js +223 -0
  39. package/dist/internal/actions.js.map +1 -0
  40. package/dist/internal/base.d.ts +11 -0
  41. package/dist/internal/base.d.ts.map +1 -0
  42. package/dist/internal/base.js +39 -0
  43. package/dist/internal/base.js.map +1 -0
  44. package/dist/internal/feedback.d.ts +20 -0
  45. package/dist/internal/feedback.d.ts.map +1 -0
  46. package/dist/internal/feedback.js +307 -0
  47. package/dist/internal/feedback.js.map +1 -0
  48. package/dist/internal/upgrade.d.ts +15 -0
  49. package/dist/internal/upgrade.d.ts.map +1 -0
  50. package/dist/internal/upgrade.js +174 -0
  51. package/dist/internal/upgrade.js.map +1 -0
  52. package/dist/manifest.d.ts +1 -0
  53. package/dist/manifest.d.ts.map +1 -0
  54. package/dist/module-api/action.d.ts +1 -0
  55. package/dist/module-api/action.d.ts.map +1 -0
  56. package/dist/module-api/base.d.ts +23 -3
  57. package/dist/module-api/base.d.ts.map +1 -0
  58. package/dist/module-api/base.js +338 -47
  59. package/dist/module-api/base.js.map +1 -1
  60. package/dist/module-api/common.d.ts +1 -0
  61. package/dist/module-api/common.d.ts.map +1 -0
  62. package/dist/module-api/config.d.ts +1 -0
  63. package/dist/module-api/config.d.ts.map +1 -0
  64. package/dist/module-api/enums.d.ts +2 -0
  65. package/dist/module-api/enums.d.ts.map +1 -0
  66. package/dist/module-api/enums.js.map +1 -1
  67. package/dist/module-api/feedback.d.ts +1 -0
  68. package/dist/module-api/feedback.d.ts.map +1 -0
  69. package/dist/module-api/graphics-composite.d.ts +11 -0
  70. package/dist/module-api/graphics-composite.d.ts.map +1 -0
  71. package/dist/module-api/graphics-composite.js +3 -0
  72. package/dist/module-api/graphics-composite.js.map +1 -0
  73. package/dist/module-api/graphics.d.ts +83 -0
  74. package/dist/module-api/graphics.d.ts.map +1 -0
  75. package/dist/module-api/graphics.js +12 -0
  76. package/dist/module-api/graphics.js.map +1 -0
  77. package/dist/module-api/http.d.ts +1 -0
  78. package/dist/module-api/http.d.ts.map +1 -0
  79. package/dist/module-api/index.d.ts +3 -0
  80. package/dist/module-api/index.d.ts.map +1 -0
  81. package/dist/module-api/index.js +2 -0
  82. package/dist/module-api/index.js.map +1 -1
  83. package/dist/module-api/input.d.ts +1 -0
  84. package/dist/module-api/input.d.ts.map +1 -0
  85. package/dist/module-api/preset.d.ts +49 -1
  86. package/dist/module-api/preset.d.ts.map +1 -0
  87. package/dist/module-api/shared-udp-socket.d.ts +4 -2
  88. package/dist/module-api/shared-udp-socket.d.ts.map +1 -0
  89. package/dist/module-api/shared-udp-socket.js +15 -13
  90. package/dist/module-api/shared-udp-socket.js.map +1 -1
  91. package/dist/module-api/style.d.ts +1 -0
  92. package/dist/module-api/style.d.ts.map +1 -0
  93. package/dist/module-api/upgrade.d.ts +1 -0
  94. package/dist/module-api/upgrade.d.ts.map +1 -0
  95. package/dist/module-api/variable.d.ts +1 -0
  96. package/dist/module-api/variable.d.ts.map +1 -0
  97. package/dist/util.d.ts +1 -0
  98. package/dist/util.d.ts.map +1 -0
  99. package/lib/debounce-fn/index.d.ts +83 -0
  100. package/lib/debounce-fn/index.js +78 -0
  101. package/lib/debounce-fn/license +9 -0
  102. package/lib/debounce-fn/readme.md +64 -0
  103. package/package.json +35 -6
  104. package/dist/__mocks__/net.d.ts +0 -30
  105. package/dist/__mocks__/net.js +0 -108
  106. package/dist/__mocks__/net.js.map +0 -1
  107. package/dist/__mocks__/util.d.ts +0 -8
  108. package/dist/__mocks__/util.js +0 -44
  109. package/dist/__mocks__/util.js.map +0 -1
  110. package/dist/helpers/__tests__/tcp.spec.d.ts +0 -1
  111. package/dist/helpers/__tests__/tcp.spec.js +0 -210
  112. package/dist/helpers/__tests__/tcp.spec.js.map +0 -1
  113. package/dist/helpers/__tests__/udp.spec.d.ts +0 -1
  114. package/dist/helpers/__tests__/udp.spec.js +0 -200
  115. package/dist/helpers/__tests__/udp.spec.js.map +0 -1
  116. package/dist/host-api/context.d.ts +0 -59
  117. package/dist/host-api/context.js.map +0 -1
  118. package/dist/logging.d.ts +0 -20
  119. package/dist/logging.js +0 -25
  120. package/dist/logging.js.map +0 -1
  121. package/dist/main.d.ts +0 -8
  122. package/dist/main.js +0 -14
  123. package/dist/main.js.map +0 -1
  124. package/dist/module-api/__tests__/shared-udp-socket.spec.d.ts +0 -1
  125. package/dist/module-api/__tests__/shared-udp-socket.spec.js +0 -272
  126. package/dist/module-api/__tests__/shared-udp-socket.spec.js.map +0 -1
@@ -1,200 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const vitest_1 = require("vitest");
5
- const udp_js_1 = require("../udp.js");
6
- const events_1 = tslib_1.__importDefault(require("events"));
7
- const enums_js_1 = require("../../module-api/enums.js");
8
- const createSocketMock = vitest_1.vi.fn(() => {
9
- throw new Error('Not implemented');
10
- });
11
- vitest_1.vi.mock('dgram', () => {
12
- return {
13
- default: {
14
- createSocket: (...args) => createSocketMock(...args),
15
- },
16
- };
17
- });
18
- class MinimalSocket extends events_1.default {
19
- isOpen = false;
20
- constructor() {
21
- super();
22
- }
23
- async emitMessage(address, port, msg) {
24
- const rinfo = {
25
- address: address,
26
- port: port,
27
- family: 'IPv4',
28
- size: msg.length,
29
- };
30
- this.emit('message', msg, rinfo);
31
- await vitest_1.vi.runAllTimersAsync();
32
- }
33
- bind = vitest_1.vi.fn(() => {
34
- throw new Error('Not implemented');
35
- });
36
- send = vitest_1.vi.fn(() => {
37
- throw new Error('Not implemented');
38
- });
39
- close = vitest_1.vi.fn(() => {
40
- return this;
41
- });
42
- }
43
- (0, vitest_1.describe)('UDP', () => {
44
- (0, vitest_1.beforeEach)(() => {
45
- createSocketMock.mockClear();
46
- });
47
- (0, vitest_1.describe)('construct', () => {
48
- // beforeEach(() => {
49
- // vi.useFakeTimers()
50
- // })
51
- (0, vitest_1.it)('no socket', () => {
52
- createSocketMock.mockImplementationOnce(() => {
53
- throw new Error('No sockets!');
54
- });
55
- (0, vitest_1.expect)(() => new udp_js_1.UDPHelper('1.2.3.4', 852)).toThrow('No sockets!');
56
- });
57
- (0, vitest_1.it)('bad bind', async () => {
58
- const rawSocket = new MinimalSocket();
59
- createSocketMock.mockReturnValueOnce(rawSocket);
60
- (0, vitest_1.expect)(() => new udp_js_1.UDPHelper('1.2.3.4', 852)).toThrow('Unable to bind');
61
- (0, vitest_1.expect)(createSocketMock).toHaveBeenCalledTimes(1);
62
- (0, vitest_1.expect)(rawSocket.bind).toHaveBeenCalledTimes(1);
63
- (0, vitest_1.expect)(rawSocket.bind).toHaveBeenCalledWith(0, undefined);
64
- });
65
- (0, vitest_1.it)('ok', async () => {
66
- const rawSocket = new MinimalSocket();
67
- createSocketMock.mockReturnValueOnce(rawSocket);
68
- rawSocket.bind.mockImplementationOnce(() => {
69
- // No op
70
- return rawSocket;
71
- });
72
- const socket = new udp_js_1.UDPHelper('1.2.3.4', 852);
73
- try {
74
- (0, vitest_1.expect)(socket).toBeTruthy();
75
- (0, vitest_1.expect)(createSocketMock).toHaveBeenCalledTimes(1);
76
- (0, vitest_1.expect)(rawSocket.bind).toHaveBeenCalledTimes(1);
77
- (0, vitest_1.expect)(rawSocket.bind).toHaveBeenCalledWith(0, undefined);
78
- }
79
- finally {
80
- socket.destroy();
81
- }
82
- });
83
- // TODO - options
84
- });
85
- (0, vitest_1.it)('error propogation', async () => {
86
- const rawSocket = new MinimalSocket();
87
- createSocketMock.mockReturnValueOnce(rawSocket);
88
- rawSocket.bind.mockImplementationOnce(() => rawSocket);
89
- const socket = new udp_js_1.UDPHelper('1.2.3.4', 852);
90
- try {
91
- (0, vitest_1.expect)(socket).toBeTruthy();
92
- const errorHandler = vitest_1.vi.fn(() => null);
93
- const statusHandler = vitest_1.vi.fn(() => null);
94
- socket.on('error', errorHandler);
95
- socket.on('status_change', statusHandler);
96
- (0, vitest_1.expect)(createSocketMock).toHaveBeenCalledTimes(1);
97
- rawSocket.emit('error', new Error('My fake error'));
98
- (0, vitest_1.expect)(errorHandler).toHaveBeenCalledTimes(1);
99
- (0, vitest_1.expect)(errorHandler).toHaveBeenCalledWith(new Error('My fake error'));
100
- (0, vitest_1.expect)(statusHandler).toHaveBeenCalledTimes(1);
101
- (0, vitest_1.expect)(statusHandler).toHaveBeenCalledWith(enums_js_1.InstanceStatus.UnknownError, 'My fake error');
102
- }
103
- finally {
104
- socket.destroy();
105
- }
106
- });
107
- (0, vitest_1.describe)('listening', () => {
108
- (0, vitest_1.it)('ok', async () => {
109
- const rawSocket = new MinimalSocket();
110
- createSocketMock.mockReturnValueOnce(rawSocket);
111
- rawSocket.bind.mockImplementationOnce(() => rawSocket);
112
- const socket = new udp_js_1.UDPHelper('1.2.3.4', 852);
113
- try {
114
- (0, vitest_1.expect)(socket).toBeTruthy();
115
- const listeningHandler = vitest_1.vi.fn(() => null);
116
- const statusHandler = vitest_1.vi.fn(() => null);
117
- socket.on('listening', listeningHandler);
118
- socket.on('status_change', statusHandler);
119
- (0, vitest_1.expect)(createSocketMock).toHaveBeenCalledTimes(1);
120
- rawSocket.emit('listening');
121
- (0, vitest_1.expect)(listeningHandler).toHaveBeenCalledTimes(1);
122
- (0, vitest_1.expect)(statusHandler).toHaveBeenCalledTimes(1);
123
- (0, vitest_1.expect)(statusHandler).toHaveBeenCalledWith(enums_js_1.InstanceStatus.Ok, undefined);
124
- }
125
- finally {
126
- socket.destroy();
127
- }
128
- });
129
- // TODO - options
130
- });
131
- // it('no error handler timeout', () => {
132
- // const rawSocket = new MinimalSocket()
133
- // createSocketMock.mockReturnValueOnce(rawSocket as any)
134
- // rawSocket.bind.mockImplementationOnce(() => rawSocket as any)
135
- // vi.advanceTimersByTimeAsync(10000)
136
- // })
137
- (0, vitest_1.describe)('send', () => {
138
- const rawSocket = new MinimalSocket();
139
- rawSocket.bind.mockImplementation(() => rawSocket);
140
- let socket;
141
- (0, vitest_1.beforeAll)(() => {
142
- createSocketMock.mockReturnValueOnce(rawSocket);
143
- socket = new udp_js_1.UDPHelper('1.2.3.4', 852);
144
- (0, vitest_1.expect)(socket).toBeTruthy();
145
- });
146
- (0, vitest_1.beforeEach)(() => {
147
- rawSocket.close.mockClear();
148
- rawSocket.send.mockClear();
149
- });
150
- (0, vitest_1.afterAll)(() => {
151
- if (socket)
152
- socket.destroy();
153
- });
154
- (0, vitest_1.it)('destroyed', async () => {
155
- createSocketMock.mockReturnValueOnce(rawSocket);
156
- const mySocket = new udp_js_1.UDPHelper('1.2.3.4', 852);
157
- (0, vitest_1.expect)(mySocket).toBeTruthy();
158
- mySocket.destroy();
159
- (0, vitest_1.expect)(rawSocket.close).toHaveBeenCalledTimes(1);
160
- await (0, vitest_1.expect)(mySocket.send('test')).rejects.toThrow('Cannot write to destroyed socket');
161
- });
162
- (0, vitest_1.it)('no message', async () => {
163
- await (0, vitest_1.expect)(socket.send(undefined)).rejects.toThrow('No message to send');
164
- (0, vitest_1.expect)(rawSocket.send).toHaveBeenCalledTimes(0);
165
- });
166
- (0, vitest_1.it)('ok: string', async () => {
167
- rawSocket.send.mockImplementation((msg, offset, length, cb) => {
168
- if (!cb)
169
- return;
170
- cb(null, length);
171
- });
172
- await (0, vitest_1.expect)(socket.send('test 123')).resolves.toBeUndefined();
173
- (0, vitest_1.expect)(rawSocket.send).toHaveBeenCalledTimes(1);
174
- (0, vitest_1.expect)(rawSocket.send).toHaveBeenCalledWith('test 123', 852, '1.2.3.4', vitest_1.expect.any(Function));
175
- });
176
- (0, vitest_1.it)('ok: buffer', async () => {
177
- rawSocket.send.mockImplementation((msg, offset, length, cb) => {
178
- if (!cb)
179
- return;
180
- cb(null, length);
181
- });
182
- const msg = Buffer.from('test 123');
183
- await (0, vitest_1.expect)(socket.send(msg)).resolves.toBeUndefined();
184
- (0, vitest_1.expect)(rawSocket.send).toHaveBeenCalledTimes(1);
185
- (0, vitest_1.expect)(rawSocket.send).toHaveBeenCalledWith(msg, 852, '1.2.3.4', vitest_1.expect.any(Function));
186
- });
187
- (0, vitest_1.it)('send error', async () => {
188
- rawSocket.send.mockImplementation((msg, offset, length, cb) => {
189
- if (!cb)
190
- return;
191
- cb(new Error('buffer overflow'), 0);
192
- });
193
- const msg = Buffer.from('test 123');
194
- await (0, vitest_1.expect)(socket.send(msg)).rejects.toThrow('buffer overflow');
195
- (0, vitest_1.expect)(rawSocket.send).toHaveBeenCalledTimes(1);
196
- (0, vitest_1.expect)(rawSocket.send).toHaveBeenCalledWith(msg, 852, '1.2.3.4', vitest_1.expect.any(Function));
197
- });
198
- });
199
- });
200
- //# sourceMappingURL=udp.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"udp.spec.js","sourceRoot":"","sources":["../../../src/helpers/__tests__/udp.spec.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
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 type { RemoteInfo } from 'dgram';
8
- import type { CompanionActionDefinitions, CompanionFeedbackDefinitions, CompanionPresetDefinitions, CompanionRecordedAction, CompanionStaticUpgradeScript, CompanionVariableDefinition, CompanionVariableValue, CompanionVariableValues, InstanceStatus } from '../module-api/index.js';
9
- import type { OSCSomeArguments } from '../common/osc.js';
10
- import type { SharedUdpSocketImpl } from '../module-api/shared-udp-socket.js';
11
- export declare function isInstanceContext<TConfig, TSecrets>(obj: unknown): obj is InstanceContext<TConfig, TSecrets>;
12
- export interface InstanceContext<TConfig, TSecrets> extends InstanceSharedUdpSocketContext {
13
- readonly _isInstanceContext: true;
14
- readonly id: string;
15
- label: string;
16
- readonly upgradeScripts: CompanionStaticUpgradeScript<TConfig, TSecrets>[];
17
- saveConfig: (config: TConfig | undefined, secrets: TSecrets | undefined) => void;
18
- updateStatus(status: InstanceStatus, message: string | null): void;
19
- oscSend(host: string, port: number, path: string, args: OSCSomeArguments): void;
20
- parseVariablesInString(text: string): Promise<string>;
21
- recordAction(action: CompanionRecordedAction, uniquenessId?: string): void;
22
- setActionDefinitions: (actions: CompanionActionDefinitions) => void;
23
- subscribeActions: (actionIds: string[]) => void;
24
- unsubscribeActions: (actionIds: string[]) => void;
25
- setFeedbackDefinitions: (feedbacks: CompanionFeedbackDefinitions) => void;
26
- subscribeFeedbacks: (feedbackIds: string[]) => void;
27
- unsubscribeFeedbacks: (feedbackIds: string[]) => void;
28
- checkFeedbacks: (feedbackTypes: string[]) => void;
29
- checkFeedbacksById: (feedbackIds: string[]) => void;
30
- setPresetDefinitions: (presets: CompanionPresetDefinitions) => void;
31
- setVariableDefinitions: (variables: CompanionVariableDefinition[]) => void;
32
- setVariableValues: (values: CompanionVariableValues) => void;
33
- getVariableValue: (variableId: string) => CompanionVariableValue | undefined;
34
- }
35
- export interface InstanceSharedUdpSocketContext {
36
- readonly sharedUdpSocketHandlers: Map<string, SharedUdpSocketImpl>;
37
- sharedUdpSocketJoin: (msg: SharedUdpSocketMessageJoin) => Promise<string>;
38
- sharedUdpSocketLeave: (msg: SharedUdpSocketMessageLeave) => Promise<void>;
39
- sharedUdpSocketSend: (msg: SharedUdpSocketMessageSend) => Promise<void>;
40
- }
41
- export interface SharedUdpSocketMessageJoin {
42
- family: 'udp4' | 'udp6';
43
- portNumber: number;
44
- }
45
- export interface SharedUdpSocketMessageLeave {
46
- handleId: string;
47
- }
48
- export interface SharedUdpSocketMessageSend {
49
- handleId: string;
50
- message: Buffer;
51
- address: string;
52
- port: number;
53
- }
54
- export interface SharedUdpSocketMessage {
55
- handleId: string;
56
- portNumber: number;
57
- message: Buffer;
58
- source: RemoteInfo;
59
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/host-api/context.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAiBH,8CAGC;AAHD,SAAgB,iBAAiB,CAAoB,GAAY;IAChE,MAAM,IAAI,GAAG,GAAyC,CAAA;IACtD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAA;AACnG,CAAC"}
package/dist/logging.d.ts DELETED
@@ -1,20 +0,0 @@
1
- declare global {
2
- /**
3
- * INTERNAL USE ONLY
4
- */
5
- var SURFACE_LOGGER: LoggingSink | undefined;
6
- }
7
- export type LogLevel = 'info' | 'warn' | 'error' | 'debug';
8
- export interface ModuleLogger {
9
- debug: (message: string) => void;
10
- info: (message: string) => void;
11
- warn: (message: string) => void;
12
- error: (message: string) => void;
13
- }
14
- export type LoggingSink = (source: string | undefined, level: LogLevel, message: string) => void;
15
- /**
16
- * Create a logger instance
17
- * @param source The source path to use for the logger
18
- * @returns A logger instance
19
- */
20
- export declare function createModuleLogger(source?: string): ModuleLogger;
package/dist/logging.js DELETED
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createModuleLogger = createModuleLogger;
4
- const defaultLoggingSink = (source, level, message) => {
5
- // Default logging implementation for unit testing purposes, this should be replaced by the host application
6
- console.log(`[${level.toUpperCase()}]${source ? ` [${source}]` : ''} ${message}`);
7
- };
8
- function logToSink(source, level, message) {
9
- const sink = typeof global.SURFACE_LOGGER === 'function' ? global.SURFACE_LOGGER : defaultLoggingSink;
10
- sink(source, level, message);
11
- }
12
- /**
13
- * Create a logger instance
14
- * @param source The source path to use for the logger
15
- * @returns A logger instance
16
- */
17
- function createModuleLogger(source) {
18
- return {
19
- debug: (message) => logToSink(source, 'debug', message),
20
- info: (message) => logToSink(source, 'info', message),
21
- warn: (message) => logToSink(source, 'warn', message),
22
- error: (message) => logToSink(source, 'error', message),
23
- };
24
- }
25
- //# sourceMappingURL=logging.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":";;AAiCA,gDAOC;AAtBD,MAAM,kBAAkB,GAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAClE,4GAA4G;IAC5G,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,CAAA;AAClF,CAAC,CAAA;AAED,SAAS,SAAS,CAAC,MAA0B,EAAE,KAAe,EAAE,OAAe;IAC9E,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAA;IACrG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,MAAe;IACjD,OAAO;QACN,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/D,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;QAC7D,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;QAC7D,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;KAC/D,CAAA;AACF,CAAC"}
package/dist/main.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export * from './logging.js';
2
- export * from './manifest.js';
3
- export * from './module-api/index.js';
4
- export * from './common/osc.js';
5
- export * from './common/json-value.js';
6
- export * from './util.js';
7
- export * from './helpers/index.js';
8
- export { runEntrypoint, InstanceConstructor } from './entrypoint.js';
package/dist/main.js DELETED
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runEntrypoint = void 0;
4
- const tslib_1 = require("tslib");
5
- tslib_1.__exportStar(require("./logging.js"), exports);
6
- tslib_1.__exportStar(require("./manifest.js"), exports);
7
- tslib_1.__exportStar(require("./module-api/index.js"), exports);
8
- tslib_1.__exportStar(require("./common/osc.js"), exports);
9
- tslib_1.__exportStar(require("./common/json-value.js"), exports);
10
- tslib_1.__exportStar(require("./util.js"), exports);
11
- tslib_1.__exportStar(require("./helpers/index.js"), exports);
12
- var entrypoint_js_1 = require("./entrypoint.js");
13
- Object.defineProperty(exports, "runEntrypoint", { enumerable: true, get: function () { return entrypoint_js_1.runEntrypoint; } });
14
- //# sourceMappingURL=main.js.map
package/dist/main.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;AAAA,uDAA4B;AAC5B,wDAA6B;AAC7B,gEAAqC;AACrC,0DAA+B;AAC/B,iEAAsC;AACtC,oDAAyB;AACzB,6DAAkC;AAElC,iDAAoE;AAA3D,8GAAA,aAAa,OAAA"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,272 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const nanoid_1 = require("nanoid");
5
- const shared_udp_socket_js_1 = require("../shared-udp-socket.js");
6
- const util_js_1 = require("../../__mocks__/util.js");
7
- async function sleepImmediate() {
8
- return new Promise((resolve) => setImmediate(resolve));
9
- }
10
- (0, vitest_1.describe)('Shared UDP', () => {
11
- function createContext() {
12
- return {
13
- sharedUdpSocketHandlers: new Map(),
14
- sharedUdpSocketJoin: vitest_1.vi.fn(() => {
15
- throw new Error('Not implemented');
16
- }),
17
- sharedUdpSocketLeave: vitest_1.vi.fn(() => {
18
- throw new Error('Not implemented');
19
- }),
20
- sharedUdpSocketSend: vitest_1.vi.fn(() => {
21
- throw new Error('Not implemented');
22
- }),
23
- };
24
- }
25
- (0, vitest_1.it)('call fail before open', () => {
26
- const ctx = createContext();
27
- const socket = new shared_udp_socket_js_1.SharedUdpSocketImpl(ctx, { type: 'udp4' });
28
- (0, vitest_1.expect)(() => socket.close()).toThrow(/Socket is not open/);
29
- (0, vitest_1.expect)(() => socket.send('', 12, '')).toThrow(/Socket is not open/);
30
- });
31
- (0, vitest_1.describe)('bind', () => {
32
- (0, vitest_1.it)('ok', async () => {
33
- const ctx = createContext();
34
- const socket = new shared_udp_socket_js_1.SharedUdpSocketImpl(ctx, { type: 'udp4' });
35
- (0, vitest_1.expect)(socket.eventNames()).toHaveLength(0);
36
- const sendPromises = [];
37
- ctx.sharedUdpSocketJoin.mockImplementationOnce(async () => {
38
- const sendPromise = (0, util_js_1.createManualPromise)();
39
- sendPromises.push(sendPromise);
40
- return sendPromise;
41
- });
42
- const bindCb = vitest_1.vi.fn();
43
- socket.bind(5678, '1.2.3.4', bindCb);
44
- // Opening a second time should fail
45
- (0, vitest_1.expect)(() => socket.bind(5678, '1.2.3.4', bindCb)).toThrow(/Socket is already/);
46
- await sleepImmediate();
47
- (0, vitest_1.expect)(bindCb).toHaveBeenCalledTimes(0);
48
- // Check now a listener
49
- (0, vitest_1.expect)(socket.eventNames()).toHaveLength(1);
50
- (0, vitest_1.expect)(socket.listenerCount('listening')).toBe(1);
51
- // Check call was made
52
- (0, vitest_1.expect)(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(1);
53
- (0, vitest_1.expect)(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
54
- (0, vitest_1.expect)(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
55
- (0, vitest_1.expect)(sendPromises).toHaveLength(1);
56
- (0, vitest_1.expect)(ctx.sharedUdpSocketJoin).toHaveBeenCalledWith({
57
- family: 'udp4',
58
- portNumber: 5678,
59
- });
60
- // Mock receive a response
61
- const handleId = (0, nanoid_1.nanoid)();
62
- sendPromises[0].manualResolve(handleId);
63
- // Verify that opened successfully
64
- await sleepImmediate();
65
- (0, vitest_1.expect)(bindCb).toHaveBeenCalledTimes(1);
66
- // Should be tracked now
67
- (0, vitest_1.expect)(ctx.sharedUdpSocketHandlers.get(handleId)).toBe(socket);
68
- });
69
- (0, vitest_1.it)('error', async () => {
70
- const ctx = createContext();
71
- const socket = new shared_udp_socket_js_1.SharedUdpSocketImpl(ctx, { type: 'udp4' });
72
- (0, vitest_1.expect)(socket.eventNames()).toHaveLength(0);
73
- const sendPromises = [];
74
- ctx.sharedUdpSocketJoin.mockImplementationOnce(async () => {
75
- const sendPromise = (0, util_js_1.createManualPromise)();
76
- sendPromises.push(sendPromise);
77
- return sendPromise;
78
- });
79
- const bindCb = vitest_1.vi.fn();
80
- socket.bind(5678, '1.2.3.4', bindCb);
81
- await sleepImmediate();
82
- (0, vitest_1.expect)(bindCb).toHaveBeenCalledTimes(0);
83
- // setup an error listener
84
- const errorCb = vitest_1.vi.fn();
85
- socket.on('error', errorCb);
86
- // Check call was made
87
- (0, vitest_1.expect)(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(1);
88
- (0, vitest_1.expect)(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
89
- (0, vitest_1.expect)(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
90
- (0, vitest_1.expect)(sendPromises).toHaveLength(1);
91
- // Mock receive a response
92
- const err = new Error('Some backend failure');
93
- sendPromises[0].manualReject(err);
94
- // Verify that opening failed
95
- await sleepImmediate();
96
- (0, vitest_1.expect)(bindCb).toHaveBeenCalledTimes(0);
97
- (0, vitest_1.expect)(ctx.sharedUdpSocketHandlers.size).toBe(0);
98
- // Error should have propogated
99
- (0, vitest_1.expect)(errorCb).toHaveBeenCalledTimes(1);
100
- (0, vitest_1.expect)(errorCb).toHaveBeenCalledWith(err);
101
- });
102
- });
103
- async function createAndOpenSocket(ctx) {
104
- const socket = new shared_udp_socket_js_1.SharedUdpSocketImpl(ctx, { type: 'udp4' });
105
- (0, vitest_1.expect)(socket.eventNames()).toHaveLength(0);
106
- const sendPromises = [];
107
- ctx.sharedUdpSocketJoin.mockImplementationOnce(async () => {
108
- const sendPromise = (0, util_js_1.createManualPromise)();
109
- sendPromises.push(sendPromise);
110
- return sendPromise;
111
- });
112
- const bindCb = vitest_1.vi.fn();
113
- socket.bind(5678, '1.2.3.4', bindCb);
114
- // Mock receive a response
115
- (0, vitest_1.expect)(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(1);
116
- (0, vitest_1.expect)(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
117
- (0, vitest_1.expect)(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
118
- (0, vitest_1.expect)(sendPromises).toHaveLength(1);
119
- const handleId = (0, nanoid_1.nanoid)();
120
- sendPromises[0].manualResolve(handleId);
121
- // Verify that opened successfully
122
- await sleepImmediate();
123
- (0, vitest_1.expect)(bindCb).toHaveBeenCalledTimes(1);
124
- // Should be tracked now
125
- (0, vitest_1.expect)(ctx.sharedUdpSocketHandlers.get(handleId)).toBe(socket);
126
- ctx.sharedUdpSocketJoin.mockClear();
127
- return { socket, handleId };
128
- }
129
- (0, vitest_1.describe)('send', () => {
130
- (0, vitest_1.it)('ok', async () => {
131
- const ctx = createContext();
132
- const { socket, handleId } = await createAndOpenSocket(ctx);
133
- const sendPromises = [];
134
- ctx.sharedUdpSocketSend.mockImplementationOnce(async () => {
135
- const sendPromise = (0, util_js_1.createManualPromise)();
136
- sendPromises.push(sendPromise);
137
- return sendPromise;
138
- });
139
- // Do send
140
- const sendCb = vitest_1.vi.fn();
141
- const message = Buffer.from('my fake message');
142
- socket.send(message, 4789, '4.5.6.7', sendCb);
143
- // Check callbacks
144
- await sleepImmediate();
145
- (0, vitest_1.expect)(sendCb).toHaveBeenCalledTimes(0);
146
- // Check call was made
147
- (0, vitest_1.expect)(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(1);
148
- (0, vitest_1.expect)(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
149
- (0, vitest_1.expect)(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(0);
150
- (0, vitest_1.expect)(sendPromises).toHaveLength(1);
151
- (0, vitest_1.expect)(ctx.sharedUdpSocketSend).toHaveBeenCalledWith({
152
- handleId,
153
- message,
154
- address: '4.5.6.7',
155
- port: 4789,
156
- });
157
- // Mock receive a response
158
- sendPromises[0].manualResolve(null);
159
- // Verify the calback
160
- await sleepImmediate();
161
- (0, vitest_1.expect)(sendCb).toHaveBeenCalledTimes(1);
162
- (0, vitest_1.expect)(ctx.sharedUdpSocketHandlers.has(handleId)).toBeTruthy();
163
- });
164
- (0, vitest_1.it)('error', async () => {
165
- const ctx = createContext();
166
- const { socket, handleId } = await createAndOpenSocket(ctx);
167
- const sendPromises = [];
168
- ctx.sharedUdpSocketSend.mockImplementationOnce(async () => {
169
- const sendPromise = (0, util_js_1.createManualPromise)();
170
- sendPromises.push(sendPromise);
171
- return sendPromise;
172
- });
173
- // Do send
174
- const sendCb = vitest_1.vi.fn();
175
- const message = Buffer.from('my fake message');
176
- socket.send(message, 4789, '4.5.6.7', sendCb);
177
- const errorCb = vitest_1.vi.fn();
178
- socket.on('error', errorCb);
179
- // Check callbacks
180
- await sleepImmediate();
181
- (0, vitest_1.expect)(sendCb).toHaveBeenCalledTimes(0);
182
- // Check call was made
183
- (0, vitest_1.expect)(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(1);
184
- (0, vitest_1.expect)(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
185
- (0, vitest_1.expect)(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(0);
186
- (0, vitest_1.expect)(sendPromises).toHaveLength(1);
187
- (0, vitest_1.expect)(ctx.sharedUdpSocketSend).toHaveBeenCalledWith({
188
- handleId,
189
- message,
190
- address: '4.5.6.7',
191
- port: 4789,
192
- });
193
- // Mock receive a response
194
- const err = new Error('Some backend failure');
195
- sendPromises[0].manualReject(err);
196
- // Verify the calback
197
- await sleepImmediate();
198
- (0, vitest_1.expect)(sendCb).toHaveBeenCalledTimes(0);
199
- (0, vitest_1.expect)(errorCb).toHaveBeenCalledTimes(1);
200
- (0, vitest_1.expect)(errorCb).toHaveBeenCalledWith(err);
201
- (0, vitest_1.expect)(ctx.sharedUdpSocketHandlers.has(handleId)).toBeTruthy();
202
- });
203
- });
204
- (0, vitest_1.describe)('close', () => {
205
- (0, vitest_1.it)('ok', async () => {
206
- const ctx = createContext();
207
- const { socket, handleId } = await createAndOpenSocket(ctx);
208
- const sendPromises = [];
209
- ctx.sharedUdpSocketLeave.mockImplementationOnce(async () => {
210
- const sendPromise = (0, util_js_1.createManualPromise)();
211
- sendPromises.push(sendPromise);
212
- return sendPromise;
213
- });
214
- // Do send
215
- const closeCb = vitest_1.vi.fn();
216
- socket.close(closeCb);
217
- // Check callbacks
218
- await sleepImmediate();
219
- (0, vitest_1.expect)(closeCb).toHaveBeenCalledTimes(0);
220
- // Check call was made
221
- (0, vitest_1.expect)(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(1);
222
- (0, vitest_1.expect)(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
223
- (0, vitest_1.expect)(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(0);
224
- (0, vitest_1.expect)(sendPromises).toHaveLength(1);
225
- (0, vitest_1.expect)(ctx.sharedUdpSocketLeave).toHaveBeenCalledWith({
226
- handleId,
227
- });
228
- // Mock receive a response
229
- sendPromises[0].manualResolve(null);
230
- // Verify the calback
231
- await sleepImmediate();
232
- (0, vitest_1.expect)(closeCb).toHaveBeenCalledTimes(1);
233
- (0, vitest_1.expect)(ctx.sharedUdpSocketHandlers.has(handleId)).toBeFalsy();
234
- });
235
- (0, vitest_1.it)('error', async () => {
236
- const ctx = createContext();
237
- const { socket, handleId } = await createAndOpenSocket(ctx);
238
- const sendPromises = [];
239
- ctx.sharedUdpSocketLeave.mockImplementationOnce(async () => {
240
- const sendPromise = (0, util_js_1.createManualPromise)();
241
- sendPromises.push(sendPromise);
242
- return sendPromise;
243
- });
244
- // Do send
245
- const closeCb = vitest_1.vi.fn();
246
- socket.close(closeCb);
247
- const errorCb = vitest_1.vi.fn();
248
- socket.on('error', errorCb);
249
- // Check callbacks
250
- await sleepImmediate();
251
- (0, vitest_1.expect)(closeCb).toHaveBeenCalledTimes(0);
252
- // Check call was made
253
- (0, vitest_1.expect)(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(1);
254
- (0, vitest_1.expect)(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
255
- (0, vitest_1.expect)(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(0);
256
- (0, vitest_1.expect)(sendPromises).toHaveLength(1);
257
- (0, vitest_1.expect)(ctx.sharedUdpSocketLeave).toHaveBeenCalledWith({
258
- handleId,
259
- });
260
- // Mock receive a response
261
- const err = new Error('Some backend failure');
262
- sendPromises[0].manualReject(err);
263
- // Verify the calback
264
- await sleepImmediate();
265
- (0, vitest_1.expect)(closeCb).toHaveBeenCalledTimes(0);
266
- (0, vitest_1.expect)(errorCb).toHaveBeenCalledTimes(1);
267
- (0, vitest_1.expect)(errorCb).toHaveBeenCalledWith(err);
268
- (0, vitest_1.expect)(ctx.sharedUdpSocketHandlers.has(handleId)).toBeFalsy();
269
- });
270
- });
271
- });
272
- //# sourceMappingURL=shared-udp-socket.spec.js.map