UNPKG

magmastream

Version:

A user-friendly Lavalink client designed for NodeJS.

90 lines (89 loc) 4.19 kB
"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 }, }); } }