Skip to content

Commit a1e9673

Browse files
committed
First Commit
0 parents  commit a1e9673

File tree

5 files changed

+388
-0
lines changed

5 files changed

+388
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

index.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/**
2+
* Copyright (c) 2023 Anthony Mugendi
3+
*
4+
* This software is released under the MIT License.
5+
* https://opensource.org/licenses/MIT
6+
*/
7+
const MagicString = require('magic-string');
8+
const fs = require('fs');
9+
const path = require('path');
10+
const picomatch = require('picomatch');
11+
const reloadSite = require('reloadsite');
12+
const tcpPortUsed = require('tcp-port-used');
13+
14+
let scriptJSStr = fs.readFileSync(
15+
path.join(__dirname, './plugn-append-script.js'),
16+
'utf8'
17+
);
18+
19+
const production = !process.env.ROLLUP_WATCH;
20+
21+
const ReloadSite = (options = {}) => {
22+
let {
23+
sourcemap = true,
24+
filter = null,
25+
port = 35729,
26+
hook = 'buildEnd',
27+
dirs = [],
28+
} = options;
29+
// console.log(options);
30+
return {
31+
name: 'reloadsite-plugin',
32+
transform: (source, id) => {
33+
// do not run in production
34+
if (production) return;
35+
dirs = arrify(dirs);
36+
// nothing to do here....
37+
if (dirs.length == 0) return;
38+
39+
// use picomatch to filter files
40+
let fileMatchesFilter = !filter ? true : picomatch.isMatch(id, filter);
41+
42+
if (!fileMatchesFilter) return;
43+
44+
const s = new MagicString(source);
45+
46+
scriptJSStr = scriptJSStr.replace('{PORT}', port);
47+
48+
s.append(scriptJSStr);
49+
50+
return {
51+
code: s.toString(),
52+
map: sourcemap ? s.generateMap() : null,
53+
};
54+
},
55+
[hook]: async () => {
56+
// start server
57+
try {
58+
// do not run in production
59+
if (production) return;
60+
61+
const portUsed = await tcpPortUsed.check(port, '127.0.0.1');
62+
if (!portUsed) {
63+
startLiveReloadServer({ port, dirs });
64+
}
65+
} catch (error) {
66+
throw error;
67+
}
68+
},
69+
};
70+
};
71+
72+
async function startLiveReloadServer({ port, delay = 250, dirs = [] }) {
73+
// start server
74+
const serverOptions = { port };
75+
const reloader = reloadSite(serverOptions);
76+
// start watching directories
77+
const reloadOptions = { delay };
78+
reloader.watch(dirs, reloadOptions);
79+
}
80+
81+
function arrify(v) {
82+
if (v === undefined) return [];
83+
return Array.isArray(v) ? v : [v];
84+
}
85+
86+
module.exports = ReloadSite;

package.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"name": "rollup-plugin-reloadsite",
3+
"version": "1.0.0",
4+
"description": "A rollup plugin that adds HMR features via livereload",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1"
8+
},
9+
"keywords": [
10+
"rollup",
11+
"hmr",
12+
"realtime",
13+
"live",
14+
"reloading",
15+
"css",
16+
"images"
17+
],
18+
"author": "Anthony Mugendi <ngurumugz@gmail.com>",
19+
"license": "MIT",
20+
"dependencies": {
21+
"magic-string": "^0.30.5",
22+
"picomatch": "^3.0.1",
23+
"reloadsite": "^1.0.5",
24+
"tcp-port-used": "^1.0.2"
25+
}
26+
}

