Skip to content

Commit 9a627cc

Browse files
committed
✨ ⚗ Play videos from mediaDB ID
1 parent 7959025 commit 9a627cc

File tree

8 files changed

+176
-20
lines changed

8 files changed

+176
-20
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ node_modules/
22
/public/
33
/.cache/
44
yarn-error.log
5+
6+
/static/m3u/*.m3u8

m3uLoader.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const r = require('request-promise-native');
2+
const fs = require('fs').promises;;
3+
4+
const main = async () => {
5+
const index = await fs.readFile('src/pages/index.md', 'utf8');
6+
const matches = [...index.matchAll(/videoId="(\d*)"/g)];
7+
const videoIds = matches.map((match) => match[1]);
8+
console.log(`Found videoIds in index.md: ${videoIds}`);
9+
10+
for (const videoId of videoIds) {
11+
const jsResponse = await r.get(`https://deviceids-medp.wdr.de/ondemand/${videoId.substring(0, 3)}/${videoId}.js`);
12+
const jsonResponse = jsResponse.match(/\$mediaObject.jsonpHelper.storeAndPlay\((.*?)\);/)[1];
13+
const parsed = JSON.parse(jsonResponse);
14+
const m3uUrl = parsed.mediaResource.dflt.videoURL;
15+
16+
const m3uResponse = await r.get(`https:${m3uUrl}`);
17+
await fs.writeFile(`./static/m3u/${videoId}.m3u8`, m3uResponse);
18+
}
19+
}
20+
21+
main().then(() => console.log('Downloaded M3U files.'));

package.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
"author": "Christine <[email protected]>",
77
"license": "MIT",
88
"scripts": {
9-
"build": "run-p -n --aggregate-output build-gatsby build-storybook",
9+
"build": "run-p -n --aggregate-output videos build-gatsby build-storybook",
1010
"build-storybook": "build-storybook -c .storybook -o public/components --quiet",
1111
"build-gatsby": "gatsby build --prefix-paths",
12-
"build-prod": "GATSBY_WEBTREKK_ENV=production yarn build-gatsby",
12+
"build-prod": "yarn videos && GATSBY_WEBTREKK_ENV=production yarn build-gatsby",
1313
"storybook": "start-storybook",
1414
"start": "gatsby develop -H 0.0.0.0",
15-
"serve": "serve -s public"
15+
"serve": "serve -s public",
16+
"videos": "babel-node m3uLoader.js"
1617
},
1718
"dependencies": {
1819
"@babel/core": "^7.4.5",
@@ -40,6 +41,7 @@
4041
"gatsby-plugin-styled-components": "^3.1.1",
4142
"gatsby-remark-images": "^3.1.2",
4243
"gatsby-source-filesystem": "^2.1.6",
44+
"hls.js": "^0.13.2",
4345
"json-loader": "^0.5.7",
4446
"papaparse": "^5.0.1",
4547
"prop-types": "^15.7.2",
@@ -59,9 +61,11 @@
5961
"video-react": "^0.14.1"
6062
},
6163
"devDependencies": {
64+
"@babel/node": "^7.8.7",
6265
"css-loader": "^3.0.0",
6366
"file-loader": "^4.0.0",
6467
"npm-run-all": "^4.1.5",
68+
"request-promise-native": "^1.0.8",
6569
"serve": "^11.3.0",
6670
"url-loader": "^2.0.1"
6771
}

src/components/video/HLSSource.jsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import React, { Component } from 'react';
2+
import Hls from 'hls.js';
3+
4+
export default class HLSSource extends Component {
5+
constructor(props, context) {
6+
super(props, context);
7+
this.hls = new Hls();
8+
}
9+
10+
componentDidMount() {
11+
// `src` is the property get from this component
12+
// `video` is the property insert from `Video` component
13+
// `video` is the html5 video element
14+
const { src, video } = this.props;
15+
// load hls video source base on hls.js
16+
if (Hls.isSupported()) {
17+
this.hls.loadSource(src);
18+
this.hls.attachMedia(video);
19+
this.hls.on(Hls.Events.MANIFEST_PARSED, () => {
20+
video.play();
21+
});
22+
}
23+
}
24+
25+
componentWillUnmount() {
26+
// destroy hls video source
27+
if (this.hls) {
28+
this.hls.destroy();
29+
}
30+
}
31+
32+
render() {
33+
return (
34+
<source
35+
src={this.props.src}
36+
type={this.props.type || 'application/x-mpegURL'}
37+
/>
38+
);
39+
}
40+
}

src/components/video/video.jsx

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,21 @@ import PropTypes from "prop-types";
33
import { Player, BigPlayButton } from "video-react";
44
import "video-react/dist/video-react.css";
55
import styles from "./video.module.css";
6+
import HLSSource from "./HLSSource.jsx";
67

7-
const WdrPlayer = ({ videoSrc, videoPoster }) => {
8+
const WdrPlayer = ({ videoId, videoPoster }) => {
9+
const m3uSource = `/m3u/${videoId}.m3u8`;
810
return (
9-
<Player
10-
playsInline
11-
fluid
12-
poster={videoPoster}
13-
src={videoSrc}
14-
>
15-
<BigPlayButton className={styles.playButton}/>
11+
<Player playsInline fluid poster={videoPoster}>
12+
<HLSSource isVideoChild src={m3uSource} />
13+
<BigPlayButton className={styles.playButton} />
1614
</Player>
1715
);
1816
};
1917

2018
WdrPlayer.propTypes = {
21-
videoSrc: PropTypes.string,
22-
videoPoster: PropTypes.string,
19+
videoId: PropTypes.string,
20+
videoPoster: PropTypes.string
2321
};
2422

2523
export default WdrPlayer;

src/pages/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Waren Sie in der letzten Spielzeit in der Oper? Dann haben Sie höchstwahrschein
5151

5252
## Beispiel Video-Player:
5353

54-
<WdrPlayer videoSrc="https://media.w3.org/2010/05/sintel/trailer_hd.mp4" videoPoster="https://www1.wdr.de/fernsehen/abenteuer-erde/kuestenotter-100~_v-gseapremiumxl.jpg" />
54+
<WdrPlayer videoId="2159001" videoPoster="https://i.imgur.com/hZIGM2L.jpg" />
5555

5656
mehr toller text
5757

static/m3u/.gitkeep

Whitespace-only changes.

yarn.lock

Lines changed: 97 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,20 @@
298298
chalk "^2.0.0"
299299
js-tokens "^4.0.0"
300300

301+
"@babel/node@^7.8.7":
302+
version "7.8.7"
303+
resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.8.7.tgz#4213ea99f0c86cc1cf460e61131e7acbb723e13a"
304+
integrity sha512-o8cBT3cfRPLwoPh7VBYonSeZypIawGUeVfOIt1xSDgcDdirRGDPZ7/x+FLhhgQmKp3PKbz5Juh9/BNP4Jzrr9Q==
305+
dependencies:
306+
"@babel/register" "^7.8.3"
307+
commander "^4.0.1"
308+
core-js "^3.2.1"
309+
lodash "^4.17.13"
310+
node-environment-flags "^1.0.5"
311+
regenerator-runtime "^0.13.4"
312+
resolve "^1.13.1"
313+
v8flags "^3.1.1"
314+
301315
"@babel/parser@^7.7.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6":
302316
version "7.9.6"
303317
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7"
@@ -887,6 +901,17 @@
887901
"@babel/plugin-transform-react-jsx-self" "^7.9.0"
888902
"@babel/plugin-transform-react-jsx-source" "^7.9.0"
889903

904+
"@babel/register@^7.8.3":
905+
version "7.9.0"
906+
resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.9.0.tgz#02464ede57548bddbb5e9f705d263b7c3f43d48b"
907+
integrity sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q==
908+
dependencies:
909+
find-cache-dir "^2.0.0"
910+
lodash "^4.17.13"
911+
make-dir "^2.1.0"
912+
pirates "^4.0.0"
913+
source-map-support "^0.5.16"
914+
890915
"@babel/runtime-corejs3@^7.8.3":
891916
version "7.9.6"
892917
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.6.tgz#67aded13fffbbc2cb93247388cf84d77a4be9a71"
@@ -5318,7 +5343,7 @@ core-js@^1.0.0:
53185343
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
53195344
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
53205345

5321-
core-js@^3.0.1, core-js@^3.0.4, core-js@^3.4.1:
5346+
core-js@^3.0.1, core-js@^3.0.4, core-js@^3.2.1, core-js@^3.4.1:
53225347
version "3.6.5"
53235348
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
53245349
integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
@@ -7061,6 +7086,11 @@ event-source-polyfill@^1.0.12:
70617086
resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.12.tgz#38546c4fee76dcadae2560185610ae46c5a39520"
70627087
integrity sha512-WjOTn0LIbaN08z/8gNt3GYAomAdm6cZ2lr/QdvhTTEipr5KR6lds2ziUH+p/Iob4Lk6NClKhwPOmn1NjQEcJCg==
70637088

7089+
7090+
version "3.1.0"
7091+
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
7092+
integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==
7093+
70647094
eventemitter3@^3.1.0:
70657095
version "3.1.2"
70667096
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
@@ -7623,7 +7653,7 @@ find-cache-dir@^0.1.1:
76237653
mkdirp "^0.5.1"
76247654
pkg-dir "^1.0.0"
76257655

7626-
find-cache-dir@^2.1.0:
7656+
find-cache-dir@^2.0.0, find-cache-dir@^2.1.0:
76277657
version "2.1.0"
76287658
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
76297659
integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
@@ -9038,6 +9068,14 @@ highlight.js@~9.13.0:
90389068
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e"
90399069
integrity sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==
90409070

9071+
hls.js@^0.13.2:
9072+
version "0.13.2"
9073+
resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.13.2.tgz#3e7dd28e3787c69c6aba42b64b11eb2c3c8c29f1"
9074+
integrity sha512-sIg2t4uGpWQLzuK1Iid9614WOKqxj4OYg+EbFbhhTDCsxpENBN+Du3yBFnoi+a83DuOOHdiQd1ydnti9loSGXw==
9075+
dependencies:
9076+
eventemitter3 "3.1.0"
9077+
url-toolkit "^2.1.6"
9078+
90419079
hmac-drbg@^1.0.0:
90429080
version "1.0.1"
90439081
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -11043,7 +11081,7 @@ make-dir@^1.0.0, make-dir@^1.2.0:
1104311081
dependencies:
1104411082
pify "^3.0.0"
1104511083

11046-
make-dir@^2.0.0:
11084+
make-dir@^2.0.0, make-dir@^2.1.0:
1104711085
version "2.1.0"
1104811086
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
1104911087
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
@@ -11783,6 +11821,14 @@ node-emoji@^1.10.0:
1178311821
dependencies:
1178411822
lodash.toarray "^4.4.0"
1178511823

11824+
node-environment-flags@^1.0.5:
11825+
version "1.0.6"
11826+
resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088"
11827+
integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==
11828+
dependencies:
11829+
object.getownpropertydescriptors "^2.0.3"
11830+
semver "^5.7.0"
11831+
1178611832
node-eta@^0.9.0:
1178711833
version "0.9.0"
1178811834
resolved "https://registry.yarnpkg.com/node-eta/-/node-eta-0.9.0.tgz#9fb0b099bcd2a021940e603c64254dc003d9a7a8"
@@ -11840,6 +11886,11 @@ node-libs-browser@^2.2.1:
1184011886
util "^0.11.0"
1184111887
vm-browserify "^1.0.1"
1184211888

11889+
node-modules-regexp@^1.0.0:
11890+
version "1.0.0"
11891+
resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
11892+
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
11893+
1184311894
node-object-hash@^2.0.0:
1184411895
version "2.0.0"
1184511896
resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.0.0.tgz#9971fcdb7d254f05016bd9ccf508352bee11116b"
@@ -12803,6 +12854,13 @@ pinkie@^2.0.0:
1280312854
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
1280412855
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
1280512856

12857+
pirates@^4.0.0:
12858+
version "4.0.1"
12859+
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
12860+
integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
12861+
dependencies:
12862+
node-modules-regexp "^1.0.0"
12863+
1280612864
pixelmatch@^4.0.2:
1280712865
version "4.0.2"
1280812866
resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854"
@@ -14601,6 +14659,22 @@ replace-ext@^1.0.0:
1460114659
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a"
1460214660
integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==
1460314661

14662+
14663+
version "1.1.3"
14664+
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9"
14665+
integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==
14666+
dependencies:
14667+
lodash "^4.17.15"
14668+
14669+
request-promise-native@^1.0.8:
14670+
version "1.0.8"
14671+
resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36"
14672+
integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==
14673+
dependencies:
14674+
request-promise-core "1.1.3"
14675+
stealthy-require "^1.1.1"
14676+
tough-cookie "^2.3.3"
14677+
1460414678
request@^2.83.0:
1460514679
version "2.88.2"
1460614680
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
@@ -15008,7 +15082,7 @@ semver-truncate@^1.1.2:
1500815082
dependencies:
1500915083
semver "^5.3.0"
1501015084

15011-
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
15085+
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
1501215086
version "5.7.1"
1501315087
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
1501415088
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -15529,7 +15603,7 @@ source-map-resolve@^0.5.0:
1552915603
source-map-url "^0.4.0"
1553015604
urix "^0.1.0"
1553115605

15532-
source-map-support@~0.5.12:
15606+
source-map-support@^0.5.16, source-map-support@~0.5.12:
1553315607
version "0.5.19"
1553415608
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
1553515609
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
@@ -15726,6 +15800,11 @@ static-site-generator-webpack-plugin@^3.4.2:
1572615800
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
1572715801
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
1572815802

15803+
stealthy-require@^1.1.1:
15804+
version "1.1.1"
15805+
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
15806+
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
15807+
1572915808
store2@^2.7.1:
1573015809
version "2.11.1"
1573115810
resolved "https://registry.yarnpkg.com/store2/-/store2-2.11.1.tgz#118645f1b5e38d20604852362183955e360a5893"
@@ -16527,7 +16606,7 @@ [email protected]:
1652716606
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
1652816607
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
1652916608

16530-
tough-cookie@~2.5.0:
16609+
tough-cookie@^2.3.3, tough-cookie@~2.5.0:
1653116610
version "2.5.0"
1653216611
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
1653316612
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
@@ -17079,6 +17158,11 @@ url-to-options@^1.0.1:
1707917158
resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
1708017159
integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=
1708117160

17161+
url-toolkit@^2.1.6:
17162+
version "2.1.6"
17163+
resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.1.6.tgz#6d03246499e519aad224c44044a4ae20544154f2"
17164+
integrity sha512-UaZ2+50am4HwrV2crR/JAf63Q4VvPYphe63WGeoJxeu8gmOm0qxPt+KsukfakPNrX9aymGNEkkaoICwn+OuvBw==
17165+
1708217166
url@^0.11.0:
1708317167
version "0.11.0"
1708417168
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -17189,6 +17273,13 @@ v8-compile-cache@^2.0.3:
1718917273
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
1719017274
integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
1719117275

17276+
v8flags@^3.1.1:
17277+
version "3.1.3"
17278+
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8"
17279+
integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==
17280+
dependencies:
17281+
homedir-polyfill "^1.0.1"
17282+
1719217283
valid-url@^1.0.9:
1719317284
version "1.0.9"
1719417285
resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200"

0 commit comments

Comments
 (0)