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.
- package/README.md +194 -50
- package/dist/Databases/Databases.d.ts +19 -0
- package/dist/Databases/Databases.js +106 -0
- package/dist/Databases/Databases.js.map +1 -0
- package/dist/Databases/DbConnection.d.ts +22 -0
- package/dist/Databases/DbConnection.js +48 -0
- package/dist/Databases/DbConnection.js.map +1 -0
- package/dist/Databases/index.d.ts +2 -0
- package/dist/Databases/index.js +19 -0
- package/dist/Databases/index.js.map +1 -0
- package/dist/LogEmitter/index.d.ts +20 -0
- package/dist/LogEmitter/index.js +35 -0
- package/dist/LogEmitter/index.js.map +1 -0
- package/dist/StageLinq/index.d.ts +131 -0
- package/dist/StageLinq/index.js +237 -0
- package/dist/StageLinq/index.js.map +1 -0
- package/dist/cli/beatinfo.d.ts +11 -0
- package/dist/cli/beatinfo.js +84 -0
- package/dist/cli/beatinfo.js.map +1 -0
- package/dist/cli/discover.d.ts +9 -0
- package/dist/cli/discover.js +97 -0
- package/dist/cli/discover.js.map +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +197 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config.d.ts +31 -0
- package/dist/config.js +32 -0
- package/dist/config.js.map +1 -0
- package/dist/devices/Player.d.ts +63 -0
- package/dist/devices/Player.js +189 -0
- package/dist/devices/Player.js.map +1 -0
- package/dist/devices/PlayerMessageQueue.d.ts +36 -0
- package/dist/devices/PlayerMessageQueue.js +56 -0
- package/dist/devices/PlayerMessageQueue.js.map +1 -0
- package/dist/eaas/beacon.d.ts +72 -0
- package/dist/eaas/beacon.js +161 -0
- package/dist/eaas/beacon.js.map +1 -0
- package/dist/eaas/discoverer.d.ts +89 -0
- package/dist/eaas/discoverer.js +225 -0
- package/dist/eaas/discoverer.js.map +1 -0
- package/dist/eaas/engine-library-client.d.ts +120 -0
- package/dist/eaas/engine-library-client.js +204 -0
- package/dist/eaas/engine-library-client.js.map +1 -0
- package/dist/eaas/grpc-types.d.ts +319 -0
- package/dist/eaas/grpc-types.js +90 -0
- package/dist/eaas/grpc-types.js.map +1 -0
- package/dist/eaas/http-client.d.ts +75 -0
- package/dist/eaas/http-client.js +139 -0
- package/dist/eaas/http-client.js.map +1 -0
- package/dist/eaas/index.d.ts +33 -0
- package/dist/eaas/index.js +50 -0
- package/dist/eaas/index.js.map +1 -0
- package/dist/eaas/messages.d.ts +43 -0
- package/dist/eaas/messages.js +186 -0
- package/dist/eaas/messages.js.map +1 -0
- package/dist/eaas/types.d.ts +64 -0
- package/dist/eaas/types.js +25 -0
- package/dist/eaas/types.js.map +1 -0
- package/{index.ts → dist/index.d.ts} +2 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/network/ConnectionHealth.d.ts +121 -0
- package/dist/network/ConnectionHealth.js +216 -0
- package/dist/network/ConnectionHealth.js.map +1 -0
- package/dist/network/NetworkDevice.d.ts +40 -0
- package/dist/network/NetworkDevice.js +274 -0
- package/dist/network/NetworkDevice.js.map +1 -0
- package/dist/network/StageLinqDevices.d.ts +91 -0
- package/dist/network/StageLinqDevices.js +276 -0
- package/dist/network/StageLinqDevices.js.map +1 -0
- package/dist/network/StageLinqListener.d.ts +15 -0
- package/dist/network/StageLinqListener.js +58 -0
- package/dist/network/StageLinqListener.js.map +1 -0
- package/dist/network/announce.d.ts +25 -0
- package/dist/network/announce.js +260 -0
- package/dist/network/announce.js.map +1 -0
- package/dist/network/index.d.ts +5 -0
- package/dist/network/index.js +22 -0
- package/dist/network/index.js.map +1 -0
- package/dist/services/BeatInfo.d.ts +71 -0
- package/dist/services/BeatInfo.js +128 -0
- package/dist/services/BeatInfo.js.map +1 -0
- package/dist/services/Broadcast.d.ts +47 -0
- package/dist/services/Broadcast.js +88 -0
- package/dist/services/Broadcast.js.map +1 -0
- package/dist/services/FileTransfer.d.ts +30 -0
- package/dist/services/FileTransfer.js +283 -0
- package/dist/services/FileTransfer.js.map +1 -0
- package/dist/services/Service.d.ts +22 -0
- package/dist/services/Service.js +178 -0
- package/dist/services/Service.js.map +1 -0
- package/dist/services/StateMap.d.ts +20 -0
- package/dist/services/StateMap.js +149 -0
- package/dist/services/StateMap.js.map +1 -0
- package/dist/services/TimeSync.d.ts +57 -0
- package/dist/services/TimeSync.js +136 -0
- package/dist/services/TimeSync.js.map +1 -0
- package/{services/index.ts → dist/services/index.d.ts} +3 -0
- package/dist/services/index.js +23 -0
- package/dist/services/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/common.d.ts +236 -0
- package/dist/types/common.js +243 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +46 -0
- package/dist/types/index.js +21 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/models/Track.d.ts +50 -0
- package/dist/types/models/Track.js +3 -0
- package/dist/types/models/Track.js.map +1 -0
- package/dist/types/models/index.d.ts +1 -0
- package/dist/types/models/index.js +18 -0
- package/dist/types/models/index.js.map +1 -0
- package/dist/types/player.d.ts +40 -0
- package/dist/types/player.js +3 -0
- package/dist/types/player.js.map +1 -0
- package/dist/types/tokens.d.ts +10 -0
- package/dist/types/tokens.js +36 -0
- package/dist/types/tokens.js.map +1 -0
- package/dist/utils/Context.d.ts +13 -0
- package/dist/utils/Context.js +37 -0
- package/dist/utils/Context.js.map +1 -0
- package/dist/utils/ReadContext.d.ts +15 -0
- package/dist/utils/ReadContext.js +110 -0
- package/dist/utils/ReadContext.js.map +1 -0
- package/dist/utils/WriteContext.d.ts +22 -0
- package/dist/utils/WriteContext.js +87 -0
- package/dist/utils/WriteContext.js.map +1 -0
- package/dist/utils/getTempFilePath.d.ts +7 -0
- package/dist/utils/getTempFilePath.js +59 -0
- package/dist/utils/getTempFilePath.js.map +1 -0
- package/dist/utils/hex.d.ts +1 -0
- package/dist/utils/hex.js +55 -0
- package/dist/utils/hex.js.map +1 -0
- package/{utils/index.ts → dist/utils/index.d.ts} +2 -0
- package/dist/utils/index.js +26 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/log.js +2 -0
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/sleep.d.ts +1 -0
- package/dist/utils/sleep.js +7 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/tcp.d.ts +4 -0
- package/dist/utils/tcp.js +18 -0
- package/dist/utils/tcp.js.map +1 -0
- package/dist/utils/token.d.ts +40 -0
- package/dist/utils/token.js +74 -0
- package/dist/utils/token.js.map +1 -0
- package/dist/utils/trackPath.d.ts +77 -0
- package/dist/utils/trackPath.js +131 -0
- package/dist/utils/trackPath.js.map +1 -0
- package/dist/vitest.config.d.ts +2 -0
- package/dist/vitest.config.js +24 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +41 -11
- package/.gitattributes +0 -2
- package/.prettierignore +0 -7
- package/.prettierrc.js +0 -10
- package/.vscode/launch.json +0 -40
- package/.vscode/tasks.json +0 -24
- package/Databases/Databases.ts +0 -89
- package/Databases/DbConnection.ts +0 -51
- package/Databases/index.ts +0 -2
- package/LogEmitter/index.ts +0 -51
- package/StageLinq/index.ts +0 -59
- package/TODO.md +0 -5
- package/cli/index.ts +0 -187
- package/devices/Player.ts +0 -236
- package/devices/PlayerMessageQueue.ts +0 -63
- package/network/NetworkDevice.ts +0 -302
- package/network/StageLinqDevices.ts +0 -309
- package/network/StageLinqListener.ts +0 -50
- package/network/announce.ts +0 -133
- package/network/index.ts +0 -4
- package/network-path-prototype.patch +0 -181
- package/services/FileTransfer.ts +0 -303
- package/services/Service.ts +0 -144
- package/services/StateMap.ts +0 -170
- package/stagelinq.code-workspace +0 -16
- package/tsconfig.json +0 -13
- package/types/common.ts +0 -240
- package/types/index.ts +0 -53
- package/types/models/Track.ts +0 -50
- package/types/models/index.ts +0 -1
- package/types/player.ts +0 -43
- package/types/tokens.ts +0 -39
- package/utils/Context.ts +0 -45
- package/utils/ReadContext.ts +0 -114
- package/utils/WriteContext.ts +0 -105
- package/utils/getTempFilePath.ts +0 -23
- package/utils/hex.ts +0 -62
- package/utils/sleep.ts +0 -3
- package/utils/tcp.ts +0 -17
- /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,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":";;AACA;;;;;;GAMG;;AAEH,wCAA+C;AAC/C,2BAAwC;AAGxC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE;IAChC,MAAM,EAAE,wBAAwB;CACjC,CAAC,CAAC;AAOH,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAe;IAC9C,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,IAAI,2BAAiB,EAAE,CAAC;QAEzC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,IAAA,eAAW,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe;IACzC,MAAM,UAAU,GAAG,IAAI,QAAI,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAExD,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAuB,EAAE,EAAE;QACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAA,eAAW,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,iCAAiC,OAAO,CAAC,OAAO,QAAQ,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAmB;QAC/B,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC;KACnC,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|