wampy
Version:
Amazingly fast, feature-rich, lightweight WAMP Javascript client (for browser and node.js)
87 lines (84 loc) • 2.9 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/utils.ts
var utils_exports = {};
__export(utils_exports, {
getNewPromise: () => getNewPromise,
getWebSocket: () => getWebSocket
});
module.exports = __toCommonJS(utils_exports);
// src/constants.ts
var isNode = typeof process === "object" && Object.prototype.toString.call(process) === "[object process]";
// src/utils.ts
function isWebSocketSchemeSpecified(url) {
return /^ws(s)?:\/\//.test(url);
}
function getServerUrlForNode(url) {
return isWebSocketSchemeSpecified(url) ? url : null;
}
function getServerUrlForBrowser(url) {
if (url && isWebSocketSchemeSpecified(url)) {
return url;
}
const isSecureProtocol = globalThis.location.protocol === "https:";
const scheme = isSecureProtocol ? "wss://" : "ws://";
const port = globalThis.location.port ? `:${globalThis.location.port}` : "";
if (!url) {
return `${scheme}${globalThis.location.hostname}${port}/ws`;
}
if (url.startsWith("/")) {
return `${scheme}${globalThis.location.hostname}${port}${url}`;
}
return `${scheme}${url}`;
}
function getWebSocketFromWindowObject(parsedUrl, protocols) {
if (globalThis?.WebSocket) {
return new globalThis.WebSocket(parsedUrl, protocols);
}
return null;
}
function getWebSocket({ url, protocols, options, isBrowserMock } = {}) {
const { ws, additionalHeaders, wsRequestOptions } = options || {};
const isActualNode = isNode && !isBrowserMock;
if (!ws && isActualNode) {
return null;
}
const parsedUrl = isActualNode ? getServerUrlForNode(url) : getServerUrlForBrowser(url);
if (!parsedUrl) {
return null;
}
if (ws) {
return new ws(parsedUrl, protocols, null, additionalHeaders, wsRequestOptions);
}
return getWebSocketFromWindowObject(parsedUrl, protocols);
}
function getNewPromise() {
const deferred = {};
deferred.promise = new Promise(function(resolve, reject) {
deferred.onSuccess = resolve;
deferred.onError = reject;
});
return deferred;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
getNewPromise,
getWebSocket
});
//# sourceMappingURL=utils.cjs.map