diff --git a/.eslintrc.js b/.eslintrc.js index 091686c87c..0a7b8862a3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,175 +1,175 @@ const eslintConfig = { - env : + env: { - es6 : true, - node : true + es6 : true, + node: true }, - plugins : [], - settings : {}, - parserOptions : + plugins : [], + settings : {}, + parserOptions: { - ecmaVersion : 2018, - sourceType : 'module', - ecmaFeatures : + ecmaVersion : 2018, + sourceType : 'module', + ecmaFeatures: { - impliedStrict : true + impliedStrict: true } }, - rules : + rules: { - 'array-bracket-spacing' : [ 2, 'always', + 'array-bracket-spacing': [ 2, 'always', { - objectsInArrays : true, - arraysInArrays : true + objectsInArrays: true, + arraysInArrays : true } ], - 'arrow-parens' : [ 2, 'always' ], - 'arrow-spacing' : 2, - 'block-spacing' : [ 2, 'always' ], - 'brace-style' : [ 2, 'allman', { allowSingleLine: true } ], - 'camelcase' : 2, - 'comma-dangle' : 2, - 'comma-spacing' : [ 2, { before: false, after: true } ], - 'comma-style' : 2, - 'computed-property-spacing' : 2, - 'constructor-super' : 2, - 'func-call-spacing' : 2, - 'generator-star-spacing' : 2, - 'guard-for-in' : 2, - 'indent' : [ 2, 'tab', { 'SwitchCase': 1 } ], - 'key-spacing' : [ 2, + 'arrow-parens' : [ 2, 'always' ], + 'arrow-spacing' : 2, + 'block-spacing' : [ 2, 'always' ], + 'brace-style' : [ 2, 'allman', { allowSingleLine: true } ], + 'camelcase' : 2, + 'comma-dangle' : 2, + 'comma-spacing' : [ 2, { before: false, after: true } ], + 'comma-style' : 2, + 'computed-property-spacing': 2, + 'constructor-super' : 2, + 'func-call-spacing' : 2, + 'generator-star-spacing' : 2, + 'guard-for-in' : 2, + 'indent' : [ 2, 'tab', { 'SwitchCase': 1 } ], + 'key-spacing' : [ 2, { - singleLine : + singleLine: { - beforeColon : false, - afterColon : true + beforeColon: false, + afterColon : true }, - multiLine : + multiLine: { - beforeColon : true, - afterColon : true, - align : 'colon' + beforeColon: false, + afterColon : true, + align : 'colon' } } ], - 'keyword-spacing' : 2, - 'linebreak-style' : [ 2, 'unix' ], - 'lines-around-comment' : [ 2, + 'keyword-spacing' : 2, + 'linebreak-style' : [ 2, 'unix' ], + 'lines-around-comment': [ 2, { - allowBlockStart : true, - allowObjectStart : true, - beforeBlockComment : false, - beforeLineComment : false + allowBlockStart : true, + allowObjectStart : true, + beforeBlockComment: false, + beforeLineComment : false } ], - 'max-len' : [ 2, 90, + 'max-len': [ 2, 90, { - tabWidth : 2, - comments : 90, - ignoreUrls : true, - ignoreStrings : true, - ignoreTemplateLiterals : true, - ignoreRegExpLiterals : true + tabWidth : 2, + comments : 90, + ignoreUrls : true, + ignoreStrings : true, + ignoreTemplateLiterals: true, + ignoreRegExpLiterals : true } ], - 'newline-after-var' : 2, - 'newline-before-return' : 2, - 'newline-per-chained-call' : 2, - 'no-alert' : 2, - 'no-caller' : 2, - 'no-case-declarations' : 2, - 'no-catch-shadow' : 2, - 'no-class-assign' : 2, - 'no-confusing-arrow' : 2, - 'no-console' : 2, - 'no-const-assign' : 2, - 'no-debugger' : 2, - 'no-dupe-args' : 2, - 'no-dupe-keys' : 2, - 'no-duplicate-case' : 2, - 'no-div-regex' : 2, - 'no-empty' : [ 2, { allowEmptyCatch: true } ], - 'no-empty-pattern' : 2, - 'no-else-return' : 0, - 'no-eval' : 2, - 'no-extend-native' : 2, - 'no-ex-assign' : 2, - 'no-extra-bind' : 2, - 'no-extra-boolean-cast' : 2, - 'no-extra-label' : 2, - 'no-extra-semi' : 2, - 'no-fallthrough' : 2, - 'no-func-assign' : 2, - 'no-global-assign' : 2, - 'no-implicit-coercion' : 2, - 'no-implicit-globals' : 2, - 'no-inner-declarations' : 2, - 'no-invalid-regexp' : 2, - 'no-invalid-this' : 2, - 'no-irregular-whitespace' : 2, - 'no-lonely-if' : 2, - 'no-mixed-operators' : 2, - 'no-mixed-spaces-and-tabs' : 2, - 'no-multi-spaces' : 2, - 'no-multi-str' : 2, - 'no-multiple-empty-lines' : [ 1, { max: 1, maxEOF: 0, maxBOF: 0 } ], - 'no-native-reassign' : 2, - 'no-negated-in-lhs' : 2, - 'no-new' : 2, - 'no-new-func' : 2, - 'no-new-wrappers' : 2, - 'no-obj-calls' : 2, - 'no-proto' : 2, - 'no-prototype-builtins' : 0, - 'no-redeclare' : 2, - 'no-regex-spaces' : 2, - 'no-restricted-imports' : 2, - 'no-return-assign' : 2, - 'no-self-assign' : 2, - 'no-self-compare' : 2, - 'no-sequences' : 2, - 'no-shadow' : 2, - 'no-shadow-restricted-names' : 2, - 'no-spaced-func' : 2, - 'no-sparse-arrays' : 2, - 'no-this-before-super' : 2, - 'no-throw-literal' : 2, - 'no-undef' : 2, - 'no-unexpected-multiline' : 2, - 'no-unmodified-loop-condition' : 2, - 'no-unreachable' : 2, - 'no-unused-vars' : [ 1, { vars: 'all', args: 'after-used' } ], - 'no-use-before-define' : [ 2, { functions: false } ], - 'no-useless-call' : 2, - 'no-useless-computed-key' : 2, - 'no-useless-concat' : 2, - 'no-useless-rename' : 2, - 'no-var' : 2, - 'no-whitespace-before-property' : 2, - 'object-curly-newline' : 0, - 'object-curly-spacing' : [ 2, 'always' ], - 'object-property-newline' : [ 2, { allowMultiplePropertiesPerLine: true } ], - 'prefer-const' : 2, - 'prefer-rest-params' : 2, - 'prefer-spread' : 2, - 'prefer-template' : 2, - 'quotes' : [ 2, 'single', { avoidEscape: true } ], - 'semi' : [ 2, 'always' ], - 'semi-spacing' : 2, - 'space-before-blocks' : 2, - 'space-before-function-paren' : [ 2, + 'newline-after-var' : 2, + 'newline-before-return' : 2, + 'newline-per-chained-call' : 2, + 'no-alert' : 2, + 'no-caller' : 2, + 'no-case-declarations' : 2, + 'no-catch-shadow' : 2, + 'no-class-assign' : 2, + 'no-confusing-arrow' : 2, + 'no-console' : 2, + 'no-const-assign' : 2, + 'no-debugger' : 2, + 'no-dupe-args' : 2, + 'no-dupe-keys' : 2, + 'no-duplicate-case' : 2, + 'no-div-regex' : 2, + 'no-empty' : [ 2, { allowEmptyCatch: true } ], + 'no-empty-pattern' : 2, + 'no-else-return' : 0, + 'no-eval' : 2, + 'no-extend-native' : 2, + 'no-ex-assign' : 2, + 'no-extra-bind' : 2, + 'no-extra-boolean-cast' : 2, + 'no-extra-label' : 2, + 'no-extra-semi' : 2, + 'no-fallthrough' : 2, + 'no-func-assign' : 2, + 'no-global-assign' : 2, + 'no-implicit-coercion' : 2, + 'no-implicit-globals' : 2, + 'no-inner-declarations' : 2, + 'no-invalid-regexp' : 2, + 'no-invalid-this' : 2, + 'no-irregular-whitespace' : 2, + 'no-lonely-if' : 2, + 'no-mixed-operators' : 2, + 'no-mixed-spaces-and-tabs' : 2, + 'no-multi-spaces' : 2, + 'no-multi-str' : 2, + 'no-multiple-empty-lines' : [ 1, { max: 1, maxEOF: 0, maxBOF: 0 } ], + 'no-native-reassign' : 2, + 'no-negated-in-lhs' : 2, + 'no-new' : 2, + 'no-new-func' : 2, + 'no-new-wrappers' : 2, + 'no-obj-calls' : 2, + 'no-proto' : 2, + 'no-prototype-builtins' : 0, + 'no-redeclare' : 2, + 'no-regex-spaces' : 2, + 'no-restricted-imports' : 2, + 'no-return-assign' : 2, + 'no-self-assign' : 2, + 'no-self-compare' : 2, + 'no-sequences' : 2, + 'no-shadow' : 2, + 'no-shadow-restricted-names' : 2, + 'no-spaced-func' : 2, + 'no-sparse-arrays' : 2, + 'no-this-before-super' : 2, + 'no-throw-literal' : 2, + 'no-undef' : 2, + 'no-unexpected-multiline' : 2, + 'no-unmodified-loop-condition' : 2, + 'no-unreachable' : 2, + 'no-unused-vars' : [ 1, { vars: 'all', args: 'after-used' } ], + 'no-use-before-define' : [ 2, { functions: false } ], + 'no-useless-call' : 2, + 'no-useless-computed-key' : 2, + 'no-useless-concat' : 2, + 'no-useless-rename' : 2, + 'no-var' : 2, + 'no-whitespace-before-property': 2, + 'object-curly-newline' : 0, + 'object-curly-spacing' : [ 2, 'always' ], + 'object-property-newline' : [ 2, { allowMultiplePropertiesPerLine: true } ], + 'prefer-const' : 2, + 'prefer-rest-params' : 2, + 'prefer-spread' : 2, + 'prefer-template' : 2, + 'quotes' : [ 2, 'single', { avoidEscape: true } ], + 'semi' : [ 2, 'always' ], + 'semi-spacing' : 2, + 'space-before-blocks' : 2, + 'space-before-function-paren' : [ 2, { - anonymous : 'never', - named : 'never', - asyncArrow : 'always' + anonymous : 'never', + named : 'never', + asyncArrow: 'always' } ], - 'space-in-parens' : [ 2, 'never' ], - 'spaced-comment' : [ 2, 'always' ], - 'strict' : 2, - 'valid-typeof' : 2, - 'yoda' : 2 + 'space-in-parens': [ 2, 'never' ], + 'spaced-comment' : [ 2, 'always' ], + 'strict' : 2, + 'valid-typeof' : 2, + 'yoda' : 2 } }; @@ -192,23 +192,23 @@ switch (process.env.MEDIASOUP_NODE_LANGUAGE) eslintConfig.rules = { ...eslintConfig.rules, - 'no-unused-vars' : 0, - '@typescript-eslint/ban-ts-ignore' : 0, - '@typescript-eslint/member-delimiter-style' : [ 2, + 'no-unused-vars' : 0, + '@typescript-eslint/ban-ts-ignore' : 0, + '@typescript-eslint/member-delimiter-style': [ 2, { - multiline : { delimiter: 'semi', requireLast: true }, - singleline : { delimiter: 'semi', requireLast: false } + multiline : { delimiter: 'semi', requireLast: true }, + singleline: { delimiter: 'semi', requireLast: false } } ], - '@typescript-eslint/no-explicit-any' : 0, - '@typescript-eslint/no-unused-vars' : [ 2, + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/no-unused-vars' : [ 2, { - vars : 'all', - args : 'after-used', - ignoreRestSiblings : false + vars : 'all', + args : 'after-used', + ignoreRestSiblings: false } ], - '@typescript-eslint/no-use-before-define' : 0 + '@typescript-eslint/no-use-before-define': 0 }; break; diff --git a/lib/Worker.js b/lib/Worker.js index 512849848c..03f63d8c1c 100644 --- a/lib/Worker.js +++ b/lib/Worker.js @@ -88,11 +88,11 @@ class Worker extends EnhancedEventEmitter_1.default { MEDIASOUP_VERSION: '3.3.3' }, detached: false, - // fd 0 (stdin) : Just ignore it. - // fd 1 (stdout) : Pipe it for 3rd libraries that log their own stuff. - // fd 2 (stderr) : Same as stdout. - // fd 3 (channel) : Producer Channel fd. - // fd 4 (channel) : Consumer Channel fd. + // fd 0 (stdin) : Just ignore it. + // fd 1 (stdout) : Pipe it for 3rd libraries that log their own stuff. + // fd 2 (stderr) : Same as stdout. + // fd 3 (channel): Producer Channel fd. + // fd 4 (channel): Consumer Channel fd. stdio: ['ignore', 'pipe', 'pipe', 'pipe', 'pipe'] }); this._workerLogger = new Logger_1.default(`worker[pid:${this._child.pid}]`); diff --git a/package.json b/package.json index 8b229de5e7..3ee96eb0ba 100644 --- a/package.json +++ b/package.json @@ -54,13 +54,13 @@ }, "devDependencies": { "@types/debug": "^4.1.5", - "@types/node": "^12.12.9", + "@types/node": "^12.12.12", "@types/random-number": "0.0.0", "@types/uuid": "^3.4.6", "@typescript-eslint/eslint-plugin": "^2.8.0", "@typescript-eslint/parser": "^2.8.0", "cross-env": "^6.0.3", - "eslint": "^6.6.0", + "eslint": "^6.7.0", "eslint-plugin-jest": "^23.0.4", "gulp": "^4.0.2", "gulp-clang-format": "^1.0.27", diff --git a/src/AudioLevelObserver.ts b/src/AudioLevelObserver.ts index 6961e7025f..eb4bc6cf21 100644 --- a/src/AudioLevelObserver.ts +++ b/src/AudioLevelObserver.ts @@ -86,7 +86,7 @@ export default class AudioLevelObserver extends RtpObserver const volumes: AudioLevelObserverVolume[] = data .map(({ producerId, volume }: { producerId: string; volume: number }) => ( { - producer : this._getProducerById(producerId), + producer: this._getProducerById(producerId), volume } )) diff --git a/src/Channel.ts b/src/Channel.ts index 4c7b609b9f..cf6b6213bf 100644 --- a/src/Channel.ts +++ b/src/Channel.ts @@ -241,9 +241,9 @@ export default class Channel extends EnhancedEventEmitter const timeout = 1000 * (15 + (0.1 * this._sents.size)); const sent: Sent = { - id : id, - method : method, - resolve : (data2) => + id : id, + method : method, + resolve: (data2) => { if (!this._sents.delete(id)) return; @@ -251,7 +251,7 @@ export default class Channel extends EnhancedEventEmitter clearTimeout(sent.timer); pResolve(data2); }, - reject : (error) => + reject: (error) => { if (!this._sents.delete(id)) return; @@ -259,14 +259,14 @@ export default class Channel extends EnhancedEventEmitter clearTimeout(sent.timer); pReject(error); }, - timer : setTimeout(() => + timer: setTimeout(() => { if (!this._sents.delete(id)) return; pReject(new Error('Channel request timeout')); }, timeout), - close : () => + close: () => { clearTimeout(sent.timer); pReject(new InvalidStateError('Channel closed')); diff --git a/src/PipeTransport.ts b/src/PipeTransport.ts index 3ca0bac064..fc129181fd 100644 --- a/src/PipeTransport.ts +++ b/src/PipeTransport.ts @@ -104,9 +104,9 @@ export default class PipeTransport extends Transport this._data = { - tuple : data.tuple, - sctpParameters : data.sctpParameters, - sctpState : data.sctpState + tuple : data.tuple, + sctpParameters: data.sctpParameters, + sctpState : data.sctpState }; this._handleWorkerNotifications(); @@ -251,10 +251,10 @@ export default class PipeTransport extends Transport const internal = { ...this._internal, consumerId: uuidv4(), producerId }; const reqData = { - kind : producer.kind, + kind : producer.kind, rtpParameters, - type : 'pipe', - consumableRtpEncodings : producer.consumableRtpParameters.encodings + type : 'pipe', + consumableRtpEncodings: producer.consumableRtpParameters.encodings }; const status = @@ -266,10 +266,10 @@ export default class PipeTransport extends Transport { internal, data, - channel : this._channel, + channel : this._channel, appData, - paused : status.paused, - producerPaused : status.producerPaused + paused : status.paused, + producerPaused: status.producerPaused }); this._consumers.set(consumer.id, consumer); diff --git a/src/PlainRtpTransport.ts b/src/PlainRtpTransport.ts index 6e165fb867..f3810cfcc9 100644 --- a/src/PlainRtpTransport.ts +++ b/src/PlainRtpTransport.ts @@ -134,10 +134,10 @@ export default class PlainRtpTransport extends Transport this._data = { - tuple : data.tuple, - rtcpTuple : data.rtcpTuple, - sctpParameters : data.sctpParameters, - sctpState : data.sctpState + tuple : data.tuple, + rtcpTuple : data.rtcpTuple, + sctpParameters: data.sctpParameters, + sctpState : data.sctpState }; this._handleWorkerNotifications(); diff --git a/src/Router.ts b/src/Router.ts index 0800e3306a..326139d20d 100644 --- a/src/Router.ts +++ b/src/Router.ts @@ -337,8 +337,8 @@ export default class Router extends EnhancedEventEmitter else if (typeof listenIp === 'object') { return { - ip : listenIp.ip, - announcedIp : listenIp.announcedIp || undefined + ip : listenIp.ip, + announcedIp: listenIp.announcedIp || undefined }; } else @@ -358,7 +358,7 @@ export default class Router extends EnhancedEventEmitter enableSctp, numSctpStreams, maxSctpMessageSize, - isDataChannel : true + isDataChannel: true }; const data = @@ -368,13 +368,13 @@ export default class Router extends EnhancedEventEmitter { internal, data, - channel : this._channel, + channel : this._channel, appData, - getRouterRtpCapabilities : (): RtpCapabilities => this._data.rtpCapabilities, - getProducerById : (producerId: string): Producer => ( + getRouterRtpCapabilities: (): RtpCapabilities => this._data.rtpCapabilities, + getProducerById : (producerId: string): Producer => ( this._producers.get(producerId) ), - getDataProducerById : (dataProducerId: string): DataProducer => ( + getDataProducerById: (dataProducerId: string): DataProducer => ( this._dataProducers.get(dataProducerId) ) }); @@ -427,8 +427,8 @@ export default class Router extends EnhancedEventEmitter { listenIp = { - ip : listenIp.ip, - announcedIp : listenIp.announcedIp || undefined + ip : listenIp.ip, + announcedIp: listenIp.announcedIp || undefined }; } else @@ -445,7 +445,7 @@ export default class Router extends EnhancedEventEmitter enableSctp, numSctpStreams, maxSctpMessageSize, - isDataChannel : false + isDataChannel: false }; const data = @@ -455,13 +455,13 @@ export default class Router extends EnhancedEventEmitter { internal, data, - channel : this._channel, + channel : this._channel, appData, - getRouterRtpCapabilities : (): RtpCapabilities => this._data.rtpCapabilities, - getProducerById : (producerId: string): Producer => ( + getRouterRtpCapabilities: (): RtpCapabilities => this._data.rtpCapabilities, + getProducerById : (producerId: string): Producer => ( this._producers.get(producerId) ), - getDataProducerById : (dataProducerId: string): DataProducer => ( + getDataProducerById: (dataProducerId: string): DataProducer => ( this._dataProducers.get(dataProducerId) ) }); @@ -511,8 +511,8 @@ export default class Router extends EnhancedEventEmitter { listenIp = { - ip : listenIp.ip, - announcedIp : listenIp.announcedIp || undefined + ip : listenIp.ip, + announcedIp: listenIp.announcedIp || undefined }; } else @@ -526,7 +526,7 @@ export default class Router extends EnhancedEventEmitter enableSctp, numSctpStreams, maxSctpMessageSize, - isDataChannel : false + isDataChannel: false }; const data = @@ -536,13 +536,13 @@ export default class Router extends EnhancedEventEmitter { internal, data, - channel : this._channel, + channel : this._channel, appData, - getRouterRtpCapabilities : (): RtpCapabilities => this._data.rtpCapabilities, - getProducerById : (producerId: string): Producer => ( + getRouterRtpCapabilities: (): RtpCapabilities => this._data.rtpCapabilities, + getProducerById : (producerId: string): Producer => ( this._producers.get(producerId) ), - getDataProducerById : (dataProducerId: string): DataProducer => ( + getDataProducerById: (dataProducerId: string): DataProducer => ( this._dataProducers.get(dataProducerId) ) }); @@ -631,13 +631,13 @@ export default class Router extends EnhancedEventEmitter [ localPipeTransport.connect( { - ip : remotePipeTransport.tuple.localIp, - port : remotePipeTransport.tuple.localPort + ip : remotePipeTransport.tuple.localIp, + port: remotePipeTransport.tuple.localPort }), remotePipeTransport.connect( { - ip : localPipeTransport.tuple.localIp, - port : localPipeTransport.tuple.localPort + ip : localPipeTransport.tuple.localIp, + port: localPipeTransport.tuple.localPort }) ]); @@ -683,11 +683,11 @@ export default class Router extends EnhancedEventEmitter pipeProducer = await remotePipeTransport.produce( { - id : producer.id, - kind : pipeConsumer.kind, - rtpParameters : pipeConsumer.rtpParameters, - paused : pipeConsumer.producerPaused, - appData : producer.appData + id : producer.id, + kind : pipeConsumer.kind, + rtpParameters: pipeConsumer.rtpParameters, + paused : pipeConsumer.producerPaused, + appData : producer.appData }); // Pipe events from the pipe Consumer to the pipe Producer. @@ -729,11 +729,11 @@ export default class Router extends EnhancedEventEmitter pipeDataProducer = await remotePipeTransport.produceData( { - id : dataProducer.id, - sctpStreamParameters : pipeDataConsumer.sctpStreamParameters, - label : pipeDataConsumer.label, - protocol : pipeDataConsumer.protocol, - appData : dataProducer.appData + id : dataProducer.id, + sctpStreamParameters: pipeDataConsumer.sctpStreamParameters, + label : pipeDataConsumer.label, + protocol : pipeDataConsumer.protocol, + appData : dataProducer.appData }); // Pipe events from the pipe DataConsumer to the pipe DataProducer. @@ -790,9 +790,9 @@ export default class Router extends EnhancedEventEmitter const audioLevelObserver = new AudioLevelObserver( { internal, - channel : this._channel, + channel : this._channel, appData, - getProducerById : (producerId: string): Producer => ( + getProducerById: (producerId: string): Producer => ( this._producers.get(producerId) ) }); diff --git a/src/Transport.ts b/src/Transport.ts index 4bc2b814a6..d4840fd7db 100644 --- a/src/Transport.ts +++ b/src/Transport.ts @@ -448,7 +448,7 @@ export default class Transport extends EnhancedEventEmitter { kind, rtpParameters, - type : status.type, + type: status.type, consumableRtpParameters }; @@ -456,7 +456,7 @@ export default class Transport extends EnhancedEventEmitter { internal, data, - channel : this._channel, + channel: this._channel, appData, paused }); @@ -512,10 +512,10 @@ export default class Transport extends EnhancedEventEmitter const internal = { ...this._internal, consumerId: uuidv4(), producerId }; const reqData = { - kind : producer.kind, + kind : producer.kind, rtpParameters, - type : producer.type, - consumableRtpEncodings : producer.consumableRtpParameters.encodings, + type : producer.type, + consumableRtpEncodings: producer.consumableRtpParameters.encodings, paused, preferredLayers }; @@ -529,12 +529,12 @@ export default class Transport extends EnhancedEventEmitter { internal, data, - channel : this._channel, + channel : this._channel, appData, - paused : status.paused, - producerPaused : status.producerPaused, - score : status.score, - preferredLayers : status.preferredLayers + paused : status.paused, + producerPaused : status.producerPaused, + score : status.score, + preferredLayers: status.preferredLayers }); this._consumers.set(consumer.id, consumer); @@ -579,7 +579,7 @@ export default class Transport extends EnhancedEventEmitter { internal, data, - channel : this._channel, + channel: this._channel, appData }); @@ -641,7 +641,7 @@ export default class Transport extends EnhancedEventEmitter { internal, data, - channel : this._channel, + channel: this._channel, appData }); diff --git a/src/WebRtcTransport.ts b/src/WebRtcTransport.ts index df70e6189c..582c558048 100644 --- a/src/WebRtcTransport.ts +++ b/src/WebRtcTransport.ts @@ -195,16 +195,16 @@ export default class WebRtcTransport extends Transport this._data = { - iceRole : data.iceRole, - iceParameters : data.iceParameters, - iceCandidates : data.iceCandidates, - iceState : data.iceState, - iceSelectedTuple : data.iceSelectedTuple, - dtlsParameters : data.dtlsParameters, - dtlsState : data.dtlsState, - dtlsRemoteCert : data.dtlsRemoteCert, - sctpParameters : data.sctpParameters, - sctpState : data.sctpState + iceRole : data.iceRole, + iceParameters : data.iceParameters, + iceCandidates : data.iceCandidates, + iceState : data.iceState, + iceSelectedTuple: data.iceSelectedTuple, + dtlsParameters : data.dtlsParameters, + dtlsState : data.dtlsState, + dtlsRemoteCert : data.dtlsRemoteCert, + sctpParameters : data.sctpParameters, + sctpState : data.sctpState }; this._handleWorkerNotifications(); diff --git a/src/Worker.ts b/src/Worker.ts index c702cfba00..28d0463443 100644 --- a/src/Worker.ts +++ b/src/Worker.ts @@ -158,19 +158,19 @@ export default class Worker extends EnhancedEventEmitter spawnArgs, // options { - env : + env: { - MEDIASOUP_VERSION : '__MEDIASOUP_VERSION__' + MEDIASOUP_VERSION: '__MEDIASOUP_VERSION__' }, - detached : false, + detached: false, - // fd 0 (stdin) : Just ignore it. - // fd 1 (stdout) : Pipe it for 3rd libraries that log their own stuff. - // fd 2 (stderr) : Same as stdout. - // fd 3 (channel) : Producer Channel fd. - // fd 4 (channel) : Consumer Channel fd. - stdio : [ 'ignore', 'pipe', 'pipe', 'pipe', 'pipe' ] + // fd 0 (stdin) : Just ignore it. + // fd 1 (stdout) : Pipe it for 3rd libraries that log their own stuff. + // fd 2 (stderr) : Same as stdout. + // fd 3 (channel): Producer Channel fd. + // fd 4 (channel): Consumer Channel fd. + stdio: [ 'ignore', 'pipe', 'pipe', 'pipe', 'pipe' ] }); this._workerLogger = new Logger(`worker[pid:${this._child.pid}]`); @@ -179,9 +179,9 @@ export default class Worker extends EnhancedEventEmitter this._channel = new Channel( { - producerSocket : this._child.stdio[3], - consumerSocket : this._child.stdio[4], - pid : this._pid + producerSocket: this._child.stdio[3], + consumerSocket: this._child.stdio[4], + pid : this._pid }); this._appData = appData; @@ -418,7 +418,7 @@ export default class Worker extends EnhancedEventEmitter { internal, data, - channel : this._channel, + channel: this._channel, appData }); diff --git a/src/ortc.ts b/src/ortc.ts index 6d3aee0ac9..c60b0e3e96 100644 --- a/src/ortc.ts +++ b/src/ortc.ts @@ -52,9 +52,9 @@ export function generateRouterRtpCapabilities( const supportedCodecs = supportedRtpCapabilities.codecs; const caps = { - codecs : [] as RtpCodecCapability[], - headerExtensions : supportedRtpCapabilities.headerExtensions, - fecMechanisms : supportedRtpCapabilities.fecMechanisms + codecs : [] as RtpCodecCapability[], + headerExtensions: supportedRtpCapabilities.headerExtensions, + fecMechanisms : supportedRtpCapabilities.fecMechanisms }; for (const mediaCodec of mediaCodecs) @@ -133,14 +133,14 @@ export function generateRouterRtpCapabilities( const rtxCodec = { - kind : codec.kind, - mimeType : `${codec.kind}/rtx`, - preferredPayloadType : pt, - clockRate : codec.clockRate, - rtcpFeedback : [] as RtcpFeedback[], - parameters : + kind : codec.kind, + mimeType : `${codec.kind}/rtx`, + preferredPayloadType: pt, + clockRate : codec.clockRate, + rtcpFeedback : [] as RtcpFeedback[], + parameters : { - apt : codec.preferredPayloadType + apt: codec.preferredPayloadType } }; @@ -165,8 +165,8 @@ export function getProducerRtpParametersMapping( { const rtpMapping: RtpMapping = { - codecs : [], - encodings : [] + codecs : [], + encodings: [] }; // Match parameters media codecs to capabilities media codecs. @@ -235,8 +235,8 @@ export function getProducerRtpParametersMapping( { rtpMapping.codecs.push( { - payloadType : codec.payloadType, - mappedPayloadType : capCodec.preferredPayloadType + payloadType : codec.payloadType, + mappedPayloadType: capCodec.preferredPayloadType }); } @@ -275,10 +275,10 @@ export function getConsumableRtpParameters( { const consumableParams: RtpParameters = { - codecs : [], - headerExtensions : [], - encodings : [], - rtcp : {} + codecs : [], + headerExtensions: [], + encodings : [], + rtcp : {} }; for (const codec of params.codecs || []) @@ -297,12 +297,12 @@ export function getConsumableRtpParameters( const consumableCodec = { - mimeType : matchedCapCodec.mimeType, - clockRate : matchedCapCodec.clockRate, - payloadType : matchedCapCodec.preferredPayloadType, - channels : matchedCapCodec.channels, - rtcpFeedback : matchedCapCodec.rtcpFeedback, - parameters : codec.parameters // Keep the Producer parameters. + mimeType : matchedCapCodec.mimeType, + clockRate : matchedCapCodec.clockRate, + payloadType : matchedCapCodec.preferredPayloadType, + channels : matchedCapCodec.channels, + rtcpFeedback: matchedCapCodec.rtcpFeedback, + parameters : codec.parameters // Keep the Producer parameters. }; if (!consumableCodec.channels) @@ -320,12 +320,12 @@ export function getConsumableRtpParameters( { const consumableRtxCodec = { - mimeType : consumableCapRtxCodec.mimeType, - clockRate : consumableCapRtxCodec.clockRate, - payloadType : consumableCapRtxCodec.preferredPayloadType, - channels : consumableCapRtxCodec.channels, - rtcpFeedback : consumableCapRtxCodec.rtcpFeedback, - parameters : consumableCapRtxCodec.parameters + mimeType : consumableCapRtxCodec.mimeType, + clockRate : consumableCapRtxCodec.clockRate, + payloadType : consumableCapRtxCodec.preferredPayloadType, + channels : consumableCapRtxCodec.channels, + rtcpFeedback: consumableCapRtxCodec.rtcpFeedback, + parameters : consumableCapRtxCodec.parameters }; if (!consumableRtxCodec.channels) @@ -349,8 +349,8 @@ export function getConsumableRtpParameters( const consumableExt = { - uri : capExt.uri, - id : capExt.preferredId + uri: capExt.uri, + id : capExt.preferredId }; consumableParams.headerExtensions.push(consumableExt); @@ -377,9 +377,9 @@ export function getConsumableRtpParameters( consumableParams.rtcp = { - cname : params.rtcp.cname, - reducedSize : true, - mux : true + cname : params.rtcp.cname, + reducedSize: true, + mux : true }; return consumableParams; @@ -437,10 +437,10 @@ export function getConsumerRtpParameters( { const consumerParams: RtpParameters = { - codecs : [], - headerExtensions : [], - encodings : [], - rtcp : consumableParams.rtcp + codecs : [], + headerExtensions: [], + encodings : [], + rtcp : consumableParams.rtcp }; for (const capCodec of caps.codecs || []) @@ -523,7 +523,7 @@ export function getConsumerRtpParameters( const consumerEncoding: RtpEncodingParameters = { - ssrc : utils.generateRandomNumber() + ssrc: utils.generateRandomNumber() }; if (rtxSupported) @@ -570,10 +570,10 @@ export function getPipeConsumerRtpParameters( { const consumerParams: RtpParameters = { - codecs : [], - headerExtensions : [], - encodings : [], - rtcp : consumableParams.rtcp + codecs : [], + headerExtensions: [], + encodings : [], + rtcp : consumableParams.rtcp }; const consumableCodecs = diff --git a/src/scalabilityModes.ts b/src/scalabilityModes.ts index 3af81d0e6a..f40ab1430e 100644 --- a/src/scalabilityModes.ts +++ b/src/scalabilityModes.ts @@ -15,17 +15,17 @@ export function parse(scalabilityMode: string): ScalabilityMode if (match) { return { - spatialLayers : Number(match[1]), - temporalLayers : Number(match[2]), - ksvc : Boolean(match[3]) + spatialLayers : Number(match[1]), + temporalLayers: Number(match[2]), + ksvc : Boolean(match[3]) }; } else { return { - spatialLayers : 1, - temporalLayers : 1, - ksvc : false + spatialLayers : 1, + temporalLayers: 1, + ksvc : false }; } } diff --git a/src/supportedRtpCapabilities.ts b/src/supportedRtpCapabilities.ts index b2d311b5fe..939b77d1f8 100644 --- a/src/supportedRtpCapabilities.ts +++ b/src/supportedRtpCapabilities.ts @@ -2,155 +2,155 @@ import { RtpCapabilities } from './RtpParameters'; const supportedRtpCapabilities: RtpCapabilities = { - codecs : + codecs: [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/opus', + clockRate : 48000, + channels : 2, + rtcpFeedback: [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/PCMU', - preferredPayloadType : 0, - clockRate : 8000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/PCMU', + preferredPayloadType: 0, + clockRate : 8000, + rtcpFeedback : [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/PCMA', - preferredPayloadType : 8, - clockRate : 8000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/PCMA', + preferredPayloadType: 8, + clockRate : 8000, + rtcpFeedback : [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/ISAC', - clockRate : 32000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/ISAC', + clockRate : 32000, + rtcpFeedback: [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/ISAC', - clockRate : 16000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/ISAC', + clockRate : 16000, + rtcpFeedback: [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/G722', - preferredPayloadType : 9, - clockRate : 8000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/G722', + preferredPayloadType: 9, + clockRate : 8000, + rtcpFeedback : [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/iLBC', - clockRate : 8000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/iLBC', + clockRate : 8000, + rtcpFeedback: [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/SILK', - clockRate : 24000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/SILK', + clockRate : 24000, + rtcpFeedback: [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/SILK', - clockRate : 16000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/SILK', + clockRate : 16000, + rtcpFeedback: [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/SILK', - clockRate : 12000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/SILK', + clockRate : 12000, + rtcpFeedback: [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/SILK', - clockRate : 8000, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/SILK', + clockRate : 8000, + rtcpFeedback: [ { type: 'transport-cc' } ] }, { - kind : 'audio', - mimeType : 'audio/CN', - preferredPayloadType : 13, - clockRate : 32000 + kind : 'audio', + mimeType : 'audio/CN', + preferredPayloadType: 13, + clockRate : 32000 }, { - kind : 'audio', - mimeType : 'audio/CN', - preferredPayloadType : 13, - clockRate : 16000 + kind : 'audio', + mimeType : 'audio/CN', + preferredPayloadType: 13, + clockRate : 16000 }, { - kind : 'audio', - mimeType : 'audio/CN', - preferredPayloadType : 13, - clockRate : 8000 + kind : 'audio', + mimeType : 'audio/CN', + preferredPayloadType: 13, + clockRate : 8000 }, { - kind : 'audio', - mimeType : 'audio/telephone-event', - clockRate : 48000 + kind : 'audio', + mimeType : 'audio/telephone-event', + clockRate: 48000 }, { - kind : 'audio', - mimeType : 'audio/telephone-event', - clockRate : 32000 + kind : 'audio', + mimeType : 'audio/telephone-event', + clockRate: 32000 }, { - kind : 'audio', - mimeType : 'audio/telephone-event', - clockRate : 16000 + kind : 'audio', + mimeType : 'audio/telephone-event', + clockRate: 16000 }, { - kind : 'audio', - mimeType : 'audio/telephone-event', - clockRate : 8000 + kind : 'audio', + mimeType : 'audio/telephone-event', + clockRate: 8000 }, { - kind : 'video', - mimeType : 'video/VP8', - clockRate : 90000, - rtcpFeedback : + kind : 'video', + mimeType : 'video/VP8', + clockRate : 90000, + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -160,10 +160,10 @@ const supportedRtpCapabilities: RtpCapabilities = ] }, { - kind : 'video', - mimeType : 'video/VP9', - clockRate : 90000, - rtcpFeedback : + kind : 'video', + mimeType : 'video/VP9', + clockRate : 90000, + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -173,15 +173,15 @@ const supportedRtpCapabilities: RtpCapabilities = ] }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - parameters : + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + parameters: { - 'packetization-mode' : 1, - 'level-asymmetry-allowed' : 1 + 'packetization-mode' : 1, + 'level-asymmetry-allowed': 1 }, - rtcpFeedback : + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -191,15 +191,15 @@ const supportedRtpCapabilities: RtpCapabilities = ] }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - parameters : + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + parameters: { - 'packetization-mode' : 0, - 'level-asymmetry-allowed' : 1 + 'packetization-mode' : 0, + 'level-asymmetry-allowed': 1 }, - rtcpFeedback : + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -209,15 +209,15 @@ const supportedRtpCapabilities: RtpCapabilities = ] }, { - kind : 'video', - mimeType : 'video/H265', - clockRate : 90000, - parameters : + kind : 'video', + mimeType : 'video/H265', + clockRate : 90000, + parameters: { - 'packetization-mode' : 1, - 'level-asymmetry-allowed' : 1 + 'packetization-mode' : 1, + 'level-asymmetry-allowed': 1 }, - rtcpFeedback : + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -227,15 +227,15 @@ const supportedRtpCapabilities: RtpCapabilities = ] }, { - kind : 'video', - mimeType : 'video/H265', - clockRate : 90000, - parameters : + kind : 'video', + mimeType : 'video/H265', + clockRate : 90000, + parameters: { - 'packetization-mode' : 0, - 'level-asymmetry-allowed' : 1 + 'packetization-mode' : 0, + 'level-asymmetry-allowed': 1 }, - rtcpFeedback : + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -245,103 +245,103 @@ const supportedRtpCapabilities: RtpCapabilities = ] } ], - headerExtensions : + headerExtensions: [ { - kind : 'audio', - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - preferredId : 1, - preferredEncrypt : false, - direction : 'recvonly' + kind : 'audio', + uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', + preferredId : 1, + preferredEncrypt: false, + direction : 'recvonly' }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - preferredId : 1, - preferredEncrypt : false, - direction : 'recvonly' + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', + preferredId : 1, + preferredEncrypt: false, + direction : 'recvonly' }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id', - preferredId : 2, - preferredEncrypt : false, - direction : 'recvonly' + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id', + preferredId : 2, + preferredEncrypt: false, + direction : 'recvonly' }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id', - preferredId : 3, - preferredEncrypt : false, - direction : 'recvonly' + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id', + preferredId : 3, + preferredEncrypt: false, + direction : 'recvonly' }, { - kind : 'audio', - uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', - preferredId : 4, - preferredEncrypt : false, - direction : 'sendrecv' + kind : 'audio', + uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', + preferredId : 4, + preferredEncrypt: false, + direction : 'sendrecv' }, { - kind : 'video', - uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', - preferredId : 4, - preferredEncrypt : false, - direction : 'sendrecv' + kind : 'video', + uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', + preferredId : 4, + preferredEncrypt: false, + direction : 'sendrecv' }, // NOTE: For audio we just enable transport-wide-cc-01 when receiving media. { - kind : 'audio', - uri : 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01', - preferredId : 5, - preferredEncrypt : false, - direction : 'recvonly' + kind : 'audio', + uri : 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01', + preferredId : 5, + preferredEncrypt: false, + direction : 'recvonly' }, { - kind : 'video', - uri : 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01', - preferredId : 5, - preferredEncrypt : false, - direction : 'sendrecv' + kind : 'video', + uri : 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01', + preferredId : 5, + preferredEncrypt: false, + direction : 'sendrecv' }, // NOTE: Remove this once framemarking draft becomes RFC. { - kind : 'video', - uri : 'http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07', - preferredId : 6, - preferredEncrypt : false, - direction : 'sendrecv' + kind : 'video', + uri : 'http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07', + preferredId : 6, + preferredEncrypt: false, + direction : 'sendrecv' }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:framemarking', - preferredId : 7, - preferredEncrypt : false, - direction : 'sendrecv' + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:framemarking', + preferredId : 7, + preferredEncrypt: false, + direction : 'sendrecv' }, { - kind : 'audio', - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - preferredId : 10, - preferredEncrypt : false, - direction : 'sendrecv' + kind : 'audio', + uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + preferredId : 10, + preferredEncrypt: false, + direction : 'sendrecv' }, { - kind : 'video', - uri : 'urn:3gpp:video-orientation', - preferredId : 11, - preferredEncrypt : false, - direction : 'sendrecv' + kind : 'video', + uri : 'urn:3gpp:video-orientation', + preferredId : 11, + preferredEncrypt: false, + direction : 'sendrecv' }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:toffset', - preferredId : 12, - preferredEncrypt : false, - direction : 'sendrecv' + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:toffset', + preferredId : 12, + preferredEncrypt: false, + direction : 'sendrecv' } ], - fecMechanisms : [] + fecMechanisms: [] }; export default supportedRtpCapabilities; diff --git a/src/utils.ts b/src/utils.ts index 7be7ab97fb..ec7e090197 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -2,9 +2,9 @@ import * as randomNumber from 'random-number'; const randomNumberGenerator = randomNumber.generator( { - min : 100000000, - max : 999999999, - integer : true + min : 100000000, + max : 999999999, + integer: true }); /** diff --git a/test/test-AudioLevelObserver.js b/test/test-AudioLevelObserver.js index 6859fd2e62..0ad5ecdacb 100644 --- a/test/test-AudioLevelObserver.js +++ b/test/test-AudioLevelObserver.js @@ -11,14 +11,14 @@ let audioLevelObserver; const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2, - parameters : + kind : 'audio', + mimeType : 'audio/opus', + clockRate : 48000, + channels : 2, + parameters: { - useinbandfec : 1, - foo : 'bar' + useinbandfec: 1, + foo : 'bar' } } ]; @@ -50,7 +50,7 @@ test('router.createAudioLevelObserver() succeeds', async () => .resolves .toMatchObject( { - rtpObserverIds : [ audioLevelObserver.id ] + rtpObserverIds: [ audioLevelObserver.id ] }); }, 2000); diff --git a/test/test-Consumer.js b/test/test-Consumer.js index d476842068..6eb908a938 100644 --- a/test/test-Consumer.js +++ b/test/test-Consumer.js @@ -17,94 +17,94 @@ let videoConsumer; const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2, - parameters : + kind : 'audio', + mimeType : 'audio/opus', + clockRate : 48000, + channels : 2, + parameters: { - foo : 'bar' + foo: 'bar' } }, { - kind : 'video', - mimeType : 'video/VP8', - clockRate : 90000 + kind : 'video', + mimeType : 'video/VP8', + clockRate: 90000 }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - parameters : + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + parameters: { - 'level-asymmetry-allowed' : 1, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032', - foo : 'bar' + 'level-asymmetry-allowed': 1, + 'packetization-mode' : 1, + 'profile-level-id' : '4d0032', + foo : 'bar' } } ]; const audioProducerParameters = { - kind : 'audio', - rtpParameters : + kind : 'audio', + rtpParameters: { - mid : 'AUDIO', - codecs : + mid : 'AUDIO', + codecs: [ { - mimeType : 'audio/opus', - payloadType : 111, - clockRate : 48000, - channels : 2, - parameters : + mimeType : 'audio/opus', + payloadType: 111, + clockRate : 48000, + channels : 2, + parameters : { - useinbandfec : 1, - usedtx : 1, - foo : 222.222, - bar : '333' + useinbandfec: 1, + usedtx : 1, + foo : 222.222, + bar : '333' } } ], - headerExtensions : + headerExtensions: [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 10 + uri: 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 10 }, { - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - id : 12 + uri: 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + id : 12 } ], - encodings : [ { ssrc: 11111111 } ], - rtcp : + encodings: [ { ssrc: 11111111 } ], + rtcp : { - cname : 'FOOBAR' + cname: 'FOOBAR' } }, - appData : { foo: 1, bar: '2' } + appData: { foo: 1, bar: '2' } }; const videoProducerParameters = { - kind : 'video', - rtpParameters : + kind : 'video', + rtpParameters: { - mid : 'VIDEO', - codecs : + mid : 'VIDEO', + codecs: [ { - mimeType : 'video/h264', - payloadType : 112, - clockRate : 90000, - parameters : + mimeType : 'video/h264', + payloadType: 112, + clockRate : 90000, + parameters : { - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' }, - rtcpFeedback : + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -112,132 +112,132 @@ const videoProducerParameters = ] }, { - mimeType : 'video/rtx', - payloadType : 113, - clockRate : 90000, - parameters : { apt: 112 } + mimeType : 'video/rtx', + payloadType: 113, + clockRate : 90000, + parameters : { apt: 112 } } ], - headerExtensions : + headerExtensions: [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 10 + uri: 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 10 }, { - uri : 'urn:3gpp:video-orientation', - id : 13 + uri: 'urn:3gpp:video-orientation', + id : 13 } ], - encodings : + encodings: [ { ssrc: 22222222, rtx: { ssrc: 22222223 } }, { ssrc: 22222224, rtx: { ssrc: 22222225 } }, { ssrc: 22222226, rtx: { ssrc: 22222227 } }, { ssrc: 22222228, rtx: { ssrc: 22222229 } } ], - rtcp : + rtcp: { - cname : 'FOOBAR' + cname: 'FOOBAR' } }, - appData : { foo: 1, bar: '2' } + appData: { foo: 1, bar: '2' } }; const consumerDeviceCapabilities = { - codecs : + codecs: [ { - mimeType : 'audio/opus', - kind : 'audio', - clockRate : 48000, - preferredPayloadType : 100, - channels : 2 + mimeType : 'audio/opus', + kind : 'audio', + clockRate : 48000, + preferredPayloadType: 100, + channels : 2 }, { - mimeType : 'video/H264', - kind : 'video', - clockRate : 90000, - preferredPayloadType : 101, - rtcpFeedback : + mimeType : 'video/H264', + kind : 'video', + clockRate : 90000, + preferredPayloadType: 101, + rtcpFeedback : [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, { type: 'ccm', parameter: 'fir' }, { type: 'goog-remb' } ], - parameters : + parameters: { - 'level-asymmetry-allowed' : 1, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'level-asymmetry-allowed': 1, + 'packetization-mode' : 1, + 'profile-level-id' : '4d0032' } }, { - mimeType : 'video/rtx', - kind : 'video', - clockRate : 90000, - preferredPayloadType : 102, - rtcpFeedback : [], - parameters : + mimeType : 'video/rtx', + kind : 'video', + clockRate : 90000, + preferredPayloadType: 102, + rtcpFeedback : [], + parameters : { - apt : 101 + apt: 101 } } ], - headerExtensions : + headerExtensions: [ { - kind : 'audio', - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - preferredId : 1, - preferredEncrypt : false + kind : 'audio', + uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', + preferredId : 1, + preferredEncrypt: false }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - preferredId : 1, - preferredEncrypt : false + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', + preferredId : 1, + preferredEncrypt: false }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id', - preferredId : 2, - preferredEncrypt : false + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id', + preferredId : 2, + preferredEncrypt: false }, { - kind : 'audio', - uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', // eslint-disable-line max-len - preferredId : 4, - preferredEncrypt : false + kind : 'audio', + uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', // eslint-disable-line max-len + preferredId : 4, + preferredEncrypt: false }, { - kind : 'video', - uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', // eslint-disable-line max-len - preferredId : 4, - preferredEncrypt : false + kind : 'video', + uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', // eslint-disable-line max-len + preferredId : 4, + preferredEncrypt: false }, { - kind : 'audio', - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - preferredId : 10, - preferredEncrypt : false + kind : 'audio', + uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + preferredId : 10, + preferredEncrypt: false }, { - kind : 'video', - uri : 'urn:3gpp:video-orientation', - preferredId : 11, - preferredEncrypt : false + kind : 'video', + uri : 'urn:3gpp:video-orientation', + preferredId : 11, + preferredEncrypt: false }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:toffset', - preferredId : 12, - preferredEncrypt : false + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:toffset', + preferredId : 12, + preferredEncrypt: false } ], - fecMechanisms : [] + fecMechanisms: [] }; beforeAll(async () => @@ -246,11 +246,11 @@ beforeAll(async () => router = await worker.createRouter({ mediaCodecs }); transport1 = await router.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ] + listenIps: [ '127.0.0.1' ] }); transport2 = await router.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ] + listenIps: [ '127.0.0.1' ] }); audioProducer = await transport1.produce(audioProducerParameters); videoProducer = await transport1.produce(videoProducerParameters); @@ -269,16 +269,16 @@ test('transport.consume() succeeds', async () => expect(router.canConsume( { - producerId : audioProducer.id, - rtpCapabilities : consumerDeviceCapabilities + producerId : audioProducer.id, + rtpCapabilities: consumerDeviceCapabilities })) .toBe(true); audioConsumer = await transport2.consume( { - producerId : audioProducer.id, - rtpCapabilities : consumerDeviceCapabilities, - appData : { baz: 'LOL' } + producerId : audioProducer.id, + rtpCapabilities: consumerDeviceCapabilities, + appData : { baz: 'LOL' } }); expect(onObserverNewConsumer1).toHaveBeenCalledTimes(1); @@ -292,18 +292,18 @@ test('transport.consume() succeeds', async () => expect(audioConsumer.rtpParameters.codecs.length).toBe(1); expect(audioConsumer.rtpParameters.codecs[0]).toEqual( { - mimeType : 'audio/opus', - clockRate : 48000, - payloadType : 100, - channels : 2, - parameters : + mimeType : 'audio/opus', + clockRate : 48000, + payloadType: 100, + channels : 2, + parameters : { - useinbandfec : 1, - usedtx : 1, - foo : 222.222, - bar : '333' + useinbandfec: 1, + usedtx : 1, + foo : 222.222, + bar : '333' }, - rtcpFeedback : [] + rtcpFeedback: [] }); expect(audioConsumer.type).toBe('simple'); expect(audioConsumer.paused).toBe(false); @@ -318,17 +318,17 @@ test('transport.consume() succeeds', async () => .resolves .toMatchObject( { - mapProducerIdConsumerIds : { [audioProducer.id]: [ audioConsumer.id ] }, - mapConsumerIdProducerId : { [audioConsumer.id]: audioProducer.id } + mapProducerIdConsumerIds: { [audioProducer.id]: [ audioConsumer.id ] }, + mapConsumerIdProducerId : { [audioConsumer.id]: audioProducer.id } }); await expect(transport2.dump()) .resolves .toMatchObject( { - id : transport2.id, - producerIds : [], - consumerIds : [ audioConsumer.id ] + id : transport2.id, + producerIds: [], + consumerIds: [ audioConsumer.id ] }); const onObserverNewConsumer2 = jest.fn(); @@ -337,18 +337,18 @@ test('transport.consume() succeeds', async () => expect(router.canConsume( { - producerId : videoProducer.id, - rtpCapabilities : consumerDeviceCapabilities + producerId : videoProducer.id, + rtpCapabilities: consumerDeviceCapabilities })) .toBe(true); videoConsumer = await transport2.consume( { - producerId : videoProducer.id, - rtpCapabilities : consumerDeviceCapabilities, - paused : true, - preferredLayers : { spatialLayer: 12 }, - appData : { baz: 'LOL' } + producerId : videoProducer.id, + rtpCapabilities: consumerDeviceCapabilities, + paused : true, + preferredLayers: { spatialLayer: 12 }, + appData : { baz: 'LOL' } }); expect(onObserverNewConsumer2).toHaveBeenCalledTimes(1); @@ -362,15 +362,15 @@ test('transport.consume() succeeds', async () => expect(videoConsumer.rtpParameters.codecs.length).toBe(2); expect(videoConsumer.rtpParameters.codecs[0]).toEqual( { - mimeType : 'video/H264', - clockRate : 90000, - payloadType : 103, - parameters : + mimeType : 'video/H264', + clockRate : 90000, + payloadType: 103, + parameters : { - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' }, - rtcpFeedback : + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -380,11 +380,11 @@ test('transport.consume() succeeds', async () => }); expect(videoConsumer.rtpParameters.codecs[1]).toEqual( { - mimeType : 'video/rtx', - clockRate : 90000, - payloadType : 104, - parameters : { apt: 103 }, - rtcpFeedback : [] + mimeType : 'video/rtx', + clockRate : 90000, + payloadType : 104, + parameters : { apt: 103 }, + rtcpFeedback: [] }); expect(videoConsumer.type).toBe('simulcast'); expect(videoConsumer.paused).toBe(true); @@ -399,15 +399,15 @@ test('transport.consume() succeeds', async () => .resolves .toMatchObject( { - mapProducerIdConsumerIds : + mapProducerIdConsumerIds: { - [audioProducer.id] : [ audioConsumer.id ], - [videoProducer.id] : [ videoConsumer.id ] + [audioProducer.id]: [ audioConsumer.id ], + [videoProducer.id]: [ videoConsumer.id ] }, - mapConsumerIdProducerId : + mapConsumerIdProducerId: { - [audioConsumer.id] : audioProducer.id, - [videoConsumer.id] : videoProducer.id + [audioConsumer.id]: audioProducer.id, + [videoConsumer.id]: videoProducer.id } }); @@ -415,9 +415,9 @@ test('transport.consume() succeeds', async () => .resolves .toMatchObject( { - id : transport2.id, - producerIds : [], - consumerIds : expect.arrayContaining([ audioConsumer.id, videoConsumer.id ]) + id : transport2.id, + producerIds: [], + consumerIds: expect.arrayContaining([ audioConsumer.id, videoConsumer.id ]) }); }, 2000); @@ -427,17 +427,17 @@ test('transport.consume() with incompatible rtpCapabilities rejects with Unsuppo invalidDeviceCapabilities = { - codecs : + codecs: [ { - kind : 'audio', - mimeType : 'audio/ISAC', - clockRate : 32000, - preferredPayloadType : 100, - channels : 1 + kind : 'audio', + mimeType : 'audio/ISAC', + clockRate : 32000, + preferredPayloadType: 100, + channels : 1 } ], - headerExtensions : [] + headerExtensions: [] }; expect(router.canConsume( @@ -446,16 +446,16 @@ test('transport.consume() with incompatible rtpCapabilities rejects with Unsuppo await expect(transport2.consume( { - producerId : audioProducer.id, - rtpCapabilities : invalidDeviceCapabilities + producerId : audioProducer.id, + rtpCapabilities: invalidDeviceCapabilities })) .rejects .toThrow(UnsupportedError); invalidDeviceCapabilities = { - codecs : [], - headerExtensions : [] + codecs : [], + headerExtensions: [] }; expect(router.canConsume( @@ -464,8 +464,8 @@ test('transport.consume() with incompatible rtpCapabilities rejects with Unsuppo await expect(transport2.consume( { - producerId : audioProducer.id, - rtpCapabilities : invalidDeviceCapabilities + producerId : audioProducer.id, + rtpCapabilities: invalidDeviceCapabilities })) .rejects .toThrow(UnsupportedError); @@ -489,10 +489,10 @@ test('consumer.dump() succeeds', async () => expect(data.rtpParameters.codecs[0].parameters) .toEqual( { - useinbandfec : 1, - usedtx : 1, - foo : 222.222, - bar : '333' + useinbandfec: 1, + usedtx : 1, + foo : 222.222, + bar : '333' }); expect(data.rtpParameters.codecs[0].rtcpFeedback).toEqual([]); expect(data.rtpParameters.headerExtensions).toBeType('array'); @@ -500,16 +500,16 @@ test('consumer.dump() succeeds', async () => expect(data.rtpParameters.headerExtensions).toEqual( [ { - uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', - id : 4, - parameters : {}, - encrypt : false + uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', + id : 4, + parameters: {}, + encrypt : false }, { - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - id : 10, - parameters : {}, - encrypt : false + uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + id : 10, + parameters: {}, + encrypt : false } ]); expect(data.rtpParameters.encodings).toBeType('array'); @@ -517,8 +517,8 @@ test('consumer.dump() succeeds', async () => expect(data.rtpParameters.encodings).toEqual( [ { - codecPayloadType : 100, - ssrc : audioConsumer.rtpParameters.encodings[0].ssrc + codecPayloadType: 100, + ssrc : audioConsumer.rtpParameters.encodings[0].ssrc } ]); expect(data.type).toBe('simple'); @@ -547,8 +547,8 @@ test('consumer.dump() succeeds', async () => expect(data.rtpParameters.codecs[0].parameters) .toEqual( { - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' }); expect(data.rtpParameters.codecs[0].rtcpFeedback).toEqual( [ @@ -562,22 +562,22 @@ test('consumer.dump() succeeds', async () => expect(data.rtpParameters.headerExtensions).toEqual( [ { - uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', - id : 4, - parameters : {}, - encrypt : false + uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', + id : 4, + parameters: {}, + encrypt : false }, { - uri : 'urn:3gpp:video-orientation', - id : 11, - parameters : {}, - encrypt : false + uri : 'urn:3gpp:video-orientation', + id : 11, + parameters: {}, + encrypt : false }, { - uri : 'urn:ietf:params:rtp-hdrext:toffset', - id : 12, - parameters : {}, - encrypt : false + uri : 'urn:ietf:params:rtp-hdrext:toffset', + id : 12, + parameters: {}, + encrypt : false } ]); expect(data.rtpParameters.encodings).toBeType('array'); @@ -585,16 +585,16 @@ test('consumer.dump() succeeds', async () => expect(data.rtpParameters.encodings).toEqual( [ { - codecPayloadType : 103, - ssrc : videoConsumer.rtpParameters.encodings[0].ssrc, - rtx : + codecPayloadType: 103, + ssrc : videoConsumer.rtpParameters.encodings[0].ssrc, + rtx : { - ssrc : videoConsumer.rtpParameters.encodings[0].rtx.ssrc + ssrc: videoConsumer.rtpParameters.encodings[0].rtx.ssrc }, - scalabilityMode : 'S4T1', - spatialLayers : 4, - temporalLayers : 1, - ksvc : false + scalabilityMode: 'S4T1', + spatialLayers : 4, + temporalLayers : 1, + ksvc : false } ]); expect(data.consumableRtpEncodings).toBeType('array'); @@ -620,10 +620,10 @@ test('consumer.getStats() succeeds', async () => [ expect.objectContaining( { - type : 'outbound-rtp', - kind : 'audio', - mimeType : 'audio/opus', - ssrc : audioConsumer.rtpParameters.encodings[0].ssrc + type : 'outbound-rtp', + kind : 'audio', + mimeType: 'audio/opus', + ssrc : audioConsumer.rtpParameters.encodings[0].ssrc }) ]); @@ -633,10 +633,10 @@ test('consumer.getStats() succeeds', async () => [ expect.objectContaining( { - type : 'outbound-rtp', - kind : 'video', - mimeType : 'video/H264', - ssrc : videoConsumer.rtpParameters.encodings[0].ssrc + type : 'outbound-rtp', + kind : 'video', + mimeType: 'video/H264', + ssrc : videoConsumer.rtpParameters.encodings[0].ssrc }) ]); }, 2000); @@ -803,17 +803,17 @@ test('consumer.close() succeeds', async () => .resolves .toMatchObject( { - mapProducerIdConsumerIds : { [audioProducer.id]: [] }, - mapConsumerIdProducerId : {} + mapProducerIdConsumerIds: { [audioProducer.id]: [] }, + mapConsumerIdProducerId : {} }); await expect(transport2.dump()) .resolves .toMatchObject( { - id : transport2.id, - producerIds : [], - consumerIds : [ videoConsumer.id ] + id : transport2.id, + producerIds: [], + consumerIds: [ videoConsumer.id ] }); }, 2000); @@ -852,8 +852,8 @@ test('Consumer emits "producerclose" if Producer is closed', async () => { audioConsumer = await transport2.consume( { - producerId : audioProducer.id, - rtpCapabilities : consumerDeviceCapabilities + producerId : audioProducer.id, + rtpCapabilities: consumerDeviceCapabilities }); const onObserverClose = jest.fn(); @@ -874,8 +874,8 @@ test('Consumer emits "transportclose" if Transport is closed', async () => { videoConsumer = await transport2.consume( { - producerId : videoProducer.id, - rtpCapabilities : consumerDeviceCapabilities + producerId : videoProducer.id, + rtpCapabilities: consumerDeviceCapabilities }); const onObserverClose = jest.fn(); @@ -895,7 +895,7 @@ test('Consumer emits "transportclose" if Transport is closed', async () => .resolves .toMatchObject( { - mapProducerIdConsumerIds : {}, - mapConsumerIdProducerId : {} + mapProducerIdConsumerIds: {}, + mapConsumerIdProducerId : {} }); }, 2000); diff --git a/test/test-DataConsumer.js b/test/test-DataConsumer.js index 7ad6db22be..05ad990b7e 100644 --- a/test/test-DataConsumer.js +++ b/test/test-DataConsumer.js @@ -13,14 +13,14 @@ let dataConsumer; const dataProducerParameters = { - sctpStreamParameters : + sctpStreamParameters: { - streamId : 12345, - ordered : false, - maxPacketLifeTime : 5000 + streamId : 12345, + ordered : false, + maxPacketLifeTime: 5000 }, - label : 'foo', - protocol : 'bar' + label : 'foo', + protocol: 'bar' }; beforeAll(async () => @@ -29,13 +29,13 @@ beforeAll(async () => router = await worker.createRouter(); transport1 = await router.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ], - enableSctp : true + listenIps : [ '127.0.0.1' ], + enableSctp: true }); transport2 = await router.createPlainRtpTransport( { - listenIp : '127.0.0.1', - enableSctp : true + listenIp : '127.0.0.1', + enableSctp: true }); dataProducer = await transport1.produceData(dataProducerParameters); }); @@ -50,8 +50,8 @@ test('transport.consumeData() succeeds', async () => dataConsumer = await transport2.consumeData( { - dataProducerId : dataProducer.id, - appData : { baz: 'LOL' } + dataProducerId: dataProducer.id, + appData : { baz: 'LOL' } }); expect(onObserverNewDataConsumer).toHaveBeenCalledTimes(1); @@ -72,17 +72,17 @@ test('transport.consumeData() succeeds', async () => .resolves .toMatchObject( { - mapDataProducerIdDataConsumerIds : { [dataProducer.id]: [ dataConsumer.id ] }, - mapDataConsumerIdDataProducerId : { [dataConsumer.id]: dataProducer.id } + mapDataProducerIdDataConsumerIds: { [dataProducer.id]: [ dataConsumer.id ] }, + mapDataConsumerIdDataProducerId : { [dataConsumer.id]: dataProducer.id } }); await expect(transport2.dump()) .resolves .toMatchObject( { - id : transport2.id, - dataProducerIds : [], - dataConsumerIds : [ dataConsumer.id ] + id : transport2.id, + dataProducerIds: [], + dataConsumerIds: [ dataConsumer.id ] }); }, 2000); @@ -108,11 +108,11 @@ test('dataConsumer.getStats() succeeds', async () => .toMatchObject( [ { - type : 'data-consumer', - label : dataConsumer.label, - protocol : dataConsumer.protocol, - messagesSent : 0, - bytesSent : 0 + type : 'data-consumer', + label : dataConsumer.label, + protocol : dataConsumer.protocol, + messagesSent: 0, + bytesSent : 0 } ]); }, 2000); @@ -131,17 +131,17 @@ test('dataConsumer.close() succeeds', async () => .resolves .toMatchObject( { - mapDataProducerIdDataConsumerIds : { [dataProducer.id]: [] }, - mapDataConsumerIdDataProducerId : {} + mapDataProducerIdDataConsumerIds: { [dataProducer.id]: [] }, + mapDataConsumerIdDataProducerId : {} }); await expect(transport2.dump()) .resolves .toMatchObject( { - id : transport2.id, - dataProducerIds : [], - dataConsumerIds : [] + id : transport2.id, + dataProducerIds: [], + dataConsumerIds: [] }); }, 2000); @@ -160,7 +160,7 @@ test('DataConsumer emits "dataproducerclose" if DataProducer is closed', async ( { dataConsumer = await transport2.consumeData( { - dataProducerId : dataProducer.id + dataProducerId: dataProducer.id }); const onObserverClose = jest.fn(); @@ -182,7 +182,7 @@ test('Consumer emits "transportclose" if Transport is closed', async () => dataProducer = await transport1.produceData(dataProducerParameters); dataConsumer = await transport2.consumeData( { - dataProducerId : dataProducer.id + dataProducerId: dataProducer.id }); const onObserverClose = jest.fn(); @@ -202,7 +202,7 @@ test('Consumer emits "transportclose" if Transport is closed', async () => .resolves .toMatchObject( { - mapDataProducerIdDataConsumerIds : {}, - mapDataConsumerIdDataProducerId : {} + mapDataProducerIdDataConsumerIds: {}, + mapDataConsumerIdDataProducerId : {} }); }, 2000); diff --git a/test/test-DataProducer.js b/test/test-DataProducer.js index 7ff86a808f..80545d052f 100644 --- a/test/test-DataProducer.js +++ b/test/test-DataProducer.js @@ -17,13 +17,13 @@ beforeAll(async () => router = await worker.createRouter(); transport1 = await router.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ], - enableSctp : true + listenIps : [ '127.0.0.1' ], + enableSctp: true }); transport2 = await router.createPlainRtpTransport( { - listenIp : '127.0.0.1', - enableSctp : true + listenIp : '127.0.0.1', + enableSctp: true }); }); @@ -37,13 +37,13 @@ test('transport1.produceData() succeeds', async () => dataProducer1 = await transport1.produceData( { - sctpStreamParameters : + sctpStreamParameters: { - streamId : 666 + streamId: 666 }, - label : 'foo', - protocol : 'bar', - appData : { foo: 1, bar: '2' } + label : 'foo', + protocol: 'bar', + appData : { foo: 1, bar: '2' } }); expect(onObserverNewDataProducer).toHaveBeenCalledTimes(1); @@ -63,17 +63,17 @@ test('transport1.produceData() succeeds', async () => .resolves .toMatchObject( { - mapDataProducerIdDataConsumerIds : { [dataProducer1.id]: [] }, - mapDataConsumerIdDataProducerId : {} + mapDataProducerIdDataConsumerIds: { [dataProducer1.id]: [] }, + mapDataConsumerIdDataProducerId : {} }); await expect(transport1.dump()) .resolves .toMatchObject( { - id : transport1.id, - dataProducerIds : [ dataProducer1.id ], - dataConsumerIds : [] + id : transport1.id, + dataProducerIds: [ dataProducer1.id ], + dataConsumerIds: [] }); }, 2000); @@ -85,14 +85,14 @@ test('transport2.produceData() succeeds', async () => dataProducer2 = await transport2.produceData( { - sctpStreamParameters : + sctpStreamParameters: { - streamId : 777, - maxRetransmits : 3 + streamId : 777, + maxRetransmits: 3 }, - label : 'foo', - protocol : 'bar', - appData : { foo: 1, bar: '2' } + label : 'foo', + protocol: 'bar', + appData : { foo: 1, bar: '2' } }); expect(onObserverNewDataProducer).toHaveBeenCalledTimes(1); @@ -112,17 +112,17 @@ test('transport2.produceData() succeeds', async () => .resolves .toMatchObject( { - mapDataProducerIdDataConsumerIds : { [dataProducer2.id]: [] }, - mapDataConsumerIdDataProducerId : {} + mapDataProducerIdDataConsumerIds: { [dataProducer2.id]: [] }, + mapDataConsumerIdDataProducerId : {} }); await expect(transport2.dump()) .resolves .toMatchObject( { - id : transport2.id, - dataProducerIds : [ dataProducer2.id ], - dataConsumerIds : [] + id : transport2.id, + dataProducerIds: [ dataProducer2.id ], + dataConsumerIds: [] }); }, 2000); @@ -135,7 +135,7 @@ test('transport1.produceData() with wrong arguments rejects with TypeError', asy // Missing or empty sctpStreamParameters.streamId. await expect(transport1.produceData( { - sctpStreamParameters : { foo: 'foo' } + sctpStreamParameters: { foo: 'foo' } })) .rejects .toThrow(TypeError); @@ -145,9 +145,9 @@ test('transport.produceData() with already used streamId rejects with Error', as { await expect(transport1.produceData( { - sctpStreamParameters : + sctpStreamParameters: { - streamId : 666 + streamId: 666 } })) .rejects @@ -158,11 +158,11 @@ test('transport.produceData() with ordered and maxPacketLifeTime rejects with Ty { await expect(transport1.produceData( { - sctpStreamParameters : + sctpStreamParameters: { - streamId : 999, - ordered : true, - maxPacketLifeTime : 4000 + streamId : 999, + ordered : true, + maxPacketLifeTime: 4000 } })) .rejects @@ -203,11 +203,11 @@ test('dataProducer.getStats() succeeds', async () => .toMatchObject( [ { - type : 'data-producer', - label : dataProducer1.label, - protocol : dataProducer1.protocol, - messagesReceived : 0, - bytesReceived : 0 + type : 'data-producer', + label : dataProducer1.label, + protocol : dataProducer1.protocol, + messagesReceived: 0, + bytesReceived : 0 } ]); @@ -216,11 +216,11 @@ test('dataProducer.getStats() succeeds', async () => .toMatchObject( [ { - type : 'data-producer', - label : dataProducer2.label, - protocol : dataProducer2.protocol, - messagesReceived : 0, - bytesReceived : 0 + type : 'data-producer', + label : dataProducer2.label, + protocol : dataProducer2.protocol, + messagesReceived: 0, + bytesReceived : 0 } ]); }, 2000); @@ -239,17 +239,17 @@ test('dataProducer.close() succeeds', async () => .resolves .toMatchObject( { - mapDataProducerIdDataConsumerIds : {}, - mapDataConsumerIdDataProducerId : {} + mapDataProducerIdDataConsumerIds: {}, + mapDataConsumerIdDataProducerId : {} }); await expect(transport1.dump()) .resolves .toMatchObject( { - id : transport1.id, - dataProducerIds : [], - dataConsumerIds : [] + id : transport1.id, + dataProducerIds: [], + dataConsumerIds: [] }); }, 2000); diff --git a/test/test-PipeTransport.js b/test/test-PipeTransport.js index fed58676c9..c8b5edae0b 100644 --- a/test/test-PipeTransport.js +++ b/test/test-PipeTransport.js @@ -18,72 +18,72 @@ let dataConsumer; const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2 + kind : 'audio', + mimeType : 'audio/opus', + clockRate: 48000, + channels : 2 }, { - kind : 'video', - mimeType : 'video/VP8', - clockRate : 90000 + kind : 'video', + mimeType : 'video/VP8', + clockRate: 90000 }, { - kind : 'video', - mimeType : 'video/VP8', - clockRate : 90000 + kind : 'video', + mimeType : 'video/VP8', + clockRate: 90000 } ]; const audioProducerParameters = { - kind : 'audio', - rtpParameters : + kind : 'audio', + rtpParameters: { - mid : 'AUDIO', - codecs : + mid : 'AUDIO', + codecs: [ { - mimeType : 'audio/opus', - payloadType : 111, - clockRate : 48000, - channels : 2, - parameters : + mimeType : 'audio/opus', + payloadType: 111, + clockRate : 48000, + channels : 2, + parameters : { - useinbandfec : 1, - foo : 'bar1' + useinbandfec: 1, + foo : 'bar1' } } ], - headerExtensions : + headerExtensions: [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 10 + uri: 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 10 } ], - encodings : [ { ssrc: 11111111 } ], - rtcp : + encodings: [ { ssrc: 11111111 } ], + rtcp : { - cname : 'FOOBAR' + cname: 'FOOBAR' } }, - appData : { foo: 'bar1' } + appData: { foo: 'bar1' } }; const videoProducerParameters = { - kind : 'video', - rtpParameters : + kind : 'video', + rtpParameters: { - mid : 'VIDEO', - codecs : + mid : 'VIDEO', + codecs: [ { - mimeType : 'video/VP8', - payloadType : 112, - clockRate : 90000, - rtcpFeedback : + mimeType : 'video/VP8', + payloadType : 112, + clockRate : 90000, + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -92,64 +92,64 @@ const videoProducerParameters = ] } ], - headerExtensions : + headerExtensions: [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 10 + uri: 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 10 }, { - uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', - id : 11 + uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', + id : 11 }, { - uri : 'urn:3gpp:video-orientation', - id : 13 + uri: 'urn:3gpp:video-orientation', + id : 13 } ], - encodings : + encodings: [ { ssrc: 22222222 }, { ssrc: 22222223 }, { ssrc: 22222224 } ], - rtcp : + rtcp: { - cname : 'FOOBAR' + cname: 'FOOBAR' } }, - appData : { foo: 'bar2' } + appData: { foo: 'bar2' } }; const dataProducerParameters = { - sctpStreamParameters : + sctpStreamParameters: { - streamId : 666, - ordered : false, - maxPacketLifeTime : 5000 + streamId : 666, + ordered : false, + maxPacketLifeTime: 5000 }, - label : 'foo', - protocol : 'bar' + label : 'foo', + protocol: 'bar' }; const consumerDeviceCapabilities = { - codecs : + codecs: [ { - mimeType : 'audio/opus', - kind : 'audio', - clockRate : 48000, - preferredPayloadType : 100, - channels : 2 + mimeType : 'audio/opus', + kind : 'audio', + clockRate : 48000, + preferredPayloadType: 100, + channels : 2 }, { - mimeType : 'video/VP8', - kind : 'video', - clockRate : 90000, - preferredPayloadType : 101, - rtcpFeedback : + mimeType : 'video/VP8', + kind : 'video', + clockRate : 90000, + preferredPayloadType: 101, + rtcpFeedback : [ { type: 'nack' }, { type: 'ccm', parameter: 'fir' }, @@ -158,42 +158,42 @@ const consumerDeviceCapabilities = ] }, { - mimeType : 'video/rtx', - kind : 'video', - clockRate : 90000, - preferredPayloadType : 102, - rtcpFeedback : [], - parameters : + mimeType : 'video/rtx', + kind : 'video', + clockRate : 90000, + preferredPayloadType: 102, + rtcpFeedback : [], + parameters : { - apt : 101 + apt: 101 } } ], - headerExtensions : + headerExtensions: [ { - kind : 'video', - uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', - preferredId : 4, - preferredEncrypt : false, - direction : 'sendrecv' + kind : 'video', + uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', + preferredId : 4, + preferredEncrypt: false, + direction : 'sendrecv' }, { - kind : 'video', - uri : 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01', - preferredId : 5, - preferredEncrypt : false + kind : 'video', + uri : 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01', + preferredId : 5, + preferredEncrypt: false }, { - kind : 'audio', - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - preferredId : 10, - preferredEncrypt : false + kind : 'audio', + uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + preferredId : 10, + preferredEncrypt: false } ], - sctpCapabilities : + sctpCapabilities: { - numSctpStreams : 2048 + numSctpStreams: 2048 } }; @@ -204,13 +204,13 @@ beforeAll(async () => router2 = await worker.createRouter({ mediaCodecs }); transport1 = await router1.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ], - enableSctp : true + listenIps : [ '127.0.0.1' ], + enableSctp: true }); transport2 = await router2.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ], - enableSctp : true + listenIps : [ '127.0.0.1' ], + enableSctp: true }); audioProducer = await transport1.produce(audioProducerParameters); videoProducer = await transport1.produce(videoProducerParameters); @@ -228,8 +228,8 @@ test('router.pipeToRouter() succeeds with audio', async () => const { pipeConsumer, pipeProducer } = await router1.pipeToRouter( { - producerId : audioProducer.id, - router : router2 + producerId: audioProducer.id, + router : router2 }); dump = await router1.dump(); @@ -254,24 +254,24 @@ test('router.pipeToRouter() succeeds with audio', async () => expect(pipeConsumer.rtpParameters.codecs).toEqual( [ { - mimeType : 'audio/opus', - clockRate : 48000, - payloadType : 100, - channels : 2, - parameters : + mimeType : 'audio/opus', + clockRate : 48000, + payloadType: 100, + channels : 2, + parameters : { - useinbandfec : 1, - foo : 'bar1' + useinbandfec: 1, + foo : 'bar1' }, - rtcpFeedback : [] + rtcpFeedback: [] } ]); expect(pipeConsumer.rtpParameters.headerExtensions).toEqual( [ { - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - id : 10 + uri: 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + id : 10 } ]); expect(pipeConsumer.rtpParameters.encodings).toEqual( @@ -292,23 +292,23 @@ test('router.pipeToRouter() succeeds with audio', async () => expect(pipeProducer.rtpParameters.codecs).toEqual( [ { - mimeType : 'audio/opus', - clockRate : 48000, - payloadType : 100, - channels : 2, - parameters : + mimeType : 'audio/opus', + clockRate : 48000, + payloadType: 100, + channels : 2, + parameters : { - useinbandfec : 1, - foo : 'bar1' + useinbandfec: 1, + foo : 'bar1' }, - rtcpFeedback : [] + rtcpFeedback: [] } ]); expect(pipeProducer.rtpParameters.headerExtensions).toEqual( [ { - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - id : 10 + uri: 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + id : 10 } ]); expect(pipeProducer.rtpParameters.encodings).toEqual( @@ -324,8 +324,8 @@ test('router.pipeToRouter() succeeds with video', async () => const { pipeConsumer, pipeProducer } = await router1.pipeToRouter( { - producerId : videoProducer.id, - router : router2 + producerId: videoProducer.id, + router : router2 }); dump = await router1.dump(); @@ -346,10 +346,10 @@ test('router.pipeToRouter() succeeds with video', async () => expect(pipeConsumer.rtpParameters.codecs).toEqual( [ { - mimeType : 'video/VP8', - clockRate : 90000, - payloadType : 101, - rtcpFeedback : + mimeType : 'video/VP8', + clockRate : 90000, + payloadType : 101, + rtcpFeedback: [ { type: 'nack', parameter: 'pli' }, { type: 'ccm', parameter: 'fir' } @@ -360,20 +360,20 @@ test('router.pipeToRouter() succeeds with video', async () => [ // NOTE: Remove this once framemarking draft becomes RFC. { - uri : 'http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07', - id : 6 + uri: 'http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07', + id : 6 }, { - uri : 'urn:ietf:params:rtp-hdrext:framemarking', - id : 7 + uri: 'urn:ietf:params:rtp-hdrext:framemarking', + id : 7 }, { - uri : 'urn:3gpp:video-orientation', - id : 11 + uri: 'urn:3gpp:video-orientation', + id : 11 }, { - uri : 'urn:ietf:params:rtp-hdrext:toffset', - id : 12 + uri: 'urn:ietf:params:rtp-hdrext:toffset', + id : 12 } ]); expect(pipeConsumer.rtpParameters.encodings).toEqual( @@ -397,10 +397,10 @@ test('router.pipeToRouter() succeeds with video', async () => expect(pipeProducer.rtpParameters.codecs).toEqual( [ { - mimeType : 'video/VP8', - clockRate : 90000, - payloadType : 101, - rtcpFeedback : + mimeType : 'video/VP8', + clockRate : 90000, + payloadType : 101, + rtcpFeedback: [ { type: 'nack', parameter: 'pli' }, { type: 'ccm', parameter: 'fir' } @@ -411,20 +411,20 @@ test('router.pipeToRouter() succeeds with video', async () => [ // NOTE: Remove this once framemarking draft becomes RFC. { - uri : 'http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07', - id : 6 + uri: 'http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07', + id : 6 }, { - uri : 'urn:ietf:params:rtp-hdrext:framemarking', - id : 7 + uri: 'urn:ietf:params:rtp-hdrext:framemarking', + id : 7 }, { - uri : 'urn:3gpp:video-orientation', - id : 11 + uri: 'urn:3gpp:video-orientation', + id : 11 }, { - uri : 'urn:ietf:params:rtp-hdrext:toffset', - id : 12 + uri: 'urn:ietf:params:rtp-hdrext:toffset', + id : 12 } ]); expect(pipeProducer.paused).toBe(true); @@ -434,8 +434,8 @@ test('transport.consume() for a pipe Producer succeeds', async () => { videoConsumer = await transport2.consume( { - producerId : videoProducer.id, - rtpCapabilities : consumerDeviceCapabilities + producerId : videoProducer.id, + rtpCapabilities: consumerDeviceCapabilities }); expect(videoConsumer.id).toBeType('string'); @@ -446,10 +446,10 @@ test('transport.consume() for a pipe Producer succeeds', async () => expect(videoConsumer.rtpParameters.codecs).toEqual( [ { - mimeType : 'video/VP8', - clockRate : 90000, - payloadType : 101, - rtcpFeedback : + mimeType : 'video/VP8', + clockRate : 90000, + payloadType : 101, + rtcpFeedback: [ { type: 'nack' }, { type: 'ccm', parameter: 'fir' }, @@ -458,25 +458,25 @@ test('transport.consume() for a pipe Producer succeeds', async () => ] }, { - mimeType : 'video/rtx', - clockRate : 90000, - payloadType : 102, - rtcpFeedback : [], - parameters : + mimeType : 'video/rtx', + clockRate : 90000, + payloadType : 102, + rtcpFeedback: [], + parameters : { - apt : 101 + apt: 101 } } ]); expect(videoConsumer.rtpParameters.headerExtensions).toEqual( [ { - uri : 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', - id : 4 + uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', + id : 4 }, { - uri : 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01', - id : 5 + uri: 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01', + id : 5 } ]); expect(videoConsumer.rtpParameters.encodings.length).toBe(1); @@ -535,8 +535,8 @@ test('router.pipeToRouter() succeeds with data', async () => const { pipeDataConsumer, pipeDataProducer } = await router1.pipeToRouter( { - dataProducerId : dataProducer.id, - router : router2 + dataProducerId: dataProducer.id, + router : router2 }); dump = await router1.dump(); @@ -578,7 +578,7 @@ test('transport.dataConsume() for a pipe DataProducer succeeds', async () => { dataConsumer = await transport2.consumeData( { - dataProducerId : dataProducer.id + dataProducerId: dataProducer.id }); expect(dataConsumer.id).toBeType('string'); diff --git a/test/test-PlainRtpTransport.js b/test/test-PlainRtpTransport.js index aabbf76744..9b4af2fe36 100644 --- a/test/test-PlainRtpTransport.js +++ b/test/test-PlainRtpTransport.js @@ -11,32 +11,32 @@ let transport; const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2, - parameters : + kind : 'audio', + mimeType : 'audio/opus', + clockRate : 48000, + channels : 2, + parameters: { - useinbandfec : 1, - foo : 'bar' + useinbandfec: 1, + foo : 'bar' } }, { - kind : 'video', - mimeType : 'video/VP8', - clockRate : 90000 + kind : 'video', + mimeType : 'video/VP8', + clockRate: 90000 }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - rtcpFeedback : [], // Will be ignored. - parameters : + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + rtcpFeedback: [], // Will be ignored. + parameters : { - 'level-asymmetry-allowed' : 1, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032', - foo : 'bar' + 'level-asymmetry-allowed': 1, + 'packetization-mode' : 1, + 'profile-level-id' : '4d0032', + foo : 'bar' } } ]; @@ -53,8 +53,8 @@ beforeEach(async () => { transport = await router.createPlainRtpTransport( { - listenIp : { ip: '127.0.0.1', announcedIp: '4.4.4.4' }, - rtcpMux : false + listenIp: { ip: '127.0.0.1', announcedIp: '4.4.4.4' }, + rtcpMux : false }); }); @@ -73,10 +73,10 @@ test('router.createPlainRtpTransport() succeeds', async () => // Create a separate transport here. const transport1 = await router.createPlainRtpTransport( { - listenIp : { ip: '127.0.0.1', announcedIp: '9.9.9.1' }, - rtcpMux : true, - enableSctp : true, - appData : { foo: 'bar' } + listenIp : { ip: '127.0.0.1', announcedIp: '9.9.9.1' }, + rtcpMux : true, + enableSctp: true, + appData : { foo: 'bar' } }); expect(onObserverNewTransport).toHaveBeenCalledTimes(1); @@ -91,11 +91,11 @@ test('router.createPlainRtpTransport() succeeds', async () => expect(transport1.rtcpTuple).toBe(undefined); expect(transport1.sctpParameters).toStrictEqual( { - port : 5000, - OS : 1024, - MIS : 1024, - maxMessageSize : 262144, - isDataChannel : false + port : 5000, + OS : 1024, + MIS : 1024, + maxMessageSize: 262144, + isDataChannel : false }); expect(transport1.sctpState).toBe('new'); @@ -120,8 +120,8 @@ test('router.createPlainRtpTransport() succeeds', async () => const transport2 = await router.createPlainRtpTransport( { - listenIp : '127.0.0.1', - rtcpMux : false + listenIp: '127.0.0.1', + rtcpMux : false }); expect(transport2.id).toBeType('string'); @@ -162,8 +162,8 @@ test('router.createPlainRtpTransport() with wrong arguments rejects with TypeErr await expect(router.createPlainRtpTransport( { - listenIp : '127.0.0.1', - appData : 'NOT-AN-OBJECT' + listenIp: '127.0.0.1', + appData : 'NOT-AN-OBJECT' })) .rejects .toThrow(TypeError); diff --git a/test/test-Producer.js b/test/test-Producer.js index b5ca45cbf4..defba071e9 100644 --- a/test/test-Producer.js +++ b/test/test-Producer.js @@ -15,31 +15,31 @@ let videoProducer; const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2, - parameters : + kind : 'audio', + mimeType : 'audio/opus', + clockRate : 48000, + channels : 2, + parameters: { - foo : '111' + foo: '111' } }, { - kind : 'video', - mimeType : 'video/VP8', - clockRate : 90000 + kind : 'video', + mimeType : 'video/VP8', + clockRate: 90000 }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - rtcpFeedback : [], // Will be ignored. - parameters : + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + rtcpFeedback: [], // Will be ignored. + parameters : { - 'level-asymmetry-allowed' : 1, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032', - foo : 'bar' + 'level-asymmetry-allowed': 1, + 'packetization-mode' : 1, + 'profile-level-id' : '4d0032', + foo : 'bar' } } ]; @@ -50,11 +50,11 @@ beforeAll(async () => router = await worker.createRouter({ mediaCodecs }); transport1 = await router.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ] + listenIps: [ '127.0.0.1' ] }); transport2 = await router.createPlainRtpTransport( { - listenIp : '127.0.0.1' + listenIp: '127.0.0.1' }); }); @@ -68,44 +68,44 @@ test('transport1.produce() succeeds', async () => audioProducer = await transport1.produce( { - kind : 'audio', - rtpParameters : + kind : 'audio', + rtpParameters: { - mid : 'AUDIO', - codecs : + mid : 'AUDIO', + codecs: [ { - mimeType : 'audio/opus', - payloadType : 111, - clockRate : 48000, - channels : 2, - parameters : + mimeType : 'audio/opus', + payloadType: 111, + clockRate : 48000, + channels : 2, + parameters : { - useinbandfec : 1, - usedtx : 1, - foo : 222.222, - bar : '333' + useinbandfec: 1, + usedtx : 1, + foo : 222.222, + bar : '333' } } ], - headerExtensions : + headerExtensions: [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 10 + uri: 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 10 }, { - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - id : 12 + uri: 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + id : 12 } ], // Missing encodings on purpose. - rtcp : + rtcp: { - cname : 'audio-1' + cname: 'audio-1' } }, - appData : { foo: 1, bar: '2' } + appData: { foo: 1, bar: '2' } }); expect(onObserverNewProducer).toHaveBeenCalledTimes(1); @@ -125,17 +125,17 @@ test('transport1.produce() succeeds', async () => .resolves .toMatchObject( { - mapProducerIdConsumerIds : { [audioProducer.id]: [] }, - mapConsumerIdProducerId : {} + mapProducerIdConsumerIds: { [audioProducer.id]: [] }, + mapConsumerIdProducerId : {} }); await expect(transport1.dump()) .resolves .toMatchObject( { - id : transport1.id, - producerIds : [ audioProducer.id ], - consumerIds : [] + id : transport1.id, + producerIds: [ audioProducer.id ], + consumerIds: [] }); }, 2000); @@ -147,22 +147,22 @@ test('transport2.produce() succeeds', async () => videoProducer = await transport2.produce( { - kind : 'video', - rtpParameters : + kind : 'video', + rtpParameters: { - mid : 'VIDEO', - codecs : + mid : 'VIDEO', + codecs: [ { - mimeType : 'video/h264', - payloadType : 112, - clockRate : 90000, - parameters : + mimeType : 'video/h264', + payloadType: 112, + clockRate : 90000, + parameters : { - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' }, - rtcpFeedback : + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -170,36 +170,36 @@ test('transport2.produce() succeeds', async () => ] }, { - mimeType : 'video/rtx', - payloadType : 113, - clockRate : 90000, - parameters : { apt: 112 } + mimeType : 'video/rtx', + payloadType: 113, + clockRate : 90000, + parameters : { apt: 112 } } ], - headerExtensions : + headerExtensions: [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 10 + uri: 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 10 }, { - uri : 'urn:3gpp:video-orientation', - id : 13 + uri: 'urn:3gpp:video-orientation', + id : 13 } ], - encodings : + encodings: [ { ssrc: 22222222, rtx: { ssrc: 22222223 }, scalabilityMode: 'L1T3' }, { ssrc: 22222224, rtx: { ssrc: 22222225 } }, { ssrc: 22222226, rtx: { ssrc: 22222227 } }, { ssrc: 22222228, rtx: { ssrc: 22222229 } } ], - rtcp : + rtcp: { - cname : 'video-1' + cname: 'video-1' } }, - appData : { foo: 1, bar: '2' } + appData: { foo: 1, bar: '2' } }); expect(onObserverNewProducer).toHaveBeenCalledTimes(1); @@ -219,17 +219,17 @@ test('transport2.produce() succeeds', async () => .resolves .toMatchObject( { - mapProducerIdConsumerIds : { [videoProducer.id]: [] }, - mapConsumerIdProducerId : {} + mapProducerIdConsumerIds: { [videoProducer.id]: [] }, + mapConsumerIdProducerId : {} }); await expect(transport2.dump()) .resolves .toMatchObject( { - id : transport2.id, - producerIds : [ videoProducer.id ], - consumerIds : [] + id : transport2.id, + producerIds: [ videoProducer.id ], + consumerIds: [] }); }, 2000); @@ -237,16 +237,16 @@ test('transport1.produce() with wrong arguments rejects with TypeError', async ( { await expect(transport1.produce( { - kind : 'chicken', - rtpParameters : {} + kind : 'chicken', + rtpParameters: {} })) .rejects .toThrow(TypeError); await expect(transport1.produce( { - kind : 'audio', - rtpParameters : {} + kind : 'audio', + rtpParameters: {} })) .rejects .toThrow(TypeError); @@ -254,13 +254,13 @@ test('transport1.produce() with wrong arguments rejects with TypeError', async ( // Missing or empty rtpParameters.codecs. await expect(transport1.produce( { - kind : 'audio', - rtpParameters : + kind : 'audio', + rtpParameters: { - codecs : [], - headerExtensions : [], - encodings : [ { ssrc: '1111' } ], - rtcp : { cname: 'qwerty' } + codecs : [], + headerExtensions: [], + encodings : [ { ssrc: '1111' } ], + rtcp : { cname: 'qwerty' } } })) .rejects @@ -269,31 +269,31 @@ test('transport1.produce() with wrong arguments rejects with TypeError', async ( // Missing or empty rtpParameters.encodings. await expect(transport1.produce( { - kind : 'video', - rtpParameters : + kind : 'video', + rtpParameters: { - codecs : + codecs: [ { - mimeType : 'video/h264', - payloadType : 112, - clockRate : 90000, - parameters : + mimeType : 'video/h264', + payloadType: 112, + clockRate : 90000, + parameters : { - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' } }, { - mimeType : 'video/rtx', - payloadType : 113, - clockRate : 90000, - parameters : { apt: 112 } + mimeType : 'video/rtx', + payloadType: 113, + clockRate : 90000, + parameters : { apt: 112 } } ], - headerExtensions : [], - encodings : [], - rtcp : { cname: 'qwerty' } + headerExtensions: [], + encodings : [], + rtcp : { cname: 'qwerty' } } })) .rejects @@ -302,36 +302,36 @@ test('transport1.produce() with wrong arguments rejects with TypeError', async ( // Wrong apt in RTX codec. await expect(transport1.produce( { - kind : 'audio', - rtpParameters : + kind : 'audio', + rtpParameters: { - codecs : + codecs: [ { - mimeType : 'video/h264', - payloadType : 112, - clockRate : 90000, - parameters : + mimeType : 'video/h264', + payloadType: 112, + clockRate : 90000, + parameters : { - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' } }, { - mimeType : 'video/rtx', - payloadType : 113, - clockRate : 90000, - parameters : { apt: 111 } + mimeType : 'video/rtx', + payloadType: 113, + clockRate : 90000, + parameters : { apt: 111 } } ], - headerExtensions : [], - encodings : + headerExtensions: [], + encodings : [ { ssrc: 6666, rtx: { ssrc: 6667 } } ], - rtcp : + rtcp: { - cname : 'video-1' + cname: 'video-1' } } })) @@ -343,20 +343,20 @@ test('transport1.produce() with unsupported codecs rejects with UnsupportedError { await expect(transport1.produce( { - kind : 'audio', - rtpParameters : + kind : 'audio', + rtpParameters: { - codecs : + codecs: [ { - mimeType : 'audio/ISAC', - payloadType : 108, - clockRate : 32000 + mimeType : 'audio/ISAC', + payloadType: 108, + clockRate : 32000 } ], - headerExtensions : [], - encodings : [ { ssrc: 1111 } ], - rtcp : { cname: 'audio' } + headerExtensions: [], + encodings : [ { ssrc: 1111 } ], + rtcp : { cname: 'audio' } } })) .rejects @@ -365,30 +365,30 @@ test('transport1.produce() with unsupported codecs rejects with UnsupportedError // Invalid H264 profile-level-id. await expect(transport1.produce( { - kind : 'video', - rtpParameters : + kind : 'video', + rtpParameters: { - codecs : + codecs: [ { - mimeType : 'video/h264', - payloadType : 112, - clockRate : 90000, - parameters : + mimeType : 'video/h264', + payloadType: 112, + clockRate : 90000, + parameters : { - 'packetization-mode' : 1, - 'profile-level-id' : 'CHICKEN' + 'packetization-mode': 1, + 'profile-level-id' : 'CHICKEN' } }, { - mimeType : 'video/rtx', - payloadType : 113, - clockRate : 90000, - parameters : { apt: 112 } + mimeType : 'video/rtx', + payloadType: 113, + clockRate : 90000, + parameters : { apt: 112 } } ], - headerExtensions : [], - encodings : + headerExtensions: [], + encodings : [ { ssrc: 6666, rtx: { ssrc: 6667 } } ] @@ -402,24 +402,24 @@ test('transport.produce() with already used MID or SSRC rejects with Error', asy { await expect(transport1.produce( { - kind : 'audio', - rtpParameters : + kind : 'audio', + rtpParameters: { - mid : 'AUDIO', - codecs : + mid : 'AUDIO', + codecs: [ { - mimeType : 'audio/opus', - payloadType : 111, - clockRate : 48000, - channels : 2 + mimeType : 'audio/opus', + payloadType: 111, + clockRate : 48000, + channels : 2 } ], - headerExtensions : [], - encodings : [ { ssrc: 33333333 } ], - rtcp : + headerExtensions: [], + encodings : [ { ssrc: 33333333 } ], + rtcp : { - cname : 'audio-2' + cname: 'audio-2' } } })) @@ -428,37 +428,37 @@ test('transport.produce() with already used MID or SSRC rejects with Error', asy await expect(transport2.produce( { - kind : 'video', - rtpParameters : + kind : 'video', + rtpParameters: { - mid : 'VIDEO2', - codecs : + mid : 'VIDEO2', + codecs: [ { - mimeType : 'video/h264', - payloadType : 112, - clockRate : 90000, - parameters : + mimeType : 'video/h264', + payloadType: 112, + clockRate : 90000, + parameters : { - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' } } ], - headerExtensions : + headerExtensions: [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 10 + uri: 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 10 } ], - encodings : + encodings: [ { ssrc: 22222222 } ], - rtcp : + rtcp: { - cname : 'video-1' + cname: 'video-1' } } })) @@ -470,22 +470,22 @@ test('transport.produce() with no MID and with single encoding without RID or SS { await expect(transport1.produce( { - kind : 'audio', - rtpParameters : + kind : 'audio', + rtpParameters: { - codecs : + codecs: [ { - mimeType : 'audio/opus', - payloadType : 111, - clockRate : 48000, - channels : 2 + mimeType : 'audio/opus', + payloadType: 111, + clockRate : 48000, + channels : 2 } ], - encodings : [ {} ], - rtcp : + encodings: [ {} ], + rtcp : { - cname : 'audio-2' + cname: 'audio-2' } } })) @@ -511,10 +511,10 @@ test('producer.dump() succeeds', async () => expect(data.rtpParameters.codecs[0].parameters) .toEqual( { - useinbandfec : 1, - usedtx : 1, - foo : 222.222, - bar : '333' + useinbandfec: 1, + usedtx : 1, + foo : 222.222, + bar : '333' }); expect(data.rtpParameters.codecs[0].rtcpFeedback).toEqual([]); expect(data.rtpParameters.headerExtensions).toBeType('array'); @@ -522,16 +522,16 @@ test('producer.dump() succeeds', async () => expect(data.rtpParameters.headerExtensions).toEqual( [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 10, - parameters : {}, - encrypt : false + uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 10, + parameters: {}, + encrypt : false }, { - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - id : 12, - parameters : {}, - encrypt : false + uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + id : 12, + parameters: {}, + encrypt : false } ]); expect(data.rtpParameters.encodings).toBeType('array'); @@ -556,8 +556,8 @@ test('producer.dump() succeeds', async () => expect(data.rtpParameters.codecs[0].parameters) .toEqual( { - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' }); expect(data.rtpParameters.codecs[0].rtcpFeedback) .toEqual( @@ -577,16 +577,16 @@ test('producer.dump() succeeds', async () => expect(data.rtpParameters.headerExtensions).toEqual( [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 10, - parameters : {}, - encrypt : false + uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 10, + parameters: {}, + encrypt : false }, { - uri : 'urn:3gpp:video-orientation', - id : 13, - parameters : {}, - encrypt : false + uri : 'urn:3gpp:video-orientation', + id : 13, + parameters: {}, + encrypt : false } ]); expect(data.rtpParameters.encodings).toBeType('array'); @@ -594,13 +594,13 @@ test('producer.dump() succeeds', async () => expect(data.rtpParameters.encodings).toEqual( [ { - codecPayloadType : 112, - ssrc : 22222222, - rtx : { ssrc: 22222223 }, - scalabilityMode : 'L1T3', - spatialLayers : 1, - temporalLayers : 3, - ksvc : false + codecPayloadType: 112, + ssrc : 22222222, + rtx : { ssrc: 22222223 }, + scalabilityMode : 'L1T3', + spatialLayers : 1, + temporalLayers : 3, + ksvc : false }, { codecPayloadType: 112, ssrc: 22222224, rtx: { ssrc: 22222225 } }, { codecPayloadType: 112, ssrc: 22222226, rtx: { ssrc: 22222227 } }, @@ -705,17 +705,17 @@ test('producer.close() succeeds', async () => .resolves .toMatchObject( { - mapProducerIdConsumerIds : {}, - mapConsumerIdProducerId : {} + mapProducerIdConsumerIds: {}, + mapConsumerIdProducerId : {} }); await expect(transport1.dump()) .resolves .toMatchObject( { - id : transport1.id, - producerIds : [], - consumerIds : [] + id : transport1.id, + producerIds: [], + consumerIds: [] }); }, 2000); diff --git a/test/test-Router.js b/test/test-Router.js index e335e4a6dd..8f535aa747 100644 --- a/test/test-Router.js +++ b/test/test-Router.js @@ -13,31 +13,31 @@ afterEach(() => worker && !worker.closed && worker.close()); const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2, - parameters : + kind : 'audio', + mimeType : 'audio/opus', + clockRate : 48000, + channels : 2, + parameters: { - useinbandfec : 1, - foo : 'bar' + useinbandfec: 1, + foo : 'bar' } }, { - kind : 'video', - mimeType : 'video/VP8', - clockRate : 90000 + kind : 'video', + mimeType : 'video/VP8', + clockRate: 90000 }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - rtcpFeedback : [], // Will be ignored. - parameters : + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + rtcpFeedback: [], // Will be ignored. + parameters : { - 'level-asymmetry-allowed' : 1, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + 'level-asymmetry-allowed': 1, + 'packetization-mode' : 1, + 'profile-level-id' : '4d0032' } } ]; @@ -70,14 +70,14 @@ test('worker.createRouter() succeeds', async () => .resolves .toMatchObject( { - id : router.id, - transportIds : [], - rtpObserverIds : [], - mapProducerIdConsumerIds : {}, - mapConsumerIdProducerId : {}, - mapProducerIdObserverIds : {}, - mapDataProducerIdDataConsumerIds : {}, - mapDataConsumerIdDataProducerId : {} + id : router.id, + transportIds : [], + rtpObserverIds : [], + mapProducerIdConsumerIds : {}, + mapConsumerIdProducerId : {}, + mapProducerIdObserverIds : {}, + mapDataProducerIdDataConsumerIds: {}, + mapDataConsumerIdDataProducerId : {} }); // Private API. diff --git a/test/test-WebRtcTransport.js b/test/test-WebRtcTransport.js index 5b6bfacda3..f33ffaa8bf 100644 --- a/test/test-WebRtcTransport.js +++ b/test/test-WebRtcTransport.js @@ -11,31 +11,31 @@ let transport; const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2, - parameters : + kind : 'audio', + mimeType : 'audio/opus', + clockRate : 48000, + channels : 2, + parameters: { - useinbandfec : 1, - foo : 'bar' + useinbandfec: 1, + foo : 'bar' } }, { - kind : 'video', - mimeType : 'video/VP8', - clockRate : 90000 + kind : 'video', + mimeType : 'video/VP8', + clockRate: 90000 }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - parameters : + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + parameters: { - 'level-asymmetry-allowed' : 1, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032', - foo : 'bar' + 'level-asymmetry-allowed': 1, + 'packetization-mode' : 1, + 'profile-level-id' : '4d0032', + foo : 'bar' } } ]; @@ -52,8 +52,8 @@ beforeEach(async () => { transport = await router.createWebRtcTransport( { - listenIps : [ { ip: '127.0.0.1', announcedIp: '9.9.9.1' } ], - enableTcp : false + listenIps: [ { ip: '127.0.0.1', announcedIp: '9.9.9.1' } ], + enableTcp: false }); }); @@ -72,18 +72,18 @@ test('router.createWebRtcTransport() succeeds', async () => // Create a separate transport here. const transport1 = await router.createWebRtcTransport( { - listenIps : + listenIps: [ { ip: '127.0.0.1', announcedIp: '9.9.9.1' }, { ip: '0.0.0.0', announcedIp: '9.9.9.2' }, { ip: '127.0.0.1', announcedIp: null } ], - enableTcp : true, - preferUdp : true, - enableSctp : true, - numSctpStreams : { OS: 2048, MIS: 2048 }, - maxSctpMessageSize : 1000000, - appData : { foo: 'bar' } + enableTcp : true, + preferUdp : true, + enableSctp : true, + numSctpStreams : { OS: 2048, MIS: 2048 }, + maxSctpMessageSize: 1000000, + appData : { foo: 'bar' } }); expect(onObserverNewTransport).toHaveBeenCalledTimes(1); @@ -98,11 +98,11 @@ test('router.createWebRtcTransport() succeeds', async () => expect(transport1.iceParameters.password).toBeType('string'); expect(transport1.sctpParameters).toStrictEqual( { - port : 5000, - OS : 2048, - MIS : 2048, - maxMessageSize : 1000000, - isDataChannel : true + port : 5000, + OS : 2048, + MIS : 2048, + maxMessageSize: 1000000, + isDataChannel : true }); expect(transport1.iceCandidates).toBeType('array'); expect(transport1.iceCandidates.length).toBe(6); @@ -193,17 +193,17 @@ test('router.createWebRtcTransport() with wrong arguments rejects with TypeError await expect(router.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ], - appData : 'NOT-AN-OBJECT' + listenIps: [ '127.0.0.1' ], + appData : 'NOT-AN-OBJECT' })) .rejects .toThrow(TypeError); await expect(router.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ], - enableSctp : true, - numSctpStreams : 'foo' + listenIps : [ '127.0.0.1' ], + enableSctp : true, + numSctpStreams: 'foo' })) .rejects .toThrow(TypeError); @@ -253,14 +253,14 @@ test('webRtcTransport.connect() succeeds', async () => { const dtlsRemoteParameters = { - fingerprints : + fingerprints: [ { - algorithm : 'sha-256', - value : '82:5A:68:3D:36:C3:0A:DE:AF:E7:32:43:D2:88:83:57:AC:2D:65:E5:80:C4:B6:FB:AF:1A:A0:21:9F:6D:0C:AD' + algorithm: 'sha-256', + value : '82:5A:68:3D:36:C3:0A:DE:AF:E7:32:43:D2:88:83:57:AC:2D:65:E5:80:C4:B6:FB:AF:1A:A0:21:9F:6D:0C:AD' } ], - role : 'client' + role: 'client' }; await expect(transport.connect({ dtlsParameters: dtlsRemoteParameters })) @@ -285,14 +285,14 @@ test('webRtcTransport.connect() with wrong arguments rejects with TypeError', as dtlsRemoteParameters = { - fingerprints : + fingerprints: [ { - algorithm : 'sha-256000', - value : '82:5A:68:3D:36:C3:0A:DE:AF:E7:32:43:D2:88:83:57:AC:2D:65:E5:80:C4:B6:FB:AF:1A:A0:21:9F:6D:0C:AD' + algorithm: 'sha-256000', + value : '82:5A:68:3D:36:C3:0A:DE:AF:E7:32:43:D2:88:83:57:AC:2D:65:E5:80:C4:B6:FB:AF:1A:A0:21:9F:6D:0C:AD' } ], - role : 'client' + role: 'client' }; await expect(transport.connect({ dtlsParameters: dtlsRemoteParameters })) @@ -301,14 +301,14 @@ test('webRtcTransport.connect() with wrong arguments rejects with TypeError', as dtlsRemoteParameters = { - fingerprints : + fingerprints: [ { - algorithm : 'sha-256', - value : '82:5A:68:3D:36:C3:0A:DE:AF:E7:32:43:D2:88:83:57:AC:2D:65:E5:80:C4:B6:FB:AF:1A:A0:21:9F:6D:0C:AD' + algorithm: 'sha-256', + value : '82:5A:68:3D:36:C3:0A:DE:AF:E7:32:43:D2:88:83:57:AC:2D:65:E5:80:C4:B6:FB:AF:1A:A0:21:9F:6D:0C:AD' } ], - role : 'chicken' + role: 'chicken' }; await expect(transport.connect({ dtlsParameters: dtlsRemoteParameters })) @@ -338,9 +338,9 @@ test('webRtcTransport.restartIce() succeeds', async () => .resolves .toMatchObject( { - usernameFragment : expect.any(String), - password : expect.any(String), - iceLite : true + usernameFragment: expect.any(String), + password : expect.any(String), + iceLite : true }); expect(transport.iceParameters.usernameFragment).toBeType('string'); @@ -405,11 +405,11 @@ test('WebRtcTransport events succeed', async () => const onIceSelectedTuple = jest.fn(); const iceSelectedTuple = { - localIp : '1.1.1.1', - localPort : 1111, - remoteIp : '2.2.2.2', - remotePort : 2222, - protocol : 'udp' + localIp : '1.1.1.1', + localPort : 1111, + remoteIp : '2.2.2.2', + remotePort: 2222, + protocol : 'udp' }; transport.on('iceselectedtuplechange', onIceSelectedTuple); @@ -478,8 +478,8 @@ test('WebRtcTransport emits "routerclose" if Router is closed', async () => const router2 = await worker.createRouter({ mediaCodecs }); const transport2 = await router2.createWebRtcTransport( { - listenIps : [ '127.0.0.1' ], - enableSctp : true + listenIps : [ '127.0.0.1' ], + enableSctp: true }); const onObserverClose = jest.fn(); diff --git a/test/test-Worker.js b/test/test-Worker.js index d1548a2df7..44fc977e93 100644 --- a/test/test-Worker.js +++ b/test/test-Worker.js @@ -32,13 +32,13 @@ test('createWorker() succeeds', async () => // eslint-disable-next-line require-atomic-updates worker = await createWorker( { - logLevel : 'debug', - logTags : [ 'info' ], - rtcMinPort : 0, - rtcMaxPort : 9999, - dtlsCertificateFile : 'test/data/dtls-cert.pem', - dtlsPrivateKeyFile : 'test/data/dtls-key.pem', - appData : { bar: 456 } + logLevel : 'debug', + logTags : [ 'info' ], + rtcMinPort : 0, + rtcMaxPort : 9999, + dtlsCertificateFile: 'test/data/dtls-cert.pem', + dtlsPrivateKeyFile : 'test/data/dtls-key.pem', + appData : { bar: 456 } }); expect(worker).toBeType('object'); expect(worker.pid).toBeType('number'); diff --git a/test/test-node-sctp.js b/test/test-node-sctp.js index 1199202ef3..3605d3a96d 100644 --- a/test/test-node-sctp.js +++ b/test/test-node-sctp.js @@ -25,10 +25,10 @@ beforeAll(async () => router = await worker.createRouter(); transport = await router.createPlainRtpTransport( { - listenIp : '127.0.0.1', - comedia : true, // So we don't need to call transport.connect(). - enableSctp : true, - numSctpStreams : { OS: 256, MIS: 256 } + listenIp : '127.0.0.1', + comedia : true, // So we don't need to call transport.connect(). + enableSctp : true, + numSctpStreams: { OS: 256, MIS: 256 } }); // Node UDP socket for SCTP. @@ -56,11 +56,11 @@ beforeAll(async () => sctpSocket = sctp.connect( { - localPort : 5000, // Required for SCTP over UDP in mediasoup. - port : 5000, // Required for SCTP over UDP in mediasoup. - OS : OS, - MIS : MIS, - udpTransport : udpSocket + localPort : 5000, // Required for SCTP over UDP in mediasoup. + port : 5000, // Required for SCTP over UDP in mediasoup. + OS : OS, + MIS : MIS, + udpTransport: udpSocket }); resolve(); @@ -72,15 +72,15 @@ beforeAll(async () => { sctpSocket = sctp.connect( { - localPort : 5000, // Required for SCTP over UDP in mediasoup. - port : 5000, // Required for SCTP over UDP in mediasoup. - OS : OS, - MIS : MIS, - udpTransport : udpSocket, - udpPeer : + localPort : 5000, // Required for SCTP over UDP in mediasoup. + port : 5000, // Required for SCTP over UDP in mediasoup. + OS : OS, + MIS : MIS, + udpTransport: udpSocket, + udpPeer : { - address : remoteUdpIp, - port : remoteUdpPort + address: remoteUdpIp, + port : remoteUdpPort } }); } @@ -93,13 +93,13 @@ beforeAll(async () => // Create a DataProducer with the corresponding SCTP stream id. dataProducer = await transport.produceData( { - sctpStreamParameters : + sctpStreamParameters: { - streamId : sctpSendStreamId, - ordered : true + streamId: sctpSendStreamId, + ordered : true }, - label : 'node-sctp', - protocol : 'foo & bar 😀😀😀' + label : 'node-sctp', + protocol: 'foo & bar 😀😀😀' }); // Create a DataConsumer to receive messages from the DataProducer over the @@ -181,11 +181,11 @@ test('ordered DataProducer delivers all SCTP messages to the DataConsumer', asyn .toMatchObject( [ { - type : 'data-producer', - label : dataProducer.label, - protocol : dataProducer.protocol, - messagesReceived : numMessages, - bytesReceived : sentMessageBytes + type : 'data-producer', + label : dataProducer.label, + protocol : dataProducer.protocol, + messagesReceived: numMessages, + bytesReceived : sentMessageBytes } ]); @@ -194,11 +194,11 @@ test('ordered DataProducer delivers all SCTP messages to the DataConsumer', asyn .toMatchObject( [ { - type : 'data-consumer', - label : dataConsumer.label, - protocol : dataConsumer.protocol, - messagesSent : numMessages, - bytesSent : recvMessageBytes + type : 'data-consumer', + label : dataConsumer.label, + protocol : dataConsumer.protocol, + messagesSent: numMessages, + bytesSent : recvMessageBytes } ]); }, 8000); diff --git a/test/test-ortc.js b/test/test-ortc.js index eb61d5cef1..c4abeae188 100644 --- a/test/test-ortc.js +++ b/test/test-ortc.js @@ -9,32 +9,32 @@ test('generateRouterRtpCapabilities() succeeds', () => const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2, - parameters : - { - useinbandfec : 1, - foo : 'bar' + kind : 'audio', + mimeType : 'audio/opus', + clockRate : 48000, + channels : 2, + parameters: + { + useinbandfec: 1, + foo : 'bar' } }, { - kind : 'video', - preferredPayloadType : 125, // Let's force it. - mimeType : 'video/VP8', - clockRate : 90000 + kind : 'video', + preferredPayloadType: 125, // Let's force it. + mimeType : 'video/VP8', + clockRate : 90000 }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - rtcpFeedback : [], // Will be ignored. - parameters : - { - 'level-asymmetry-allowed' : 1, - 'profile-level-id' : '42e01f', - foo : 'bar' + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + rtcpFeedback: [], // Will be ignored. + parameters : + { + 'level-asymmetry-allowed': 1, + 'profile-level-id' : '42e01f', + foo : 'bar' } } ]; @@ -46,30 +46,30 @@ test('generateRouterRtpCapabilities() succeeds', () => // opus. expect(rtpCapabilities.codecs[0]).toEqual( { - kind : 'audio', - mimeType : 'audio/opus', - preferredPayloadType : 100, // 100 is the first available dynamic PT. - clockRate : 48000, - channels : 2, - rtcpFeedback : + kind : 'audio', + mimeType : 'audio/opus', + preferredPayloadType: 100, // 100 is the first available dynamic PT. + clockRate : 48000, + channels : 2, + rtcpFeedback : [ { type: 'transport-cc' } ], - parameters : + parameters: { - useinbandfec : 1, - foo : 'bar' + useinbandfec: 1, + foo : 'bar' } }); // VP8. expect(rtpCapabilities.codecs[1]).toEqual( { - kind : 'video', - mimeType : 'video/VP8', - preferredPayloadType : 125, - clockRate : 90000, - rtcpFeedback : + kind : 'video', + mimeType : 'video/VP8', + preferredPayloadType: 125, + clockRate : 90000, + rtcpFeedback : [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -77,31 +77,31 @@ test('generateRouterRtpCapabilities() succeeds', () => { type: 'goog-remb' }, { type: 'transport-cc' } ], - parameters : {} + parameters: {} }); // VP8 RTX. expect(rtpCapabilities.codecs[2]).toEqual( { - kind : 'video', - mimeType : 'video/rtx', - preferredPayloadType : 101, // 101 is the second available dynamic PT. - clockRate : 90000, - rtcpFeedback : [], - parameters : - { - apt : 125 + kind : 'video', + mimeType : 'video/rtx', + preferredPayloadType: 101, // 101 is the second available dynamic PT. + clockRate : 90000, + rtcpFeedback : [], + parameters : + { + apt: 125 } }); // H264. expect(rtpCapabilities.codecs[3]).toEqual( { - kind : 'video', - mimeType : 'video/H264', - preferredPayloadType : 102, // 102 is the second available dynamic PT. - clockRate : 90000, - rtcpFeedback : + kind : 'video', + mimeType : 'video/H264', + preferredPayloadType: 102, // 102 is the second available dynamic PT. + clockRate : 90000, + rtcpFeedback : [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, @@ -109,27 +109,27 @@ test('generateRouterRtpCapabilities() succeeds', () => { type: 'goog-remb' }, { type: 'transport-cc' } ], - parameters : + parameters: { - 'packetization-mode' : 0, - 'level-asymmetry-allowed' : 1, - 'profile-level-id' : '42e01f', - foo : 'bar' + 'packetization-mode' : 0, + 'level-asymmetry-allowed': 1, + 'profile-level-id' : '42e01f', + foo : 'bar' } }); // H264 RTX. expect(rtpCapabilities.codecs[4]).toEqual( { - kind : 'video', - mimeType : 'video/rtx', - preferredPayloadType : 103, - clockRate : 90000, - rtcpFeedback : [], - parameters : - { - apt : 102 + kind : 'video', + mimeType : 'video/rtx', + preferredPayloadType: 103, + clockRate : 90000, + rtcpFeedback : [], + parameters : + { + apt: 102 } }); }); @@ -141,10 +141,10 @@ test('generateRouterRtpCapabilities() with unsupported codecs throws Unsupported mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/chicken', - clockRate : 8000, - channels : 4 + kind : 'audio', + mimeType : 'audio/chicken', + clockRate: 8000, + channels : 4 } ]; @@ -154,10 +154,10 @@ test('generateRouterRtpCapabilities() with unsupported codecs throws Unsupported mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 1 + kind : 'audio', + mimeType : 'audio/opus', + clockRate: 48000, + channels : 1 } ]; @@ -167,12 +167,12 @@ test('generateRouterRtpCapabilities() with unsupported codecs throws Unsupported mediaCodecs = [ { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - parameters : + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + parameters: { - 'packetization-mode' : 5 + 'packetization-mode': 5 } } ]; @@ -189,10 +189,10 @@ test('generateRouterRtpCapabilities() with too many codecs throws', () => { mediaCodecs.push( { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2 + kind : 'audio', + mimeType : 'audio/opus', + clockRate: 48000, + channels : 2 }); } @@ -205,21 +205,21 @@ test('getProducerRtpParametersMapping(), getConsumableRtpParameters(), getConsum const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2 + kind : 'audio', + mimeType : 'audio/opus', + clockRate: 48000, + channels : 2 }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - parameters : - { - 'level-asymmetry-allowed' : 1, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032', - bar : 'lalala' + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + parameters: + { + 'level-asymmetry-allowed': 1, + 'packetization-mode' : 1, + 'profile-level-id' : '4d0032', + bar : 'lalala' } } ]; @@ -228,69 +228,69 @@ test('getProducerRtpParametersMapping(), getConsumableRtpParameters(), getConsum const rtpParameters = { - codecs : + codecs: [ { - mimeType : 'video/H264', - payloadType : 111, - clockRate : 90000, - rtcpFeedback : + mimeType : 'video/H264', + payloadType : 111, + clockRate : 90000, + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, { type: 'goog-remb' } ], - parameters : + parameters: { - foo : 1234, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + foo : 1234, + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' } }, { - mimeType : 'video/rtx', - payloadType : 112, - clockRate : 90000, - parameters : + mimeType : 'video/rtx', + payloadType: 112, + clockRate : 90000, + parameters : { - apt : 111 + apt: 111 } } ], - headerExtensions : + headerExtensions: [ { - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - id : 1 + uri: 'urn:ietf:params:rtp-hdrext:sdes:mid', + id : 1 }, { - uri : 'urn:3gpp:video-orientation', - id : 2 + uri: 'urn:3gpp:video-orientation', + id : 2 } ], - encodings : + encodings: [ { - ssrc : 11111111, - rtx : { ssrc: 11111112 }, - maxBitrate : 111111, - scalabilityMode : 'L1T3' + ssrc : 11111111, + rtx : { ssrc: 11111112 }, + maxBitrate : 111111, + scalabilityMode: 'L1T3' }, { - ssrc : 21111111, - rtx : { ssrc: 21111112 }, - maxBitrate : 222222, - scalabilityMode : 'L1T3' + ssrc : 21111111, + rtx : { ssrc: 21111112 }, + maxBitrate : 222222, + scalabilityMode: 'L1T3' }, { - rid : 'high', - maxBitrate : 333333, - scalabilityMode : 'L1T3' + rid : 'high', + maxBitrate : 333333, + scalabilityMode: 'L1T3' } ], - rtcp : + rtcp: { - cname : 'qwerty1234' + cname: 'qwerty1234' } }; @@ -321,9 +321,9 @@ test('getProducerRtpParametersMapping(), getConsumableRtpParameters(), getConsum expect(consumableRtpParameters.codecs[0].clockRate).toBe(90000); expect(consumableRtpParameters.codecs[0].parameters).toEqual( { - foo : 1234, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + foo : 1234, + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' }); expect(consumableRtpParameters.codecs[1].mimeType).toBe('video/rtx'); @@ -333,107 +333,107 @@ test('getProducerRtpParametersMapping(), getConsumableRtpParameters(), getConsum expect(consumableRtpParameters.encodings[0]).toEqual( { - ssrc : rtpMapping.encodings[0].mappedSsrc, - maxBitrate : 111111, - scalabilityMode : 'L1T3' + ssrc : rtpMapping.encodings[0].mappedSsrc, + maxBitrate : 111111, + scalabilityMode: 'L1T3' }); expect(consumableRtpParameters.encodings[1]).toEqual( { - ssrc : rtpMapping.encodings[1].mappedSsrc, - maxBitrate : 222222, - scalabilityMode : 'L1T3' + ssrc : rtpMapping.encodings[1].mappedSsrc, + maxBitrate : 222222, + scalabilityMode: 'L1T3' }); expect(consumableRtpParameters.encodings[2]).toEqual( { - ssrc : rtpMapping.encodings[2].mappedSsrc, - maxBitrate : 333333, - scalabilityMode : 'L1T3' + ssrc : rtpMapping.encodings[2].mappedSsrc, + maxBitrate : 333333, + scalabilityMode: 'L1T3' }); expect(consumableRtpParameters.rtcp).toEqual( { - cname : rtpParameters.rtcp.cname, - reducedSize : true, - mux : true + cname : rtpParameters.rtcp.cname, + reducedSize: true, + mux : true }); const remoteRtpCapabilities = { - codecs : + codecs: [ { - kind : 'audio', - mimeType : 'audio/opus', - preferredPayloadType : 100, - clockRate : 48000, - channels : 2 + kind : 'audio', + mimeType : 'audio/opus', + preferredPayloadType: 100, + clockRate : 48000, + channels : 2 }, { - kind : 'video', - mimeType : 'video/H264', - preferredPayloadType : 101, - clockRate : 90000, - rtcpFeedback : + kind : 'video', + mimeType : 'video/H264', + preferredPayloadType: 101, + clockRate : 90000, + rtcpFeedback : [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, { type: 'foo', parameter: 'FOO' } ], - parameters : + parameters: { - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032', - baz : 'LOLOLO' + 'packetization-mode': 1, + 'profile-level-id' : '4d0032', + baz : 'LOLOLO' } }, { - kind : 'video', - mimeType : 'video/rtx', - preferredPayloadType : 102, - clockRate : 90000, - parameters : + kind : 'video', + mimeType : 'video/rtx', + preferredPayloadType: 102, + clockRate : 90000, + parameters : { - apt : 101 + apt: 101 } } ], - headerExtensions : + headerExtensions: [ { - kind : 'audio', - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - preferredId : 1, - preferredEncrypt : false + kind : 'audio', + uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', + preferredId : 1, + preferredEncrypt: false }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', - preferredId : 1, - preferredEncrypt : false + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:sdes:mid', + preferredId : 1, + preferredEncrypt: false }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id', - preferredId : 2, - preferredEncrypt : false + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id', + preferredId : 2, + preferredEncrypt: false }, { - kind : 'audio', - uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', - preferredId : 8, - preferredEncrypt : false + kind : 'audio', + uri : 'urn:ietf:params:rtp-hdrext:ssrc-audio-level', + preferredId : 8, + preferredEncrypt: false }, { - kind : 'video', - uri : 'urn:3gpp:video-orientation', - preferredId : 11, - preferredEncrypt : false + kind : 'video', + uri : 'urn:3gpp:video-orientation', + preferredId : 11, + preferredEncrypt: false }, { - kind : 'video', - uri : 'urn:ietf:params:rtp-hdrext:toffset', - preferredId : 12, - preferredEncrypt : false + kind : 'video', + uri : 'urn:ietf:params:rtp-hdrext:toffset', + preferredId : 12, + preferredEncrypt: false } ] }; @@ -444,31 +444,31 @@ test('getProducerRtpParametersMapping(), getConsumableRtpParameters(), getConsum expect(consumerRtpParameters.codecs.length).toEqual(2); expect(consumerRtpParameters.codecs[0]).toEqual( { - mimeType : 'video/H264', - payloadType : 101, - clockRate : 90000, - rtcpFeedback : + mimeType : 'video/H264', + payloadType : 101, + clockRate : 90000, + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'pli' }, { type: 'foo', parameter: 'FOO' } ], - parameters : + parameters: { - foo : 1234, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + foo : 1234, + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' } }); expect(consumerRtpParameters.codecs[1]).toEqual( { - mimeType : 'video/rtx', - payloadType : 102, - clockRate : 90000, - rtcpFeedback : [], - parameters : + mimeType : 'video/rtx', + payloadType : 102, + clockRate : 90000, + rtcpFeedback: [], + parameters : { - apt : 101 + apt: 101 } }); @@ -481,20 +481,20 @@ test('getProducerRtpParametersMapping(), getConsumableRtpParameters(), getConsum expect(consumerRtpParameters.headerExtensions).toEqual( [ { - uri : 'urn:3gpp:video-orientation', - id : 11 + uri: 'urn:3gpp:video-orientation', + id : 11 }, { - uri : 'urn:ietf:params:rtp-hdrext:toffset', - id : 12 + uri: 'urn:ietf:params:rtp-hdrext:toffset', + id : 12 } ]); expect(consumerRtpParameters.rtcp).toEqual( { - cname : rtpParameters.rtcp.cname, - reducedSize : true, - mux : true + cname : rtpParameters.rtcp.cname, + reducedSize: true, + mux : true }); const pipeConsumerRtpParameters = @@ -503,19 +503,19 @@ test('getProducerRtpParametersMapping(), getConsumableRtpParameters(), getConsum expect(pipeConsumerRtpParameters.codecs.length).toEqual(1); expect(pipeConsumerRtpParameters.codecs[0]).toEqual( { - mimeType : 'video/H264', - payloadType : 101, - clockRate : 90000, - rtcpFeedback : + mimeType : 'video/H264', + payloadType : 101, + clockRate : 90000, + rtcpFeedback: [ { type: 'nack', parameter: 'pli' }, { type: 'ccm', parameter: 'fir' } ], - parameters : + parameters: { - foo : 1234, - 'packetization-mode' : 1, - 'profile-level-id' : '4d0032' + foo : 1234, + 'packetization-mode': 1, + 'profile-level-id' : '4d0032' } }); @@ -535,9 +535,9 @@ test('getProducerRtpParametersMapping(), getConsumableRtpParameters(), getConsum expect(pipeConsumerRtpParameters.rtcp).toEqual( { - cname : rtpParameters.rtcp.cname, - reducedSize : true, - mux : true + cname : rtpParameters.rtcp.cname, + reducedSize: true, + mux : true }); }); @@ -546,19 +546,19 @@ test('getProducerRtpParametersMapping() with incompatible params throws Unsuppor const mediaCodecs = [ { - kind : 'audio', - mimeType : 'audio/opus', - clockRate : 48000, - channels : 2 + kind : 'audio', + mimeType : 'audio/opus', + clockRate: 48000, + channels : 2 }, { - kind : 'video', - mimeType : 'video/H264', - clockRate : 90000, - parameters : + kind : 'video', + mimeType : 'video/H264', + clockRate : 90000, + parameters: { - 'packetization-mode' : 1, - 'profile-level-id' : '640032' + 'packetization-mode': 1, + 'profile-level-id' : '640032' } } ]; @@ -567,27 +567,27 @@ test('getProducerRtpParametersMapping() with incompatible params throws Unsuppor const rtpParameters = { - codecs : + codecs: [ { - mimeType : 'video/VP8', - payloadType : 120, - clockRate : 90000, - rtcpFeedback : + mimeType : 'video/VP8', + payloadType : 120, + clockRate : 90000, + rtcpFeedback: [ { type: 'nack' }, { type: 'nack', parameter: 'fir' } ] } ], - headerExtensions : [], - encodings : + headerExtensions: [], + encodings : [ { ssrc: 11111111 } ], - rtcp : + rtcp: { - cname : 'qwerty1234' + cname: 'qwerty1234' } };