stormcloud-video-player 0.8.2 → 0.8.4
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/dist/stormcloud-vp.min.js +3 -1
- package/lib/index.cjs +536 -341
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +37 -2
- package/lib/index.d.ts +37 -2
- package/lib/index.js +477 -342
- package/lib/index.js.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +266 -206
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +5 -2
- package/lib/players/FilePlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +266 -206
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.d.cts +1 -1
- package/lib/players/index.cjs +266 -206
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.d.cts +1 -1
- package/lib/sdk/pal.cjs.map +1 -1
- package/lib/{types-DDwAfBLt.d.cts → types-BmF_60m2.d.cts} +2 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +450 -341
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -1
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/mqttClient.cjs +245 -0
- package/lib/utils/mqttClient.cjs.map +1 -0
- package/lib/utils/mqttClient.d.cts +13 -0
- package/lib/utils/mqttConfig.cjs +141 -0
- package/lib/utils/mqttConfig.cjs.map +1 -0
- package/lib/utils/mqttConfig.d.cts +20 -0
- package/lib/utils/polyfills.cjs.map +1 -1
- package/lib/utils/tracking.cjs +182 -170
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +1 -1
- package/package.json +3 -1
- package/src/certs/emqxsl-ca.crt +22 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { StormcloudVideoPlayer } from '../player/StormcloudVideoPlayer.cjs';
|
|
3
|
-
import { S as StormcloudVideoPlayerConfig } from '../types-
|
|
3
|
+
import { S as StormcloudVideoPlayerConfig } from '../types-BmF_60m2.cjs';
|
|
4
4
|
|
|
5
5
|
type StormcloudVideoPlayerProps = Omit<StormcloudVideoPlayerConfig, "videoElement"> & React.VideoHTMLAttributes<HTMLVideoElement> & {
|
|
6
6
|
onReady?: (player: StormcloudVideoPlayer) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/browserCompat.cjs"],"names":[],"mappings":"AAAA","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/utils/browserCompat.ts\nvar browserCompat_exports = {};\n__export(browserCompat_exports, {\n detectBrowser: () => detectBrowser,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n logBrowserInfo: () => logBrowserInfo,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS\n});\nmodule.exports = __toCommonJS(browserCompat_exports);\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n detectBrowser,\n getBrowserConfigOverrides,\n logBrowserInfo,\n supportsFeature,\n supportsModernJS\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/browserCompat.cjs","../../src/utils/browserCompat.ts"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","browserCompat_exports","detectBrowser","getBrowserConfigOverrides","logBrowserInfo","supportsFeature","supportsModernJS","module","exports","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","version","majorVersion","isSmartTV","isLegacyTV","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/utils/browserCompat.ts\nvar browserCompat_exports = {};\n__export(browserCompat_exports, {\n detectBrowser: () => detectBrowser,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n logBrowserInfo: () => logBrowserInfo,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS\n});\nmodule.exports = __toCommonJS(browserCompat_exports);\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n detectBrowser,\n getBrowserConfigOverrides,\n logBrowserInfo,\n supportsFeature,\n supportsModernJS\n});\n","interface NavigatorUAData {\n platform?: string;\n brands?: Array<{ brand: string; version: string }>;\n mobile?: boolean;\n}\n\ndeclare global {\n interface Navigator {\n userAgentData?: NavigatorUAData;\n }\n}\n\nexport interface BrowserInfo {\n name: string;\n version: string;\n majorVersion: number;\n isSmartTV: boolean;\n isLegacyTV: boolean;\n platform: string;\n supportsModernJS: boolean;\n webOSVersion?: number | undefined;\n tizenVersion?: number | undefined;\n chromeVersion?: number | undefined;\n}\n\nfunction getChromeVersion(ua: string): number {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\n\nfunction getWebKitVersion(ua: string): number {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\n\nfunction getPlatform(): string {\n if ('userAgentData' in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? 'iPhone' : 'MacIntel';\n }\n if (/Win/i.test(ua)) {\n return 'Win32';\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? 'Linux armv8l' : 'Linux x86_64';\n }\n if (/CrOS/i.test(ua)) {\n return 'CrOS';\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return (navigator as any).platform || 'Unknown';\n}\n\nexport function detectBrowser(): BrowserInfo {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n\n let name = 'Unknown';\n let version = '0';\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS = true;\n let webOSVersion: number | undefined;\n let tizenVersion: number | undefined;\n let chromeVersionNum: number | undefined;\n\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : undefined;\n\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = 'LG WebOS';\n isSmartTV = true;\n\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n\n if (match && match[1]) {\n version = match[1];\n const parts = version.split('.');\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = '6.0';\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = '5.0';\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = '4.0';\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = '3.0';\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = '2.0';\n majorVersion = 2;\n }\n } else {\n version = 'Unknown';\n webOSVersion = undefined;\n }\n\n isLegacyTV = webOSVersion !== undefined && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = 'Samsung Tizen';\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : 'Unknown';\n if (version !== 'Unknown') {\n const parts = version.split('.');\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n\n isLegacyTV = tizenVersion !== undefined && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = 'Smart TV';\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = 'LG NetCast';\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = 'Sony BRAVIA';\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = 'Chrome';\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n\n if (chromeVersion < 50) {\n supportsModernJS = false;\n }\n }\n\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS = false;\n }\n }\n\n if (typeof Promise === 'undefined' ||\n typeof Map === 'undefined' ||\n typeof Set === 'undefined') {\n supportsModernJS = false;\n }\n\n if (typeof URLSearchParams === 'undefined') {\n supportsModernJS = false;\n }\n\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum,\n };\n}\n\nexport function getBrowserConfigOverrides(): {\n allowNativeHls?: boolean;\n} {\n const browser = detectBrowser();\n const overrides: { allowNativeHls?: boolean } = {};\n\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n }\n\n return overrides;\n}\n\nexport function supportsModernJS(): boolean {\n try {\n return (\n typeof Promise !== 'undefined' &&\n typeof Map !== 'undefined' &&\n typeof Set !== 'undefined' &&\n typeof Array.from !== 'undefined' &&\n typeof Object.assign !== 'undefined' &&\n typeof Array.prototype.forEach !== 'undefined' &&\n typeof String.prototype.includes !== 'undefined'\n );\n } catch (e) {\n return false;\n }\n}\n\nexport function logBrowserInfo(debug: boolean = false): void {\n if (!debug) return;\n\n const browser = detectBrowser();\n\n console.log('[StormcloudVideoPlayer] Browser Compatibility Info:', {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...(browser.webOSVersion !== undefined ? { webOSVersion: browser.webOSVersion } : {}),\n ...(browser.tizenVersion !== undefined ? { tizenVersion: browser.tizenVersion } : {}),\n ...(browser.chromeVersion !== undefined ? { chromeVersion: browser.chromeVersion } : {}),\n userAgent: navigator.userAgent,\n });\n}\n\nexport function supportsFeature(feature: string): boolean {\n switch (feature) {\n case 'urlsearchparams':\n return typeof URLSearchParams !== 'undefined';\n case 'textencoder':\n return typeof TextEncoder !== 'undefined';\n case 'promises':\n return typeof Promise !== 'undefined';\n case 'fetch':\n return typeof fetch !== 'undefined';\n case 'crypto':\n return typeof crypto !== 'undefined' && typeof crypto.subtle !== 'undefined';\n default:\n return false;\n }\n}\n"]}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
function _define_property(obj, key, value) {
|
|
3
|
+
if (key in obj) {
|
|
4
|
+
Object.defineProperty(obj, key, {
|
|
5
|
+
value: value,
|
|
6
|
+
enumerable: true,
|
|
7
|
+
configurable: true,
|
|
8
|
+
writable: true
|
|
9
|
+
});
|
|
10
|
+
} else {
|
|
11
|
+
obj[key] = value;
|
|
12
|
+
}
|
|
13
|
+
return obj;
|
|
14
|
+
}
|
|
15
|
+
function _object_spread(target) {
|
|
16
|
+
for(var i = 1; i < arguments.length; i++){
|
|
17
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
18
|
+
var ownKeys = Object.keys(source);
|
|
19
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
20
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
21
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
ownKeys.forEach(function(key) {
|
|
25
|
+
_define_property(target, key, source[key]);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return target;
|
|
29
|
+
}
|
|
30
|
+
function _type_of(obj) {
|
|
31
|
+
"@swc/helpers - typeof";
|
|
32
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
33
|
+
}
|
|
34
|
+
var __create = Object.create;
|
|
35
|
+
var __defProp = Object.defineProperty;
|
|
36
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
37
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
38
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
39
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
40
|
+
var __export = function __export(target, all) {
|
|
41
|
+
for(var name in all)__defProp(target, name, {
|
|
42
|
+
get: all[name],
|
|
43
|
+
enumerable: true
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
var __copyProps = function __copyProps(to, from, except, desc) {
|
|
47
|
+
if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
|
|
48
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
49
|
+
try {
|
|
50
|
+
var _loop = function() {
|
|
51
|
+
var key = _step.value;
|
|
52
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
53
|
+
get: function get() {
|
|
54
|
+
return from[key];
|
|
55
|
+
},
|
|
56
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
|
|
60
|
+
} catch (err) {
|
|
61
|
+
_didIteratorError = true;
|
|
62
|
+
_iteratorError = err;
|
|
63
|
+
} finally{
|
|
64
|
+
try {
|
|
65
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
66
|
+
_iterator.return();
|
|
67
|
+
}
|
|
68
|
+
} finally{
|
|
69
|
+
if (_didIteratorError) {
|
|
70
|
+
throw _iteratorError;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return to;
|
|
76
|
+
};
|
|
77
|
+
var __toESM = function __toESM(mod, isNodeMode, target) {
|
|
78
|
+
return target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(// If the importer is in node compatibility mode or this is not an ESM
|
|
79
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
80
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
81
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
82
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
83
|
+
value: mod,
|
|
84
|
+
enumerable: true
|
|
85
|
+
}) : target, mod);
|
|
86
|
+
};
|
|
87
|
+
var __toCommonJS = function __toCommonJS(mod) {
|
|
88
|
+
return __copyProps(__defProp({}, "__esModule", {
|
|
89
|
+
value: true
|
|
90
|
+
}), mod);
|
|
91
|
+
};
|
|
92
|
+
// src/utils/mqttClient.ts
|
|
93
|
+
var mqttClient_exports = {};
|
|
94
|
+
__export(mqttClient_exports, {
|
|
95
|
+
configureMQTT: function configureMQTT1() {
|
|
96
|
+
return configureMQTT;
|
|
97
|
+
},
|
|
98
|
+
disconnectMQTT: function disconnectMQTT1() {
|
|
99
|
+
return disconnectMQTT;
|
|
100
|
+
},
|
|
101
|
+
ensureMQTTClient: function ensureMQTTClient1() {
|
|
102
|
+
return ensureMQTTClient;
|
|
103
|
+
},
|
|
104
|
+
getMQTTStatus: function getMQTTStatus1() {
|
|
105
|
+
return getMQTTStatus;
|
|
106
|
+
},
|
|
107
|
+
initMQTTClient: function initMQTTClient1() {
|
|
108
|
+
return initMQTTClient;
|
|
109
|
+
},
|
|
110
|
+
isMQTTConfigured: function isMQTTConfigured1() {
|
|
111
|
+
return isMQTTConfigured;
|
|
112
|
+
},
|
|
113
|
+
isMQTTConnected: function isMQTTConnected1() {
|
|
114
|
+
return isMQTTConnected;
|
|
115
|
+
},
|
|
116
|
+
publishMQTT: function publishMQTT1() {
|
|
117
|
+
return publishMQTT;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
module.exports = __toCommonJS(mqttClient_exports);
|
|
121
|
+
var import_mqtt = __toESM(require("mqtt"), 1);
|
|
122
|
+
// src/utils/mqttConfig.ts
|
|
123
|
+
var DEFAULT_MQTT_CONFIG = {
|
|
124
|
+
enabled: true,
|
|
125
|
+
brokerAddress: "vecbae77.ala.us-east-1.emqxsl.com",
|
|
126
|
+
brokerPort: 8883,
|
|
127
|
+
wsPort: 8084,
|
|
128
|
+
username: "for-sonifi",
|
|
129
|
+
password: "sonifi-mqtt",
|
|
130
|
+
topicPrefix: "adstorm/players",
|
|
131
|
+
qos: 1
|
|
132
|
+
};
|
|
133
|
+
var mqttConfig = _object_spread({}, DEFAULT_MQTT_CONFIG);
|
|
134
|
+
function applyMQTTConfig(overrides) {
|
|
135
|
+
Object.assign(mqttConfig, overrides);
|
|
136
|
+
}
|
|
137
|
+
function isMQTTEnabled() {
|
|
138
|
+
return mqttConfig.enabled;
|
|
139
|
+
}
|
|
140
|
+
function buildMQTTBrokerUrl() {
|
|
141
|
+
if (mqttConfig.brokerUrl) return mqttConfig.brokerUrl;
|
|
142
|
+
return "wss://".concat(mqttConfig.brokerAddress, ":").concat(mqttConfig.wsPort, "/mqtt");
|
|
143
|
+
}
|
|
144
|
+
// src/utils/mqttClient.ts
|
|
145
|
+
var LOG = "[StormcloudVideoPlayer][MQTT]";
|
|
146
|
+
var client = null;
|
|
147
|
+
var status = "disconnected";
|
|
148
|
+
function getMQTTStatus() {
|
|
149
|
+
return status;
|
|
150
|
+
}
|
|
151
|
+
function isMQTTConnected() {
|
|
152
|
+
return status === "connected" && client !== null && client.connected;
|
|
153
|
+
}
|
|
154
|
+
function isMQTTConfigured() {
|
|
155
|
+
return isMQTTEnabled();
|
|
156
|
+
}
|
|
157
|
+
function configureMQTT(overrides) {
|
|
158
|
+
applyMQTTConfig(overrides);
|
|
159
|
+
disconnectMQTT();
|
|
160
|
+
}
|
|
161
|
+
function initMQTTClient() {
|
|
162
|
+
if (client || !isMQTTEnabled()) return;
|
|
163
|
+
var url = buildMQTTBrokerUrl();
|
|
164
|
+
status = "connecting";
|
|
165
|
+
var clientId = "stormcloud-vp-".concat(Math.random().toString(36).slice(2, 9));
|
|
166
|
+
try {
|
|
167
|
+
client = import_mqtt.default.connect(url, {
|
|
168
|
+
clientId: clientId,
|
|
169
|
+
username: mqttConfig.username,
|
|
170
|
+
password: mqttConfig.password,
|
|
171
|
+
keepalive: 60,
|
|
172
|
+
clean: true,
|
|
173
|
+
reconnectPeriod: 5e3,
|
|
174
|
+
connectTimeout: 1e4,
|
|
175
|
+
queueQoSZero: false
|
|
176
|
+
});
|
|
177
|
+
} catch (err) {
|
|
178
|
+
status = "error";
|
|
179
|
+
console.warn("".concat(LOG, " connect() threw:"), err);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
client.on("connect", function() {
|
|
183
|
+
status = "connected";
|
|
184
|
+
console.info("".concat(LOG, " connected to ").concat(url));
|
|
185
|
+
});
|
|
186
|
+
client.on("reconnect", function() {
|
|
187
|
+
status = "connecting";
|
|
188
|
+
console.info("".concat(LOG, " reconnecting…"));
|
|
189
|
+
});
|
|
190
|
+
client.on("offline", function() {
|
|
191
|
+
status = "disconnected";
|
|
192
|
+
console.warn("".concat(LOG, " offline"));
|
|
193
|
+
});
|
|
194
|
+
client.on("error", function(err) {
|
|
195
|
+
status = "error";
|
|
196
|
+
console.warn("".concat(LOG, " error:"), err.message);
|
|
197
|
+
});
|
|
198
|
+
client.on("close", function() {
|
|
199
|
+
if (status === "connected") {
|
|
200
|
+
status = "disconnected";
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
function ensureMQTTClient() {
|
|
205
|
+
if (isMQTTEnabled() && !client) {
|
|
206
|
+
initMQTTClient();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function publishMQTT(topic, payload) {
|
|
210
|
+
if (!isMQTTEnabled()) {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
ensureMQTTClient();
|
|
214
|
+
if (!client) {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
client.publish(topic, JSON.stringify(payload), {
|
|
219
|
+
qos: mqttConfig.qos
|
|
220
|
+
});
|
|
221
|
+
return true;
|
|
222
|
+
} catch (err) {
|
|
223
|
+
console.warn("".concat(LOG, " publish failed on ").concat(topic, ":"), err);
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function disconnectMQTT() {
|
|
228
|
+
if (client) {
|
|
229
|
+
client.end(true);
|
|
230
|
+
client = null;
|
|
231
|
+
status = "disconnected";
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
235
|
+
0 && (module.exports = {
|
|
236
|
+
configureMQTT: configureMQTT,
|
|
237
|
+
disconnectMQTT: disconnectMQTT,
|
|
238
|
+
ensureMQTTClient: ensureMQTTClient,
|
|
239
|
+
getMQTTStatus: getMQTTStatus,
|
|
240
|
+
initMQTTClient: initMQTTClient,
|
|
241
|
+
isMQTTConfigured: isMQTTConfigured,
|
|
242
|
+
isMQTTConnected: isMQTTConnected,
|
|
243
|
+
publishMQTT: publishMQTT
|
|
244
|
+
});
|
|
245
|
+
//# sourceMappingURL=mqttClient.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/mqttClient.cjs","../../src/utils/mqttClient.ts","../../src/utils/mqttConfig.ts"],"names":["Object","create","__create","defineProperty","__defProp","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","mqttClient_exports","configureMQTT","disconnectMQTT","ensureMQTTClient","getMQTTStatus","initMQTTClient","isMQTTConfigured","isMQTTConnected","publishMQTT","module","exports","import_mqtt","require","DEFAULT_MQTT_CONFIG","enabled","brokerAddress","brokerPort","wsPort","username","password","topicPrefix","qos","mqttConfig","applyMQTTConfig","overrides","assign","isMQTTEnabled","buildMQTTBrokerUrl","brokerUrl","LOG","client","status","connected","url","clientId","Math","random","toString","slice"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/utils/mqttClient.ts\nvar mqttClient_exports = {};\n__export(mqttClient_exports, {\n configureMQTT: () => configureMQTT,\n disconnectMQTT: () => disconnectMQTT,\n ensureMQTTClient: () => ensureMQTTClient,\n getMQTTStatus: () => getMQTTStatus,\n initMQTTClient: () => initMQTTClient,\n isMQTTConfigured: () => isMQTTConfigured,\n isMQTTConnected: () => isMQTTConnected,\n publishMQTT: () => publishMQTT\n});\nmodule.exports = __toCommonJS(mqttClient_exports);\nvar import_mqtt = __toESM(require(\"mqtt\"), 1);\n\n// src/utils/mqttConfig.ts\nvar DEFAULT_MQTT_CONFIG = {\n enabled: true,\n brokerAddress: \"vecbae77.ala.us-east-1.emqxsl.com\",\n brokerPort: 8883,\n wsPort: 8084,\n username: \"for-sonifi\",\n password: \"sonifi-mqtt\",\n topicPrefix: \"adstorm/players\",\n qos: 1\n};\nvar mqttConfig = { ...DEFAULT_MQTT_CONFIG };\nfunction applyMQTTConfig(overrides) {\n Object.assign(mqttConfig, overrides);\n}\nfunction isMQTTEnabled() {\n return mqttConfig.enabled;\n}\nfunction buildMQTTBrokerUrl() {\n if (mqttConfig.brokerUrl) return mqttConfig.brokerUrl;\n return `wss://${mqttConfig.brokerAddress}:${mqttConfig.wsPort}/mqtt`;\n}\n\n// src/utils/mqttClient.ts\nvar LOG = \"[StormcloudVideoPlayer][MQTT]\";\nvar client = null;\nvar status = \"disconnected\";\nfunction getMQTTStatus() {\n return status;\n}\nfunction isMQTTConnected() {\n return status === \"connected\" && client !== null && client.connected;\n}\nfunction isMQTTConfigured() {\n return isMQTTEnabled();\n}\nfunction configureMQTT(overrides) {\n applyMQTTConfig(overrides);\n disconnectMQTT();\n}\nfunction initMQTTClient() {\n if (client || !isMQTTEnabled()) return;\n const url = buildMQTTBrokerUrl();\n status = \"connecting\";\n const clientId = `stormcloud-vp-${Math.random().toString(36).slice(2, 9)}`;\n try {\n client = import_mqtt.default.connect(url, {\n clientId,\n username: mqttConfig.username,\n password: mqttConfig.password,\n keepalive: 60,\n clean: true,\n reconnectPeriod: 5e3,\n connectTimeout: 1e4,\n queueQoSZero: false\n });\n } catch (err) {\n status = \"error\";\n console.warn(`${LOG} connect() threw:`, err);\n return;\n }\n client.on(\"connect\", () => {\n status = \"connected\";\n console.info(`${LOG} connected to ${url}`);\n });\n client.on(\"reconnect\", () => {\n status = \"connecting\";\n console.info(`${LOG} reconnecting\\u2026`);\n });\n client.on(\"offline\", () => {\n status = \"disconnected\";\n console.warn(`${LOG} offline`);\n });\n client.on(\"error\", (err) => {\n status = \"error\";\n console.warn(`${LOG} error:`, err.message);\n });\n client.on(\"close\", () => {\n if (status === \"connected\") {\n status = \"disconnected\";\n }\n });\n}\nfunction ensureMQTTClient() {\n if (isMQTTEnabled() && !client) {\n initMQTTClient();\n }\n}\nfunction publishMQTT(topic, payload) {\n if (!isMQTTEnabled()) {\n return false;\n }\n ensureMQTTClient();\n if (!client) {\n return false;\n }\n try {\n client.publish(topic, JSON.stringify(payload), { qos: mqttConfig.qos });\n return true;\n } catch (err) {\n console.warn(`${LOG} publish failed on ${topic}:`, err);\n return false;\n }\n}\nfunction disconnectMQTT() {\n if (client) {\n client.end(true);\n client = null;\n status = \"disconnected\";\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n configureMQTT,\n disconnectMQTT,\n ensureMQTTClient,\n getMQTTStatus,\n initMQTTClient,\n isMQTTConfigured,\n isMQTTConnected,\n publishMQTT\n});\n","import mqtt from \"mqtt\";\nimport type { MqttClient } from \"mqtt\";\nimport {\n applyMQTTConfig,\n buildMQTTBrokerUrl,\n isMQTTEnabled,\n mqttConfig,\n} from \"./mqttConfig\";\nimport type { MQTTConfig } from \"./mqttConfig\";\n\nconst LOG = \"[StormcloudVideoPlayer][MQTT]\";\n\nexport type MQTTStatus = \"disconnected\" | \"connecting\" | \"connected\" | \"error\";\n\nlet client: MqttClient | null = null;\nlet status: MQTTStatus = \"disconnected\";\n\nexport function getMQTTStatus(): MQTTStatus {\n return status;\n}\n\nexport function isMQTTConnected(): boolean {\n return status === \"connected\" && client !== null && client.connected;\n}\n\nexport function isMQTTConfigured(): boolean {\n return isMQTTEnabled();\n}\n\nexport function configureMQTT(overrides: Partial<MQTTConfig>): void {\n applyMQTTConfig(overrides);\n disconnectMQTT();\n}\n\nexport function initMQTTClient(): void {\n if (client || !isMQTTEnabled()) return;\n\n const url = buildMQTTBrokerUrl();\n status = \"connecting\";\n\n const clientId = `stormcloud-vp-${Math.random().toString(36).slice(2, 9)}`;\n\n try {\n client = mqtt.connect(url, {\n clientId,\n username: mqttConfig.username,\n password: mqttConfig.password,\n keepalive: 60,\n clean: true,\n reconnectPeriod: 5000,\n connectTimeout: 10_000,\n queueQoSZero: false,\n });\n } catch (err) {\n status = \"error\";\n console.warn(`${LOG} connect() threw:`, err);\n return;\n }\n\n client.on(\"connect\", () => {\n status = \"connected\";\n console.info(`${LOG} connected to ${url}`);\n });\n\n client.on(\"reconnect\", () => {\n status = \"connecting\";\n console.info(`${LOG} reconnecting…`);\n });\n\n client.on(\"offline\", () => {\n status = \"disconnected\";\n console.warn(`${LOG} offline`);\n });\n\n client.on(\"error\", (err) => {\n status = \"error\";\n console.warn(`${LOG} error:`, err.message);\n });\n\n client.on(\"close\", () => {\n if (status === \"connected\") {\n status = \"disconnected\";\n }\n });\n}\n\nexport function ensureMQTTClient(): void {\n if (isMQTTEnabled() && !client) {\n initMQTTClient();\n }\n}\n\nexport function publishMQTT(\n topic: string,\n payload: Record<string, unknown>\n): boolean {\n if (!isMQTTEnabled()) {\n return false;\n }\n\n ensureMQTTClient();\n\n if (!client) {\n return false;\n }\n\n try {\n client.publish(topic, JSON.stringify(payload), { qos: mqttConfig.qos });\n return true;\n } catch (err) {\n console.warn(`${LOG} publish failed on ${topic}:`, err);\n return false;\n }\n}\n\nexport function disconnectMQTT(): void {\n if (client) {\n client.end(true);\n client = null;\n status = \"disconnected\";\n }\n}\n","export const MQTT_CA_CERT_FILE = \"src/certs/emqxsl-ca.crt\";\n\nexport type MQTTConfig = {\n enabled: boolean;\n brokerAddress: string;\n brokerPort: number;\n wsPort: number;\n username: string;\n password: string;\n topicPrefix: string;\n qos: 0 | 1 | 2;\n brokerUrl?: string;\n};\n\nexport const DEFAULT_MQTT_CONFIG: MQTTConfig = {\n enabled: true,\n brokerAddress: \"vecbae77.ala.us-east-1.emqxsl.com\",\n brokerPort: 8883,\n wsPort: 8084,\n username: \"for-sonifi\",\n password: \"sonifi-mqtt\",\n topicPrefix: \"adstorm/players\",\n qos: 1,\n};\n\nexport const mqttConfig: MQTTConfig = { ...DEFAULT_MQTT_CONFIG };\n\nexport function applyMQTTConfig(overrides: Partial<MQTTConfig>): void {\n Object.assign(mqttConfig, overrides);\n}\n\nexport function isMQTTEnabled(): boolean {\n return mqttConfig.enabled;\n}\n\nexport function buildMQTTBrokerUrl(): string {\n if (mqttConfig.brokerUrl) return mqttConfig.brokerUrl;\n return `wss://${mqttConfig.brokerAddress}:${mqttConfig.wsPort}/mqtt`;\n}\n\nexport function buildPlayerTopic(\n licenseKey: string,\n channel: \"metrics\" | \"impressions\" | \"heartbeat\"\n): string {\n return `${mqttConfig.topicPrefix}/${licenseKey}/${channel}`;\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MQTTConfig } from './mqttConfig.cjs';
|
|
2
|
+
|
|
3
|
+
type MQTTStatus = "disconnected" | "connecting" | "connected" | "error";
|
|
4
|
+
declare function getMQTTStatus(): MQTTStatus;
|
|
5
|
+
declare function isMQTTConnected(): boolean;
|
|
6
|
+
declare function isMQTTConfigured(): boolean;
|
|
7
|
+
declare function configureMQTT(overrides: Partial<MQTTConfig>): void;
|
|
8
|
+
declare function initMQTTClient(): void;
|
|
9
|
+
declare function ensureMQTTClient(): void;
|
|
10
|
+
declare function publishMQTT(topic: string, payload: Record<string, unknown>): boolean;
|
|
11
|
+
declare function disconnectMQTT(): void;
|
|
12
|
+
|
|
13
|
+
export { type MQTTStatus, configureMQTT, disconnectMQTT, ensureMQTTClient, getMQTTStatus, initMQTTClient, isMQTTConfigured, isMQTTConnected, publishMQTT };
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
function _define_property(obj, key, value) {
|
|
3
|
+
if (key in obj) {
|
|
4
|
+
Object.defineProperty(obj, key, {
|
|
5
|
+
value: value,
|
|
6
|
+
enumerable: true,
|
|
7
|
+
configurable: true,
|
|
8
|
+
writable: true
|
|
9
|
+
});
|
|
10
|
+
} else {
|
|
11
|
+
obj[key] = value;
|
|
12
|
+
}
|
|
13
|
+
return obj;
|
|
14
|
+
}
|
|
15
|
+
function _object_spread(target) {
|
|
16
|
+
for(var i = 1; i < arguments.length; i++){
|
|
17
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
18
|
+
var ownKeys = Object.keys(source);
|
|
19
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
20
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
21
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
ownKeys.forEach(function(key) {
|
|
25
|
+
_define_property(target, key, source[key]);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return target;
|
|
29
|
+
}
|
|
30
|
+
function _type_of(obj) {
|
|
31
|
+
"@swc/helpers - typeof";
|
|
32
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
33
|
+
}
|
|
34
|
+
var __defProp = Object.defineProperty;
|
|
35
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
36
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
37
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
38
|
+
var __export = function __export(target, all) {
|
|
39
|
+
for(var name in all)__defProp(target, name, {
|
|
40
|
+
get: all[name],
|
|
41
|
+
enumerable: true
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var __copyProps = function __copyProps(to, from, except, desc) {
|
|
45
|
+
if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
|
|
46
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
47
|
+
try {
|
|
48
|
+
var _loop = function() {
|
|
49
|
+
var key = _step.value;
|
|
50
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
51
|
+
get: function get() {
|
|
52
|
+
return from[key];
|
|
53
|
+
},
|
|
54
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
|
|
58
|
+
} catch (err) {
|
|
59
|
+
_didIteratorError = true;
|
|
60
|
+
_iteratorError = err;
|
|
61
|
+
} finally{
|
|
62
|
+
try {
|
|
63
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
64
|
+
_iterator.return();
|
|
65
|
+
}
|
|
66
|
+
} finally{
|
|
67
|
+
if (_didIteratorError) {
|
|
68
|
+
throw _iteratorError;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return to;
|
|
74
|
+
};
|
|
75
|
+
var __toCommonJS = function __toCommonJS(mod) {
|
|
76
|
+
return __copyProps(__defProp({}, "__esModule", {
|
|
77
|
+
value: true
|
|
78
|
+
}), mod);
|
|
79
|
+
};
|
|
80
|
+
// src/utils/mqttConfig.ts
|
|
81
|
+
var mqttConfig_exports = {};
|
|
82
|
+
__export(mqttConfig_exports, {
|
|
83
|
+
DEFAULT_MQTT_CONFIG: function DEFAULT_MQTT_CONFIG1() {
|
|
84
|
+
return DEFAULT_MQTT_CONFIG;
|
|
85
|
+
},
|
|
86
|
+
MQTT_CA_CERT_FILE: function MQTT_CA_CERT_FILE1() {
|
|
87
|
+
return MQTT_CA_CERT_FILE;
|
|
88
|
+
},
|
|
89
|
+
applyMQTTConfig: function applyMQTTConfig1() {
|
|
90
|
+
return applyMQTTConfig;
|
|
91
|
+
},
|
|
92
|
+
buildMQTTBrokerUrl: function buildMQTTBrokerUrl1() {
|
|
93
|
+
return buildMQTTBrokerUrl;
|
|
94
|
+
},
|
|
95
|
+
buildPlayerTopic: function buildPlayerTopic1() {
|
|
96
|
+
return buildPlayerTopic;
|
|
97
|
+
},
|
|
98
|
+
isMQTTEnabled: function isMQTTEnabled1() {
|
|
99
|
+
return isMQTTEnabled;
|
|
100
|
+
},
|
|
101
|
+
mqttConfig: function mqttConfig1() {
|
|
102
|
+
return mqttConfig;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
module.exports = __toCommonJS(mqttConfig_exports);
|
|
106
|
+
var MQTT_CA_CERT_FILE = "src/certs/emqxsl-ca.crt";
|
|
107
|
+
var DEFAULT_MQTT_CONFIG = {
|
|
108
|
+
enabled: true,
|
|
109
|
+
brokerAddress: "vecbae77.ala.us-east-1.emqxsl.com",
|
|
110
|
+
brokerPort: 8883,
|
|
111
|
+
wsPort: 8084,
|
|
112
|
+
username: "for-sonifi",
|
|
113
|
+
password: "sonifi-mqtt",
|
|
114
|
+
topicPrefix: "adstorm/players",
|
|
115
|
+
qos: 1
|
|
116
|
+
};
|
|
117
|
+
var mqttConfig = _object_spread({}, DEFAULT_MQTT_CONFIG);
|
|
118
|
+
function applyMQTTConfig(overrides) {
|
|
119
|
+
Object.assign(mqttConfig, overrides);
|
|
120
|
+
}
|
|
121
|
+
function isMQTTEnabled() {
|
|
122
|
+
return mqttConfig.enabled;
|
|
123
|
+
}
|
|
124
|
+
function buildMQTTBrokerUrl() {
|
|
125
|
+
if (mqttConfig.brokerUrl) return mqttConfig.brokerUrl;
|
|
126
|
+
return "wss://".concat(mqttConfig.brokerAddress, ":").concat(mqttConfig.wsPort, "/mqtt");
|
|
127
|
+
}
|
|
128
|
+
function buildPlayerTopic(licenseKey, channel) {
|
|
129
|
+
return "".concat(mqttConfig.topicPrefix, "/").concat(licenseKey, "/").concat(channel);
|
|
130
|
+
}
|
|
131
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
132
|
+
0 && (module.exports = {
|
|
133
|
+
DEFAULT_MQTT_CONFIG: DEFAULT_MQTT_CONFIG,
|
|
134
|
+
MQTT_CA_CERT_FILE: MQTT_CA_CERT_FILE,
|
|
135
|
+
applyMQTTConfig: applyMQTTConfig,
|
|
136
|
+
buildMQTTBrokerUrl: buildMQTTBrokerUrl,
|
|
137
|
+
buildPlayerTopic: buildPlayerTopic,
|
|
138
|
+
isMQTTEnabled: isMQTTEnabled,
|
|
139
|
+
mqttConfig: mqttConfig
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=mqttConfig.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/mqttConfig.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IACA,EAAIA,OAAAA,KAAYC,OAAOC,cAAc;IACrC,EAAIC,aAAAA,MAAmBF,OAAOG,wBAAwB;IACtD,EAAIC,UAAAA,UAAoBJ,OAAOK,mBAAmB;IAClD,EAAIC,MAAAA,SAAeN,OAAOO,SAAS,CAACC,cAAc;IAClD,EAAIC,QAAAA,GAAW,kBAACC,QAAQC;MACtB,IAAK,IAAIC,QAAQD,IACfZ,UAAUW,QAAQE,MAAM;UAAEC,KAAKF,EAAAA,CAAG,CAACC,KAAK;UAAEE,YAAY;IAAK;AAC/D,IAAA,aAAA,mBAAA;AACA,IAAIC,KAAAA,SAAc,OAAA,SAAA,KAACC,IAAIC,MAAMC,QAAQC;MACnC,IAAIF,CAAAA,MAAAA,CAAQ,CAAA,OAAOA,IAAAA,iCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D,kCAAA,2BAAA;;;gBAAA,IAAIG,MAAJ;gBACH,IAAI,CAACd,aAAae,IAAI,CAACL,IAAII,QAAQA,QAAQF,QACzCnB,UAAUiB,IAAII,KAAK;sBAAEP,KAAK,CAAA,EAAA,MAALA,CAAAA,WAAAA,SAAAA;oBAAoB,oBAATI,IAAI,CAACG,IAAI,EAAA,EAAA,KAAA,OAAA,WAAA,MAAA,EAAA;;oBAAEN,MAAAA,MAAY,CAAEK,CAAAA,EAAAA,EAAAA,GAAOjB,IAAAA,aAAiBe,MAAMG,IAAG,KAAMD,KAAKL,UAAU;cAAC,WAAA,OAAA,WAAA,EAAA,KAAA,OAAA,YAAA,KAAA,OAAA;;YAFpH,QAAK,YAAWV,kBAAkBa,WAAAA,eAA7B,SAAA,6BAAA,QAAA,yBAAA;;mCAAA;iCAAA;;;yCAAA,6BAAA;qCAAA","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/utils/mqttConfig.ts\nvar mqttConfig_exports = {};\n__export(mqttConfig_exports, {\n DEFAULT_MQTT_CONFIG: () => DEFAULT_MQTT_CONFIG,\n MQTT_CA_CERT_FILE: () => MQTT_CA_CERT_FILE,\n applyMQTTConfig: () => applyMQTTConfig,\n buildMQTTBrokerUrl: () => buildMQTTBrokerUrl,\n buildPlayerTopic: () => buildPlayerTopic,\n isMQTTEnabled: () => isMQTTEnabled,\n mqttConfig: () => mqttConfig\n});\nmodule.exports = __toCommonJS(mqttConfig_exports);\nvar MQTT_CA_CERT_FILE = \"src/certs/emqxsl-ca.crt\";\nvar DEFAULT_MQTT_CONFIG = {\n enabled: true,\n brokerAddress: \"vecbae77.ala.us-east-1.emqxsl.com\",\n brokerPort: 8883,\n wsPort: 8084,\n username: \"for-sonifi\",\n password: \"sonifi-mqtt\",\n topicPrefix: \"adstorm/players\",\n qos: 1\n};\nvar mqttConfig = { ...DEFAULT_MQTT_CONFIG };\nfunction applyMQTTConfig(overrides) {\n Object.assign(mqttConfig, overrides);\n}\nfunction isMQTTEnabled() {\n return mqttConfig.enabled;\n}\nfunction buildMQTTBrokerUrl() {\n if (mqttConfig.brokerUrl) return mqttConfig.brokerUrl;\n return `wss://${mqttConfig.brokerAddress}:${mqttConfig.wsPort}/mqtt`;\n}\nfunction buildPlayerTopic(licenseKey, channel) {\n return `${mqttConfig.topicPrefix}/${licenseKey}/${channel}`;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n DEFAULT_MQTT_CONFIG,\n MQTT_CA_CERT_FILE,\n applyMQTTConfig,\n buildMQTTBrokerUrl,\n buildPlayerTopic,\n isMQTTEnabled,\n mqttConfig\n});\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare const MQTT_CA_CERT_FILE = "src/certs/emqxsl-ca.crt";
|
|
2
|
+
type MQTTConfig = {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
brokerAddress: string;
|
|
5
|
+
brokerPort: number;
|
|
6
|
+
wsPort: number;
|
|
7
|
+
username: string;
|
|
8
|
+
password: string;
|
|
9
|
+
topicPrefix: string;
|
|
10
|
+
qos: 0 | 1 | 2;
|
|
11
|
+
brokerUrl?: string;
|
|
12
|
+
};
|
|
13
|
+
declare const DEFAULT_MQTT_CONFIG: MQTTConfig;
|
|
14
|
+
declare const mqttConfig: MQTTConfig;
|
|
15
|
+
declare function applyMQTTConfig(overrides: Partial<MQTTConfig>): void;
|
|
16
|
+
declare function isMQTTEnabled(): boolean;
|
|
17
|
+
declare function buildMQTTBrokerUrl(): string;
|
|
18
|
+
declare function buildPlayerTopic(licenseKey: string, channel: "metrics" | "impressions" | "heartbeat"): string;
|
|
19
|
+
|
|
20
|
+
export { DEFAULT_MQTT_CONFIG, type MQTTConfig, MQTT_CA_CERT_FILE, applyMQTTConfig, buildMQTTBrokerUrl, buildPlayerTopic, isMQTTEnabled, mqttConfig };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/polyfills.cjs"],"names":[],"mappings":"AAAA","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/utils/polyfills.ts\nvar polyfills_exports = {};\n__export(polyfills_exports, {\n initializePolyfills: () => initializePolyfills,\n polyfillArrayFrom: () => polyfillArrayFrom,\n polyfillObjectAssign: () => polyfillObjectAssign,\n polyfillPromiseFinally: () => polyfillPromiseFinally,\n polyfillStringEndsWith: () => polyfillStringEndsWith,\n polyfillStringIncludes: () => polyfillStringIncludes,\n polyfillStringStartsWith: () => polyfillStringStartsWith,\n polyfillTextEncoder: () => polyfillTextEncoder,\n polyfillURLSearchParams: () => polyfillURLSearchParams\n});\nmodule.exports = __toCommonJS(polyfills_exports);\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n initializePolyfills,\n polyfillArrayFrom,\n polyfillObjectAssign,\n polyfillPromiseFinally,\n polyfillStringEndsWith,\n polyfillStringIncludes,\n polyfillStringStartsWith,\n polyfillTextEncoder,\n polyfillURLSearchParams\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/ubuntu24-new/Dev/stormcloud-vp/lib/utils/polyfills.cjs","../../src/utils/polyfills.ts"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","polyfills_exports","initializePolyfills","polyfillArrayFrom","polyfillObjectAssign","polyfillPromiseFinally","polyfillStringEndsWith","polyfillStringIncludes","polyfillStringStartsWith","polyfillTextEncoder","polyfillURLSearchParams","URLSearchParams","URLSearchParamsPolyfill","init","params","Map","parseQueryString","forEach","append","query","cleanQuery","startsWith","slice","split","param","decodedKey","safeDecodeURIComponent","decodedValue","str","decodeURIComponent","replace","e","values","push","String","set","delete","length","getAll","has","callback"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/utils/polyfills.ts\nvar polyfills_exports = {};\n__export(polyfills_exports, {\n initializePolyfills: () => initializePolyfills,\n polyfillArrayFrom: () => polyfillArrayFrom,\n polyfillObjectAssign: () => polyfillObjectAssign,\n polyfillPromiseFinally: () => polyfillPromiseFinally,\n polyfillStringEndsWith: () => polyfillStringEndsWith,\n polyfillStringIncludes: () => polyfillStringIncludes,\n polyfillStringStartsWith: () => polyfillStringStartsWith,\n polyfillTextEncoder: () => polyfillTextEncoder,\n polyfillURLSearchParams: () => polyfillURLSearchParams\n});\nmodule.exports = __toCommonJS(polyfills_exports);\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n initializePolyfills,\n polyfillArrayFrom,\n polyfillObjectAssign,\n polyfillPromiseFinally,\n polyfillStringEndsWith,\n polyfillStringIncludes,\n polyfillStringStartsWith,\n polyfillTextEncoder,\n polyfillURLSearchParams\n});\n","export function polyfillURLSearchParams(): void {\n if (typeof URLSearchParams !== 'undefined') {\n return;\n }\n\n class URLSearchParamsPolyfill {\n private params: Map<string, string[]>;\n\n constructor(init?: string | URLSearchParamsPolyfill) {\n this.params = new Map();\n\n if (typeof init === 'string') {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n\n private parseQueryString(query: string): void {\n const cleanQuery = query.startsWith('?') ? query.slice(1) : query;\n if (!cleanQuery) return;\n\n cleanQuery.split('&').forEach((param) => {\n const [key, value] = param.split('=');\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : '';\n this.append(decodedKey, decodedValue);\n }\n });\n }\n\n private safeDecodeURIComponent(str: string): string {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n }\n\n append(name: string, value: string): void {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n\n delete(name: string): void {\n this.params.delete(name);\n }\n\n get(name: string): string | null {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== undefined ? values[0] : null;\n }\n\n getAll(name: string): string[] {\n return this.params.get(name) || [];\n }\n\n has(name: string): boolean {\n return this.params.has(name);\n }\n\n set(name: string, value: string): void {\n this.params.set(name, [String(value)]);\n }\n\n forEach(callback: (value: string, key: string, parent: URLSearchParamsPolyfill) => void): void {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n\n toString(): string {\n const parts: string[] = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join('&');\n }\n }\n\n // @ts-ignore\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\n\nexport function polyfillTextEncoder(): void {\n if (typeof TextEncoder !== 'undefined') {\n return;\n }\n\n class TextEncoderPolyfill {\n encoding = 'utf-8';\n\n encode(str: string): Uint8Array {\n const utf8: number[] = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) {\n utf8.push(charcode);\n } else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(\n 0xe0 | (charcode >> 12),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f)\n );\n } else {\n i++;\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n utf8.push(\n 0xf0 | (charcode >> 18),\n 0x80 | ((charcode >> 12) & 0x3f),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f)\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n\n // @ts-ignore\n window.TextEncoder = TextEncoderPolyfill;\n}\n\nexport function polyfillPromiseFinally(): void {\n if (typeof Promise !== 'undefined' && !Promise.prototype.finally) {\n Promise.prototype.finally = function (callback: () => void) {\n const constructor = this.constructor as PromiseConstructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) =>\n constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\n\nexport function polyfillObjectAssign(): void {\n if (typeof Object.assign !== 'function') {\n Object.assign = function (target: any, ...sources: any[]) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n const to = Object(target);\n\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n\n return to;\n };\n }\n}\n\nexport function polyfillArrayFrom(): void {\n if (!Array.from) {\n Array.from = function (arrayLike: any, mapFn?: any, thisArg?: any) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError('Array.from requires an array-like object');\n }\n\n const len = items.length >>> 0;\n const result = new Array(len);\n\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n\n return result;\n };\n }\n}\n\nexport function polyfillStringStartsWith(): void {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function (search: string, pos?: number) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\n\nexport function polyfillStringEndsWith(): void {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function (search: string, length?: number) {\n if (length === undefined || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\n\nexport function polyfillStringIncludes(): void {\n if (!String.prototype.includes) {\n String.prototype.includes = function (search: string, start?: number) {\n if (typeof start !== 'number') {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\n\nexport function initializePolyfills(): void {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n"]}
|