stagelinq 1.0.7 → 3.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 (194) hide show
  1. package/README.md +194 -50
  2. package/dist/Databases/Databases.d.ts +19 -0
  3. package/dist/Databases/Databases.js +106 -0
  4. package/dist/Databases/Databases.js.map +1 -0
  5. package/dist/Databases/DbConnection.d.ts +22 -0
  6. package/dist/Databases/DbConnection.js +48 -0
  7. package/dist/Databases/DbConnection.js.map +1 -0
  8. package/dist/Databases/index.d.ts +2 -0
  9. package/dist/Databases/index.js +19 -0
  10. package/dist/Databases/index.js.map +1 -0
  11. package/dist/LogEmitter/index.d.ts +20 -0
  12. package/dist/LogEmitter/index.js +35 -0
  13. package/dist/LogEmitter/index.js.map +1 -0
  14. package/dist/StageLinq/index.d.ts +131 -0
  15. package/dist/StageLinq/index.js +237 -0
  16. package/dist/StageLinq/index.js.map +1 -0
  17. package/dist/cli/beatinfo.d.ts +11 -0
  18. package/dist/cli/beatinfo.js +84 -0
  19. package/dist/cli/beatinfo.js.map +1 -0
  20. package/dist/cli/discover.d.ts +9 -0
  21. package/dist/cli/discover.js +97 -0
  22. package/dist/cli/discover.js.map +1 -0
  23. package/dist/cli/index.d.ts +1 -0
  24. package/dist/cli/index.js +197 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/config.d.ts +31 -0
  27. package/dist/config.js +32 -0
  28. package/dist/config.js.map +1 -0
  29. package/dist/devices/Player.d.ts +63 -0
  30. package/dist/devices/Player.js +189 -0
  31. package/dist/devices/Player.js.map +1 -0
  32. package/dist/devices/PlayerMessageQueue.d.ts +36 -0
  33. package/dist/devices/PlayerMessageQueue.js +56 -0
  34. package/dist/devices/PlayerMessageQueue.js.map +1 -0
  35. package/dist/eaas/beacon.d.ts +72 -0
  36. package/dist/eaas/beacon.js +161 -0
  37. package/dist/eaas/beacon.js.map +1 -0
  38. package/dist/eaas/discoverer.d.ts +89 -0
  39. package/dist/eaas/discoverer.js +225 -0
  40. package/dist/eaas/discoverer.js.map +1 -0
  41. package/dist/eaas/engine-library-client.d.ts +120 -0
  42. package/dist/eaas/engine-library-client.js +204 -0
  43. package/dist/eaas/engine-library-client.js.map +1 -0
  44. package/dist/eaas/grpc-types.d.ts +319 -0
  45. package/dist/eaas/grpc-types.js +90 -0
  46. package/dist/eaas/grpc-types.js.map +1 -0
  47. package/dist/eaas/http-client.d.ts +75 -0
  48. package/dist/eaas/http-client.js +139 -0
  49. package/dist/eaas/http-client.js.map +1 -0
  50. package/dist/eaas/index.d.ts +33 -0
  51. package/dist/eaas/index.js +50 -0
  52. package/dist/eaas/index.js.map +1 -0
  53. package/dist/eaas/messages.d.ts +43 -0
  54. package/dist/eaas/messages.js +186 -0
  55. package/dist/eaas/messages.js.map +1 -0
  56. package/dist/eaas/types.d.ts +64 -0
  57. package/dist/eaas/types.js +25 -0
  58. package/dist/eaas/types.js.map +1 -0
  59. package/{index.ts → dist/index.d.ts} +2 -0
  60. package/dist/index.js +48 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/network/ConnectionHealth.d.ts +121 -0
  63. package/dist/network/ConnectionHealth.js +216 -0
  64. package/dist/network/ConnectionHealth.js.map +1 -0
  65. package/dist/network/NetworkDevice.d.ts +40 -0
  66. package/dist/network/NetworkDevice.js +274 -0
  67. package/dist/network/NetworkDevice.js.map +1 -0
  68. package/dist/network/StageLinqDevices.d.ts +91 -0
  69. package/dist/network/StageLinqDevices.js +276 -0
  70. package/dist/network/StageLinqDevices.js.map +1 -0
  71. package/dist/network/StageLinqListener.d.ts +15 -0
  72. package/dist/network/StageLinqListener.js +58 -0
  73. package/dist/network/StageLinqListener.js.map +1 -0
  74. package/dist/network/announce.d.ts +25 -0
  75. package/dist/network/announce.js +260 -0
  76. package/dist/network/announce.js.map +1 -0
  77. package/dist/network/index.d.ts +5 -0
  78. package/dist/network/index.js +22 -0
  79. package/dist/network/index.js.map +1 -0
  80. package/dist/services/BeatInfo.d.ts +71 -0
  81. package/dist/services/BeatInfo.js +128 -0
  82. package/dist/services/BeatInfo.js.map +1 -0
  83. package/dist/services/Broadcast.d.ts +47 -0
  84. package/dist/services/Broadcast.js +88 -0
  85. package/dist/services/Broadcast.js.map +1 -0
  86. package/dist/services/FileTransfer.d.ts +30 -0
  87. package/dist/services/FileTransfer.js +283 -0
  88. package/dist/services/FileTransfer.js.map +1 -0
  89. package/dist/services/Service.d.ts +22 -0
  90. package/dist/services/Service.js +178 -0
  91. package/dist/services/Service.js.map +1 -0
  92. package/dist/services/StateMap.d.ts +20 -0
  93. package/dist/services/StateMap.js +149 -0
  94. package/dist/services/StateMap.js.map +1 -0
  95. package/dist/services/TimeSync.d.ts +57 -0
  96. package/dist/services/TimeSync.js +136 -0
  97. package/dist/services/TimeSync.js.map +1 -0
  98. package/{services/index.ts → dist/services/index.d.ts} +3 -0
  99. package/dist/services/index.js +23 -0
  100. package/dist/services/index.js.map +1 -0
  101. package/dist/tsconfig.tsbuildinfo +1 -0
  102. package/dist/types/common.d.ts +236 -0
  103. package/dist/types/common.js +243 -0
  104. package/dist/types/common.js.map +1 -0
  105. package/dist/types/index.d.ts +46 -0
  106. package/dist/types/index.js +21 -0
  107. package/dist/types/index.js.map +1 -0
  108. package/dist/types/models/Track.d.ts +50 -0
  109. package/dist/types/models/Track.js +3 -0
  110. package/dist/types/models/Track.js.map +1 -0
  111. package/dist/types/models/index.d.ts +1 -0
  112. package/dist/types/models/index.js +18 -0
  113. package/dist/types/models/index.js.map +1 -0
  114. package/dist/types/player.d.ts +40 -0
  115. package/dist/types/player.js +3 -0
  116. package/dist/types/player.js.map +1 -0
  117. package/dist/types/tokens.d.ts +10 -0
  118. package/dist/types/tokens.js +36 -0
  119. package/dist/types/tokens.js.map +1 -0
  120. package/dist/utils/Context.d.ts +13 -0
  121. package/dist/utils/Context.js +37 -0
  122. package/dist/utils/Context.js.map +1 -0
  123. package/dist/utils/ReadContext.d.ts +15 -0
  124. package/dist/utils/ReadContext.js +110 -0
  125. package/dist/utils/ReadContext.js.map +1 -0
  126. package/dist/utils/WriteContext.d.ts +22 -0
  127. package/dist/utils/WriteContext.js +87 -0
  128. package/dist/utils/WriteContext.js.map +1 -0
  129. package/dist/utils/getTempFilePath.d.ts +7 -0
  130. package/dist/utils/getTempFilePath.js +59 -0
  131. package/dist/utils/getTempFilePath.js.map +1 -0
  132. package/dist/utils/hex.d.ts +1 -0
  133. package/dist/utils/hex.js +55 -0
  134. package/dist/utils/hex.js.map +1 -0
  135. package/{utils/index.ts → dist/utils/index.d.ts} +2 -0
  136. package/dist/utils/index.js +26 -0
  137. package/dist/utils/index.js.map +1 -0
  138. package/dist/utils/log.js +2 -0
  139. package/dist/utils/log.js.map +1 -0
  140. package/dist/utils/sleep.d.ts +1 -0
  141. package/dist/utils/sleep.js +7 -0
  142. package/dist/utils/sleep.js.map +1 -0
  143. package/dist/utils/tcp.d.ts +4 -0
  144. package/dist/utils/tcp.js +18 -0
  145. package/dist/utils/tcp.js.map +1 -0
  146. package/dist/utils/token.d.ts +40 -0
  147. package/dist/utils/token.js +74 -0
  148. package/dist/utils/token.js.map +1 -0
  149. package/dist/utils/trackPath.d.ts +77 -0
  150. package/dist/utils/trackPath.js +131 -0
  151. package/dist/utils/trackPath.js.map +1 -0
  152. package/dist/vitest.config.d.ts +2 -0
  153. package/dist/vitest.config.js +24 -0
  154. package/dist/vitest.config.js.map +1 -0
  155. package/package.json +41 -11
  156. package/.gitattributes +0 -2
  157. package/.prettierignore +0 -7
  158. package/.prettierrc.js +0 -10
  159. package/.vscode/launch.json +0 -40
  160. package/.vscode/tasks.json +0 -24
  161. package/Databases/Databases.ts +0 -89
  162. package/Databases/DbConnection.ts +0 -51
  163. package/Databases/index.ts +0 -2
  164. package/LogEmitter/index.ts +0 -51
  165. package/StageLinq/index.ts +0 -59
  166. package/TODO.md +0 -5
  167. package/cli/index.ts +0 -187
  168. package/devices/Player.ts +0 -236
  169. package/devices/PlayerMessageQueue.ts +0 -63
  170. package/network/NetworkDevice.ts +0 -302
  171. package/network/StageLinqDevices.ts +0 -309
  172. package/network/StageLinqListener.ts +0 -50
  173. package/network/announce.ts +0 -133
  174. package/network/index.ts +0 -4
  175. package/network-path-prototype.patch +0 -181
  176. package/services/FileTransfer.ts +0 -303
  177. package/services/Service.ts +0 -144
  178. package/services/StateMap.ts +0 -170
  179. package/stagelinq.code-workspace +0 -16
  180. package/tsconfig.json +0 -13
  181. package/types/common.ts +0 -240
  182. package/types/index.ts +0 -53
  183. package/types/models/Track.ts +0 -50
  184. package/types/models/index.ts +0 -1
  185. package/types/player.ts +0 -43
  186. package/types/tokens.ts +0 -39
  187. package/utils/Context.ts +0 -45
  188. package/utils/ReadContext.ts +0 -114
  189. package/utils/WriteContext.ts +0 -105
  190. package/utils/getTempFilePath.ts +0 -23
  191. package/utils/hex.ts +0 -62
  192. package/utils/sleep.ts +0 -3
  193. package/utils/tcp.ts +0 -17
  194. /package/{utils/log.ts → dist/utils/log.d.ts} +0 -0
