shaka-player 4.12.8 → 4.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AUTHORS +1 -0
- package/CONTRIBUTORS +4 -0
- package/README.md +22 -21
- package/cspell.config.yaml +18 -0
- package/dist/controls.css +1 -1
- package/dist/controls.css.map +1 -1
- package/dist/deps.js +29 -24
- package/dist/locales.js +33 -33
- package/dist/shaka-player.compiled.d.ts +138 -36
- package/dist/shaka-player.compiled.debug.d.ts +138 -36
- package/dist/shaka-player.compiled.debug.externs.js +367 -107
- package/dist/shaka-player.compiled.debug.js +828 -765
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +367 -107
- package/dist/shaka-player.compiled.js +1451 -1416
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +172 -38
- package/dist/shaka-player.ui.debug.d.ts +172 -38
- package/dist/shaka-player.ui.debug.externs.js +406 -113
- package/dist/shaka-player.ui.debug.js +842 -766
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +406 -113
- package/dist/shaka-player.ui.js +1670 -1628
- package/dist/shaka-player.ui.map +4 -4
- package/eslint.config.mjs +343 -0
- package/externs/airplay.js +1 -1
- package/externs/audiotrack.js +1 -1
- package/externs/awesomplete.js +1 -1
- package/externs/cast-sdk-v2.js +2 -2
- package/externs/cmcd.js +16 -1
- package/externs/device_sensor_event.js +1 -1
- package/externs/ima.js +8 -8
- package/externs/isoboxer.js +31 -31
- package/externs/jwk_set.js +1 -1
- package/externs/lcevc.js +8 -8
- package/externs/mediakeys.js +1 -1
- package/externs/mediasession.js +3 -2
- package/externs/mediatailor.js +18 -18
- package/externs/pictureinpicture.js +41 -1
- package/externs/playstation.js +2 -2
- package/externs/prefixed_eme.js +1 -1
- package/externs/shaka/abortable.js +4 -4
- package/externs/shaka/abr_manager.js +1 -1
- package/externs/shaka/ads.js +45 -6
- package/externs/shaka/cea.js +2 -2
- package/externs/shaka/codecs.js +4 -4
- package/externs/shaka/drm_info.js +6 -6
- package/externs/shaka/error.js +5 -5
- package/externs/shaka/manifest.js +51 -56
- package/externs/shaka/manifest_parser.js +3 -9
- package/externs/shaka/net.js +23 -20
- package/externs/shaka/offline.js +37 -37
- package/externs/shaka/offline_compat_v1.js +10 -10
- package/externs/shaka/offline_compat_v2.js +10 -10
- package/externs/shaka/player.js +139 -109
- package/externs/shaka/text.js +10 -3
- package/externs/shaka/transmuxer.js +1 -1
- package/externs/videotrack.js +1 -1
- package/lib/abr/ewma.js +1 -1
- package/lib/abr/simple_abr_manager.js +70 -22
- package/lib/ads/ad_manager.js +43 -18
- package/lib/ads/ad_utils.js +160 -58
- package/lib/ads/ads_stats.js +1 -1
- package/lib/ads/client_side_ad_manager.js +2 -2
- package/lib/ads/interstitial_ad.js +16 -11
- package/lib/ads/interstitial_ad_manager.js +419 -72
- package/lib/ads/interstitial_static_ad.js +299 -0
- package/lib/ads/media_tailor_ad.js +1 -0
- package/lib/ads/media_tailor_ad_manager.js +37 -36
- package/lib/ads/server_side_ad_manager.js +7 -6
- package/lib/cast/cast_receiver.js +5 -3
- package/lib/cast/cast_sender.js +2 -2
- package/lib/cast/cast_utils.js +20 -13
- package/lib/cea/cea608_data_channel.js +53 -53
- package/lib/cea/cea708_service.js +42 -40
- package/lib/cea/cea708_window.js +5 -2
- package/lib/cea/cea_decoder.js +5 -7
- package/lib/cea/mp4_cea_parser.js +1 -1
- package/lib/cea/sei_processor.js +1 -1
- package/lib/dash/content_protection.js +62 -192
- package/lib/dash/dash_parser.js +119 -119
- package/lib/dash/mpd_utils.js +14 -13
- package/lib/dash/segment_base.js +5 -5
- package/lib/dash/segment_list.js +10 -10
- package/lib/dash/segment_template.js +55 -53
- package/lib/debug/log.js +2 -2
- package/lib/dependencies/all.js +2 -1
- package/lib/{media → drm}/drm_engine.js +274 -143
- package/lib/{util → drm}/drm_utils.js +20 -11
- package/lib/drm/playready.js +233 -0
- package/lib/hls/hls_classes.js +14 -14
- package/lib/hls/hls_parser.js +257 -196
- package/lib/hls/hls_utils.js +14 -14
- package/lib/hls/manifest_text_parser.js +10 -10
- package/lib/media/adaptation_set.js +6 -5
- package/lib/media/adaptation_set_criteria.js +51 -379
- package/lib/media/buffering_observer.js +5 -4
- package/lib/media/closed_caption_parser.js +2 -2
- package/lib/media/content_workarounds.js +2 -2
- package/lib/media/example_based_criteria.js +69 -0
- package/lib/media/gap_jumping_controller.js +14 -1
- package/lib/media/manifest_filterer.js +8 -8
- package/lib/media/manifest_parser.js +2 -2
- package/lib/media/media_source_capabilities.js +20 -1
- package/lib/media/media_source_engine.js +84 -35
- package/lib/media/mp4_segment_index_parser.js +5 -5
- package/lib/media/playhead.js +2 -8
- package/lib/media/playhead_observer.js +1 -1
- package/lib/media/preference_based_criteria.js +333 -0
- package/lib/media/preload_manager.js +53 -37
- package/lib/media/presentation_timeline.js +2 -2
- package/lib/media/quality_observer.js +35 -35
- package/lib/media/region_observer.js +2 -2
- package/lib/media/region_timeline.js +3 -3
- package/lib/media/segment_index.js +14 -14
- package/lib/media/segment_prefetch.js +17 -13
- package/lib/media/segment_reference.js +7 -7
- package/lib/media/segment_utils.js +9 -9
- package/lib/media/streaming_engine.js +77 -38
- package/lib/media/time_ranges_utils.js +1 -1
- package/lib/media/video_wrapper.js +1 -1
- package/lib/media/webm_segment_index_parser.js +4 -4
- package/lib/mss/content_protection.js +17 -222
- package/lib/mss/mss_parser.js +23 -24
- package/lib/net/data_uri_plugin.js +1 -0
- package/lib/net/http_fetch_plugin.js +8 -7
- package/lib/net/http_plugin_utils.js +5 -2
- package/lib/net/http_xhr_plugin.js +4 -3
- package/lib/net/networking_engine.js +72 -17
- package/lib/net/networking_utils.js +5 -2
- package/lib/offline/download_info.js +5 -1
- package/lib/offline/download_manager.js +15 -4
- package/lib/offline/download_progress_estimator.js +1 -1
- package/lib/offline/indexeddb/base_storage_cell.js +9 -9
- package/lib/offline/indexeddb/db_connection.js +1 -1
- package/lib/offline/indexeddb/db_operation.js +2 -2
- package/lib/offline/indexeddb/eme_session_storage_cell.js +1 -1
- package/lib/offline/indexeddb/storage_mechanism.js +1 -1
- package/lib/offline/indexeddb/v1_storage_cell.js +3 -3
- package/lib/offline/indexeddb/v2_storage_cell.js +2 -2
- package/lib/offline/manifest_converter.js +11 -12
- package/lib/offline/offline_scheme.js +8 -4
- package/lib/offline/session_deleter.js +11 -11
- package/lib/offline/storage.js +137 -88
- package/lib/offline/storage_muxer.js +8 -8
- package/lib/offline/stored_content_utils.js +3 -3
- package/lib/offline/stream_bandwidth_estimator.js +1 -1
- package/lib/player.js +291 -207
- package/lib/polyfill/all.js +1 -1
- package/lib/polyfill/media_capabilities.js +5 -5
- package/lib/polyfill/patchedmediakeys_apple.js +6 -6
- package/lib/polyfill/patchedmediakeys_webkit.js +8 -8
- package/lib/polyfill/video_play_promise.js +0 -1
- package/lib/text/cue.js +3 -2
- package/lib/text/lrc_text_parser.js +1 -1
- package/lib/text/mp4_ttml_parser.js +1 -1
- package/lib/text/mp4_vtt_parser.js +3 -3
- package/lib/text/sbv_text_parser.js +1 -1
- package/lib/text/simple_text_displayer.js +37 -10
- package/lib/text/ssa_text_parser.js +3 -1
- package/lib/text/stub_text_displayer.js +12 -5
- package/lib/text/text_engine.js +5 -4
- package/lib/text/text_utils.js +4 -4
- package/lib/text/ttml_text_parser.js +21 -20
- package/lib/text/ui_text_displayer.js +20 -13
- package/lib/text/vtt_text_parser.js +10 -10
- package/lib/text/web_vtt_generator.js +2 -2
- package/lib/transmuxer/aac_transmuxer.js +2 -2
- package/lib/transmuxer/ac3_transmuxer.js +2 -2
- package/lib/transmuxer/adts.js +2 -0
- package/lib/transmuxer/ec3.js +3 -3
- package/lib/transmuxer/ec3_transmuxer.js +2 -2
- package/lib/transmuxer/h264.js +5 -5
- package/lib/transmuxer/h265.js +3 -3
- package/lib/transmuxer/mp3_transmuxer.js +2 -2
- package/lib/transmuxer/mpeg_audio.js +6 -6
- package/lib/transmuxer/mss_transmuxer.js +2 -0
- package/lib/transmuxer/transmuxer_engine.js +1 -1
- package/lib/transmuxer/ts_transmuxer.js +10 -10
- package/lib/util/abortable_operation.js +10 -10
- package/lib/util/array_utils.js +6 -6
- package/lib/util/cmcd_manager.js +149 -18
- package/lib/util/cmsd_manager.js +11 -11
- package/lib/util/config_utils.js +3 -3
- package/lib/util/content_steering_manager.js +17 -17
- package/lib/util/data_view_reader.js +3 -3
- package/lib/util/ebml_parser.js +1 -1
- package/lib/util/error.js +11 -6
- package/lib/util/event_manager.js +1 -1
- package/lib/util/exp_golomb.js +1 -1
- package/lib/util/fairplay_utils.js +6 -1
- package/lib/util/fake_event.js +3 -2
- package/lib/util/fake_event_target.js +1 -1
- package/lib/util/functional.js +8 -8
- package/lib/util/id3_utils.js +1 -1
- package/lib/util/iterables.js +6 -6
- package/lib/util/language_utils.js +17 -17
- package/lib/util/manifest_parser_utils.js +13 -13
- package/lib/util/map_utils.js +6 -6
- package/lib/util/media_ready_state_utils.js +1 -1
- package/lib/util/mime_utils.js +15 -4
- package/lib/util/mp4_box_parsers.js +5 -5
- package/lib/util/mp4_generator.js +31 -30
- package/lib/util/mp4_parser.js +2 -2
- package/lib/util/multi_map.js +5 -5
- package/lib/util/mutex.js +1 -1
- package/lib/util/networking.js +1 -1
- package/lib/util/object_utils.js +5 -1
- package/lib/util/operation_manager.js +1 -1
- package/lib/util/periods.js +24 -24
- package/lib/util/platform.js +8 -4
- package/lib/util/player_configuration.js +50 -17
- package/lib/util/pssh.js +34 -6
- package/lib/util/public_promise.js +2 -2
- package/lib/util/state_history.js +2 -2
- package/lib/util/stream_utils.js +138 -120
- package/lib/util/string_utils.js +4 -3
- package/lib/util/switch_history.js +2 -2
- package/lib/util/tXml.js +22 -17
- package/lib/util/text_parser.js +2 -2
- package/lib/util/timer.js +1 -1
- package/lib/util/ts_parser.js +22 -22
- package/lib/util/xml_utils.js +1 -0
- package/package.json +7 -4
- package/project-words.txt +485 -0
- package/shaka-player.uncompiled.js +1 -1
- package/third_party/closure-uri/uri.js +2 -2
- package/third_party/closure-uri/utils.js +2 -2
- package/third_party/language-mapping-list/language-mapping-list.js +1 -1
- package/ui/ad_statistics_button.js +9 -5
- package/ui/airplay_button.js +1 -0
- package/ui/audio_language_selection.js +2 -1
- package/ui/context_menu.js +2 -2
- package/ui/controls.js +7 -7
- package/ui/externs/ui.js +29 -21
- package/ui/externs/watermark.js +64 -0
- package/ui/fast_forward_button.js +1 -1
- package/ui/gl_matrix/matrix_4x4.js +11 -5
- package/ui/hidden_fast_forward_button.js +1 -1
- package/ui/hidden_seek_button.js +1 -1
- package/ui/language_utils.js +27 -26
- package/ui/less/buttons.less +2 -2
- package/ui/localization.js +21 -21
- package/ui/loop_button.js +2 -2
- package/ui/overflow_menu.js +2 -2
- package/ui/playback_rate_selection.js +1 -1
- package/ui/presentation_time.js +4 -1
- package/ui/range_element.js +2 -2
- package/ui/resolution_selection.js +42 -6
- package/ui/rewind_button.js +1 -1
- package/ui/seek_bar.js +5 -5
- package/ui/statistics_button.js +8 -4
- package/ui/text_selection.js +3 -2
- package/ui/ui.js +32 -2
- package/ui/vr_manager.js +3 -3
- package/ui/vr_utils.js +14 -14
- package/ui/vr_webgl.js +5 -5
- package/ui/watermark.js +313 -0
- package/.eslintignore +0 -4
- package/.eslintrc.js +0 -310
- package/lib/polyfill/patchedmediakeys_nop.js +0 -148
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/*! @license
|
|
2
|
+
* Shaka Player
|
|
3
|
+
* Copyright 2016 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// ESlint config
|
|
8
|
+
|
|
9
|
+
import js from '@eslint/js';
|
|
10
|
+
import google from 'eslint-config-google';
|
|
11
|
+
import jsdoc from 'eslint-plugin-jsdoc';
|
|
12
|
+
import shakaRules from 'eslint-plugin-shaka-rules';
|
|
13
|
+
import globals from 'globals';
|
|
14
|
+
|
|
15
|
+
// This is a matcher (usable in no-restricted-syntax) that matches either a
|
|
16
|
+
// test or a before/after block.
|
|
17
|
+
const testNameRegex =
|
|
18
|
+
'/^([fx]?it|(drm|quarantined)It|(before|after)(Each|All))$/';
|
|
19
|
+
const testCall = `CallExpression[callee.name=${testNameRegex}]`;
|
|
20
|
+
|
|
21
|
+
const commonNoRestrictedSyntax = [
|
|
22
|
+
{
|
|
23
|
+
'selector':
|
|
24
|
+
'MemberExpression[object.name="goog"][property.name="inherits"]',
|
|
25
|
+
'message': 'Don\'t use goog.inherits.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
'selector': ':not(MethodDefinition) > FunctionExpression',
|
|
29
|
+
'message': 'Use arrow functions instead of "function" functions.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
'selector': 'CallExpression[callee.property.name="forEach"] >' +
|
|
33
|
+
':function[params.length=1]',
|
|
34
|
+
'message': 'Use for-of instead of forEach',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
// NOTE: prefer-spread rule covers .apply() already.
|
|
38
|
+
'selector': 'CallExpression[callee.property.name=/^(bind|call)$/]',
|
|
39
|
+
'message': 'Don\'t use Function bind/call.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
'selector': 'MemberExpression[property.name="prototype"]',
|
|
43
|
+
'message': 'Use ES6 classes not .prototype.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
'selector': 'BinaryExpression[operator=/^([<>!=]=?)$/] > ' +
|
|
47
|
+
'CallExpression[callee.property.name=indexOf]',
|
|
48
|
+
'message': 'Use Array.includes instead of indexOf.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
export default [
|
|
53
|
+
{
|
|
54
|
+
ignores: ['!**/eslint.config.mjs'],
|
|
55
|
+
},
|
|
56
|
+
js.configs.recommended,
|
|
57
|
+
jsdoc.configs['flat/recommended-error'],
|
|
58
|
+
google,
|
|
59
|
+
shakaRules.configs.config,
|
|
60
|
+
{
|
|
61
|
+
languageOptions: {
|
|
62
|
+
globals: globals.browser,
|
|
63
|
+
ecmaVersion: 2017,
|
|
64
|
+
},
|
|
65
|
+
settings: {
|
|
66
|
+
jsdoc: {
|
|
67
|
+
mode: 'closure',
|
|
68
|
+
preferredTypes: {
|
|
69
|
+
'.<>': '<>',
|
|
70
|
+
'object': 'Object',
|
|
71
|
+
'symbol': 'Symbol',
|
|
72
|
+
},
|
|
73
|
+
tagNamePreference: {
|
|
74
|
+
augments: 'extends',
|
|
75
|
+
constant: 'const',
|
|
76
|
+
constructor: 'constructor',
|
|
77
|
+
file: 'fileoverview',
|
|
78
|
+
returns: 'return',
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
rules: {
|
|
83
|
+
// Things the compiler already takes care of, with more precision: {{{
|
|
84
|
+
'no-console': 'off',
|
|
85
|
+
'no-eq-null': 'off',
|
|
86
|
+
'no-eval': 'off',
|
|
87
|
+
'no-undef': 'off',
|
|
88
|
+
// }}}
|
|
89
|
+
|
|
90
|
+
// Things we should probably fix, but in stages in multiple commits: {{{
|
|
91
|
+
|
|
92
|
+
// These could catch real bugs
|
|
93
|
+
'default-case': 'off',
|
|
94
|
+
// TODO: Enable no-loop-func in next eslint release. We can't use it
|
|
95
|
+
// now since it doesn't allow capturing "const" variables, which is safe
|
|
96
|
+
'no-loop-func': 'off',
|
|
97
|
+
// Conflicts with some Closure declarations
|
|
98
|
+
'no-unused-expressions': 'off',
|
|
99
|
+
'prefer-promise-reject-errors': 'off',
|
|
100
|
+
// These could improve readability
|
|
101
|
+
'complexity': 'off',
|
|
102
|
+
'no-negated-condition': 'off',
|
|
103
|
+
'no-shadow': 'off',
|
|
104
|
+
// }}}
|
|
105
|
+
|
|
106
|
+
// "Possible error" rules: {{{
|
|
107
|
+
'no-async-promise-executor': 'error',
|
|
108
|
+
'no-await-in-loop': 'error',
|
|
109
|
+
'no-empty': ['error', {
|
|
110
|
+
allowEmptyCatch: true,
|
|
111
|
+
}],
|
|
112
|
+
'no-misleading-character-class': 'error',
|
|
113
|
+
'no-template-curly-in-string': 'error',
|
|
114
|
+
'no-fallthrough': ['error', {
|
|
115
|
+
allowEmptyCase: true,
|
|
116
|
+
}],
|
|
117
|
+
// TODO: Try to re-enable this if possible. Right now, it produces way
|
|
118
|
+
// too many false-positives with eslint 7.
|
|
119
|
+
// It worked well enough in eslint 5.
|
|
120
|
+
// 'require-atomic-updates': 'error',
|
|
121
|
+
// }}}
|
|
122
|
+
|
|
123
|
+
// "Best practices" rules: {{{
|
|
124
|
+
'accessor-pairs': 'error',
|
|
125
|
+
'array-callback-return': 'error',
|
|
126
|
+
// causes issues when implementing an interface
|
|
127
|
+
'class-methods-use-this': 'off',
|
|
128
|
+
'consistent-return': 'error',
|
|
129
|
+
'dot-location': ['error', 'property'],
|
|
130
|
+
'dot-notation': 'off', // We use bracket notation in tests on purpose
|
|
131
|
+
'eqeqeq': 'off', // Compiler handles type checking in advance
|
|
132
|
+
'guard-for-in': 'off',
|
|
133
|
+
'no-alert': 'error',
|
|
134
|
+
'no-caller': 'error',
|
|
135
|
+
'no-div-regex': 'error',
|
|
136
|
+
'no-extend-native': 'error', // May conflict with future polyfills
|
|
137
|
+
'no-extra-label': 'error',
|
|
138
|
+
'no-floating-decimal': 'error',
|
|
139
|
+
'no-implicit-coercion': ['error', {
|
|
140
|
+
allow: ['!!'],
|
|
141
|
+
}],
|
|
142
|
+
'no-implied-eval': 'error',
|
|
143
|
+
'no-invalid-this': 'error',
|
|
144
|
+
'no-iterator': 'error',
|
|
145
|
+
'no-labels': 'error',
|
|
146
|
+
'no-lone-blocks': 'error',
|
|
147
|
+
'no-multi-spaces': ['error', {
|
|
148
|
+
ignoreEOLComments: true,
|
|
149
|
+
}],
|
|
150
|
+
'no-multi-str': 'error',
|
|
151
|
+
'no-new': 'error',
|
|
152
|
+
'no-new-func': 'error',
|
|
153
|
+
'no-new-wrappers': 'error',
|
|
154
|
+
'no-octal-escape': 'error',
|
|
155
|
+
'no-proto': 'error',
|
|
156
|
+
'no-return-assign': 'error',
|
|
157
|
+
'no-return-await': 'error',
|
|
158
|
+
'no-script-url': 'error',
|
|
159
|
+
'no-self-compare': 'error',
|
|
160
|
+
'no-sequences': 'error',
|
|
161
|
+
'no-throw-literal': 'error',
|
|
162
|
+
'no-unmodified-loop-condition': 'error',
|
|
163
|
+
// Interface implementations may not require all args
|
|
164
|
+
'no-unused-vars': 'off',
|
|
165
|
+
'no-useless-call': 'error',
|
|
166
|
+
'no-useless-catch': 'error',
|
|
167
|
+
'no-useless-concat': 'error',
|
|
168
|
+
'no-useless-return': 'error',
|
|
169
|
+
'no-void': 'error',
|
|
170
|
+
'no-warning-comments': 'off', // TODO and FIXME are fine
|
|
171
|
+
'radix': ['error', 'always'],
|
|
172
|
+
'require-await': 'error',
|
|
173
|
+
'wrap-iife': ['error', 'inside'],
|
|
174
|
+
'yoda': ['error', 'never'],
|
|
175
|
+
// }}}
|
|
176
|
+
|
|
177
|
+
// "Variables" rules: {{{
|
|
178
|
+
'no-label-var': 'error',
|
|
179
|
+
'no-shadow-restricted-names': 'error',
|
|
180
|
+
'no-undef-init': 'off', // Sometimes necessary with hacky compiler casts
|
|
181
|
+
'no-undefined': 'off', // We use undefined in many places, legitimately
|
|
182
|
+
// Does not know when things are executed, false positives
|
|
183
|
+
'no-use-before-define': 'off',
|
|
184
|
+
// }}}
|
|
185
|
+
|
|
186
|
+
// "Stylistic Issues" rules: {{{
|
|
187
|
+
'array-bracket-newline': ['error', 'consistent'],
|
|
188
|
+
'block-spacing': ['error', 'always'],
|
|
189
|
+
'brace-style': ['error', '1tbs', {
|
|
190
|
+
allowSingleLine: true,
|
|
191
|
+
}],
|
|
192
|
+
'id-denylist': ['error', 'async'],
|
|
193
|
+
'lines-between-class-members': 'error',
|
|
194
|
+
'max-statements-per-line': ['error', {
|
|
195
|
+
max: 1,
|
|
196
|
+
}],
|
|
197
|
+
'new-parens': 'error',
|
|
198
|
+
'no-mixed-operators': ['error', {
|
|
199
|
+
groups: [['&', '|', '^', '~', '<<', '>>', '>>>', '&&', '||']],
|
|
200
|
+
allowSamePrecedence: false,
|
|
201
|
+
}],
|
|
202
|
+
'no-restricted-syntax': [
|
|
203
|
+
'error',
|
|
204
|
+
...commonNoRestrictedSyntax,
|
|
205
|
+
],
|
|
206
|
+
'no-whitespace-before-property': 'error',
|
|
207
|
+
// cspell:ignore nonblock
|
|
208
|
+
'nonblock-statement-body-position': ['error', 'below'],
|
|
209
|
+
'operator-assignment': 'error',
|
|
210
|
+
'spaced-comment': ['error', 'always', {
|
|
211
|
+
// Characters which may be glued to the start of a comment block, but
|
|
212
|
+
// which do not violate the rule. The "*" is for jsdoc's "/**" syntax,
|
|
213
|
+
// and the "!" is for the "/*!" of license headers which are passed
|
|
214
|
+
// verbatim through the compiler.
|
|
215
|
+
markers: ['*', '!'],
|
|
216
|
+
}],
|
|
217
|
+
// }}}
|
|
218
|
+
|
|
219
|
+
// "ECMAScript 6" rules: {{{
|
|
220
|
+
'arrow-spacing': 'error',
|
|
221
|
+
'no-useless-constructor': 'error',
|
|
222
|
+
'prefer-arrow-callback': 'error',
|
|
223
|
+
'prefer-const': ['error', {
|
|
224
|
+
ignoreReadBeforeAssign: true,
|
|
225
|
+
}],
|
|
226
|
+
// }}}
|
|
227
|
+
|
|
228
|
+
// jsdoc rules {{{
|
|
229
|
+
'jsdoc/check-tag-names': ['error', {
|
|
230
|
+
definedTags: ['exportDoc', 'exportInterface'],
|
|
231
|
+
}],
|
|
232
|
+
// Do not check license, authors, etc
|
|
233
|
+
'jsdoc/check-values': 'off',
|
|
234
|
+
// This should be checked by the compiler
|
|
235
|
+
'jsdoc/no-undefined-types': 'off',
|
|
236
|
+
// Some params/props/returns are self-explanatory
|
|
237
|
+
'jsdoc/require-param-description': 'off',
|
|
238
|
+
'jsdoc/require-property-description': 'off',
|
|
239
|
+
'jsdoc/require-returns-description': 'off',
|
|
240
|
+
'jsdoc/tag-lines': 'off',
|
|
241
|
+
// It throws syntax error on @suppress {missingReturn}
|
|
242
|
+
'jsdoc/valid-types': 'off',
|
|
243
|
+
// }}}
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
files: ['test/**/*.js'],
|
|
248
|
+
rules: {
|
|
249
|
+
'no-restricted-syntax': [
|
|
250
|
+
'error',
|
|
251
|
+
{
|
|
252
|
+
'selector': 'CallExpression[callee.name="beforeAll"] ' +
|
|
253
|
+
':matches(' +
|
|
254
|
+
'CallExpression[callee.property.name="createSpy"],' +
|
|
255
|
+
'CallExpression[callee.name="spyOn"])',
|
|
256
|
+
'message': 'Create spies in beforeEach, not beforeAll.',
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
'selector': testCall + ' > :function[params.length>0]',
|
|
260
|
+
'message': 'Use async instead of "done" in tests.',
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
'selector': testCall + ' > CallExpression',
|
|
264
|
+
'message': 'Use filterDescribe instead of checkAndRun calls',
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
'selector': 'CatchClause',
|
|
268
|
+
'message': 'Use expect.toThrow or expectAsync.toBeRejected',
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
'selector': 'CallExpression[callee.name=expect] >' +
|
|
272
|
+
'CallExpression[callee.property.name=count]' +
|
|
273
|
+
'[callee.object.property.name=calls]',
|
|
274
|
+
'message': 'Use expect.toHaveBeenCalledTimes',
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
'selector':
|
|
278
|
+
'CallExpression[callee.property.name=toHaveBeenCalledTimes] >' +
|
|
279
|
+
'Literal[value=0]',
|
|
280
|
+
'message': 'Use expect.not.toHaveBeenCalled',
|
|
281
|
+
},
|
|
282
|
+
...commonNoRestrictedSyntax,
|
|
283
|
+
],
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
files: [
|
|
288
|
+
// Closure requires using var in externs.
|
|
289
|
+
'ui/externs/*.js',
|
|
290
|
+
'externs/**/*.js',
|
|
291
|
+
'test/test/externs/*.js',
|
|
292
|
+
// Use var in load.js so it works in old browsers. We'll use
|
|
293
|
+
// compiled mode for the main library and the demo.
|
|
294
|
+
'demo/load.js',
|
|
295
|
+
],
|
|
296
|
+
rules: {
|
|
297
|
+
'no-restricted-syntax': 'off',
|
|
298
|
+
'no-var': 'off',
|
|
299
|
+
'jsdoc/require-returns-check': 'off',
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
files: [
|
|
304
|
+
// Test code should still use "arguments", since the alternate
|
|
305
|
+
// "rest parameter" syntax won't work in uncompiled code on IE.
|
|
306
|
+
'test/**/*.js',
|
|
307
|
+
// These two files use "arguments" to patch over functions. It
|
|
308
|
+
// is difficult to reason about whether or not these instances
|
|
309
|
+
// would always work with rest parameters, so just allow them to
|
|
310
|
+
'demo/log_section.js',
|
|
311
|
+
'lib/debug/asserts.js',
|
|
312
|
+
],
|
|
313
|
+
rules: {
|
|
314
|
+
'prefer-rest-params': 'off',
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
files: ['externs/**/*.js'],
|
|
319
|
+
rules: {
|
|
320
|
+
// Disable rules on useless constructors so we can use ES6 classes in
|
|
321
|
+
// externs.
|
|
322
|
+
'no-useless-constructor': 'off',
|
|
323
|
+
},
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
files: ['ui/externs/*.js', 'externs/**/*.js', 'test/test/externs/*.js'],
|
|
327
|
+
rules: {
|
|
328
|
+
// Externs naturally redeclare things eslint knows about.
|
|
329
|
+
'no-redeclare': 'off',
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
files: [
|
|
334
|
+
'demo/load.js',
|
|
335
|
+
'externs/**/*.js',
|
|
336
|
+
'test/**/*.js',
|
|
337
|
+
],
|
|
338
|
+
rules: {
|
|
339
|
+
// JSDoc is not strictly required in externs, tests, and in load.js.
|
|
340
|
+
'jsdoc/require-jsdoc': 'off',
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
];
|
package/externs/airplay.js
CHANGED
package/externs/audiotrack.js
CHANGED
package/externs/awesomplete.js
CHANGED
package/externs/cast-sdk-v2.js
CHANGED
|
@@ -93,7 +93,7 @@ cast.receiver.CastReceiverManager = class {
|
|
|
93
93
|
*/
|
|
94
94
|
getCastMessageBus(namespace, messageType) {}
|
|
95
95
|
|
|
96
|
-
/** @return {Array
|
|
96
|
+
/** @return {Array<string>} */
|
|
97
97
|
getSenders() {}
|
|
98
98
|
|
|
99
99
|
start() {}
|
|
@@ -268,7 +268,7 @@ chrome.cast.Session = class {
|
|
|
268
268
|
chrome.cast.SessionRequest = class {
|
|
269
269
|
/**
|
|
270
270
|
* @param {string} appId
|
|
271
|
-
* @param {Array
|
|
271
|
+
* @param {Array<Object>} capabilities
|
|
272
272
|
* @param {?number} timeout
|
|
273
273
|
* @param {boolean} androidReceiverCompatible
|
|
274
274
|
* @param {Object} credentialsData
|
package/externs/cmcd.js
CHANGED
|
@@ -31,7 +31,9 @@
|
|
|
31
31
|
* st: (string|undefined),
|
|
32
32
|
* v: (number|undefined),
|
|
33
33
|
* bs: (boolean|undefined),
|
|
34
|
-
* rtp: (number|undefined)
|
|
34
|
+
* rtp: (number|undefined),
|
|
35
|
+
* msd: (number|undefined),
|
|
36
|
+
* ltc: (number|undefined),
|
|
35
37
|
* }}
|
|
36
38
|
*
|
|
37
39
|
* @description
|
|
@@ -182,5 +184,18 @@
|
|
|
182
184
|
* delivery. The concept is that each client receives the throughput necessary
|
|
183
185
|
* for great performance, but no more. The CDN may not support the rtp
|
|
184
186
|
* feature.
|
|
187
|
+
*
|
|
188
|
+
* @property {number} msd
|
|
189
|
+
* The Media Start Delay represents in milliseconds the delay between the
|
|
190
|
+
* initiation of the playback request and the moment the first frame is
|
|
191
|
+
* rendered. This is sent only once when it is calculated.
|
|
192
|
+
*
|
|
193
|
+
* @property {number} ltc
|
|
194
|
+
* Live Stream Latency
|
|
195
|
+
*
|
|
196
|
+
* The time delta between when a given media timestamp was made available at
|
|
197
|
+
* the origin and when it was rendered by the client. The accuracy of this
|
|
198
|
+
* estimate is dependent on synchronization between the packager and the
|
|
199
|
+
* player clocks.
|
|
185
200
|
*/
|
|
186
201
|
var CmcdData;
|
package/externs/ima.js
CHANGED
|
@@ -96,7 +96,7 @@ google.ima.AdsManager = class {
|
|
|
96
96
|
resize(width, height, viewMode) {}
|
|
97
97
|
|
|
98
98
|
/**
|
|
99
|
-
* @return {!Array
|
|
99
|
+
* @return {!Array<number>}
|
|
100
100
|
*/
|
|
101
101
|
getCuePoints() {}
|
|
102
102
|
|
|
@@ -133,10 +133,10 @@ google.ima.AdsManagerLoadedEvent = class extends Event {
|
|
|
133
133
|
* bitrate: (number),
|
|
134
134
|
* enablePreloading: (boolean),
|
|
135
135
|
* loadVideoTimeout: (number),
|
|
136
|
-
* mimeTypes: (?Array
|
|
136
|
+
* mimeTypes: (?Array<string>),
|
|
137
137
|
* playAdsAfterTime: (number),
|
|
138
138
|
* restoreCustomPlaybackStateOnAdBreakComplete: (boolean),
|
|
139
|
-
* uiElements: (?Array
|
|
139
|
+
* uiElements: (?Array<string>),
|
|
140
140
|
* useStyledLinearAds: (boolean),
|
|
141
141
|
* useStyledNonLinearAds: (boolean),
|
|
142
142
|
* }}
|
|
@@ -161,7 +161,7 @@ google.ima.AdsManagerLoadedEvent = class extends Event {
|
|
|
161
161
|
* If loading takes longer than this timeout, the ad playback is canceled
|
|
162
162
|
* and the next ad in the pod plays, if available.
|
|
163
163
|
* Use -1 for the default of 8 seconds.
|
|
164
|
-
* @property {?Array
|
|
164
|
+
* @property {?Array<string>} mimeTypes
|
|
165
165
|
* Only supported for linear video mime types.
|
|
166
166
|
* If specified, the SDK will include media that matches
|
|
167
167
|
* the MIME type(s) specified in the list and exclude media.
|
|
@@ -180,7 +180,7 @@ google.ima.AdsManagerLoadedEvent = class extends Event {
|
|
|
180
180
|
* state after an ad break completes. This is setting is used primarily
|
|
181
181
|
* when the publisher passes in its content player to use for
|
|
182
182
|
* custom ad playback.
|
|
183
|
-
* @property {?Array
|
|
183
|
+
* @property {?Array<string>} uiElements
|
|
184
184
|
* Specifies whether the UI elements that should be displayed.
|
|
185
185
|
* The elements in this array are ignored for AdSense/AdX ads.
|
|
186
186
|
* @property {boolean} useStyledLinearAds
|
|
@@ -518,7 +518,7 @@ google.ima.dai.api.Ad = class {
|
|
|
518
518
|
/** @return {string} */
|
|
519
519
|
getCreativeAdId() {}
|
|
520
520
|
|
|
521
|
-
/** @return {!Array
|
|
521
|
+
/** @return {!Array<!google.ima.dai.api.CompanionAd>} */
|
|
522
522
|
getCompanionAds() {}
|
|
523
523
|
};
|
|
524
524
|
|
|
@@ -606,7 +606,7 @@ google.ima.dai.api.StreamData.prototype.adProgressData;
|
|
|
606
606
|
google.ima.dai.api.StreamData.prototype.url;
|
|
607
607
|
|
|
608
608
|
|
|
609
|
-
/** @type {!Array
|
|
609
|
+
/** @type {!Array<!google.ima.dai.api.CuePoint>} */
|
|
610
610
|
google.ima.dai.api.StreamData.prototype.cuepoints;
|
|
611
611
|
|
|
612
612
|
|
|
@@ -657,7 +657,7 @@ google.ima.dai.api.StreamRequest.prototype.format;
|
|
|
657
657
|
|
|
658
658
|
|
|
659
659
|
/**
|
|
660
|
-
* @type {Object
|
|
660
|
+
* @type {Object<
|
|
661
661
|
* google.ima.dai.api.OmidVerificationVendor,
|
|
662
662
|
* (google.ima.dai.api.OmidAccessMode | undefined)>}
|
|
663
663
|
*/
|
package/externs/isoboxer.js
CHANGED
|
@@ -57,8 +57,8 @@ var ISOBoxerUtils;
|
|
|
57
57
|
* type: string,
|
|
58
58
|
* size: number,
|
|
59
59
|
* _parent: ISOBox,
|
|
60
|
-
* boxes: !Array
|
|
61
|
-
* entry: !Array
|
|
60
|
+
* boxes: !Array<!ISOBox>,
|
|
61
|
+
* entry: !Array<!Object>,
|
|
62
62
|
* version: !number,
|
|
63
63
|
* flags: !number,
|
|
64
64
|
* sample_count: !number,
|
|
@@ -73,8 +73,8 @@ var ISOBoxerUtils;
|
|
|
73
73
|
* _procSubEntries: function(!ISOBox, !string, !number, !function(!ISOEntry)),
|
|
74
74
|
* major_brand: string,
|
|
75
75
|
* minor_version: number,
|
|
76
|
-
* compatible_brands: Array
|
|
77
|
-
* _data: Array
|
|
76
|
+
* compatible_brands: Array<string>,
|
|
77
|
+
* _data: Array<number>,
|
|
78
78
|
* creation_time: number,
|
|
79
79
|
* modification_time: number,
|
|
80
80
|
* timescale: number,
|
|
@@ -82,9 +82,9 @@ var ISOBoxerUtils;
|
|
|
82
82
|
* rate: number,
|
|
83
83
|
* volume: number,
|
|
84
84
|
* reserved1: number,
|
|
85
|
-
* reserved2: (Array
|
|
86
|
-
* matrix: Array
|
|
87
|
-
* pre_defined: (Array
|
|
85
|
+
* reserved2: (Array<number>|number),
|
|
86
|
+
* matrix: Array<number>,
|
|
87
|
+
* pre_defined: (Array<number>|number),
|
|
88
88
|
* next_track_ID: number,
|
|
89
89
|
* track_ID: number,
|
|
90
90
|
* layer: number,
|
|
@@ -95,20 +95,20 @@ var ISOBoxerUtils;
|
|
|
95
95
|
* language: string,
|
|
96
96
|
* handler_type: string,
|
|
97
97
|
* name: string,
|
|
98
|
-
* reserved: Array
|
|
98
|
+
* reserved: Array<number>,
|
|
99
99
|
* graphicsmode: number,
|
|
100
|
-
* opcolor: Array
|
|
100
|
+
* opcolor: Array<number>,
|
|
101
101
|
* balance: number,
|
|
102
|
-
* entries: Array
|
|
102
|
+
* entries: Array<!ISOEntry>,
|
|
103
103
|
* location: string,
|
|
104
104
|
* data_reference_index: number,
|
|
105
105
|
* pre_defined1: number,
|
|
106
|
-
* pre_defined2: Array
|
|
106
|
+
* pre_defined2: Array<number>,
|
|
107
107
|
* pre_defined3: number,
|
|
108
108
|
* horizresolution: number,
|
|
109
109
|
* vertresolution: number,
|
|
110
110
|
* frame_count: number,
|
|
111
|
-
* compressorname: Array
|
|
111
|
+
* compressorname: Array<number>,
|
|
112
112
|
* depth: number,
|
|
113
113
|
* config: Uint8Array,
|
|
114
114
|
* channelcount: number,
|
|
@@ -121,23 +121,23 @@ var ISOBoxerUtils;
|
|
|
121
121
|
* scheme_version: number,
|
|
122
122
|
* default_IsEncrypted: number,
|
|
123
123
|
* default_IV_size: number,
|
|
124
|
-
* default_KID: Array
|
|
124
|
+
* default_KID: Array<number>,
|
|
125
125
|
* default_sample_description_index: number,
|
|
126
126
|
* default_sample_duration: number,
|
|
127
127
|
* default_sample_size: number,
|
|
128
128
|
* default_sample_flags: number,
|
|
129
129
|
* baseMediaDecodeTime: number,
|
|
130
130
|
* usertype: (string|null|undefined),
|
|
131
|
-
* offset: Array
|
|
132
|
-
* sample_info_size: Array
|
|
131
|
+
* offset: Array<number>,
|
|
132
|
+
* sample_info_size: Array<number>,
|
|
133
133
|
* data_offset: number
|
|
134
134
|
* }}
|
|
135
135
|
* @property {boolean} _parsing
|
|
136
136
|
* @property {string} type
|
|
137
137
|
* @property {number} size
|
|
138
138
|
* @property {ISOBox} _parent
|
|
139
|
-
* @property {!Array
|
|
140
|
-
* @property {!Array
|
|
139
|
+
* @property {!Array<!ISOBox>} boxes
|
|
140
|
+
* @property {!Array<!ISOEntry>} entry
|
|
141
141
|
* @property {!number} version
|
|
142
142
|
* @property {!number} flags
|
|
143
143
|
* @property {!number} sample_count
|
|
@@ -148,12 +148,12 @@ var ISOBoxerUtils;
|
|
|
148
148
|
* @property {function(!string, !number, !string, !number)} _procFieldArray
|
|
149
149
|
* @property {function(!string, !number, !function(!ISOEntry))} _procEntries
|
|
150
150
|
* @property {function(!ISOBox, !string, !string, !number)} _procEntryField
|
|
151
|
-
* @property {function(!ISOBox, !string, !number, !function(!ISOEntry))
|
|
152
|
-
*
|
|
151
|
+
* @property {function(!ISOBox, !string, !number, !function(!ISOEntry))
|
|
152
|
+
* } _procSubEntries
|
|
153
153
|
* @property {string} major_brand
|
|
154
154
|
* @property {number} minor_version
|
|
155
|
-
* @property {Array
|
|
156
|
-
* @property {Array
|
|
155
|
+
* @property {Array<string>} compatible_brands
|
|
156
|
+
* @property {Array<number>} _data
|
|
157
157
|
* @property {number} creation_time
|
|
158
158
|
* @property {number} modification_time
|
|
159
159
|
* @property {number} timescale
|
|
@@ -161,9 +161,9 @@ var ISOBoxerUtils;
|
|
|
161
161
|
* @property {number} rate
|
|
162
162
|
* @property {number} volume
|
|
163
163
|
* @property {number} reserved1
|
|
164
|
-
* @property {Array
|
|
165
|
-
* @property {Array
|
|
166
|
-
* @property {Array
|
|
164
|
+
* @property {Array<number>|number} reserved2
|
|
165
|
+
* @property {Array<number>} matrix
|
|
166
|
+
* @property {Array<number>|number} pre_defined
|
|
167
167
|
* @property {number} next_track_ID
|
|
168
168
|
* @property {number} track_ID
|
|
169
169
|
* @property {number} layer
|
|
@@ -174,15 +174,15 @@ var ISOBoxerUtils;
|
|
|
174
174
|
* @property {string} language
|
|
175
175
|
* @property {string} handler_type
|
|
176
176
|
* @property {string} name
|
|
177
|
-
* @property {Array
|
|
177
|
+
* @property {Array<number>} reserved
|
|
178
178
|
* @property {number} graphicsmode
|
|
179
|
-
* @property {Array
|
|
179
|
+
* @property {Array<number>} opcolor
|
|
180
180
|
* @property {number} balance
|
|
181
|
-
* @property {Array
|
|
181
|
+
* @property {Array<!ISOEntry>} entries
|
|
182
182
|
* @property {string} location
|
|
183
183
|
* @property {number} data_reference_index
|
|
184
184
|
* @property {number} pre_defined1
|
|
185
|
-
* @property {Array
|
|
185
|
+
* @property {Array<number>} pre_defined2
|
|
186
186
|
* @property {number} pre_defined3
|
|
187
187
|
* @property {number} horizresolution
|
|
188
188
|
* @property {number} vertresolution
|
|
@@ -200,15 +200,15 @@ var ISOBoxerUtils;
|
|
|
200
200
|
* @property {number} scheme_version
|
|
201
201
|
* @property {number} default_IsEncrypted
|
|
202
202
|
* @property {number} default_IV_size
|
|
203
|
-
* @property {Array
|
|
203
|
+
* @property {Array<number>} default_KID
|
|
204
204
|
* @property {number} default_sample_description_index
|
|
205
205
|
* @property {number} default_sample_duration
|
|
206
206
|
* @property {number} default_sample_size
|
|
207
207
|
* @property {number} default_sample_flags
|
|
208
208
|
* @property {number} baseMediaDecodeTime
|
|
209
209
|
* @property {string|null|undefined} usertype
|
|
210
|
-
* @property {Array
|
|
211
|
-
* @property {Array
|
|
210
|
+
* @property {Array<number} offset
|
|
211
|
+
* @property {Array<number} sample_info_size
|
|
212
212
|
* @property {number} data_offset
|
|
213
213
|
* @const
|
|
214
214
|
*/
|