├── .gitignore
├── .idea
├── .gitignore
├── modules.xml
├── niplayer-plugin-dash.iml
├── vcs.xml
└── watcherTasks.xml
├── .npmignore
├── README.md
├── package.json
├── pnpm-lock.yaml
├── rollup.config.js
├── src
├── component
│ ├── loading.ts
│ └── menu.ts
├── event.ts
├── index.less
└── index.ts
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules/
2 | /dist/
3 | /example/
4 | pnpm-lock.yaml
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/niplayer-plugin-dash.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/watcherTasks.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | /example/
2 | node_modules
3 | /package/
4 | .gitignore
5 | .npmignore
6 | pnpm-lock.yaml
7 | rollup.config.js
8 | tsconfig.json
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## niplayer-plugin-dash
2 | NiPlayer视频播放器的dash流插件,安装此插件可以使得NiPlayer播放器支持dash流媒体协议
3 |
4 |
5 | ## 使用方法
6 | 1. 安装该插件
7 | ```bash
8 | npm i niplayer-plugin-dash
9 | ```
10 | 2. 导入并且在NiPlayer中注册该插件
11 | ```js
12 | import Player from "niplayer"
13 | import { FullScreen,FullPage } from "niplayer"
14 | import dash from "niplayer-plugin-dash"
15 |
16 | let player = new Player({
17 | container: document.getElementsByClassName("video-container")[0],
18 | plugins: [dash],
19 | rightBottomBarControllers: [FullPage,FullScreen]
20 | })
21 | // 注册完成之后NiPlayer就具备了接入DASH流媒体协议的能力,可以解析并且播放mpd文件描述的视频资源并且支持多种分辨率无缝切换
22 | player.attachSource("https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps.mpd")
23 | ```
24 | ## 效果预览
25 | 
26 | 
27 | 
28 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "niplayer-plugin-dash",
3 | "version": "1.1.0",
4 | "description": "dash, plugin, niplayer, danmaku",
5 | "main": "./dist/niplayer-plugin-dash.esm.js",
6 | "module": "./dist/niplayer-plugin-dash.esm.js",
7 | "types": "./dist/index.d.ts",
8 | "type": "module",
9 | "scripts": {
10 | "build": "rollup -c rollup.config.js"
11 | },
12 | "keywords": [],
13 | "author": "",
14 | "license": "ISC",
15 | "peerDependencies": {
16 | "niplayer": ">=1.4.0"
17 | },
18 | "devDependencies": {
19 | "@rollup/plugin-commonjs": "^24.0.1",
20 | "@rollup/plugin-node-resolve": "^15.0.2",
21 | "@rollup/plugin-typescript": "^11.1.0",
22 | "autoprefixer": "^10.4.14",
23 | "postcss": "^8.4.24",
24 | "postcss-pxtorem": "^6.0.0",
25 | "rollup": "^3.20.2",
26 | "rollup-plugin-postcss": "^4.0.2",
27 | "tslib": "^2.5.0",
28 | "typescript": "^5.0.3",
29 | "niplayer": "^1.4.6"
30 | },
31 | "dependencies": {
32 | "dashjs": "^4.6.0"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@rollup/plugin-commonjs': ^24.0.1
5 | '@rollup/plugin-node-resolve': ^15.0.2
6 | '@rollup/plugin-typescript': ^11.1.0
7 | autoprefixer: ^10.4.14
8 | dashjs: ^4.6.0
9 | niplayer: ^1.4.6
10 | postcss: ^8.4.24
11 | postcss-pxtorem: ^6.0.0
12 | rollup: ^3.20.2
13 | rollup-plugin-postcss: ^4.0.2
14 | tslib: ^2.5.0
15 | typescript: ^5.0.3
16 |
17 | dependencies:
18 | dashjs: 4.6.0
19 |
20 | devDependencies:
21 | '@rollup/plugin-commonjs': 24.0.1_rollup@3.20.2
22 | '@rollup/plugin-node-resolve': 15.0.2_rollup@3.20.2
23 | '@rollup/plugin-typescript': 11.1.0_arrnfnpvhdqbfckwo3rdb7mowy
24 | autoprefixer: 10.4.14_postcss@8.4.24
25 | niplayer: 1.4.6
26 | postcss: 8.4.24
27 | postcss-pxtorem: 6.0.0_postcss@8.4.24
28 | rollup: 3.20.2
29 | rollup-plugin-postcss: 4.0.2_postcss@8.4.24
30 | tslib: 2.5.0
31 | typescript: 5.0.3
32 |
33 | packages:
34 |
35 | /@jridgewell/sourcemap-codec/1.4.15:
36 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
37 | dev: true
38 |
39 | /@rollup/plugin-commonjs/24.0.1_rollup@3.20.2:
40 | resolution: {integrity: sha512-15LsiWRZk4eOGqvrJyu3z3DaBu5BhXIMeWnijSRvd8irrrg9SHpQ1pH+BUK4H6Z9wL9yOxZJMTLU+Au86XHxow==}
41 | engines: {node: '>=14.0.0'}
42 | peerDependencies:
43 | rollup: ^2.68.0||^3.0.0
44 | peerDependenciesMeta:
45 | rollup:
46 | optional: true
47 | dependencies:
48 | '@rollup/pluginutils': 5.0.2_rollup@3.20.2
49 | commondir: 1.0.1
50 | estree-walker: 2.0.2
51 | glob: 8.1.0
52 | is-reference: 1.2.1
53 | magic-string: 0.27.0
54 | rollup: 3.20.2
55 | dev: true
56 |
57 | /@rollup/plugin-node-resolve/15.0.2_rollup@3.20.2:
58 | resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==}
59 | engines: {node: '>=14.0.0'}
60 | peerDependencies:
61 | rollup: ^2.78.0||^3.0.0
62 | peerDependenciesMeta:
63 | rollup:
64 | optional: true
65 | dependencies:
66 | '@rollup/pluginutils': 5.0.2_rollup@3.20.2
67 | '@types/resolve': 1.20.2
68 | deepmerge: 4.3.1
69 | is-builtin-module: 3.2.1
70 | is-module: 1.0.0
71 | resolve: 1.22.1
72 | rollup: 3.20.2
73 | dev: true
74 |
75 | /@rollup/plugin-typescript/11.1.0_arrnfnpvhdqbfckwo3rdb7mowy:
76 | resolution: {integrity: sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==}
77 | engines: {node: '>=14.0.0'}
78 | peerDependencies:
79 | rollup: ^2.14.0||^3.0.0
80 | tslib: '*'
81 | typescript: '>=3.7.0'
82 | peerDependenciesMeta:
83 | rollup:
84 | optional: true
85 | tslib:
86 | optional: true
87 | dependencies:
88 | '@rollup/pluginutils': 5.0.2_rollup@3.20.2
89 | resolve: 1.22.1
90 | rollup: 3.20.2
91 | tslib: 2.5.0
92 | typescript: 5.0.3
93 | dev: true
94 |
95 | /@rollup/pluginutils/5.0.2_rollup@3.20.2:
96 | resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
97 | engines: {node: '>=14.0.0'}
98 | peerDependencies:
99 | rollup: ^1.20.0||^2.0.0||^3.0.0
100 | peerDependenciesMeta:
101 | rollup:
102 | optional: true
103 | dependencies:
104 | '@types/estree': 1.0.0
105 | estree-walker: 2.0.2
106 | picomatch: 2.3.1
107 | rollup: 3.20.2
108 | dev: true
109 |
110 | /@socket.io/component-emitter/3.1.0:
111 | resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==}
112 | dev: true
113 |
114 | /@trysound/sax/0.2.0:
115 | resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
116 | engines: {node: '>=10.13.0'}
117 | dev: true
118 |
119 | /@types/estree/1.0.0:
120 | resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==}
121 | dev: true
122 |
123 | /@types/resolve/1.20.2:
124 | resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
125 | dev: true
126 |
127 | /ansi-styles/4.3.0:
128 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
129 | engines: {node: '>=8'}
130 | dependencies:
131 | color-convert: 2.0.1
132 | dev: true
133 |
134 | /autoprefixer/10.4.14_postcss@8.4.24:
135 | resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
136 | engines: {node: ^10 || ^12 || >=14}
137 | hasBin: true
138 | peerDependencies:
139 | postcss: ^8.1.0
140 | dependencies:
141 | browserslist: 4.21.5
142 | caniuse-lite: 1.0.30001474
143 | fraction.js: 4.2.0
144 | normalize-range: 0.1.2
145 | picocolors: 1.0.0
146 | postcss: 8.4.24
147 | postcss-value-parser: 4.2.0
148 | dev: true
149 |
150 | /balanced-match/1.0.2:
151 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
152 | dev: true
153 |
154 | /bcp-47-match/1.0.3:
155 | resolution: {integrity: sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==}
156 | dev: false
157 |
158 | /bcp-47-normalize/1.1.1:
159 | resolution: {integrity: sha512-jWZ1Jdu3cs0EZdfCkS0UE9Gg01PtxnChjEBySeB+Zo6nkqtFfnvtoQQgP1qU1Oo4qgJgxhTI6Sf9y/pZIhPs0A==}
160 | dependencies:
161 | bcp-47: 1.0.8
162 | bcp-47-match: 1.0.3
163 | dev: false
164 |
165 | /bcp-47/1.0.8:
166 | resolution: {integrity: sha512-Y9y1QNBBtYtv7hcmoX0tR+tUNSFZGZ6OL6vKPObq8BbOhkCoyayF6ogfLTgAli/KuAEbsYHYUNq2AQuY6IuLag==}
167 | dependencies:
168 | is-alphabetical: 1.0.4
169 | is-alphanumerical: 1.0.4
170 | is-decimal: 1.0.4
171 | dev: false
172 |
173 | /be-full/0.1.4:
174 | resolution: {integrity: sha512-Nj3yBvk8rxhBhDv6YROxP9ynTA5H0l9lMjU+XqEAY4rTLJ68l2+n0geWCoeTqAxhOFedtbmYCpxFzMxMA8CnUg==}
175 | dev: true
176 |
177 | /boolbase/1.0.0:
178 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
179 | dev: true
180 |
181 | /brace-expansion/2.0.1:
182 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
183 | dependencies:
184 | balanced-match: 1.0.2
185 | dev: true
186 |
187 | /browserslist/4.21.5:
188 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
189 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
190 | hasBin: true
191 | dependencies:
192 | caniuse-lite: 1.0.30001474
193 | electron-to-chromium: 1.4.355
194 | node-releases: 2.0.10
195 | update-browserslist-db: 1.0.10_browserslist@4.21.5
196 | dev: true
197 |
198 | /builtin-modules/3.3.0:
199 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
200 | engines: {node: '>=6'}
201 | dev: true
202 |
203 | /caniuse-api/3.0.0:
204 | resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
205 | dependencies:
206 | browserslist: 4.21.5
207 | caniuse-lite: 1.0.30001474
208 | lodash.memoize: 4.1.2
209 | lodash.uniq: 4.5.0
210 | dev: true
211 |
212 | /caniuse-lite/1.0.30001474:
213 | resolution: {integrity: sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==}
214 | dev: true
215 |
216 | /chalk/4.1.2:
217 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
218 | engines: {node: '>=10'}
219 | dependencies:
220 | ansi-styles: 4.3.0
221 | supports-color: 7.2.0
222 | dev: true
223 |
224 | /codem-isoboxer/0.3.6:
225 | resolution: {integrity: sha512-LuO8/7LW6XuR5ERn1yavXAfodGRhuY2yP60JTZIw5yNYMCE5lUVbk3NFUCJxjnphQH+Xemp5hOGb1LgUXm00Xw==}
226 | dev: false
227 |
228 | /color-convert/2.0.1:
229 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
230 | engines: {node: '>=7.0.0'}
231 | dependencies:
232 | color-name: 1.1.4
233 | dev: true
234 |
235 | /color-name/1.1.4:
236 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
237 | dev: true
238 |
239 | /colord/2.9.3:
240 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
241 | dev: true
242 |
243 | /commander/7.2.0:
244 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
245 | engines: {node: '>= 10'}
246 | dev: true
247 |
248 | /commondir/1.0.1:
249 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
250 | dev: true
251 |
252 | /concat-with-sourcemaps/1.1.0:
253 | resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==}
254 | dependencies:
255 | source-map: 0.6.1
256 | dev: true
257 |
258 | /css-declaration-sorter/6.4.0_postcss@8.4.24:
259 | resolution: {integrity: sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==}
260 | engines: {node: ^10 || ^12 || >=14}
261 | peerDependencies:
262 | postcss: ^8.0.9
263 | dependencies:
264 | postcss: 8.4.24
265 | dev: true
266 |
267 | /css-select/4.3.0:
268 | resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
269 | dependencies:
270 | boolbase: 1.0.0
271 | css-what: 6.1.0
272 | domhandler: 4.3.1
273 | domutils: 2.8.0
274 | nth-check: 2.1.1
275 | dev: true
276 |
277 | /css-tree/1.1.3:
278 | resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
279 | engines: {node: '>=8.0.0'}
280 | dependencies:
281 | mdn-data: 2.0.14
282 | source-map: 0.6.1
283 | dev: true
284 |
285 | /css-what/6.1.0:
286 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
287 | engines: {node: '>= 6'}
288 | dev: true
289 |
290 | /cssesc/3.0.0:
291 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
292 | engines: {node: '>=4'}
293 | hasBin: true
294 | dev: true
295 |
296 | /cssnano-preset-default/5.2.14_postcss@8.4.24:
297 | resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==}
298 | engines: {node: ^10 || ^12 || >=14.0}
299 | peerDependencies:
300 | postcss: ^8.2.15
301 | dependencies:
302 | css-declaration-sorter: 6.4.0_postcss@8.4.24
303 | cssnano-utils: 3.1.0_postcss@8.4.24
304 | postcss: 8.4.24
305 | postcss-calc: 8.2.4_postcss@8.4.24
306 | postcss-colormin: 5.3.1_postcss@8.4.24
307 | postcss-convert-values: 5.1.3_postcss@8.4.24
308 | postcss-discard-comments: 5.1.2_postcss@8.4.24
309 | postcss-discard-duplicates: 5.1.0_postcss@8.4.24
310 | postcss-discard-empty: 5.1.1_postcss@8.4.24
311 | postcss-discard-overridden: 5.1.0_postcss@8.4.24
312 | postcss-merge-longhand: 5.1.7_postcss@8.4.24
313 | postcss-merge-rules: 5.1.4_postcss@8.4.24
314 | postcss-minify-font-values: 5.1.0_postcss@8.4.24
315 | postcss-minify-gradients: 5.1.1_postcss@8.4.24
316 | postcss-minify-params: 5.1.4_postcss@8.4.24
317 | postcss-minify-selectors: 5.2.1_postcss@8.4.24
318 | postcss-normalize-charset: 5.1.0_postcss@8.4.24
319 | postcss-normalize-display-values: 5.1.0_postcss@8.4.24
320 | postcss-normalize-positions: 5.1.1_postcss@8.4.24
321 | postcss-normalize-repeat-style: 5.1.1_postcss@8.4.24
322 | postcss-normalize-string: 5.1.0_postcss@8.4.24
323 | postcss-normalize-timing-functions: 5.1.0_postcss@8.4.24
324 | postcss-normalize-unicode: 5.1.1_postcss@8.4.24
325 | postcss-normalize-url: 5.1.0_postcss@8.4.24
326 | postcss-normalize-whitespace: 5.1.1_postcss@8.4.24
327 | postcss-ordered-values: 5.1.3_postcss@8.4.24
328 | postcss-reduce-initial: 5.1.2_postcss@8.4.24
329 | postcss-reduce-transforms: 5.1.0_postcss@8.4.24
330 | postcss-svgo: 5.1.0_postcss@8.4.24
331 | postcss-unique-selectors: 5.1.1_postcss@8.4.24
332 | dev: true
333 |
334 | /cssnano-utils/3.1.0_postcss@8.4.24:
335 | resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==}
336 | engines: {node: ^10 || ^12 || >=14.0}
337 | peerDependencies:
338 | postcss: ^8.2.15
339 | dependencies:
340 | postcss: 8.4.24
341 | dev: true
342 |
343 | /cssnano/5.1.15_postcss@8.4.24:
344 | resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==}
345 | engines: {node: ^10 || ^12 || >=14.0}
346 | peerDependencies:
347 | postcss: ^8.2.15
348 | dependencies:
349 | cssnano-preset-default: 5.2.14_postcss@8.4.24
350 | lilconfig: 2.1.0
351 | postcss: 8.4.24
352 | yaml: 1.10.2
353 | dev: true
354 |
355 | /csso/4.2.0:
356 | resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
357 | engines: {node: '>=8.0.0'}
358 | dependencies:
359 | css-tree: 1.1.3
360 | dev: true
361 |
362 | /dashjs/4.6.0:
363 | resolution: {integrity: sha512-0PDoSBM9PXb+Io0pRnw2CmO7aV9W8FC/BqBRNhLxzM3/e5Kfj7BLy0OWkkSB58ULg6Md6r+6jkGOTUhut/35rg==}
364 | dependencies:
365 | bcp-47-match: 1.0.3
366 | bcp-47-normalize: 1.1.1
367 | codem-isoboxer: 0.3.6
368 | es6-promise: 4.2.8
369 | fast-deep-equal: 2.0.1
370 | html-entities: 1.4.0
371 | imsc: 1.1.3
372 | localforage: 1.10.0
373 | path-browserify: 1.0.1
374 | ua-parser-js: 1.0.35
375 | dev: false
376 |
377 | /debug/4.3.4:
378 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
379 | engines: {node: '>=6.0'}
380 | peerDependencies:
381 | supports-color: '*'
382 | peerDependenciesMeta:
383 | supports-color:
384 | optional: true
385 | dependencies:
386 | ms: 2.1.2
387 | dev: true
388 |
389 | /deepmerge/4.3.1:
390 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
391 | engines: {node: '>=0.10.0'}
392 | dev: true
393 |
394 | /dom-serializer/1.4.1:
395 | resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
396 | dependencies:
397 | domelementtype: 2.3.0
398 | domhandler: 4.3.1
399 | entities: 2.2.0
400 | dev: true
401 |
402 | /domelementtype/2.3.0:
403 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
404 | dev: true
405 |
406 | /domhandler/4.3.1:
407 | resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
408 | engines: {node: '>= 4'}
409 | dependencies:
410 | domelementtype: 2.3.0
411 | dev: true
412 |
413 | /domutils/2.8.0:
414 | resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
415 | dependencies:
416 | dom-serializer: 1.4.1
417 | domelementtype: 2.3.0
418 | domhandler: 4.3.1
419 | dev: true
420 |
421 | /electron-to-chromium/1.4.355:
422 | resolution: {integrity: sha512-056hxzEE4l667YeOccgjhRr5fTiwZ6EIJ4FpzGps4k3YcS8iAhiaBYUBrv5E2LDQJsussscv9EEUwAYKnv+ZKg==}
423 | dev: true
424 |
425 | /engine.io-client/6.4.0:
426 | resolution: {integrity: sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==}
427 | dependencies:
428 | '@socket.io/component-emitter': 3.1.0
429 | debug: 4.3.4
430 | engine.io-parser: 5.0.7
431 | ws: 8.11.0
432 | xmlhttprequest-ssl: 2.0.0
433 | transitivePeerDependencies:
434 | - bufferutil
435 | - supports-color
436 | - utf-8-validate
437 | dev: true
438 |
439 | /engine.io-parser/5.0.7:
440 | resolution: {integrity: sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==}
441 | engines: {node: '>=10.0.0'}
442 | dev: true
443 |
444 | /entities/2.2.0:
445 | resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
446 | dev: true
447 |
448 | /es6-promise/4.2.8:
449 | resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
450 | dev: false
451 |
452 | /escalade/3.1.1:
453 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
454 | engines: {node: '>=6'}
455 | dev: true
456 |
457 | /estree-walker/0.6.1:
458 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
459 | dev: true
460 |
461 | /estree-walker/2.0.2:
462 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
463 | dev: true
464 |
465 | /eventemitter3/4.0.7:
466 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
467 | dev: true
468 |
469 | /fast-deep-equal/2.0.1:
470 | resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==}
471 | dev: false
472 |
473 | /fraction.js/4.2.0:
474 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
475 | dev: true
476 |
477 | /fs.realpath/1.0.0:
478 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
479 | dev: true
480 |
481 | /fsevents/2.3.2:
482 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
483 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
484 | os: [darwin]
485 | requiresBuild: true
486 | dev: true
487 | optional: true
488 |
489 | /function-bind/1.1.1:
490 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
491 | dev: true
492 |
493 | /generic-names/4.0.0:
494 | resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==}
495 | dependencies:
496 | loader-utils: 3.2.1
497 | dev: true
498 |
499 | /glob/8.1.0:
500 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
501 | engines: {node: '>=12'}
502 | dependencies:
503 | fs.realpath: 1.0.0
504 | inflight: 1.0.6
505 | inherits: 2.0.4
506 | minimatch: 5.1.6
507 | once: 1.4.0
508 | dev: true
509 |
510 | /has-flag/4.0.0:
511 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
512 | engines: {node: '>=8'}
513 | dev: true
514 |
515 | /has/1.0.3:
516 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
517 | engines: {node: '>= 0.4.0'}
518 | dependencies:
519 | function-bind: 1.1.1
520 | dev: true
521 |
522 | /html-entities/1.4.0:
523 | resolution: {integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==}
524 | dev: false
525 |
526 | /icss-replace-symbols/1.1.0:
527 | resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==}
528 | dev: true
529 |
530 | /icss-utils/5.1.0_postcss@8.4.24:
531 | resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
532 | engines: {node: ^10 || ^12 || >= 14}
533 | peerDependencies:
534 | postcss: ^8.1.0
535 | dependencies:
536 | postcss: 8.4.24
537 | dev: true
538 |
539 | /immediate/3.0.6:
540 | resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
541 | dev: false
542 |
543 | /import-cwd/3.0.0:
544 | resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==}
545 | engines: {node: '>=8'}
546 | dependencies:
547 | import-from: 3.0.0
548 | dev: true
549 |
550 | /import-from/3.0.0:
551 | resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==}
552 | engines: {node: '>=8'}
553 | dependencies:
554 | resolve-from: 5.0.0
555 | dev: true
556 |
557 | /imsc/1.1.3:
558 | resolution: {integrity: sha512-IY0hMkVTNoqoYwKEp5UvNNKp/A5jeJUOrIO7judgOyhHT+xC6PA4VBOMAOhdtAYbMRHx9DTgI8p6Z6jhYQPFDA==}
559 | dependencies:
560 | sax: 1.2.1
561 | dev: false
562 |
563 | /inflight/1.0.6:
564 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
565 | dependencies:
566 | once: 1.4.0
567 | wrappy: 1.0.2
568 | dev: true
569 |
570 | /inherits/2.0.4:
571 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
572 | dev: true
573 |
574 | /is-alphabetical/1.0.4:
575 | resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
576 | dev: false
577 |
578 | /is-alphanumerical/1.0.4:
579 | resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
580 | dependencies:
581 | is-alphabetical: 1.0.4
582 | is-decimal: 1.0.4
583 | dev: false
584 |
585 | /is-builtin-module/3.2.1:
586 | resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
587 | engines: {node: '>=6'}
588 | dependencies:
589 | builtin-modules: 3.3.0
590 | dev: true
591 |
592 | /is-core-module/2.11.0:
593 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
594 | dependencies:
595 | has: 1.0.3
596 | dev: true
597 |
598 | /is-decimal/1.0.4:
599 | resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
600 | dev: false
601 |
602 | /is-module/1.0.0:
603 | resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
604 | dev: true
605 |
606 | /is-reference/1.2.1:
607 | resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
608 | dependencies:
609 | '@types/estree': 1.0.0
610 | dev: true
611 |
612 | /lie/3.1.1:
613 | resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==}
614 | dependencies:
615 | immediate: 3.0.6
616 | dev: false
617 |
618 | /lilconfig/2.1.0:
619 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
620 | engines: {node: '>=10'}
621 | dev: true
622 |
623 | /loader-utils/3.2.1:
624 | resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==}
625 | engines: {node: '>= 12.13.0'}
626 | dev: true
627 |
628 | /localforage/1.10.0:
629 | resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==}
630 | dependencies:
631 | lie: 3.1.1
632 | dev: false
633 |
634 | /lodash.camelcase/4.3.0:
635 | resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
636 | dev: true
637 |
638 | /lodash.memoize/4.1.2:
639 | resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
640 | dev: true
641 |
642 | /lodash.uniq/4.5.0:
643 | resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
644 | dev: true
645 |
646 | /magic-string/0.27.0:
647 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
648 | engines: {node: '>=12'}
649 | dependencies:
650 | '@jridgewell/sourcemap-codec': 1.4.15
651 | dev: true
652 |
653 | /mdn-data/2.0.14:
654 | resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
655 | dev: true
656 |
657 | /minimatch/5.1.6:
658 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
659 | engines: {node: '>=10'}
660 | dependencies:
661 | brace-expansion: 2.0.1
662 | dev: true
663 |
664 | /mp4box/0.5.2:
665 | resolution: {integrity: sha512-zRmGlvxy+YdW3Dmt+TR4xPHynbxwXtAQDTN/Fo9N3LMxaUlB2C5KmZpzYyGKy4c7k4Jf3RCR0A2pm9SZELOLXw==}
666 | dev: true
667 |
668 | /ms/2.1.2:
669 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
670 | dev: true
671 |
672 | /nanoid/3.3.6:
673 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
674 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
675 | hasBin: true
676 | dev: true
677 |
678 | /niplayer/1.4.6:
679 | resolution: {integrity: sha512-SETURDrh1hQUFYszsZMzrYQ5y6RKL6HbTUUZr6Xq52+3FBpTVIQHvZl+QUgm2B6sRx1ACAJHkDK4DmV/r85V9w==}
680 | dependencies:
681 | be-full: 0.1.4
682 | mp4box: 0.5.2
683 | ntouch.js: 1.1.0
684 | socket.io-client: 4.6.0
685 | transitivePeerDependencies:
686 | - bufferutil
687 | - supports-color
688 | - utf-8-validate
689 | dev: true
690 |
691 | /node-releases/2.0.10:
692 | resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
693 | dev: true
694 |
695 | /normalize-range/0.1.2:
696 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
697 | engines: {node: '>=0.10.0'}
698 | dev: true
699 |
700 | /normalize-url/6.1.0:
701 | resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
702 | engines: {node: '>=10'}
703 | dev: true
704 |
705 | /nth-check/2.1.1:
706 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
707 | dependencies:
708 | boolbase: 1.0.0
709 | dev: true
710 |
711 | /ntouch.js/1.1.0:
712 | resolution: {integrity: sha512-sCfGpoN0NRsMXiKPfo2xaeuJRVcBlDD/vz61Zv7Ga9c0/M0f2HzU2NoeQ/5OsGts/o/BYQvzXr1op/6YvD4UHA==}
713 | dev: true
714 |
715 | /once/1.4.0:
716 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
717 | dependencies:
718 | wrappy: 1.0.2
719 | dev: true
720 |
721 | /p-finally/1.0.0:
722 | resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
723 | engines: {node: '>=4'}
724 | dev: true
725 |
726 | /p-queue/6.6.2:
727 | resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
728 | engines: {node: '>=8'}
729 | dependencies:
730 | eventemitter3: 4.0.7
731 | p-timeout: 3.2.0
732 | dev: true
733 |
734 | /p-timeout/3.2.0:
735 | resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
736 | engines: {node: '>=8'}
737 | dependencies:
738 | p-finally: 1.0.0
739 | dev: true
740 |
741 | /path-browserify/1.0.1:
742 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
743 | dev: false
744 |
745 | /path-parse/1.0.7:
746 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
747 | dev: true
748 |
749 | /picocolors/1.0.0:
750 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
751 | dev: true
752 |
753 | /picomatch/2.3.1:
754 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
755 | engines: {node: '>=8.6'}
756 | dev: true
757 |
758 | /pify/5.0.0:
759 | resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==}
760 | engines: {node: '>=10'}
761 | dev: true
762 |
763 | /postcss-calc/8.2.4_postcss@8.4.24:
764 | resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==}
765 | peerDependencies:
766 | postcss: ^8.2.2
767 | dependencies:
768 | postcss: 8.4.24
769 | postcss-selector-parser: 6.0.11
770 | postcss-value-parser: 4.2.0
771 | dev: true
772 |
773 | /postcss-colormin/5.3.1_postcss@8.4.24:
774 | resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==}
775 | engines: {node: ^10 || ^12 || >=14.0}
776 | peerDependencies:
777 | postcss: ^8.2.15
778 | dependencies:
779 | browserslist: 4.21.5
780 | caniuse-api: 3.0.0
781 | colord: 2.9.3
782 | postcss: 8.4.24
783 | postcss-value-parser: 4.2.0
784 | dev: true
785 |
786 | /postcss-convert-values/5.1.3_postcss@8.4.24:
787 | resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==}
788 | engines: {node: ^10 || ^12 || >=14.0}
789 | peerDependencies:
790 | postcss: ^8.2.15
791 | dependencies:
792 | browserslist: 4.21.5
793 | postcss: 8.4.24
794 | postcss-value-parser: 4.2.0
795 | dev: true
796 |
797 | /postcss-discard-comments/5.1.2_postcss@8.4.24:
798 | resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==}
799 | engines: {node: ^10 || ^12 || >=14.0}
800 | peerDependencies:
801 | postcss: ^8.2.15
802 | dependencies:
803 | postcss: 8.4.24
804 | dev: true
805 |
806 | /postcss-discard-duplicates/5.1.0_postcss@8.4.24:
807 | resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==}
808 | engines: {node: ^10 || ^12 || >=14.0}
809 | peerDependencies:
810 | postcss: ^8.2.15
811 | dependencies:
812 | postcss: 8.4.24
813 | dev: true
814 |
815 | /postcss-discard-empty/5.1.1_postcss@8.4.24:
816 | resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==}
817 | engines: {node: ^10 || ^12 || >=14.0}
818 | peerDependencies:
819 | postcss: ^8.2.15
820 | dependencies:
821 | postcss: 8.4.24
822 | dev: true
823 |
824 | /postcss-discard-overridden/5.1.0_postcss@8.4.24:
825 | resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==}
826 | engines: {node: ^10 || ^12 || >=14.0}
827 | peerDependencies:
828 | postcss: ^8.2.15
829 | dependencies:
830 | postcss: 8.4.24
831 | dev: true
832 |
833 | /postcss-load-config/3.1.4_postcss@8.4.24:
834 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
835 | engines: {node: '>= 10'}
836 | peerDependencies:
837 | postcss: '>=8.0.9'
838 | ts-node: '>=9.0.0'
839 | peerDependenciesMeta:
840 | postcss:
841 | optional: true
842 | ts-node:
843 | optional: true
844 | dependencies:
845 | lilconfig: 2.1.0
846 | postcss: 8.4.24
847 | yaml: 1.10.2
848 | dev: true
849 |
850 | /postcss-merge-longhand/5.1.7_postcss@8.4.24:
851 | resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==}
852 | engines: {node: ^10 || ^12 || >=14.0}
853 | peerDependencies:
854 | postcss: ^8.2.15
855 | dependencies:
856 | postcss: 8.4.24
857 | postcss-value-parser: 4.2.0
858 | stylehacks: 5.1.1_postcss@8.4.24
859 | dev: true
860 |
861 | /postcss-merge-rules/5.1.4_postcss@8.4.24:
862 | resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==}
863 | engines: {node: ^10 || ^12 || >=14.0}
864 | peerDependencies:
865 | postcss: ^8.2.15
866 | dependencies:
867 | browserslist: 4.21.5
868 | caniuse-api: 3.0.0
869 | cssnano-utils: 3.1.0_postcss@8.4.24
870 | postcss: 8.4.24
871 | postcss-selector-parser: 6.0.11
872 | dev: true
873 |
874 | /postcss-minify-font-values/5.1.0_postcss@8.4.24:
875 | resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==}
876 | engines: {node: ^10 || ^12 || >=14.0}
877 | peerDependencies:
878 | postcss: ^8.2.15
879 | dependencies:
880 | postcss: 8.4.24
881 | postcss-value-parser: 4.2.0
882 | dev: true
883 |
884 | /postcss-minify-gradients/5.1.1_postcss@8.4.24:
885 | resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==}
886 | engines: {node: ^10 || ^12 || >=14.0}
887 | peerDependencies:
888 | postcss: ^8.2.15
889 | dependencies:
890 | colord: 2.9.3
891 | cssnano-utils: 3.1.0_postcss@8.4.24
892 | postcss: 8.4.24
893 | postcss-value-parser: 4.2.0
894 | dev: true
895 |
896 | /postcss-minify-params/5.1.4_postcss@8.4.24:
897 | resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==}
898 | engines: {node: ^10 || ^12 || >=14.0}
899 | peerDependencies:
900 | postcss: ^8.2.15
901 | dependencies:
902 | browserslist: 4.21.5
903 | cssnano-utils: 3.1.0_postcss@8.4.24
904 | postcss: 8.4.24
905 | postcss-value-parser: 4.2.0
906 | dev: true
907 |
908 | /postcss-minify-selectors/5.2.1_postcss@8.4.24:
909 | resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==}
910 | engines: {node: ^10 || ^12 || >=14.0}
911 | peerDependencies:
912 | postcss: ^8.2.15
913 | dependencies:
914 | postcss: 8.4.24
915 | postcss-selector-parser: 6.0.11
916 | dev: true
917 |
918 | /postcss-modules-extract-imports/3.0.0_postcss@8.4.24:
919 | resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
920 | engines: {node: ^10 || ^12 || >= 14}
921 | peerDependencies:
922 | postcss: ^8.1.0
923 | dependencies:
924 | postcss: 8.4.24
925 | dev: true
926 |
927 | /postcss-modules-local-by-default/4.0.0_postcss@8.4.24:
928 | resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==}
929 | engines: {node: ^10 || ^12 || >= 14}
930 | peerDependencies:
931 | postcss: ^8.1.0
932 | dependencies:
933 | icss-utils: 5.1.0_postcss@8.4.24
934 | postcss: 8.4.24
935 | postcss-selector-parser: 6.0.11
936 | postcss-value-parser: 4.2.0
937 | dev: true
938 |
939 | /postcss-modules-scope/3.0.0_postcss@8.4.24:
940 | resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==}
941 | engines: {node: ^10 || ^12 || >= 14}
942 | peerDependencies:
943 | postcss: ^8.1.0
944 | dependencies:
945 | postcss: 8.4.24
946 | postcss-selector-parser: 6.0.11
947 | dev: true
948 |
949 | /postcss-modules-values/4.0.0_postcss@8.4.24:
950 | resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
951 | engines: {node: ^10 || ^12 || >= 14}
952 | peerDependencies:
953 | postcss: ^8.1.0
954 | dependencies:
955 | icss-utils: 5.1.0_postcss@8.4.24
956 | postcss: 8.4.24
957 | dev: true
958 |
959 | /postcss-modules/4.3.1_postcss@8.4.24:
960 | resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==}
961 | peerDependencies:
962 | postcss: ^8.0.0
963 | dependencies:
964 | generic-names: 4.0.0
965 | icss-replace-symbols: 1.1.0
966 | lodash.camelcase: 4.3.0
967 | postcss: 8.4.24
968 | postcss-modules-extract-imports: 3.0.0_postcss@8.4.24
969 | postcss-modules-local-by-default: 4.0.0_postcss@8.4.24
970 | postcss-modules-scope: 3.0.0_postcss@8.4.24
971 | postcss-modules-values: 4.0.0_postcss@8.4.24
972 | string-hash: 1.1.3
973 | dev: true
974 |
975 | /postcss-normalize-charset/5.1.0_postcss@8.4.24:
976 | resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==}
977 | engines: {node: ^10 || ^12 || >=14.0}
978 | peerDependencies:
979 | postcss: ^8.2.15
980 | dependencies:
981 | postcss: 8.4.24
982 | dev: true
983 |
984 | /postcss-normalize-display-values/5.1.0_postcss@8.4.24:
985 | resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==}
986 | engines: {node: ^10 || ^12 || >=14.0}
987 | peerDependencies:
988 | postcss: ^8.2.15
989 | dependencies:
990 | postcss: 8.4.24
991 | postcss-value-parser: 4.2.0
992 | dev: true
993 |
994 | /postcss-normalize-positions/5.1.1_postcss@8.4.24:
995 | resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==}
996 | engines: {node: ^10 || ^12 || >=14.0}
997 | peerDependencies:
998 | postcss: ^8.2.15
999 | dependencies:
1000 | postcss: 8.4.24
1001 | postcss-value-parser: 4.2.0
1002 | dev: true
1003 |
1004 | /postcss-normalize-repeat-style/5.1.1_postcss@8.4.24:
1005 | resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==}
1006 | engines: {node: ^10 || ^12 || >=14.0}
1007 | peerDependencies:
1008 | postcss: ^8.2.15
1009 | dependencies:
1010 | postcss: 8.4.24
1011 | postcss-value-parser: 4.2.0
1012 | dev: true
1013 |
1014 | /postcss-normalize-string/5.1.0_postcss@8.4.24:
1015 | resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==}
1016 | engines: {node: ^10 || ^12 || >=14.0}
1017 | peerDependencies:
1018 | postcss: ^8.2.15
1019 | dependencies:
1020 | postcss: 8.4.24
1021 | postcss-value-parser: 4.2.0
1022 | dev: true
1023 |
1024 | /postcss-normalize-timing-functions/5.1.0_postcss@8.4.24:
1025 | resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==}
1026 | engines: {node: ^10 || ^12 || >=14.0}
1027 | peerDependencies:
1028 | postcss: ^8.2.15
1029 | dependencies:
1030 | postcss: 8.4.24
1031 | postcss-value-parser: 4.2.0
1032 | dev: true
1033 |
1034 | /postcss-normalize-unicode/5.1.1_postcss@8.4.24:
1035 | resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==}
1036 | engines: {node: ^10 || ^12 || >=14.0}
1037 | peerDependencies:
1038 | postcss: ^8.2.15
1039 | dependencies:
1040 | browserslist: 4.21.5
1041 | postcss: 8.4.24
1042 | postcss-value-parser: 4.2.0
1043 | dev: true
1044 |
1045 | /postcss-normalize-url/5.1.0_postcss@8.4.24:
1046 | resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==}
1047 | engines: {node: ^10 || ^12 || >=14.0}
1048 | peerDependencies:
1049 | postcss: ^8.2.15
1050 | dependencies:
1051 | normalize-url: 6.1.0
1052 | postcss: 8.4.24
1053 | postcss-value-parser: 4.2.0
1054 | dev: true
1055 |
1056 | /postcss-normalize-whitespace/5.1.1_postcss@8.4.24:
1057 | resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==}
1058 | engines: {node: ^10 || ^12 || >=14.0}
1059 | peerDependencies:
1060 | postcss: ^8.2.15
1061 | dependencies:
1062 | postcss: 8.4.24
1063 | postcss-value-parser: 4.2.0
1064 | dev: true
1065 |
1066 | /postcss-ordered-values/5.1.3_postcss@8.4.24:
1067 | resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==}
1068 | engines: {node: ^10 || ^12 || >=14.0}
1069 | peerDependencies:
1070 | postcss: ^8.2.15
1071 | dependencies:
1072 | cssnano-utils: 3.1.0_postcss@8.4.24
1073 | postcss: 8.4.24
1074 | postcss-value-parser: 4.2.0
1075 | dev: true
1076 |
1077 | /postcss-pxtorem/6.0.0_postcss@8.4.24:
1078 | resolution: {integrity: sha512-ZRXrD7MLLjLk2RNGV6UA4f5Y7gy+a/j1EqjAfp9NdcNYVjUMvg5HTYduTjSkKBkRkfqbg/iKrjMO70V4g1LZeg==}
1079 | peerDependencies:
1080 | postcss: ^8.0.0
1081 | dependencies:
1082 | postcss: 8.4.24
1083 | dev: true
1084 |
1085 | /postcss-reduce-initial/5.1.2_postcss@8.4.24:
1086 | resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==}
1087 | engines: {node: ^10 || ^12 || >=14.0}
1088 | peerDependencies:
1089 | postcss: ^8.2.15
1090 | dependencies:
1091 | browserslist: 4.21.5
1092 | caniuse-api: 3.0.0
1093 | postcss: 8.4.24
1094 | dev: true
1095 |
1096 | /postcss-reduce-transforms/5.1.0_postcss@8.4.24:
1097 | resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==}
1098 | engines: {node: ^10 || ^12 || >=14.0}
1099 | peerDependencies:
1100 | postcss: ^8.2.15
1101 | dependencies:
1102 | postcss: 8.4.24
1103 | postcss-value-parser: 4.2.0
1104 | dev: true
1105 |
1106 | /postcss-selector-parser/6.0.11:
1107 | resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==}
1108 | engines: {node: '>=4'}
1109 | dependencies:
1110 | cssesc: 3.0.0
1111 | util-deprecate: 1.0.2
1112 | dev: true
1113 |
1114 | /postcss-svgo/5.1.0_postcss@8.4.24:
1115 | resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==}
1116 | engines: {node: ^10 || ^12 || >=14.0}
1117 | peerDependencies:
1118 | postcss: ^8.2.15
1119 | dependencies:
1120 | postcss: 8.4.24
1121 | postcss-value-parser: 4.2.0
1122 | svgo: 2.8.0
1123 | dev: true
1124 |
1125 | /postcss-unique-selectors/5.1.1_postcss@8.4.24:
1126 | resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==}
1127 | engines: {node: ^10 || ^12 || >=14.0}
1128 | peerDependencies:
1129 | postcss: ^8.2.15
1130 | dependencies:
1131 | postcss: 8.4.24
1132 | postcss-selector-parser: 6.0.11
1133 | dev: true
1134 |
1135 | /postcss-value-parser/4.2.0:
1136 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1137 | dev: true
1138 |
1139 | /postcss/8.4.24:
1140 | resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==}
1141 | engines: {node: ^10 || ^12 || >=14}
1142 | dependencies:
1143 | nanoid: 3.3.6
1144 | picocolors: 1.0.0
1145 | source-map-js: 1.0.2
1146 | dev: true
1147 |
1148 | /promise.series/0.2.0:
1149 | resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==}
1150 | engines: {node: '>=0.12'}
1151 | dev: true
1152 |
1153 | /resolve-from/5.0.0:
1154 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1155 | engines: {node: '>=8'}
1156 | dev: true
1157 |
1158 | /resolve/1.22.1:
1159 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
1160 | hasBin: true
1161 | dependencies:
1162 | is-core-module: 2.11.0
1163 | path-parse: 1.0.7
1164 | supports-preserve-symlinks-flag: 1.0.0
1165 | dev: true
1166 |
1167 | /rollup-plugin-postcss/4.0.2_postcss@8.4.24:
1168 | resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==}
1169 | engines: {node: '>=10'}
1170 | peerDependencies:
1171 | postcss: 8.x
1172 | dependencies:
1173 | chalk: 4.1.2
1174 | concat-with-sourcemaps: 1.1.0
1175 | cssnano: 5.1.15_postcss@8.4.24
1176 | import-cwd: 3.0.0
1177 | p-queue: 6.6.2
1178 | pify: 5.0.0
1179 | postcss: 8.4.24
1180 | postcss-load-config: 3.1.4_postcss@8.4.24
1181 | postcss-modules: 4.3.1_postcss@8.4.24
1182 | promise.series: 0.2.0
1183 | resolve: 1.22.1
1184 | rollup-pluginutils: 2.8.2
1185 | safe-identifier: 0.4.2
1186 | style-inject: 0.3.0
1187 | transitivePeerDependencies:
1188 | - ts-node
1189 | dev: true
1190 |
1191 | /rollup-pluginutils/2.8.2:
1192 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
1193 | dependencies:
1194 | estree-walker: 0.6.1
1195 | dev: true
1196 |
1197 | /rollup/3.20.2:
1198 | resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==}
1199 | engines: {node: '>=14.18.0', npm: '>=8.0.0'}
1200 | hasBin: true
1201 | optionalDependencies:
1202 | fsevents: 2.3.2
1203 | dev: true
1204 |
1205 | /safe-identifier/0.4.2:
1206 | resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==}
1207 | dev: true
1208 |
1209 | /sax/1.2.1:
1210 | resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==}
1211 | dev: false
1212 |
1213 | /socket.io-client/4.6.0:
1214 | resolution: {integrity: sha512-2XOp18xnGghUICSd5ziUIS4rB0dhr6S8OvAps8y+HhOjFQlqGcf+FIh6fCIsKKZyWFxJeFPrZRNPGsHDTsz1Ug==}
1215 | engines: {node: '>=10.0.0'}
1216 | dependencies:
1217 | '@socket.io/component-emitter': 3.1.0
1218 | debug: 4.3.4
1219 | engine.io-client: 6.4.0
1220 | socket.io-parser: 4.2.4
1221 | transitivePeerDependencies:
1222 | - bufferutil
1223 | - supports-color
1224 | - utf-8-validate
1225 | dev: true
1226 |
1227 | /socket.io-parser/4.2.4:
1228 | resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==}
1229 | engines: {node: '>=10.0.0'}
1230 | dependencies:
1231 | '@socket.io/component-emitter': 3.1.0
1232 | debug: 4.3.4
1233 | transitivePeerDependencies:
1234 | - supports-color
1235 | dev: true
1236 |
1237 | /source-map-js/1.0.2:
1238 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1239 | engines: {node: '>=0.10.0'}
1240 | dev: true
1241 |
1242 | /source-map/0.6.1:
1243 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1244 | engines: {node: '>=0.10.0'}
1245 | dev: true
1246 |
1247 | /stable/0.1.8:
1248 | resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
1249 | deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
1250 | dev: true
1251 |
1252 | /string-hash/1.1.3:
1253 | resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==}
1254 | dev: true
1255 |
1256 | /style-inject/0.3.0:
1257 | resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==}
1258 | dev: true
1259 |
1260 | /stylehacks/5.1.1_postcss@8.4.24:
1261 | resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
1262 | engines: {node: ^10 || ^12 || >=14.0}
1263 | peerDependencies:
1264 | postcss: ^8.2.15
1265 | dependencies:
1266 | browserslist: 4.21.5
1267 | postcss: 8.4.24
1268 | postcss-selector-parser: 6.0.11
1269 | dev: true
1270 |
1271 | /supports-color/7.2.0:
1272 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1273 | engines: {node: '>=8'}
1274 | dependencies:
1275 | has-flag: 4.0.0
1276 | dev: true
1277 |
1278 | /supports-preserve-symlinks-flag/1.0.0:
1279 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1280 | engines: {node: '>= 0.4'}
1281 | dev: true
1282 |
1283 | /svgo/2.8.0:
1284 | resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
1285 | engines: {node: '>=10.13.0'}
1286 | hasBin: true
1287 | dependencies:
1288 | '@trysound/sax': 0.2.0
1289 | commander: 7.2.0
1290 | css-select: 4.3.0
1291 | css-tree: 1.1.3
1292 | csso: 4.2.0
1293 | picocolors: 1.0.0
1294 | stable: 0.1.8
1295 | dev: true
1296 |
1297 | /tslib/2.5.0:
1298 | resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
1299 | dev: true
1300 |
1301 | /typescript/5.0.3:
1302 | resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==}
1303 | engines: {node: '>=12.20'}
1304 | hasBin: true
1305 | dev: true
1306 |
1307 | /ua-parser-js/1.0.35:
1308 | resolution: {integrity: sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==}
1309 | dev: false
1310 |
1311 | /update-browserslist-db/1.0.10_browserslist@4.21.5:
1312 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==}
1313 | hasBin: true
1314 | peerDependencies:
1315 | browserslist: '>= 4.21.0'
1316 | dependencies:
1317 | browserslist: 4.21.5
1318 | escalade: 3.1.1
1319 | picocolors: 1.0.0
1320 | dev: true
1321 |
1322 | /util-deprecate/1.0.2:
1323 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1324 | dev: true
1325 |
1326 | /wrappy/1.0.2:
1327 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1328 | dev: true
1329 |
1330 | /ws/8.11.0:
1331 | resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==}
1332 | engines: {node: '>=10.0.0'}
1333 | peerDependencies:
1334 | bufferutil: ^4.0.1
1335 | utf-8-validate: ^5.0.2
1336 | peerDependenciesMeta:
1337 | bufferutil:
1338 | optional: true
1339 | utf-8-validate:
1340 | optional: true
1341 | dev: true
1342 |
1343 | /xmlhttprequest-ssl/2.0.0:
1344 | resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==}
1345 | engines: {node: '>=0.4.0'}
1346 | dev: true
1347 |
1348 | /yaml/1.10.2:
1349 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
1350 | engines: {node: '>= 6'}
1351 | dev: true
1352 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "rollup"
2 | import ts from '@rollup/plugin-typescript';
3 | import postcss from 'rollup-plugin-postcss'
4 | import autoprefixer from 'autoprefixer'
5 | import px2rem from 'postcss-pxtorem'
6 | import { nodeResolve } from "@rollup/plugin-node-resolve";
7 | import commonjs from '@rollup/plugin-commonjs';
8 | const extensions = [".ts","less"];
9 | export default defineConfig({
10 | input: "./package/index.ts",
11 | output: {
12 | file: "./dist/niplayer-plugin-dash.esm.js",
13 | format: "esm"
14 | },
15 | treeshake: {
16 | moduleSideEffects: false,
17 | propertyReadSideEffects: false,
18 | pureExternalModules: true
19 | },
20 | plugins: [
21 | ts({
22 | compilerOptions: {}
23 | }),
24 | postcss({
25 | plugins: [
26 | autoprefixer(),
27 | px2rem({
28 | rootValue: 16,
29 | propList: [
30 | 'margin-left',
31 | 'min-width',
32 | 'height',
33 | 'font-size',
34 | 'bottom',
35 | 'width',
36 | 'padding',
37 | 'transform',
38 | ]
39 | }),
40 | ]
41 | }),
42 | commonjs(),
43 | nodeResolve({
44 | extensions
45 | }),
46 | ]
47 | })
--------------------------------------------------------------------------------
/src/component/loading.ts:
--------------------------------------------------------------------------------
1 | export class Loading {
2 | private message: string;
3 | private el!: HTMLElement;
4 | private container: HTMLElement;
5 | constructor(message: string, container: HTMLElement) {
6 | this.message = message;
7 | this.container = container;
8 | this.init();
9 | }
10 | init() {
11 | this.initTemplate();
12 | }
13 |
14 | initTemplate() {
15 | let el = document.createElement("div")
16 | el.classList.add("dash-loading-wrapper")
17 | this.el = el;
18 | let msgEl = document.createElement("div")
19 | msgEl.classList.add("dash-loading-message")
20 | msgEl.innerText = this.message;
21 | this.el.append(msgEl);
22 | this.container.append(this.el);
23 | }
24 |
25 | // 销毁dash的loading组件
26 | dispose() {
27 | this.el.classList.add("dash-loading-hidden")
28 | // 监听动画结束的事件,在动画结束就将该组件的dom元素从document中移除
29 | this.el.ontransitionend = () => {
30 | this.el.parentElement?.removeChild(this.el);
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/src/component/menu.ts:
--------------------------------------------------------------------------------
1 | import dashjs, { BitrateInfo, MediaPlayerClass } from "dashjs";
2 | import type Player from "niplayer"
3 | import Event from "../event";
4 | // dash.js库的配置信息
5 | const cfg = {
6 | 'streaming': {
7 | 'abr': {
8 | 'autoSwitchBitrate': {}
9 | }
10 | }
11 | };
12 |
13 | // 生成视频具体分辨率的字符串
14 | function generateContent(element?: BitrateInfo): string {
15 | if(typeof element === "undefined") {
16 | return "自动";
17 | } else {
18 | let resolution = "";
19 | let height = element.height;
20 | if(height >= 2160) {
21 | resolution = "蓝光"
22 | } else if(height >= 720 && height < 2160) {
23 | resolution = "高清"
24 | } else if(height >= 480 && height < 720) {
25 | resolution = "标清"
26 | } else if(height < 480) {
27 | resolution = "流畅"
28 | }
29 |
30 | return `${height}P ${resolution}`;
31 | }
32 | }
33 |
34 | export class ResolutionMenu {
35 | private dashPlayer: MediaPlayerClass;
36 | private niPlayer: Player;
37 | private container: HTMLElement;
38 | private forceQuality: boolean = true;
39 | constructor(niPlayer: Player, dashPlayer: MediaPlayerClass, container: HTMLElement) {
40 | this.dashPlayer = dashPlayer;
41 | this.container = container;
42 | this.niPlayer = niPlayer;
43 | this.dashPlayer.on(dashjs.MediaPlayer.events.STREAM_ACTIVATED, this._onStreamActivated, this);
44 | this.dashPlayer.on(dashjs.MediaPlayer.events.QUALITY_CHANGE_RENDERED, this._onQualityChanged, this)
45 | }
46 |
47 | private _onStreamActivated() {
48 | console.log("dash流已经启动");
49 | this.createBiterateMenu(this.dashPlayer,this.container);
50 | }
51 |
52 | // 监听媒体流质量发生变化的事件
53 | private _onQualityChanged(e: any) {
54 | let newQualityIndex = e.newQuality;
55 | let newQuality = this.dashPlayer.getBitrateInfoListFor("video")[newQualityIndex];
56 | this.niPlayer.emit(Event.QUALITY_CHANGED, newQuality);
57 | }
58 |
59 | // 创建码率菜单,也就是视频分辨率和音频音质的集中菜单
60 | private createBiterateMenu(player: MediaPlayerClass, container: HTMLElement): void {
61 | // 获取video和audio的集中信息
62 | let videoInfo = player.getBitrateInfoListFor && player.getBitrateInfoListFor("video");
63 | let videoList = this.createMenuContent(videoInfo);
64 | container.append(videoList);
65 | }
66 |
67 | private createMenuContent(info: BitrateInfo[]): DocumentFragment {
68 |
69 | // let ul = $("ul.video-resolution-submenu")
70 | let fragment = document.createDocumentFragment()
71 | let auto = document.createElement("div")
72 | auto.classList.add("video-resolution-item")
73 | auto.innerText = generateContent();
74 | // @ts-ignore
75 | auto.onclick = (e: MouseEvent) => {
76 | (cfg.streaming.abr.autoSwitchBitrate as any)["video"] = true;
77 | this.dashPlayer.updateSettings(cfg);
78 | this.niPlayer.emit(Event.MENU_ITEM_CLICK, auto.innerText);
79 | e.stopPropagation();
80 | }
81 | fragment.append(auto);
82 | const liList: HTMLElement[] = [];
83 | for(let item of info) {
84 | let content = generateContent(item);
85 | let li = document.createElement("div")
86 | li.classList.add("video-resolution-item")
87 | li.innerText = content;
88 | li.onclick = (e: MouseEvent) => {
89 | // 关闭自适应算法调整视频的分辨率,该为手动调整
90 | (cfg.streaming.abr.autoSwitchBitrate as any)["video"] = false;
91 | this.dashPlayer.updateSettings(cfg);
92 | this.dashPlayer.setQualityFor(item.mediaType, item.qualityIndex, this.forceQuality);
93 | this.niPlayer.emit(Event.MENU_ITEM_CLICK, content)
94 | e.stopPropagation()
95 | }
96 | liList.push(li)
97 | }
98 |
99 | const resList: string[] = [];
100 | for(let li of Array.from(new Set(liList.reverse()))) {
101 | if(resList.includes(li.innerText)) continue;
102 | resList.push(li.innerText)
103 | fragment.append(li)
104 | }
105 | return fragment;
106 | }
107 | }
--------------------------------------------------------------------------------
/src/event.ts:
--------------------------------------------------------------------------------
1 | enum Event {
2 | MENU_ITEM_CLICK = "menu_item_click",
3 | QUALITY_CHANGED = "quality_changed"
4 | }
5 |
6 | export default Event
--------------------------------------------------------------------------------
/src/index.less:
--------------------------------------------------------------------------------
1 | .video-set {
2 | .video-resolution-item {
3 | text-align: left;
4 | width: 100%;
5 | font-size: 12px;
6 | color: #fff;
7 | padding: 5px 0 5px 15px;
8 | box-sizing: border-box;
9 | border-radius: 5px;
10 | &:hover {
11 | background: #525252;
12 | }
13 | }
14 | }
15 |
16 | .video-resolution-toast {
17 | height: 30px;
18 | line-height: 30px;
19 | padding: 0 10px;
20 | box-sizing: border-box;
21 | border-radius: 10px;
22 | color: #fff;
23 | font-size: 14px;
24 | }
25 |
26 | .dash-loading-wrapper {
27 | height: 30px;
28 | background: rgba(0,0,0,0.7);
29 | padding: 5px;
30 | box-sizing: border-box;
31 | display: flex;
32 | justify-content: space-around;
33 | border-radius: 8px;
34 | transition: all .5s ease;
35 | position: absolute;
36 | left: 10px;
37 | bottom: 60px;
38 | .dash-loading-message {
39 | font-size: 14px;
40 | color: #fff;
41 | }
42 | }
43 |
44 | .dash-loading-hidden {
45 | opacity: 0;
46 | height: 0;
47 | width: 0;
48 | }
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { Options, EVENT, Toast } from "niplayer";
2 | import type Player from "niplayer";
3 | import type { Plugin, DOMProps } from "niplayer";
4 | import dashjs, { BitrateInfo, MediaPlayerClass } from "dashjs";
5 | import { ResolutionMenu } from "./component/menu";
6 | import Event from "./event";
7 | import { Loading } from "./component/loading";
8 | import "./index.less";
9 |
10 | //TODO 构造一个分辨率组件
11 | class Resolution extends Options {
12 | readonly id = "Resolution";
13 | private dashPlayer: MediaPlayerClass;
14 | // dash流媒体下切换分辨率的加载动画div
15 | private dashLoading!: Loading;
16 | constructor(
17 | player: Player,
18 | container: HTMLElement,
19 | desc?: string,
20 | props?: DOMProps,
21 | ) {
22 | super(player, container, 150, undefined, desc, props);
23 | this.dashPlayer = dashjs.MediaPlayer().create();
24 | this.init();
25 | }
26 |
27 | init(): void {
28 | this.initTemplate();
29 | this.initEvent();
30 | }
31 |
32 | initTemplate(): void {
33 | this.el.classList.add("video-controller","video-resolution")
34 | let resolve = document.createElement("div");
35 | resolve.innerText = "画质"
36 | this.icon = resolve;
37 | this.iconBox.appendChild(this.icon);
38 | }
39 |
40 | //TODO 初始化相关事件的回调函数
41 | initEvent(): void {
42 | // 监听媒体资源的挂载事件,source为媒体资源的地址
43 | this.player.on(EVENT.SOURCE_ATTACHED,(source: string) => {
44 | // 初始化dashjs的控制器,将播放器中的video元素托管给dashjs控制器
45 | this.dashPlayer.initialize(this.player.video, source);
46 | // 初始化视频的分辨率列表
47 | new ResolutionMenu(this.player, this.dashPlayer, this.hideBox);
48 | })
49 |
50 | //TODO 发生分辨率栏的点击事件后触发回调函数
51 | this.player.on(Event.MENU_ITEM_CLICK, (quality: string) => {
52 | (this.icon as HTMLElement).innerText = quality;
53 | if(quality !== "自动") {
54 | this.dashLoading = new Loading("正在切换视频分辨率ing....",this.player.el);
55 | }
56 | })
57 |
58 | //TODO 监听媒体质量发生变化的事件
59 | this.player.on(Event.QUALITY_CHANGED,(newQuality: BitrateInfo) => {
60 | console.log("媒体质量发生变化",newQuality);
61 | this.dashLoading && this.dashLoading.dispose();
62 | let dom = document.createElement("div")
63 | dom.classList.add("video-resolution-toast")
64 | dom.innerText = `成功切换到${newQuality.height}P`;
65 |
66 | let toast: Toast = new Toast(this.player,dom)
67 |
68 | window.setTimeout(() => {
69 | toast.dispose();
70 | }, 2000)
71 | })
72 | }
73 | }
74 |
75 | const plugin: Plugin = {
76 | install(player: Player) {
77 | // 注册controllers组件
78 | player.registerControllers(Resolution, "right");
79 | },
80 | }
81 |
82 | export default plugin;
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "include": [
3 | "./src/**/*"
4 | ],
5 | "exclude": [
6 | "./dist/**/*",
7 | "./node_modules/**/*",
8 | ],
9 | "compilerOptions": {
10 | "target": "ES2015", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
11 | "module": "ES6", /* Specify what module code is generated. */
12 | "rootDir": "./src", /* Specify the root folder within your source files. */
13 | "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
14 | "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
15 | "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
16 | "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
17 | "sourceMap": true, /* Create source map files for emitted JavaScript files. */
18 | "outDir": "./dist", /* Specify an output folder for all emitted files. */
19 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
20 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
21 | "strict": true, /* Enable all strict type-checking options. */
22 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
23 | }
24 | }
25 |
--------------------------------------------------------------------------------