magmastream
Version:
A user-friendly Lavalink client designed for NodeJS.
90 lines (89 loc) • 4.19 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = nodeCheck;
const MagmastreamError_1 = require("../structures/MagmastreamError");
const Enums_1 = require("../structures/Enums");
/**
* Validates the provided NodeOptions object.
* @param options - The options to validate.
* @throws {MagmaStreamError} Throws if any required option is missing or invalid.
*/
function nodeCheck(options) {
if (!options) {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: "NodeOptions must not be empty.",
});
}
const { host, identifier, password, port, enableSessionResumeOption, sessionTimeoutSeconds, maxRetryAttempts, retryDelayMs, useSSL, nodePriority } = options;
if (!host || typeof host !== "string") {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "host" must be present and be a non-empty string.',
context: { host },
});
}
if (typeof identifier !== "undefined" && typeof identifier !== "string") {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "identifier" must be a non-empty string.',
context: { identifier },
});
}
if (typeof password !== "undefined" && (typeof password !== "string" || !/.+/.test(password))) {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "password" must be a non-empty string.',
context: { password },
});
}
if (typeof port !== "undefined" && typeof port !== "number") {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "port" must be a number.',
context: { port },
});
}
if (typeof enableSessionResumeOption !== "undefined" && typeof enableSessionResumeOption !== "boolean") {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "enableSessionResumeOption" must be a boolean.',
context: { enableSessionResumeOption },
});
}
if (typeof sessionTimeoutSeconds !== "undefined" && typeof sessionTimeoutSeconds !== "number") {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "sessionTimeoutSeconds" must be a number.',
context: { sessionTimeoutSeconds },
});
}
if (typeof maxRetryAttempts !== "undefined" && typeof maxRetryAttempts !== "number") {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "maxRetryAttempts" must be a number.',
context: { maxRetryAttempts },
});
}
if (typeof retryDelayMs !== "undefined" && typeof retryDelayMs !== "number") {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "retryDelayMs" must be a number.',
context: { retryDelayMs },
});
}
if (typeof useSSL !== "undefined" && typeof useSSL !== "boolean") {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "useSSL" must be a boolean.',
context: { useSSL },
});
}
if (typeof nodePriority !== "undefined" && typeof nodePriority !== "number") {
throw new MagmastreamError_1.MagmaStreamError({
code: Enums_1.MagmaStreamErrorCode.NODE_INVALID_CONFIG,
message: 'Node option "nodePriority" must be a number.',
context: { nodePriority },
});
}
}