stagelinq 3.0.4 → 3.1.2
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 +2 -1
- package/dist/Databases/Databases.d.ts +3 -1
- package/dist/Databases/Databases.js +9 -8
- package/dist/Databases/Databases.js.map +1 -1
- package/dist/Databases/DbConnection.d.ts +3 -1
- package/dist/Databases/DbConnection.js +6 -4
- package/dist/Databases/DbConnection.js.map +1 -1
- package/dist/StageLinq/index.d.ts +1 -1
- package/dist/StageLinq/index.js +8 -8
- package/dist/StageLinq/index.js.map +1 -1
- package/dist/devices/Player.d.ts +3 -0
- package/dist/devices/Player.js +15 -6
- package/dist/devices/Player.js.map +1 -1
- package/dist/eaas/beacon.d.ts +3 -1
- package/dist/eaas/beacon.js +10 -9
- package/dist/eaas/beacon.js.map +1 -1
- package/dist/eaas/discoverer.d.ts +3 -1
- package/dist/eaas/discoverer.js +16 -12
- package/dist/eaas/discoverer.js.map +1 -1
- package/dist/eaas/engine-library-client.d.ts +3 -1
- package/dist/eaas/engine-library-client.js +7 -6
- package/dist/eaas/engine-library-client.js.map +1 -1
- package/dist/eaas/http-client.d.ts +3 -1
- package/dist/eaas/http-client.js +5 -4
- package/dist/eaas/http-client.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/metadata/index.d.ts +26 -0
- package/dist/metadata/index.js +53 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/reader.d.ts +11 -0
- package/dist/metadata/reader.js +20 -0
- package/dist/metadata/reader.js.map +1 -0
- package/dist/network/ConnectionHealth.d.ts +3 -1
- package/dist/network/ConnectionHealth.js +13 -12
- package/dist/network/ConnectionHealth.js.map +1 -1
- package/dist/network/NetworkDevice.d.ts +4 -2
- package/dist/network/NetworkDevice.js +9 -8
- package/dist/network/NetworkDevice.js.map +1 -1
- package/dist/network/StageLinqDevices.d.ts +12 -2
- package/dist/network/StageLinqDevices.js +59 -25
- package/dist/network/StageLinqDevices.js.map +1 -1
- package/dist/network/announce.d.ts +3 -2
- package/dist/network/announce.js +40 -15
- package/dist/network/announce.js.map +1 -1
- package/dist/services/FileTransfer.d.ts +14 -0
- package/dist/services/FileTransfer.js +86 -6
- package/dist/services/FileTransfer.js.map +1 -1
- package/dist/services/Service.d.ts +3 -1
- package/dist/services/Service.js +7 -6
- package/dist/services/Service.js.map +1 -1
- package/dist/services/StateMap.js +0 -1
- package/dist/services/StateMap.js.map +1 -1
- package/dist/services/TimeSync.js +2 -3
- package/dist/services/TimeSync.js.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/logger.d.ts +13 -0
- package/dist/types/logger.js +11 -0
- package/dist/types/logger.js.map +1 -0
- package/dist/utils/tcp.d.ts +2 -1
- package/dist/utils/tcp.js +3 -3
- package/dist/utils/tcp.js.map +1 -1
- package/package.json +5 -1
- package/dist/LogEmitter/index.d.ts +0 -20
- package/dist/LogEmitter/index.js +0 -35
- package/dist/LogEmitter/index.js.map +0 -1
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ await stagelinq.connect();
|
|
|
28
28
|
|
|
29
29
|
## Features
|
|
30
30
|
|
|
31
|
-
| Feature | Go | Python |
|
|
31
|
+
| Feature | Go | Python | This repo |
|
|
32
32
|
|---------|:--:|:------:|:-----:|
|
|
33
33
|
| Device Discovery | ✅ | ✅ | ✅ |
|
|
34
34
|
| StateMap Service | ✅ | ✅ | ✅ |
|
|
@@ -225,6 +225,7 @@ This library incorporates code and ideas from other StageLinq implementations:
|
|
|
225
225
|
## Related Packages
|
|
226
226
|
|
|
227
227
|
- [alphatheta-connect](https://github.com/chrisle/alphatheta-connect) — Pioneer Pro DJ Link integration
|
|
228
|
+
- [metadata-connect](https://github.com/chrisle/metadata-connect) — Audio metadata extraction with partial file reads
|
|
228
229
|
- [rekordbox-connect](https://github.com/chrisle/rekordbox-connect) — Rekordbox database integration
|
|
229
230
|
- [serato-connect](https://github.com/chrisle/serato-connect) — Serato DJ integration
|
|
230
231
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ConnectionInfo, Source } from '../types';
|
|
2
2
|
import { EventEmitter } from 'stream';
|
|
3
3
|
import { FileTransfer } from '../services';
|
|
4
|
+
import type { Logger } from '../types/logger';
|
|
4
5
|
import { NetworkDevice } from '../network';
|
|
5
6
|
export declare interface Databases {
|
|
6
7
|
on(event: 'dbDownloaded', listener: (sourceName: string, dbPath: string) => void): this;
|
|
@@ -9,7 +10,8 @@ export declare interface Databases {
|
|
|
9
10
|
}
|
|
10
11
|
export declare class Databases extends EventEmitter {
|
|
11
12
|
sources: Map<string, string>;
|
|
12
|
-
|
|
13
|
+
private logger;
|
|
14
|
+
constructor(logger?: Logger);
|
|
13
15
|
downloadSourcesFromDevice(connectionInfo: ConnectionInfo, networkDevice: NetworkDevice): Promise<string[]>;
|
|
14
16
|
/**
|
|
15
17
|
* Download databases from this network source.
|
|
@@ -37,12 +37,13 @@ exports.Databases = void 0;
|
|
|
37
37
|
const stream_1 = require("stream");
|
|
38
38
|
const services_1 = require("../services");
|
|
39
39
|
const utils_1 = require("../utils");
|
|
40
|
-
const
|
|
40
|
+
const logger_1 = require("../types/logger");
|
|
41
41
|
const fs = __importStar(require("fs"));
|
|
42
42
|
class Databases extends stream_1.EventEmitter {
|
|
43
|
-
constructor() {
|
|
43
|
+
constructor(logger = logger_1.noopLogger) {
|
|
44
44
|
super();
|
|
45
45
|
this.sources = new Map();
|
|
46
|
+
this.logger = logger;
|
|
46
47
|
}
|
|
47
48
|
async downloadSourcesFromDevice(connectionInfo, networkDevice) {
|
|
48
49
|
const service = await networkDevice.connectToService(services_1.FileTransfer);
|
|
@@ -53,9 +54,9 @@ class Databases extends stream_1.EventEmitter {
|
|
|
53
54
|
.exec(Buffer.from(connectionInfo.token).toString('hex'));
|
|
54
55
|
const deviceId = match ? match.slice(1).join('-') : 'unknown';
|
|
55
56
|
const dbConnectionName = `net://${deviceId}/${source.name}`;
|
|
56
|
-
|
|
57
|
+
this.logger.debug(`DB network path: ${dbConnectionName}`);
|
|
57
58
|
if (this.sources.has(dbConnectionName)) {
|
|
58
|
-
|
|
59
|
+
this.logger.debug(`Already seen ${source} on ${connectionInfo.address}:${connectionInfo.port}`);
|
|
59
60
|
}
|
|
60
61
|
else {
|
|
61
62
|
await this.downloadDb(dbConnectionName, service, source);
|
|
@@ -70,7 +71,7 @@ class Databases extends stream_1.EventEmitter {
|
|
|
70
71
|
async downloadDb(sourceId, service, source) {
|
|
71
72
|
const dbPath = (0, utils_1.getTempFilePath)(`${sourceId}/m.db`);
|
|
72
73
|
// Read database from source
|
|
73
|
-
|
|
74
|
+
this.logger.debug(`Reading database ${sourceId}`);
|
|
74
75
|
this.emit('dbDownloading', sourceId, dbPath);
|
|
75
76
|
service.on('fileTransferProgress', (progress) => {
|
|
76
77
|
this.emit('dbProgress', sourceId, progress.total, progress.bytesDownloaded, progress.percentComplete);
|
|
@@ -78,10 +79,10 @@ class Databases extends stream_1.EventEmitter {
|
|
|
78
79
|
// Save database to a file
|
|
79
80
|
await service.waitTillAvailable();
|
|
80
81
|
const file = await service.getFile(source.database.location);
|
|
81
|
-
|
|
82
|
+
this.logger.debug(`Saving ${sourceId} to ${dbPath}`);
|
|
82
83
|
fs.writeFileSync(dbPath, Buffer.from(file));
|
|
83
84
|
this.sources.set(sourceId, dbPath);
|
|
84
|
-
|
|
85
|
+
this.logger.debug(`Downloaded ${sourceId} to ${dbPath}`);
|
|
85
86
|
this.emit('dbDownloaded', sourceId, dbPath);
|
|
86
87
|
}
|
|
87
88
|
getDbPath(dbSourceName) {
|
|
@@ -93,7 +94,7 @@ class Databases extends stream_1.EventEmitter {
|
|
|
93
94
|
// return the first internal database we find.
|
|
94
95
|
for (const entry of Array.from(this.sources.entries())) {
|
|
95
96
|
if (/\(Internal\)/.test(entry[0])) {
|
|
96
|
-
|
|
97
|
+
this.logger.debug(`Returning copy of internal database`);
|
|
97
98
|
return this.sources.get(entry[0]);
|
|
98
99
|
}
|
|
99
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Databases.js","sourceRoot":"","sources":["../../Databases/Databases.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAAsC;AACtC,0CAA2C;AAC3C,oCAA2C;
|
|
1
|
+
{"version":3,"file":"Databases.js","sourceRoot":"","sources":["../../Databases/Databases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Track } from '../types';
|
|
2
|
+
import type { Logger } from '../types/logger';
|
|
2
3
|
export declare class DbConnection {
|
|
3
4
|
private db;
|
|
4
5
|
private dbPath;
|
|
5
|
-
|
|
6
|
+
private logger;
|
|
7
|
+
constructor(dbPath: string, logger?: Logger);
|
|
6
8
|
/**
|
|
7
9
|
* Execute a SQL query.
|
|
8
10
|
*
|
|
@@ -5,10 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.DbConnection = void 0;
|
|
7
7
|
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
8
|
+
const logger_1 = require("../types/logger");
|
|
8
9
|
class DbConnection {
|
|
9
|
-
constructor(dbPath) {
|
|
10
|
+
constructor(dbPath, logger = logger_1.noopLogger) {
|
|
10
11
|
this.dbPath = dbPath;
|
|
11
|
-
|
|
12
|
+
this.logger = logger;
|
|
13
|
+
this.logger.debug(`Opening ${this.dbPath}`);
|
|
12
14
|
this.db = new better_sqlite3_1.default(this.dbPath);
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
@@ -19,7 +21,7 @@ class DbConnection {
|
|
|
19
21
|
* @returns
|
|
20
22
|
*/
|
|
21
23
|
querySource(query, ...params) {
|
|
22
|
-
|
|
24
|
+
this.logger.debug(`Querying ${this.dbPath}: ${query} (${params.join(', ')})`);
|
|
23
25
|
const result = this.db.prepare(query);
|
|
24
26
|
// @ts-ignore
|
|
25
27
|
return result.all(params);
|
|
@@ -43,7 +45,7 @@ class DbConnection {
|
|
|
43
45
|
return result[0];
|
|
44
46
|
}
|
|
45
47
|
close() {
|
|
46
|
-
|
|
48
|
+
this.logger.debug(`Closing ${this.dbPath}`);
|
|
47
49
|
this.db.close();
|
|
48
50
|
}
|
|
49
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbConnection.js","sourceRoot":"","sources":["../../Databases/DbConnection.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;
|
|
1
|
+
{"version":3,"file":"DbConnection.js","sourceRoot":"","sources":["../../Databases/DbConnection.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;AAGtC,4CAA6C;AAG7C,MAAa,YAAY;IAMvB,YAAY,MAAc,EAAE,SAAiB,mBAAU;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,GAAG,IAAI,wBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAI,KAAa,EAAE,GAAG,MAAa;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,KAAK,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,aAAa;QACb,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAAiB;QAC5B,IAAI,MAAe,CAAC;QACpB,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,6CAA6C,EAAE,SAAS,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,8CAA8C,EAAE,SAAS,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,eAAe,CAAC,CAAC;QAChF,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CAEF;AAjDD,oCAiDC"}
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { EventEmitter } from 'events';
|
|
17
17
|
import { StageLinqDevices } from '../network/StageLinqDevices';
|
|
18
|
-
import { Logger } from '../LogEmitter';
|
|
19
18
|
import { StageLinqOptions } from '../types';
|
|
19
|
+
import type { Logger } from '../types/logger';
|
|
20
20
|
/**
|
|
21
21
|
* StageLinq instance class.
|
|
22
22
|
* Use this for multiple instances or when you need full control.
|
package/dist/StageLinq/index.js
CHANGED
|
@@ -19,8 +19,8 @@ exports.StageLinq = exports.StageLinqInstance = void 0;
|
|
|
19
19
|
const network_1 = require("../network");
|
|
20
20
|
const events_1 = require("events");
|
|
21
21
|
const StageLinqDevices_1 = require("../network/StageLinqDevices");
|
|
22
|
-
const LogEmitter_1 = require("../LogEmitter");
|
|
23
22
|
const types_1 = require("../types");
|
|
23
|
+
const logger_1 = require("../types/logger");
|
|
24
24
|
const config_1 = require("../config");
|
|
25
25
|
const DEFAULT_OPTIONS = {
|
|
26
26
|
maxRetries: 3,
|
|
@@ -35,14 +35,14 @@ const DEFAULT_OPTIONS = {
|
|
|
35
35
|
class StageLinqInstance extends events_1.EventEmitter {
|
|
36
36
|
constructor(options) {
|
|
37
37
|
super();
|
|
38
|
-
this.instanceLogger = LogEmitter_1.Logger.instance;
|
|
39
38
|
this._isConnected = false;
|
|
40
39
|
this.instanceOptions = { ...DEFAULT_OPTIONS, ...options };
|
|
40
|
+
this.instanceLogger = options?.logger ?? logger_1.noopLogger;
|
|
41
41
|
// Apply global config from options
|
|
42
42
|
if (this.instanceOptions.networkTap) {
|
|
43
43
|
(0, config_1.setConfig)({ networkTap: this.instanceOptions.networkTap });
|
|
44
44
|
}
|
|
45
|
-
this.devices = new StageLinqDevices_1.StageLinqDevices(this.instanceOptions);
|
|
45
|
+
this.devices = new StageLinqDevices_1.StageLinqDevices(this.instanceOptions, this.instanceLogger);
|
|
46
46
|
// Forward device events to this instance
|
|
47
47
|
this.devices.on('connected', (info) => this.emit('connected', info));
|
|
48
48
|
this.devices.on('ready', () => this.emit('ready'));
|
|
@@ -74,12 +74,12 @@ class StageLinqInstance extends events_1.EventEmitter {
|
|
|
74
74
|
*/
|
|
75
75
|
async connect() {
|
|
76
76
|
if (this._isConnected) {
|
|
77
|
-
|
|
77
|
+
this.instanceLogger.warn('Already connected');
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
80
|
this.listener = new network_1.StageLinqListener();
|
|
81
81
|
const msg = (0, network_1.createDiscoveryMessage)(types_1.Action.Login, this.instanceOptions.actingAs);
|
|
82
|
-
await (0, network_1.announce)(msg);
|
|
82
|
+
await (0, network_1.announce)(msg, this.instanceLogger);
|
|
83
83
|
this.listener.listenForDevices(async (connectionInfo) => {
|
|
84
84
|
await this.devices.handleDevice(connectionInfo);
|
|
85
85
|
});
|
|
@@ -91,14 +91,14 @@ class StageLinqInstance extends events_1.EventEmitter {
|
|
|
91
91
|
*/
|
|
92
92
|
async disconnect() {
|
|
93
93
|
if (!this._isConnected) {
|
|
94
|
-
|
|
94
|
+
this.instanceLogger.warn('Not connected');
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
97
|
try {
|
|
98
98
|
this.devices.disconnectAll();
|
|
99
99
|
this.listener?.stop();
|
|
100
100
|
const msg = (0, network_1.createDiscoveryMessage)(types_1.Action.Logout, this.instanceOptions.actingAs);
|
|
101
|
-
await (0, network_1.unannounce)(msg);
|
|
101
|
+
await (0, network_1.unannounce)(msg, this.instanceLogger);
|
|
102
102
|
this._isConnected = false;
|
|
103
103
|
this.emit('disconnected');
|
|
104
104
|
}
|
|
@@ -224,7 +224,7 @@ class StageLinq {
|
|
|
224
224
|
static reset() {
|
|
225
225
|
if (this._instance) {
|
|
226
226
|
if (this._instance.isConnected) {
|
|
227
|
-
|
|
227
|
+
this._instance.instanceLogger.warn('Cannot reset while connected. Call disconnect() first.');
|
|
228
228
|
return;
|
|
229
229
|
}
|
|
230
230
|
this._instance = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../StageLinq/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,wCAA6F;AAC7F,mCAAsC;AACtC,kEAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../StageLinq/index.ts"],"names":[],"mappings":"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"}
|
package/dist/devices/Player.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { PlayerStatus } from '../types';
|
|
3
3
|
import { StateMap } from '../services';
|
|
4
|
+
import type { Logger } from '../types/logger';
|
|
4
5
|
export declare interface Player {
|
|
5
6
|
on(event: 'trackLoaded', listener: (status: PlayerStatus) => void): this;
|
|
6
7
|
on(event: 'stateChanged', listener: (status: PlayerStatus) => void): this;
|
|
@@ -11,6 +12,7 @@ interface PlayerOptions {
|
|
|
11
12
|
address: string;
|
|
12
13
|
port: number;
|
|
13
14
|
deviceId: string;
|
|
15
|
+
logger?: Logger;
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
18
|
* A player represents a device on the StageLinq network.
|
|
@@ -38,6 +40,7 @@ export declare class Player extends EventEmitter {
|
|
|
38
40
|
private lastTrackNetworkPath;
|
|
39
41
|
private queue;
|
|
40
42
|
private deviceId;
|
|
43
|
+
private logger;
|
|
41
44
|
/**
|
|
42
45
|
* Initialize a player device.
|
|
43
46
|
*
|
package/dist/devices/Player.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Player = void 0;
|
|
4
4
|
const events_1 = require("events");
|
|
5
5
|
const PlayerMessageQueue_1 = require("./PlayerMessageQueue");
|
|
6
|
-
const
|
|
6
|
+
const logger_1 = require("../types/logger");
|
|
7
7
|
/**
|
|
8
8
|
* A player represents a device on the StageLinq network.
|
|
9
9
|
*
|
|
@@ -35,6 +35,7 @@ class Player extends events_1.EventEmitter {
|
|
|
35
35
|
this.decks = new Map();
|
|
36
36
|
this.lastTrackNetworkPath = new Map();
|
|
37
37
|
this.queue = {};
|
|
38
|
+
this.logger = options.logger ?? logger_1.noopLogger;
|
|
38
39
|
options.stateMap.on('message', this.messageHandler.bind(this));
|
|
39
40
|
this.address = options.address;
|
|
40
41
|
this.port = options.port;
|
|
@@ -100,7 +101,7 @@ class Player extends events_1.EventEmitter {
|
|
|
100
101
|
* @param data
|
|
101
102
|
*/
|
|
102
103
|
handleUpdate(data) {
|
|
103
|
-
|
|
104
|
+
this.logger.debug(`data: ${JSON.stringify(data, null, 2)}`);
|
|
104
105
|
const layer = data.layer;
|
|
105
106
|
// A new song my be loading onto a layer but not yet fully downloaded.
|
|
106
107
|
// For example streaming a song from Beatport Link.
|
|
@@ -114,13 +115,16 @@ class Player extends events_1.EventEmitter {
|
|
|
114
115
|
this.lastTrackNetworkPath.set(layer, data.trackNetworkPath ?? '');
|
|
115
116
|
// This will be true once a song has been fully downloaded / loaded.
|
|
116
117
|
const isSongLoaded = data.hasOwnProperty('songLoaded');
|
|
118
|
+
// Capture previous play state before merging
|
|
119
|
+
const previousState = this.decks.get(layer);
|
|
120
|
+
const wasPlaying = previousState?.playState === true;
|
|
117
121
|
// If a new song is loaded drop all the previous track data.
|
|
118
122
|
if (isNewTrack && isSongLoaded) {
|
|
119
|
-
|
|
123
|
+
this.logger.debug(`Replacing state ${layer}`);
|
|
120
124
|
this.decks.set(layer, data);
|
|
121
125
|
}
|
|
122
126
|
else {
|
|
123
|
-
|
|
127
|
+
this.logger.debug(`Updating state ${layer}`);
|
|
124
128
|
this.decks.set(layer, { ...this.decks.get(layer), ...data });
|
|
125
129
|
}
|
|
126
130
|
const result = this.decks.get(layer);
|
|
@@ -155,8 +159,13 @@ class Player extends events_1.EventEmitter {
|
|
|
155
159
|
// If a song is loaded and we have a location emit the trackLoaded event.
|
|
156
160
|
if (isSongLoaded && currentState.trackNetworkPath)
|
|
157
161
|
this.emit('trackLoaded', currentState);
|
|
158
|
-
//
|
|
159
|
-
|
|
162
|
+
// Only emit nowPlaying when play state transitions to true, or when a new
|
|
163
|
+
// track starts playing. Previously this fired on every state update
|
|
164
|
+
// (fader moves, BPM changes, etc.) which caused track duplication.
|
|
165
|
+
const isNowPlaying = result?.playState === true;
|
|
166
|
+
const playJustStarted = isNowPlaying && !wasPlaying;
|
|
167
|
+
const newTrackWhilePlaying = isNowPlaying && isNewTrack && isSongLoaded;
|
|
168
|
+
if (playJustStarted || newTrackWhilePlaying)
|
|
160
169
|
this.emit('nowPlaying', currentState);
|
|
161
170
|
// Emit that the state has changed.
|
|
162
171
|
this.emit('stateChanged', currentState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Player.js","sourceRoot":"","sources":["../../devices/Player.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAEtC,6DAA0D;
|
|
1
|
+
{"version":3,"file":"Player.js","sourceRoot":"","sources":["../../devices/Player.ts"],"names":[],"mappings":"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"}
|
package/dist/eaas/beacon.d.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* License: MIT
|
|
10
10
|
*/
|
|
11
11
|
import { EventEmitter } from 'events';
|
|
12
|
+
import type { Logger } from '../types/logger';
|
|
12
13
|
import { EAASBeaconOptions } from './types';
|
|
13
14
|
export declare interface EAASBeacon {
|
|
14
15
|
on(event: 'request', listener: (address: string, port: number) => void): this;
|
|
@@ -40,7 +41,8 @@ export declare class EAASBeacon extends EventEmitter {
|
|
|
40
41
|
private options;
|
|
41
42
|
private socket;
|
|
42
43
|
private responseMessage;
|
|
43
|
-
|
|
44
|
+
private logger;
|
|
45
|
+
constructor(options: EAASBeaconOptions, logger?: Logger);
|
|
44
46
|
/**
|
|
45
47
|
* Get the beacon's token.
|
|
46
48
|
*/
|
package/dist/eaas/beacon.js
CHANGED
|
@@ -14,7 +14,7 @@ exports.EAASBeacon = void 0;
|
|
|
14
14
|
const dgram_1 = require("dgram");
|
|
15
15
|
const events_1 = require("events");
|
|
16
16
|
const os_1 = require("os");
|
|
17
|
-
const
|
|
17
|
+
const logger_1 = require("../types/logger");
|
|
18
18
|
const token_1 = require("../utils/token");
|
|
19
19
|
const types_1 = require("./types");
|
|
20
20
|
const messages_1 = require("./messages");
|
|
@@ -41,9 +41,10 @@ const messages_1 = require("./messages");
|
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
43
|
class EAASBeacon extends events_1.EventEmitter {
|
|
44
|
-
constructor(options) {
|
|
44
|
+
constructor(options, logger = logger_1.noopLogger) {
|
|
45
45
|
super();
|
|
46
46
|
this.socket = null;
|
|
47
|
+
this.logger = logger;
|
|
47
48
|
// Generate token if not provided
|
|
48
49
|
const token = options.token ?? (0, token_1.generateToken)();
|
|
49
50
|
this.options = {
|
|
@@ -79,14 +80,14 @@ class EAASBeacon extends events_1.EventEmitter {
|
|
|
79
80
|
*/
|
|
80
81
|
async start() {
|
|
81
82
|
if (this.socket) {
|
|
82
|
-
|
|
83
|
+
this.logger.warn('EAAS Beacon: Already started');
|
|
83
84
|
return;
|
|
84
85
|
}
|
|
85
86
|
return new Promise((resolve, reject) => {
|
|
86
87
|
try {
|
|
87
88
|
this.socket = (0, dgram_1.createSocket)({ type: 'udp4', reuseAddr: true });
|
|
88
89
|
this.socket.on('error', (err) => {
|
|
89
|
-
|
|
90
|
+
this.logger.error(`EAAS Beacon socket error: ${err}`);
|
|
90
91
|
this.emit('error', err);
|
|
91
92
|
});
|
|
92
93
|
this.socket.on('message', (msg, rinfo) => {
|
|
@@ -94,7 +95,7 @@ class EAASBeacon extends events_1.EventEmitter {
|
|
|
94
95
|
});
|
|
95
96
|
this.socket.on('listening', () => {
|
|
96
97
|
const addr = this.socket.address();
|
|
97
|
-
|
|
98
|
+
this.logger.info(`EAAS Beacon: Listening on ${addr.address}:${addr.port}`);
|
|
98
99
|
// Build response message with correct host
|
|
99
100
|
const host = this.options.grpcHost || this.getLocalIP();
|
|
100
101
|
const url = `${host}:${this.options.grpcPort}`;
|
|
@@ -118,10 +119,10 @@ class EAASBeacon extends events_1.EventEmitter {
|
|
|
118
119
|
this.socket.close();
|
|
119
120
|
}
|
|
120
121
|
catch (err) {
|
|
121
|
-
|
|
122
|
+
this.logger.warn(`EAAS Beacon: Error closing socket: ${err}`);
|
|
122
123
|
}
|
|
123
124
|
this.socket = null;
|
|
124
|
-
|
|
125
|
+
this.logger.info('EAAS Beacon: Stopped');
|
|
125
126
|
}
|
|
126
127
|
}
|
|
127
128
|
/**
|
|
@@ -131,12 +132,12 @@ class EAASBeacon extends events_1.EventEmitter {
|
|
|
131
132
|
if (!(0, messages_1.isDiscoveryRequest)(data)) {
|
|
132
133
|
return; // Not a discovery request
|
|
133
134
|
}
|
|
134
|
-
|
|
135
|
+
this.logger.debug(`EAAS Beacon: Discovery request from ${rinfo.address}:${rinfo.port}`);
|
|
135
136
|
this.emit('request', rinfo.address, rinfo.port);
|
|
136
137
|
// Send response
|
|
137
138
|
this.socket?.send(this.responseMessage, rinfo.port, rinfo.address, (err) => {
|
|
138
139
|
if (err) {
|
|
139
|
-
|
|
140
|
+
this.logger.warn(`EAAS Beacon: Failed to send response to ${rinfo.address}: ${err}`);
|
|
140
141
|
}
|
|
141
142
|
});
|
|
142
143
|
}
|
package/dist/eaas/beacon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../eaas/beacon.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,iCAAsE;AACtE,mCAAsC;AACtC,2BAAuC;
|
|
1
|
+
{"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../eaas/beacon.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* License: MIT
|
|
10
10
|
*/
|
|
11
11
|
import { EventEmitter } from 'events';
|
|
12
|
+
import type { Logger } from '../types/logger';
|
|
12
13
|
import { EAASDevice, EAASDiscovererOptions } from './types';
|
|
13
14
|
export declare interface EAASDiscoverer {
|
|
14
15
|
on(event: 'discovered', listener: (device: EAASDevice) => void): this;
|
|
@@ -42,7 +43,8 @@ export declare class EAASDiscoverer extends EventEmitter {
|
|
|
42
43
|
private socket;
|
|
43
44
|
private scanTimer;
|
|
44
45
|
private discoveredDevices;
|
|
45
|
-
|
|
46
|
+
private logger;
|
|
47
|
+
constructor(options?: EAASDiscovererOptions, logger?: Logger);
|
|
46
48
|
/**
|
|
47
49
|
* Perform a one-time discovery scan.
|
|
48
50
|
*
|