@@ -0,0 +1,131 @@
1
+ /**
2
+ * StageLinq - Main entry point for the StageLinq library
3
+ *
4
+ * Supports two usage patterns:
5
+ *
6
+ * 1. Static class (compatible with TS main v1):
7
+ * StageLinq.options = { actingAs: ActingAsDevice.NowPlaying };
8
+ * StageLinq.on('trackLoaded', (track) => console.log(track));
9
+ * await StageLinq.connect();
10
+ *
11
+ * 2. Instance-based (for flexibility):
12
+ * const stagelinq = new StageLinqInstance(options);
13
+ * stagelinq.on('trackLoaded', (track) => console.log(track));
14
+ * await stagelinq.connect();
15
+ */
16
+ import { EventEmitter } from 'events';
17
+ import { StageLinqDevices } from '../network/StageLinqDevices';
18
+ import { Logger } from '../LogEmitter';
19
+ import { StageLinqOptions } from '../types';
20
+ /**
21
+ * StageLinq instance class.
22
+ * Use this for multiple instances or when you need full control.
23
+ */
24
+ export declare class StageLinqInstance extends EventEmitter {
25
+ devices: StageLinqDevices;
26
+ instanceLogger: Logger;
27
+ instanceOptions: StageLinqOptions;
28
+ private listener;
29
+ private _isConnected;
30
+ constructor(options?: StageLinqOptions);
31
+ /**
32
+ * Whether the instance is currently connected
33
+ */
34
+ get isConnected(): boolean;
35
+ /**
36
+ * Get the options
37
+ */
38
+ get options(): StageLinqOptions;
39
+ /**
40
+ * Get the logger
41
+ */
42
+ get logger(): Logger;
43
+ /**
44
+ * Connect to the StageLinq network.
45
+ */
46
+ connect(): Promise<void>;
47
+ /**
48
+ * Disconnect from the StageLinq network.
49
+ */
50
+ disconnect(): Promise<void>;
51
+ /**
52
+ * Get the databases manager
53
+ */
54
+ get databases(): import("../Databases").Databases;
55
+ }
56
+ /**
57
+ * StageLinq static class.
58
+ * Provides a singleton interface compatible with TS main v1.
59
+ *
60
+ * @example
61
+ * StageLinq.options = { actingAs: ActingAsDevice.NowPlaying };
62
+ * StageLinq.devices.on('trackLoaded', (track) => console.log(track));
63
+ * await StageLinq.connect();
64
+ */
65
+ export declare class StageLinq {
66
+ private static _instance;
67
+ private static _options;
68
+ /**
69
+ * Get or set the options for the static instance
70
+ * Compatible with TS main v1: StageLinq.options = { ... }
71
+ */
72
+ static get options(): StageLinqOptions;
73
+ static set options(value: StageLinqOptions);
74
+ /**
75
+ * Get the singleton instance, creating it if necessary
76
+ */
77
+ private static get instance();
78
+ /**
79
+ * Whether the static instance is currently connected
80
+ */
81
+ static get isConnected(): boolean;
82
+ /**
83
+ * Get the devices manager
84
+ * Compatible with TS main v1: StageLinq.devices
85
+ */
86
+ static get devices(): StageLinqDevices;
87
+ /**
88
+ * Get the databases manager
89
+ */
90
+ static get databases(): import("../Databases").Databases;
91
+ /**
92
+ * Get the logger instance
93
+ * Compatible with TS main v1: StageLinq.logger
94
+ */
95
+ static get logger(): Logger;
96
+ /**
97
+ * Connect to the StageLinq network
98
+ * Compatible with TS main v1: await StageLinq.connect()
99
+ */
100
+ static connect(): Promise<void>;
101
+ /**
102
+ * Disconnect from the StageLinq network
103
+ * Compatible with TS main v1: await StageLinq.disconnect()
104
+ */
105
+ static disconnect(): Promise<void>;
106
+ /**
107
+ * Register an event listener
108
+ */
109
+ static on(event: string, listener: (...args: any[]) => void): void;
110
+ /**
111
+ * Register a one-time event listener
112
+ */
113
+ static once(event: string, listener: (...args: any[]) => void): void;
114
+ /**
115
+ * Remove an event listener
116
+ */
117
+ static off(event: string, listener: (...args: any[]) => void): void;
118
+ /**
119
+ * Remove all listeners for an event
120
+ */
121
+ static removeAllListeners(event?: string): void;
122
+ /**
123
+ * Emit an event
124
+ */
125
+ static emit(event: string, ...args: any[]): boolean;
126
+ /**
127
+ * Reset the static instance (for testing or reconfiguration)
128
+ */
129
+ static reset(): void;
130
+ }
131
+ export default StageLinq;
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ /**
3
+ * StageLinq - Main entry point for the StageLinq library
4
+ *
5
+ * Supports two usage patterns:
6
+ *
7
+ * 1. Static class (compatible with TS main v1):
8
+ * StageLinq.options = { actingAs: ActingAsDevice.NowPlaying };
9
+ * StageLinq.on('trackLoaded', (track) => console.log(track));
10
+ * await StageLinq.connect();
11
+ *
12
+ * 2. Instance-based (for flexibility):
13
+ * const stagelinq = new StageLinqInstance(options);
14
+ * stagelinq.on('trackLoaded', (track) => console.log(track));
15
+ * await stagelinq.connect();
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.StageLinq = exports.StageLinqInstance = void 0;
19
+ const network_1 = require("../network");
20
+ const events_1 = require("events");
21
+ const StageLinqDevices_1 = require("../network/StageLinqDevices");
22
+ const LogEmitter_1 = require("../LogEmitter");
23
+ const types_1 = require("../types");
24
+ const config_1 = require("../config");
25
+ const DEFAULT_OPTIONS = {
26
+ maxRetries: 3,
27
+ actingAs: types_1.ActingAsDevice.NowPlaying,
28
+ downloadDbSources: true,
29
+ enableFileTranfer: true
30
+ };
31
+ /**
32
+ * StageLinq instance class.
33
+ * Use this for multiple instances or when you need full control.
34
+ */
35
+ class StageLinqInstance extends events_1.EventEmitter {
36
+ constructor(options) {
37
+ super();
38
+ this.instanceLogger = LogEmitter_1.Logger.instance;
39
+ this._isConnected = false;
40
+ this.instanceOptions = { ...DEFAULT_OPTIONS, ...options };
41
+ // Apply global config from options
42
+ if (this.instanceOptions.networkTap) {
43
+ (0, config_1.setConfig)({ networkTap: this.instanceOptions.networkTap });
44
+ }
45
+ this.devices = new StageLinqDevices_1.StageLinqDevices(this.instanceOptions);
46
+ // Forward device events to this instance
47
+ this.devices.on('connected', (info) => this.emit('connected', info));
48
+ this.devices.on('ready', () => this.emit('ready'));
49
+ this.devices.on('trackLoaded', (status) => this.emit('trackLoaded', status));
50
+ this.devices.on('nowPlaying', (status) => this.emit('nowPlaying', status));
51
+ this.devices.on('stateChanged', (status) => this.emit('stateChanged', status));
52
+ this.devices.on('message', (info, data) => this.emit('message', info, data));
53
+ }
54
+ /**
55
+ * Whether the instance is currently connected
56
+ */
57
+ get isConnected() {
58
+ return this._isConnected;
59
+ }
60
+ /**
61
+ * Get the options
62
+ */
63
+ get options() {
64
+ return this.instanceOptions;
65
+ }
66
+ /**
67
+ * Get the logger
68
+ */
69
+ get logger() {
70
+ return this.instanceLogger;
71
+ }
72
+ /**
73
+ * Connect to the StageLinq network.
74
+ */
75
+ async connect() {
76
+ if (this._isConnected) {
77
+ LogEmitter_1.Logger.warn('Already connected');
78
+ return;
79
+ }
80
+ this.listener = new network_1.StageLinqListener();
81
+ const msg = (0, network_1.createDiscoveryMessage)(types_1.Action.Login, this.instanceOptions.actingAs);
82
+ await (0, network_1.announce)(msg);
83
+ this.listener.listenForDevices(async (connectionInfo) => {
84
+ await this.devices.handleDevice(connectionInfo);
85
+ });
86
+ this._isConnected = true;
87
+ this.emit('listening');
88
+ }
89
+ /**
90
+ * Disconnect from the StageLinq network.
91
+ */
92
+ async disconnect() {
93
+ if (!this._isConnected) {
94
+ LogEmitter_1.Logger.warn('Not connected');
95
+ return;
96
+ }
97
+ try {
98
+ this.devices.disconnectAll();
99
+ const msg = (0, network_1.createDiscoveryMessage)(types_1.Action.Logout, this.instanceOptions.actingAs);
100
+ await (0, network_1.unannounce)(msg);
101
+ this._isConnected = false;
102
+ this.emit('disconnected');
103
+ }
104
+ catch (e) {
105
+ this.emit('error', e);
106
+ throw new Error(e);
107
+ }
108
+ }
109
+ /**
110
+ * Get the databases manager
111
+ */
112
+ get databases() {
113
+ return this.devices.databases;
114
+ }
115
+ }
116
+ exports.StageLinqInstance = StageLinqInstance;
117
+ /**
118
+ * StageLinq static class.
119
+ * Provides a singleton interface compatible with TS main v1.
120
+ *
121
+ * @example
122
+ * StageLinq.options = { actingAs: ActingAsDevice.NowPlaying };
123
+ * StageLinq.devices.on('trackLoaded', (track) => console.log(track));
124
+ * await StageLinq.connect();
125
+ */
126
+ class StageLinq {
127
+ /**
128
+ * Get or set the options for the static instance
129
+ * Compatible with TS main v1: StageLinq.options = { ... }
130
+ */
131
+ static get options() {
132
+ return this._options;
133
+ }
134
+ static set options(value) {
135
+ this._options = { ...DEFAULT_OPTIONS, ...value };
136
+ // Reset instance if options change before connection
137
+ if (this._instance && !this._instance.isConnected) {
138
+ this._instance = null;
139
+ }
140
+ }
141
+ /**
142
+ * Get the singleton instance, creating it if necessary
143
+ */
144
+ static get instance() {
145
+ if (!this._instance) {
146
+ this._instance = new StageLinqInstance(this._options);
147
+ }
148
+ return this._instance;
149
+ }
150
+ /**
151
+ * Whether the static instance is currently connected
152
+ */
153
+ static get isConnected() {
154
+ return this._instance?.isConnected ?? false;
155
+ }
156
+ /**
157
+ * Get the devices manager
158
+ * Compatible with TS main v1: StageLinq.devices
159
+ */
160
+ static get devices() {
161
+ return this.instance.devices;
162
+ }
163
+ /**
164
+ * Get the databases manager
165
+ */
166
+ static get databases() {
167
+ return this.instance.databases;
168
+ }
169
+ /**
170
+ * Get the logger instance
171
+ * Compatible with TS main v1: StageLinq.logger
172
+ */
173
+ static get logger() {
174
+ return this.instance.logger;
175
+ }
176
+ /**
177
+ * Connect to the StageLinq network
178
+ * Compatible with TS main v1: await StageLinq.connect()
179
+ */
180
+ static async connect() {
181
+ return this.instance.connect();
182
+ }
183
+ /**
184
+ * Disconnect from the StageLinq network
185
+ * Compatible with TS main v1: await StageLinq.disconnect()
186
+ */
187
+ static async disconnect() {
188
+ return this.instance.disconnect();
189
+ }
190
+ /**
191
+ * Register an event listener
192
+ */
193
+ static on(event, listener) {
194
+ this.instance.on(event, listener);
195
+ }
196
+ /**
197
+ * Register a one-time event listener
198
+ */
199
+ static once(event, listener) {
200
+ this.instance.once(event, listener);
201
+ }
202
+ /**
203
+ * Remove an event listener
204
+ */
205
+ static off(event, listener) {
206
+ this.instance.off(event, listener);
207
+ }
208
+ /**
209
+ * Remove all listeners for an event
210
+ */
211
+ static removeAllListeners(event) {
212
+ this.instance.removeAllListeners(event);
213
+ }
214
+ /**
215
+ * Emit an event
216
+ */
217
+ static emit(event, ...args) {
218
+ return this.instance.emit(event, ...args);
219
+ }
220
+ /**
221
+ * Reset the static instance (for testing or reconfiguration)
222
+ */
223
+ static reset() {
224
+ if (this._instance) {
225
+ if (this._instance.isConnected) {
226
+ LogEmitter_1.Logger.warn('Cannot reset while connected. Call disconnect() first.');
227
+ return;
228
+ }
229
+ this._instance = null;
230
+ }
231
+ }
232
+ }
233
+ exports.StageLinq = StageLinq;
234
+ StageLinq._instance = null;
235
+ StageLinq._options = { ...DEFAULT_OPTIONS };
236
+ exports.default = StageLinq;
237
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../StageLinq/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * StageLinq BeatInfo CLI Tool
4
+ *
5
+ * Connects to a StageLinq device and displays real-time beat information.
6
+ *
7
+ * Usage: npx ts-node cli/beatinfo.ts
8
+ *
9
+ * Note: This tool requires a StageLinq-compatible device on the network.
10
+ */
11
+ export {};
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * StageLinq BeatInfo CLI Tool
5
+ *
6
+ * Connects to a StageLinq device and displays real-time beat information.
7
+ *
8
+ * Usage: npx ts-node cli/beatinfo.ts
9
+ *
10
+ * Note: This tool requires a StageLinq-compatible device on the network.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const StageLinq_1 = require("../StageLinq");
14
+ const types_1 = require("../types");
15
+ const sleep_1 = require("../utils/sleep");
16
+ require('console-stamp')(console, {
17
+ format: ':date(HH:MM:ss) :label',
18
+ });
19
+ async function main() {
20
+ console.log('StageLinq BeatInfo Demo');
21
+ console.log('=======================');
22
+ console.log('');
23
+ console.log('Connecting to StageLinq network...');
24
+ const stageLinq = new StageLinq_1.StageLinqInstance({
25
+ actingAs: types_1.ActingAsDevice.NowPlaying,
26
+ downloadDbSources: false,
27
+ maxRetries: 3,
28
+ });
29
+ // Setup logging
30
+ stageLinq.logger.on('error', (...args) => console.error(...args));
31
+ stageLinq.logger.on('warn', (...args) => console.warn(...args));
32
+ stageLinq.logger.on('info', (...args) => console.info(...args));
33
+ // Track connection
34
+ stageLinq.devices.on('connected', (info) => {
35
+ console.log(`Connected to: ${info.software.name} (${info.address}:${info.port})`);
36
+ });
37
+ stageLinq.devices.on('ready', () => {
38
+ console.log('');
39
+ console.log('Ready! Listening for beat information...');
40
+ console.log('Press Ctrl+C to exit.');
41
+ console.log('');
42
+ });
43
+ // Display now playing info
44
+ stageLinq.devices.on('nowPlaying', (status) => {
45
+ console.log('');
46
+ console.log(`Now Playing on ${status.deck}:`);
47
+ console.log(` Title: ${status.title}`);
48
+ console.log(` Artist: ${status.artist}`);
49
+ });
50
+ // Display state changes (includes beat/BPM info)
51
+ stageLinq.devices.on('stateChanged', (status) => {
52
+ // Only show if we have BPM info
53
+ if (status.currentBpm) {
54
+ const playState = status.playState ? 'playing' : 'paused';
55
+ process.stdout.write(`\r[${status.deck}] BPM: ${status.currentBpm.toFixed(1).padStart(6)} | ` +
56
+ `State: ${playState.padEnd(10)}`);
57
+ }
58
+ });
59
+ // Handle graceful shutdown
60
+ process.on('SIGINT', async () => {
61
+ console.log('\n\nShutting down...');
62
+ try {
63
+ await stageLinq.disconnect();
64
+ }
65
+ catch (err) {
66
+ console.error('Error during disconnect:', err);
67
+ }
68
+ process.exit(0);
69
+ });
70
+ // Connect and run
71
+ try {
72
+ await stageLinq.connect();
73
+ // Keep running
74
+ while (true) {
75
+ await (0, sleep_1.sleep)(1000);
76
+ }
77
+ }
78
+ catch (err) {
79
+ console.error('Error:', err);
80
+ process.exit(1);
81
+ }
82
+ }
83
+ main();
84
+ //# sourceMappingURL=beatinfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beatinfo.js","sourceRoot":"","sources":["../../cli/beatinfo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * StageLinq Discovery CLI Tool
4
+ *
5
+ * Discovers StageLinq and EAAS devices on the local network.
6
+ *
7
+ * Usage: npx ts-node cli/discover.ts [--timeout=5000] [--eaas]
8
+ */
9
+ export {};
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * StageLinq Discovery CLI Tool
5
+ *
6
+ * Discovers StageLinq and EAAS devices on the local network.
7
+ *
8
+ * Usage: npx ts-node cli/discover.ts [--timeout=5000] [--eaas]
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const network_1 = require("../network");
12
+ const __1 = require("../");
13
+ require('console-stamp')(console, {
14
+ format: ':date(HH:MM:ss) :label',
15
+ });
16
+ function parseArgs() {
17
+ const args = process.argv.slice(2);
18
+ let timeout = 5000;
19
+ let includeEAAS = false;
20
+ for (const arg of args) {
21
+ if (arg.startsWith('--timeout=')) {
22
+ timeout = parseInt(arg.split('=')[1], 10);
23
+ }
24
+ else if (arg === '--eaas') {
25
+ includeEAAS = true;
26
+ }
27
+ else if (arg === '--help' || arg === '-h') {
28
+ console.log('Usage: npx ts-node cli/discover.ts [options]');
29
+ console.log('');
30
+ console.log('Options:');
31
+ console.log(' --timeout=<ms> Discovery timeout in milliseconds (default: 5000)');
32
+ console.log(' --eaas Also discover EAAS devices');
33
+ console.log(' --help, -h Show this help message');
34
+ process.exit(0);
35
+ }
36
+ }
37
+ return { timeout, includeEAAS };
38
+ }
39
+ async function discoverStageLinq(timeout) {
40
+ const devices = [];
41
+ const seen = new Set();
42
+ return new Promise((resolve) => {
43
+ const listener = new network_1.StageLinqListener();
44
+ listener.listenForDevices((info) => {
45
+ const key = `${info.address}:${info.port}`;
46
+ if (!seen.has(key)) {
47
+ seen.add(key);
48
+ devices.push(info);
49
+ console.log('');
50
+ console.log(`StageLinq Device Found:`);
51
+ console.log(` Name: ${info.software.name}`);
52
+ console.log(` Version: ${info.software.version}`);
53
+ console.log(` Address: ${info.address}:${info.port}`);
54
+ console.log(` Source: ${info.source}`);
55
+ console.log(` Token: ${(0, __1.formatToken)(info.token)}`);
56
+ console.log(` Action: ${info.action}`);
57
+ }
58
+ });
59
+ setTimeout(() => {
60
+ resolve(devices);
61
+ }, timeout);
62
+ });
63
+ }
64
+ async function discoverEAAS(timeout) {
65
+ const discoverer = new __1.EAAS.EAASDiscoverer({ timeout });
66
+ discoverer.on('discovered', (device) => {
67
+ console.log('');
68
+ console.log(`EAAS Device Found:`);
69
+ console.log(` Hostname: ${device.hostname}`);
70
+ console.log(` Version: ${device.softwareVersion}`);
71
+ console.log(` Address: ${device.address}`);
72
+ console.log(` gRPC: ${device.address}:${device.grpcPort}`);
73
+ console.log(` HTTP: ${device.address}:${device.httpPort}`);
74
+ console.log(` Token: ${(0, __1.formatToken)(device.token)}`);
75
+ });
76
+ await discoverer.discover();
77
+ }
78
+ async function main() {
79
+ const options = parseArgs();
80
+ console.log(`Discovering devices (timeout: ${options.timeout}ms)...`);
81
+ console.log('');
82
+ const promises = [
83
+ discoverStageLinq(options.timeout),
84
+ ];
85
+ if (options.includeEAAS) {
86
+ promises.push(discoverEAAS(options.timeout));
87
+ }
88
+ await Promise.all(promises);
89
+ console.log('');
90
+ console.log('Discovery complete.');
91
+ process.exit(0);
92
+ }
93
+ main().catch((err) => {
94
+ console.error('Error:', err);
95
+ process.exit(1);
96
+ });
97
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../cli/discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};