{"version":3,"file":"RTCIceCandidate.cjs","sources":["../../../src/polyfill/RTCIceCandidate.ts"],"sourcesContent":["// https://developer.mozilla.org/docs/Web/API/RTCIceCandidate\n//\n// Example: candidate:123456 1 UDP 123456 192.168.1.1 12345 typ host raddr=10.0.0.1 rport=54321 generation 0\n\n\nexport default class RTCIceCandidate implements globalThis.RTCIceCandidate {\n    #address: string | null;\n    #candidate: string;\n    #component: globalThis.RTCIceComponent | null;\n    #foundation: string | null;\n    #port: number | null;\n    #priority: number | null;\n    #protocol: globalThis.RTCIceProtocol | null;\n    #relatedAddress: string | null;\n    #relatedPort: number | null;\n    #sdpMLineIndex: number | null;\n    #sdpMid: string | null;\n    #tcpType: globalThis.RTCIceTcpCandidateType | null;\n    #type: globalThis.RTCIceCandidateType | null;\n    #usernameFragment: string | null;\n\n    constructor({ candidate, sdpMLineIndex, sdpMid, usernameFragment }: globalThis.RTCIceCandidateInit) {\n        if (sdpMLineIndex == null && sdpMid == null)\n            throw new TypeError('At least one of sdpMLineIndex or sdpMid must be specified');\n\n        this.#candidate = candidate === null ? 'null' : candidate ?? '';\n        this.#sdpMLineIndex = sdpMLineIndex ?? null;\n        this.#sdpMid = sdpMid ?? null;\n        this.#usernameFragment = usernameFragment ?? null;\n\n        if (candidate) {\n            const fields = candidate.split(' ');\n            this.#foundation = fields[0].replace('candidate:', ''); // remove text candidate:\n            this.#component = fields[1] == '1' ? 'rtp' : 'rtcp';\n            this.#protocol = fields[2] as globalThis.RTCIceProtocol;\n            this.#priority = parseInt(fields[3], 10);\n            this.#address = fields[4];\n            this.#port = parseInt(fields[5], 10);\n            this.#type = fields[7] as globalThis.RTCIceCandidateType;\n            this.#tcpType = null;\n            this.#relatedAddress = null;\n            this.#relatedPort = null;\n\n            // Parse the candidate string to extract relatedPort and relatedAddress\n            for (let i = 8; i < fields.length; i++) {\n                const field = fields[i];\n                if (field === 'raddr') {\n                    this.#relatedAddress = fields[i + 1];\n                } else if (field === 'rport') {\n                    this.#relatedPort = parseInt(fields[i + 1], 10);\n                }\n\n                if (this.#protocol === 'tcp' && field === 'tcptype') {\n                    this.#tcpType = fields[i + 1] as globalThis.RTCIceTcpCandidateType;\n                }\n            }\n        }\n    }\n\n    get address(): string | null {\n        return this.#address || null;\n    }\n\n    get candidate(): string {\n        return this.#candidate;\n    }\n\n    get component(): globalThis.RTCIceComponent | null {\n        return this.#component;\n    }\n\n    get foundation(): string | null {\n        return this.#foundation || null;\n    }\n\n    get port(): number | null {\n        return this.#port || null;\n    }\n\n    get priority(): number | null {\n        return this.#priority || null;\n    }\n\n    get protocol(): globalThis.RTCIceProtocol | null {\n        return this.#protocol || null;\n    }\n\n    get relatedAddress(): string | null {\n        return this.#relatedAddress;\n    }\n\n    get relatedPort(): number | null {\n        return this.#relatedPort || null;\n    }\n\n    get sdpMLineIndex(): number | null {\n        return this.#sdpMLineIndex;\n    }\n\n    get sdpMid(): string | null {\n        return this.#sdpMid;\n    }\n\n    get tcpType(): globalThis.RTCIceTcpCandidateType | null {\n        return this.#tcpType;\n    }\n\n    get type(): globalThis.RTCIceCandidateType | null {\n        return this.#type || null;\n    }\n\n    get usernameFragment(): string | null {\n        return this.#usernameFragment;\n    }\n\n    toJSON(): globalThis.RTCIceCandidateInit {\n        return {\n            candidate: this.#candidate,\n            sdpMLineIndex: this.#sdpMLineIndex,\n            sdpMid: this.#sdpMid,\n            usernameFragment: this.#usernameFragment,\n        };\n    }\n}\n"],"names":[],"mappings":"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"}