diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..4c551675 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# EditorConfig is awesome: https://editorconfig.org + +root = true + +[*] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{ts,js,mjs}] +indent_style = tab + +[*.json] +indent_style = tab diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index c07404bc..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,182 +0,0 @@ -const eslintConfig = { - env: { - es6: true, - node: true, - browser: false, - }, - plugins: ['prettier'], - settings: {}, - parserOptions: { - ecmaVersion: 2022, - sourceType: 'module', - ecmaFeatures: { - impliedStrict: true, - }, - lib: ['es2022'], - }, - globals: { - NodeJS: 'readonly', - }, - extends: ['eslint:recommended', 'plugin:prettier/recommended'], - rules: { - 'prettier/prettier': 2, - 'constructor-super': 2, - curly: [2, 'all'], - // Unfortunatelly `curly` does not apply to blocks in `switch` cases so - // this is needed. - 'no-restricted-syntax': [ - 2, - { - selector: 'SwitchCase > *.consequent[type!="BlockStatement"]', - message: 'Switch cases without blocks are disallowed', - }, - ], - 'guard-for-in': 2, - 'newline-after-var': 2, - 'newline-before-return': 2, - 'no-alert': 2, - 'no-caller': 2, - 'no-case-declarations': 2, - 'no-catch-shadow': 2, - 'no-class-assign': 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-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-multi-str': 2, - '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-sparse-arrays': 2, - 'no-this-before-super': 2, - 'no-throw-literal': 2, - 'no-undef': 2, - 'no-unmodified-loop-condition': 2, - 'no-unreachable': 2, - 'no-unused-vars': [1, { vars: 'all', args: 'after-used' }], - 'no-use-before-define': 0, - 'no-useless-call': 2, - 'no-useless-computed-key': 2, - 'no-useless-concat': 2, - 'no-useless-rename': 2, - 'no-var': 2, - 'object-curly-newline': 0, - 'prefer-const': 2, - 'prefer-rest-params': 2, - 'prefer-spread': 2, - 'prefer-template': 2, - 'spaced-comment': [2, 'always'], - strict: 2, - 'valid-typeof': 2, - yoda: 2, - }, - overrides: [], -}; - -const tsRules = { - 'no-unused-vars': 0, - '@typescript-eslint/ban-types': 0, - '@typescript-eslint/ban-ts-comment': 0, - '@typescript-eslint/ban-ts-ignore': 0, - '@typescript-eslint/explicit-module-boundary-types': 0, - '@typescript-eslint/semi': 2, - '@typescript-eslint/member-delimiter-style': [ - 2, - { - multiline: { delimiter: 'semi', requireLast: true }, - singleline: { delimiter: 'semi', requireLast: false }, - }, - ], - '@typescript-eslint/no-explicit-any': 0, - '@typescript-eslint/no-unused-vars': [ - 2, - { - vars: 'all', - args: 'after-used', - ignoreRestSiblings: false, - }, - ], - '@typescript-eslint/no-use-before-define': [ - 2, - { functions: false, classes: false }, - ], - '@typescript-eslint/no-empty-function': 0, - '@typescript-eslint/no-non-null-assertion': 0, -}; - -eslintConfig.overrides.push({ - files: ['*.ts'], - parser: '@typescript-eslint/parser', - parserOptions: { - ...eslintConfig.parserOptions, - project: 'tsconfig.json', - }, - plugins: [...eslintConfig.plugins, '@typescript-eslint'], - extends: [ - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - ...eslintConfig.extends, - ], - rules: { ...eslintConfig.rules, ...tsRules }, -}); - -eslintConfig.overrides.push({ - files: ['src/test/**/*.ts'], - parserOptions: { - ...eslintConfig.parserOptions, - project: 'tsconfig.json', - }, - env: { - ...eslintConfig.env, - 'jest/globals': true, - }, - extends: [ - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - ...eslintConfig.extends, - ], - plugins: [...eslintConfig.plugins, '@typescript-eslint', 'jest'], - rules: { - ...eslintConfig.rules, - ...tsRules, - 'jest/no-disabled-tests': 2, - }, -}); - -module.exports = eslintConfig; diff --git a/.github/workflows/rtp.js.yaml b/.github/workflows/rtp.js.yaml index 956716c9..c0b2bdbc 100644 --- a/.github/workflows/rtp.js.yaml +++ b/.github/workflows/rtp.js.yaml @@ -56,3 +56,6 @@ jobs: - name: npm run test run: npm run test + + - name: npm run docs:check + run: npm run docs:check diff --git a/.prettierrc.json b/.prettierrc.json index 7cae653b..a824e542 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -5,6 +5,6 @@ "bracketSpacing": true, "semi": true, "singleQuote": true, - "trailingComma": "all", + "trailingComma": "es5", "endOfLine": "auto" } diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js deleted file mode 100644 index 91f83a4d..00000000 --- a/docs/assets/navigation.js +++ /dev/null @@ -1 +0,0 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE52ZW1PbMBBG/4ufmbYw9MYbAdppB1ImSTOdYXhw7CXR4FslmZJ2+t9rx/giS9pd9y0kR+eT1het8d2fQMOzDs6CIoweQavgqPqkd9UXaR6XCajXLz+82uk0qX59FFkcnJ0cBdFOJLGELDi76yRXzxqyGOIFFLnUq30BvQ+yMu1tNmkGfPh71Flv1SeAeFONvAGlwi1gYifsdy90VNwehmJSk8JsxWFhSuQZ7jM51Dhh8W7ab1/GoL5oSDHnkPGbZntoCtRroiRUanACdYhpOT4Zei7ytMjLLKZkJocZLxMpzbPNb7VZ1CwTYJstFjNfRRlXbKGElypsh6Cel8SvQmuQTa4izf5BnCyyEOwqtJcINWGTw4yfIQMpIu5UnTjDz524E2f4mV7adz3hyrBZzDxnLH/OWjNlYRgSQUpaBPVIzS2WhWLeBUQgntpLjZqqi6bsha42MGrOIxB1Foosac+gJn5NLRT1dp0AIuwY3MQQMTz1/nyxK7NHv6dDKA81oZ5BTXUtmWedzeJmKcJE/A43CWDOnkJt9PW75Fy/y2r+P0lTD6EuxT1txyRmXadc65jErD8kteiWwCxdW3hZpkWv0lW76egda2j0KPLm4/vjtyfeHhLT2iTltjtEzO+mORnLcjM+VLa6g0ijtceis3bSVIbViGIRTpiRQB9SAyKN/pYUzcCHcVObgaN7tztpgE6zc5bBPwJmR4m5bZJyO5tiLMI7gJnEX4x3ADOJncA3210zpnfTVMacVZz5pIrQvgmudnNGdUOINI5bQdTsgqkEV5eNhfh4Ts6g6aYiRihp73pwVGxQpHNK7Z0wmdD15ajaoGhn/5+8m7AoRLb1iy2UYedMeMJ8u0cBzGhAHCM9SZMindZTAep20nRG/5SA202O9HLuSsspd6XBowPqNDHSqviXm4ul/TI6L2ORX8MTJN2Z749w4lTKWsSQf5MCMh3W9zAyxzuATEr59XKxlL99VsK8Q4byRRJCPdr1Z0KvIdK5HDWdD2UW1cXok+jRZv67UyJ6UWbXkG317r+izdFkdN2T1O8s6JiWRJRC1VsCpmoIQkEaMEERSjUqCVlH3xgqhlM8A0SEcrDnfZdilZtvmmyxcwASoEUKN2qVn29UvQ2sqj8xvQO35PcDfalF4ngnevia9UY0lDLcz8qHB5CrfJ7H0Hx2zbGRegYgJTBGLLU0WhBU38CIOg51uBbwizd1F82SU5Mek4h0C7phZnsNzS3D73XAiDrrFlWdP30Z/XrPAGbE5cuief6WxuRlumGKRyQurR9cD8tjqh08ekuKV/lpfYCU3zqAEJU6HGvOLMek4x5x/w/P/29jOyEAAA==" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js deleted file mode 100644 index 78e35a74..00000000 --- a/docs/assets/search.js +++ /dev/null @@ -1 +0,0 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css deleted file mode 100644 index 98a43779..00000000 --- a/docs/assets/style.css +++ /dev/null @@ -1,1414 +0,0 @@ -:root { - /* Light */ - --light-color-background: #f2f4f8; - --light-color-background-secondary: #eff0f1; - --light-color-warning-text: #222; - --light-color-background-warning: #e6e600; - --light-color-icon-background: var(--light-color-background); - --light-color-accent: #c5c7c9; - --light-color-active-menu-item: var(--light-color-accent); - --light-color-text: #222; - --light-color-text-aside: #6e6e6e; - --light-color-link: #1f70c2; - - --light-color-ts-keyword: #056bd6; - --light-color-ts-project: #b111c9; - --light-color-ts-module: var(--light-color-ts-project); - --light-color-ts-namespace: var(--light-color-ts-project); - --light-color-ts-enum: #7e6f15; - --light-color-ts-enum-member: var(--light-color-ts-enum); - --light-color-ts-variable: #4760ec; - --light-color-ts-function: #572be7; - --light-color-ts-class: #1f70c2; - --light-color-ts-interface: #108024; - --light-color-ts-constructor: var(--light-color-ts-class); - --light-color-ts-property: var(--light-color-ts-variable); - --light-color-ts-method: var(--light-color-ts-function); - --light-color-ts-call-signature: var(--light-color-ts-method); - --light-color-ts-index-signature: var(--light-color-ts-property); - --light-color-ts-constructor-signature: var(--light-color-ts-constructor); - --light-color-ts-parameter: var(--light-color-ts-variable); - /* type literal not included as links will never be generated to it */ - --light-color-ts-type-parameter: #a55c0e; - --light-color-ts-accessor: var(--light-color-ts-property); - --light-color-ts-get-signature: var(--light-color-ts-accessor); - --light-color-ts-set-signature: var(--light-color-ts-accessor); - --light-color-ts-type-alias: #d51270; - /* reference not included as links will be colored with the kind that it points to */ - - --light-external-icon: url("data:image/svg+xml;utf8,"); - --light-color-scheme: light; - - /* Dark */ - --dark-color-background: #2b2e33; - --dark-color-background-secondary: #1e2024; - --dark-color-background-warning: #bebe00; - --dark-color-warning-text: #222; - --dark-color-icon-background: var(--dark-color-background-secondary); - --dark-color-accent: #9096a2; - --dark-color-active-menu-item: #5d5d6a; - --dark-color-text: #f5f5f5; - --dark-color-text-aside: #dddddd; - --dark-color-link: #00aff4; - - --dark-color-ts-keyword: #3399ff; - --dark-color-ts-project: #e358ff; - --dark-color-ts-module: var(--dark-color-ts-project); - --dark-color-ts-namespace: var(--dark-color-ts-project); - --dark-color-ts-enum: #f4d93e; - --dark-color-ts-enum-member: var(--dark-color-ts-enum); - --dark-color-ts-variable: #798dff; - --dark-color-ts-function: #a280ff; - --dark-color-ts-class: #8ac4ff; - --dark-color-ts-interface: #6cff87; - --dark-color-ts-constructor: var(--dark-color-ts-class); - --dark-color-ts-property: var(--dark-color-ts-variable); - --dark-color-ts-method: var(--dark-color-ts-function); - --dark-color-ts-call-signature: var(--dark-color-ts-method); - --dark-color-ts-index-signature: var(--dark-color-ts-property); - --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); - --dark-color-ts-parameter: var(--dark-color-ts-variable); - /* type literal not included as links will never be generated to it */ - --dark-color-ts-type-parameter: #e07d13; - --dark-color-ts-accessor: var(--dark-color-ts-property); - --dark-color-ts-get-signature: var(--dark-color-ts-accessor); - --dark-color-ts-set-signature: var(--dark-color-ts-accessor); - --dark-color-ts-type-alias: #ff6492; - /* reference not included as links will be colored with the kind that it points to */ - - --dark-external-icon: url("data:image/svg+xml;utf8,"); - --dark-color-scheme: dark; -} - -@media (prefers-color-scheme: light) { - :root { - --color-background: var(--light-color-background); - --color-background-secondary: var(--light-color-background-secondary); - --color-background-warning: var(--light-color-background-warning); - --color-warning-text: var(--light-color-warning-text); - --color-icon-background: var(--light-color-icon-background); - --color-accent: var(--light-color-accent); - --color-active-menu-item: var(--light-color-active-menu-item); - --color-text: var(--light-color-text); - --color-text-aside: var(--light-color-text-aside); - --color-link: var(--light-color-link); - - --color-ts-keyword: var(--light-color-ts-keyword); - --color-ts-module: var(--light-color-ts-module); - --color-ts-namespace: var(--light-color-ts-namespace); - --color-ts-enum: var(--light-color-ts-enum); - --color-ts-enum-member: var(--light-color-ts-enum-member); - --color-ts-variable: var(--light-color-ts-variable); - --color-ts-function: var(--light-color-ts-function); - --color-ts-class: var(--light-color-ts-class); - --color-ts-interface: var(--light-color-ts-interface); - --color-ts-constructor: var(--light-color-ts-constructor); - --color-ts-property: var(--light-color-ts-property); - --color-ts-method: var(--light-color-ts-method); - --color-ts-call-signature: var(--light-color-ts-call-signature); - --color-ts-index-signature: var(--light-color-ts-index-signature); - --color-ts-constructor-signature: var( - --light-color-ts-constructor-signature - ); - --color-ts-parameter: var(--light-color-ts-parameter); - --color-ts-type-parameter: var(--light-color-ts-type-parameter); - --color-ts-accessor: var(--light-color-ts-accessor); - --color-ts-get-signature: var(--light-color-ts-get-signature); - --color-ts-set-signature: var(--light-color-ts-set-signature); - --color-ts-type-alias: var(--light-color-ts-type-alias); - - --external-icon: var(--light-external-icon); - --color-scheme: var(--light-color-scheme); - } -} - -@media (prefers-color-scheme: dark) { - :root { - --color-background: var(--dark-color-background); - --color-background-secondary: var(--dark-color-background-secondary); - --color-background-warning: var(--dark-color-background-warning); - --color-warning-text: var(--dark-color-warning-text); - --color-icon-background: var(--dark-color-icon-background); - --color-accent: var(--dark-color-accent); - --color-active-menu-item: var(--dark-color-active-menu-item); - --color-text: var(--dark-color-text); - --color-text-aside: var(--dark-color-text-aside); - --color-link: var(--dark-color-link); - - --color-ts-keyword: var(--dark-color-ts-keyword); - --color-ts-module: var(--dark-color-ts-module); - --color-ts-namespace: var(--dark-color-ts-namespace); - --color-ts-enum: var(--dark-color-ts-enum); - --color-ts-enum-member: var(--dark-color-ts-enum-member); - --color-ts-variable: var(--dark-color-ts-variable); - --color-ts-function: var(--dark-color-ts-function); - --color-ts-class: var(--dark-color-ts-class); - --color-ts-interface: var(--dark-color-ts-interface); - --color-ts-constructor: var(--dark-color-ts-constructor); - --color-ts-property: var(--dark-color-ts-property); - --color-ts-method: var(--dark-color-ts-method); - --color-ts-call-signature: var(--dark-color-ts-call-signature); - --color-ts-index-signature: var(--dark-color-ts-index-signature); - --color-ts-constructor-signature: var( - --dark-color-ts-constructor-signature - ); - --color-ts-parameter: var(--dark-color-ts-parameter); - --color-ts-type-parameter: var(--dark-color-ts-type-parameter); - --color-ts-accessor: var(--dark-color-ts-accessor); - --color-ts-get-signature: var(--dark-color-ts-get-signature); - --color-ts-set-signature: var(--dark-color-ts-set-signature); - --color-ts-type-alias: var(--dark-color-ts-type-alias); - - --external-icon: var(--dark-external-icon); - --color-scheme: var(--dark-color-scheme); - } -} - -html { - color-scheme: var(--color-scheme); -} - -body { - margin: 0; -} - -:root[data-theme="light"] { - --color-background: var(--light-color-background); - --color-background-secondary: var(--light-color-background-secondary); - --color-background-warning: var(--light-color-background-warning); - --color-warning-text: var(--light-color-warning-text); - --color-icon-background: var(--light-color-icon-background); - --color-accent: var(--light-color-accent); - --color-active-menu-item: var(--light-color-active-menu-item); - --color-text: var(--light-color-text); - --color-text-aside: var(--light-color-text-aside); - --color-link: var(--light-color-link); - - --color-ts-keyword: var(--light-color-ts-keyword); - --color-ts-module: var(--light-color-ts-module); - --color-ts-namespace: var(--light-color-ts-namespace); - --color-ts-enum: var(--light-color-ts-enum); - --color-ts-enum-member: var(--light-color-ts-enum-member); - --color-ts-variable: var(--light-color-ts-variable); - --color-ts-function: var(--light-color-ts-function); - --color-ts-class: var(--light-color-ts-class); - --color-ts-interface: var(--light-color-ts-interface); - --color-ts-constructor: var(--light-color-ts-constructor); - --color-ts-property: var(--light-color-ts-property); - --color-ts-method: var(--light-color-ts-method); - --color-ts-call-signature: var(--light-color-ts-call-signature); - --color-ts-index-signature: var(--light-color-ts-index-signature); - --color-ts-constructor-signature: var( - --light-color-ts-constructor-signature - ); - --color-ts-parameter: var(--light-color-ts-parameter); - --color-ts-type-parameter: var(--light-color-ts-type-parameter); - --color-ts-accessor: var(--light-color-ts-accessor); - --color-ts-get-signature: var(--light-color-ts-get-signature); - --color-ts-set-signature: var(--light-color-ts-set-signature); - --color-ts-type-alias: var(--light-color-ts-type-alias); - - --external-icon: var(--light-external-icon); - --color-scheme: var(--light-color-scheme); -} - -:root[data-theme="dark"] { - --color-background: var(--dark-color-background); - --color-background-secondary: var(--dark-color-background-secondary); - --color-background-warning: var(--dark-color-background-warning); - --color-warning-text: var(--dark-color-warning-text); - --color-icon-background: var(--dark-color-icon-background); - --color-accent: var(--dark-color-accent); - --color-active-menu-item: var(--dark-color-active-menu-item); - --color-text: var(--dark-color-text); - --color-text-aside: var(--dark-color-text-aside); - --color-link: var(--dark-color-link); - - --color-ts-keyword: var(--dark-color-ts-keyword); - --color-ts-module: var(--dark-color-ts-module); - --color-ts-namespace: var(--dark-color-ts-namespace); - --color-ts-enum: var(--dark-color-ts-enum); - --color-ts-enum-member: var(--dark-color-ts-enum-member); - --color-ts-variable: var(--dark-color-ts-variable); - --color-ts-function: var(--dark-color-ts-function); - --color-ts-class: var(--dark-color-ts-class); - --color-ts-interface: var(--dark-color-ts-interface); - --color-ts-constructor: var(--dark-color-ts-constructor); - --color-ts-property: var(--dark-color-ts-property); - --color-ts-method: var(--dark-color-ts-method); - --color-ts-call-signature: var(--dark-color-ts-call-signature); - --color-ts-index-signature: var(--dark-color-ts-index-signature); - --color-ts-constructor-signature: var( - --dark-color-ts-constructor-signature - ); - --color-ts-parameter: var(--dark-color-ts-parameter); - --color-ts-type-parameter: var(--dark-color-ts-type-parameter); - --color-ts-accessor: var(--dark-color-ts-accessor); - --color-ts-get-signature: var(--dark-color-ts-get-signature); - --color-ts-set-signature: var(--dark-color-ts-set-signature); - --color-ts-type-alias: var(--dark-color-ts-type-alias); - - --external-icon: var(--dark-external-icon); - --color-scheme: var(--dark-color-scheme); -} - -.always-visible, -.always-visible .tsd-signatures { - display: inherit !important; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - line-height: 1.2; -} - -h1 > a:not(.link), -h2 > a:not(.link), -h3 > a:not(.link), -h4 > a:not(.link), -h5 > a:not(.link), -h6 > a:not(.link) { - text-decoration: none; - color: var(--color-text); -} - -h1 { - font-size: 1.875rem; - margin: 0.67rem 0; -} - -h2 { - font-size: 1.5rem; - margin: 0.83rem 0; -} - -h3 { - font-size: 1.25rem; - margin: 1rem 0; -} - -h4 { - font-size: 1.05rem; - margin: 1.33rem 0; -} - -h5 { - font-size: 1rem; - margin: 1.5rem 0; -} - -h6 { - font-size: 0.875rem; - margin: 2.33rem 0; -} - -.uppercase { - text-transform: uppercase; -} - -dl, -menu, -ol, -ul { - margin: 1em 0; -} - -dd { - margin: 0 0 0 40px; -} - -.container { - max-width: 1700px; - padding: 0 2rem; -} - -/* Footer */ -.tsd-generator { - border-top: 1px solid var(--color-accent); - padding-top: 1rem; - padding-bottom: 1rem; - max-height: 3.5rem; -} - -.tsd-generator > p { - margin-top: 0; - margin-bottom: 0; - padding: 0 1rem; -} - -.container-main { - margin: 0 auto; - /* toolbar, footer, margin */ - min-height: calc(100vh - 41px - 56px - 4rem); -} - -@keyframes fade-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes fade-out { - from { - opacity: 1; - visibility: visible; - } - to { - opacity: 0; - } -} -@keyframes fade-in-delayed { - 0% { - opacity: 0; - } - 33% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@keyframes fade-out-delayed { - 0% { - opacity: 1; - visibility: visible; - } - 66% { - opacity: 0; - } - 100% { - opacity: 0; - } -} -@keyframes pop-in-from-right { - from { - transform: translate(100%, 0); - } - to { - transform: translate(0, 0); - } -} -@keyframes pop-out-to-right { - from { - transform: translate(0, 0); - visibility: visible; - } - to { - transform: translate(100%, 0); - } -} -body { - background: var(--color-background); - font-family: "Segoe UI", sans-serif; - font-size: 16px; - color: var(--color-text); -} - -a { - color: var(--color-link); - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -a.external[target="_blank"] { - background-image: var(--external-icon); - background-position: top 3px right; - background-repeat: no-repeat; - padding-right: 13px; -} - -code, -pre { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - padding: 0.2em; - margin: 0; - font-size: 0.875rem; - border-radius: 0.8em; -} - -pre { - position: relative; - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; - padding: 10px; - border: 1px solid var(--color-accent); -} -pre code { - padding: 0; - font-size: 100%; -} -pre > button { - position: absolute; - top: 10px; - right: 10px; - opacity: 0; - transition: opacity 0.1s; - box-sizing: border-box; -} -pre:hover > button, -pre > button.visible { - opacity: 1; -} - -blockquote { - margin: 1em 0; - padding-left: 1em; - border-left: 4px solid gray; -} - -.tsd-typography { - line-height: 1.333em; -} -.tsd-typography ul { - list-style: square; - padding: 0 0 0 20px; - margin: 0; -} -.tsd-typography .tsd-index-panel h3, -.tsd-index-panel .tsd-typography h3, -.tsd-typography h4, -.tsd-typography h5, -.tsd-typography h6 { - font-size: 1em; -} -.tsd-typography h5, -.tsd-typography h6 { - font-weight: normal; -} -.tsd-typography p, -.tsd-typography ul, -.tsd-typography ol { - margin: 1em 0; -} -.tsd-typography table { - border-collapse: collapse; - border: none; -} -.tsd-typography td, -.tsd-typography th { - padding: 6px 13px; - border: 1px solid var(--color-accent); -} -.tsd-typography thead, -.tsd-typography tr:nth-child(even) { - background-color: var(--color-background-secondary); -} - -.tsd-breadcrumb { - margin: 0; - padding: 0; - color: var(--color-text-aside); -} -.tsd-breadcrumb a { - color: var(--color-text-aside); - text-decoration: none; -} -.tsd-breadcrumb a:hover { - text-decoration: underline; -} -.tsd-breadcrumb li { - display: inline; -} -.tsd-breadcrumb li:after { - content: " / "; -} - -.tsd-comment-tags { - display: flex; - flex-direction: column; -} -dl.tsd-comment-tag-group { - display: flex; - align-items: center; - overflow: hidden; - margin: 0.5em 0; -} -dl.tsd-comment-tag-group dt { - display: flex; - margin-right: 0.5em; - font-size: 0.875em; - font-weight: normal; -} -dl.tsd-comment-tag-group dd { - margin: 0; -} -code.tsd-tag { - padding: 0.25em 0.4em; - border: 0.1em solid var(--color-accent); - margin-right: 0.25em; - font-size: 70%; -} -h1 code.tsd-tag:first-of-type { - margin-left: 0.25em; -} - -dl.tsd-comment-tag-group dd:before, -dl.tsd-comment-tag-group dd:after { - content: " "; -} -dl.tsd-comment-tag-group dd pre, -dl.tsd-comment-tag-group dd:after { - clear: both; -} -dl.tsd-comment-tag-group p { - margin: 0; -} - -.tsd-panel.tsd-comment .lead { - font-size: 1.1em; - line-height: 1.333em; - margin-bottom: 2em; -} -.tsd-panel.tsd-comment .lead:last-child { - margin-bottom: 0; -} - -.tsd-filter-visibility h4 { - font-size: 1rem; - padding-top: 0.75rem; - padding-bottom: 0.5rem; - margin: 0; -} -.tsd-filter-item:not(:last-child) { - margin-bottom: 0.5rem; -} -.tsd-filter-input { - display: flex; - width: fit-content; - width: -moz-fit-content; - align-items: center; - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - cursor: pointer; -} -.tsd-filter-input input[type="checkbox"] { - cursor: pointer; - position: absolute; - width: 1.5em; - height: 1.5em; - opacity: 0; -} -.tsd-filter-input input[type="checkbox"]:disabled { - pointer-events: none; -} -.tsd-filter-input svg { - cursor: pointer; - width: 1.5em; - height: 1.5em; - margin-right: 0.5em; - border-radius: 0.33em; - /* Leaving this at full opacity breaks event listeners on Firefox. - Don't remove unless you know what you're doing. */ - opacity: 0.99; -} -.tsd-filter-input input[type="checkbox"]:focus + svg { - transform: scale(0.95); -} -.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { - transform: scale(1); -} -.tsd-checkbox-background { - fill: var(--color-accent); -} -input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { - stroke: var(--color-text); -} -.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { - fill: var(--color-background); - stroke: var(--color-accent); - stroke-width: 0.25rem; -} -.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { - stroke: var(--color-accent); -} - -.tsd-theme-toggle { - padding-top: 0.75rem; -} -.tsd-theme-toggle > h4 { - display: inline; - vertical-align: middle; - margin-right: 0.75rem; -} - -.tsd-hierarchy { - list-style: square; - margin: 0; -} -.tsd-hierarchy .target { - font-weight: bold; -} - -.tsd-full-hierarchy:not(:last-child) { - margin-bottom: 1em; - padding-bottom: 1em; - border-bottom: 1px solid var(--color-accent); -} -.tsd-full-hierarchy, -.tsd-full-hierarchy ul { - list-style: none; - margin: 0; - padding: 0; -} -.tsd-full-hierarchy ul { - padding-left: 1.5rem; -} -.tsd-full-hierarchy a { - padding: 0.25rem 0 !important; - font-size: 1rem; - display: inline-flex; - align-items: center; - color: var(--color-text); -} - -.tsd-panel-group.tsd-index-group { - margin-bottom: 0; -} -.tsd-index-panel .tsd-index-list { - list-style: none; - line-height: 1.333em; - margin: 0; - padding: 0.25rem 0 0 0; - overflow: hidden; - display: grid; - grid-template-columns: repeat(3, 1fr); - column-gap: 1rem; - grid-template-rows: auto; -} -@media (max-width: 1024px) { - .tsd-index-panel .tsd-index-list { - grid-template-columns: repeat(2, 1fr); - } -} -@media (max-width: 768px) { - .tsd-index-panel .tsd-index-list { - grid-template-columns: repeat(1, 1fr); - } -} -.tsd-index-panel .tsd-index-list li { - -webkit-page-break-inside: avoid; - -moz-page-break-inside: avoid; - -ms-page-break-inside: avoid; - -o-page-break-inside: avoid; - page-break-inside: avoid; -} - -.tsd-flag { - display: inline-block; - padding: 0.25em 0.4em; - border-radius: 4px; - color: var(--color-comment-tag-text); - background-color: var(--color-comment-tag); - text-indent: 0; - font-size: 75%; - line-height: 1; - font-weight: normal; -} - -.tsd-anchor { - position: relative; - top: -100px; -} - -.tsd-member { - position: relative; -} -.tsd-member .tsd-anchor + h3 { - display: flex; - align-items: center; - margin-top: 0; - margin-bottom: 0; - border-bottom: none; -} - -.tsd-navigation.settings { - margin: 1rem 0; -} -.tsd-navigation > a, -.tsd-navigation .tsd-accordion-summary { - width: calc(100% - 0.25rem); - display: flex; - align-items: center; -} -.tsd-navigation a, -.tsd-navigation summary > span, -.tsd-page-navigation a { - display: flex; - width: calc(100% - 0.25rem); - align-items: center; - padding: 0.25rem; - color: var(--color-text); - text-decoration: none; - box-sizing: border-box; -} -.tsd-navigation a.current, -.tsd-page-navigation a.current { - background: var(--color-active-menu-item); -} -.tsd-navigation a:hover, -.tsd-page-navigation a:hover { - text-decoration: underline; -} -.tsd-navigation ul, -.tsd-page-navigation ul { - margin-top: 0; - margin-bottom: 0; - padding: 0; - list-style: none; -} -.tsd-navigation li, -.tsd-page-navigation li { - padding: 0; - max-width: 100%; -} -.tsd-nested-navigation { - margin-left: 3rem; -} -.tsd-nested-navigation > li > details { - margin-left: -1.5rem; -} -.tsd-small-nested-navigation { - margin-left: 1.5rem; -} -.tsd-small-nested-navigation > li > details { - margin-left: -1.5rem; -} - -.tsd-page-navigation ul { - padding-left: 1.75rem; -} - -#tsd-sidebar-links a { - margin-top: 0; - margin-bottom: 0.5rem; - line-height: 1.25rem; -} -#tsd-sidebar-links a:last-of-type { - margin-bottom: 0; -} - -a.tsd-index-link { - padding: 0.25rem 0 !important; - font-size: 1rem; - line-height: 1.25rem; - display: inline-flex; - align-items: center; - color: var(--color-text); -} -.tsd-accordion-summary { - list-style-type: none; /* hide marker on non-safari */ - outline: none; /* broken on safari, so just hide it */ -} -.tsd-accordion-summary::-webkit-details-marker { - display: none; /* hide marker on safari */ -} -.tsd-accordion-summary, -.tsd-accordion-summary a { - user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - - cursor: pointer; -} -.tsd-accordion-summary a { - width: calc(100% - 1.5rem); -} -.tsd-accordion-summary > * { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; -} -.tsd-index-accordion .tsd-accordion-summary > svg { - margin-left: 0.25rem; -} -.tsd-index-content > :not(:first-child) { - margin-top: 0.75rem; -} -.tsd-index-heading { - margin-top: 1.5rem; - margin-bottom: 0.75rem; -} - -.tsd-kind-icon { - margin-right: 0.5rem; - width: 1.25rem; - height: 1.25rem; - min-width: 1.25rem; - min-height: 1.25rem; -} -.tsd-kind-icon path { - transform-origin: center; - transform: scale(1.1); -} -.tsd-signature > .tsd-kind-icon { - margin-right: 0.8rem; -} - -.tsd-panel { - margin-bottom: 2.5rem; -} -.tsd-panel.tsd-member { - margin-bottom: 4rem; -} -.tsd-panel:empty { - display: none; -} -.tsd-panel > h1, -.tsd-panel > h2, -.tsd-panel > h3 { - margin: 1.5rem -1.5rem 0.75rem -1.5rem; - padding: 0 1.5rem 0.75rem 1.5rem; -} -.tsd-panel > h1.tsd-before-signature, -.tsd-panel > h2.tsd-before-signature, -.tsd-panel > h3.tsd-before-signature { - margin-bottom: 0; - border-bottom: none; -} - -.tsd-panel-group { - margin: 4rem 0; -} -.tsd-panel-group.tsd-index-group { - margin: 2rem 0; -} -.tsd-panel-group.tsd-index-group details { - margin: 2rem 0; -} - -#tsd-search { - transition: background-color 0.2s; -} -#tsd-search .title { - position: relative; - z-index: 2; -} -#tsd-search .field { - position: absolute; - left: 0; - top: 0; - right: 2.5rem; - height: 100%; -} -#tsd-search .field input { - box-sizing: border-box; - position: relative; - top: -50px; - z-index: 1; - width: 100%; - padding: 0 10px; - opacity: 0; - outline: 0; - border: 0; - background: transparent; - color: var(--color-text); -} -#tsd-search .field label { - position: absolute; - overflow: hidden; - right: -40px; -} -#tsd-search .field input, -#tsd-search .title, -#tsd-toolbar-links a { - transition: opacity 0.2s; -} -#tsd-search .results { - position: absolute; - visibility: hidden; - top: 40px; - width: 100%; - margin: 0; - padding: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); -} -#tsd-search .results li { - background-color: var(--color-background); - line-height: initial; - padding: 4px; -} -#tsd-search .results li:nth-child(even) { - background-color: var(--color-background-secondary); -} -#tsd-search .results li.state { - display: none; -} -#tsd-search .results li.current:not(.no-results), -#tsd-search .results li:hover:not(.no-results) { - background-color: var(--color-accent); -} -#tsd-search .results a { - display: flex; - align-items: center; - padding: 0.25rem; - box-sizing: border-box; -} -#tsd-search .results a:before { - top: 10px; -} -#tsd-search .results span.parent { - color: var(--color-text-aside); - font-weight: normal; -} -#tsd-search.has-focus { - background-color: var(--color-accent); -} -#tsd-search.has-focus .field input { - top: 0; - opacity: 1; -} -#tsd-search.has-focus .title, -#tsd-search.has-focus #tsd-toolbar-links a { - z-index: 0; - opacity: 0; -} -#tsd-search.has-focus .results { - visibility: visible; -} -#tsd-search.loading .results li.state.loading { - display: block; -} -#tsd-search.failure .results li.state.failure { - display: block; -} - -#tsd-toolbar-links { - position: absolute; - top: 0; - right: 2rem; - height: 100%; - display: flex; - align-items: center; - justify-content: flex-end; -} -#tsd-toolbar-links a { - margin-left: 1.5rem; -} -#tsd-toolbar-links a:hover { - text-decoration: underline; -} - -.tsd-signature { - margin: 0 0 1rem 0; - padding: 1rem 0.5rem; - border: 1px solid var(--color-accent); - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14px; - overflow-x: auto; -} - -.tsd-signature-keyword { - color: var(--color-ts-keyword); - font-weight: normal; -} - -.tsd-signature-symbol { - color: var(--color-text-aside); - font-weight: normal; -} - -.tsd-signature-type { - font-style: italic; - font-weight: normal; -} - -.tsd-signatures { - padding: 0; - margin: 0 0 1em 0; - list-style-type: none; -} -.tsd-signatures .tsd-signature { - margin: 0; - border-color: var(--color-accent); - border-width: 1px 0; - transition: background-color 0.1s; -} -.tsd-description .tsd-signatures .tsd-signature { - border-width: 1px; -} - -ul.tsd-parameter-list, -ul.tsd-type-parameter-list { - list-style: square; - margin: 0; - padding-left: 20px; -} -ul.tsd-parameter-list > li.tsd-parameter-signature, -ul.tsd-type-parameter-list > li.tsd-parameter-signature { - list-style: none; - margin-left: -20px; -} -ul.tsd-parameter-list h5, -ul.tsd-type-parameter-list h5 { - font-size: 16px; - margin: 1em 0 0.5em 0; -} -.tsd-sources { - margin-top: 1rem; - font-size: 0.875em; -} -.tsd-sources a { - color: var(--color-text-aside); - text-decoration: underline; -} -.tsd-sources ul { - list-style: none; - padding: 0; -} - -.tsd-page-toolbar { - position: sticky; - z-index: 1; - top: 0; - left: 0; - width: 100%; - color: var(--color-text); - background: var(--color-background-secondary); - border-bottom: 1px var(--color-accent) solid; - transition: transform 0.3s ease-in-out; -} -.tsd-page-toolbar a { - color: var(--color-text); - text-decoration: none; -} -.tsd-page-toolbar a.title { - font-weight: bold; -} -.tsd-page-toolbar a.title:hover { - text-decoration: underline; -} -.tsd-page-toolbar .tsd-toolbar-contents { - display: flex; - justify-content: space-between; - height: 2.5rem; - margin: 0 auto; -} -.tsd-page-toolbar .table-cell { - position: relative; - white-space: nowrap; - line-height: 40px; -} -.tsd-page-toolbar .table-cell:first-child { - width: 100%; -} -.tsd-page-toolbar .tsd-toolbar-icon { - box-sizing: border-box; - line-height: 0; - padding: 12px 0; -} - -.tsd-widget { - display: inline-block; - overflow: hidden; - opacity: 0.8; - height: 40px; - transition: - opacity 0.1s, - background-color 0.2s; - vertical-align: bottom; - cursor: pointer; -} -.tsd-widget:hover { - opacity: 0.9; -} -.tsd-widget.active { - opacity: 1; - background-color: var(--color-accent); -} -.tsd-widget.no-caption { - width: 40px; -} -.tsd-widget.no-caption:before { - margin: 0; -} - -.tsd-widget.options, -.tsd-widget.menu { - display: none; -} -input[type="checkbox"] + .tsd-widget:before { - background-position: -120px 0; -} -input[type="checkbox"]:checked + .tsd-widget:before { - background-position: -160px 0; -} - -img { - max-width: 100%; -} - -.tsd-anchor-icon { - display: inline-flex; - align-items: center; - margin-left: 0.5rem; - vertical-align: middle; - color: var(--color-text); -} - -.tsd-anchor-icon svg { - width: 1em; - height: 1em; - visibility: hidden; -} - -.tsd-anchor-link:hover > .tsd-anchor-icon svg { - visibility: visible; -} - -.deprecated { - text-decoration: line-through !important; -} - -.warning { - padding: 1rem; - color: var(--color-warning-text); - background: var(--color-background-warning); -} - -.tsd-kind-project { - color: var(--color-ts-project); -} -.tsd-kind-module { - color: var(--color-ts-module); -} -.tsd-kind-namespace { - color: var(--color-ts-namespace); -} -.tsd-kind-enum { - color: var(--color-ts-enum); -} -.tsd-kind-enum-member { - color: var(--color-ts-enum-member); -} -.tsd-kind-variable { - color: var(--color-ts-variable); -} -.tsd-kind-function { - color: var(--color-ts-function); -} -.tsd-kind-class { - color: var(--color-ts-class); -} -.tsd-kind-interface { - color: var(--color-ts-interface); -} -.tsd-kind-constructor { - color: var(--color-ts-constructor); -} -.tsd-kind-property { - color: var(--color-ts-property); -} -.tsd-kind-method { - color: var(--color-ts-method); -} -.tsd-kind-call-signature { - color: var(--color-ts-call-signature); -} -.tsd-kind-index-signature { - color: var(--color-ts-index-signature); -} -.tsd-kind-constructor-signature { - color: var(--color-ts-constructor-signature); -} -.tsd-kind-parameter { - color: var(--color-ts-parameter); -} -.tsd-kind-type-literal { - color: var(--color-ts-type-literal); -} -.tsd-kind-type-parameter { - color: var(--color-ts-type-parameter); -} -.tsd-kind-accessor { - color: var(--color-ts-accessor); -} -.tsd-kind-get-signature { - color: var(--color-ts-get-signature); -} -.tsd-kind-set-signature { - color: var(--color-ts-set-signature); -} -.tsd-kind-type-alias { - color: var(--color-ts-type-alias); -} - -/* if we have a kind icon, don't color the text by kind */ -.tsd-kind-icon ~ span { - color: var(--color-text); -} - -* { - scrollbar-width: thin; - scrollbar-color: var(--color-accent) var(--color-icon-background); -} - -*::-webkit-scrollbar { - width: 0.75rem; -} - -*::-webkit-scrollbar-track { - background: var(--color-icon-background); -} - -*::-webkit-scrollbar-thumb { - background-color: var(--color-accent); - border-radius: 999rem; - border: 0.25rem solid var(--color-icon-background); -} - -/* mobile */ -@media (max-width: 769px) { - .tsd-widget.options, - .tsd-widget.menu { - display: inline-block; - } - - .container-main { - display: flex; - } - html .col-content { - float: none; - max-width: 100%; - width: 100%; - } - html .col-sidebar { - position: fixed !important; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 1024; - top: 0 !important; - bottom: 0 !important; - left: auto !important; - right: 0 !important; - padding: 1.5rem 1.5rem 0 0; - width: 75vw; - visibility: hidden; - background-color: var(--color-background); - transform: translate(100%, 0); - } - html .col-sidebar > *:last-child { - padding-bottom: 20px; - } - html .overlay { - content: ""; - display: block; - position: fixed; - z-index: 1023; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.75); - visibility: hidden; - } - - .to-has-menu .overlay { - animation: fade-in 0.4s; - } - - .to-has-menu .col-sidebar { - animation: pop-in-from-right 0.4s; - } - - .from-has-menu .overlay { - animation: fade-out 0.4s; - } - - .from-has-menu .col-sidebar { - animation: pop-out-to-right 0.4s; - } - - .has-menu body { - overflow: hidden; - } - .has-menu .overlay { - visibility: visible; - } - .has-menu .col-sidebar { - visibility: visible; - transform: translate(0, 0); - display: flex; - flex-direction: column; - gap: 1.5rem; - max-height: 100vh; - padding: 1rem 2rem; - } - .has-menu .tsd-navigation { - max-height: 100%; - } -} - -/* one sidebar */ -@media (min-width: 770px) { - .container-main { - display: grid; - grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); - grid-template-areas: "sidebar content"; - margin: 2rem auto; - } - - .col-sidebar { - grid-area: sidebar; - } - .col-content { - grid-area: content; - padding: 0 1rem; - } -} -@media (min-width: 770px) and (max-width: 1399px) { - .col-sidebar { - max-height: calc(100vh - 2rem - 42px); - overflow: auto; - position: sticky; - top: 42px; - padding-top: 1rem; - } - .site-menu { - margin-top: 1rem; - } -} - -/* two sidebars */ -@media (min-width: 1200px) { - .container-main { - grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); - grid-template-areas: "sidebar content toc"; - } - - .col-sidebar { - display: contents; - } - - .page-menu { - grid-area: toc; - padding-left: 1rem; - } - .site-menu { - grid-area: sidebar; - } - - .site-menu { - margin-top: 1rem 0; - } - - .page-menu, - .site-menu { - max-height: calc(100vh - 2rem - 42px); - overflow: auto; - position: sticky; - top: 42px; - } -} diff --git a/docs/classes/packets.ByePacket.html b/docs/classes/packets.ByePacket.html deleted file mode 100644 index 4cc7dfd0..00000000 --- a/docs/classes/packets.ByePacket.html +++ /dev/null @@ -1,123 +0,0 @@ -ByePacket | rtp.js - v0.12.0

Class ByePacket

RTCP BYE packet.

-
        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-header |V=2|P|    SC   |   PT=BYE=203  |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                           SSRC/CSRC                           |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       :                              ...                              :
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-(opt)  |     length    |               reason for leaving            ...
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP BYE - packet will be created.

      -

    Returns ByePacket

    Throws

      -
    • If given view does not contain a valid RTCP BYE packet.
    • -
    -

Methods

  • Add SSRC value.

    -

    Parameters

    • ssrc: number

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -
  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns ByePacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -
  • Set SSRC values.

    -

    Parameters

    • ssrcs: number[]

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.CompoundPacket.html b/docs/classes/packets.CompoundPacket.html deleted file mode 100644 index 61a3bf7e..00000000 --- a/docs/classes/packets.CompoundPacket.html +++ /dev/null @@ -1,99 +0,0 @@ -CompoundPacket | rtp.js - v0.12.0

Class CompoundPacket

RTCP Compound packet.

-

See

-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP Compound - packet will be created.

      -

    Returns CompoundPacket

    Throws

      -
    • If given view does not contain a valid RTCP Compound packet.
    • -
    -

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns CompoundPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Return the RtcpPacket entries in this RTCP Compound packet.

    -

    Returns RtcpPacket[]

    Remarks

    -

    Example

    import { packets } from 'rtp.js';
    const { CompoundPacket, RtcpPacketType, SdesPacket } = packets;

    const compoundPacket = new CompoundPacket(view);

    for (const packet of compoundPacket.getPackets())
    {
    switch (packet.getPacketType())
    {
    case RtcpPacketType.SDES:
    {
    const sdesPacket = packet as SdesPacket;

    console.log(sdesPacket.getChunks());

    break;
    }

    // etc.
    }
    } -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.DLRRExtendedReport.html b/docs/classes/packets.DLRRExtendedReport.html deleted file mode 100644 index 2ac68085..00000000 --- a/docs/classes/packets.DLRRExtendedReport.html +++ /dev/null @@ -1,100 +0,0 @@ -DlrrExtendedReport | rtp.js - v0.12.0

Class DlrrExtendedReport

DLRR Extended Report.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     BT=5      |   reserved    |         block length          |
-+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-|                 SSRC_1 (SSRC of first receiver)               | sub-
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block
-|                         last RR (LRR)                         |   1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                   delay since last RR (DLRR)                  |
-+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-|                 SSRC_2 (SSRC of second receiver)              | sub-
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block
-:                               ...                             :   2
-+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns DlrrExtendedReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.DRLEExtendedReport.html b/docs/classes/packets.DRLEExtendedReport.html deleted file mode 100644 index 1829fe43..00000000 --- a/docs/classes/packets.DRLEExtendedReport.html +++ /dev/null @@ -1,131 +0,0 @@ -DrleExtendedReport | rtp.js - v0.12.0

Class DrleExtendedReport

Duplicate RLE Extended Report.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     BT=2      | rsvd. |   T   |         block length          |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                        SSRC of source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|          begin_seq            |             end_seq           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|          chunk 1              |             chunk 2           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-:                              ...                              :
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|          chunk n-1            |             chunk n           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns DrleExtendedReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.ECNExtendedReport.html b/docs/classes/packets.ECNExtendedReport.html deleted file mode 100644 index 6abe66b2..00000000 --- a/docs/classes/packets.ECNExtendedReport.html +++ /dev/null @@ -1,122 +0,0 @@ -EcnExtendedReport | rtp.js - v0.12.0

Class EcnExtendedReport

ECN Summary Extended Report.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     BT=13     |   reserved    |       block length = 5        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| SSRC of Media Sender                                          |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ECT (0) Counter                                               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ECT (1) Counter                                               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ECN-CE Counter                | not-ECT Counter               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Lost Packets Counter          | Duplication Counter           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns EcnExtendedReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.EcnPacket.html b/docs/classes/packets.EcnPacket.html deleted file mode 100644 index c8c605ac..00000000 --- a/docs/classes/packets.EcnPacket.html +++ /dev/null @@ -1,153 +0,0 @@ -EcnPacket | rtp.js - v0.12.0

Class EcnPacket

RTCP ECN packet (RTCP Transport Layer Feedback).

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|V=2|P|  FMT=8  |  PT=RTPFB=205 |          length=7             |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of packet sender                        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of media source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Extended Highest Sequence Number                              |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ECT (0) Counter                                               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ECT (1) Counter                                               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| ECN-CE Counter                | not-ECT Counter               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| Lost Packets Counter          | Duplication Counter           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP ECN - packet will be created.

      -

    Returns EcnPacket

    Throws

      -
    • If given view does not contain a valid RTCP ECN packet.
    • -
    -

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns EcnPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -
  • Set Extended Highest Sequence Number.

    -

    Parameters

    • sequenceNumber: number

    Returns void

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.ExtendedJitterReportsPacket.html b/docs/classes/packets.ExtendedJitterReportsPacket.html deleted file mode 100644 index dc7a72da..00000000 --- a/docs/classes/packets.ExtendedJitterReportsPacket.html +++ /dev/null @@ -1,118 +0,0 @@ -ExtendedJitterReportsPacket | rtp.js - v0.12.0

Class ExtendedJitterReportsPacket

RTCP Extended Jitter Reports packet.

-
        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-header |V=2|P|    RC   |     PT=195    |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     inter-arrival jitter                      |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       :                              ...                              :
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns ExtendedJitterReportsPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.ExtendedReport.html b/docs/classes/packets.ExtendedReport.html deleted file mode 100644 index 95c99f2a..00000000 --- a/docs/classes/packets.ExtendedReport.html +++ /dev/null @@ -1,86 +0,0 @@ -ExtendedReport | rtp.js - v0.12.0

Class ExtendedReportAbstract

Parent class of all XrPacket Extended Reports.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|      BT       | type-specific |         block length          |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-:             type-specific block contents                      :
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns Serializable

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.FeedbackPacket.html b/docs/classes/packets.FeedbackPacket.html deleted file mode 100644 index 76404f2b..00000000 --- a/docs/classes/packets.FeedbackPacket.html +++ /dev/null @@ -1,114 +0,0 @@ -FeedbackPacket | rtp.js - v0.12.0

Class FeedbackPacketAbstract

RTCP Feedback packet.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|V=2|P|   FMT   |       PT      |          length               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of packet sender                        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of media source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-:            Feedback Control Information (FCI)                 :
-:                                                               :
-
-

Hierarchy (view full)

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns Serializable

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.GenericExtendedReport.html b/docs/classes/packets.GenericExtendedReport.html deleted file mode 100644 index bbee249c..00000000 --- a/docs/classes/packets.GenericExtendedReport.html +++ /dev/null @@ -1,105 +0,0 @@ -GenericExtendedReport | rtp.js - v0.12.0

Class GenericExtendedReport

Generic Extended Report.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     BT=???    | type-specific |         block length          |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                             body                              |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-:                              ...                              :
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns GenericExtendedReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.GenericFeedbackPacket.html b/docs/classes/packets.GenericFeedbackPacket.html deleted file mode 100644 index 07b237c9..00000000 --- a/docs/classes/packets.GenericFeedbackPacket.html +++ /dev/null @@ -1,126 +0,0 @@ -GenericFeedbackPacket | rtp.js - v0.12.0

Class GenericFeedbackPacket

RTCP generic Feedback packet.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|V=2|P| FMT=??? |  PT=205|206   |          length               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of packet sender                        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of media source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-:            Feedback Control Information (FCI)                 :
-:                                                               :
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns GenericFeedbackPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.GenericPacket.html b/docs/classes/packets.GenericPacket.html deleted file mode 100644 index 95adf27d..00000000 --- a/docs/classes/packets.GenericPacket.html +++ /dev/null @@ -1,120 +0,0 @@ -GenericPacket | rtp.js - v0.12.0

Class GenericPacket

RTCP generic packet.

-
        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-header |V=2|P|    SC   |   PT=???      |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-body   |                              ...                              |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       :                              ...                              :
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

See

-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP generic - packet will be created.

      -
    • Optional packetType: number

      If view is not given, this parameter must be given.

      -

    Returns GenericPacket

    Throws

      -
    • If given view does not contain a valid RTCP generic packet.
    • -
    -

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns GenericPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -
  • Set the packet body.

    -

    Parameters

    • view: DataView

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -
  • Set the RTCP header count value.

    -

    Parameters

    • count: number

    Returns void

    Remarks

      -
    • This field (the 5 less significant bits in the first byte of the common -RTCP header) can be used for other custom purpose in case the packet -needs it for something else.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.LRLEExtendedReport.html b/docs/classes/packets.LRLEExtendedReport.html deleted file mode 100644 index 87aa7f88..00000000 --- a/docs/classes/packets.LRLEExtendedReport.html +++ /dev/null @@ -1,131 +0,0 @@ -LrleExtendedReport | rtp.js - v0.12.0

Class LrleExtendedReport

Loss RLE Extended Report.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     BT=1      | rsvd. |   T   |         block length          |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                        SSRC of source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|          begin_seq            |             end_seq           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|          chunk 1              |             chunk 2           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-:                              ...                              :
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|          chunk n-1            |             chunk n           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns LrleExtendedReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.NackPacket.html b/docs/classes/packets.NackPacket.html deleted file mode 100644 index 8eb861a6..00000000 --- a/docs/classes/packets.NackPacket.html +++ /dev/null @@ -1,136 +0,0 @@ -NackPacket | rtp.js - v0.12.0

Class NackPacket

RTCP NACK packet (RTCP Transport Layer Feedback).

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|V=2|P|  FMT=1  |  PT=RTPFB=205 |          length               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of packet sender                        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of media source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|            PID                |             BLP               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-:                              ...                              :
-+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP NACK - packet will be created.

      -

    Returns NackPacket

    Throws

      -
    • If given view does not contain a valid RTCP NACK packet.
    • -
    -

Methods

  • Add NACK item value.

    -

    Parameters

    • pid: number
    • bitmask: number

    Returns void

    Remarks

      -
    • Use createNackItem to create the NACK item.
    • -
    • Serialization is needed after calling this method.
    • -
    -
  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns NackPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get NACK items.

    -

    Returns {
        bitmask: number;
        pid: number;
    }[]

    Remarks

    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -
  • Set NACK items.

    -

    Parameters

    • items: {
          bitmask: number;
          pid: number;
      }[]

    Returns void

    Remarks

      -
    • Use createNackItem to create NACK items.
    • -
    • Serialization is needed after calling this method.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.PRTExtendedReport.html b/docs/classes/packets.PRTExtendedReport.html deleted file mode 100644 index 6e1c78ae..00000000 --- a/docs/classes/packets.PRTExtendedReport.html +++ /dev/null @@ -1,127 +0,0 @@ -PrtExtendedReport | rtp.js - v0.12.0

Class PrtExtendedReport

Packet Receipt Times Extended Report.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     BT=3      | rsvd. |   T   |         block length          |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                        SSRC of source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|          begin_seq            |             end_seq           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|       Receipt time of packet begin_seq                        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|       Receipt time of packet (begin_seq + 1) mod 65536        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-:                              ...                              :
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|       Receipt time of packet (end_seq - 1) mod 65536          |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns PrtExtendedReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.Packet.html b/docs/classes/packets.Packet.html deleted file mode 100644 index da3f303a..00000000 --- a/docs/classes/packets.Packet.html +++ /dev/null @@ -1,81 +0,0 @@ -Packet | rtp.js - v0.12.0

Class PacketAbstract

Parent class of all RTP and RTCP packets.

-

Hierarchy (view full)

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns Serializable

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the padding (in bytes) at the end of the packet.

    -

    Returns number

  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.PliPacket.html b/docs/classes/packets.PliPacket.html deleted file mode 100644 index 0dbbd634..00000000 --- a/docs/classes/packets.PliPacket.html +++ /dev/null @@ -1,115 +0,0 @@ -PliPacket | rtp.js - v0.12.0

Class PliPacket

RTCP PLI packet (RTCP Payload Specific Feedback).

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|V=2|P|  FMT=1  |  PT=PSFB=206  |          length=2             |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of packet sender                        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of media source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP PLI - packet will be created.

      -

    Returns PliPacket

    Throws

      -
    • If given view does not contain a valid RTCP PLI packet.
    • -
    -

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns PliPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.RRTExtendedReport.html b/docs/classes/packets.RRTExtendedReport.html deleted file mode 100644 index f6d99284..00000000 --- a/docs/classes/packets.RRTExtendedReport.html +++ /dev/null @@ -1,96 +0,0 @@ -RrtExtendedReport | rtp.js - v0.12.0

Class RrtExtendedReport

Receiver Reference Time Extended Report.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     BT=4      |   reserved    |       block length = 2        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|              NTP timestamp, most significant word             |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|             NTP timestamp, least significant word             |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns RrtExtendedReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.ReceiverReportPacket.html b/docs/classes/packets.ReceiverReportPacket.html deleted file mode 100644 index cf92f0c0..00000000 --- a/docs/classes/packets.ReceiverReportPacket.html +++ /dev/null @@ -1,137 +0,0 @@ -ReceiverReportPacket | rtp.js - v0.12.0

Class ReceiverReportPacket

RTCP Receiver Report packet.

-
        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-header |V=2|P|    RC   |   PT=RR=201   |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     SSRC of packet sender                     |
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-report |                 SSRC_1 (SSRC of first source)                 |
-block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  1    | fraction lost |       cumulative number of packets lost       |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |           extended highest sequence number received           |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                      interarrival jitter                      |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                         last SR (LSR)                         |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                   delay since last SR (DLSR)                  |
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-report |                 SSRC_2 (SSRC of second source)                |
-block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  2    :                               ...                             :
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-       |                  profile-specific extensions                  |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns ReceiverReportPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.ReceptionReport.html b/docs/classes/packets.ReceptionReport.html deleted file mode 100644 index 01391ab9..00000000 --- a/docs/classes/packets.ReceptionReport.html +++ /dev/null @@ -1,101 +0,0 @@ -ReceptionReport | rtp.js - v0.12.0

Class ReceptionReport

RTCP Reception Report.

-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns ReceptionReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.RpsiPacket.html b/docs/classes/packets.RpsiPacket.html deleted file mode 100644 index fe680c31..00000000 --- a/docs/classes/packets.RpsiPacket.html +++ /dev/null @@ -1,130 +0,0 @@ -RpsiPacket | rtp.js - v0.12.0

Class RpsiPacket

RTCP RPSI packet (RTCP Payload Specific Feedback).

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|V=2|P|  FMT=3  |  PT=PSFB=206  |          length               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of packet sender                        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of media source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|      PB       |0| Payload Type|    Native RPSI bit string     |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|   defined per codec          ...                | Padding (0) |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP RPSI - packet will be created.

      -

    Returns RpsiPacket

    Throws

      -
    • If given view does not contain a valid RTCP RPSI packet.
    • -
    -

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns RpsiPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -
  • Set the bit string.

    -

    Parameters

    • view: DataView

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.RtcpPacket.html b/docs/classes/packets.RtcpPacket.html deleted file mode 100644 index a9411f97..00000000 --- a/docs/classes/packets.RtcpPacket.html +++ /dev/null @@ -1,98 +0,0 @@ -RtcpPacket | rtp.js - v0.12.0

Class RtcpPacketAbstract

RTCP packet. Parent class of all RTCP packets.

-
        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-header |V=2|P|    SC   |      PT       |             length            |
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
-

Hierarchy (view full)

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns Serializable

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.RtpPacket.html b/docs/classes/packets.RtpPacket.html deleted file mode 100644 index 1c311663..00000000 --- a/docs/classes/packets.RtpPacket.html +++ /dev/null @@ -1,254 +0,0 @@ -RtpPacket | rtp.js - v0.12.0

Class RtpPacket

RTP packet.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|V=2|P|X|  CC   |M|     PT      |       sequence number         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                           timestamp                           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|           synchronization source (SSRC) identifier            |
-+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-|            contributing source (CSRC) identifiers             |
-|                             ....                              |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|      defined by profile       |           length              |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                        header extension                       |
-|                             ....                              |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTP packet - (with just the minimal fixed header) will be created.

      -

    Returns RtpPacket

    Throws

      -
    • If view is given and it does not contain a valid RTP packet.
    • -
    -

Methods

  • Clear all extensions (RFC 5285).

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns RtpPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Delete the extension with given id (RFC 5285).

    -

    Parameters

    • id: number

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Enable One-Byte extensions (RFC 5285).

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Enable Two-Bytes extensions (RFC 5285).

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the value of the extension with given id (RFC 5285).

    -

    Parameters

    • id: number

    Returns undefined | DataView

  • Get a map with all the extensions indexed by their extension id (RFC 5285).

    -

    Returns Map<number, DataView>

  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether One-Byte extensions (as per RFC 5285) are enabled.

    -

    Returns boolean

  • Whether Two-Bytes extensions (as per RFC 5285) are enabled.

    -

    Returns boolean

  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Decode the packet using RTX procedures (as per RFC 4588).

    -

    Parameters

    • payloadType: number

      The original payload type.

      -
    • ssrc: number

      The original SSRC.

      -

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -

    Throws

      -
    • If payload length is less than 2 bytes, so RTX decode is not possible.
    • -
    -
  • Encode the packet using RTX procedures (as per RFC 4588).

    -

    Parameters

    • payloadType: number

      The RTX payload type.

      -
    • ssrc: number

      The RTX SSRC.

      -
    • sequenceNumber: number

      The RTX sequence number.

      -

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -
  • Set the RTP CSRC values. If csrcs is not given (or if it's an empty -array) CSRC field will be removed from the RTP packet.

    -

    Parameters

    • csrcs: number[] = []

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -
  • Set the value of the extension with given id (RFC 5285).

    -

    Parameters

    • id: number
    • value: DataView

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -
  • Set RTP extension mapping (association of RTP extension types and their -numeric ids in this RTP packet).

    -

    Parameters

    Returns void

    Remarks

      -
    • Calling this method is needed before using other methods that read or -write specific RTP extensions.
    • -
    -
  • Set the packet payload.

    -

    Parameters

    • view: DataView

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -
  • Set the RTP payload type.

    -

    Parameters

    • payloadType: number

    Returns void

  • Set the RTP sequence number.

    -

    Parameters

    • sequenceNumber: number

    Returns void

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.SSExtendedReport.html b/docs/classes/packets.SSExtendedReport.html deleted file mode 100644 index 916cfc5a..00000000 --- a/docs/classes/packets.SSExtendedReport.html +++ /dev/null @@ -1,184 +0,0 @@ -SsExtendedReport | rtp.js - v0.12.0

Class SsExtendedReport

Statistics Summary Extended Report.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     BT=6      |L|D|J|ToH|rsvd.|       block length = 9        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                        SSRC of source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|          begin_seq            |             end_seq           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                        lost_packets                           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                        dup_packets                            |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                         min_jitter                            |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                         max_jitter                            |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                         mean_jitter                           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                         dev_jitter                            |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| min_ttl_or_hl | max_ttl_or_hl |mean_ttl_or_hl | dev_ttl_or_hl |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns SsExtendedReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.SdesChunk.html b/docs/classes/packets.SdesChunk.html deleted file mode 100644 index 69e2b4ce..00000000 --- a/docs/classes/packets.SdesChunk.html +++ /dev/null @@ -1,83 +0,0 @@ -SdesChunk | rtp.js - v0.12.0

Class SdesChunk

SDES Chunk.

-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns SdesChunk

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.SdesPacket.html b/docs/classes/packets.SdesPacket.html deleted file mode 100644 index 320d37bb..00000000 --- a/docs/classes/packets.SdesPacket.html +++ /dev/null @@ -1,123 +0,0 @@ -SdesPacket | rtp.js - v0.12.0

Class SdesPacket

RTCP SDES packet.

-
        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-header |V=2|P|    SC   |  PT=SDES=202  |             length            |
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-chunk  |                          SSRC/CSRC_1                          |
-  1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                           SDES items                          |
-       |                              ...                              |
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-chunk  |                          SSRC/CSRC_2                          |
-  2    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                           SDES items                          |
-       |                              ...                              |
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP SDES - packet will be created.

      -

    Returns SdesPacket

    Throws

      -
    • If given view does not contain a valid RTCP SDES packet.
    • -
    -

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns SdesPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.SenderReportPacket.html b/docs/classes/packets.SenderReportPacket.html deleted file mode 100644 index 39b3fc1d..00000000 --- a/docs/classes/packets.SenderReportPacket.html +++ /dev/null @@ -1,167 +0,0 @@ -SenderReportPacket | rtp.js - v0.12.0

Class SenderReportPacket

RTCP Sender Report packet.

-
        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-header |V=2|P|    RC   |   PT=SR=200   |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                         SSRC of sender                        |
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-sender |              NTP timestamp, most significant word             |
-info   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |             NTP timestamp, least significant word             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                         RTP timestamp                         |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                     sender's packet count                     |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                      sender's octet count                     |
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-report |                 SSRC_1 (SSRC of first source)                 |
-block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  1    | fraction lost |       cumulative number of packets lost       |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |           extended highest sequence number received           |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                      interarrival jitter                      |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                         last SR (LSR)                         |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                   delay since last SR (DLSR)                  |
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-report |                 SSRC_2 (SSRC of second source)                |
-block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  2    :                               ...                             :
-       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-       |                  profile-specific extensions                  |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns SenderReportPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.Serializable.html b/docs/classes/packets.Serializable.html deleted file mode 100644 index 6b03a9a8..00000000 --- a/docs/classes/packets.Serializable.html +++ /dev/null @@ -1,71 +0,0 @@ -Serializable | rtp.js - v0.12.0

Class SerializableAbstract

Class holding a serializable buffer view. All RTP and RTCP packets inherit -from this class, and also items in some RTCP packets.

-

Hierarchy (view full)

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns Serializable

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.SliPacket.html b/docs/classes/packets.SliPacket.html deleted file mode 100644 index ab1720b3..00000000 --- a/docs/classes/packets.SliPacket.html +++ /dev/null @@ -1,131 +0,0 @@ -SliPacket | rtp.js - v0.12.0

Class SliPacket

RTCP SLI packet (RTCP Payload Specific Feedback).

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|V=2|P|  FMT=2  |  PT=PSFB=206  |          length               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of packet sender                        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of media source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|            First        |        Number           | PictureID |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-:                              ...                              :
-+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP SLI - packet will be created.

      -

    Returns SliPacket

    Throws

      -
    • If given view does not contain a valid RTCP SLI packet.
    • -
    -

Methods

  • Add SLI item value.

    -

    Parameters

    • first: number
    • number: number
    • pictureId: number

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -
  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns SliPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get SLI items.

    -

    Returns {
        first: number;
        number: number;
        pictureId: number;
    }[]

  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -
  • Set SLI items.

    -

    Parameters

    • items: {
          first: number;
          number: number;
          pictureId: number;
      }[]

    Returns void

    Remarks

      -
    • Serialization is needed after calling this method.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.SrReqPacket.html b/docs/classes/packets.SrReqPacket.html deleted file mode 100644 index edc9c85c..00000000 --- a/docs/classes/packets.SrReqPacket.html +++ /dev/null @@ -1,115 +0,0 @@ -SrReqPacket | rtp.js - v0.12.0

Class SrReqPacket

RTCP SR REQ packet (RTCP Transport Layer Feedback).

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|V=2|P|  FMT=5  |  PT=RTPFB=205 |          length=2             |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of packet sender                        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                  SSRC of media source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

See

-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP SR REQ - packet will be created.

      -

    Returns SrReqPacket

    Throws

      -
    • If given view does not contain a valid RTCP SR REQ packet.
    • -
    -

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns SrReqPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.VMExtendedReport.html b/docs/classes/packets.VMExtendedReport.html deleted file mode 100644 index bf43092b..00000000 --- a/docs/classes/packets.VMExtendedReport.html +++ /dev/null @@ -1,192 +0,0 @@ -VmExtendedReport | rtp.js - v0.12.0

Class VmExtendedReport

VoIP Metrics Extended Report.

-
 0                   1                   2                   3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     BT=7      |   reserved    |       block length = 8        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|                        SSRC of source                         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|   loss rate   | discard rate  | burst density |  gap density  |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|       burst duration          |         gap duration          |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|     round trip delay          |       end system delay        |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| signal level  |  noise level  |     RERL      |     Gmin      |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|   R factor    | ext. R factor |    MOS-LQ     |    MOS-CQ     |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|   RX config   |   reserved    |          JB nominal           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|          JB maximum           |          JB abs max           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns VmExtendedReport

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/packets.XrPacket.html b/docs/classes/packets.XrPacket.html deleted file mode 100644 index 6be4479a..00000000 --- a/docs/classes/packets.XrPacket.html +++ /dev/null @@ -1,129 +0,0 @@ -XrPacket | rtp.js - v0.12.0

Class XrPacket

RTCP XR packet.

-
        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-header |V=2|P|reserved |   PT=XR=207   |             length            |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-       |                              SSRC                             |
-       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-report :                         report blocks                         :
-blocks +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Hierarchy (view full)

Constructors

  • Parameters

    • Optional view: DataView

      If given it will be parsed. Otherwise an empty RTCP XR packet - will be created.

      -

    Returns XrPacket

    Throws

      -
    • If given view does not contain a valid RTCP XR packet.
    • -
    -

Methods

  • Clone the packet or item. The cloned instance does not share any memory -with the original one. The cloned instance is a new class instance -referencing a different buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a - new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where clonation will - start.

      -
    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given - serializationBuffer where serialization (if needed) will start.

      -

    Returns XrPacket

    Remarks

      -
    • The buffer is serialized if needed (to apply pending modifications) by -internally calling serialize.
    • -
    -

    Throws

      -
    • If serialization is needed and it fails.
    • -
    • If given buffer doesn't have space enough to clone the content.
    • -
    • If given serializationBuffer doesn't have space enough to serialize -the content.
    • -
    -
  • Computes total length of the content (in bytes) including padding if any.

    -

    Returns number

    Remarks

      -
    • This methods computes the effective byte length of the content as if it -was serialized at this moment, no matter modifications have been done -before.
    • -
    -
  • Get the RTCP header count value.

    -

    Returns number

    Remarks

      -
    • Some RTCP packets do not use this byte (the second one in the common -RTCP header) for counting chunks or items.
    • -
    -
  • Get Extended Reports.

    -

    Returns ExtendedReport[]

    Remarks

    -

    Example

    import { packets } from 'rtp.js';
    const { XrPacket, ExtendedReportType, LrleExtendedReport } = packets;

    const packet = new XrPacket(view);

    for (const extendedReport of packet.getReports())
    {
    switch (extendedReport.getReportType())
    {
    case ExtendedReportType.LRLE:
    {
    const lrleExtendedReport = extendedReport as LrleExtendedReport;

    console.log(lrleExtendedReport.getThinning());

    break;
    }

    // etc.
    }
    } -
    -
  • Get a buffer view containing the serialized content of the packet or item.

    -

    Parameters

    • Optional serializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized - in case serialization is needed. If not given, a new one will internally - allocated.

      -
    • Optional serializationByteOffset: number

      Byte offset of the given serializationBuffer - where serialization (if needed) will start.

      -

    Returns DataView

    Remarks

      -
    • The internal buffer is serialized if needed (to apply pending - modifications) by internally calling serialize.
    • -
    -

    Throws

      -
    • If buffer serialization is needed and it fails due to invalid -content.
    • -
    -
  • Whether serialization is needed, meaning that the current buffer view -doesn't represent the current content of the packet or item (due to -modifications not applied yet). Calling serialize or getView -will serialize the packet or the item.

    -

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add -or remove bytes of padding.

    -

    Returns void

    Remarks

      -
    • Serialization maybe needed after calling this method.
    • -
    -
  • Apply pending changes and serialize the content of the packet or item into -a new buffer.

    -

    Parameters

    • Optional buffer: ArrayBuffer

      Buffer in which the content will be serialized. If not - given, a new one will internally allocated.

      -
    • Optional byteOffset: number

      Byte offset of the given buffer where serialization - will start.

      -

    Returns void

    Remarks

      -
    • In most cases there is no need to use this method since many setter -methods apply changes within the current buffer. To be sure, check -needsSerialization before.
    • -
    -

    Throws

      -
    • If serialization fails due to invalid content previously added.
    • -
    • If given buffer doesn't have space enough to serialize the content.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/packets.ExtendedReportType.html b/docs/enums/packets.ExtendedReportType.html deleted file mode 100644 index f302b29f..00000000 --- a/docs/enums/packets.ExtendedReportType.html +++ /dev/null @@ -1,18 +0,0 @@ -ExtendedReportType | rtp.js - v0.12.0

Enumeration ExtendedReportType

Extended Report types.

-

Enumeration Members

Enumeration Members

DLRR: 5

DLRR Report.

-
DRLE: 2

Duplicate RLE Report.

-
ECN: 13

ECN Summary Report.

-
LRLE: 1

Loss RLE Report.

-
PRT: 3

Packet Receipt Times Report.

-
RRT: 4

Receiver Reference Time Report.

-
SS: 6

Statistics Summary Report.

-
VM: 7

VoIP Metrics Report.

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/packets.PsFeedbackMessageType.html b/docs/enums/packets.PsFeedbackMessageType.html deleted file mode 100644 index c95484de..00000000 --- a/docs/enums/packets.PsFeedbackMessageType.html +++ /dev/null @@ -1,10 +0,0 @@ -PsFeedbackMessageType | rtp.js - v0.12.0

Enumeration PsFeedbackMessageType

RTCP Feedback payload specific message types.

-

Enumeration Members

Enumeration Members

AFB: 15

Application layer FB message.

-
PLI: 1

Picture Loss Indication.

-
RPSI: 3

Reference Picture Selection Indication.

-
SLI: 2

Slice Loss Indication.

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/packets.RtcpPacketType.html b/docs/enums/packets.RtcpPacketType.html deleted file mode 100644 index 113571f0..00000000 --- a/docs/enums/packets.RtcpPacketType.html +++ /dev/null @@ -1,20 +0,0 @@ -RtcpPacketType | rtp.js - v0.12.0

Enumeration RtcpPacketType

RTCP packet types.

-

Enumeration Members

APP -BYE -IJ -PSFB -RR -RTPFB -SDES -SR -XR -

Enumeration Members

APP: 204

RTCP APP packet.

-
BYE: 203

RTCP BYE packet.

-
IJ: 195

Extended Jitter Reports packet.

-
PSFB: 206

RTCP Payload Specific Feedback packet.

-
RR: 201

RTCP Receiver Report packet.

-
RTPFB: 205

RTCP Transport Layer Feedback packet.

-
SDES: 202

RTCP Sender Report packet.

-
SR: 200

RTCP Sender Report packet.

-
XR: 207

RTCP Extended Report packet.

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/packets.RtpExtensionType.html b/docs/enums/packets.RtpExtensionType.html deleted file mode 100644 index 7fb514d4..00000000 --- a/docs/enums/packets.RtpExtensionType.html +++ /dev/null @@ -1,50 +0,0 @@ -RtpExtensionType | rtp.js - v0.12.0

Enumeration RtpExtensionType

RTP extensions.

-

Enumeration Members

ABS_SEND_TIME: 3

Absolute Send Time.

-

URI: http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time

-

See

-
MID: 0

Media identification.

-

URI: urn:ietf:params:rtp-hdrext:sdes:mid

-

See

-
RTP_REPAIRED_STREAM_ID: 2

RTP Repaired Stream Identifier.

-

URI: urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id

-

See

-
RTP_STREAM_ID: 1

RTP Stream Identifier.

-

URI: urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id

-

See

-
SSRC_AUDIO_LEVEL: 5

Audio Level

-

URI: urn:ietf:params:rtp-hdrext:ssrc-audio-level

-

See

-
TOFFSET: 7

Transmission Time Offsets.

-

URI: urn:ietf:params:rtp-hdrext:toffset

-

See

-
TRANSPORT_WIDE_SEQ_NUMBER: 4

Transport-wide Sequence Number.

-

URI: http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01

-
VIDEO_ORIENTATION: 6

Video Orientation.

-

URI: urn:3gpp:video-orientation

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/packets.RtpFeedbackMessageType.html b/docs/enums/packets.RtpFeedbackMessageType.html deleted file mode 100644 index ecc32b4c..00000000 --- a/docs/enums/packets.RtpFeedbackMessageType.html +++ /dev/null @@ -1,8 +0,0 @@ -RtpFeedbackMessageType | rtp.js - v0.12.0

Enumeration RtpFeedbackMessageType

RTCP Feedback transport layer message types.

-

Enumeration Members

Enumeration Members

ECN: 8

Explicit Congestion Notification (ECN).

-
NACK: 1

Generic NACK.

-
SR_REQ: 5

Rapid Resynchronisation Request.

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/packets.SdesItemType.html b/docs/enums/packets.SdesItemType.html deleted file mode 100644 index e2491d74..00000000 --- a/docs/enums/packets.SdesItemType.html +++ /dev/null @@ -1,18 +0,0 @@ -SdesItemType | rtp.js - v0.12.0

Enumeration SdesItemType

SDES Chunk Item types.

-

Enumeration Members

Enumeration Members

CNAME: 1

Canonical End-Point Identifier SDES Item.

-
EMAIL: 3

Electronic Mail Address SDES Item.

-
LOC: 5

Geographic User Location SDES Item.

-
NAME: 2

User Name SDES Item.

-
NOTE: 7

Notice/Status SDES Item.

-
PHONE: 4

Phone Number SDES Item.

-
PRIV: 8

Private Extensions SDES Item.

-
TOOL: 6

Application or Tool Name SDES Item.

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/packets.createExtendedReportBitVectorChunk.html b/docs/functions/packets.createExtendedReportBitVectorChunk.html deleted file mode 100644 index 1ab6c93c..00000000 --- a/docs/functions/packets.createExtendedReportBitVectorChunk.html +++ /dev/null @@ -1,11 +0,0 @@ -createExtendedReportBitVectorChunk | rtp.js - v0.12.0

Function createExtendedReportBitVectorChunk

  • Create a Bit Vector Chunk and return a 2 bytes number representing it.

    -
     0                   1
    - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -|C|        bit vector           |
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -
    -

    Parameters

    • bitVector: number

    Returns number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/packets.createExtendedReportRunLengthChunk.html b/docs/functions/packets.createExtendedReportRunLengthChunk.html deleted file mode 100644 index b57e4c3b..00000000 --- a/docs/functions/packets.createExtendedReportRunLengthChunk.html +++ /dev/null @@ -1,11 +0,0 @@ -createExtendedReportRunLengthChunk | rtp.js - v0.12.0

Function createExtendedReportRunLengthChunk

  • Create a Run Length Chunk and return a 2 bytes number representing it.

    -
     0                   1
    - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -|C|R|        run length         |
    -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -
    -

    Parameters

    • runType: "zeros" | "ones"
    • runLength: number

    Returns number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/packets.createNackItem.html b/docs/functions/packets.createNackItem.html deleted file mode 100644 index 4e0b1488..00000000 --- a/docs/functions/packets.createNackItem.html +++ /dev/null @@ -1,5 +0,0 @@ -createNackItem | rtp.js - v0.12.0

Function createNackItem

  • Create a NACK item.

    -

    Parameters

    • seqs: number[]

      RTP sequence number of lost packets. As per NACK rules, there - can be up to 17 seq numbers and max diff between lowest and highest must - be 17.

      -

    Returns {
        bitmask: number;
        pid: number;
    }

    • bitmask: number
    • pid: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/packets.isRtcp.html b/docs/functions/packets.isRtcp.html deleted file mode 100644 index ed3faa12..00000000 --- a/docs/functions/packets.isRtcp.html +++ /dev/null @@ -1,2 +0,0 @@ -isRtcp | rtp.js - v0.12.0

Function isRtcp

  • Whether the given buffer view could be a valid RTCP packet or not.

    -

    Parameters

    • view: DataView

    Returns boolean

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/packets.isRtp.html b/docs/functions/packets.isRtp.html deleted file mode 100644 index 7926dcf0..00000000 --- a/docs/functions/packets.isRtp.html +++ /dev/null @@ -1,2 +0,0 @@ -isRtp | rtp.js - v0.12.0

Function isRtp

  • Whether the given buffer view could be a valid RTP packet or not.

    -

    Parameters

    • view: DataView

    Returns boolean

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/packets.parseExtendedReportChunk.html b/docs/functions/packets.parseExtendedReportChunk.html deleted file mode 100644 index 6de0758f..00000000 --- a/docs/functions/packets.parseExtendedReportChunk.html +++ /dev/null @@ -1,5 +0,0 @@ -parseExtendedReportChunk | rtp.js - v0.12.0

Function parseExtendedReportChunk

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/packets.parseNackItem.html b/docs/functions/packets.parseNackItem.html deleted file mode 100644 index f7b5844c..00000000 --- a/docs/functions/packets.parseNackItem.html +++ /dev/null @@ -1,3 +0,0 @@ -parseNackItem | rtp.js - v0.12.0

Function parseNackItem

  • Parse a NACK item. It returns an array with RTP sequence numbers that are -included in the item (lost packets).

    -

    Parameters

    • pid: number
    • bitmask: number

    Returns number[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/packets.rtpExtensionUriToType.html b/docs/functions/packets.rtpExtensionUriToType.html deleted file mode 100644 index 8f188a88..00000000 --- a/docs/functions/packets.rtpExtensionUriToType.html +++ /dev/null @@ -1,2 +0,0 @@ -rtpExtensionUriToType | rtp.js - v0.12.0

Function rtpExtensionUriToType

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/packets.timeMsToAbsSendTime.html b/docs/functions/packets.timeMsToAbsSendTime.html deleted file mode 100644 index c4e594d0..00000000 --- a/docs/functions/packets.timeMsToAbsSendTime.html +++ /dev/null @@ -1,5 +0,0 @@ -timeMsToAbsSendTime | rtp.js - v0.12.0

Function timeMsToAbsSendTime

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.arrayBufferToNodeBuffer.html b/docs/functions/utils.arrayBufferToNodeBuffer.html deleted file mode 100644 index ba1d86cf..00000000 --- a/docs/functions/utils.arrayBufferToNodeBuffer.html +++ /dev/null @@ -1,5 +0,0 @@ -arrayBufferToNodeBuffer | rtp.js - v0.12.0

Function arrayBufferToNodeBuffer

  • Convert ArrayBuffer to Node.js Buffer.

    -

    Parameters

    • arrayBuffer: ArrayBuffer

    Returns Buffer

    Remarks

      -
    • Just for Node.js.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.arrayBufferToString.html b/docs/functions/utils.arrayBufferToString.html deleted file mode 100644 index 7ef601f9..00000000 --- a/docs/functions/utils.arrayBufferToString.html +++ /dev/null @@ -1,2 +0,0 @@ -arrayBufferToString | rtp.js - v0.12.0

Function arrayBufferToString

  • Convert ArrayBuffer to string.

    -

    Parameters

    • arrayBuffer: ArrayBuffer

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.dataViewToNodeBuffer.html b/docs/functions/utils.dataViewToNodeBuffer.html deleted file mode 100644 index 4644e945..00000000 --- a/docs/functions/utils.dataViewToNodeBuffer.html +++ /dev/null @@ -1,5 +0,0 @@ -dataViewToNodeBuffer | rtp.js - v0.12.0

Function dataViewToNodeBuffer

  • Convert DataView to Node.js Buffer using the same underlying ArrayBuffer.

    -

    Parameters

    • view: DataView

    Returns Buffer

    Remarks

      -
    • Just for Node.js.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.dataViewToString.html b/docs/functions/utils.dataViewToString.html deleted file mode 100644 index 48b0e1a9..00000000 --- a/docs/functions/utils.dataViewToString.html +++ /dev/null @@ -1,2 +0,0 @@ -dataViewToString | rtp.js - v0.12.0

Function dataViewToString

  • Convert DataView to string.

    -

    Parameters

    • view: DataView

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.getStringByteLength.html b/docs/functions/utils.getStringByteLength.html deleted file mode 100644 index d4348846..00000000 --- a/docs/functions/utils.getStringByteLength.html +++ /dev/null @@ -1,2 +0,0 @@ -getStringByteLength | rtp.js - v0.12.0

Function getStringByteLength

  • Get the byte length of a string.

    -

    Parameters

    • string: string

    Returns number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.nodeBufferToArrayBuffer.html b/docs/functions/utils.nodeBufferToArrayBuffer.html deleted file mode 100644 index b2f8c00a..00000000 --- a/docs/functions/utils.nodeBufferToArrayBuffer.html +++ /dev/null @@ -1,5 +0,0 @@ -nodeBufferToArrayBuffer | rtp.js - v0.12.0

Function nodeBufferToArrayBuffer

  • Convert Node.js Buffer to a new allocated ArrayBuffer.

    -

    Parameters

    • nodeBuffer: Buffer

    Returns ArrayBuffer

    Remarks

      -
    • Just for Node.js.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.nodeBufferToDataView.html b/docs/functions/utils.nodeBufferToDataView.html deleted file mode 100644 index 31a54bfe..00000000 --- a/docs/functions/utils.nodeBufferToDataView.html +++ /dev/null @@ -1,5 +0,0 @@ -nodeBufferToDataView | rtp.js - v0.12.0

Function nodeBufferToDataView

  • Convert Node.js Buffer to DataView using the same underlying ArrayBuffer.

    -

    Parameters

    • nodeBuffer: Buffer

    Returns DataView

    Remarks

      -
    • Just for Node.js.
    • -
    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.numberToDataView.html b/docs/functions/utils.numberToDataView.html deleted file mode 100644 index 2fb60c5d..00000000 --- a/docs/functions/utils.numberToDataView.html +++ /dev/null @@ -1,2 +0,0 @@ -numberToDataView | rtp.js - v0.12.0

Function numberToDataView

  • Convert number to DataView.

    -

    Parameters

    • number: number

    Returns DataView

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.numericArrayToDataView.html b/docs/functions/utils.numericArrayToDataView.html deleted file mode 100644 index 313af8b5..00000000 --- a/docs/functions/utils.numericArrayToDataView.html +++ /dev/null @@ -1,2 +0,0 @@ -numericArrayToDataView | rtp.js - v0.12.0

Function numericArrayToDataView

  • Convert array of integers to DataView.

    -

    Parameters

    • array: number[]

    Returns DataView

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.padTo4Bytes.html b/docs/functions/utils.padTo4Bytes.html deleted file mode 100644 index 4fb81bce..00000000 --- a/docs/functions/utils.padTo4Bytes.html +++ /dev/null @@ -1,2 +0,0 @@ -padTo4Bytes | rtp.js - v0.12.0

Function padTo4Bytes

  • Returns the given size padded to 4 bytes.

    -

    Parameters

    • size: number

    Returns number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/utils.stringToDataView.html b/docs/functions/utils.stringToDataView.html deleted file mode 100644 index 9993656b..00000000 --- a/docs/functions/utils.stringToDataView.html +++ /dev/null @@ -1,2 +0,0 @@ -stringToDataView | rtp.js - v0.12.0

Function stringToDataView

  • Convert string to DataView.

    -

    Parameters

    • string: string

    Returns DataView

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html deleted file mode 100644 index f5587514..00000000 --- a/docs/hierarchy.html +++ /dev/null @@ -1 +0,0 @@ -rtp.js - v0.12.0

rtp.js - v0.12.0

Class Hierarchy

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 218e6697..00000000 --- a/docs/index.html +++ /dev/null @@ -1,23 +0,0 @@ -rtp.js - v0.12.0

rtp.js - v0.12.0

rtp.js

-

-

RTP stack for Node.js and browser written in TypeScript. rtp.js provides with an API to parse, generate and modify RTP and RTCP packets.

-

Installation

npm install rtp.js
-
-

Usage

    -
  • API documentation

    -
  • -
  • All RTP and RTCP classes, types and packet related helpers are exported by the packets module.

    -
    import { packets } from 'rtp.js';

    const {
    isRtp,
    isRtcp,
    RtpPacket,
    CompoundPacket,
    ReceiverReportPacket,
    SenderReportPacket,
    ReceptionReport,
    ByePacket,
    SdesPacket,
    NackPacket,
    SrReqPacket,
    EcnPacket,
    PliPacket,
    SliPacket,
    RpsiPacket,
    XrPacket,
    ExtendedJitterReportsPacket,
    GenericPacket,
    // etc.
    } = packets; -
    -
  • -
  • The utils module exports some generic helpers and utilities.

    -
    import { utils } from 'rtp.js';

    const view = utils.stringToDataView('foo'); -
    -
  • -
-

Authors

-

License

ISC

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/packets.html b/docs/modules/packets.html deleted file mode 100644 index 7110a01c..00000000 --- a/docs/modules/packets.html +++ /dev/null @@ -1,85 +0,0 @@ -packets | rtp.js - v0.12.0

Module packets

Index

RTP

RTCP

RTCP Extended Reports

Other

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/utils.html b/docs/modules/utils.html deleted file mode 100644 index fbe3c7f6..00000000 --- a/docs/modules/utils.html +++ /dev/null @@ -1,12 +0,0 @@ -utils | rtp.js - v0.12.0

Module utils

Index

Utils

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.ByePacketDump.html b/docs/types/packets.ByePacketDump.html deleted file mode 100644 index da4b802f..00000000 --- a/docs/types/packets.ByePacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -ByePacketDump | rtp.js - v0.12.0

Type alias ByePacketDump

ByePacketDump: RtcpPacketDump & {
    reason?: string;
    ssrcs: number[];
}

RTCP BYE packet info dump.

-

Type declaration

  • Optional reason?: string
  • ssrcs: number[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.CompoundPacketDump.html b/docs/types/packets.CompoundPacketDump.html deleted file mode 100644 index 1b5c8739..00000000 --- a/docs/types/packets.CompoundPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -CompoundPacketDump | rtp.js - v0.12.0

Type alias CompoundPacketDump

CompoundPacketDump: PacketDump & {
    packets: RtcpPacketDump[];
}

RTCP Compound packet info dump.

-

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.DLRRExtendedReportDump.html b/docs/types/packets.DLRRExtendedReportDump.html deleted file mode 100644 index 54033ac3..00000000 --- a/docs/types/packets.DLRRExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -DlrrExtendedReportDump | rtp.js - v0.12.0

Type alias DlrrExtendedReportDump

DlrrExtendedReportDump: ExtendedReportDump & {
    subReports: DlrrSubReport[];
}

DLRR Extended Report dump.

-

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.DLRRSubReport.html b/docs/types/packets.DLRRSubReport.html deleted file mode 100644 index c9301887..00000000 --- a/docs/types/packets.DLRRSubReport.html +++ /dev/null @@ -1,5 +0,0 @@ -DlrrSubReport | rtp.js - v0.12.0

Type alias DlrrSubReport

DlrrSubReport: {
    dlrr: number;
    lrr: number;
    ssrc: number;
}

DLRR Sub-Report.

-

Type declaration

  • dlrr: number

    Delay since last RR.

    -
  • lrr: number

    Last RR timestamp.

    -
  • ssrc: number

    SSRC of receiver.

    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.DRLEExtendedReportDump.html b/docs/types/packets.DRLEExtendedReportDump.html deleted file mode 100644 index a40fe74d..00000000 --- a/docs/types/packets.DRLEExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -DrleExtendedReportDump | rtp.js - v0.12.0

Type alias DrleExtendedReportDump

DrleExtendedReportDump: ExtendedReportDump & {
    beginSeq: number;
    chunks: number[];
    endSeq: number;
    ssrc: number;
    thinning: number;
}

Duplicate RLE Extended Report dump.

-

Type declaration

  • beginSeq: number
  • chunks: number[]
  • endSeq: number
  • ssrc: number
  • thinning: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.ECNExtendedReportDump.html b/docs/types/packets.ECNExtendedReportDump.html deleted file mode 100644 index 03f7f5a9..00000000 --- a/docs/types/packets.ECNExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -EcnExtendedReportDump | rtp.js - v0.12.0

Type alias EcnExtendedReportDump

EcnExtendedReportDump: ExtendedReportDump & {
    duplicationCounter: number;
    ecnCeCounter: number;
    ect0Counter: number;
    ect1Counter: number;
    lostPacketsCounter: number;
    nonEctCounter: number;
    ssrc: number;
}

ECN Summary Extended Report dump.

-

Type declaration

  • duplicationCounter: number
  • ecnCeCounter: number
  • ect0Counter: number
  • ect1Counter: number
  • lostPacketsCounter: number
  • nonEctCounter: number
  • ssrc: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.EcnPacketDump.html b/docs/types/packets.EcnPacketDump.html deleted file mode 100644 index ca40ead6..00000000 --- a/docs/types/packets.EcnPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -EcnPacketDump | rtp.js - v0.12.0

Type alias EcnPacketDump

EcnPacketDump: FeedbackPacketDump & {
    duplicationCounter: number;
    ecnCeCounter: number;
    ect0Counter: number;
    ect1Counter: number;
    extendedHighestSequenceNumber: number;
    lostPacketsCounter: number;
    nonEctCounter: number;
}

RTCP ECN packet info dump.

-

Type declaration

  • duplicationCounter: number
  • ecnCeCounter: number
  • ect0Counter: number
  • ect1Counter: number
  • extendedHighestSequenceNumber: number
  • lostPacketsCounter: number
  • nonEctCounter: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.ExtendedJitterReportsPacketDump.html b/docs/types/packets.ExtendedJitterReportsPacketDump.html deleted file mode 100644 index 0f4b4213..00000000 --- a/docs/types/packets.ExtendedJitterReportsPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -ExtendedJitterReportsPacketDump | rtp.js - v0.12.0

Type alias ExtendedJitterReportsPacketDump

ExtendedJitterReportsPacketDump: RtcpPacketDump & {
    jitters: number[];
}

RTCP Extended Jitter Reports packet info dump.

-

Type declaration

  • jitters: number[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.ExtendedReportChunk.html b/docs/types/packets.ExtendedReportChunk.html deleted file mode 100644 index 893eca0f..00000000 --- a/docs/types/packets.ExtendedReportChunk.html +++ /dev/null @@ -1,30 +0,0 @@ -ExtendedReportChunk | rtp.js - v0.12.0

Type alias ExtendedReportChunk

ExtendedReportChunk: {
    bitVector?: number;
    chunkType: "run-length" | "bit-vector" | "terminating-null";
    runLength?: number;
    runType?: "zeros" | "ones";
}

Loss RLE and Duplicate RLE Extended Report chunk info.

-
Run Length Chunk
- 0                   1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|C|R|        run length         |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-Bit Vector Chunk
- 0                   1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|C|        bit vector           |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-Terminating Null Chunk
- 0                   1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-

Type declaration

  • Optional bitVector?: number

    Chunk bit vector (only set if chunkType is 'bit-vector').

    -
  • chunkType: "run-length" | "bit-vector" | "terminating-null"

    Chunk type (Run Length Chunk, Bit Vector Chunk or Terminating Null Chunk).

    -
  • Optional runLength?: number

    Chunk run length (only set if chunkType is 'run-length').

    -
  • Optional runType?: "zeros" | "ones"

    Chunk run type (only set if chunkType is 'run-length').

    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.ExtendedReportDump.html b/docs/types/packets.ExtendedReportDump.html deleted file mode 100644 index 859b6453..00000000 --- a/docs/types/packets.ExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -ExtendedReportDump | rtp.js - v0.12.0

Type alias ExtendedReportDump

ExtendedReportDump: SerializableDump & {
    reportType: ExtendedReportType;
}

Extended Report dump.

-

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.FeedbackPacketDump.html b/docs/types/packets.FeedbackPacketDump.html deleted file mode 100644 index fc77404e..00000000 --- a/docs/types/packets.FeedbackPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -FeedbackPacketDump | rtp.js - v0.12.0

Type alias FeedbackPacketDump

FeedbackPacketDump: RtcpPacketDump & {
    mediaSsrc: number;
    messageType: RtpFeedbackMessageType | PsFeedbackMessageType;
    senderSsrc: number;
}

RTCP Feedback packet info dump.

-

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.GenericExtendedReportDump.html b/docs/types/packets.GenericExtendedReportDump.html deleted file mode 100644 index c169faee..00000000 --- a/docs/types/packets.GenericExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -GenericExtendedReportDump | rtp.js - v0.12.0

Type alias GenericExtendedReportDump

GenericExtendedReportDump: ExtendedReportDump

Generic Extended Report dump.

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.GenericFeedbackPacketDump.html b/docs/types/packets.GenericFeedbackPacketDump.html deleted file mode 100644 index c5dda7ce..00000000 --- a/docs/types/packets.GenericFeedbackPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -GenericFeedbackPacketDump | rtp.js - v0.12.0

Type alias GenericFeedbackPacketDump

GenericFeedbackPacketDump: FeedbackPacketDump & {
    bodyLength: number;
}

RTCP generic Feedback packet info.

-

Type declaration

  • bodyLength: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.GenericPacketDump.html b/docs/types/packets.GenericPacketDump.html deleted file mode 100644 index 09cc4a2b..00000000 --- a/docs/types/packets.GenericPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -GenericPacketDump | rtp.js - v0.12.0

Type alias GenericPacketDump

GenericPacketDump: RtcpPacketDump & {
    bodyLength: number;
}

RTCP generic packet info dump.

-

Type declaration

  • bodyLength: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.LRLEExtendedReportDump.html b/docs/types/packets.LRLEExtendedReportDump.html deleted file mode 100644 index 1ebb8250..00000000 --- a/docs/types/packets.LRLEExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -LrleExtendedReportDump | rtp.js - v0.12.0

Type alias LrleExtendedReportDump

LrleExtendedReportDump: ExtendedReportDump & {
    beginSeq: number;
    chunks: number[];
    endSeq: number;
    ssrc: number;
    thinning: number;
}

Loss RLE Extended Report dump.

-

Type declaration

  • beginSeq: number
  • chunks: number[]
  • endSeq: number
  • ssrc: number
  • thinning: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.NackPacketDump.html b/docs/types/packets.NackPacketDump.html deleted file mode 100644 index 2cc40350..00000000 --- a/docs/types/packets.NackPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -NackPacketDump | rtp.js - v0.12.0

Type alias NackPacketDump

NackPacketDump: FeedbackPacketDump & {
    items: {
        bitmask: number;
        pid: number;
    }[];
}

RTCP NACK packet info dump.

-

Type declaration

  • items: {
        bitmask: number;
        pid: number;
    }[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.PRTExtendedReportDump.html b/docs/types/packets.PRTExtendedReportDump.html deleted file mode 100644 index 4188fcb3..00000000 --- a/docs/types/packets.PRTExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -PrtExtendedReportDump | rtp.js - v0.12.0

Type alias PrtExtendedReportDump

PrtExtendedReportDump: ExtendedReportDump & {
    beginSeq: number;
    endSeq: number;
    receiptTimes: number[];
    ssrc: number;
    thinning: number;
}

Packet Receipt Times Extended Report dump.

-

Type declaration

  • beginSeq: number
  • endSeq: number
  • receiptTimes: number[]
  • ssrc: number
  • thinning: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.PacketDump.html b/docs/types/packets.PacketDump.html deleted file mode 100644 index f3da7143..00000000 --- a/docs/types/packets.PacketDump.html +++ /dev/null @@ -1,5 +0,0 @@ -PacketDump | rtp.js - v0.12.0

Type alias PacketDump

PacketDump: SerializableDump & {
    padding: number;
}

Packet info dump.

-

Type declaration

  • padding: number

Remarks

    -
  • Read the info dump type of each RTP and RTCP packet instead.
  • -
-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.PliPacketDump.html b/docs/types/packets.PliPacketDump.html deleted file mode 100644 index bf9dbc78..00000000 --- a/docs/types/packets.PliPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -PliPacketDump | rtp.js - v0.12.0

Type alias PliPacketDump

PliPacketDump: FeedbackPacketDump

RTCP PLI packet info dump.

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.RRTExtendedReportDump.html b/docs/types/packets.RRTExtendedReportDump.html deleted file mode 100644 index 68bace18..00000000 --- a/docs/types/packets.RRTExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -RrtExtendedReportDump | rtp.js - v0.12.0

Type alias RrtExtendedReportDump

RrtExtendedReportDump: ExtendedReportDump & {
    ntpFraction: number;
    ntpSeq: number;
}

Receiver Reference Time Extended Report dump.

-

Type declaration

  • ntpFraction: number
  • ntpSeq: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.ReceiverReportPacketDump.html b/docs/types/packets.ReceiverReportPacketDump.html deleted file mode 100644 index b266cb80..00000000 --- a/docs/types/packets.ReceiverReportPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -ReceiverReportPacketDump | rtp.js - v0.12.0

Type alias ReceiverReportPacketDump

ReceiverReportPacketDump: RtcpPacketDump & {
    reports: ReceptionReportDump[];
    ssrc: number;
}

RTCP Receiver Report packet info dump.

-

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.ReceptionReportDump.html b/docs/types/packets.ReceptionReportDump.html deleted file mode 100644 index 7ea309cf..00000000 --- a/docs/types/packets.ReceptionReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -ReceptionReportDump | rtp.js - v0.12.0

Type alias ReceptionReportDump

ReceptionReportDump: SerializableDump & {
    dlsr: number;
    fractionLost: number;
    highestSeq: number;
    jitter: number;
    lsr: number;
    ssrc: number;
    totalLost: number;
}

Reception Report dump.

-

Type declaration

  • dlsr: number
  • fractionLost: number
  • highestSeq: number
  • jitter: number
  • lsr: number
  • ssrc: number
  • totalLost: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.RpsiPacketDump.html b/docs/types/packets.RpsiPacketDump.html deleted file mode 100644 index 5e4ba549..00000000 --- a/docs/types/packets.RpsiPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -RpsiPacketDump | rtp.js - v0.12.0

Type alias RpsiPacketDump

RpsiPacketDump: FeedbackPacketDump & {
    bitStringLength: number;
    paddingBits: number;
    payloadType: number;
}

RTCP RPSI packet info dump.

-

Type declaration

  • bitStringLength: number
  • paddingBits: number
  • payloadType: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.RtcpPacketDump.html b/docs/types/packets.RtcpPacketDump.html deleted file mode 100644 index 9d619b19..00000000 --- a/docs/types/packets.RtcpPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -RtcpPacketDump | rtp.js - v0.12.0

Type alias RtcpPacketDump

RtcpPacketDump: PacketDump & {
    count: number;
    packetType: RtcpPacketType;
}

Base RTCP packet info dump.

-

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.RtpExtensionMapping.html b/docs/types/packets.RtpExtensionMapping.html deleted file mode 100644 index 3218b7ff..00000000 --- a/docs/types/packets.RtpExtensionMapping.html +++ /dev/null @@ -1,4 +0,0 @@ -RtpExtensionMapping | rtp.js - v0.12.0

Type alias RtpExtensionMapping

RtpExtensionMapping: Partial<Record<RtpExtensionType, number>>

Mapping of RTP extension types and their corresponding RTP extension ids.

-

Example

const rtpExtensionMapping: RtpExtensionMapping =
{
[RtpExtensionType.MID]: 1,
[RtpExtensionType.RTP_STREAM_ID]: 3
}; -
-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.RtpPacketDump.html b/docs/types/packets.RtpPacketDump.html deleted file mode 100644 index 5357158c..00000000 --- a/docs/types/packets.RtpPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -RtpPacketDump | rtp.js - v0.12.0

Type alias RtpPacketDump

RtpPacketDump: PacketDump & {
    absSendTimeExt?: number;
    csrcs: number[];
    extensions: {
        id: number;
        length: number;
    }[];
    headerExtensionId?: number;
    marker: boolean;
    midExt?: string;
    payloadLength: number;
    payloadType: number;
    repairedRidExt?: string;
    ridExt?: string;
    sequenceNumber: number;
    ssrc: number;
    ssrcAudioLevelExt?: SsrcAudioLevelExtension;
    timestamp: number;
    transmissionOffsetExt?: number;
    transportWideSeqNumberExt?: number;
    videoOrientationExt?: VideoOrientationExtension;
}

RTP packet info dump.

-

Type declaration

  • Optional absSendTimeExt?: number
  • csrcs: number[]
  • extensions: {
        id: number;
        length: number;
    }[]
  • Optional headerExtensionId?: number
  • marker: boolean
  • Optional midExt?: string
  • payloadLength: number
  • payloadType: number
  • Optional repairedRidExt?: string
  • Optional ridExt?: string
  • sequenceNumber: number
  • ssrc: number
  • Optional ssrcAudioLevelExt?: SsrcAudioLevelExtension
  • timestamp: number
  • Optional transmissionOffsetExt?: number
  • Optional transportWideSeqNumberExt?: number
  • Optional videoOrientationExt?: VideoOrientationExtension

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.SSExtendedReportDump.html b/docs/types/packets.SSExtendedReportDump.html deleted file mode 100644 index 051b91af..00000000 --- a/docs/types/packets.SSExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -SsExtendedReportDump | rtp.js - v0.12.0

Type alias SsExtendedReportDump

SsExtendedReportDump: ExtendedReportDump & {
    beginSeq: number;
    devJitter?: number;
    devTtlOrHl?: number;
    duplicatePackets?: number;
    endSeq: number;
    lostPackets?: number;
    maxJitter?: number;
    maxTtlOrHl?: number;
    meanJitter?: number;
    meanTtlOrHl?: number;
    minJitter?: number;
    minTtlOrHl?: number;
    ssrc: number;
    ttlOrHlMode?: "ipv4-ttl" | "ipv6-hop-limit";
}

Statistics Summary Extended Report dump.

-

Type declaration

  • beginSeq: number
  • Optional devJitter?: number
  • Optional devTtlOrHl?: number
  • Optional duplicatePackets?: number
  • endSeq: number
  • Optional lostPackets?: number
  • Optional maxJitter?: number
  • Optional maxTtlOrHl?: number
  • Optional meanJitter?: number
  • Optional meanTtlOrHl?: number
  • Optional minJitter?: number
  • Optional minTtlOrHl?: number
  • ssrc: number
  • Optional ttlOrHlMode?: "ipv4-ttl" | "ipv6-hop-limit"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.SdesChunkDump.html b/docs/types/packets.SdesChunkDump.html deleted file mode 100644 index 04097b73..00000000 --- a/docs/types/packets.SdesChunkDump.html +++ /dev/null @@ -1,2 +0,0 @@ -SdesChunkDump | rtp.js - v0.12.0

Type alias SdesChunkDump

SdesChunkDump: SerializableDump & {
    items: {
        text: string;
        type: SdesItemType;
    }[];
    ssrc: number;
}

SDES Chunk dump.

-

Type declaration

  • items: {
        text: string;
        type: SdesItemType;
    }[]
  • ssrc: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.SdesPacketDump.html b/docs/types/packets.SdesPacketDump.html deleted file mode 100644 index 7335a850..00000000 --- a/docs/types/packets.SdesPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -SdesPacketDump | rtp.js - v0.12.0

Type alias SdesPacketDump

SdesPacketDump: RtcpPacketDump & {
    chunks: SdesChunkDump[];
}

RTCP SDES packet info dump.

-

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.SenderReportPacketDump.html b/docs/types/packets.SenderReportPacketDump.html deleted file mode 100644 index 761724cb..00000000 --- a/docs/types/packets.SenderReportPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -SenderReportPacketDump | rtp.js - v0.12.0

Type alias SenderReportPacketDump

SenderReportPacketDump: RtcpPacketDump & {
    ntpFraction: number;
    ntpSeq: number;
    octetCount: number;
    packetCount: number;
    reports: ReceptionReportDump[];
    rtpTimestamp: number;
    ssrc: number;
}

RTCP Sender Report packet info dump.

-

Type declaration

  • ntpFraction: number
  • ntpSeq: number
  • octetCount: number
  • packetCount: number
  • reports: ReceptionReportDump[]
  • rtpTimestamp: number
  • ssrc: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.SerializableDump.html b/docs/types/packets.SerializableDump.html deleted file mode 100644 index 504f0ebe..00000000 --- a/docs/types/packets.SerializableDump.html +++ /dev/null @@ -1,2 +0,0 @@ -SerializableDump | rtp.js - v0.12.0

Type alias SerializableDump

SerializableDump: {
    byteLength: number;
}

Serializable info dump.

-

Type declaration

  • byteLength: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.SliPacketDump.html b/docs/types/packets.SliPacketDump.html deleted file mode 100644 index 05bbb193..00000000 --- a/docs/types/packets.SliPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -SliPacketDump | rtp.js - v0.12.0

Type alias SliPacketDump

SliPacketDump: FeedbackPacketDump & {
    items: {
        first: number;
        number: number;
        pictureId: number;
    }[];
}

RTCP SLI packet info dump.

-

Type declaration

  • items: {
        first: number;
        number: number;
        pictureId: number;
    }[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.SrReqPacketDump.html b/docs/types/packets.SrReqPacketDump.html deleted file mode 100644 index 9fba0b0b..00000000 --- a/docs/types/packets.SrReqPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -SrReqPacketDump | rtp.js - v0.12.0

Type alias SrReqPacketDump

SrReqPacketDump: FeedbackPacketDump

RTCP SR REQ packet info dump.

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.SsrcAudioLevelExtension.html b/docs/types/packets.SsrcAudioLevelExtension.html deleted file mode 100644 index e2c6621e..00000000 --- a/docs/types/packets.SsrcAudioLevelExtension.html +++ /dev/null @@ -1,8 +0,0 @@ -SsrcAudioLevelExtension | rtp.js - v0.12.0

Type alias SsrcAudioLevelExtension

SsrcAudioLevelExtension: {
    voice: boolean;
    volume: number;
}

SSRC Audio Level data.

-

Type declaration

  • voice: boolean

    Whether the encoder believes the audio packet contains voice activity.

    -
  • volume: number

    Audio level expressed in -dBov, with values from 0 to 127 representing 0 -to -127 dBov.

    -

See

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.VMExtendedReportDump.html b/docs/types/packets.VMExtendedReportDump.html deleted file mode 100644 index 1a081f50..00000000 --- a/docs/types/packets.VMExtendedReportDump.html +++ /dev/null @@ -1,2 +0,0 @@ -VmExtendedReportDump | rtp.js - v0.12.0

Type alias VmExtendedReportDump

VmExtendedReportDump: ExtendedReportDump & {
    burstDensity: number;
    burstDuration: number;
    discardRate: number;
    endSystemDelay: number;
    extRFactor: number;
    gapDensity: number;
    gapDuration: number;
    gmin: number;
    jbAbsMax: number;
    jbMax: number;
    jbNominal: number;
    jbRate: number;
    jba: number;
    lossRate: number;
    mosCq: number;
    mosLq: number;
    noiseLevel: number;
    plc: number;
    rFactor: number;
    rerl: number;
    roundTripDelay: number;
    signalLevel: number;
    ssrc: number;
}

VoIP Metrics Extended Report dump.

-

Type declaration

  • burstDensity: number
  • burstDuration: number
  • discardRate: number
  • endSystemDelay: number
  • extRFactor: number
  • gapDensity: number
  • gapDuration: number
  • gmin: number
  • jbAbsMax: number
  • jbMax: number
  • jbNominal: number
  • jbRate: number
  • jba: number
  • lossRate: number
  • mosCq: number
  • mosLq: number
  • noiseLevel: number
  • plc: number
  • rFactor: number
  • rerl: number
  • roundTripDelay: number
  • signalLevel: number
  • ssrc: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.VideoOrientationExtension.html b/docs/types/packets.VideoOrientationExtension.html deleted file mode 100644 index 91eb0398..00000000 --- a/docs/types/packets.VideoOrientationExtension.html +++ /dev/null @@ -1,9 +0,0 @@ -VideoOrientationExtension | rtp.js - v0.12.0

Type alias VideoOrientationExtension

VideoOrientationExtension: {
    camera: boolean;
    flip: boolean;
    rotation: number;
}

Video Orientation data.

-

Type declaration

  • camera: boolean
  • flip: boolean
  • rotation: number

    0: no rotation. -1: rotation is 90º. -2: rotation is 180º. -3: rotation is 270º.

    -

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/packets.XrPacketDump.html b/docs/types/packets.XrPacketDump.html deleted file mode 100644 index 4ca756f9..00000000 --- a/docs/types/packets.XrPacketDump.html +++ /dev/null @@ -1,2 +0,0 @@ -XrPacketDump | rtp.js - v0.12.0

Type alias XrPacketDump

XrPacketDump: RtcpPacketDump & {
    reports: ExtendedReportDump[];
    ssrc: number;
}

RTCP XR packet info dump.

-

Type declaration

Generated using TypeDoc

\ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..b62ac546 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,179 @@ +import eslint from '@eslint/js'; +import tsEslint from 'typescript-eslint'; +import jestEslint from 'eslint-plugin-jest'; +import prettierRecommendedEslint from 'eslint-plugin-prettier/recommended'; +import globals from 'globals'; + +const config = tsEslint.config( + { + languageOptions: { + sourceType: 'module', + globals: { ...globals.browser }, + }, + linterOptions: { + noInlineConfig: false, + reportUnusedDisableDirectives: 'error', + }, + }, + eslint.configs.recommended, + { + rules: { + 'constructor-super': 2, + curly: [2, 'all'], + // Unfortunatelly `curly` does not apply to blocks in `switch` cases so + // this is needed. + 'no-restricted-syntax': [ + 2, + { + selector: 'SwitchCase > *.consequent[type!="BlockStatement"]', + message: 'Switch cases without blocks are disallowed', + }, + ], + 'guard-for-in': 2, + 'newline-after-var': 2, + 'newline-before-return': 2, + 'no-alert': 2, + 'no-caller': 2, + 'no-case-declarations': 2, + 'no-catch-shadow': 2, + 'no-class-assign': 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-eval': 2, + 'no-extend-native': 2, + 'no-ex-assign': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-label': 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-multi-str': 2, + '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-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-undef': 2, + 'no-unmodified-loop-condition': 2, + 'no-unreachable': 2, + 'no-unused-vars': [ + 2, + { vars: 'all', args: 'after-used', caughtErrors: 'none' }, + ], + 'no-use-before-define': 0, + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-concat': 2, + 'no-useless-rename': 2, + 'no-var': 2, + 'object-curly-newline': 0, + 'prefer-const': 2, + 'prefer-rest-params': 2, + 'prefer-spread': 2, + 'prefer-template': 2, + 'spaced-comment': [2, 'always'], + strict: 2, + 'valid-typeof': 2, + yoda: 2, + }, + }, + // NOTE: We need to apply this only to .ts files (and not to .mjs files). + ...tsEslint.configs.recommendedTypeChecked.map(item => ({ + ...item, + files: ['src/**/*.ts'], + })), + // NOTE: We need to apply this only to .ts files (and not to .mjs files). + ...tsEslint.configs.stylisticTypeChecked.map(item => ({ + ...item, + files: ['src/**/*.ts'], + })), + { + name: 'mediasoup-client .ts files', + files: ['src/**/*.ts'], + languageOptions: { + parserOptions: { + projectService: true, + project: 'tsconfig.json', + }, + }, + rules: { + '@typescript-eslint/consistent-generic-constructors': [ + 2, + 'type-annotation', + ], + '@typescript-eslint/dot-notation': 0, + '@typescript-eslint/no-unused-vars': [ + 2, + { + vars: 'all', + args: 'after-used', + caughtErrors: 'none', + ignoreRestSiblings: false, + }, + ], + // We want to use `type` instead of `interface`. + '@typescript-eslint/consistent-type-definitions': 0, + // Sorry, we need many `any` usage. + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/no-inferrable-types': 0, + '@typescript-eslint/no-unsafe-member-access': 0, + '@typescript-eslint/no-unsafe-assignment': 0, + '@typescript-eslint/no-unsafe-call': 0, + '@typescript-eslint/no-unsafe-return': 0, + '@typescript-eslint/no-unsafe-argument': 0, + '@typescript-eslint/consistent-indexed-object-style': 0, + '@typescript-eslint/no-empty-function': 0, + '@typescript-eslint/require-await': 0, + '@typescript-eslint/restrict-template-expressions': 0, + '@typescript-eslint/no-duplicate-type-constituents': [ + 2, + { ignoreUnions: true }, + ], + '@typescript-eslint/unbound-method': 0, + }, + }, + { + name: 'mediasoup-client .ts test files', + ...jestEslint.configs['flat/recommended'], + files: ['src/test/**/*.ts'], + rules: { + ...jestEslint.configs['flat/recommended'].rules, + 'jest/no-disabled-tests': 2, + 'jest/prefer-expect-assertions': 0, + '@typescript-eslint/no-unnecessary-type-assertion': 0, + }, + }, + prettierRecommendedEslint +); + +export default config; diff --git a/npm-scripts.mjs b/npm-scripts.mjs index 300f3143..603919ca 100644 --- a/npm-scripts.mjs +++ b/npm-scripts.mjs @@ -6,16 +6,21 @@ const PKG = JSON.parse(fs.readFileSync('./package.json').toString()); const RELEASE_BRANCH = 'master'; // Paths for ESLint to check. Converted to string for convenience. -const ESLINT_PATHS = ['src', 'npm-scripts.mjs'].join(' '); +const ESLINT_PATHS = [ + 'eslint.config.mjs', + 'typedoc.config.mjs', + 'src', + 'npm-scripts.mjs', +].join(' '); // Paths for ESLint to ignore. Converted to string argument for convenience. const ESLINT_IGNORE_PATTERN_ARGS = [] .map(entry => `--ignore-pattern ${entry}`) .join(' '); // Paths for Prettier to check/write. Converted to string for convenience. -// NOTE: Prettier ignores paths in .gitignore so we don't need to care about -// node/src/fbs. const PRETTIER_PATHS = [ 'README.md', + 'eslint.config.mjs', + 'typedoc.config.mjs', 'src', 'npm-scripts.mjs', 'package.json', @@ -114,6 +119,20 @@ async function run() { break; } + case 'docs:watch': { + generateDocs(); + executeCmd('open-cli docs/index.html'); + executeCmd('typedoc --watch'); + + break; + } + + case 'docs:check': { + checkDocs(); + + break; + } + default: { logError('unknown task'); @@ -148,10 +167,10 @@ function lint() { // Ensure there are no rules that are unnecessary or conflict with Prettier // rules. - executeCmd('eslint-config-prettier .eslintrc.js'); + executeCmd('eslint-config-prettier eslint.config.mjs'); executeCmd( - `eslint -c .eslintrc.js --ext=ts,js,mjs --max-warnings 0 ${ESLINT_IGNORE_PATTERN_ARGS} ${ESLINT_PATHS}`, + `eslint -c eslint.config.mjs --max-warnings 0 ${ESLINT_IGNORE_PATTERN_ARGS} ${ESLINT_PATHS}` ); executeCmd(`prettier --check ${PRETTIER_PATHS}`); @@ -185,6 +204,7 @@ function checkRelease() { buildTypescript({ force: true }); lint(); test(); + checkDocs(); } function generateDocs() { @@ -196,6 +216,12 @@ function generateDocs() { executeCmd('typedoc && touch docs/.nojekyll'); } +function checkDocs() { + logInfo('checkDocs()'); + + executeCmd('typedoc --emit none'); +} + function executeCmd(command, exitOnError = true) { logInfo(`executeCmd(): ${command}`); diff --git a/package-lock.json b/package-lock.json index 74779d39..34b79705 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,26 +10,29 @@ "license": "ISC", "dependencies": { "debug": "^4.4.0", - "supports-color": "^9.4.0" + "supports-color": "^10.0.0" }, "devDependencies": { + "@eslint/js": "^9.17.0", "@types/debug": "^4.1.12", "@types/jest": "^29.5.14", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", + "@typescript-eslint/eslint-plugin": "^8.19.0", + "@typescript-eslint/parser": "^8.19.0", + "eslint": "^9.17.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-jest": "^28.8.3", + "eslint-plugin-jest": "^28.10.0", "eslint-plugin-prettier": "^5.2.1", + "globals": "^15.14.0", "jest": "^29.7.0", "open-cli": "^8.0.0", - "prettier": "^3.3.3", + "prettier": "^3.4.2", "ts-jest": "^29.2.5", - "typedoc": "^0.25.13", - "typescript": "~5.4.5" + "typedoc": "^0.27.6", + "typescript": "~5.7.2", + "typescript-eslint": "^8.19.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -487,6 +490,16 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/types": { "version": "7.26.3", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", @@ -523,24 +536,54 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -548,7 +591,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -558,18 +601,17 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -580,6 +622,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -587,39 +630,87 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@eslint/js": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "node_modules/@gerrit0/mini-shiki": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.25.1.tgz", + "integrity": "sha512-BQ3iwLtmacJpW59cB0TM4ATGMLIz+Ps+9MUxrd7ds4MtYzzPvT6WLYpabYIqEP190hU0Olb8guXZmVp9o58ntw==", "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-oniguruma": "^1.25.1", + "@shikijs/types": "^1.25.1", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -635,11 +726,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -1336,6 +1435,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1349,6 +1449,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -1358,6 +1459,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1379,6 +1481,35 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.26.1.tgz", + "integrity": "sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.26.1", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/types": { + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.26.1.tgz", + "integrity": "sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", + "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==", + "dev": true, + "license": "MIT" + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -1459,6 +1590,13 @@ "@types/ms": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/graceful-fs": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz", @@ -1468,6 +1606,16 @@ "@types/node": "*" } }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -1507,7 +1655,8 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.31", @@ -1521,18 +1670,19 @@ "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==", "dev": true }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/yargs": { "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", @@ -1549,79 +1699,72 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", - "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.0.tgz", + "integrity": "sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/type-utils": "7.8.0", - "@typescript-eslint/utils": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", - "debug": "^4.3.4", + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/type-utils": "8.19.0", + "@typescript-eslint/utils": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz", - "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.0.tgz", + "integrity": "sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/typescript-estree": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", - "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz", + "integrity": "sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0" + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1629,39 +1772,37 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", - "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.0.tgz", + "integrity": "sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/typescript-estree": "8.19.0", + "@typescript-eslint/utils": "8.19.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", - "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.0.tgz", + "integrity": "sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==", "dev": true, + "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1669,31 +1810,30 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", - "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz", + "integrity": "sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { @@ -1721,58 +1861,66 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", - "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.0.tgz", + "integrity": "sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.15", - "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "semver": "^7.6.0" + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/typescript-estree": "8.19.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", - "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz", + "integrity": "sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.8.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.19.0", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1785,6 +1933,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -1794,6 +1943,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1829,12 +1979,6 @@ "node": ">=8" } }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "dev": true - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -1857,15 +2001,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -2466,30 +2601,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/ejs": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", @@ -2530,6 +2641,19 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2549,58 +2673,63 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.17.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { @@ -2616,9 +2745,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.8.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.3.tgz", - "integrity": "sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==", + "version": "28.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.10.0.tgz", + "integrity": "sha512-hyMWUxkBH99HpXT3p8hc7REbEZK3D+nk8vHXGgpB+XXsi0gO4PxMSP+pjfUzb67GnV9yawV9a53eUmcde1CCZA==", "dev": true, "license": "MIT", "dependencies": { @@ -2672,6 +2801,23 @@ } } }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -2699,12 +2845,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2751,31 +2891,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2792,33 +2920,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2861,30 +2962,32 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2915,20 +3018,12 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -2936,11 +3031,12 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -2950,6 +3046,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -3006,7 +3103,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", @@ -3019,6 +3117,7 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3035,6 +3134,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3055,10 +3155,11 @@ "dev": true }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -3073,15 +3174,16 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/file-type": { @@ -3161,23 +3263,25 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -3289,29 +3393,13 @@ } }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3399,6 +3487,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3415,6 +3504,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -3563,15 +3653,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -5219,6 +5300,13 @@ "node": ">=6" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -5229,7 +5317,8 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -5249,11 +5338,15 @@ "node": ">=6" } }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } }, "node_modules/kleur": { "version": "3.0.3", @@ -5292,6 +5385,16 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -5361,18 +5464,38 @@ "tmpl": "1.0.5" } }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, - "bin": { - "marked": "bin/marked.js" + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, - "engines": { - "node": ">= 12" + "bin": { + "markdown-it": "bin/markdown-it.mjs" } }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, "node_modules/meow": { "version": "12.1.1", "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", @@ -5396,6 +5519,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -5617,6 +5741,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -5675,15 +5800,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/peek-readable": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", @@ -5746,9 +5862,9 @@ } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, "license": "MIT", "bin": { @@ -5817,6 +5933,17 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5855,7 +5982,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/react-is": { "version": "18.2.0", @@ -5954,26 +6082,12 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/run-applescript": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", @@ -6005,6 +6119,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -6063,18 +6178,6 @@ "node": ">=8" } }, - "node_modules/shiki": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", - "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", - "dev": true, - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -6238,11 +6341,12 @@ } }, "node_modules/supports-color": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", - "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.0.0.tgz", + "integrity": "sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/supports-color?sponsor=1" @@ -6342,12 +6446,6 @@ "node": ">=8" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -6486,24 +6584,26 @@ } }, "node_modules/typedoc": { - "version": "0.25.13", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", - "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==", + "version": "0.27.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.6.tgz", + "integrity": "sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==", "dev": true, + "license": "Apache-2.0", "dependencies": { + "@gerrit0/mini-shiki": "^1.24.0", "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.3", - "shiki": "^0.14.7" + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "yaml": "^2.6.1" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 16" + "node": ">= 18" }, "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x" + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x" } }, "node_modules/typedoc/node_modules/brace-expansion": { @@ -6511,15 +6611,17 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6531,10 +6633,11 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6543,6 +6646,36 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.0.tgz", + "integrity": "sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.19.0", + "@typescript-eslint/parser": "8.19.0", + "@typescript-eslint/utils": "8.19.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, "node_modules/unique-string": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", @@ -6593,6 +6726,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -6623,18 +6757,6 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -6743,6 +6865,19 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -7109,6 +7244,14 @@ "@babel/types": "^7.26.3", "debug": "^4.3.1", "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } } }, "@babel/types": { @@ -7137,21 +7280,41 @@ } }, "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true }, + "@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "requires": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + } + }, + "@eslint/core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.15" + } + }, "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -7166,13 +7329,10 @@ "dev": true }, "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true }, "js-yaml": { "version": "4.1.0", @@ -7182,30 +7342,63 @@ "requires": { "argparse": "^2.0.1" } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true } } }, "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "dev": true + }, + "@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", "dev": true }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "@eslint/plugin-kit": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "levn": "^0.4.1" + } + }, + "@gerrit0/mini-shiki": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.25.1.tgz", + "integrity": "sha512-BQ3iwLtmacJpW59cB0TM4ATGMLIz+Ps+9MUxrd7ds4MtYzzPvT6WLYpabYIqEP190hU0Olb8guXZmVp9o58ntw==", + "dev": true, + "requires": { + "@shikijs/engine-oniguruma": "^1.25.1", + "@shikijs/types": "^1.25.1", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true + }, + "@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "requires": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "dependencies": { + "@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true + } } }, "@humanwhocodes/module-importer": { @@ -7214,10 +7407,10 @@ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true }, - "@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -7780,6 +7973,32 @@ "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true }, + "@shikijs/engine-oniguruma": { + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.26.1.tgz", + "integrity": "sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==", + "dev": true, + "requires": { + "@shikijs/types": "1.26.1", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "@shikijs/types": { + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.26.1.tgz", + "integrity": "sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==", + "dev": true, + "requires": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "@shikijs/vscode-textmate": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", + "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==", + "dev": true + }, "@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -7860,6 +8079,12 @@ "@types/ms": "*" } }, + "@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, "@types/graceful-fs": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.8.tgz", @@ -7869,6 +8094,15 @@ "@types/node": "*" } }, + "@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -7921,18 +8155,18 @@ "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==", "dev": true }, - "@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, "@types/yargs": { "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", @@ -7949,75 +8183,73 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", - "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.0.tgz", + "integrity": "sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/type-utils": "7.8.0", - "@typescript-eslint/utils": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", - "debug": "^4.3.4", + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/type-utils": "8.19.0", + "@typescript-eslint/utils": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.6.0", "ts-api-utils": "^1.3.0" } }, "@typescript-eslint/parser": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz", - "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.0.tgz", + "integrity": "sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/typescript-estree": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", - "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz", + "integrity": "sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==", "dev": true, "requires": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0" + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0" } }, "@typescript-eslint/type-utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", - "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.0.tgz", + "integrity": "sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/typescript-estree": "8.19.0", + "@typescript-eslint/utils": "8.19.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" } }, "@typescript-eslint/types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", - "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.0.tgz", + "integrity": "sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", - "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz", + "integrity": "sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==", "dev": true, "requires": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/visitor-keys": "8.19.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", @@ -8045,40 +8277,39 @@ } }, "@typescript-eslint/utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", - "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.0.tgz", + "integrity": "sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.15", - "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "semver": "^7.6.0" + "@typescript-eslint/scope-manager": "8.19.0", + "@typescript-eslint/types": "8.19.0", + "@typescript-eslint/typescript-estree": "8.19.0" } }, "@typescript-eslint/visitor-keys": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", - "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz", + "integrity": "sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==", "dev": true, "requires": { - "@typescript-eslint/types": "7.8.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.19.0", + "eslint-visitor-keys": "^4.2.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true + } } }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true }, "acorn-jsx": { @@ -8115,12 +8346,6 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "dev": true - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -8140,12 +8365,6 @@ "sprintf-js": "~1.0.2" } }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, "async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -8557,24 +8776,6 @@ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "ejs": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", @@ -8602,6 +8803,12 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -8618,49 +8825,45 @@ "dev": true }, "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.17.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "dependencies": { "ansi-styles": { @@ -8672,12 +8875,6 @@ "color-convert": "^2.0.1" } }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -8709,20 +8906,10 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true }, "find-up": { @@ -8735,24 +8922,6 @@ "path-exists": "^4.0.0" } }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -8779,12 +8948,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true } } }, @@ -8796,9 +8959,9 @@ "requires": {} }, "eslint-plugin-jest": { - "version": "28.8.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.3.tgz", - "integrity": "sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==", + "version": "28.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.10.0.tgz", + "integrity": "sha512-hyMWUxkBH99HpXT3p8hc7REbEZK3D+nk8vHXGgpB+XXsi0gO4PxMSP+pjfUzb67GnV9yawV9a53eUmcde1CCZA==", "dev": true, "requires": { "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -8814,6 +8977,16 @@ "synckit": "^0.9.1" } }, + "eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, "eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -8821,14 +8994,22 @@ "dev": true }, "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "requires": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true + } } }, "esprima": { @@ -8844,14 +9025,6 @@ "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "esrecurse": { @@ -8861,16 +9034,14 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -8962,9 +9133,9 @@ "dev": true }, "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -8980,12 +9151,12 @@ } }, "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "requires": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" } }, "file-type": { @@ -9048,19 +9219,19 @@ } }, "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "flatted": "^3.2.9", + "keyv": "^4.5.4" } }, "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, "fs.realpath": { @@ -9136,25 +9307,11 @@ } }, "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -9319,12 +9476,6 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -10549,6 +10700,12 @@ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -10573,11 +10730,14 @@ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } }, "kleur": { "version": "3.0.3", @@ -10607,6 +10767,15 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "requires": { + "uc.micro": "^2.0.0" + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -10667,10 +10836,32 @@ "tmpl": "1.0.5" } }, - "marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + } + } + }, + "mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true }, "meow": { @@ -10891,12 +11082,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, "peek-readable": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", @@ -10937,9 +11122,9 @@ "dev": true }, "prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true }, "prettier-linter-helpers": { @@ -10986,6 +11171,12 @@ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true }, + "punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true + }, "pure-rand": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", @@ -11068,15 +11259,6 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "run-applescript": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", @@ -11119,18 +11301,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "shiki": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", - "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", - "dev": true, - "requires": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -11256,9 +11426,9 @@ } }, "supports-color": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", - "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.0.0.tgz", + "integrity": "sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==" }, "supports-preserve-symlinks-flag": { "version": "1.0.0", @@ -11319,12 +11489,6 @@ "minimatch": "^3.0.4" } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -11402,15 +11566,16 @@ "dev": true }, "typedoc": { - "version": "0.25.13", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", - "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==", + "version": "0.27.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.6.tgz", + "integrity": "sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==", "dev": true, "requires": { + "@gerrit0/mini-shiki": "^1.24.0", "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.3", - "shiki": "^0.14.7" + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "yaml": "^2.6.1" }, "dependencies": { "brace-expansion": { @@ -11423,9 +11588,9 @@ } }, "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -11434,9 +11599,26 @@ } }, "typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true + }, + "typescript-eslint": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.0.tgz", + "integrity": "sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.19.0", + "@typescript-eslint/parser": "8.19.0", + "@typescript-eslint/utils": "8.19.0" + } + }, + "uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true }, "unique-string": { @@ -11492,18 +11674,6 @@ } } }, - "vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -11587,6 +11757,12 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true + }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/package.json b/package.json index e0b47179..82ea3d65 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "nodejs" ], "engines": { - "node": ">=16" + "node": ">=18" }, "scripts": { "prepare": "node npm-scripts.mjs prepare", @@ -37,7 +37,9 @@ "coverage": "node npm-scripts.mjs coverage", "release:check": "node npm-scripts.mjs release:check", "release": "node npm-scripts.mjs release", - "docs": "node npm-scripts.mjs docs" + "docs": "node npm-scripts.mjs docs", + "docs:watch": "node npm-scripts.mjs docs:watch", + "docs:check": "node npm-scripts.mjs docs:check" }, "jest": { "verbose": true, @@ -64,22 +66,25 @@ }, "dependencies": { "debug": "^4.4.0", - "supports-color": "^9.4.0" + "supports-color": "^10.0.0" }, "devDependencies": { "@types/debug": "^4.1.12", + "@eslint/js": "^9.17.0", "@types/jest": "^29.5.14", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "eslint": "^8.57.0", + "@typescript-eslint/eslint-plugin": "^8.19.0", + "@typescript-eslint/parser": "^8.19.0", + "eslint": "^9.17.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-jest": "^28.8.3", + "eslint-plugin-jest": "^28.10.0", "eslint-plugin-prettier": "^5.2.1", + "globals": "^15.14.0", "jest": "^29.7.0", "open-cli": "^8.0.0", - "prettier": "^3.3.3", + "prettier": "^3.4.2", "ts-jest": "^29.2.5", - "typedoc": "^0.25.13", - "typescript": "~5.4.5" + "typedoc": "^0.27.6", + "typescript": "~5.7.2", + "typescript-eslint": "^8.19.0" } } diff --git a/src/packets/RTCP/ByePacket.ts b/src/packets/RTCP/ByePacket.ts index 1fd7edcd..9df53142 100644 --- a/src/packets/RTCP/ByePacket.ts +++ b/src/packets/RTCP/ByePacket.ts @@ -94,7 +94,7 @@ export class ByePacket extends RtcpPacket { const reasonView = new DataView( this.view.buffer, this.view.byteOffset + pos, - reasonLength, + reasonLength ); this.#reason = dataViewToString(reasonView); @@ -107,7 +107,7 @@ export class ByePacket extends RtcpPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -171,7 +171,7 @@ export class ByePacket extends RtcpPacket { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Write reason length. @@ -192,7 +192,7 @@ export class ByePacket extends RtcpPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -209,13 +209,13 @@ export class ByePacket extends RtcpPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): ByePacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new ByePacket(view); diff --git a/src/packets/RTCP/CompoundPacket.ts b/src/packets/RTCP/CompoundPacket.ts index e12a49a1..83163bf3 100644 --- a/src/packets/RTCP/CompoundPacket.ts +++ b/src/packets/RTCP/CompoundPacket.ts @@ -76,7 +76,7 @@ export class CompoundPacket extends Packet { const remainingView = new DataView( this.view.buffer, this.view.byteOffset + pos, - this.view.byteLength - pos, + this.view.byteLength - pos ); const packetLength = getRtcpLength(remainingView); @@ -84,7 +84,7 @@ export class CompoundPacket extends Packet { const packetView = new DataView( this.view.buffer, this.view.byteOffset + pos, - packetLength, + packetLength ); let packet: RtcpPacket; @@ -195,7 +195,7 @@ export class CompoundPacket extends Packet { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -220,7 +220,7 @@ export class CompoundPacket extends Packet { const packetLength = this.#packets.reduce( (sum, packet) => sum + packet.getByteLength(), - 0, + 0 ); return packetLength; @@ -264,7 +264,7 @@ export class CompoundPacket extends Packet { const view = new DataView( bufferData.buffer, bufferData.byteOffset, - bufferData.byteLength, + bufferData.byteLength ); // Position relative to the DataView byte offset. @@ -279,7 +279,7 @@ export class CompoundPacket extends Packet { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -296,13 +296,13 @@ export class CompoundPacket extends Packet { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): CompoundPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new CompoundPacket(view); diff --git a/src/packets/RTCP/EcnPacket.ts b/src/packets/RTCP/EcnPacket.ts index 8b13323d..637037cc 100644 --- a/src/packets/RTCP/EcnPacket.ts +++ b/src/packets/RTCP/EcnPacket.ts @@ -84,7 +84,7 @@ export class EcnPacket extends FeedbackPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -120,7 +120,7 @@ export class EcnPacket extends FeedbackPacket { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -134,9 +134,9 @@ export class EcnPacket extends FeedbackPacket { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - ECN_PACKET_LENGTH - FIXED_HEADER_LENGTH, + ECN_PACKET_LENGTH - FIXED_HEADER_LENGTH ), - pos, + pos ); pos += ECN_PACKET_LENGTH - FIXED_HEADER_LENGTH; @@ -146,7 +146,7 @@ export class EcnPacket extends FeedbackPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -163,13 +163,13 @@ export class EcnPacket extends FeedbackPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): EcnPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new EcnPacket(view); diff --git a/src/packets/RTCP/ExtendedJitterReportsPacket.ts b/src/packets/RTCP/ExtendedJitterReportsPacket.ts index 18ee76fc..afaec21e 100644 --- a/src/packets/RTCP/ExtendedJitterReportsPacket.ts +++ b/src/packets/RTCP/ExtendedJitterReportsPacket.ts @@ -79,7 +79,7 @@ export class ExtendedJitterReportsPacket extends RtcpPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -132,7 +132,7 @@ export class ExtendedJitterReportsPacket extends RtcpPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -149,13 +149,13 @@ export class ExtendedJitterReportsPacket extends RtcpPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): ExtendedJitterReportsPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new ExtendedJitterReportsPacket(view); diff --git a/src/packets/RTCP/ExtendedReports/DlrrExtendedReport.ts b/src/packets/RTCP/ExtendedReports/DlrrExtendedReport.ts index ae6eec52..2619f616 100644 --- a/src/packets/RTCP/ExtendedReports/DlrrExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/DlrrExtendedReport.ts @@ -162,7 +162,7 @@ export class DlrrExtendedReport extends ExtendedReport { if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)` ); } @@ -179,13 +179,13 @@ export class DlrrExtendedReport extends ExtendedReport { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): DlrrExtendedReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new DlrrExtendedReport(view); diff --git a/src/packets/RTCP/ExtendedReports/DrleExtendedReport.ts b/src/packets/RTCP/ExtendedReports/DrleExtendedReport.ts index 3e1c77e9..a57684cf 100644 --- a/src/packets/RTCP/ExtendedReports/DrleExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/DrleExtendedReport.ts @@ -62,7 +62,7 @@ export class DrleExtendedReport extends ExtendedReport { if (!this.view) { this.view = new DataView( - new ArrayBuffer(DRLE_EXTENDED_REPORT_MIN_LENGTH), + new ArrayBuffer(DRLE_EXTENDED_REPORT_MIN_LENGTH) ); // Write report type. @@ -73,7 +73,7 @@ export class DrleExtendedReport extends ExtendedReport { if (this.view.byteLength < DRLE_EXTENDED_REPORT_MIN_LENGTH) { throw new TypeError( - 'wrong byte length for a Duplicate RLE Extended Report', + 'wrong byte length for a Duplicate RLE Extended Report' ); } @@ -139,7 +139,7 @@ export class DrleExtendedReport extends ExtendedReport { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -153,9 +153,9 @@ export class DrleExtendedReport extends ExtendedReport { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - DRLE_EXTENDED_REPORT_MIN_LENGTH - COMMON_HEADER_LENGTH, + DRLE_EXTENDED_REPORT_MIN_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to chunks. @@ -173,7 +173,7 @@ export class DrleExtendedReport extends ExtendedReport { if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)` ); } @@ -190,13 +190,13 @@ export class DrleExtendedReport extends ExtendedReport { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): DrleExtendedReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new DrleExtendedReport(view); diff --git a/src/packets/RTCP/ExtendedReports/EcnExtendedReport.ts b/src/packets/RTCP/ExtendedReports/EcnExtendedReport.ts index 6f72c6f4..89508ec1 100644 --- a/src/packets/RTCP/ExtendedReports/EcnExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/EcnExtendedReport.ts @@ -50,6 +50,7 @@ export type EcnExtendedReportDump = ExtendedReportDump & { */ export class EcnExtendedReport extends ExtendedReport { // Chunks (2 bytes numbers, unparsed). + // eslint-disable-next-line no-unused-private-class-members #chunks: number[] = []; /** @@ -70,7 +71,7 @@ export class EcnExtendedReport extends ExtendedReport { if (this.view.byteLength !== ECN_EXTENDED_REPORT_LENGTH) { throw new TypeError( - 'wrong byte length for a ECN Summary Extended Report', + 'wrong byte length for a ECN Summary Extended Report' ); } } @@ -106,7 +107,7 @@ export class EcnExtendedReport extends ExtendedReport { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -120,9 +121,9 @@ export class EcnExtendedReport extends ExtendedReport { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - ECN_EXTENDED_REPORT_LENGTH - COMMON_HEADER_LENGTH, + ECN_EXTENDED_REPORT_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to the end. @@ -130,7 +131,7 @@ export class EcnExtendedReport extends ExtendedReport { if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)` ); } @@ -147,13 +148,13 @@ export class EcnExtendedReport extends ExtendedReport { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): EcnExtendedReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new EcnExtendedReport(view); diff --git a/src/packets/RTCP/ExtendedReports/ExtendedReport.ts b/src/packets/RTCP/ExtendedReports/ExtendedReport.ts index 41a33495..6d6177a9 100644 --- a/src/packets/RTCP/ExtendedReports/ExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/ExtendedReport.ts @@ -8,9 +8,6 @@ export const COMMON_HEADER_LENGTH = 4; * * @category RTCP Extended Reports */ -// ESLint absurdly complains about "'ExtendedReportType' is already declared in -// the upper scope". -// eslint-disable-next-line no-shadow export enum ExtendedReportType { /** * Loss RLE Report. @@ -87,12 +84,12 @@ export function getExtendedReportLength(view: DataView): number { */ export function setExtendedReportLength( view: DataView, - byteLength: number, + byteLength: number ): void { // Report byte length must be multiple of 4. if (byteLength % 4 !== 0) { throw new RangeError( - `Extended Report byte length must be multiple of 4 but given byte length is ${byteLength} bytes`, + `Extended Report byte length must be multiple of 4 but given byte length is ${byteLength} bytes` ); } @@ -177,17 +174,17 @@ export abstract class ExtendedReport extends Serializable { // Extended Report byte length must be multiple of 4. else if (this.view.byteLength % 4 !== 0) { throw new RangeError( - `Extended Report byte length must be multiple of 4 but given buffer view is ${this.view.byteLength} bytes`, + `Extended Report byte length must be multiple of 4 but given buffer view is ${this.view.byteLength} bytes` ); } else if (getExtendedReportType(this.view) !== reportType) { throw new TypeError( - `not a ${reportTypeToString(reportType)} Extended Report`, + `not a ${reportTypeToString(reportType)} Extended Report` ); } else if (getExtendedReportLength(this.view) !== this.view.byteLength) { throw new RangeError( `length in the RTCP header (${getExtendedReportLength( - this.view, - )} bytes) does not match view length (${this.view.byteLength} bytes)`, + this.view + )} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -230,12 +227,12 @@ export abstract class ExtendedReport extends Serializable { const view = new DataView( bufferData.buffer, bufferData.byteOffset, - bufferData.byteLength, + bufferData.byteLength ); const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Copy the common header into the new buffer. @@ -243,9 +240,9 @@ export abstract class ExtendedReport extends Serializable { new Uint8Array( this.view.buffer, this.view.byteOffset, - COMMON_HEADER_LENGTH, + COMMON_HEADER_LENGTH ), - 0, + 0 ); // Update the report length field in the report header. diff --git a/src/packets/RTCP/ExtendedReports/GenericExtendedReport.ts b/src/packets/RTCP/ExtendedReports/GenericExtendedReport.ts index adce7f1e..c8f11db8 100644 --- a/src/packets/RTCP/ExtendedReports/GenericExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/GenericExtendedReport.ts @@ -62,7 +62,7 @@ export class GenericExtendedReport extends ExtendedReport { this.#bodyView = new DataView( this.view.buffer, this.view.byteOffset + COMMON_HEADER_LENGTH, - 0, + 0 ); return; @@ -80,7 +80,7 @@ export class GenericExtendedReport extends ExtendedReport { this.#bodyView = new DataView( this.view.buffer, this.view.byteOffset + pos, - bodyLength, + bodyLength ); pos += bodyLength; @@ -88,7 +88,7 @@ export class GenericExtendedReport extends ExtendedReport { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -121,7 +121,7 @@ export class GenericExtendedReport extends ExtendedReport { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -135,23 +135,23 @@ export class GenericExtendedReport extends ExtendedReport { new Uint8Array( this.#bodyView.buffer, this.#bodyView.byteOffset, - this.#bodyView.byteLength, + this.#bodyView.byteLength ), - pos, + pos ); // Create new body DataView. const bodyView = new DataView( view.buffer, view.byteOffset + pos, - this.#bodyView.byteLength, + this.#bodyView.byteLength ); pos += bodyView.byteLength; if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)` ); } @@ -171,13 +171,13 @@ export class GenericExtendedReport extends ExtendedReport { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): GenericExtendedReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new GenericExtendedReport(view); diff --git a/src/packets/RTCP/ExtendedReports/LrleExtendedReport.ts b/src/packets/RTCP/ExtendedReports/LrleExtendedReport.ts index 3ffbe51c..e7d08112 100644 --- a/src/packets/RTCP/ExtendedReports/LrleExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/LrleExtendedReport.ts @@ -62,7 +62,7 @@ export class LrleExtendedReport extends ExtendedReport { if (!this.view) { this.view = new DataView( - new ArrayBuffer(LRLE_EXTENDED_REPORT_MIN_LENGTH), + new ArrayBuffer(LRLE_EXTENDED_REPORT_MIN_LENGTH) ); // Write report type. @@ -137,7 +137,7 @@ export class LrleExtendedReport extends ExtendedReport { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -151,9 +151,9 @@ export class LrleExtendedReport extends ExtendedReport { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - LRLE_EXTENDED_REPORT_MIN_LENGTH - COMMON_HEADER_LENGTH, + LRLE_EXTENDED_REPORT_MIN_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to chunks. @@ -171,7 +171,7 @@ export class LrleExtendedReport extends ExtendedReport { if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)` ); } @@ -188,13 +188,13 @@ export class LrleExtendedReport extends ExtendedReport { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): LrleExtendedReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new LrleExtendedReport(view); diff --git a/src/packets/RTCP/ExtendedReports/PrtExtendedReport.ts b/src/packets/RTCP/ExtendedReports/PrtExtendedReport.ts index 8fc84ba3..d4099494 100644 --- a/src/packets/RTCP/ExtendedReports/PrtExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/PrtExtendedReport.ts @@ -72,7 +72,7 @@ export class PrtExtendedReport extends ExtendedReport { if (this.view.byteLength < PRT_EXTENDED_REPORT_MIN_LENGTH) { throw new TypeError( - 'wrong byte length for a Packet Receipt Times Extended Report', + 'wrong byte length for a Packet Receipt Times Extended Report' ); } @@ -130,7 +130,7 @@ export class PrtExtendedReport extends ExtendedReport { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -144,9 +144,9 @@ export class PrtExtendedReport extends ExtendedReport { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - PRT_EXTENDED_REPORT_MIN_LENGTH - COMMON_HEADER_LENGTH, + PRT_EXTENDED_REPORT_MIN_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to receipt times. @@ -161,7 +161,7 @@ export class PrtExtendedReport extends ExtendedReport { if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)` ); } @@ -178,13 +178,13 @@ export class PrtExtendedReport extends ExtendedReport { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): PrtExtendedReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new PrtExtendedReport(view); diff --git a/src/packets/RTCP/ExtendedReports/RrtExtendedReport.ts b/src/packets/RTCP/ExtendedReports/RrtExtendedReport.ts index f47486a7..2e8818f7 100644 --- a/src/packets/RTCP/ExtendedReports/RrtExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/RrtExtendedReport.ts @@ -57,7 +57,7 @@ export class RrtExtendedReport extends ExtendedReport { if (this.view.byteLength !== RRT_EXTENDED_REPORT_LENGTH) { throw new TypeError( - 'wrong byte length for a Receiver Reference Time Extended Report', + 'wrong byte length for a Receiver Reference Time Extended Report' ); } } @@ -88,7 +88,7 @@ export class RrtExtendedReport extends ExtendedReport { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -102,9 +102,9 @@ export class RrtExtendedReport extends ExtendedReport { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - RRT_EXTENDED_REPORT_LENGTH - COMMON_HEADER_LENGTH, + RRT_EXTENDED_REPORT_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to the end. @@ -112,7 +112,7 @@ export class RrtExtendedReport extends ExtendedReport { if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)` ); } @@ -129,13 +129,13 @@ export class RrtExtendedReport extends ExtendedReport { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): RrtExtendedReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new RrtExtendedReport(view); diff --git a/src/packets/RTCP/ExtendedReports/SsExtendedReport.ts b/src/packets/RTCP/ExtendedReports/SsExtendedReport.ts index 4bc2b1d5..313681b2 100644 --- a/src/packets/RTCP/ExtendedReports/SsExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/SsExtendedReport.ts @@ -88,7 +88,7 @@ export class SsExtendedReport extends ExtendedReport { if (this.view.byteLength !== SS_EXTENDED_REPORT_LENGTH) { throw new TypeError( - 'wrong byte length for a Statistics Summary Extended Report', + 'wrong byte length for a Statistics Summary Extended Report' ); } } @@ -131,7 +131,7 @@ export class SsExtendedReport extends ExtendedReport { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -145,9 +145,9 @@ export class SsExtendedReport extends ExtendedReport { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - SS_EXTENDED_REPORT_LENGTH - COMMON_HEADER_LENGTH, + SS_EXTENDED_REPORT_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to the end. @@ -155,7 +155,7 @@ export class SsExtendedReport extends ExtendedReport { if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)` ); } @@ -172,13 +172,13 @@ export class SsExtendedReport extends ExtendedReport { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): SsExtendedReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new SsExtendedReport(view); diff --git a/src/packets/RTCP/ExtendedReports/VmExtendedReport.ts b/src/packets/RTCP/ExtendedReports/VmExtendedReport.ts index 0bb593dc..9f0bca17 100644 --- a/src/packets/RTCP/ExtendedReports/VmExtendedReport.ts +++ b/src/packets/RTCP/ExtendedReports/VmExtendedReport.ts @@ -90,7 +90,7 @@ export class VmExtendedReport extends ExtendedReport { if (this.view.byteLength !== VM_EXTENDED_REPORT_LENGTH) { throw new TypeError( - 'wrong byte length for a VoIP Metrics Extended Report', + 'wrong byte length for a VoIP Metrics Extended Report' ); } } @@ -142,7 +142,7 @@ export class VmExtendedReport extends ExtendedReport { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -156,9 +156,9 @@ export class VmExtendedReport extends ExtendedReport { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - VM_EXTENDED_REPORT_LENGTH - COMMON_HEADER_LENGTH, + VM_EXTENDED_REPORT_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to the end. @@ -166,7 +166,7 @@ export class VmExtendedReport extends ExtendedReport { if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) does not match the available buffer size (${view.byteLength} bytes)` ); } @@ -183,13 +183,13 @@ export class VmExtendedReport extends ExtendedReport { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): VmExtendedReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new VmExtendedReport(view); diff --git a/src/packets/RTCP/ExtendedReports/chunks.ts b/src/packets/RTCP/ExtendedReports/chunks.ts index 7b40b118..1bc79c31 100644 --- a/src/packets/RTCP/ExtendedReports/chunks.ts +++ b/src/packets/RTCP/ExtendedReports/chunks.ts @@ -102,7 +102,7 @@ export function parseExtendedReportChunk(chunk: number): ExtendedReportChunk { */ export function createExtendedReportRunLengthChunk( runType: 'zeros' | 'ones', - runLength: number, + runLength: number ): number { if (runLength < 0 || runLength > 16383) { throw new TypeError('invalid run length value'); diff --git a/src/packets/RTCP/FeedbackPacket.ts b/src/packets/RTCP/FeedbackPacket.ts index 3bd624a3..c7628fbe 100644 --- a/src/packets/RTCP/FeedbackPacket.ts +++ b/src/packets/RTCP/FeedbackPacket.ts @@ -17,9 +17,6 @@ export const FIXED_HEADER_LENGTH = COMMON_HEADER_LENGTH + 8; * * @category RTCP */ -// ESLint absurdly complains about "'RtpFeedbackMessageType' is already declared -// in the upper scope". -// eslint-disable-next-line no-shadow export enum RtpFeedbackMessageType { /** * Generic NACK. @@ -40,9 +37,6 @@ export enum RtpFeedbackMessageType { * * @category RTCP */ -// ESLint absurdly complains about "'PsFeedbackMessageType' is already declared -// in the upper scope". -// eslint-disable-next-line no-shadow export enum PsFeedbackMessageType { /** * Picture Loss Indication. @@ -79,13 +73,13 @@ export type FeedbackPacketDump = RtcpPacketDump & { * @hidden */ export function getRtcpFeedbackMessageType( - view: DataView, + view: DataView ): RtpFeedbackMessageType | PsFeedbackMessageType { return readBitsInDataView({ view, pos: 0, mask: 0b00011111 }); } function messageTypeToString( - messageType: RtpFeedbackMessageType | PsFeedbackMessageType, + messageType: RtpFeedbackMessageType | PsFeedbackMessageType ): string { switch (messageType) { case RtpFeedbackMessageType.NACK: { @@ -151,7 +145,7 @@ export abstract class FeedbackPacket extends RtcpPacket { protected constructor( packetType: RtcpPacketType.RTPFB | RtcpPacketType.PSFB, messageType: RtpFeedbackMessageType | PsFeedbackMessageType, - view?: DataView, + view?: DataView ) { super(packetType, view); @@ -161,10 +155,8 @@ export abstract class FeedbackPacket extends RtcpPacket { if (this.getMessageType() !== this.#messageType) { throw new TypeError( `given buffer view is not a RTCP ${packetTypeToString( - this.getPacketType(), - )} packet with ${messageTypeToString( - this.#messageType, - )} message type`, + this.getPacketType() + )} packet with ${messageTypeToString(this.#messageType)} message type` ); } } @@ -234,7 +226,7 @@ export abstract class FeedbackPacket extends RtcpPacket { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -248,9 +240,9 @@ export abstract class FeedbackPacket extends RtcpPacket { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - FIXED_HEADER_LENGTH - COMMON_HEADER_LENGTH, + FIXED_HEADER_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); return view; diff --git a/src/packets/RTCP/GenericFeedbackPacket.ts b/src/packets/RTCP/GenericFeedbackPacket.ts index cdd8fa1e..e633b0eb 100644 --- a/src/packets/RTCP/GenericFeedbackPacket.ts +++ b/src/packets/RTCP/GenericFeedbackPacket.ts @@ -55,14 +55,14 @@ export class GenericFeedbackPacket extends FeedbackPacket { constructor( view?: DataView, packetType?: RtcpPacketType.RTPFB | RtcpPacketType.PSFB, - messageType?: RtpFeedbackMessageType | PsFeedbackMessageType, + messageType?: RtpFeedbackMessageType | PsFeedbackMessageType ) { super( (view ? getRtcpPacketType(view) : packetType!) as | RtcpPacketType.RTPFB | RtcpPacketType.PSFB, view ? getRtcpFeedbackMessageType(view) : messageType!, - view, + view ); if (!view && (!packetType || !messageType)) { @@ -79,7 +79,7 @@ export class GenericFeedbackPacket extends FeedbackPacket { this.#bodyView = new DataView( this.view.buffer, this.view.byteOffset + FIXED_HEADER_LENGTH, - 0, + 0 ); return; @@ -97,7 +97,7 @@ export class GenericFeedbackPacket extends FeedbackPacket { this.#bodyView = new DataView( this.view.buffer, this.view.byteOffset + pos, - bodyLength, + bodyLength ); pos += bodyLength + this.padding; @@ -105,7 +105,7 @@ export class GenericFeedbackPacket extends FeedbackPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -142,7 +142,7 @@ export class GenericFeedbackPacket extends FeedbackPacket { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -156,16 +156,16 @@ export class GenericFeedbackPacket extends FeedbackPacket { new Uint8Array( this.#bodyView.buffer, this.#bodyView.byteOffset, - this.#bodyView.byteLength, + this.#bodyView.byteLength ), - pos, + pos ); // Create new body DataView. const bodyView = new DataView( view.buffer, view.byteOffset + pos, - this.#bodyView.byteLength, + this.#bodyView.byteLength ); pos += bodyView.byteLength; @@ -175,7 +175,7 @@ export class GenericFeedbackPacket extends FeedbackPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -195,13 +195,13 @@ export class GenericFeedbackPacket extends FeedbackPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): GenericFeedbackPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new GenericFeedbackPacket(view); diff --git a/src/packets/RTCP/GenericPacket.ts b/src/packets/RTCP/GenericPacket.ts index 98dcaeb6..cd8181c6 100644 --- a/src/packets/RTCP/GenericPacket.ts +++ b/src/packets/RTCP/GenericPacket.ts @@ -64,7 +64,7 @@ export class GenericPacket extends RtcpPacket { this.#bodyView = new DataView( this.view.buffer, this.view.byteOffset + COMMON_HEADER_LENGTH, - 0, + 0 ); return; @@ -82,7 +82,7 @@ export class GenericPacket extends RtcpPacket { this.#bodyView = new DataView( this.view.buffer, this.view.byteOffset + pos, - bodyLength, + bodyLength ); pos += bodyLength + this.padding; @@ -90,7 +90,7 @@ export class GenericPacket extends RtcpPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -127,7 +127,7 @@ export class GenericPacket extends RtcpPacket { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -141,16 +141,16 @@ export class GenericPacket extends RtcpPacket { new Uint8Array( this.#bodyView.buffer, this.#bodyView.byteOffset, - this.#bodyView.byteLength, + this.#bodyView.byteLength ), - pos, + pos ); // Create new body DataView. const bodyView = new DataView( view.buffer, view.byteOffset + pos, - this.#bodyView.byteLength, + this.#bodyView.byteLength ); pos += bodyView.byteLength; @@ -160,7 +160,7 @@ export class GenericPacket extends RtcpPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -180,13 +180,13 @@ export class GenericPacket extends RtcpPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): GenericPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new GenericPacket(view); diff --git a/src/packets/RTCP/NackPacket.ts b/src/packets/RTCP/NackPacket.ts index ac58e09e..3e0a75d6 100644 --- a/src/packets/RTCP/NackPacket.ts +++ b/src/packets/RTCP/NackPacket.ts @@ -85,7 +85,7 @@ export class NackPacket extends FeedbackPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -142,7 +142,7 @@ export class NackPacket extends FeedbackPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -159,13 +159,13 @@ export class NackPacket extends FeedbackPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): NackPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new NackPacket(view); @@ -249,7 +249,7 @@ export function createNackItem(seqs: number[]): { if (diff > 16) { throw new RangeError( - 'cannot create a NACK bitmask with given seq numbers', + 'cannot create a NACK bitmask with given seq numbers' ); } diff --git a/src/packets/RTCP/PliPacket.ts b/src/packets/RTCP/PliPacket.ts index 4db5de67..98a1a998 100644 --- a/src/packets/RTCP/PliPacket.ts +++ b/src/packets/RTCP/PliPacket.ts @@ -64,7 +64,7 @@ export class PliPacket extends FeedbackPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -110,13 +110,13 @@ export class PliPacket extends FeedbackPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): PliPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new PliPacket(view); diff --git a/src/packets/RTCP/ReceiverReportPacket.ts b/src/packets/RTCP/ReceiverReportPacket.ts index 8e4f7fbb..dfc2b7cd 100644 --- a/src/packets/RTCP/ReceiverReportPacket.ts +++ b/src/packets/RTCP/ReceiverReportPacket.ts @@ -109,7 +109,7 @@ export class ReceiverReportPacket extends RtcpPacket { this.view.byteOffset + FIXED_HEADER_LENGTH + this.#reports.length * RECEPTION_REPORT_LENGTH, - RECEPTION_REPORT_LENGTH, + RECEPTION_REPORT_LENGTH ); pos += RECEPTION_REPORT_LENGTH; @@ -124,7 +124,7 @@ export class ReceiverReportPacket extends RtcpPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -174,7 +174,7 @@ export class ReceiverReportPacket extends RtcpPacket { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -188,9 +188,9 @@ export class ReceiverReportPacket extends RtcpPacket { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - FIXED_HEADER_LENGTH - COMMON_HEADER_LENGTH, + FIXED_HEADER_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to Reception Reports. @@ -208,7 +208,7 @@ export class ReceiverReportPacket extends RtcpPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -225,13 +225,13 @@ export class ReceiverReportPacket extends RtcpPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): ReceiverReportPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new ReceiverReportPacket(view); @@ -346,12 +346,12 @@ export class ReceptionReport extends Serializable { const view = new DataView( bufferData.buffer, bufferData.byteOffset, - bufferData.byteLength, + bufferData.byteLength ); const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Copy the entire report into the new buffer. @@ -359,9 +359,9 @@ export class ReceptionReport extends Serializable { new Uint8Array( this.view.buffer, this.view.byteOffset, - RECEPTION_REPORT_LENGTH, + RECEPTION_REPORT_LENGTH ), - 0, + 0 ); this.setSerializationNeeded(false); @@ -374,13 +374,13 @@ export class ReceptionReport extends Serializable { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): ReceptionReport { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new ReceptionReport(view); diff --git a/src/packets/RTCP/RpsiPacket.ts b/src/packets/RTCP/RpsiPacket.ts index 38331444..0f0161df 100644 --- a/src/packets/RTCP/RpsiPacket.ts +++ b/src/packets/RTCP/RpsiPacket.ts @@ -69,7 +69,7 @@ export class RpsiPacket extends FeedbackPacket { this.#bitStringView = new DataView( this.view.buffer, this.view.byteOffset + FIXED_HEADER_LENGTH + 2, - 2, + 2 ); return; @@ -85,7 +85,7 @@ export class RpsiPacket extends FeedbackPacket { if (fciPaddingBits % 8 !== 0) { throw new TypeError( - 'invalid RPSI packet with fractional number of padding bytes', + 'invalid RPSI packet with fractional number of padding bytes' ); } @@ -105,7 +105,7 @@ export class RpsiPacket extends FeedbackPacket { this.#bitStringView = new DataView( this.view.buffer, this.view.byteOffset + pos, - bitStringLength, + bitStringLength ); pos += bitStringLength + fciPaddingBytes + this.padding; @@ -113,7 +113,7 @@ export class RpsiPacket extends FeedbackPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -156,7 +156,7 @@ export class RpsiPacket extends FeedbackPacket { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -169,7 +169,7 @@ export class RpsiPacket extends FeedbackPacket { // the new buffer. uint8Array.set( new Uint8Array(this.view.buffer, this.view.byteOffset + pos, 2), - pos, + pos ); // Move to padding bit string. @@ -180,16 +180,16 @@ export class RpsiPacket extends FeedbackPacket { new Uint8Array( this.#bitStringView.buffer, this.#bitStringView.byteOffset, - this.#bitStringView.byteLength, + this.#bitStringView.byteLength ), - pos, + pos ); // Create new bit string DataView. const bitStringView = new DataView( view.buffer, view.byteOffset + pos, - this.#bitStringView.byteLength, + this.#bitStringView.byteLength ); // Move to FCI padding. @@ -210,7 +210,7 @@ export class RpsiPacket extends FeedbackPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -227,13 +227,13 @@ export class RpsiPacket extends FeedbackPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): RpsiPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new RpsiPacket(view); diff --git a/src/packets/RTCP/RtcpPacket.ts b/src/packets/RTCP/RtcpPacket.ts index 0efa24f7..565cacdf 100644 --- a/src/packets/RTCP/RtcpPacket.ts +++ b/src/packets/RTCP/RtcpPacket.ts @@ -17,9 +17,6 @@ export const COMMON_HEADER_LENGTH = 4; * * @category RTCP */ -// ESLint absurdly complains about "'RtcpPacketType' is already declared in the -// upper scope". -// eslint-disable-next-line no-shadow export enum RtcpPacketType { /** * Extended Jitter Reports packet. @@ -126,7 +123,7 @@ function setRtcpLength(view: DataView, byteLength: number): void { // RTCP packet byte length must be multiple of 4. if (byteLength % 4 !== 0) { throw new RangeError( - `RTCP packet byte length must be multiple of 4 but given byte length is ${byteLength} bytes`, + `RTCP packet byte length must be multiple of 4 but given byte length is ${byteLength} bytes` ); } @@ -213,22 +210,22 @@ export abstract class RtcpPacket extends Packet { } else if (this.getPacketType() !== this.#packetType) { throw new TypeError( `given buffer view is not a RTCP ${packetTypeToString( - this.#packetType, - )} packet`, + this.#packetType + )} packet` ); } // RTCP packet byte length must be multiple of 4. else if (this.view.byteLength % 4 !== 0) { throw new RangeError( - `RTCP packet byte length must be multiple of 4 but given buffer view is ${this.view.byteLength} bytes`, + `RTCP packet byte length must be multiple of 4 but given buffer view is ${this.view.byteLength} bytes` ); } else if (getRtcpLength(this.view) !== this.view.byteLength) { throw new RangeError( `length in the RTCP header (${getRtcpLength( - this.view, + this.view )} bytes) does not match buffer view length (${ this.view.byteLength - } bytes)`, + } bytes)` ); } @@ -307,12 +304,12 @@ export abstract class RtcpPacket extends Packet { const view = new DataView( bufferData.buffer, bufferData.byteOffset, - bufferData.byteLength, + bufferData.byteLength ); const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Copy the common header into the new buffer. @@ -320,9 +317,9 @@ export abstract class RtcpPacket extends Packet { new Uint8Array( this.view.buffer, this.view.byteOffset, - COMMON_HEADER_LENGTH, + COMMON_HEADER_LENGTH ), - 0, + 0 ); // Update the length field in the RTCP header. @@ -332,7 +329,7 @@ export abstract class RtcpPacket extends Packet { if (this.padding > 0) { if (this.padding > 255) { throw new TypeError( - `padding (${this.padding} bytes) cannot be higher than 255`, + `padding (${this.padding} bytes) cannot be higher than 255` ); } diff --git a/src/packets/RTCP/SdesPacket.ts b/src/packets/RTCP/SdesPacket.ts index 3d00a32a..4bb1c61e 100644 --- a/src/packets/RTCP/SdesPacket.ts +++ b/src/packets/RTCP/SdesPacket.ts @@ -20,9 +20,6 @@ const SDES_CHUNK_MIN_LENGTH = 8; * * @category RTCP */ -// ESLint absurdly complains about "'SdesItemType' is already declared in the -// upper scope". -// eslint-disable-next-line no-shadow export enum SdesItemType { /** * Canonical End-Point Identifier SDES Item. @@ -181,7 +178,7 @@ export class SdesPacket extends RtcpPacket { const chunkView = new DataView( this.view.buffer, this.view.byteOffset + chunkPos, - chunkLength, + chunkLength ); const chunk = new SdesChunk(chunkView); @@ -193,7 +190,7 @@ export class SdesPacket extends RtcpPacket { throw new RangeError( `num of parsed SDES Chunks (${ this.#chunks.length - }) doesn't match RTCP count field ({${this.getCount()}})`, + }) doesn't match RTCP count field ({${this.getCount()}})` ); } @@ -202,7 +199,7 @@ export class SdesPacket extends RtcpPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -267,7 +264,7 @@ export class SdesPacket extends RtcpPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -284,13 +281,13 @@ export class SdesPacket extends RtcpPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): SdesPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new SdesPacket(view); @@ -360,7 +357,7 @@ export class SdesChunk extends Serializable { throw new TypeError('wrong byte length for a SDES Chunk'); } else if (this.view.byteLength % 4 !== 0) { throw new RangeError( - `SDES Chunk length must be multiple of 4 bytes but it is ${this.view.byteLength} bytes`, + `SDES Chunk length must be multiple of 4 bytes but it is ${this.view.byteLength} bytes` ); } @@ -390,7 +387,7 @@ export class SdesChunk extends Serializable { const itemView = new DataView( this.view.buffer, this.view.byteOffset + pos, - itemLength, + itemLength ); pos += itemLength; @@ -404,7 +401,7 @@ export class SdesChunk extends Serializable { if (numNullOctets < 1 || numNullOctets > 4) { throw new RangeError( - `SDES Chunk has wrong number of null octests at the end (${numNullOctets} null octets)`, + `SDES Chunk has wrong number of null octests at the end (${numNullOctets} null octets)` ); } } @@ -456,12 +453,12 @@ export class SdesChunk extends Serializable { const view = new DataView( bufferData.buffer, bufferData.byteOffset, - bufferData.byteLength, + bufferData.byteLength ); const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); let pos = 0; @@ -501,13 +498,13 @@ export class SdesChunk extends Serializable { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): SdesChunk { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new SdesChunk(view); diff --git a/src/packets/RTCP/SenderReportPacket.ts b/src/packets/RTCP/SenderReportPacket.ts index 31bcdb48..8d30033b 100644 --- a/src/packets/RTCP/SenderReportPacket.ts +++ b/src/packets/RTCP/SenderReportPacket.ts @@ -111,7 +111,7 @@ export class SenderReportPacket extends RtcpPacket { this.view.byteOffset + FIXED_HEADER_LENGTH + this.#reports.length * RECEPTION_REPORT_LENGTH, - RECEPTION_REPORT_LENGTH, + RECEPTION_REPORT_LENGTH ); pos += RECEPTION_REPORT_LENGTH; @@ -126,7 +126,7 @@ export class SenderReportPacket extends RtcpPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -181,7 +181,7 @@ export class SenderReportPacket extends RtcpPacket { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -195,9 +195,9 @@ export class SenderReportPacket extends RtcpPacket { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - FIXED_HEADER_LENGTH - COMMON_HEADER_LENGTH, + FIXED_HEADER_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to Reception Reports. @@ -215,7 +215,7 @@ export class SenderReportPacket extends RtcpPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -232,13 +232,13 @@ export class SenderReportPacket extends RtcpPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): SenderReportPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new SenderReportPacket(view); diff --git a/src/packets/RTCP/SliPacket.ts b/src/packets/RTCP/SliPacket.ts index bdab603b..55c904b4 100644 --- a/src/packets/RTCP/SliPacket.ts +++ b/src/packets/RTCP/SliPacket.ts @@ -85,7 +85,7 @@ export class SliPacket extends FeedbackPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -138,7 +138,7 @@ export class SliPacket extends FeedbackPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -155,13 +155,13 @@ export class SliPacket extends FeedbackPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): SliPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new SliPacket(view); @@ -181,7 +181,7 @@ export class SliPacket extends FeedbackPacket { * - Serialization is needed after calling this method. */ setItems( - items: { first: number; number: number; pictureId: number }[], + items: { first: number; number: number; pictureId: number }[] ): void { this.#items = Array.from(items); diff --git a/src/packets/RTCP/SrReqPacket.ts b/src/packets/RTCP/SrReqPacket.ts index 110f1aa2..f4e9a100 100644 --- a/src/packets/RTCP/SrReqPacket.ts +++ b/src/packets/RTCP/SrReqPacket.ts @@ -64,7 +64,7 @@ export class SrReqPacket extends FeedbackPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -110,13 +110,13 @@ export class SrReqPacket extends FeedbackPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): SrReqPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new SrReqPacket(view); diff --git a/src/packets/RTCP/XrPacket.ts b/src/packets/RTCP/XrPacket.ts index 118f30fa..484a1dc7 100644 --- a/src/packets/RTCP/XrPacket.ts +++ b/src/packets/RTCP/XrPacket.ts @@ -87,7 +87,7 @@ export class XrPacket extends RtcpPacket { const remainingView = new DataView( this.view.buffer, this.view.byteOffset + pos, - this.view.byteLength - this.padding - pos, + this.view.byteLength - this.padding - pos ); const reportType = getExtendedReportType(remainingView); @@ -96,7 +96,7 @@ export class XrPacket extends RtcpPacket { const reportView = new DataView( this.view.buffer, this.view.byteOffset + pos, - reportLength, + reportLength ); let report: ExtendedReport; @@ -165,7 +165,7 @@ export class XrPacket extends RtcpPacket { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -215,7 +215,7 @@ export class XrPacket extends RtcpPacket { const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -229,9 +229,9 @@ export class XrPacket extends RtcpPacket { new Uint8Array( this.view.buffer, this.view.byteOffset + pos, - FIXED_HEADER_LENGTH - COMMON_HEADER_LENGTH, + FIXED_HEADER_LENGTH - COMMON_HEADER_LENGTH ), - pos, + pos ); // Move to Reception Reports. @@ -250,7 +250,7 @@ export class XrPacket extends RtcpPacket { // Assert that current position is equal than new buffer length. if (pos !== view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is different than the available buffer size (${view.byteLength} bytes)` ); } @@ -267,13 +267,13 @@ export class XrPacket extends RtcpPacket { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): XrPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new XrPacket(view); diff --git a/src/packets/RTP/RtpPacket.ts b/src/packets/RTP/RtpPacket.ts index 81a53699..91342d13 100644 --- a/src/packets/RTP/RtpPacket.ts +++ b/src/packets/RTP/RtpPacket.ts @@ -132,7 +132,7 @@ export class RtpPacket extends Packet { this.#payloadView = new DataView( this.view.buffer, this.view.byteOffset + FIXED_HEADER_LENGTH, - 0, + 0 ); return; @@ -176,7 +176,7 @@ export class RtpPacket extends Packet { headerExtensionView = new DataView( this.view.buffer, this.view.byteOffset + pos, - headerExtensionLength, + headerExtensionLength ); pos += headerExtensionLength; @@ -210,7 +210,7 @@ export class RtpPacket extends Packet { if (extId !== 0) { if (extPos + 1 + extLength > headerExtensionView.byteLength) { throw new RangeError( - 'not enough space for the announced One-Byte extension value', + 'not enough space for the announced One-Byte extension value' ); } @@ -220,8 +220,8 @@ export class RtpPacket extends Packet { new DataView( headerExtensionView.buffer, headerExtensionView.byteOffset + extPos + 1, - extLength, - ), + extLength + ) ); extPos += 1 + extLength; @@ -251,7 +251,7 @@ export class RtpPacket extends Packet { if (extId !== 0) { if (extPos + 2 + extLength > headerExtensionView.byteLength) { throw new RangeError( - 'not enough space for the announced Two-Bytes extension value', + 'not enough space for the announced Two-Bytes extension value' ); } @@ -261,8 +261,8 @@ export class RtpPacket extends Packet { new DataView( headerExtensionView.buffer, headerExtensionView.byteOffset + extPos + 2, - extLength, - ), + extLength + ) ); extPos += 2 + extLength; @@ -303,14 +303,14 @@ export class RtpPacket extends Packet { this.padding } bytes) is bigger than available space for payload (${ this.view.byteLength - pos - } bytes)`, + } bytes)` ); } this.#payloadView = new DataView( this.view.buffer, this.view.byteOffset + pos, - payloadLength, + payloadLength ); pos += payloadLength + this.padding; @@ -318,7 +318,7 @@ export class RtpPacket extends Packet { // Ensure that view length and parsed length match. if (pos !== this.view.byteLength) { throw new RangeError( - `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)`, + `parsed length (${pos} bytes) does not match view length (${this.view.byteLength} bytes)` ); } } @@ -426,12 +426,12 @@ export class RtpPacket extends Packet { const view = new DataView( bufferData.buffer, bufferData.byteOffset, - bufferData.byteLength, + bufferData.byteLength ); const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Position relative to the DataView byte offset. @@ -442,9 +442,9 @@ export class RtpPacket extends Packet { new Uint8Array( this.view.buffer, this.view.byteOffset, - FIXED_HEADER_LENGTH, + FIXED_HEADER_LENGTH ), - pos, + pos ); // Move to CSRCs. @@ -487,11 +487,11 @@ export class RtpPacket extends Packet { if (extView.byteLength === 0) { throw new TypeError( - 'cannot serialize extensions with length 0 in One-Byte mode', + 'cannot serialize extensions with length 0 in One-Byte mode' ); } else if (extView.byteLength > 16) { throw new RangeError( - 'cannot serialize extensions with length > 16 in One-Byte mode', + 'cannot serialize extensions with length > 16 in One-Byte mode' ); } @@ -515,9 +515,9 @@ export class RtpPacket extends Packet { new Uint8Array( extView.buffer, extView.byteOffset, - extView.byteLength, + extView.byteLength ), - pos, + pos ); pos += extView.byteLength; @@ -540,7 +540,7 @@ export class RtpPacket extends Packet { if (extView.byteLength > 255) { throw new RangeError( - 'cannot serialize extensions with length > 255 in Two-Bytes mode', + 'cannot serialize extensions with length > 255 in Two-Bytes mode' ); } @@ -558,9 +558,9 @@ export class RtpPacket extends Packet { new Uint8Array( extView.buffer, extView.byteOffset, - extView.byteLength, + extView.byteLength ), - pos, + pos ); pos += extView.byteLength; @@ -584,9 +584,9 @@ export class RtpPacket extends Packet { new Uint8Array( this.#headerExtensionView.buffer, this.#headerExtensionView.byteOffset, - this.#headerExtensionView.byteLength, + this.#headerExtensionView.byteLength ), - pos, + pos ); pos += this.#headerExtensionView.byteLength; @@ -601,16 +601,16 @@ export class RtpPacket extends Packet { new Uint8Array( this.#payloadView.buffer, this.#payloadView.byteOffset, - this.#payloadView.byteLength, + this.#payloadView.byteLength ), - pos, + pos ); // Create new payload DataView. const payloadView = new DataView( view.buffer, view.byteOffset + pos, - this.#payloadView.byteLength, + this.#payloadView.byteLength ); pos += payloadView.byteLength; @@ -619,7 +619,7 @@ export class RtpPacket extends Packet { if (this.padding > 0) { if (this.padding > 255) { throw new TypeError( - `padding (${this.padding} bytes) cannot be higher than 255`, + `padding (${this.padding} bytes) cannot be higher than 255` ); } @@ -634,7 +634,7 @@ export class RtpPacket extends Packet { // during the process. if (pos > view.byteLength) { throw new RangeError( - `filled length (${pos} bytes) is bigger than the available buffer size (${view.byteLength} bytes)`, + `filled length (${pos} bytes) is bigger than the available buffer size (${view.byteLength} bytes)` ); } @@ -654,13 +654,13 @@ export class RtpPacket extends Packet { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): RtpPacket { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); const clonedPacket = new RtpPacket(view); @@ -917,7 +917,7 @@ export class RtpPacket extends Packet { */ getMidExtension(): string | undefined { const view = this.getExtension( - this.#extensionMapping[RtpExtensionType.MID]!, + this.#extensionMapping[RtpExtensionType.MID]! ); if (!view) { @@ -950,7 +950,7 @@ export class RtpPacket extends Packet { */ getRidExtension(): string | undefined { const view = this.getExtension( - this.#extensionMapping[RtpExtensionType.RTP_STREAM_ID]!, + this.#extensionMapping[RtpExtensionType.RTP_STREAM_ID]! ); if (!view) { @@ -984,7 +984,7 @@ export class RtpPacket extends Packet { */ getRepairedRidExtension(): string | undefined { const view = this.getExtension( - this.#extensionMapping[RtpExtensionType.RTP_REPAIRED_STREAM_ID]!, + this.#extensionMapping[RtpExtensionType.RTP_REPAIRED_STREAM_ID]! ); if (!view) { @@ -1023,7 +1023,7 @@ export class RtpPacket extends Packet { */ getAbsSendTimeExtension(): number | undefined { const view = this.getExtension( - this.#extensionMapping[RtpExtensionType.ABS_SEND_TIME]!, + this.#extensionMapping[RtpExtensionType.ABS_SEND_TIME]! ); if (!view) { @@ -1065,7 +1065,7 @@ export class RtpPacket extends Packet { */ getTransportWideSeqNumberExtension(): number | undefined { const view = this.getExtension( - this.#extensionMapping[RtpExtensionType.TRANSPORT_WIDE_SEQ_NUMBER]!, + this.#extensionMapping[RtpExtensionType.TRANSPORT_WIDE_SEQ_NUMBER]! ); if (!view) { @@ -1100,7 +1100,7 @@ export class RtpPacket extends Packet { */ getSsrcAudioLevelExtension(): SsrcAudioLevelExtension | undefined { const view = this.getExtension( - this.#extensionMapping[RtpExtensionType.SSRC_AUDIO_LEVEL]!, + this.#extensionMapping[RtpExtensionType.SSRC_AUDIO_LEVEL]! ); if (!view) { @@ -1147,7 +1147,7 @@ export class RtpPacket extends Packet { */ getVideoOrientationExtension(): VideoOrientationExtension | undefined { const view = this.getExtension( - this.#extensionMapping[RtpExtensionType.VIDEO_ORIENTATION]!, + this.#extensionMapping[RtpExtensionType.VIDEO_ORIENTATION]! ); if (!view) { @@ -1166,7 +1166,7 @@ export class RtpPacket extends Packet { * extension. */ setVideoOrientationExtension( - videoOrientation?: VideoOrientationExtension, + videoOrientation?: VideoOrientationExtension ): void { const extId = this.#extensionMapping[RtpExtensionType.VIDEO_ORIENTATION]; @@ -1202,7 +1202,7 @@ export class RtpPacket extends Packet { */ getTransmissionOffsetExtension(): number | undefined { const view = this.getExtension( - this.#extensionMapping[RtpExtensionType.TOFFSET]!, + this.#extensionMapping[RtpExtensionType.TOFFSET]! ); if (!view) { @@ -1270,12 +1270,12 @@ export class RtpPacket extends Packet { this.setSsrc(ssrc); const payloadView = new DataView( - new ArrayBuffer(2 + this.#payloadView.byteLength), + new ArrayBuffer(2 + this.#payloadView.byteLength) ); const payloadUint8Array = new Uint8Array( payloadView.buffer, payloadView.byteOffset, - payloadView.byteLength, + payloadView.byteLength ); // Write the original sequence number at the begining of the new payload. @@ -1286,9 +1286,9 @@ export class RtpPacket extends Packet { new Uint8Array( this.#payloadView.buffer, this.#payloadView.byteOffset, - this.#payloadView.byteLength, + this.#payloadView.byteLength ), - 2, + 2 ); this.#payloadView = payloadView; @@ -1317,7 +1317,7 @@ export class RtpPacket extends Packet { rtxDecode(payloadType: number, ssrc: number) { if (this.#payloadView.byteLength < 2) { throw new RangeError( - 'payload length must be greater or equal than 2 bytes', + 'payload length must be greater or equal than 2 bytes' ); } @@ -1334,7 +1334,7 @@ export class RtpPacket extends Packet { // Reduce the payload. this.setPayload( - new DataView(this.#payloadView.buffer, this.#payloadView.byteOffset + 2), + new DataView(this.#payloadView.buffer, this.#payloadView.byteOffset + 2) ); // Remove padding. diff --git a/src/packets/RTP/rtpExtensions.ts b/src/packets/RTP/rtpExtensions.ts index 14812b9f..9ec80f26 100644 --- a/src/packets/RTP/rtpExtensions.ts +++ b/src/packets/RTP/rtpExtensions.ts @@ -3,9 +3,6 @@ * * @category RTP */ -// ESLint absurdly complains about "'RtpExtensionType' is already declared in the -// upper scope". -// eslint-disable-next-line no-shadow export enum RtpExtensionType { /** * Media identification. @@ -102,7 +99,7 @@ export type RtpExtensionMapping = Partial>; * @category RTP */ export function rtpExtensionUriToType( - uri: string, + uri: string ): RtpExtensionType | undefined { switch (uri) { case 'urn:ietf:params:rtp-hdrext:sdes:mid': { diff --git a/src/packets/Serializable.ts b/src/packets/Serializable.ts index c69ca799..8f3d16e6 100644 --- a/src/packets/Serializable.ts +++ b/src/packets/Serializable.ts @@ -13,7 +13,8 @@ export type SerializableDump = { */ export abstract class Serializable { // Buffer view holding the packet or item content. - // @ts-ignore ('view' has not initializer and is not assigned in constructor). + // @ts-expect-error --- 'view' has not initializer and is not assigned in + // constructor. protected view: DataView; // Whether serialization is needed due to recent modifications. #serializationNeeded: boolean = false; @@ -52,7 +53,7 @@ export abstract class Serializable { */ getView( serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): DataView { if (this.needsSerialization()) { this.serialize(serializationBuffer, serializationByteOffset); @@ -130,7 +131,7 @@ export abstract class Serializable { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): Serializable; protected setSerializationNeeded(flag: boolean): void { @@ -144,14 +145,13 @@ export abstract class Serializable { */ protected getSerializationBuffer( buffer?: ArrayBuffer, - byteOffset?: number, + byteOffset?: number ): { buffer: ArrayBuffer; byteOffset: number; byteLength: number; // NOTE: ESlint absurdly complaining about "Expected indentation of 2 tabs but // found 1". - // eslint-disable-next-line indent } { byteOffset ??= 0; @@ -162,7 +162,7 @@ export abstract class Serializable { throw new RangeError( `given buffer available space (${ buffer.byteLength - byteOffset - } bytes) is less than length required for serialization (${byteLength} bytes)`, + } bytes) is less than length required for serialization (${byteLength} bytes)` ); } @@ -182,7 +182,7 @@ export abstract class Serializable { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): DataView { if (this.needsSerialization()) { this.serialize(serializationBuffer, serializationByteOffset); @@ -201,7 +201,7 @@ export abstract class Serializable { buffer.byteLength - byteOffset } bytes) is less than length required for clonation (${ this.view.byteLength - } bytes)`, + } bytes)` ); } @@ -209,22 +209,22 @@ export abstract class Serializable { const uint8Array = new Uint8Array( buffer, byteOffset, - this.view.byteLength, + this.view.byteLength ); uint8Array.set( new Uint8Array( this.view.buffer, this.view.byteOffset, - this.view.byteLength, + this.view.byteLength ), - 0, + 0 ); view = new DataView( uint8Array.buffer, uint8Array.byteOffset, - uint8Array.byteLength, + uint8Array.byteLength ); } else { view = clone(this.view); diff --git a/src/test/packets/RTCP/ByePacket.test.ts b/src/test/packets/RTCP/ByePacket.test.ts index a4dc0c45..0991ba99 100644 --- a/src/test/packets/RTCP/ByePacket.test.ts +++ b/src/test/packets/RTCP/ByePacket.test.ts @@ -165,7 +165,7 @@ describe('parse RTCP BYE packet with padding', () => { const view2 = new DataView( array2.buffer, array2.byteOffset, - array2.byteLength, + array2.byteLength ); const packet = new ByePacket(view2); @@ -225,7 +225,7 @@ describe('parse RTCP BYE packet without reason', () => { const view3 = new DataView( array3.buffer, array3.byteOffset, - array3.byteLength, + array3.byteLength ); const packet = new ByePacket(view3); @@ -259,6 +259,6 @@ describe('parse invalid RTCP BYE packet', () => { // SSRC at all. const view4 = new DataView(array.buffer, array.byteOffset, 8); - expect(() => new ByePacket(view4)).toThrowError(RangeError); + expect(() => new ByePacket(view4)).toThrow(RangeError); }); }); diff --git a/src/test/packets/RTCP/CompoundPacket.test.ts b/src/test/packets/RTCP/CompoundPacket.test.ts index 5ac8680a..e486e803 100644 --- a/src/test/packets/RTCP/CompoundPacket.test.ts +++ b/src/test/packets/RTCP/CompoundPacket.test.ts @@ -308,7 +308,7 @@ describe('parse RTCP Compound packet', () => { expect(packet4.getBody()).toEqual( numericArrayToDataView([ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, - ]), + ]) ); const packet5 = compoundPacket.getPackets()[4] as SdesPacket; @@ -407,7 +407,7 @@ describe('parse RTCP Compound packet', () => { expect(packet4B.getBody()).toEqual( numericArrayToDataView([ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, - ]), + ]) ); const packet5B = compoundPacket.getPackets()[4] as SdesPacket; @@ -482,17 +482,17 @@ describe('parse RTCP Compound packet', () => { expect(clonedCompoundPacket.needsSerialization()).toBe(false); expect(clonedCompoundPacket.getByteLength()).toBe( - compoundPacket.getByteLength(), + compoundPacket.getByteLength() ); expect(clonedCompoundPacket.getPackets().length).toBe( - compoundPacket.getPackets().length, + compoundPacket.getPackets().length ); expect(clonedCompoundPacket.dump()).toEqual(compoundPacket.dump()); expect( areDataViewsEqual( clonedCompoundPacket.getView(), - compoundPacket.getView(), - ), + compoundPacket.getView() + ) ).toBe(true); }); @@ -500,7 +500,7 @@ describe('parse RTCP Compound packet', () => { // Read only 136 bytes of the buffer view. const view2 = new DataView(array.buffer, array.byteOffset, 136); - expect(() => new CompoundPacket(view2)).toThrowError(RangeError); + expect(() => new CompoundPacket(view2)).toThrow(RangeError); }); }); diff --git a/src/test/packets/RTCP/EcnPacket.test.ts b/src/test/packets/RTCP/EcnPacket.test.ts index 701f331d..d909769c 100644 --- a/src/test/packets/RTCP/EcnPacket.test.ts +++ b/src/test/packets/RTCP/EcnPacket.test.ts @@ -95,7 +95,7 @@ describe('create RTCP ECN packet', () => { packet.setSenderSsrc(ecnPacketDump.senderSsrc); packet.setMediaSsrc(ecnPacketDump.mediaSsrc); packet.setExtendedHighestSequenceNumber( - ecnPacketDump.extendedHighestSequenceNumber, + ecnPacketDump.extendedHighestSequenceNumber ); packet.setEct0Counter(ecnPacketDump.ect0Counter); packet.setEct1Counter(ecnPacketDump.ect1Counter); diff --git a/src/test/packets/RTCP/GenericFeedbackPacket.test.ts b/src/test/packets/RTCP/GenericFeedbackPacket.test.ts index a1dda8cc..bc6bbf71 100644 --- a/src/test/packets/RTCP/GenericFeedbackPacket.test.ts +++ b/src/test/packets/RTCP/GenericFeedbackPacket.test.ts @@ -80,7 +80,7 @@ describe('create RTCP generic Feedback packet', () => { const packet = new GenericFeedbackPacket( undefined, RtcpPacketType.PSFB, - PsFeedbackMessageType.AFB, + PsFeedbackMessageType.AFB ); test('packet view is RTCP', () => { @@ -93,7 +93,7 @@ describe('create RTCP generic Feedback packet', () => { // Let's set body with 7 bytes length so it should be internally padded // to 8. packet.setBody( - numericArrayToDataView([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66]), + numericArrayToDataView([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66]) ); expect(packet.needsSerialization()).toBe(true); diff --git a/src/test/packets/RTCP/GenericPacket.test.ts b/src/test/packets/RTCP/GenericPacket.test.ts index d89824e8..52ebed7a 100644 --- a/src/test/packets/RTCP/GenericPacket.test.ts +++ b/src/test/packets/RTCP/GenericPacket.test.ts @@ -36,7 +36,7 @@ describe('parse RTCP generic packet', () => { expect(packet.getCount()).toBe(2); expect(packet.getPadding()).toBe(0); expect(packet.getBody()).toEqual( - numericArrayToDataView([0x62, 0x42, 0x76, 0xe0, 0x26, 0x24, 0x67, 0x0e]), + numericArrayToDataView([0x62, 0x42, 0x76, 0xe0, 0x26, 0x24, 0x67, 0x0e]) ); expect(packet.needsSerialization()).toBe(false); }); @@ -64,7 +64,7 @@ describe('parse RTCP generic packet', () => { const view2 = new DataView( array2.buffer, array2.byteOffset, - array2.byteLength, + array2.byteLength ); const packet = new GenericPacket(view2); @@ -78,7 +78,7 @@ describe('parse RTCP generic packet', () => { expect(packet.getBody()).toEqual( numericArrayToDataView([ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, - ]), + ]) ); expect(areDataViewsEqual(packet.getView(), view2)).toBe(true); @@ -94,7 +94,7 @@ describe('parse RTCP generic packet', () => { expect(packet.getBody()).toEqual( numericArrayToDataView([ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, - ]), + ]) ); expect(areDataViewsEqual(packet.getView(), view2)).toBe(true); }); @@ -103,13 +103,13 @@ describe('parse RTCP generic packet', () => { // Parse the first 8 bytes of the buffer so RTCP length is wrong. const view3 = new DataView(array.buffer, array.byteOffset, 8); - expect(() => new GenericPacket(view3)).toThrowError(RangeError); + expect(() => new GenericPacket(view3)).toThrow(RangeError); }); }); describe('create RTCP generic packet', () => { test('creating a generic packet without view and packet type throws', () => { - expect(() => new GenericPacket()).toThrowError(TypeError); + expect(() => new GenericPacket()).toThrow(TypeError); }); test('creating a generic packet with padding succeeds', () => { @@ -192,7 +192,7 @@ describe('create RTCP generic packet', () => { expect(clonedPacket.getBody()).toEqual(packet.getBody()); expect(clonedPacket.dump()).toEqual(packet.dump()); expect(areDataViewsEqual(clonedPacket.getView(), packet.getView())).toBe( - true, + true ); }); }); diff --git a/src/test/packets/RTCP/NackPacket.test.ts b/src/test/packets/RTCP/NackPacket.test.ts index 17f9f27b..22e7ba91 100644 --- a/src/test/packets/RTCP/NackPacket.test.ts +++ b/src/test/packets/RTCP/NackPacket.test.ts @@ -129,13 +129,13 @@ describe('NACK items', () => { test('createNackItem()', () => { expect( - createNackItem([100, 102, 104, 106, 108, 110, 112, 114, 116]), + createNackItem([100, 102, 104, 106, 108, 110, 112, 114, 116]) ).toEqual(nackItem1); expect( createNackItem([ 10000, 10001, 10002, 10003, 10004, 10009, 10010, 10011, 10012, - ]), + ]) ).toEqual(nackItem2); }); }); diff --git a/src/test/packets/RTCP/ReceiverReportPacket.test.ts b/src/test/packets/RTCP/ReceiverReportPacket.test.ts index d4d36e43..9eee7d89 100644 --- a/src/test/packets/RTCP/ReceiverReportPacket.test.ts +++ b/src/test/packets/RTCP/ReceiverReportPacket.test.ts @@ -162,7 +162,7 @@ describe('parse RTCP Receiver Report packet', () => { const view2 = new DataView( array2.buffer, array2.byteOffset, - array2.byteLength, + array2.byteLength ); const packet = new ReceiverReportPacket(view2); @@ -214,7 +214,7 @@ describe('parse RTCP Receiver Report packet', () => { // holding no report at all. const view3 = new DataView(array.buffer, array.byteOffset, 8); - expect(() => new ReceiverReportPacket(view3)).toThrowError(RangeError); + expect(() => new ReceiverReportPacket(view3)).toThrow(RangeError); }); }); @@ -275,7 +275,7 @@ describe('create RTCP Receiver Report packet', () => { expect(isRtcp(clonedPacket.getView())).toBe(true); expect(clonedPacket.dump()).toEqual(packet.dump()); expect(areDataViewsEqual(clonedPacket.getView(), packet.getView())).toBe( - true, + true ); }); @@ -312,7 +312,7 @@ describe('create RTCP Receiver Report packet', () => { expect(clonedPacket.getSsrc()).toBe(0x5d931534); expect(clonedPacket.dump()).toEqual(packet.dump()); expect(areDataViewsEqual(clonedPacket.getView(), packet.getView())).toBe( - true, + true ); }); }); @@ -357,9 +357,9 @@ describe('parse RTCP Reception Report', () => { test('parsing a buffer which length does not fit the report size throws', () => { // Parse a 23 bytes buffer. - expect( - () => new ReceptionReport(numericArrayToDataView([23])), - ).toThrowError(TypeError); + expect(() => new ReceptionReport(numericArrayToDataView([23]))).toThrow( + TypeError + ); }); }); diff --git a/src/test/packets/RTCP/RpsiPacket.test.ts b/src/test/packets/RTCP/RpsiPacket.test.ts index a1d5bd1f..71a4de3a 100644 --- a/src/test/packets/RTCP/RpsiPacket.test.ts +++ b/src/test/packets/RTCP/RpsiPacket.test.ts @@ -76,7 +76,7 @@ describe('parse RTCP RPSI packet', () => { expect(clonedPacket.dump()).toEqual(rpsiPacketDump); expect(areDataViewsEqual(clonedPacket.getView(), view)).toBe(true); expect(areDataViewsEqual(clonedPacket.getBitString(), bitStringView)).toBe( - true, + true ); }); }); @@ -105,7 +105,7 @@ describe('create RTCP RPSI packet', () => { // Fill optional fields so serialization should be needed. packet.setPayloadType(rpsiPacketDump.payloadType); packet.setBitString( - numericArrayToDataView([0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88]), + numericArrayToDataView([0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88]) ); expect(packet.needsSerialization()).toBe(true); @@ -126,7 +126,7 @@ describe('create RTCP RPSI packet', () => { expect(clonedPacket.dump()).toEqual(rpsiPacketDump); expect(areDataViewsEqual(clonedPacket.getView(), view)).toBe(true); expect(areDataViewsEqual(clonedPacket.getBitString(), bitStringView)).toBe( - true, + true ); }); }); diff --git a/src/test/packets/RTCP/SdesPacket.test.ts b/src/test/packets/RTCP/SdesPacket.test.ts index 28fbdc4f..162f1aee 100644 --- a/src/test/packets/RTCP/SdesPacket.test.ts +++ b/src/test/packets/RTCP/SdesPacket.test.ts @@ -243,7 +243,7 @@ describe('parse RTCP SDES packet with padding', () => { const view2 = new DataView( array2.buffer, array2.byteOffset, - array2.byteLength, + array2.byteLength ); const packet = new SdesPacket(view2); @@ -309,7 +309,7 @@ describe('parse RTCP SDES packet with padded item', () => { const view3 = new DataView( array3.buffer, array3.byteOffset, - array3.byteLength, + array3.byteLength ); const packet = new SdesPacket(view3); @@ -420,7 +420,7 @@ describe('parse another RTCP SDES packet', () => { const view4 = new DataView( array4.buffer, array4.byteOffset, - array4.byteLength, + array4.byteLength ); const packet = new SdesPacket(view4); @@ -453,7 +453,7 @@ describe('parse invalid RTCP SDES packet', () => { // Parse just the first 26 bytes of the buffer. const view5 = new DataView(array.buffer, array.byteOffset, 26); - expect(() => new SdesPacket(view5)).toThrowError(RangeError); + expect(() => new SdesPacket(view5)).toThrow(RangeError); }); test('parsing a packet with missing null octets in the chunk throws', () => { @@ -476,10 +476,10 @@ describe('parse invalid RTCP SDES packet', () => { const view6 = new DataView( array6.buffer, array6.byteOffset, - array6.byteLength, + array6.byteLength ); - expect(() => new SdesPacket(view6)).toThrowError(RangeError); + expect(() => new SdesPacket(view6)).toThrow(RangeError); }); }); @@ -536,7 +536,7 @@ describe('create another RTCP SDES packet', () => { expect(isRtcp(clonedPacket.getView())).toBe(true); expect(clonedPacket.dump()).toEqual(packet.dump()); expect(areDataViewsEqual(clonedPacket.getView(), packet.getView())).toBe( - true, + true ); const clonedChunk1 = clonedPacket.getChunks()[0]; @@ -621,7 +621,7 @@ describe('create SDES Chunk', () => { cloningBuffer, cloningByteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); expect(chunk.needsSerialization()).toBe(false); diff --git a/src/test/packets/RTCP/SenderReportPacket.test.ts b/src/test/packets/RTCP/SenderReportPacket.test.ts index 1870933c..c0f1e4a3 100644 --- a/src/test/packets/RTCP/SenderReportPacket.test.ts +++ b/src/test/packets/RTCP/SenderReportPacket.test.ts @@ -182,7 +182,7 @@ describe('parse RTCP Sender Report packet', () => { const view2 = new DataView( array2.buffer, array2.byteOffset, - array2.byteLength, + array2.byteLength ); const packet = new SenderReportPacket(view2); @@ -207,7 +207,7 @@ describe('parse RTCP Sender Report packet', () => { // holding no report at all. const view3 = new DataView(array.buffer, array.byteOffset, 8); - expect(() => new SenderReportPacket(view3)).toThrowError(RangeError); + expect(() => new SenderReportPacket(view3)).toThrow(RangeError); }); }); @@ -294,7 +294,7 @@ describe('create RTCP Sender Report packet', () => { expect(isRtcp(clonedPacket.getView())).toBe(true); expect(clonedPacket.dump()).toEqual(packet.dump()); expect(areDataViewsEqual(clonedPacket.getView(), packet.getView())).toBe( - true, + true ); }); @@ -356,7 +356,7 @@ describe('create RTCP Sender Report packet', () => { expect(packet.getOctetCount()).toBe(577280); expect(clonedPacket.dump()).toEqual(packet.dump()); expect(areDataViewsEqual(clonedPacket.getView(), packet.getView())).toBe( - true, + true ); }); }); diff --git a/src/test/packets/RTCP/XrPacket.test.ts b/src/test/packets/RTCP/XrPacket.test.ts index 4a263d00..8f246ed0 100644 --- a/src/test/packets/RTCP/XrPacket.test.ts +++ b/src/test/packets/RTCP/XrPacket.test.ts @@ -245,7 +245,7 @@ describe('create RTCP XR packet', () => { padding: 0, }); expect(areDataViewsEqual(clonedPacket.getView(), packet.getView())).toBe( - true, + true ); }); }); @@ -276,17 +276,17 @@ describe('chunks parsing and creation', () => { test('createExtendedReportRunLengthChunk()', () => { expect(createExtendedReportRunLengthChunk('zeros', 0b10101010101010)).toBe( - runLengthZerosChunk, + runLengthZerosChunk ); expect(createExtendedReportRunLengthChunk('ones', 0b10101010101010)).toBe( - runLengthOnesChunk, + runLengthOnesChunk ); }); test('createExtendedReportBitVectorChunk()', () => { expect(createExtendedReportBitVectorChunk(0b110101010101010)).toBe( - bitVectorChunk, + bitVectorChunk ); }); }); diff --git a/src/test/packets/RTP/RtpPacket.test.ts b/src/test/packets/RTP/RtpPacket.test.ts index 38af755c..c6d2ebb3 100644 --- a/src/test/packets/RTP/RtpPacket.test.ts +++ b/src/test/packets/RTP/RtpPacket.test.ts @@ -15,7 +15,7 @@ import { describe('parse RTP packet 1', () => { const view = nodeBufferToDataView( - fs.readFileSync(path.join(__dirname, '..', '..', 'data', 'rtppacket1.raw')), + fs.readFileSync(path.join(__dirname, '..', '..', 'data', 'rtppacket1.raw')) ); let packet: RtpPacket; @@ -46,14 +46,14 @@ describe('parse RTP packet 1', () => { expect(packet.getExtensions().size).toBe(1); expect(packet.needsSerialization()).toBe(true); expect(packet.getExtension(1)).toEqual( - stringToDataView('foo œæ€å∫∂ ®†¥∂ƒ∑©√'), + stringToDataView('foo œæ€å∫∂ ®†¥∂ƒ∑©√') ); }); }); describe('parse RTP packet 2', () => { const view = nodeBufferToDataView( - fs.readFileSync(path.join(__dirname, '..', '..', 'data', 'rtppacket2.raw')), + fs.readFileSync(path.join(__dirname, '..', '..', 'data', 'rtppacket2.raw')) ); let packet: RtpPacket; @@ -76,7 +76,7 @@ describe('parse RTP packet 2', () => { expect(packet.hasOneByteExtensions()).toBe(true); expect(packet.hasTwoBytesExtensions()).toBe(false); expect(packet.getExtension(3)).toEqual( - numericArrayToDataView([0x65, 0x34, 0x1e]), + numericArrayToDataView([0x65, 0x34, 0x1e]) ); expect(packet.getPayload().byteLength).toBe(78); expect(packet.needsSerialization()).toBe(false); @@ -193,7 +193,7 @@ describe('parse RTP packet 4', () => { packet = new RtpPacket(view); expect(packet.getByteLength()).toBe( - array.byteLength - uselessExtensionAlignment, + array.byteLength - uselessExtensionAlignment ); expect(packet.getPayloadType()).toBe(1); expect(packet.getSequenceNumber()).toBe(8); @@ -208,7 +208,7 @@ describe('parse RTP packet 4', () => { expect(packet.getExtension(1)).toEqual(new DataView(new ArrayBuffer(0))); expect(packet.getExtension(2)).toEqual(numericArrayToDataView([0x42])); expect(packet.getExtension(3)).toEqual( - numericArrayToDataView([0x11, 0x22]), + numericArrayToDataView([0x11, 0x22]) ); expect(packet.getExtension(4)).toEqual(new DataView(new ArrayBuffer(0))); expect(packet.getExtension(5)).toBeUndefined(); @@ -359,7 +359,7 @@ describe('create RTP packet 6 from scratch', () => { expect(packet.getExtensions().size).toBe(2); expect(packet.needsSerialization()).toBe(true); expect(packet.getExtension(2)).toEqual( - numericArrayToDataView([1, 2, 3, 4]), + numericArrayToDataView([1, 2, 3, 4]) ); packet.deleteExtension(1); @@ -376,7 +376,7 @@ describe('create RTP packet 6 from scratch', () => { expect(packet.needsSerialization()).toBe(true); expect(packet.getExtensions().size).toBe(1); expect(packet.getExtension(2)).toEqual( - numericArrayToDataView([1, 2, 3, 4]), + numericArrayToDataView([1, 2, 3, 4]) ); packet.setPayload(stringToDataView('codec')); @@ -402,7 +402,7 @@ describe('create RTP packet 6 from scratch', () => { expect(clonedPacket.hasOneByteExtensions()).toBe(false); expect(clonedPacket.hasTwoBytesExtensions()).toBe(true); expect(clonedPacket.getExtension(2)).toEqual( - numericArrayToDataView([1, 2, 3, 4]), + numericArrayToDataView([1, 2, 3, 4]) ); expect(clonedPacket.getPayload()).toEqual(stringToDataView('codec')); expect(clonedPacket.getPadding()).toBe(0); @@ -410,20 +410,20 @@ describe('create RTP packet 6 from scratch', () => { expect(clonedPacket.needsSerialization()).toBe(false); // Packet views and payload views must be the same. expect(areDataViewsEqual(clonedPacket.getView(), packet.getView())).toBe( - true, + true ); expect( - areDataViewsEqual(clonedPacket.getPayload(), packet.getPayload()), + areDataViewsEqual(clonedPacket.getPayload(), packet.getPayload()) ).toBe(true); // DataViews instances must be different since it's a cloned packet. expect(clonedPacket.getView() === packet.getView()).toBe(false); expect(clonedPacket.getPayload() === packet.getPayload()).toBe(false); // Internal ArrayBuffer instances must be different. expect(clonedPacket.getView().buffer === packet.getView().buffer).toBe( - false, + false ); expect( - clonedPacket.getPayload().buffer === packet.getPayload().buffer, + clonedPacket.getPayload().buffer === packet.getPayload().buffer ).toBe(false); // Clone again, now in a given buffer. @@ -436,10 +436,10 @@ describe('create RTP packet 6 from scratch', () => { expect(clonedPacket2.getPayload() === packet.getPayload()).toBe(false); // Internal ArrayBuffer instances must be different. expect(clonedPacket2.getView().buffer === packet.getView().buffer).toBe( - false, + false ); expect( - clonedPacket2.getPayload().buffer === packet.getPayload().buffer, + clonedPacket2.getPayload().buffer === packet.getPayload().buffer ).toBe(false); }); @@ -473,11 +473,11 @@ describe('create RTP packet 6 from scratch', () => { const payloadWithoutSeqNumberView = new DataView( packet.getPayload().buffer, packet.getPayload().byteOffset + 2, - packet.getPayload().byteLength - 2, + packet.getPayload().byteLength - 2 ); expect(areDataViewsEqual(payloadWithoutSeqNumberView, payloadView)).toBe( - true, + true ); packet.rtxDecode(payloadType, ssrc); @@ -507,7 +507,7 @@ describe('create RTP packet 7 from scratch', () => { expect(packet.needsSerialization()).toBe(true); expect(packet.getExtensions().size).toBe(1); expect(packet.getExtension(1)).toEqual( - numericArrayToDataView([1, 2, 3, 4]), + numericArrayToDataView([1, 2, 3, 4]) ); expect(packet.hasOneByteExtensions()).toBe(true); expect(packet.hasTwoBytesExtensions()).toBe(false); @@ -552,7 +552,7 @@ describe('create RTP packet 8 from scratch', () => { expect(packet.getExtensions().size).toBe(1); expect(packet.getExtension(0)).toBeUndefined(); expect(packet.getExtension(1)).toEqual( - numericArrayToDataView([1, 2, 3, 4]), + numericArrayToDataView([1, 2, 3, 4]) ); // Extension with id 16 (so 0 in 4 bits) must be ignored. expect(packet.getExtension(16)).toBeUndefined(); @@ -594,7 +594,7 @@ describe('create RTP packet 9 from scratch', () => { expect(packet.getExtensions().size).toBe(1); expect(packet.getExtension(0)).toBeUndefined(); expect(packet.getExtension(1)).toEqual( - numericArrayToDataView([1, 2, 3, 4]), + numericArrayToDataView([1, 2, 3, 4]) ); // Extension with id 256 (so 0 in 8 bits) must be ignored. expect(packet.getExtension(256)).toBeUndefined(); @@ -706,7 +706,7 @@ describe('clone packet into a given buffer', () => { // Packet and payload views must be the same. expect(areDataViewsEqual(clonedPacket.getView(), packetView)).toBe(true); expect(areDataViewsEqual(clonedPacket.getPayload(), payloadView)).toBe( - true, + true ); expect(clonedPacket.getView().buffer === buffer).toBe(true); expect(clonedPacket.getView().byteOffset).toBe(byteOffset); diff --git a/src/test/packets/RTP/rtpExtensions.test.ts b/src/test/packets/RTP/rtpExtensions.test.ts index 59b02ae5..537797f8 100644 --- a/src/test/packets/RTP/rtpExtensions.test.ts +++ b/src/test/packets/RTP/rtpExtensions.test.ts @@ -45,7 +45,7 @@ test('set RTP extension mapping and get/set specific RTP extensions', () => { packet.setRepairedRidExtension(rtpPacketDump.repairedRidExt); packet.setAbsSendTimeExtension(rtpPacketDump.absSendTimeExt); packet.setTransportWideSeqNumberExtension( - rtpPacketDump.transportWideSeqNumberExt, + rtpPacketDump.transportWideSeqNumberExt ); packet.setSsrcAudioLevelExtension(rtpPacketDump.ssrcAudioLevelExt); packet.setVideoOrientationExtension(rtpPacketDump.videoOrientationExt); @@ -70,41 +70,41 @@ test('setting specific RTP extension without mapping does nothing', () => { test('rtpExtensionUriToType()', () => { expect(rtpExtensionUriToType('urn:ietf:params:rtp-hdrext:sdes:mid')).toBe( - RtpExtensionType.MID, + RtpExtensionType.MID ); expect( - rtpExtensionUriToType('urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id'), + rtpExtensionUriToType('urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id') ).toBe(RtpExtensionType.RTP_STREAM_ID); expect( rtpExtensionUriToType( - 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id', - ), + 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id' + ) ).toBe(RtpExtensionType.RTP_REPAIRED_STREAM_ID); expect( rtpExtensionUriToType( - 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time', - ), + 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time' + ) ).toBe(RtpExtensionType.ABS_SEND_TIME); expect( rtpExtensionUriToType( - 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01', - ), + 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01' + ) ).toBe(RtpExtensionType.TRANSPORT_WIDE_SEQ_NUMBER); expect( - rtpExtensionUriToType('urn:ietf:params:rtp-hdrext:ssrc-audio-level'), + rtpExtensionUriToType('urn:ietf:params:rtp-hdrext:ssrc-audio-level') ).toBe(RtpExtensionType.SSRC_AUDIO_LEVEL); expect(rtpExtensionUriToType('urn:3gpp:video-orientation')).toBe( - RtpExtensionType.VIDEO_ORIENTATION, + RtpExtensionType.VIDEO_ORIENTATION ); expect(rtpExtensionUriToType('urn:ietf:params:rtp-hdrext:toffset')).toBe( - RtpExtensionType.TOFFSET, + RtpExtensionType.TOFFSET ); expect(rtpExtensionUriToType('foo')).toBe(undefined); diff --git a/src/test/packets/Serializable.test.ts b/src/test/packets/Serializable.test.ts index 95180a7d..f9596b92 100644 --- a/src/test/packets/Serializable.test.ts +++ b/src/test/packets/Serializable.test.ts @@ -1,7 +1,7 @@ import { Serializable } from '../../packets/Serializable'; import { clone, areDataViewsEqual } from '../../utils/helpers'; -export class Foo extends Serializable { +class Foo extends Serializable { constructor(view: DataView) { super(view); } @@ -17,12 +17,12 @@ export class Foo extends Serializable { const view = new DataView( bufferData.buffer, bufferData.byteOffset, - bufferData.byteLength, + bufferData.byteLength ); const uint8Array = new Uint8Array( view.buffer, view.byteOffset, - view.byteLength, + view.byteLength ); // Copy the entire view into the new buffer. @@ -30,9 +30,9 @@ export class Foo extends Serializable { new Uint8Array( this.view.buffer, this.view.byteOffset, - this.view.byteLength, + this.view.byteLength ), - 0, + 0 ); // Update DataView. @@ -45,13 +45,13 @@ export class Foo extends Serializable { buffer?: ArrayBuffer, byteOffset?: number, serializationBuffer?: ArrayBuffer, - serializationByteOffset?: number, + serializationByteOffset?: number ): Foo { const view = this.cloneInternal( buffer, byteOffset, serializationBuffer, - serializationByteOffset, + serializationByteOffset ); return new Foo(view); @@ -128,8 +128,8 @@ describe('parse Foo 1', () => { }); test('clone() fails if current buffer is given for serialization and it collides', () => { - // Force seriqlization when cloning. - // @ts-ignore + // Force serialization when cloning. + // @ts-expect-error --- Protected class method. foo.setSerializationNeeded(true); const buffer = new ArrayBuffer(10); @@ -138,7 +138,7 @@ describe('parse Foo 1', () => { buffer, byteOffset, /* serializationBuffer */ view.buffer, - /* byteOffset */ 9, + /* byteOffset */ 9 ); expect(clonedFoo.getByteLength()).toBe(10); diff --git a/src/test/utils/bitOps.test.ts b/src/test/utils/bitOps.test.ts index ca04afa9..3e5231de 100644 --- a/src/test/utils/bitOps.test.ts +++ b/src/test/utils/bitOps.test.ts @@ -46,39 +46,39 @@ test('writeBitInDataView()', () => { test('readBitsInDataView()', () => { // Must throw if mask has no enabled bit. - expect(() => - readBitsInDataView({ view, pos: 0, mask: 0b00000000 }), - ).toThrowError(TypeError); + expect(() => readBitsInDataView({ view, pos: 0, mask: 0b00000000 })).toThrow( + TypeError + ); // Must throw if mask has is bigger than 0b11111111. - expect(() => - readBitsInDataView({ view, pos: 0, mask: 0b100000000 }), - ).toThrowError(TypeError); + expect(() => readBitsInDataView({ view, pos: 0, mask: 0b100000000 })).toThrow( + TypeError + ); expect(readBitsInDataView({ view, pos: 0, mask: 0b00000011 })).toBe( - 0b00000000, + 0b00000000 ); expect(readBitsInDataView({ view, pos: 0, mask: 0b00000110 })).toBe( - 0b00000000, + 0b00000000 ); expect(readBitsInDataView({ view, pos: 0, mask: 0b10000000 })).toBe( - 0b00000000, + 0b00000000 ); expect(readBitsInDataView({ view, pos: 0, mask: 0b10000001 })).toBe( - 0b00000000, + 0b00000000 ); }); test('writeBitsInDataView()', () => { // Must throw if mask has no enabled bit. expect(() => - writeBitsInDataView({ view, pos: 0, mask: 0b00000000, value: 123 }), - ).toThrowError(TypeError); + writeBitsInDataView({ view, pos: 0, mask: 0b00000000, value: 123 }) + ).toThrow(TypeError); // Must throw if mask has is bigger than 0b11111111. expect(() => - writeBitsInDataView({ view, pos: 0, mask: 0b100000000, value: 123 }), - ).toThrowError(TypeError); + writeBitsInDataView({ view, pos: 0, mask: 0b100000000, value: 123 }) + ).toThrow(TypeError); writeBitsInDataView({ view, pos: 0, mask: 0b00000001, value: 1 }); expect(view.getUint8(0)).toBe(1); diff --git a/src/utils/helpers.ts b/src/utils/helpers.ts index 17faa44d..49aac493 100644 --- a/src/utils/helpers.ts +++ b/src/utils/helpers.ts @@ -13,7 +13,7 @@ export function clone(data: T): T { return data.slice(0) as unknown as T; } else if (data instanceof DataView) { return new DataView( - data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength), + data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength) ) as unknown as T; } else if (data === undefined) { return undefined as unknown as T; @@ -34,7 +34,6 @@ export function clone(data: T): T { * @category Utils * @hidden */ -// eslint-disable-next-line @typescript-eslint/no-unused-vars export function assertUnreachable(_x: never): never { throw new Error(`we should not get here: ${_x}`); } @@ -62,7 +61,7 @@ export function padTo4Bytes(size: number): number { export function areDataViewsEqual(view1: DataView, view2: DataView) { if (view1 === view2) { logger.debug( - 'areDataViewsEqual() | view1 and view2 are the same DataView instance', + 'areDataViewsEqual() | view1 and view2 are the same DataView instance' ); return true; @@ -71,7 +70,7 @@ export function areDataViewsEqual(view1: DataView, view2: DataView) { if (view1.byteLength !== view2.byteLength) { if (logger.debug.enabled) { logger.debug( - `areDataViewsEqual() | different byte length [view1.byteLength:${view1.byteLength}, view2.byteLength:${view2.byteLength}]`, + `areDataViewsEqual() | different byte length [view1.byteLength:${view1.byteLength}, view2.byteLength:${view2.byteLength}]` ); logger.debug('areDataViewsEqual() | view1:', view1); logger.debug('areDataViewsEqual() | view2:', view2); @@ -88,7 +87,7 @@ export function areDataViewsEqual(view1: DataView, view2: DataView) { logger.debug( `areDataViewsEqual() | different byte [idx:${i}, view1:${view1 .getUint8(i) - .toString(16)}, view2:${view2.getUint8(i).toString(16)}]`, + .toString(16)}, view2:${view2.getUint8(i).toString(16)}]` ); logger.debug('areDataViewsEqual() | view1:', view1); logger.debug('areDataViewsEqual() | view2:', view2); @@ -114,7 +113,7 @@ export function nodeBufferToDataView(nodeBuffer: Buffer): DataView { return new DataView( nodeBuffer.buffer, nodeBuffer.byteOffset, - nodeBuffer.byteLength, + nodeBuffer.byteLength ); } @@ -139,7 +138,7 @@ export function dataViewToNodeBuffer(view: DataView): Buffer { export function nodeBufferToArrayBuffer(nodeBuffer: Buffer): ArrayBuffer { return nodeBuffer.buffer.slice( nodeBuffer.byteOffset, - nodeBuffer.byteOffset + nodeBuffer.byteLength, + nodeBuffer.byteOffset + nodeBuffer.byteLength ); } @@ -184,7 +183,7 @@ export function numberToDataView(number: number): DataView { return new DataView( uint8Array.buffer, uint8Array.byteOffset, - uint8Array.byteLength, + uint8Array.byteLength ); } @@ -222,7 +221,7 @@ export function stringToDataView(string: string): DataView { return new DataView( uint8Array.buffer, uint8Array.byteOffset, - uint8Array.byteLength, + uint8Array.byteLength ); } @@ -251,7 +250,7 @@ export function stringToUint8Array(string: string): Uint8Array { return new Uint8Array( uint8Array.buffer, uint8Array.byteOffset, - uint8Array.byteLength, + uint8Array.byteLength ); } diff --git a/tsconfig.json b/tsconfig.json index 51001983..1a7d323b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,8 @@ { "compileOnSave": true, "compilerOptions": { - "lib": ["es2020"], - "target": "es2020", + "lib": ["es2022"], + "target": "es2022", "module": "commonjs", "moduleResolution": "node", "strict": true, @@ -10,29 +10,5 @@ "declaration": true, "declarationMap": true }, - "include": ["src"], - "typedocOptions": { - "entryPoints": ["src/packets/public.ts", "src/utils/public.ts"], - "out": "docs", - "excludePrivate": true, - "excludeProtected": true, - "excludeNotDocumented": true, - "excludeInternal": true, - "includeVersion": true, - "gitRemote": "origin", - "hideGenerator": false, - "titleLink": "https://versatica.github.io/rtp.js", - "treatWarningsAsErrors": true, - "cacheBust": true, - "categorizeByGroup": false, - "categoryOrder": ["RTP", "RTCP", "RTCP Extended Reports", "Utils", "*"], - "navigationLinks": { - "GitHub": "https://github.com/versatica/rtp.js", - "NPM": "https://www.npmjs.com/package/rtp.js" - }, - "navigationLinks": { - "GitHub": "https://github.com/versatica/rtp.js" - }, - "customCss": "./docs-assets/custom-styles.css" - } + "include": ["src"] } diff --git a/typedoc.config.mjs b/typedoc.config.mjs new file mode 100644 index 00000000..829138c8 --- /dev/null +++ b/typedoc.config.mjs @@ -0,0 +1,27 @@ +/** @type {Partial} */ +const config = { + entryPoints: ['src/packets/public.ts', 'src/utils/public.ts'], + out: 'typedoc', + skipErrorChecking: false, + excludePrivate: true, + excludeProtected: true, + excludeNotDocumented: true, + excludeInternal: true, + excludeExternals: true, + includeVersion: true, + gitRemote: 'origin', + hideGenerator: false, + treatWarningsAsErrors: true, + cacheBust: true, + categorizeByGroup: false, + categoryOrder: ['RTP', 'RTCP', 'RTCP Extended Reports', 'Utils', '*'], + searchInComments: true, + projectDocuments: ['README.md', 'LICENSE'], + navigationLinks: { + GitHub: 'https://github.com/versatica/rtp.js', + NPM: 'https://www.npmjs.com/package/rtp.js', + }, + customCss: './docs-assets/custom-styles.css', +}; + +export default config; diff --git a/docs/.nojekyll b/typedoc/.nojekyll similarity index 100% rename from docs/.nojekyll rename to typedoc/.nojekyll diff --git a/docs/assets/custom.css b/typedoc/assets/custom.css similarity index 100% rename from docs/assets/custom.css rename to typedoc/assets/custom.css diff --git a/typedoc/assets/hierarchy.js b/typedoc/assets/hierarchy.js new file mode 100644 index 00000000..38f85ce4 --- /dev/null +++ b/typedoc/assets/hierarchy.js @@ -0,0 +1 @@ +window.hierarchyData = "eJydl99vmzAQx/8XP187/8bmcW03aZqqKJWmSVUeKHgKCgFmyLStyv8+kaipCdE454UH9P36c3f4zuaV+KbpO5I+yxUQ735ULu/Lpu5I+krk8KizrSMpeXK+zKryb/ZSOQJkU9YFSRk3QHa+IinJq6zrXPehzfKN67vbUH+77rcVgaOGpKTvipthgZvjCyD5uqwK72qSPisKyhqwhgKnjK72QBQN4lgc1sdEcFTGsBmTIKQFKczAZSwswLJv8eyTeAa/ByKkHVHyKEyO45yV2IA2CgxVYKwGRrUAZjkFQenwMHJIXwoTBHbXbNtmVxf44MaO+UIoGvKWLnflL+eXrm18H1GSCz4E256z26ELjotgsYFlnqiNGnVXXcTnOnXNcw0NuR//ODzuJEZQrA6zK1wXkdVJPc+xhp5x7ta7eoPFHMTzlKFBAswn54qXLN/gUxo74kaSNsC4pcBEYoApaoEpmwBLmARmOD9OKh3u38eo4B6xgQ0gbkcF90v3M+LLvssRKJGEOT3kNR50EiMwiobzd1GVESfMmxiDsUlYuBjMUwQmGZ9ZbRfBeVcjQIbzAPTZ1c6XeXxnXDQi8JaH+/C7xxPftPOQ4f4R7sDf/TBvC/yhMHbEtD2niQHOtAbOlQQuJAcuqQEukwS4FhS44Ry4ZXZ1CHXULF995eLDnboQNWI6nPT3V4GnLgSYq3CnL3wfz52YEFghw32/vAY7MSGwcnQ5uq+8v6LMExcGnIzmVhePPfcgoFqEjfdtGw899yCg44n2kNdXNPy5CYG1zE4HaTz6ohHx90HppRn3pez7t5tlxNXtP3ZMKEZOKxF9lOBw+/0/fO3sVQ==" \ No newline at end of file diff --git a/docs/assets/highlight.css b/typedoc/assets/highlight.css similarity index 100% rename from docs/assets/highlight.css rename to typedoc/assets/highlight.css diff --git a/typedoc/assets/icons.js b/typedoc/assets/icons.js new file mode 100644 index 00000000..58882d76 --- /dev/null +++ b/typedoc/assets/icons.js @@ -0,0 +1,18 @@ +(function() { + addIcons(); + function addIcons() { + if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); + const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); + svg.innerHTML = `MMNEPVFCICPMFPCPTTAAATR`; + svg.style.display = "none"; + if (location.protocol === "file:") updateUseElements(); + } + + function updateUseElements() { + document.querySelectorAll("use").forEach(el => { + if (el.getAttribute("href").includes("#icon-")) { + el.setAttribute("href", el.getAttribute("href").replace(/.*#/, "#")); + } + }); + } +})() \ No newline at end of file diff --git a/typedoc/assets/icons.svg b/typedoc/assets/icons.svg new file mode 100644 index 00000000..50ad5799 --- /dev/null +++ b/typedoc/assets/icons.svg @@ -0,0 +1 @@ +MMNEPVFCICPMFPCPTTAAATR \ No newline at end of file diff --git a/docs/assets/main.js b/typedoc/assets/main.js similarity index 51% rename from docs/assets/main.js rename to typedoc/assets/main.js index 7270cff8..4f59cd95 100644 --- a/docs/assets/main.js +++ b/typedoc/assets/main.js @@ -1,8 +1,9 @@ "use strict"; -"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(B,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`,this.handleValueChange()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(e=>{e.style.display="block";let n=Array.from(e.querySelectorAll(".tsd-index-link")).every(r=>r.offsetParent==null);e.style.display=n?"none":"block"})}};var Z=class extends C{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings.","hierarchy_expand":"Expand","hierarchy_collapse":"Collapse"}; +"use strict";(()=>{var De=Object.create;var le=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var Ne=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,Be=Object.prototype.hasOwnProperty;var qe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var je=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ne(e))!Be.call(t,i)&&i!==n&&le(t,i,{get:()=>e[i],enumerable:!(r=Fe(e,i))||r.enumerable});return t};var $e=(t,e,n)=>(n=t!=null?De(Ve(t)):{},je(e||!t||!t.__esModule?le(n,"default",{value:t,enumerable:!0}):n,t));var pe=qe((de,he)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,c],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[c+1]*i[d+1],c+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}s.str.length==1&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof de=="object"?he.exports=n():e.lunr=n()}(this,function(){return t})})()});window.translations||={copy:"Copy",copied:"Copied!",normally_hidden:"This member is normally hidden due to your filter settings.",hierarchy_expand:"Expand",hierarchy_collapse:"Collapse"};var ce=[];function G(t,e){ce.push({selector:e,constructor:t})}var J=class{alwaysVisibleMember=null;constructor(){this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){ce.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!ze(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function ze(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var ue=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var ge=$e(pe(),1);async function H(t){let e=Uint8Array.from(atob(t),s=>s.charCodeAt(0)),r=new Blob([e]).stream().pipeThrough(new DecompressionStream("deflate")),i=await new Response(r).text();return JSON.parse(i)}async function fe(t,e){if(!window.searchData)return;let n=await H(window.searchData);t.data=n,t.index=ge.Index.load(n.index),e.classList.remove("loading"),e.classList.add("ready")}function ve(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:document.documentElement.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{fe(e,t)}),fe(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{re(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),We(t,i,r,e)}function We(t,e,n,r){n.addEventListener("input",ue(()=>{Ue(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?Je(e,t):i.key=="ArrowUp"?(me(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(me(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),re(t))})}function re(t){t.classList.remove("has-focus")}function Ue(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ye(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ye(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=c+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function me(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function Je(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),re(e)}}function ye(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ne(t.substring(s,o)),`${ne(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ne(t.substring(s))),i.join("")}var Ge={"&":"&","<":"<",">":">","'":"'",'"':"""};function ne(t){return t.replace(/[&<>"'"]/g,e=>Ge[e])}var I=class{el;app;constructor(e){this.el=e.el,this.app=e.app}};var A="mousedown",Ee="mousemove",B="mouseup",X={x:0,y:0},xe=!1,ie=!1,Xe=!1,D=!1,Le=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Le?"is-mobile":"not-mobile");Le&&"ontouchstart"in document.documentElement&&(Xe=!0,A="touchstart",Ee="touchmove",B="touchend");document.addEventListener(A,t=>{ie=!0,D=!1;let e=A=="touchstart"?t.targetTouches[0]:t;X.y=e.pageY||0,X.x=e.pageX||0});document.addEventListener(Ee,t=>{if(ie&&!D){let e=A=="touchstart"?t.targetTouches[0]:t,n=X.x-(e.pageX||0),r=X.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ie=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var Y=class extends I{active;className;constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(A,n=>this.onDocumentPointerDown(n)),document.addEventListener(B,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var se;try{se=localStorage}catch{se={getItem(){return null},setItem(){}}}var C=se;var be=document.head.appendChild(document.createElement("style"));be.dataset.for="filters";var Z=class extends I{key;value;constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),be.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=C.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){C.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var oe=new Map,ae=class{open;accordions=[];key;constructor(e,n){this.key=e,this.open=n}add(e){this.accordions.push(e),e.open=this.open,e.addEventListener("toggle",()=>{this.toggle(e.open)})}toggle(e){for(let n of this.accordions)n.open=e;C.setItem(this.key,e.toString())}},K=class extends I{constructor(e){super(e);let n=this.el.querySelector("summary"),r=n.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)});let i=`tsd-accordion-${n.dataset.key??n.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`,s;if(oe.has(i))s=oe.get(i);else{let o=C.getItem(i),a=o?o==="true":this.el.open;s=new ae(i,a),oe.set(i,s)}s.add(this.el)}};function Se(t){let e=C.getItem("tsd-theme")||"os";t.value=e,we(e),t.addEventListener("change",()=>{C.setItem("tsd-theme",t.value),we(t.value)})}function we(t){document.documentElement.dataset.theme=t}var ee;function Ce(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Te),Te())}async function Te(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let e=await H(window.navigationData);ee=document.documentElement.dataset.base,ee.endsWith("/")||(ee+="/"),t.innerHTML="";for(let n of e)Ie(n,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Ie(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',ke(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let c of t.children)Ie(c,l,i)}else ke(t,r,t.class)}function ke(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=ee+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else{let r=e.appendChild(document.createElement("span"));r.innerHTML='',r.appendChild(document.createElement("span")).textContent=t.text}}var te=document.documentElement.dataset.base;te.endsWith("/")||(te+="/");function Pe(){document.querySelector(".tsd-full-hierarchy")?Ye():document.querySelector(".tsd-hierarchy")&&Ze()}function Ye(){document.addEventListener("click",r=>{let i=r.target;for(;i.parentElement&&i.parentElement.tagName!="LI";)i=i.parentElement;i.dataset.dropdown&&(i.dataset.dropdown=String(i.dataset.dropdown!=="true"))});let t=new Map,e=new Set;for(let r of document.querySelectorAll(".tsd-full-hierarchy [data-refl]")){let i=r.querySelector("ul");t.has(r.dataset.refl)?e.add(r.dataset.refl):i&&t.set(r.dataset.refl,i)}for(let r of e)n(r);function n(r){let i=t.get(r).cloneNode(!0);i.querySelectorAll("[id]").forEach(s=>{s.removeAttribute("id")}),i.querySelectorAll("[data-dropdown]").forEach(s=>{s.dataset.dropdown="false"});for(let s of document.querySelectorAll(`[data-refl="${r}"]`)){let o=tt(),a=s.querySelector("ul");s.insertBefore(o,a),o.dataset.dropdown=String(!!a),a||s.appendChild(i.cloneNode(!0))}}}function Ze(){let t=document.getElementById("tsd-hierarchy-script");t&&(t.addEventListener("load",Qe),Qe())}async function Qe(){let t=document.querySelector(".tsd-panel.tsd-hierarchy:has(h4 a)");if(!t||!window.hierarchyData)return;let e=+t.dataset.refl,n=await H(window.hierarchyData),r=t.querySelector("ul"),i=document.createElement("ul");if(i.classList.add("tsd-hierarchy"),Ke(i,n,e),r.querySelectorAll("li").length==i.querySelectorAll("li").length)return;let s=document.createElement("span");s.classList.add("tsd-hierarchy-toggle"),s.textContent=window.translations.hierarchy_expand,t.querySelector("h4 a")?.insertAdjacentElement("afterend",s),s.insertAdjacentText("beforebegin",", "),s.addEventListener("click",()=>{s.textContent===window.translations.hierarchy_expand?(r.insertAdjacentElement("afterend",i),r.remove(),s.textContent=window.translations.hierarchy_collapse):(i.insertAdjacentElement("afterend",r),i.remove(),s.textContent=window.translations.hierarchy_expand)})}function Ke(t,e,n){let r=e.roots.filter(i=>et(e,i,n));for(let i of r)t.appendChild(Oe(e,i,n))}function Oe(t,e,n,r=new Set){if(r.has(e))return;r.add(e);let i=t.reflections[e],s=document.createElement("li");if(s.classList.add("tsd-hierarchy-item"),e===n){let o=s.appendChild(document.createElement("span"));o.textContent=i.name,o.classList.add("tsd-hierarchy-target")}else{for(let a of i.uniqueNameParents||[]){let l=t.reflections[a],c=s.appendChild(document.createElement("a"));c.textContent=l.name,c.href=te+l.url,c.className=l.class+" tsd-signature-type",s.append(document.createTextNode("."))}let o=s.appendChild(document.createElement("a"));o.textContent=t.reflections[e].name,o.href=te+i.url,o.className=i.class+" tsd-signature-type"}if(i.children){let o=s.appendChild(document.createElement("ul"));o.classList.add("tsd-hierarchy");for(let a of i.children){let l=Oe(t,a,n,r);l&&o.appendChild(l)}}return r.delete(e),s}function et(t,e,n){if(e===n)return!0;let r=new Set,i=[t.reflections[e]];for(;i.length;){let s=i.pop();if(!r.has(s)){r.add(s);for(let o of s.children||[]){if(o===n)return!0;i.push(t.reflections[o])}}}return!1}function tt(){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("width","20"),t.setAttribute("height","20"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.innerHTML='',t}G(Y,"a[data-toggle]");G(K,".tsd-accordion");G(Z,".tsd-filter-item input[type=checkbox]");var _e=document.getElementById("tsd-theme");_e&&Se(_e);var nt=new J;Object.defineProperty(window,"app",{value:nt});ve();Ce();Pe();})(); /*! Bundled license information: lunr/lunr.js: diff --git a/typedoc/assets/navigation.js b/typedoc/assets/navigation.js new file mode 100644 index 00000000..ff562eda --- /dev/null +++ b/typedoc/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "eJydmVtv00AQRv+Lnyt6oZSQt/QCArWhSkKFVPXBsafNqvba7K4LAfHfkeP6st7dmQlvVXv2fLPj27i+/xMZ+GWiabS4ml3eXEUHURmbTTSN0iKpcpBGHzZ/ebMxeRYdRM9CptF08nYyOTua/D3o1pdx8gxG94K8SKsM9OHrH+z1JwdRshFZqkBG0/tOcvXLgEwhXUBZKLPaltD7QFZ5b3PJUYGD0m71R4B0HSfPN6B1/ASY2AuH3QuTlLe7pZjUpjBbuduYFoXEfTaHGvfYvJ8O25cp6M8Gcsw5ZMKm8y00Deo1SRZrPTiBOsS2HJ8MPRdFXhaVTCmZzWHGy0wp+2wLW10WNasM2GaHxcxXieSKHZTwUo3tENTzmvhFGAOqydWkObyIk0U2gt2F9hKhCrY5zPgJJCiRcEv14gw/t3AvzvAzvbTveo8rw2Ux85yx/Tlrz5SFYcgEKWkR1KMMt1kOinkXkIB4aS81qlQfTdlLIwpJ1TwCUWepyZb2DGri99RBUW83CSDCjsFNDBHDUz+fLzaVfA57OoTyUAX1DGqqe8k861wWNysRZ+J3vM4Ac/YUaqOv3yXn+l2qBfwgTT2EujT3tB2TmPUu51rHJGb9rqhNtwRm6cbCyyove5XZlr7ZsYZGryJHH94fvzsJzpCY1iUptzshYn4/zclYVuvxoXLVHUQanWcsWrWXpjKcQRSL8MKMBPqQWhBpDI+kaAa+jJvaLBzdu/1JA3Q/O2cb/CNgT5SY2yUpt3coxiKCC5hJ/M0EFzCT2Al8szs1Y3o/TWXMWc2Z79UR2reHq304o7ohRBrHoyBq9sFUgm/KxkJCPCdnMHRTESOUtHczOCq2KNK5T++9MJnQzeWo2qJoZ/+fvJu4LIV8CosdlGHnFLxHvd2rAGa0II6RLtKmSKfzVoC6vTSd0b8l4HabI72cu9Jyn7vS4NUBddoYadX8y83H0n6VzKpUFNfwAll35ocjvDiVcidSKL4qAdLE9T2MzAkuIJNyfr98LOVv35Uw75ChfImC2Iye+ufC3EFiCjUaOh8rmdTN6JPo1Xb+2SkRvajkNcgns/mvaHs1GV3PJPU3CzqmJRGl0PUjAVM1BKEgDZigjJUG9L3BdYbWUDGc5lkgIlSDZ943JVaF/aXJFXsXIAFG5HCjV8VsrevHwErkqN6DO/KHgb4yIvN8E939mvVFNFYq3p5Xj4+gVsW8SKH52VdjIw0sQFpgrVgaZY0gqL6BEXUam/hOwE9e6T6aJaeKHpOI9AlMw5xvDTS3jLDXAyNq2W1qVcz6Nob1gQXMiMvXTfP8LY3Jq3zNFI9IXFq/uO62x1R7ePSWlK6K0/oA6bB1ACEqvTvWnCrHpOce8fAPq0unkQ==" \ No newline at end of file diff --git a/typedoc/assets/search.js b/typedoc/assets/search.js new file mode 100644 index 00000000..ea29bd33 --- /dev/null +++ b/typedoc/assets/search.js @@ -0,0 +1 @@ +window.searchData = "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"; \ No newline at end of file diff --git a/typedoc/assets/style.css b/typedoc/assets/style.css new file mode 100644 index 00000000..7f80f3dc --- /dev/null +++ b/typedoc/assets/style.css @@ -0,0 +1,1610 @@ +@layer typedoc { + :root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + + --light-color-icon-background: var(--light-color-background); + --light-color-icon-text: var(--light-color-text); + + --light-color-comment-tag-text: var(--light-color-text); + --light-color-comment-tag: var(--light-color-background); + + --light-color-link: #1f70c2; + --light-color-focus-outline: #3584e4; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: #9f5f30; + --light-color-ts-method: #be3989; + --light-color-ts-reference: #ff4d82; + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var( + --light-color-ts-constructor + ); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: #c73c3c; + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + --light-color-document: #000000; + + --light-color-alert-note: #0969d9; + --light-color-alert-tip: #1a7f37; + --light-color-alert-important: #8250df; + --light-color-alert-warning: #9a6700; + --light-color-alert-caution: #cf222e; + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-icon-text: var(--dark-color-text); + + --dark-color-comment-tag-text: var(--dark-color-text); + --dark-color-comment-tag: var(--dark-color-background); + + --dark-color-link: #00aff4; + --dark-color-focus-outline: #4c97f2; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: #ff984d; + --dark-color-ts-method: #ff4db8; + --dark-color-ts-reference: #ff4d82; + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: #ff6060; + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + --dark-color-document: #ffffff; + + --dark-color-alert-note: #0969d9; + --dark-color-alert-tip: #1a7f37; + --dark-color-alert-important: #8250df; + --dark-color-alert-warning: #9a6700; + --dark-color-alert-caution: #cf222e; + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; + } + + @media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var( + --light-color-background-secondary + ); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + + --color-icon-background: var(--light-color-icon-background); + --color-icon-text: var(--light-color-icon-text); + + --color-comment-tag-text: var(--light-color-text); + --color-comment-tag: var(--light-color-background); + + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-project: var(--light-color-ts-project); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-reference: var(--light-color-ts-reference); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --color-alert-note: var(--light-color-alert-note); + --color-alert-tip: var(--light-color-alert-tip); + --color-alert-important: var(--light-color-alert-important); + --color-alert-warning: var(--light-color-alert-warning); + --color-alert-caution: var(--light-color-alert-caution); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } + } + + @media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var( + --dark-color-background-secondary + ); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + + --color-icon-background: var(--dark-color-icon-background); + --color-icon-text: var(--dark-color-icon-text); + + --color-comment-tag-text: var(--dark-color-text); + --color-comment-tag: var(--dark-color-background); + + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-project: var(--dark-color-ts-project); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-reference: var(--dark-color-ts-reference); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --color-alert-note: var(--dark-color-alert-note); + --color-alert-tip: var(--dark-color-alert-tip); + --color-alert-important: var(--dark-color-alert-important); + --color-alert-warning: var(--dark-color-alert-warning); + --color-alert-caution: var(--dark-color-alert-caution); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } + } + + html { + color-scheme: var(--color-scheme); + } + + body { + margin: 0; + } + + :root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-icon-text: var(--light-color-icon-text); + + --color-comment-tag-text: var(--light-color-text); + --color-comment-tag: var(--light-color-background); + + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-project: var(--light-color-ts-project); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-reference: var(--light-color-ts-reference); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --color-note: var(--light-color-note); + --color-tip: var(--light-color-tip); + --color-important: var(--light-color-important); + --color-warning: var(--light-color-warning); + --color-caution: var(--light-color-caution); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } + + :root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-icon-text: var(--dark-color-icon-text); + + --color-comment-tag-text: var(--dark-color-text); + --color-comment-tag: var(--dark-color-background); + + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-project: var(--dark-color-ts-project); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-reference: var(--dark-color-ts-reference); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --color-note: var(--dark-color-note); + --color-tip: var(--dark-color-tip); + --color-important: var(--dark-color-important); + --color-warning: var(--dark-color-warning); + --color-caution: var(--dark-color-caution); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } + + *:focus-visible, + .tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); + } + + .always-visible, + .always-visible .tsd-signatures { + display: inherit !important; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + line-height: 1.2; + } + + h1 { + font-size: 1.875rem; + margin: 0.67rem 0; + } + + h2 { + font-size: 1.5rem; + margin: 0.83rem 0; + } + + h3 { + font-size: 1.25rem; + margin: 1rem 0; + } + + h4 { + font-size: 1.05rem; + margin: 1.33rem 0; + } + + h5 { + font-size: 1rem; + margin: 1.5rem 0; + } + + h6 { + font-size: 0.875rem; + margin: 2.33rem 0; + } + + dl, + menu, + ol, + ul { + margin: 1em 0; + } + + dd { + margin: 0 0 0 34px; + } + + .container { + max-width: 1700px; + padding: 0 2rem; + } + + /* Footer */ + footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; + } + footer > p { + margin: 0 1em; + } + + .container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); + } + + @keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + @keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } + } + @keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } + } + @keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } + } + @keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } + } + body { + background: var(--color-background); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); + } + + a { + color: var(--color-link); + text-decoration: none; + } + a:hover { + text-decoration: underline; + } + a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; + } + a.tsd-anchor-link { + color: var(--color-text); + } + + code, + pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; + } + + pre { + position: relative; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); + margin-bottom: 8px; + } + pre code { + padding: 0; + font-size: 100%; + } + pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; + } + pre:hover > button, + pre > button.visible { + opacity: 1; + } + + blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; + } + + .tsd-typography { + line-height: 1.333em; + } + .tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; + } + .tsd-typography .tsd-index-panel h3, + .tsd-index-panel .tsd-typography h3, + .tsd-typography h4, + .tsd-typography h5, + .tsd-typography h6 { + font-size: 1em; + } + .tsd-typography h5, + .tsd-typography h6 { + font-weight: normal; + } + .tsd-typography p, + .tsd-typography ul, + .tsd-typography ol { + margin: 1em 0; + } + .tsd-typography table { + border-collapse: collapse; + border: none; + } + .tsd-typography td, + .tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); + } + .tsd-typography thead, + .tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); + } + + .tsd-alert { + padding: 8px 16px; + margin-bottom: 16px; + border-left: 0.25em solid var(--alert-color); + } + .tsd-alert blockquote > :last-child, + .tsd-alert > :last-child { + margin-bottom: 0; + } + .tsd-alert-title { + color: var(--alert-color); + display: inline-flex; + align-items: center; + } + .tsd-alert-title span { + margin-left: 4px; + } + + .tsd-alert-note { + --alert-color: var(--color-alert-note); + } + .tsd-alert-tip { + --alert-color: var(--color-alert-tip); + } + .tsd-alert-important { + --alert-color: var(--color-alert-important); + } + .tsd-alert-warning { + --alert-color: var(--color-alert-warning); + } + .tsd-alert-caution { + --alert-color: var(--color-alert-caution); + } + + .tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); + } + .tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; + } + .tsd-breadcrumb a:hover { + text-decoration: underline; + } + .tsd-breadcrumb li { + display: inline; + } + .tsd-breadcrumb li:after { + content: " / "; + } + + .tsd-comment-tags { + display: flex; + flex-direction: column; + } + dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; + } + dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; + } + dl.tsd-comment-tag-group dd { + margin: 0; + } + code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; + } + h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; + } + + dl.tsd-comment-tag-group dd:before, + dl.tsd-comment-tag-group dd:after { + content: " "; + } + dl.tsd-comment-tag-group dd pre, + dl.tsd-comment-tag-group dd:after { + clear: both; + } + dl.tsd-comment-tag-group p { + margin: 0; + } + + .tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; + } + .tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; + } + + .tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; + } + .tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; + } + .tsd-filter-input { + display: flex; + width: -moz-fit-content; + width: fit-content; + align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + } + .tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; + } + .tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; + } + .tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; + } + .tsd-filter-input input[type="checkbox"]:focus-visible + svg { + outline: 2px solid var(--color-focus-outline); + } + .tsd-checkbox-background { + fill: var(--color-accent); + } + input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); + } + .tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; + } + .tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); + } + + .settings-label { + font-weight: bold; + text-transform: uppercase; + display: inline-block; + } + + .tsd-filter-visibility .settings-label { + margin: 0.75rem 0 0.5rem 0; + } + + .tsd-theme-toggle .settings-label { + margin: 0.75rem 0.75rem 0 0; + } + + .tsd-hierarchy h4 label:hover span { + text-decoration: underline; + } + + .tsd-hierarchy { + list-style: square; + margin: 0; + } + .tsd-hierarchy-target { + font-weight: bold; + } + .tsd-hierarchy-toggle { + color: var(--color-link); + cursor: pointer; + } + + .tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); + } + .tsd-full-hierarchy, + .tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; + } + .tsd-full-hierarchy ul { + padding-left: 1.5rem; + } + .tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); + } + .tsd-full-hierarchy svg[data-dropdown] { + cursor: pointer; + } + .tsd-full-hierarchy svg[data-dropdown="false"] { + transform: rotate(-90deg); + } + .tsd-full-hierarchy svg[data-dropdown="false"] ~ ul { + display: none; + } + + .tsd-panel-group.tsd-index-group { + margin-bottom: 0; + } + .tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; + } + @media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } + } + @media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } + } + .tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; + } + + .tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; + } + + .tsd-anchor { + position: relative; + top: -100px; + } + + .tsd-member { + position: relative; + } + .tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; + } + + .tsd-navigation.settings { + margin: 1rem 0; + } + .tsd-navigation > a, + .tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; + } + .tsd-navigation a, + .tsd-navigation summary > span, + .tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; + } + .tsd-navigation a.current, + .tsd-page-navigation a.current { + background: var(--color-active-menu-item); + } + .tsd-navigation a:hover, + .tsd-page-navigation a:hover { + text-decoration: underline; + } + .tsd-navigation ul, + .tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; + } + .tsd-navigation li, + .tsd-page-navigation li { + padding: 0; + max-width: 100%; + } + .tsd-navigation .tsd-nav-link { + display: none; + } + .tsd-nested-navigation { + margin-left: 3rem; + } + .tsd-nested-navigation > li > details { + margin-left: -1.5rem; + } + .tsd-small-nested-navigation { + margin-left: 1.5rem; + } + .tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; + } + + .tsd-page-navigation-section { + margin-left: 10px; + } + .tsd-page-navigation-section > summary { + padding: 0.25rem; + } + .tsd-page-navigation-section > div { + margin-left: 20px; + } + .tsd-page-navigation ul { + padding-left: 1.75rem; + } + + #tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; + } + #tsd-sidebar-links a:last-of-type { + margin-bottom: 0; + } + + a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); + } + .tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ + } + .tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ + } + .tsd-accordion-summary, + .tsd-accordion-summary a { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + cursor: pointer; + } + .tsd-accordion-summary a { + width: calc(100% - 1.5rem); + } + .tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + } + .tsd-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; + vertical-align: text-top; + } + /* + We need to be careful to target the arrow indicating whether the accordion + is open, but not any other SVGs included in the details element. +*/ + .tsd-accordion:not([open]) > .tsd-accordion-summary > svg:first-child, + .tsd-accordion:not([open]) > .tsd-accordion-summary > h1 > svg:first-child, + .tsd-accordion:not([open]) > .tsd-accordion-summary > h2 > svg:first-child, + .tsd-accordion:not([open]) > .tsd-accordion-summary > h3 > svg:first-child, + .tsd-accordion:not([open]) > .tsd-accordion-summary > h4 > svg:first-child { + transform: rotate(-90deg); + } + .tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; + } + .tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; + } + + .tsd-no-select { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + .tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; + } + .tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; + } + + .tsd-panel { + margin-bottom: 2.5rem; + } + .tsd-panel.tsd-member { + margin-bottom: 4rem; + } + .tsd-panel:empty { + display: none; + } + .tsd-panel > h1, + .tsd-panel > h2, + .tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; + } + .tsd-panel > h1.tsd-before-signature, + .tsd-panel > h2.tsd-before-signature, + .tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; + } + + .tsd-panel-group { + margin: 2rem 0; + } + .tsd-panel-group.tsd-index-group { + margin: 2rem 0; + } + .tsd-panel-group.tsd-index-group details { + margin: 2rem 0; + } + .tsd-panel-group > .tsd-accordion-summary { + margin-bottom: 1rem; + } + + #tsd-search { + transition: background-color 0.2s; + } + #tsd-search .title { + position: relative; + z-index: 2; + } + #tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; + } + #tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); + } + #tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; + } + #tsd-search .field input, + #tsd-search .title, + #tsd-toolbar-links a { + transition: opacity 0.2s; + } + #tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + } + #tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; + } + #tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); + } + #tsd-search .results li.state { + display: none; + } + #tsd-search .results li.current:not(.no-results), + #tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); + } + #tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; + } + #tsd-search .results a:before { + top: 10px; + } + #tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; + } + #tsd-search.has-focus { + background-color: var(--color-accent); + } + #tsd-search.has-focus .field input { + top: 0; + opacity: 1; + } + #tsd-search.has-focus .title, + #tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; + } + #tsd-search.has-focus .results { + visibility: visible; + } + #tsd-search.loading .results li.state.loading { + display: block; + } + #tsd-search.failure .results li.state.failure { + display: block; + } + + #tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; + } + #tsd-toolbar-links a { + margin-left: 1.5rem; + } + #tsd-toolbar-links a:hover { + text-decoration: underline; + } + + .tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; + } + + .tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; + } + + .tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; + } + + .tsd-signature-type { + font-style: italic; + font-weight: normal; + } + + .tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; + } + .tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; + } + .tsd-signatures .tsd-index-signature:not(:last-child) { + margin-bottom: 1em; + } + .tsd-signatures .tsd-index-signature .tsd-signature { + border-width: 1px; + } + .tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; + } + + ul.tsd-parameter-list, + ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; + } + ul.tsd-parameter-list > li.tsd-parameter-signature, + ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; + } + ul.tsd-parameter-list h5, + ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; + } + .tsd-sources { + margin-top: 1rem; + font-size: 0.875em; + } + .tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; + } + .tsd-sources ul { + list-style: none; + padding: 0; + } + + .tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; + } + .tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; + } + .tsd-page-toolbar a.title { + font-weight: bold; + } + .tsd-page-toolbar a.title:hover { + text-decoration: underline; + } + .tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; + } + .tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; + } + .tsd-page-toolbar .table-cell:first-child { + width: 100%; + } + .tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; + } + + .tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; + } + .tsd-widget:hover { + opacity: 0.9; + } + .tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); + } + .tsd-widget.no-caption { + width: 40px; + } + .tsd-widget.no-caption:before { + margin: 0; + } + + .tsd-widget.options, + .tsd-widget.menu { + display: none; + } + input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; + } + input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; + } + + img { + max-width: 100%; + } + + .tsd-member-summary-name { + display: inline-flex; + align-items: center; + padding: 0.25rem; + text-decoration: none; + } + + .tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + color: var(--color-text); + } + + .tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; + } + + .tsd-member-summary-name:hover > .tsd-anchor-icon svg, + .tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; + } + + .deprecated { + text-decoration: line-through !important; + } + + .warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); + } + + .tsd-kind-project { + color: var(--color-ts-project); + } + .tsd-kind-module { + color: var(--color-ts-module); + } + .tsd-kind-namespace { + color: var(--color-ts-namespace); + } + .tsd-kind-enum { + color: var(--color-ts-enum); + } + .tsd-kind-enum-member { + color: var(--color-ts-enum-member); + } + .tsd-kind-variable { + color: var(--color-ts-variable); + } + .tsd-kind-function { + color: var(--color-ts-function); + } + .tsd-kind-class { + color: var(--color-ts-class); + } + .tsd-kind-interface { + color: var(--color-ts-interface); + } + .tsd-kind-constructor { + color: var(--color-ts-constructor); + } + .tsd-kind-property { + color: var(--color-ts-property); + } + .tsd-kind-method { + color: var(--color-ts-method); + } + .tsd-kind-reference { + color: var(--color-ts-reference); + } + .tsd-kind-call-signature { + color: var(--color-ts-call-signature); + } + .tsd-kind-index-signature { + color: var(--color-ts-index-signature); + } + .tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); + } + .tsd-kind-parameter { + color: var(--color-ts-parameter); + } + .tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); + } + .tsd-kind-accessor { + color: var(--color-ts-accessor); + } + .tsd-kind-get-signature { + color: var(--color-ts-get-signature); + } + .tsd-kind-set-signature { + color: var(--color-ts-set-signature); + } + .tsd-kind-type-alias { + color: var(--color-ts-type-alias); + } + + /* if we have a kind icon, don't color the text by kind */ + .tsd-kind-icon ~ span { + color: var(--color-text); + } + + * { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); + } + + *::-webkit-scrollbar { + width: 0.75rem; + } + + *::-webkit-scrollbar-track { + background: var(--color-icon-background); + } + + *::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); + } + + /* mobile */ + @media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } + #tsd-toolbar-links { + display: none; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } + } + + /* one sidebar */ + @media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } + } + @media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } + } + + /* two sidebars */ + @media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax( + 0, + 20rem + ); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } + } +} diff --git a/typedoc/classes/packets.ByePacket.html b/typedoc/classes/packets.ByePacket.html new file mode 100644 index 00000000..7ea7f4e6 --- /dev/null +++ b/typedoc/classes/packets.ByePacket.html @@ -0,0 +1,124 @@ +ByePacket | rtp.js - v0.12.0

Class ByePacket

RTCP BYE packet.

+
        0                   1                   2                   3
+        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+header |V=2|P|    SC   |   PT=BYE=203  |             length            |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                           SSRC/CSRC                           |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       :                              ...                              :
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+(opt)  |     length    |               reason for leaving            ...
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP BYE +packet will be created.

      +

    Returns ByePacket

      +
    • If given view does not contain a valid RTCP BYE packet.
    • +
    +

Methods

  • Add SSRC value.

    +

    Parameters

    • ssrc: number

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns ByePacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
  • Set SSRC values.

    +

    Parameters

    • ssrcs: number[]

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
diff --git a/typedoc/classes/packets.CompoundPacket.html b/typedoc/classes/packets.CompoundPacket.html new file mode 100644 index 00000000..73e3fbae --- /dev/null +++ b/typedoc/classes/packets.CompoundPacket.html @@ -0,0 +1,100 @@ +CompoundPacket | rtp.js - v0.12.0

Class CompoundPacket

RTCP Compound packet.

+
+

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP Compound +packet will be created.

      +

    Returns CompoundPacket

      +
    • If given view does not contain a valid RTCP Compound packet.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns CompoundPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Return the RtcpPacket entries in this RTCP Compound packet.

    +

    Returns RtcpPacket[]

    +
    import { packets } from 'rtp.js';
    const { CompoundPacket, RtcpPacketType, SdesPacket } = packets;

    const compoundPacket = new CompoundPacket(view);

    for (const packet of compoundPacket.getPackets())
    {
    switch (packet.getPacketType())
    {
    case RtcpPacketType.SDES:
    {
    const sdesPacket = packet as SdesPacket;

    console.log(sdesPacket.getChunks());

    break;
    }

    // etc.
    }
    } +
    + +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.DlrrExtendedReport.html b/typedoc/classes/packets.DlrrExtendedReport.html new file mode 100644 index 00000000..b4e7376e --- /dev/null +++ b/typedoc/classes/packets.DlrrExtendedReport.html @@ -0,0 +1,101 @@ +DlrrExtendedReport | rtp.js - v0.12.0

Class DlrrExtendedReport

DLRR Extended Report.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     BT=5      |   reserved    |         block length          |
++=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+|                 SSRC_1 (SSRC of first receiver)               | sub-
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block
+|                         last RR (LRR)                         |   1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                   delay since last RR (DLRR)                  |
++=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+|                 SSRC_2 (SSRC of second receiver)              | sub-
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block
+:                               ...                             :   2
++=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns DlrrExtendedReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.DrleExtendedReport.html b/typedoc/classes/packets.DrleExtendedReport.html new file mode 100644 index 00000000..54fcedbc --- /dev/null +++ b/typedoc/classes/packets.DrleExtendedReport.html @@ -0,0 +1,132 @@ +DrleExtendedReport | rtp.js - v0.12.0

Class DrleExtendedReport

Duplicate RLE Extended Report.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     BT=2      | rsvd. |   T   |         block length          |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                        SSRC of source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|          begin_seq            |             end_seq           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|          chunk 1              |             chunk 2           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+:                              ...                              :
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|          chunk n-1            |             chunk n           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns DrleExtendedReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.EcnExtendedReport.html b/typedoc/classes/packets.EcnExtendedReport.html new file mode 100644 index 00000000..5f0b8030 --- /dev/null +++ b/typedoc/classes/packets.EcnExtendedReport.html @@ -0,0 +1,123 @@ +EcnExtendedReport | rtp.js - v0.12.0

Class EcnExtendedReport

ECN Summary Extended Report.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     BT=13     |   reserved    |       block length = 5        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| SSRC of Media Sender                                          |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| ECT (0) Counter                                               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| ECT (1) Counter                                               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| ECN-CE Counter                | not-ECT Counter               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| Lost Packets Counter          | Duplication Counter           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns EcnExtendedReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.EcnPacket.html b/typedoc/classes/packets.EcnPacket.html new file mode 100644 index 00000000..1f621dff --- /dev/null +++ b/typedoc/classes/packets.EcnPacket.html @@ -0,0 +1,154 @@ +EcnPacket | rtp.js - v0.12.0

Class EcnPacket

RTCP ECN packet (RTCP Transport Layer Feedback).

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|V=2|P|  FMT=8  |  PT=RTPFB=205 |          length=7             |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of packet sender                        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of media source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| Extended Highest Sequence Number                              |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| ECT (0) Counter                                               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| ECT (1) Counter                                               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| ECN-CE Counter                | not-ECT Counter               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| Lost Packets Counter          | Duplication Counter           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP ECN +packet will be created.

      +

    Returns EcnPacket

      +
    • If given view does not contain a valid RTCP ECN packet.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns EcnPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
  • Set Duplication Counter.

    +

    Parameters

    • counter: number

    Returns void

  • Set Extended Highest Sequence Number.

    +

    Parameters

    • sequenceNumber: number

    Returns void

  • Set Lost Packets Counter.

    +

    Parameters

    • counter: number

    Returns void

diff --git a/typedoc/classes/packets.ExtendedJitterReportsPacket.html b/typedoc/classes/packets.ExtendedJitterReportsPacket.html new file mode 100644 index 00000000..fbcd53f2 --- /dev/null +++ b/typedoc/classes/packets.ExtendedJitterReportsPacket.html @@ -0,0 +1,119 @@ +ExtendedJitterReportsPacket | rtp.js - v0.12.0

Class ExtendedJitterReportsPacket

RTCP Extended Jitter Reports packet.

+
        0                   1                   2                   3
+        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+header |V=2|P|    RC   |     PT=195    |             length            |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                     inter-arrival jitter                      |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       :                              ...                              :
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns ExtendedJitterReportsPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.ExtendedReport.html b/typedoc/classes/packets.ExtendedReport.html new file mode 100644 index 00000000..acefb100 --- /dev/null +++ b/typedoc/classes/packets.ExtendedReport.html @@ -0,0 +1,87 @@ +ExtendedReport | rtp.js - v0.12.0

Class ExtendedReportAbstract

Parent class of all XrPacket Extended Reports.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|      BT       | type-specific |         block length          |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+:             type-specific block contents                      :
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns Serializable

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.FeedbackPacket.html b/typedoc/classes/packets.FeedbackPacket.html new file mode 100644 index 00000000..76f6fe05 --- /dev/null +++ b/typedoc/classes/packets.FeedbackPacket.html @@ -0,0 +1,115 @@ +FeedbackPacket | rtp.js - v0.12.0

Class FeedbackPacketAbstract

RTCP Feedback packet.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|V=2|P|   FMT   |       PT      |          length               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of packet sender                        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of media source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+:            Feedback Control Information (FCI)                 :
+:                                                               :
+
+ +

Hierarchy (View Summary)

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns Serializable

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.GenericExtendedReport.html b/typedoc/classes/packets.GenericExtendedReport.html new file mode 100644 index 00000000..a2d99173 --- /dev/null +++ b/typedoc/classes/packets.GenericExtendedReport.html @@ -0,0 +1,106 @@ +GenericExtendedReport | rtp.js - v0.12.0

Class GenericExtendedReport

Generic Extended Report.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     BT=???    | type-specific |         block length          |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                             body                              |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+:                              ...                              :
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty generic +Extended Report will be created.

      +
    • OptionalreportType: number

      If view is not given, this parameter must be given.

      +

    Returns GenericExtendedReport

      +
    • If given view does not contain a valid generic Extended Report.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns GenericExtendedReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.GenericFeedbackPacket.html b/typedoc/classes/packets.GenericFeedbackPacket.html new file mode 100644 index 00000000..6123135a --- /dev/null +++ b/typedoc/classes/packets.GenericFeedbackPacket.html @@ -0,0 +1,127 @@ +GenericFeedbackPacket | rtp.js - v0.12.0

Class GenericFeedbackPacket

RTCP generic Feedback packet.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|V=2|P| FMT=??? |  PT=205|206   |          length               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of packet sender                        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of media source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+:            Feedback Control Information (FCI)                 :
+:                                                               :
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns GenericFeedbackPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.GenericPacket.html b/typedoc/classes/packets.GenericPacket.html new file mode 100644 index 00000000..e7df1e0f --- /dev/null +++ b/typedoc/classes/packets.GenericPacket.html @@ -0,0 +1,121 @@ +GenericPacket | rtp.js - v0.12.0

Class GenericPacket

RTCP generic packet.

+
        0                   1                   2                   3
+        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+header |V=2|P|    SC   |   PT=???      |             length            |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+body   |                              ...                              |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       :                              ...                              :
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +
+

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP generic +packet will be created.

      +
    • OptionalpacketType: number

      If view is not given, this parameter must be given.

      +

    Returns GenericPacket

      +
    • If given view does not contain a valid RTCP generic packet.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns GenericPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
  • Set the packet body.

    +

    Parameters

    • view: DataView

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
  • Set the RTCP header count value.

    +

    Parameters

    • count: number

    Returns void

      +
    • This field (the 5 less significant bits in the first byte of the common +RTCP header) can be used for other custom purpose in case the packet +needs it for something else.
    • +
    +
diff --git a/typedoc/classes/packets.LrleExtendedReport.html b/typedoc/classes/packets.LrleExtendedReport.html new file mode 100644 index 00000000..11d66b2e --- /dev/null +++ b/typedoc/classes/packets.LrleExtendedReport.html @@ -0,0 +1,132 @@ +LrleExtendedReport | rtp.js - v0.12.0

Class LrleExtendedReport

Loss RLE Extended Report.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     BT=1      | rsvd. |   T   |         block length          |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                        SSRC of source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|          begin_seq            |             end_seq           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|          chunk 1              |             chunk 2           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+:                              ...                              :
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|          chunk n-1            |             chunk n           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns LrleExtendedReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.NackPacket.html b/typedoc/classes/packets.NackPacket.html new file mode 100644 index 00000000..502f4b25 --- /dev/null +++ b/typedoc/classes/packets.NackPacket.html @@ -0,0 +1,137 @@ +NackPacket | rtp.js - v0.12.0

Class NackPacket

RTCP NACK packet (RTCP Transport Layer Feedback).

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|V=2|P|  FMT=1  |  PT=RTPFB=205 |          length               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of packet sender                        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of media source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|            PID                |             BLP               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+:                              ...                              :
++=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP NACK +packet will be created.

      +

    Returns NackPacket

      +
    • If given view does not contain a valid RTCP NACK packet.
    • +
    +

Methods

  • Add NACK item value.

    +

    Parameters

    • pid: number
    • bitmask: number

    Returns void

      +
    • Use createNackItem to create the NACK item.
    • +
    • Serialization is needed after calling this method.
    • +
    +
  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns NackPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
  • Set NACK items.

    +

    Parameters

    • items: { bitmask: number; pid: number }[]

    Returns void

      +
    • Use createNackItem to create NACK items.
    • +
    • Serialization is needed after calling this method.
    • +
    +
diff --git a/typedoc/classes/packets.Packet.html b/typedoc/classes/packets.Packet.html new file mode 100644 index 00000000..bea822a6 --- /dev/null +++ b/typedoc/classes/packets.Packet.html @@ -0,0 +1,81 @@ +Packet | rtp.js - v0.12.0

Class PacketAbstract

Parent class of all RTP and RTCP packets.

+

Hierarchy (View Summary)

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns Serializable

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the padding (in bytes) at the end of the packet.

    +

    Returns number

  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.PliPacket.html b/typedoc/classes/packets.PliPacket.html new file mode 100644 index 00000000..40466473 --- /dev/null +++ b/typedoc/classes/packets.PliPacket.html @@ -0,0 +1,116 @@ +PliPacket | rtp.js - v0.12.0

Class PliPacket

RTCP PLI packet (RTCP Payload Specific Feedback).

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|V=2|P|  FMT=1  |  PT=PSFB=206  |          length=2             |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of packet sender                        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of media source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP PLI +packet will be created.

      +

    Returns PliPacket

      +
    • If given view does not contain a valid RTCP PLI packet.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns PliPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.PrtExtendedReport.html b/typedoc/classes/packets.PrtExtendedReport.html new file mode 100644 index 00000000..b3f0b6fb --- /dev/null +++ b/typedoc/classes/packets.PrtExtendedReport.html @@ -0,0 +1,128 @@ +PrtExtendedReport | rtp.js - v0.12.0

Class PrtExtendedReport

Packet Receipt Times Extended Report.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     BT=3      | rsvd. |   T   |         block length          |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                        SSRC of source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|          begin_seq            |             end_seq           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|       Receipt time of packet begin_seq                        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|       Receipt time of packet (begin_seq + 1) mod 65536        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+:                              ...                              :
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|       Receipt time of packet (end_seq - 1) mod 65536          |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns PrtExtendedReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.ReceiverReportPacket.html b/typedoc/classes/packets.ReceiverReportPacket.html new file mode 100644 index 00000000..16d79762 --- /dev/null +++ b/typedoc/classes/packets.ReceiverReportPacket.html @@ -0,0 +1,138 @@ +ReceiverReportPacket | rtp.js - v0.12.0

Class ReceiverReportPacket

RTCP Receiver Report packet.

+
        0                   1                   2                   3
+        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+header |V=2|P|    RC   |   PT=RR=201   |             length            |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                     SSRC of packet sender                     |
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+report |                 SSRC_1 (SSRC of first source)                 |
+block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  1    | fraction lost |       cumulative number of packets lost       |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |           extended highest sequence number received           |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                      interarrival jitter                      |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                         last SR (LSR)                         |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                   delay since last SR (DLSR)                  |
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+report |                 SSRC_2 (SSRC of second source)                |
+block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  2    :                               ...                             :
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+       |                  profile-specific extensions                  |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns ReceiverReportPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.ReceptionReport.html b/typedoc/classes/packets.ReceptionReport.html new file mode 100644 index 00000000..7564ef46 --- /dev/null +++ b/typedoc/classes/packets.ReceptionReport.html @@ -0,0 +1,101 @@ +ReceptionReport | rtp.js - v0.12.0

Class ReceptionReport

RTCP Reception Report.

+

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns ReceptionReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.RpsiPacket.html b/typedoc/classes/packets.RpsiPacket.html new file mode 100644 index 00000000..f1d097aa --- /dev/null +++ b/typedoc/classes/packets.RpsiPacket.html @@ -0,0 +1,131 @@ +RpsiPacket | rtp.js - v0.12.0

Class RpsiPacket

RTCP RPSI packet (RTCP Payload Specific Feedback).

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|V=2|P|  FMT=3  |  PT=PSFB=206  |          length               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of packet sender                        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of media source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|      PB       |0| Payload Type|    Native RPSI bit string     |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|   defined per codec          ...                | Padding (0) |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP RPSI +packet will be created.

      +

    Returns RpsiPacket

      +
    • If given view does not contain a valid RTCP RPSI packet.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns RpsiPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
  • Set the bit string.

    +

    Parameters

    • view: DataView

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
diff --git a/typedoc/classes/packets.RrtExtendedReport.html b/typedoc/classes/packets.RrtExtendedReport.html new file mode 100644 index 00000000..316983f6 --- /dev/null +++ b/typedoc/classes/packets.RrtExtendedReport.html @@ -0,0 +1,97 @@ +RrtExtendedReport | rtp.js - v0.12.0

Class RrtExtendedReport

Receiver Reference Time Extended Report.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     BT=4      |   reserved    |       block length = 2        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|              NTP timestamp, most significant word             |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|             NTP timestamp, least significant word             |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns RrtExtendedReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.RtcpPacket.html b/typedoc/classes/packets.RtcpPacket.html new file mode 100644 index 00000000..b758087c --- /dev/null +++ b/typedoc/classes/packets.RtcpPacket.html @@ -0,0 +1,99 @@ +RtcpPacket | rtp.js - v0.12.0

Class RtcpPacketAbstract

RTCP packet. Parent class of all RTCP packets.

+
        0                   1                   2                   3
+        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+header |V=2|P|    SC   |      PT       |             length            |
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+
+ +

Hierarchy (View Summary)

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns Serializable

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.RtpPacket.html b/typedoc/classes/packets.RtpPacket.html new file mode 100644 index 00000000..f705cec7 --- /dev/null +++ b/typedoc/classes/packets.RtpPacket.html @@ -0,0 +1,255 @@ +RtpPacket | rtp.js - v0.12.0

Class RtpPacket

RTP packet.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|V=2|P|X|  CC   |M|     PT      |       sequence number         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                           timestamp                           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|           synchronization source (SSRC) identifier            |
++=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+|            contributing source (CSRC) identifiers             |
+|                             ....                              |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|      defined by profile       |           length              |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                        header extension                       |
+|                             ....                              |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTP packet +(with just the minimal fixed header) will be created.

      +

    Returns RtpPacket

      +
    • If view is given and it does not contain a valid RTP packet.
    • +
    +

Methods

  • Clear all extensions (RFC 5285).

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns RtpPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Delete the extension with given id (RFC 5285).

    +

    Parameters

    • id: number

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Enable One-Byte extensions (RFC 5285).

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Enable Two-Bytes extensions (RFC 5285).

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the value of the extension with given id (RFC 5285).

    +

    Parameters

    • id: number

    Returns undefined | DataView

  • Get a map with all the extensions indexed by their extension id (RFC 5285).

    +

    Returns Map<number, DataView>

  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether One-Byte extensions (as per RFC 5285) are enabled.

    +

    Returns boolean

  • Whether Two-Bytes extensions (as per RFC 5285) are enabled.

    +

    Returns boolean

  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Decode the packet using RTX procedures (as per RFC 4588).

    +

    Parameters

    • payloadType: number

      The original payload type.

      +
    • ssrc: number

      The original SSRC.

      +

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
      +
    • If payload length is less than 2 bytes, so RTX decode is not possible.
    • +
    +
  • Encode the packet using RTX procedures (as per RFC 4588).

    +

    Parameters

    • payloadType: number

      The RTX payload type.

      +
    • ssrc: number

      The RTX SSRC.

      +
    • sequenceNumber: number

      The RTX sequence number.

      +

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
  • Set the RTP CSRC values. If csrcs is not given (or if it's an empty +array) CSRC field will be removed from the RTP packet.

    +

    Parameters

    • csrcs: number[] = []

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
  • Set the value of the extension with given id (RFC 5285).

    +

    Parameters

    • id: number
    • value: DataView

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
  • Set RTP extension mapping (association of RTP extension types and their +numeric ids in this RTP packet).

    +

    Parameters

    Returns void

      +
    • Calling this method is needed before using other methods that read or +write specific RTP extensions.
    • +
    +
  • Set the packet payload.

    +

    Parameters

    • view: DataView

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
  • Set the RTP payload type.

    +

    Parameters

    • payloadType: number

    Returns void

  • Set the RTP sequence number.

    +

    Parameters

    • sequenceNumber: number

    Returns void

diff --git a/typedoc/classes/packets.SdesChunk.html b/typedoc/classes/packets.SdesChunk.html new file mode 100644 index 00000000..efd98cc9 --- /dev/null +++ b/typedoc/classes/packets.SdesChunk.html @@ -0,0 +1,83 @@ +SdesChunk | rtp.js - v0.12.0

Class SdesChunk

SDES Chunk.

+

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP SDES +Chunk will be created.

      +

    Returns SdesChunk

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns SdesChunk

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.SdesPacket.html b/typedoc/classes/packets.SdesPacket.html new file mode 100644 index 00000000..6d0e8654 --- /dev/null +++ b/typedoc/classes/packets.SdesPacket.html @@ -0,0 +1,124 @@ +SdesPacket | rtp.js - v0.12.0

Class SdesPacket

RTCP SDES packet.

+
        0                   1                   2                   3
+        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+header |V=2|P|    SC   |  PT=SDES=202  |             length            |
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+chunk  |                          SSRC/CSRC_1                          |
+  1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                           SDES items                          |
+       |                              ...                              |
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+chunk  |                          SSRC/CSRC_2                          |
+  2    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                           SDES items                          |
+       |                              ...                              |
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP SDES +packet will be created.

      +

    Returns SdesPacket

      +
    • If given view does not contain a valid RTCP SDES packet.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns SdesPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.SenderReportPacket.html b/typedoc/classes/packets.SenderReportPacket.html new file mode 100644 index 00000000..cc32f44e --- /dev/null +++ b/typedoc/classes/packets.SenderReportPacket.html @@ -0,0 +1,168 @@ +SenderReportPacket | rtp.js - v0.12.0

Class SenderReportPacket

RTCP Sender Report packet.

+
        0                   1                   2                   3
+        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+header |V=2|P|    RC   |   PT=SR=200   |             length            |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                         SSRC of sender                        |
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+sender |              NTP timestamp, most significant word             |
+info   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |             NTP timestamp, least significant word             |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                         RTP timestamp                         |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                     sender's packet count                     |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                      sender's octet count                     |
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+report |                 SSRC_1 (SSRC of first source)                 |
+block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  1    | fraction lost |       cumulative number of packets lost       |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |           extended highest sequence number received           |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                      interarrival jitter                      |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                         last SR (LSR)                         |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                   delay since last SR (DLSR)                  |
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+report |                 SSRC_2 (SSRC of second source)                |
+block  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+  2    :                               ...                             :
+       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+       |                  profile-specific extensions                  |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP Sender +Report packet will be created.

      +

    Returns SenderReportPacket

      +
    • If given view does not contain a valid RTCP Sender Report packet.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns SenderReportPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.Serializable.html b/typedoc/classes/packets.Serializable.html new file mode 100644 index 00000000..5caa8506 --- /dev/null +++ b/typedoc/classes/packets.Serializable.html @@ -0,0 +1,71 @@ +Serializable | rtp.js - v0.12.0

Class SerializableAbstract

Class holding a serializable buffer view. All RTP and RTCP packets inherit +from this class, and also items in some RTCP packets.

+

Hierarchy (View Summary)

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns Serializable

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.SliPacket.html b/typedoc/classes/packets.SliPacket.html new file mode 100644 index 00000000..8c678d25 --- /dev/null +++ b/typedoc/classes/packets.SliPacket.html @@ -0,0 +1,132 @@ +SliPacket | rtp.js - v0.12.0

Class SliPacket

RTCP SLI packet (RTCP Payload Specific Feedback).

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|V=2|P|  FMT=2  |  PT=PSFB=206  |          length               |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of packet sender                        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of media source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|            First        |        Number           | PictureID |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+:                              ...                              :
++=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP SLI +packet will be created.

      +

    Returns SliPacket

      +
    • If given view does not contain a valid RTCP SLI packet.
    • +
    +

Methods

  • Add SLI item value.

    +

    Parameters

    • first: number
    • number: number
    • pictureId: number

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns SliPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get SLI items.

    +

    Returns { first: number; number: number; pictureId: number }[]

  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
  • Set SLI items.

    +

    Parameters

    • items: { first: number; number: number; pictureId: number }[]

    Returns void

      +
    • Serialization is needed after calling this method.
    • +
    +
diff --git a/typedoc/classes/packets.SrReqPacket.html b/typedoc/classes/packets.SrReqPacket.html new file mode 100644 index 00000000..c4000420 --- /dev/null +++ b/typedoc/classes/packets.SrReqPacket.html @@ -0,0 +1,116 @@ +SrReqPacket | rtp.js - v0.12.0

Class SrReqPacket

RTCP SR REQ packet (RTCP Transport Layer Feedback).

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|V=2|P|  FMT=5  |  PT=RTPFB=205 |          length=2             |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of packet sender                        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                  SSRC of media source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +
+

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP SR REQ +packet will be created.

      +

    Returns SrReqPacket

      +
    • If given view does not contain a valid RTCP SR REQ packet.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns SrReqPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.SsExtendedReport.html b/typedoc/classes/packets.SsExtendedReport.html new file mode 100644 index 00000000..da5182c8 --- /dev/null +++ b/typedoc/classes/packets.SsExtendedReport.html @@ -0,0 +1,185 @@ +SsExtendedReport | rtp.js - v0.12.0

Class SsExtendedReport

Statistics Summary Extended Report.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     BT=6      |L|D|J|ToH|rsvd.|       block length = 9        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                        SSRC of source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|          begin_seq            |             end_seq           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                        lost_packets                           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                        dup_packets                            |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                         min_jitter                            |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                         max_jitter                            |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                         mean_jitter                           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                         dev_jitter                            |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| min_ttl_or_hl | max_ttl_or_hl |mean_ttl_or_hl | dev_ttl_or_hl |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns SsExtendedReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.VmExtendedReport.html b/typedoc/classes/packets.VmExtendedReport.html new file mode 100644 index 00000000..321268cf --- /dev/null +++ b/typedoc/classes/packets.VmExtendedReport.html @@ -0,0 +1,193 @@ +VmExtendedReport | rtp.js - v0.12.0

Class VmExtendedReport

VoIP Metrics Extended Report.

+
 0                   1                   2                   3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     BT=7      |   reserved    |       block length = 8        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|                        SSRC of source                         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|   loss rate   | discard rate  | burst density |  gap density  |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|       burst duration          |         gap duration          |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|     round trip delay          |       end system delay        |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| signal level  |  noise level  |     RERL      |     Gmin      |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|   R factor    | ext. R factor |    MOS-LQ     |    MOS-CQ     |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|   RX config   |   reserved    |          JB nominal           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|          JB maximum           |          JB abs max           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns VmExtendedReport

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/classes/packets.XrPacket.html b/typedoc/classes/packets.XrPacket.html new file mode 100644 index 00000000..b3dc9142 --- /dev/null +++ b/typedoc/classes/packets.XrPacket.html @@ -0,0 +1,131 @@ +XrPacket | rtp.js - v0.12.0

Class XrPacket

RTCP XR packet.

+
        0                   1                   2                   3
+        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+header |V=2|P|reserved |   PT=XR=207   |             length            |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       |                              SSRC                             |
+       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+report :                         report blocks                         :
+blocks +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Hierarchy (View Summary)

Constructors

  • Parameters

    • Optionalview: DataView

      If given it will be parsed. Otherwise an empty RTCP XR packet +will be created.

      +

    Returns XrPacket

      +
    • If given view does not contain a valid RTCP XR packet.
    • +
    +

Methods

  • Clone the packet or item. The cloned instance does not share any memory +with the original one. The cloned instance is a new class instance +referencing a different buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be cloned. If not given, a +new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where clonation will +start.

      +
    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given +serializationBuffer where serialization (if needed) will start.

      +

    Returns XrPacket

      +
    • The buffer is serialized if needed (to apply pending modifications) by +internally calling serialize.
    • +
    +
      +
    • If serialization is needed and it fails.
    • +
    • If given buffer doesn't have space enough to clone the content.
    • +
    • If given serializationBuffer doesn't have space enough to serialize +the content.
    • +
    +
  • Computes total length of the content (in bytes) including padding if any.

    +

    Returns number

      +
    • This methods computes the effective byte length of the content as if it +was serialized at this moment, no matter modifications have been done +before.
    • +
    +
  • Get the RTCP header count value.

    +

    Returns number

      +
    • Some RTCP packets do not use this byte (the second one in the common +RTCP header) for counting chunks or items.
    • +
    +
  • Get Extended Reports.

    +

    Returns ExtendedReport[]

    +
    import { packets } from 'rtp.js';
    const { XrPacket, ExtendedReportType, LrleExtendedReport } = packets;

    const packet = new XrPacket(view);

    for (const extendedReport of packet.getReports())
    {
    switch (extendedReport.getReportType())
    {
    case ExtendedReportType.LRLE:
    {
    const lrleExtendedReport = extendedReport as LrleExtendedReport;

    console.log(lrleExtendedReport.getThinning());

    break;
    }

    // etc.
    }
    } +
    + +
  • Get a buffer view containing the serialized content of the packet or item.

    +

    Parameters

    • OptionalserializationBuffer: ArrayBuffer

      Buffer in which the content will be serialized +in case serialization is needed. If not given, a new one will internally +allocated.

      +
    • OptionalserializationByteOffset: number

      Byte offset of the given serializationBuffer +where serialization (if needed) will start.

      +

    Returns DataView

      +
    • The internal buffer is serialized if needed (to apply pending +modifications) by internally calling serialize.
    • +
    +
      +
    • If buffer serialization is needed and it fails due to invalid +content.
    • +
    +
  • Whether serialization is needed, meaning that the current buffer view +doesn't represent the current content of the packet or item (due to +modifications not applied yet). Calling serialize or getView +will serialize the packet or the item.

    +

    Returns boolean

  • Pad the packet total length to 4 bytes. To achieve it, this method may add +or remove bytes of padding.

    +

    Returns void

      +
    • Serialization maybe needed after calling this method.
    • +
    +
  • Apply pending changes and serialize the content of the packet or item into +a new buffer.

    +

    Parameters

    • Optionalbuffer: ArrayBuffer

      Buffer in which the content will be serialized. If not +given, a new one will internally allocated.

      +
    • OptionalbyteOffset: number

      Byte offset of the given buffer where serialization +will start.

      +

    Returns void

      +
    • In most cases there is no need to use this method since many setter +methods apply changes within the current buffer. To be sure, check +needsSerialization before.
    • +
    +
      +
    • If serialization fails due to invalid content previously added.
    • +
    • If given buffer doesn't have space enough to serialize the content.
    • +
    +
diff --git a/typedoc/documents/README.html b/typedoc/documents/README.html new file mode 100644 index 00000000..b1ce3e77 --- /dev/null +++ b/typedoc/documents/README.html @@ -0,0 +1,29 @@ +README | rtp.js - v0.12.0

rtp.js

+

+

RTP stack for Node.js and browser written in TypeScript. rtp.js provides with an API to parse, generate and modify RTP and RTCP packets.

+
npm install rtp.js
+
+ +
    +
  • +

    API documentation

    +
  • +
  • +

    All RTP and RTCP classes, types and packet related helpers are exported by the packets module.

    +
    import { packets } from 'rtp.js';

    const {
    isRtp,
    isRtcp,
    RtpPacket,
    CompoundPacket,
    ReceiverReportPacket,
    SenderReportPacket,
    ReceptionReport,
    ByePacket,
    SdesPacket,
    NackPacket,
    SrReqPacket,
    EcnPacket,
    PliPacket,
    SliPacket,
    RpsiPacket,
    XrPacket,
    ExtendedJitterReportsPacket,
    GenericPacket,
    // etc.
    } = packets; +
    + +
  • +
  • +

    The utils module exports some generic helpers and utilities.

    +
    import { utils } from 'rtp.js';

    const view = utils.stringToDataView('foo'); +
    + +
  • +
+ +

ISC

+
diff --git a/typedoc/enums/packets.ExtendedReportType.html b/typedoc/enums/packets.ExtendedReportType.html new file mode 100644 index 00000000..3af27af2 --- /dev/null +++ b/typedoc/enums/packets.ExtendedReportType.html @@ -0,0 +1,18 @@ +ExtendedReportType | rtp.js - v0.12.0

Enumeration ExtendedReportType

Extended Report types.

+

Enumeration Members

Enumeration Members

DLRR: 5

DLRR Report.

+
DRLE: 2

Duplicate RLE Report.

+
ECN: 13

ECN Summary Report.

+
LRLE: 1

Loss RLE Report.

+
PRT: 3

Packet Receipt Times Report.

+
RRT: 4

Receiver Reference Time Report.

+
SS: 6

Statistics Summary Report.

+
VM: 7

VoIP Metrics Report.

+
diff --git a/typedoc/enums/packets.PsFeedbackMessageType.html b/typedoc/enums/packets.PsFeedbackMessageType.html new file mode 100644 index 00000000..80ba35cf --- /dev/null +++ b/typedoc/enums/packets.PsFeedbackMessageType.html @@ -0,0 +1,10 @@ +PsFeedbackMessageType | rtp.js - v0.12.0

Enumeration PsFeedbackMessageType

RTCP Feedback payload specific message types.

+

Enumeration Members

Enumeration Members

AFB: 15

Application layer FB message.

+
PLI: 1

Picture Loss Indication.

+
RPSI: 3

Reference Picture Selection Indication.

+
SLI: 2

Slice Loss Indication.

+
diff --git a/typedoc/enums/packets.RtcpPacketType.html b/typedoc/enums/packets.RtcpPacketType.html new file mode 100644 index 00000000..116a7906 --- /dev/null +++ b/typedoc/enums/packets.RtcpPacketType.html @@ -0,0 +1,20 @@ +RtcpPacketType | rtp.js - v0.12.0

Enumeration RtcpPacketType

RTCP packet types.

+

Enumeration Members

APP +BYE +IJ +PSFB +RR +RTPFB +SDES +SR +XR +

Enumeration Members

APP: 204

RTCP APP packet.

+
BYE: 203

RTCP BYE packet.

+
IJ: 195

Extended Jitter Reports packet.

+
PSFB: 206

RTCP Payload Specific Feedback packet.

+
RR: 201

RTCP Receiver Report packet.

+
RTPFB: 205

RTCP Transport Layer Feedback packet.

+
SDES: 202

RTCP Sender Report packet.

+
SR: 200

RTCP Sender Report packet.

+
XR: 207

RTCP Extended Report packet.

+
diff --git a/typedoc/enums/packets.RtpExtensionType.html b/typedoc/enums/packets.RtpExtensionType.html new file mode 100644 index 00000000..a4c81f70 --- /dev/null +++ b/typedoc/enums/packets.RtpExtensionType.html @@ -0,0 +1,50 @@ +RtpExtensionType | rtp.js - v0.12.0

Enumeration RtpExtensionType

RTP extensions.

+

Enumeration Members

ABS_SEND_TIME: 3

Absolute Send Time.

+

URI: http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time

+
+
MID: 0

Media identification.

+

URI: urn:ietf:params:rtp-hdrext:sdes:mid

+
+
RTP_REPAIRED_STREAM_ID: 2

RTP Repaired Stream Identifier.

+

URI: urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id

+
+
RTP_STREAM_ID: 1

RTP Stream Identifier.

+

URI: urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id

+
+
SSRC_AUDIO_LEVEL: 5

Audio Level

+

URI: urn:ietf:params:rtp-hdrext:ssrc-audio-level

+
+
TOFFSET: 7

Transmission Time Offsets.

+

URI: urn:ietf:params:rtp-hdrext:toffset

+
+
TRANSPORT_WIDE_SEQ_NUMBER: 4

Transport-wide Sequence Number.

+

URI: http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01

+
VIDEO_ORIENTATION: 6

Video Orientation.

+

URI: urn:3gpp:video-orientation

+
diff --git a/typedoc/enums/packets.RtpFeedbackMessageType.html b/typedoc/enums/packets.RtpFeedbackMessageType.html new file mode 100644 index 00000000..93738b5f --- /dev/null +++ b/typedoc/enums/packets.RtpFeedbackMessageType.html @@ -0,0 +1,8 @@ +RtpFeedbackMessageType | rtp.js - v0.12.0

Enumeration RtpFeedbackMessageType

RTCP Feedback transport layer message types.

+

Enumeration Members

Enumeration Members

ECN: 8

Explicit Congestion Notification (ECN).

+
NACK: 1

Generic NACK.

+
SR_REQ: 5

Rapid Resynchronisation Request.

+
diff --git a/typedoc/enums/packets.SdesItemType.html b/typedoc/enums/packets.SdesItemType.html new file mode 100644 index 00000000..c5febbaf --- /dev/null +++ b/typedoc/enums/packets.SdesItemType.html @@ -0,0 +1,18 @@ +SdesItemType | rtp.js - v0.12.0

Enumeration SdesItemType

SDES Chunk Item types.

+

Enumeration Members

Enumeration Members

CNAME: 1

Canonical End-Point Identifier SDES Item.

+
EMAIL: 3

Electronic Mail Address SDES Item.

+
LOC: 5

Geographic User Location SDES Item.

+
NAME: 2

User Name SDES Item.

+
NOTE: 7

Notice/Status SDES Item.

+
PHONE: 4

Phone Number SDES Item.

+
PRIV: 8

Private Extensions SDES Item.

+
TOOL: 6

Application or Tool Name SDES Item.

+
diff --git a/typedoc/functions/packets.createExtendedReportBitVectorChunk.html b/typedoc/functions/packets.createExtendedReportBitVectorChunk.html new file mode 100644 index 00000000..6366c524 --- /dev/null +++ b/typedoc/functions/packets.createExtendedReportBitVectorChunk.html @@ -0,0 +1,12 @@ +createExtendedReportBitVectorChunk | rtp.js - v0.12.0

Function createExtendedReportBitVectorChunk

  • Create a Bit Vector Chunk and return a 2 bytes number representing it.

    +
     0                   1
    + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +|C|        bit vector           |
    ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +
    + +

    Parameters

    • bitVector: number

    Returns number

diff --git a/typedoc/functions/packets.createExtendedReportRunLengthChunk.html b/typedoc/functions/packets.createExtendedReportRunLengthChunk.html new file mode 100644 index 00000000..ffc0c836 --- /dev/null +++ b/typedoc/functions/packets.createExtendedReportRunLengthChunk.html @@ -0,0 +1,12 @@ +createExtendedReportRunLengthChunk | rtp.js - v0.12.0

Function createExtendedReportRunLengthChunk

  • Create a Run Length Chunk and return a 2 bytes number representing it.

    +
     0                   1
    + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
    ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +|C|R|        run length         |
    ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    +
    + +

    Parameters

    • runType: "zeros" | "ones"
    • runLength: number

    Returns number

diff --git a/typedoc/functions/packets.createNackItem.html b/typedoc/functions/packets.createNackItem.html new file mode 100644 index 00000000..8bbaff27 --- /dev/null +++ b/typedoc/functions/packets.createNackItem.html @@ -0,0 +1,5 @@ +createNackItem | rtp.js - v0.12.0

Function createNackItem

  • Create a NACK item.

    +

    Parameters

    • seqs: number[]

      RTP sequence number of lost packets. As per NACK rules, there +can be up to 17 seq numbers and max diff between lowest and highest must +be 17.

      +

    Returns { bitmask: number; pid: number }

diff --git a/typedoc/functions/packets.isRtcp.html b/typedoc/functions/packets.isRtcp.html new file mode 100644 index 00000000..592e7577 --- /dev/null +++ b/typedoc/functions/packets.isRtcp.html @@ -0,0 +1,2 @@ +isRtcp | rtp.js - v0.12.0

Function isRtcp

  • Whether the given buffer view could be a valid RTCP packet or not.

    +

    Parameters

    • view: DataView

    Returns boolean

diff --git a/typedoc/functions/packets.isRtp.html b/typedoc/functions/packets.isRtp.html new file mode 100644 index 00000000..edabb6fe --- /dev/null +++ b/typedoc/functions/packets.isRtp.html @@ -0,0 +1,2 @@ +isRtp | rtp.js - v0.12.0

Function isRtp

  • Whether the given buffer view could be a valid RTP packet or not.

    +

    Parameters

    • view: DataView

    Returns boolean

diff --git a/typedoc/functions/packets.parseExtendedReportChunk.html b/typedoc/functions/packets.parseExtendedReportChunk.html new file mode 100644 index 00000000..6df70da3 --- /dev/null +++ b/typedoc/functions/packets.parseExtendedReportChunk.html @@ -0,0 +1,5 @@ +parseExtendedReportChunk | rtp.js - v0.12.0

Function parseExtendedReportChunk

diff --git a/typedoc/functions/packets.parseNackItem.html b/typedoc/functions/packets.parseNackItem.html new file mode 100644 index 00000000..fb30edc9 --- /dev/null +++ b/typedoc/functions/packets.parseNackItem.html @@ -0,0 +1,3 @@ +parseNackItem | rtp.js - v0.12.0

Function parseNackItem

  • Parse a NACK item. It returns an array with RTP sequence numbers that are +included in the item (lost packets).

    +

    Parameters

    • pid: number
    • bitmask: number

    Returns number[]

diff --git a/typedoc/functions/packets.rtpExtensionUriToType.html b/typedoc/functions/packets.rtpExtensionUriToType.html new file mode 100644 index 00000000..b953df81 --- /dev/null +++ b/typedoc/functions/packets.rtpExtensionUriToType.html @@ -0,0 +1,2 @@ +rtpExtensionUriToType | rtp.js - v0.12.0

Function rtpExtensionUriToType

diff --git a/typedoc/functions/packets.timeMsToAbsSendTime.html b/typedoc/functions/packets.timeMsToAbsSendTime.html new file mode 100644 index 00000000..3d270f64 --- /dev/null +++ b/typedoc/functions/packets.timeMsToAbsSendTime.html @@ -0,0 +1,5 @@ +timeMsToAbsSendTime | rtp.js - v0.12.0

Function timeMsToAbsSendTime

diff --git a/typedoc/functions/utils.arrayBufferToNodeBuffer.html b/typedoc/functions/utils.arrayBufferToNodeBuffer.html new file mode 100644 index 00000000..7bcf3c4e --- /dev/null +++ b/typedoc/functions/utils.arrayBufferToNodeBuffer.html @@ -0,0 +1,5 @@ +arrayBufferToNodeBuffer | rtp.js - v0.12.0

Function arrayBufferToNodeBuffer

  • Convert ArrayBuffer to Node.js Buffer.

    +

    Parameters

    • arrayBuffer: ArrayBuffer

    Returns Buffer

      +
    • Just for Node.js.
    • +
    +
diff --git a/typedoc/functions/utils.arrayBufferToString.html b/typedoc/functions/utils.arrayBufferToString.html new file mode 100644 index 00000000..00badb8a --- /dev/null +++ b/typedoc/functions/utils.arrayBufferToString.html @@ -0,0 +1,2 @@ +arrayBufferToString | rtp.js - v0.12.0

Function arrayBufferToString

  • Convert ArrayBuffer to string.

    +

    Parameters

    • arrayBuffer: ArrayBuffer

    Returns string

diff --git a/typedoc/functions/utils.dataViewToNodeBuffer.html b/typedoc/functions/utils.dataViewToNodeBuffer.html new file mode 100644 index 00000000..2608e845 --- /dev/null +++ b/typedoc/functions/utils.dataViewToNodeBuffer.html @@ -0,0 +1,5 @@ +dataViewToNodeBuffer | rtp.js - v0.12.0

Function dataViewToNodeBuffer

  • Convert DataView to Node.js Buffer using the same underlying ArrayBuffer.

    +

    Parameters

    • view: DataView

    Returns Buffer

      +
    • Just for Node.js.
    • +
    +
diff --git a/typedoc/functions/utils.dataViewToString.html b/typedoc/functions/utils.dataViewToString.html new file mode 100644 index 00000000..bede1ee6 --- /dev/null +++ b/typedoc/functions/utils.dataViewToString.html @@ -0,0 +1,2 @@ +dataViewToString | rtp.js - v0.12.0

Function dataViewToString

  • Convert DataView to string.

    +

    Parameters

    • view: DataView

    Returns string

diff --git a/typedoc/functions/utils.getStringByteLength.html b/typedoc/functions/utils.getStringByteLength.html new file mode 100644 index 00000000..2a3ec61e --- /dev/null +++ b/typedoc/functions/utils.getStringByteLength.html @@ -0,0 +1,2 @@ +getStringByteLength | rtp.js - v0.12.0

Function getStringByteLength

  • Get the byte length of a string.

    +

    Parameters

    • string: string

    Returns number

diff --git a/typedoc/functions/utils.nodeBufferToArrayBuffer.html b/typedoc/functions/utils.nodeBufferToArrayBuffer.html new file mode 100644 index 00000000..96fd7a09 --- /dev/null +++ b/typedoc/functions/utils.nodeBufferToArrayBuffer.html @@ -0,0 +1,5 @@ +nodeBufferToArrayBuffer | rtp.js - v0.12.0

Function nodeBufferToArrayBuffer

  • Convert Node.js Buffer to a new allocated ArrayBuffer.

    +

    Parameters

    • nodeBuffer: Buffer

    Returns ArrayBuffer

      +
    • Just for Node.js.
    • +
    +
diff --git a/typedoc/functions/utils.nodeBufferToDataView.html b/typedoc/functions/utils.nodeBufferToDataView.html new file mode 100644 index 00000000..22a63664 --- /dev/null +++ b/typedoc/functions/utils.nodeBufferToDataView.html @@ -0,0 +1,5 @@ +nodeBufferToDataView | rtp.js - v0.12.0

Function nodeBufferToDataView

  • Convert Node.js Buffer to DataView using the same underlying ArrayBuffer.

    +

    Parameters

    • nodeBuffer: Buffer

    Returns DataView

      +
    • Just for Node.js.
    • +
    +
diff --git a/typedoc/functions/utils.numberToDataView.html b/typedoc/functions/utils.numberToDataView.html new file mode 100644 index 00000000..859e0927 --- /dev/null +++ b/typedoc/functions/utils.numberToDataView.html @@ -0,0 +1,2 @@ +numberToDataView | rtp.js - v0.12.0

Function numberToDataView

  • Convert number to DataView.

    +

    Parameters

    • number: number

    Returns DataView

diff --git a/typedoc/functions/utils.numericArrayToDataView.html b/typedoc/functions/utils.numericArrayToDataView.html new file mode 100644 index 00000000..1f02a3e8 --- /dev/null +++ b/typedoc/functions/utils.numericArrayToDataView.html @@ -0,0 +1,2 @@ +numericArrayToDataView | rtp.js - v0.12.0

Function numericArrayToDataView

  • Convert array of integers to DataView.

    +

    Parameters

    • array: number[]

    Returns DataView

diff --git a/typedoc/functions/utils.padTo4Bytes.html b/typedoc/functions/utils.padTo4Bytes.html new file mode 100644 index 00000000..7914c2c0 --- /dev/null +++ b/typedoc/functions/utils.padTo4Bytes.html @@ -0,0 +1,2 @@ +padTo4Bytes | rtp.js - v0.12.0

Function padTo4Bytes

  • Returns the given size padded to 4 bytes.

    +

    Parameters

    • size: number

    Returns number

diff --git a/typedoc/functions/utils.stringToDataView.html b/typedoc/functions/utils.stringToDataView.html new file mode 100644 index 00000000..3b69cf93 --- /dev/null +++ b/typedoc/functions/utils.stringToDataView.html @@ -0,0 +1,2 @@ +stringToDataView | rtp.js - v0.12.0

Function stringToDataView

  • Convert string to DataView.

    +

    Parameters

    • string: string

    Returns DataView

diff --git a/typedoc/hierarchy.html b/typedoc/hierarchy.html new file mode 100644 index 00000000..170192eb --- /dev/null +++ b/typedoc/hierarchy.html @@ -0,0 +1 @@ +rtp.js - v0.12.0
diff --git a/typedoc/index.html b/typedoc/index.html new file mode 100644 index 00000000..c1c87238 --- /dev/null +++ b/typedoc/index.html @@ -0,0 +1,29 @@ +rtp.js - v0.12.0

rtp.js - v0.12.0

rtp.js

+

+

RTP stack for Node.js and browser written in TypeScript. rtp.js provides with an API to parse, generate and modify RTP and RTCP packets.

+
npm install rtp.js
+
+ +
    +
  • +

    API documentation

    +
  • +
  • +

    All RTP and RTCP classes, types and packet related helpers are exported by the packets module.

    +
    import { packets } from 'rtp.js';

    const {
    isRtp,
    isRtcp,
    RtpPacket,
    CompoundPacket,
    ReceiverReportPacket,
    SenderReportPacket,
    ReceptionReport,
    ByePacket,
    SdesPacket,
    NackPacket,
    SrReqPacket,
    EcnPacket,
    PliPacket,
    SliPacket,
    RpsiPacket,
    XrPacket,
    ExtendedJitterReportsPacket,
    GenericPacket,
    // etc.
    } = packets; +
    + +
  • +
  • +

    The utils module exports some generic helpers and utilities.

    +
    import { utils } from 'rtp.js';

    const view = utils.stringToDataView('foo'); +
    + +
  • +
+ +

ISC

+
diff --git a/typedoc/media/LICENSE b/typedoc/media/LICENSE new file mode 100644 index 00000000..706f43b4 --- /dev/null +++ b/typedoc/media/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright © 2020, Iñaki Baz Castillo + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/typedoc/modules.html b/typedoc/modules.html new file mode 100644 index 00000000..e6e74f73 --- /dev/null +++ b/typedoc/modules.html @@ -0,0 +1 @@ +rtp.js - v0.12.0

rtp.js - v0.12.0

Documents

README

Modules

packets
utils
diff --git a/typedoc/modules/packets.html b/typedoc/modules/packets.html new file mode 100644 index 00000000..2da5e287 --- /dev/null +++ b/typedoc/modules/packets.html @@ -0,0 +1 @@ +packets | rtp.js - v0.12.0
diff --git a/typedoc/modules/utils.html b/typedoc/modules/utils.html new file mode 100644 index 00000000..cfa8e65a --- /dev/null +++ b/typedoc/modules/utils.html @@ -0,0 +1 @@ +utils | rtp.js - v0.12.0
diff --git a/typedoc/types/packets.ByePacketDump.html b/typedoc/types/packets.ByePacketDump.html new file mode 100644 index 00000000..1e9e8167 --- /dev/null +++ b/typedoc/types/packets.ByePacketDump.html @@ -0,0 +1,2 @@ +ByePacketDump | rtp.js - v0.12.0

Type Alias ByePacketDump

ByePacketDump: RtcpPacketDump & { reason?: string; ssrcs: number[] }

RTCP BYE packet info dump.

+
diff --git a/typedoc/types/packets.CompoundPacketDump.html b/typedoc/types/packets.CompoundPacketDump.html new file mode 100644 index 00000000..6b37b44e --- /dev/null +++ b/typedoc/types/packets.CompoundPacketDump.html @@ -0,0 +1,2 @@ +CompoundPacketDump | rtp.js - v0.12.0

Type Alias CompoundPacketDump

CompoundPacketDump: PacketDump & { packets: RtcpPacketDump[] }

RTCP Compound packet info dump.

+
diff --git a/typedoc/types/packets.DlrrExtendedReportDump.html b/typedoc/types/packets.DlrrExtendedReportDump.html new file mode 100644 index 00000000..f951e489 --- /dev/null +++ b/typedoc/types/packets.DlrrExtendedReportDump.html @@ -0,0 +1,2 @@ +DlrrExtendedReportDump | rtp.js - v0.12.0

Type Alias DlrrExtendedReportDump

DlrrExtendedReportDump: ExtendedReportDump & { subReports: DlrrSubReport[] }

DLRR Extended Report dump.

+
diff --git a/typedoc/types/packets.DlrrSubReport.html b/typedoc/types/packets.DlrrSubReport.html new file mode 100644 index 00000000..4443de27 --- /dev/null +++ b/typedoc/types/packets.DlrrSubReport.html @@ -0,0 +1,5 @@ +DlrrSubReport | rtp.js - v0.12.0

Type Alias DlrrSubReport

DlrrSubReport: { dlrr: number; lrr: number; ssrc: number }

DLRR Sub-Report.

+

Type declaration

  • dlrr: number

    Delay since last RR.

    +
  • lrr: number

    Last RR timestamp.

    +
  • ssrc: number

    SSRC of receiver.

    +
diff --git a/typedoc/types/packets.DrleExtendedReportDump.html b/typedoc/types/packets.DrleExtendedReportDump.html new file mode 100644 index 00000000..92255300 --- /dev/null +++ b/typedoc/types/packets.DrleExtendedReportDump.html @@ -0,0 +1,2 @@ +DrleExtendedReportDump | rtp.js - v0.12.0

Type Alias DrleExtendedReportDump

DrleExtendedReportDump: ExtendedReportDump & {
    beginSeq: number;
    chunks: number[];
    endSeq: number;
    ssrc: number;
    thinning: number;
}

Duplicate RLE Extended Report dump.

+
diff --git a/typedoc/types/packets.EcnExtendedReportDump.html b/typedoc/types/packets.EcnExtendedReportDump.html new file mode 100644 index 00000000..d5c95e16 --- /dev/null +++ b/typedoc/types/packets.EcnExtendedReportDump.html @@ -0,0 +1,2 @@ +EcnExtendedReportDump | rtp.js - v0.12.0

Type Alias EcnExtendedReportDump

EcnExtendedReportDump: ExtendedReportDump & {
    duplicationCounter: number;
    ecnCeCounter: number;
    ect0Counter: number;
    ect1Counter: number;
    lostPacketsCounter: number;
    nonEctCounter: number;
    ssrc: number;
}

ECN Summary Extended Report dump.

+
diff --git a/typedoc/types/packets.EcnPacketDump.html b/typedoc/types/packets.EcnPacketDump.html new file mode 100644 index 00000000..d243e70a --- /dev/null +++ b/typedoc/types/packets.EcnPacketDump.html @@ -0,0 +1,2 @@ +EcnPacketDump | rtp.js - v0.12.0

Type Alias EcnPacketDump

EcnPacketDump: FeedbackPacketDump & {
    duplicationCounter: number;
    ecnCeCounter: number;
    ect0Counter: number;
    ect1Counter: number;
    extendedHighestSequenceNumber: number;
    lostPacketsCounter: number;
    nonEctCounter: number;
}

RTCP ECN packet info dump.

+
diff --git a/typedoc/types/packets.ExtendedJitterReportsPacketDump.html b/typedoc/types/packets.ExtendedJitterReportsPacketDump.html new file mode 100644 index 00000000..44a0a657 --- /dev/null +++ b/typedoc/types/packets.ExtendedJitterReportsPacketDump.html @@ -0,0 +1,2 @@ +ExtendedJitterReportsPacketDump | rtp.js - v0.12.0

Type Alias ExtendedJitterReportsPacketDump

ExtendedJitterReportsPacketDump: RtcpPacketDump & { jitters: number[] }

RTCP Extended Jitter Reports packet info dump.

+
diff --git a/typedoc/types/packets.ExtendedReportChunk.html b/typedoc/types/packets.ExtendedReportChunk.html new file mode 100644 index 00000000..88941e9c --- /dev/null +++ b/typedoc/types/packets.ExtendedReportChunk.html @@ -0,0 +1,31 @@ +ExtendedReportChunk | rtp.js - v0.12.0

Type Alias ExtendedReportChunk

ExtendedReportChunk: {
    bitVector?: number;
    chunkType: "run-length" | "bit-vector" | "terminating-null";
    runLength?: number;
    runType?: "zeros" | "ones";
}

Loss RLE and Duplicate RLE Extended Report chunk info.

+
Run Length Chunk
+ 0                   1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|C|R|        run length         |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+Bit Vector Chunk
+ 0                   1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|C|        bit vector           |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+Terminating Null Chunk
+ 0                   1
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0|
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ +

Type declaration

  • OptionalbitVector?: number

    Chunk bit vector (only set if chunkType is 'bit-vector').

    +
  • chunkType: "run-length" | "bit-vector" | "terminating-null"

    Chunk type (Run Length Chunk, Bit Vector Chunk or Terminating Null Chunk).

    +
  • OptionalrunLength?: number

    Chunk run length (only set if chunkType is 'run-length').

    +
  • OptionalrunType?: "zeros" | "ones"

    Chunk run type (only set if chunkType is 'run-length').

    +
diff --git a/typedoc/types/packets.ExtendedReportDump.html b/typedoc/types/packets.ExtendedReportDump.html new file mode 100644 index 00000000..a8c2e133 --- /dev/null +++ b/typedoc/types/packets.ExtendedReportDump.html @@ -0,0 +1,2 @@ +ExtendedReportDump | rtp.js - v0.12.0

Type Alias ExtendedReportDump

ExtendedReportDump: SerializableDump & { reportType: ExtendedReportType }

Extended Report dump.

+
diff --git a/typedoc/types/packets.FeedbackPacketDump.html b/typedoc/types/packets.FeedbackPacketDump.html new file mode 100644 index 00000000..2c27759f --- /dev/null +++ b/typedoc/types/packets.FeedbackPacketDump.html @@ -0,0 +1,2 @@ +FeedbackPacketDump | rtp.js - v0.12.0

Type Alias FeedbackPacketDump

FeedbackPacketDump: RtcpPacketDump & {
    mediaSsrc: number;
    messageType: RtpFeedbackMessageType | PsFeedbackMessageType;
    senderSsrc: number;
}

RTCP Feedback packet info dump.

+
diff --git a/typedoc/types/packets.GenericExtendedReportDump.html b/typedoc/types/packets.GenericExtendedReportDump.html new file mode 100644 index 00000000..d36329c7 --- /dev/null +++ b/typedoc/types/packets.GenericExtendedReportDump.html @@ -0,0 +1,2 @@ +GenericExtendedReportDump | rtp.js - v0.12.0

Type Alias GenericExtendedReportDump

GenericExtendedReportDump: ExtendedReportDump

Generic Extended Report dump.

+
diff --git a/typedoc/types/packets.GenericFeedbackPacketDump.html b/typedoc/types/packets.GenericFeedbackPacketDump.html new file mode 100644 index 00000000..41573ba4 --- /dev/null +++ b/typedoc/types/packets.GenericFeedbackPacketDump.html @@ -0,0 +1,2 @@ +GenericFeedbackPacketDump | rtp.js - v0.12.0

Type Alias GenericFeedbackPacketDump

GenericFeedbackPacketDump: FeedbackPacketDump & { bodyLength: number }

RTCP generic Feedback packet info.

+
diff --git a/typedoc/types/packets.GenericPacketDump.html b/typedoc/types/packets.GenericPacketDump.html new file mode 100644 index 00000000..7d5ea082 --- /dev/null +++ b/typedoc/types/packets.GenericPacketDump.html @@ -0,0 +1,2 @@ +GenericPacketDump | rtp.js - v0.12.0

Type Alias GenericPacketDump

GenericPacketDump: RtcpPacketDump & { bodyLength: number }

RTCP generic packet info dump.

+
diff --git a/typedoc/types/packets.LrleExtendedReportDump.html b/typedoc/types/packets.LrleExtendedReportDump.html new file mode 100644 index 00000000..3865b571 --- /dev/null +++ b/typedoc/types/packets.LrleExtendedReportDump.html @@ -0,0 +1,2 @@ +LrleExtendedReportDump | rtp.js - v0.12.0

Type Alias LrleExtendedReportDump

LrleExtendedReportDump: ExtendedReportDump & {
    beginSeq: number;
    chunks: number[];
    endSeq: number;
    ssrc: number;
    thinning: number;
}

Loss RLE Extended Report dump.

+
diff --git a/typedoc/types/packets.NackPacketDump.html b/typedoc/types/packets.NackPacketDump.html new file mode 100644 index 00000000..fe6a8d4b --- /dev/null +++ b/typedoc/types/packets.NackPacketDump.html @@ -0,0 +1,2 @@ +NackPacketDump | rtp.js - v0.12.0

Type Alias NackPacketDump

NackPacketDump: FeedbackPacketDump & {
    items: { bitmask: number; pid: number }[];
}

RTCP NACK packet info dump.

+
diff --git a/typedoc/types/packets.PacketDump.html b/typedoc/types/packets.PacketDump.html new file mode 100644 index 00000000..eacb8cda --- /dev/null +++ b/typedoc/types/packets.PacketDump.html @@ -0,0 +1,5 @@ +PacketDump | rtp.js - v0.12.0

Type Alias PacketDump

PacketDump: SerializableDump & { padding: number }

Packet info dump.

+
    +
  • Read the info dump type of each RTP and RTCP packet instead.
  • +
+
diff --git a/typedoc/types/packets.PliPacketDump.html b/typedoc/types/packets.PliPacketDump.html new file mode 100644 index 00000000..c16d4e4d --- /dev/null +++ b/typedoc/types/packets.PliPacketDump.html @@ -0,0 +1,2 @@ +PliPacketDump | rtp.js - v0.12.0

Type Alias PliPacketDump

PliPacketDump: FeedbackPacketDump

RTCP PLI packet info dump.

+
diff --git a/typedoc/types/packets.PrtExtendedReportDump.html b/typedoc/types/packets.PrtExtendedReportDump.html new file mode 100644 index 00000000..9f387baf --- /dev/null +++ b/typedoc/types/packets.PrtExtendedReportDump.html @@ -0,0 +1,2 @@ +PrtExtendedReportDump | rtp.js - v0.12.0

Type Alias PrtExtendedReportDump

PrtExtendedReportDump: ExtendedReportDump & {
    beginSeq: number;
    endSeq: number;
    receiptTimes: number[];
    ssrc: number;
    thinning: number;
}

Packet Receipt Times Extended Report dump.

+
diff --git a/typedoc/types/packets.ReceiverReportPacketDump.html b/typedoc/types/packets.ReceiverReportPacketDump.html new file mode 100644 index 00000000..b0376926 --- /dev/null +++ b/typedoc/types/packets.ReceiverReportPacketDump.html @@ -0,0 +1,2 @@ +ReceiverReportPacketDump | rtp.js - v0.12.0

Type Alias ReceiverReportPacketDump

ReceiverReportPacketDump: RtcpPacketDump & {
    reports: ReceptionReportDump[];
    ssrc: number;
}

RTCP Receiver Report packet info dump.

+
diff --git a/typedoc/types/packets.ReceptionReportDump.html b/typedoc/types/packets.ReceptionReportDump.html new file mode 100644 index 00000000..278032e9 --- /dev/null +++ b/typedoc/types/packets.ReceptionReportDump.html @@ -0,0 +1,2 @@ +ReceptionReportDump | rtp.js - v0.12.0

Type Alias ReceptionReportDump

ReceptionReportDump: SerializableDump & {
    dlsr: number;
    fractionLost: number;
    highestSeq: number;
    jitter: number;
    lsr: number;
    ssrc: number;
    totalLost: number;
}

Reception Report dump.

+
diff --git a/typedoc/types/packets.RpsiPacketDump.html b/typedoc/types/packets.RpsiPacketDump.html new file mode 100644 index 00000000..2b3ef543 --- /dev/null +++ b/typedoc/types/packets.RpsiPacketDump.html @@ -0,0 +1,2 @@ +RpsiPacketDump | rtp.js - v0.12.0

Type Alias RpsiPacketDump

RpsiPacketDump: FeedbackPacketDump & {
    bitStringLength: number;
    paddingBits: number;
    payloadType: number;
}

RTCP RPSI packet info dump.

+
diff --git a/typedoc/types/packets.RrtExtendedReportDump.html b/typedoc/types/packets.RrtExtendedReportDump.html new file mode 100644 index 00000000..07f65647 --- /dev/null +++ b/typedoc/types/packets.RrtExtendedReportDump.html @@ -0,0 +1,2 @@ +RrtExtendedReportDump | rtp.js - v0.12.0

Type Alias RrtExtendedReportDump

RrtExtendedReportDump: ExtendedReportDump & {
    ntpFraction: number;
    ntpSeq: number;
}

Receiver Reference Time Extended Report dump.

+
diff --git a/typedoc/types/packets.RtcpPacketDump.html b/typedoc/types/packets.RtcpPacketDump.html new file mode 100644 index 00000000..023ab712 --- /dev/null +++ b/typedoc/types/packets.RtcpPacketDump.html @@ -0,0 +1,2 @@ +RtcpPacketDump | rtp.js - v0.12.0

Type Alias RtcpPacketDump

RtcpPacketDump: PacketDump & { count: number; packetType: RtcpPacketType }

Base RTCP packet info dump.

+
diff --git a/typedoc/types/packets.RtpExtensionMapping.html b/typedoc/types/packets.RtpExtensionMapping.html new file mode 100644 index 00000000..1d703cf4 --- /dev/null +++ b/typedoc/types/packets.RtpExtensionMapping.html @@ -0,0 +1,5 @@ +RtpExtensionMapping | rtp.js - v0.12.0

Type Alias RtpExtensionMapping

RtpExtensionMapping: Partial<Record<RtpExtensionType, number>>

Mapping of RTP extension types and their corresponding RTP extension ids.

+
const rtpExtensionMapping: RtpExtensionMapping =
{
[RtpExtensionType.MID]: 1,
[RtpExtensionType.RTP_STREAM_ID]: 3
+
+ +
diff --git a/typedoc/types/packets.RtpPacketDump.html b/typedoc/types/packets.RtpPacketDump.html new file mode 100644 index 00000000..05410b1f --- /dev/null +++ b/typedoc/types/packets.RtpPacketDump.html @@ -0,0 +1,2 @@ +RtpPacketDump | rtp.js - v0.12.0

Type Alias RtpPacketDump

RtpPacketDump: PacketDump & {
    absSendTimeExt?: number;
    csrcs: number[];
    extensions: { id: number; length: number }[];
    headerExtensionId?: number;
    marker: boolean;
    midExt?: string;
    payloadLength: number;
    payloadType: number;
    repairedRidExt?: string;
    ridExt?: string;
    sequenceNumber: number;
    ssrc: number;
    ssrcAudioLevelExt?: SsrcAudioLevelExtension;
    timestamp: number;
    transmissionOffsetExt?: number;
    transportWideSeqNumberExt?: number;
    videoOrientationExt?: VideoOrientationExtension;
}

RTP packet info dump.

+
diff --git a/typedoc/types/packets.SdesChunkDump.html b/typedoc/types/packets.SdesChunkDump.html new file mode 100644 index 00000000..bf1292d4 --- /dev/null +++ b/typedoc/types/packets.SdesChunkDump.html @@ -0,0 +1,2 @@ +SdesChunkDump | rtp.js - v0.12.0

Type Alias SdesChunkDump

SdesChunkDump: SerializableDump & {
    items: { text: string; type: SdesItemType }[];
    ssrc: number;
}

SDES Chunk dump.

+
diff --git a/typedoc/types/packets.SdesPacketDump.html b/typedoc/types/packets.SdesPacketDump.html new file mode 100644 index 00000000..bfe7c0c7 --- /dev/null +++ b/typedoc/types/packets.SdesPacketDump.html @@ -0,0 +1,2 @@ +SdesPacketDump | rtp.js - v0.12.0

Type Alias SdesPacketDump

SdesPacketDump: RtcpPacketDump & { chunks: SdesChunkDump[] }

RTCP SDES packet info dump.

+
diff --git a/typedoc/types/packets.SenderReportPacketDump.html b/typedoc/types/packets.SenderReportPacketDump.html new file mode 100644 index 00000000..d7c662d8 --- /dev/null +++ b/typedoc/types/packets.SenderReportPacketDump.html @@ -0,0 +1,2 @@ +SenderReportPacketDump | rtp.js - v0.12.0

Type Alias SenderReportPacketDump

SenderReportPacketDump: RtcpPacketDump & {
    ntpFraction: number;
    ntpSeq: number;
    octetCount: number;
    packetCount: number;
    reports: ReceptionReportDump[];
    rtpTimestamp: number;
    ssrc: number;
}

RTCP Sender Report packet info dump.

+
diff --git a/typedoc/types/packets.SerializableDump.html b/typedoc/types/packets.SerializableDump.html new file mode 100644 index 00000000..a60c3f7d --- /dev/null +++ b/typedoc/types/packets.SerializableDump.html @@ -0,0 +1,2 @@ +SerializableDump | rtp.js - v0.12.0

Type Alias SerializableDump

SerializableDump: { byteLength: number }

Serializable info dump.

+

Type declaration

  • byteLength: number
diff --git a/typedoc/types/packets.SliPacketDump.html b/typedoc/types/packets.SliPacketDump.html new file mode 100644 index 00000000..1211da0c --- /dev/null +++ b/typedoc/types/packets.SliPacketDump.html @@ -0,0 +1,2 @@ +SliPacketDump | rtp.js - v0.12.0

Type Alias SliPacketDump

SliPacketDump: FeedbackPacketDump & {
    items: { first: number; number: number; pictureId: number }[];
}

RTCP SLI packet info dump.

+
diff --git a/typedoc/types/packets.SrReqPacketDump.html b/typedoc/types/packets.SrReqPacketDump.html new file mode 100644 index 00000000..e7363262 --- /dev/null +++ b/typedoc/types/packets.SrReqPacketDump.html @@ -0,0 +1,2 @@ +SrReqPacketDump | rtp.js - v0.12.0

Type Alias SrReqPacketDump

SrReqPacketDump: FeedbackPacketDump

RTCP SR REQ packet info dump.

+
diff --git a/typedoc/types/packets.SsExtendedReportDump.html b/typedoc/types/packets.SsExtendedReportDump.html new file mode 100644 index 00000000..fda10dbd --- /dev/null +++ b/typedoc/types/packets.SsExtendedReportDump.html @@ -0,0 +1,2 @@ +SsExtendedReportDump | rtp.js - v0.12.0

Type Alias SsExtendedReportDump

SsExtendedReportDump: ExtendedReportDump & {
    beginSeq: number;
    devJitter?: number;
    devTtlOrHl?: number;
    duplicatePackets?: number;
    endSeq: number;
    lostPackets?: number;
    maxJitter?: number;
    maxTtlOrHl?: number;
    meanJitter?: number;
    meanTtlOrHl?: number;
    minJitter?: number;
    minTtlOrHl?: number;
    ssrc: number;
    ttlOrHlMode?: "ipv4-ttl" | "ipv6-hop-limit";
}

Statistics Summary Extended Report dump.

+
diff --git a/typedoc/types/packets.SsrcAudioLevelExtension.html b/typedoc/types/packets.SsrcAudioLevelExtension.html new file mode 100644 index 00000000..8b08cf84 --- /dev/null +++ b/typedoc/types/packets.SsrcAudioLevelExtension.html @@ -0,0 +1,8 @@ +SsrcAudioLevelExtension | rtp.js - v0.12.0

Type Alias SsrcAudioLevelExtension

SsrcAudioLevelExtension: { voice: boolean; volume: number }

SSRC Audio Level data.

+

Type declaration

  • voice: boolean

    Whether the encoder believes the audio packet contains voice activity.

    +
  • volume: number

    Audio level expressed in -dBov, with values from 0 to 127 representing 0 +to -127 dBov.

    +
+
diff --git a/typedoc/types/packets.VideoOrientationExtension.html b/typedoc/types/packets.VideoOrientationExtension.html new file mode 100644 index 00000000..5a0848a4 --- /dev/null +++ b/typedoc/types/packets.VideoOrientationExtension.html @@ -0,0 +1,9 @@ +VideoOrientationExtension | rtp.js - v0.12.0

Type Alias VideoOrientationExtension

VideoOrientationExtension: { camera: boolean; flip: boolean; rotation: number }

Video Orientation data.

+

Type declaration

  • camera: boolean
  • flip: boolean
  • rotation: number

    0: no rotation. +1: rotation is 90º. +2: rotation is 180º. +3: rotation is 270º.

    +
diff --git a/typedoc/types/packets.VmExtendedReportDump.html b/typedoc/types/packets.VmExtendedReportDump.html new file mode 100644 index 00000000..fd1f7898 --- /dev/null +++ b/typedoc/types/packets.VmExtendedReportDump.html @@ -0,0 +1,2 @@ +VmExtendedReportDump | rtp.js - v0.12.0

Type Alias VmExtendedReportDump

VmExtendedReportDump: ExtendedReportDump & {
    burstDensity: number;
    burstDuration: number;
    discardRate: number;
    endSystemDelay: number;
    extRFactor: number;
    gapDensity: number;
    gapDuration: number;
    gmin: number;
    jba: number;
    jbAbsMax: number;
    jbMax: number;
    jbNominal: number;
    jbRate: number;
    lossRate: number;
    mosCq: number;
    mosLq: number;
    noiseLevel: number;
    plc: number;
    rerl: number;
    rFactor: number;
    roundTripDelay: number;
    signalLevel: number;
    ssrc: number;
}

VoIP Metrics Extended Report dump.

+
diff --git a/typedoc/types/packets.XrPacketDump.html b/typedoc/types/packets.XrPacketDump.html new file mode 100644 index 00000000..14c7ba86 --- /dev/null +++ b/typedoc/types/packets.XrPacketDump.html @@ -0,0 +1,2 @@ +XrPacketDump | rtp.js - v0.12.0

Type Alias XrPacketDump

XrPacketDump: RtcpPacketDump & { reports: ExtendedReportDump[]; ssrc: number }

RTCP XR packet info dump.

+