plugn-append-script.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* This code is added by the rollup-plugin-reloadsite plugin
3+
* Naturally, this plugin is disabled as soon as you stop watching your source files via the -w flag
4+
* process.env.ROLLUP_WATCH is used to automatically mute the plugin and this code, as well as the actual LiveReload server will disappear
5+
* However, it is better to be explicit in your code and only load the rollup-plugin-reloadsite plugin in development mode
6+
*
7+
* Note: If you have run multiple sources, then you might find this code in multiple files.
8+
* However, it's effect is limited to only one time as the if condition below should stop all other instances from unning
9+
*/
10+
11+
// see if script tag exists
12+
let scrptExists = document.querySelector('script#ReloadSite');
13+
14+
if (!scrptExists) {
15+
// get document body
16+
let body = document.querySelector('body,html');
17+
18+
if (body) {
19+
// create tag
20+
let tag = document.createElement('script');
21+
tag.src = 'http://127.0.0.1:{PORT}/reloadsite.js';
22+
tag.id = 'ReloadSite';
23+
body.append(tag);
24+
} else {
25+
console.warn('HTML document has no body or html tag!');
26+
}
27+
}

yarn.lock

Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
"@jridgewell/sourcemap-codec@^1.4.15":
6+
version "1.4.15"
7+
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
8+
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
9+
10+
ansi-styles@^4.1.0:
11+
version "4.3.0"
12+
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
13+
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
14+
dependencies:
15+
color-convert "^2.0.1"
16+
17+
anymatch@~3.1.2:
18+
version "3.1.3"
19+
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
20+
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
21+
dependencies:
22+
normalize-path "^3.0.0"
23+
picomatch "^2.0.4"
24+
25+
binary-extensions@^2.0.0:
26+
version "2.2.0"
27+
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
28+
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
29+
30+
braces@~3.0.2:
31+
version "3.0.2"
32+
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
33+
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
34+
dependencies:
35+
fill-range "^7.0.1"
36+
37+
chalk@^4.1.0, chalk@^4.1.2:
38+
version "4.1.2"
39+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
40+
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
41+
dependencies:
42+
ansi-styles "^4.1.0"
43+
supports-color "^7.1.0"
44+
45+
chokidar@^3.5.2:
46+
version "3.5.3"
47+
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
48+
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
49+
dependencies:
50+
anymatch "~3.1.2"
51+
braces "~3.0.2"
52+
glob-parent "~5.1.2"
53+
is-binary-path "~2.1.0"
54+
is-glob "~4.0.1"
55+
normalize-path "~3.0.0"
56+
readdirp "~3.6.0"
57+
optionalDependencies:
58+
fsevents "~2.3.2"
59+
60+
color-convert@^2.0.1:
61+
version "2.0.1"
62+
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
63+
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
64+
dependencies:
65+
color-name "~1.1.4"
66+
67+
color-name@~1.1.4:
68+
version "1.1.4"
69+
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
70+
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
71+
72+
debug-symbols@^1.0.2:
73+
version "1.0.2"
74+
resolved "https://registry.yarnpkg.com/debug-symbols/-/debug-symbols-1.0.2.tgz#734d14390ef2b3f0871cb6fb5b9ab8d23b648cbe"
75+
integrity sha512-/gsCcNIArRNmcFXZ7VoCgCQbgwSLMB2yFDPBvba61xU07Vo3LsEdSHqXWaki9qPmnitEPsyvKLrCPq3fqNVCwg==
76+
dependencies:
77+
chalk "^4.1.2"
78+
debug "^4.3.3"
79+
log-symbols "^4.1.0"
80+
81+
debug@4.3.1:
82+
version "4.3.1"
83+
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
84+
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
85+
dependencies:
86+
ms "2.1.2"
87+
88+
debug@^4.3.3:
89+
version "4.3.4"
90+
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
91+
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
92+
dependencies:
93+
ms "2.1.2"
94+
95+
deep-is@^0.1.3:
96+
version "0.1.4"
97+
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
98+
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
99+
100+
fill-range@^7.0.1:
101+
version "7.0.1"
102+
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
103+
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
104+
dependencies:
105+
to-regex-range "^5.0.1"
106+
107+
fsevents@~2.3.2:
108+
version "2.3.3"
109+
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
110+
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
111+
112+
glob-parent@~5.1.2:
113+
version "5.1.2"
114+
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
115+
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
116+
dependencies:
117+
is-glob "^4.0.1"
118+
119+
has-flag@^4.0.0:
120+
version "4.0.0"
121+
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
122+
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
123+
124+
ip-regex@^4.1.0:
125+
version "4.3.0"
126+
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5"
127+
integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==
128+
129+
is-binary-path@~2.1.0:
130+
version "2.1.0"
131+
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
132+
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
133+
dependencies:
134+
binary-extensions "^2.0.0"
135+
136+
is-extglob@^2.1.1:
137+
version "2.1.1"
138+
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
139+
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
140+
141+
is-glob@^4.0.1, is-glob@~4.0.1:
142+
version "4.0.3"
143+
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
144+
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
145+
dependencies:
146+
is-extglob "^2.1.1"
147+
148+
is-number@^7.0.0:
149+
version "7.0.0"
150+
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
151+
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
152+
153+
is-unicode-supported@^0.1.0:
154+
version "0.1.0"
155+
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
156+
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
157+
158+
is-url@^1.2.4:
159+
version "1.2.4"
160+
resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
161+
integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
162+
163+
is2@^2.0.6:
164+
version "2.0.9"
165+
resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.9.tgz#ff63b441f90de343fa8fac2125ee170da8e8240d"
166+
integrity sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==
167+
dependencies:
168+
deep-is "^0.1.3"
169+
ip-regex "^4.1.0"
170+
is-url "^1.2.4"
171+
172+
log-symbols@^4.1.0:
173+
version "4.1.0"
174+
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
175+
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
176+
dependencies:
177+
chalk "^4.1.0"
178+
is-unicode-supported "^0.1.0"
179+
180+
magic-string@^0.30.5:
181+
version "0.30.5"
182+
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9"
183+
integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==
184+
dependencies:
185+
"@jridgewell/sourcemap-codec" "^1.4.15"
186+
187+
ms@2.1.2:
188+
version "2.1.2"
189+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
190+
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
191+
192+
normalize-path@^3.0.0, normalize-path@~3.0.0:
193+
version "3.0.0"
194+
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
195+
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
196+
197+
picomatch@^2.0.4, picomatch@^2.2.1:
198+
version "2.3.1"
199+
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
200+
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
201+
202+
picomatch@^3.0.1:
203+
version "3.0.1"
204+
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516"
205+
integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==
206+
207+
readdirp@~3.6.0:
208+
version "3.6.0"
209+
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
210+
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
211+
dependencies:
212+
picomatch "^2.2.1"
213+
214+
reloadsite@^1.0.5:
215+
version "1.0.5"
216+
resolved "https://registry.yarnpkg.com/reloadsite/-/reloadsite-1.0.5.tgz#0a408c2406230b884b0d86d7e826924d679a4362"
217+
integrity sha512-sHOaemuG8sNSzwBuoCCOdWWoilDTwkO8S4fFBkQJXCy+eTOexz+cNSzpwgyvnCAl0Nlx99PQOg0VPH7R1rYuaA==
218+
dependencies:
219+
chokidar "^3.5.2"
220+
debug-symbols "^1.0.2"
221+
ws "^8.15.1"
222+
223+
supports-color@^7.1.0:
224+
version "7.2.0"
225+
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
226+
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
227+
dependencies:
228+
has-flag "^4.0.0"
229+
230+
tcp-port-used@^1.0.2:
231+
version "1.0.2"
232+
resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.2.tgz#9652b7436eb1f4cfae111c79b558a25769f6faea"
233+
integrity sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==
234+
dependencies:
235+
debug "4.3.1"
236+
is2 "^2.0.6"
237+
238+
to-regex-range@^5.0.1:
239+
version "5.0.1"
240+
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
241+
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
242+
dependencies:
243+
is-number "^7.0.0"
244+
245+
ws@^8.15.1:
246+
version "8.15.1"
247+
resolved "https://registry.yarnpkg.com/ws/-/ws-8.15.1.tgz#271ba33a45ca0cc477940f7f200cd7fba7ee1997"
248+
integrity sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==

0 commit comments

Comments
 (0)