Browse Source

write new scraper

fix-broken-scrape
Jørgen Sverre Lien Sellæg 4 years ago
parent
commit
dd4c324546
  1. 14
      .eslintrc.js
  2. 45
      bin/convert-csv-to-json.mjs
  3. 35
      bin/convert-json-to-csv.mjs
  4. 23
      bin/count.mjs
  5. 10
      bin/derma.sh
  6. 73
      bin/old.mjs
  7. 10
      bin/request.mjs
  8. 30
      bin/run.sh
  9. 2
      bin/scrape
  10. 126
      bin/scrape.mjs
  11. 6
      package.json
  12. 37
      src/signal/send.mjs
  13. 571
      yarn.lock

14
.eslintrc.js

@ -1,14 +0,0 @@
module.exports = {
env: {
browser: true,
commonjs: true,
es2020: true,
node: true
},
extends: ['eslint:recommended', 'prettier'],
parserOptions: {
ecmaVersion: 11,
sourceType: 'module'
},
rules: {}
};

45
bin/convert-csv-to-json.mjs

@ -1,45 +0,0 @@
import fetch from 'node-fetch';
process.stdin.resume();
process.stdin.setEncoding('utf8');
let input = [];
process.stdin.on('data', (data) => {
input.push(data);
});
const token =
'1234567812345678123456781234567812345678123456781234567812345678';
const hostname = 'http://localhost:3333';
const headers = { 'Content-Type': 'application/json' };
process.stdin.on('end', async () => {
for (let event_line of input.join('').split('\n')) {
const [
facebook_id = '',
location_name = '',
place_id = '',
name = '',
start = '',
ticket_url = ''
] = event_line.split('¤');
let event = {
draft: false,
canceled: false,
facebook_id,
location_name,
place_id: Number(place_id),
name,
start: Number(start),
ticket_url
};
let res = await fetch(`${hostname}/events/?token=${token}`, {
method: 'POST',
body: JSON.stringify(event),
headers
});
console.log(res.status, await res.text());
}
});

35
bin/convert-json-to-csv.mjs

@ -1,35 +0,0 @@
import events from './events.json' assert { type: 'json' };
const dl = '¤';
console.log(
`canceled${dl}created${dl}draft${dl}end${dl}facebook_id${dl}host${dl}id${dl}location${dl}name${dl}start${dl}ticket_url${dl}updated`
);
events.forEach(
({
canceled,
created,
draft,
end,
facebook_id,
host,
id,
location,
name,
start,
ticket_url,
updated
}) => {
const line = `${canceled}${dl}${created}${dl}${draft}${dl}${end}${dl}${facebook_id}${dl}${host}${dl}${id}${dl}${location}${dl}${name}${dl}${start}${dl}${ticket_url}${dl}${updated}`;
if (line.split(`${dl}`).length != 12) {
console.error(id, name);
return;
}
console.log(
`${canceled}${dl}${created}${dl}${draft}${dl}${end}${dl}${facebook_id}${dl}${host}${dl}${id}${dl}${location}${dl}${name}${dl}${start}${dl}${ticket_url}${dl}${updated}`
);
}
);

23
bin/count.mjs

@ -1,23 +0,0 @@
import { promises as fs } from 'fs';
const eventFiles = process.argv.slice(3);
(async () => {
const root = '/home/zalox/src/acne/lib/derma';
let requests = 0;
const promises = eventFiles.map(async (filename) => {
const path = `${root}/${filename}`;
const file_content = await fs.readFile(path, { encoding: 'utf-8' });
const j = JSON.parse(file_content);
console.log(path);
return j.length;
});
for (let i = 0; i < promises.length; i++) {
const l = await promises[i];
requests += l;
}
console.log(requests);
})();

10
bin/derma.sh

@ -0,0 +1,10 @@
#!/usr/bin/env bash
readonly SCRIPT_HOME=$(dirname `readlink -f $0`)
export NODE_EXTRA_CA_CERTS="$SCRIPT_HOME/../share/ca.crt"
function run {
cd $SCRIPT_HOME
node ./scrape.mjs
}
run

73
bin/old.mjs

@ -1,73 +0,0 @@
import { promises as fs } from 'fs';
import events from './events.json' assert { type: 'json' };
import fetch from 'node-fetch';
import { promises as fs } from 'fs';
const eventFiles = process.argv.slice(3);
const later = (delay, value) =>
new Promise((resolve) => setTimeout(resolve, delay, value));
(async () => {
const root = '/home/zalox/src/acne/lib/derma';
let requests = [];
const promises = eventFiles.map(async (filename) => {
const path = `${root}/${filename}`;
const file_content = await fs.readFile(path, { encoding: 'utf-8' });
const j = JSON.parse(file_content);
for (let i = 0; i < j.length; i++) {
let event = j[i];
const payload = {
canceled: false,
date: {
created: new Date(),
end: '',
start: new Date(event.time_range.start),
updated: new Date()
},
draft: false,
facebook_id: event.id,
host: event.event_place?.name ?? '',
location: event.event_place?.city?.name ?? 'Trondheim, Norway',
name: event.name ?? 'NAME_MISSING',
ticket_url: event.event_buy_ticket_url ?? ''
};
requests.push(payload);
}
});
await Promise.all(promises);
for (let i = 0; i < requests.length; i++) {
let event = requests[i];
const res = await fetch(
'http://localhost:3333/events?token=831411806230c7e950c4eeb226499ef92bb6bdc4157797929a0e16d133dc13a8',
{
method: 'POST',
body: JSON.stringify(event),
headers: { 'Content-Type': 'application/json' }
}
);
}
})();
(async () => {
const promises = events.map(async (filename) => {
const path = `${root}/${filename}`;
const file_content = await fs.readFile(path, { encoding: 'utf-8' });
const j = JSON.parse(file_content);
console.log(path);
return j.length;
});
for (let i = 0; i < promises.length; i++) {
const l = await promises[i];
requests += l;
}
console.log(requests);
})();

10
bin/request.mjs

@ -1,10 +0,0 @@
import fetch from 'node-fetch';
(async () => {
let iterations = 1000;
let start = new Date().valueOf();
for (let i = 0; i < iterations; i++) {
await fetch('http://localhost:3333/events/');
}
let end = new Date().valueOf();
console.log((end - start) / 1000);
})();

30
bin/run.sh

@ -2,13 +2,11 @@
readonly SCRIPT_HOME=$(dirname `readlink -f $0`) readonly SCRIPT_HOME=$(dirname `readlink -f $0`)
export NODE_EXTRA_CA_CERTS="$SCRIPT_HOME/../share/ca.crt" export NODE_EXTRA_CA_CERTS="$SCRIPT_HOME/../share/ca.crt"
function scrape_page { function scrape_page {
local page_id; local page_id;
local storage_path; local storage_path;
page_id="$1" page_id="$1"
storage_path="$2" storage_path="$2"
echo "Scraping $storage_path"; echo "Scraping $storage_path";
bin/scrape $page_id > $storage_path; bin/scrape $page_id > $storage_path;
} }
@ -16,30 +14,33 @@ function scrape_page {
mkdir -p events mkdir -p events
# scrape_page 145869695444569 events/AftermathMusicNorway-145869695444569.json # scrape_page 145869695444569 events/AftermathMusicNorway-145869695444569.json
# scrape_page 774453762576345 events/BarnefestivalenJubaJuba-774453762576345.json # scrape_page 774453762576345 events/BarnefestivalenJubaJuba-774453762576345.json
# scrape_page 325557631163470 events/Dora3Trondheim-325557631163470.json
# scrape_page 154134355099614 events/KonsertGalleriet-154134355099614.json
# scrape_page 176869899002150 events/Nordenfjelske-176869899002150.json
# scrape_page 287716286232 events/Pstereo-287716286232.json
# scrape_page 111985600537696 events/Sommer-i-Borggarden-111985600537696-111985600537696.json
# scrape_page 214229302015789 events/TrondheimJazzforum-214229302015789.json
# scrape_page 860188704010725 events/feminalen-860188704010725.json
# scrape_page 1866856830009864 events/TrondheimRocks-1866856830009864.json
# scrape_page 311676952866578 events/TrondheimLive-311676952866578.json
# scrape_page 114647705270950 events/TrondheimMetalFest-114647705270950.json
# scrape_page 642243462457769 events/kulturnattrondheim-642243462457769.json
# scrape_page 1786002618299415 events/nidelvenbarogscene-1786002618299415.json
scrape_page 750972958283466 events/Boxerbar-750972958283466.json scrape_page 750972958283466 events/Boxerbar-750972958283466.json
scrape_page 153799614679194 events/Britannia-153799614679194.Hotel.json scrape_page 153799614679194 events/Britannia-153799614679194.Hotel.json
scrape_page 380071843764 events/ByscenenTrondheim-380071843764.json scrape_page 380071843764 events/ByscenenTrondheim-380071843764.json
scrape_page 220501644709429 events/CinemateketTrondheim-220501644709429.json scrape_page 220501644709429 events/CinemateketTrondheim-220501644709429.json
scrape_page 225737590803212 events/Diskoteketbar-225737590803212.json scrape_page 225737590803212 events/Diskoteketbar-225737590803212.json
scrape_page 325557631163470 events/Dora3Trondheim-325557631163470.json
scrape_page 784700614931033 events/Goodomensbar-784700614931033.json scrape_page 784700614931033 events/Goodomensbar-784700614931033.json
scrape_page 1633600613619431 events/Hammerhead-1633600613619431.json scrape_page 1633600613619431 events/Hammerhead-1633600613619431.json
scrape_page 1673051982745157 events/HjortenScene-1673051982745157.json scrape_page 1673051982745157 events/HjortenScene-1673051982745157.json
scrape_page 11541693212 events/ISFiTNorway-11541693212.json scrape_page 11541693212 events/ISFiTNorway-11541693212.json
scrape_page 1419662314995709 events/KafeSkuret-1419662314995709.json scrape_page 1419662314995709 events/KafeSkuret-1419662314995709.json
scrape_page 1092418890774152 events/Kafelarssen-1092418890774152.json scrape_page 1092418890774152 events/Kafelarssen-1092418890774152.json
scrape_page 154134355099614 events/KonsertGalleriet-154134355099614.json
scrape_page 2198343290262409 events/Lager11-2198343290262409-trondheim.json scrape_page 2198343290262409 events/Lager11-2198343290262409-trondheim.json
scrape_page 176869899002150 events/Nordenfjelske-176869899002150.json
scrape_page 287716286232 events/Pstereo-287716286232.json
scrape_page 111985600537696 events/Sommer-i-Borggarden-111985600537696-111985600537696.json
scrape_page 151868258198492 events/Sukkerhuset-151868258198492.json scrape_page 151868258198492 events/Sukkerhuset-151868258198492.json
scrape_page 274218068628 events/TRONDHEIMISAK-274218068628.json scrape_page 274218068628 events/TRONDHEIMISAK-274218068628.json
scrape_page 705753499633189 events/TrondheimCamping-705753499633189.json scrape_page 705753499633189 events/TrondheimCamping-705753499633189.json
scrape_page 214229302015789 events/TrondheimJazzforum-214229302015789.json
scrape_page 311676952866578 events/TrondheimLive-311676952866578.json
scrape_page 114647705270950 events/TrondheimMetalFest-114647705270950.json
scrape_page 1866856830009864 events/TrondheimRocks-1866856830009864.json
scrape_page 175439175828277 events/TrondheimSpektrum-175439175828277.json scrape_page 175439175828277 events/TrondheimSpektrum-175439175828277.json
scrape_page 108747454194270 events/TrykkerietScene-108747454194270.json scrape_page 108747454194270 events/TrykkerietScene-108747454194270.json
scrape_page 626731467352429 events/WorkWorkTrd-626731467352429.json scrape_page 626731467352429 events/WorkWorkTrd-626731467352429.json
@ -55,8 +56,7 @@ scrape_page 118990964789505 events/clarioncollectiongrandolav-118990964789505.js
scrape_page 148274751888665 events/clariontrondheim-148274751888665.json scrape_page 148274751888665 events/clariontrondheim-148274751888665.json
scrape_page 378038755927834 events/comforthpark-378038755927834.json scrape_page 378038755927834 events/comforthpark-378038755927834.json
scrape_page 271908336649895 events/crispingloverrecordshop-271908336649895.json scrape_page 271908336649895 events/crispingloverrecordshop-271908336649895.json
scrape_page 860188704010725 events/feminalen-860188704010725.json scrape_page 654277341296114 events/fru.lundgreen-654277341296114.json
scrape_page 654277341296114 events/fru-654277341296114.lundgreen.json
scrape_page 236371750502642 events/galleri-hanne-236371750502642.json scrape_page 236371750502642 events/galleri-hanne-236371750502642.json
scrape_page 955982084466587 events/habitattrondheim-955982084466587.json scrape_page 955982084466587 events/habitattrondheim-955982084466587.json
scrape_page 143110949094001 events/ilabrainnstasjon-143110949094001.json scrape_page 143110949094001 events/ilabrainnstasjon-143110949094001.json
@ -65,7 +65,6 @@ scrape_page 80792973478 events/kamfest-80792973478.json
scrape_page 137220573544106 events/komikerliv-137220573544106.json scrape_page 137220573544106 events/komikerliv-137220573544106.json
scrape_page 1402925659778914 events/konsertkollektiv-1402925659778914.json scrape_page 1402925659778914 events/konsertkollektiv-1402925659778914.json
scrape_page 2056532634661437 events/kuk-2056532634661437.json scrape_page 2056532634661437 events/kuk-2056532634661437.json
scrape_page 642243462457769 events/kulturnattrondheim-642243462457769.json
scrape_page 246603018828671 events/kunsthalltrondheim-246603018828671.json scrape_page 246603018828671 events/kunsthalltrondheim-246603018828671.json
scrape_page 180524565650597 events/ladekaia-180524565650597.json scrape_page 180524565650597 events/ladekaia-180524565650597.json
scrape_page 1552366408164455 events/lamon-1552366408164455.scenen.json scrape_page 1552366408164455 events/lamon-1552366408164455.scenen.json
@ -73,7 +72,6 @@ scrape_page 101846779891549 events/lobbyen-101846779891549.json
scrape_page 191245541651071 events/lokal-191245541651071.trhm.json scrape_page 191245541651071 events/lokal-191245541651071.trhm.json
scrape_page 346065342451673 events/midtbyenrockeklubb-346065342451673.json scrape_page 346065342451673 events/midtbyenrockeklubb-346065342451673.json
scrape_page 127803117302354 events/modern-art-gallery-127803117302354.json scrape_page 127803117302354 events/modern-art-gallery-127803117302354.json
# scrape_page 1786002618299415 events/nidelvenbarogscene-1786002618299415.json
scrape_page 90016673206 events/olavsfest-90016673206.json scrape_page 90016673206 events/olavsfest-90016673206.json
scrape_page 149127815110411 events/olavshallenas-149127815110411.json scrape_page 149127815110411 events/olavshallenas-149127815110411.json
scrape_page 130558850296573 events/qualityhotelpanorama-130558850296573.json scrape_page 130558850296573 events/qualityhotelpanorama-130558850296573.json
@ -95,7 +93,7 @@ scrape_page 208801362485221 events/thonhotelprinsen-208801362485221.json
scrape_page 1649281185339329 events/trollrestaurant-1649281185339329.json scrape_page 1649281185339329 events/trollrestaurant-1649281185339329.json
scrape_page 104735766271007 events/trondelag-teater-104735766271007.json scrape_page 104735766271007 events/trondelag-teater-104735766271007.json
scrape_page 33687748452 events/trondercore-33687748452.json scrape_page 33687748452 events/trondercore-33687748452.json
scrape_page 112475092130212 events/trondheim-112475092130212.kunstmuseum.json scrape_page 112475092130212 events/trondheim.kunstmuseum-112475092130212.json
scrape_page 192236567852623 events/trondheimbluesklubb-192236567852623.json scrape_page 192236567852623 events/trondheimbluesklubb-192236567852623.json
scrape_page 125977737456625 events/trondheimcalling-125977737456625.json scrape_page 125977737456625 events/trondheimcalling-125977737456625.json
scrape_page 16582146804 events/trondheimfolkebibliotek-16582146804.json scrape_page 16582146804 events/trondheimfolkebibliotek-16582146804.json

2
bin/scrape

@ -1,6 +1,4 @@
#!/usr/bin/env node #!/usr/bin/env node
const sleep = (s) => new Promise((res) => setTimeout(res, s * 1000));
const minimist = require('minimist');
const number = process.argv[2]; const number = process.argv[2];
if (number == null) { if (number == null) {

126
bin/scrape.mjs

@ -0,0 +1,126 @@
import { get_page_events } from '../src/facebook/get-page-events.mjs';
import send from '../src/signal/send.mjs';
import fetch from 'node-fetch';
const api = 'http://localhost:3333';
const token =
// '831411806230c7e950c4eeb226499ef92bb6bdc4157797929a0e16d133dc13a8';
'1234567812345678123456781234567812345678123456781234567812345678';
const headers = { 'Content-Type': 'application/json' };
const scrape = async (pageID) => {
try {
const res = await get_page_events({
pageID,
get_upcoming_events: true,
get_past_events: false
});
return res;
} catch (e) {
console.error(e);
}
return [];
};
const unix = (a) => parseInt(new Date(a).valueOf() / 1000, 10);
const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
const updated = (oldEvent, scrapedEvent) => {
let keys = [
'canceled',
'end',
'start',
'draft',
'facebook_id',
'place_id',
'name',
'ticket_url',
'id'
];
for (let key of keys) {
if (oldEvent[key] != scrapedEvent[key]) {
return true;
}
}
return false;
};
(async () => {
let resp = await fetch(`${api}/places/?token=${token}`);
let places = await resp.json();
places = places.filter((place) => {
const scrape = place.scraper == 'facebook';
if (!scrape) {
console.log(
100,
`Skipping #${place.id}$ {place.name}. Reason: Scraper is ${place.scraper}`
);
}
return scrape;
});
for (let place of places) {
if (place.id < 13) {
console.log(100, `Skipping #${place.id} ${place.name}`);
continue;
} else {
console.log(100, `Scraping #${place.id} ${place.name}`);
}
const events = await scrape(place.facebook_id);
let payloads = [];
for (let event of events) {
payloads.push({
canceled: false,
end: -1,
start: unix(new Date(event.time_range.start)),
draft: false,
facebook_id: event.id,
place_id: place.id,
name: event.name ?? '',
ticket_url: event.event_buy_ticket_url ?? ''
});
}
for (let payload of payloads) {
let search = await fetch(
`${api}/search/events/?facebook_id=${payload.facebook_id}&token=${token}`
);
if (!search.ok) {
await sleep(200);
continue;
}
search = await search.json();
let new_event = search.length === 0;
let old_event;
if (!new_event) {
old_event = search[0];
}
let res;
if (new_event) {
res = await fetch(`${api}/events/?token=${token}`, {
method: 'POST',
body: JSON.stringify(payload),
headers
});
console.log(res.status, 'Insert', place.name, payload.name);
let newEvent = await res.text();
let msg = await send(newEvent, place);
console.log(res.status, 'Signal', msg);
} else if (old_event && updated(old_event, payload)) {
payload.id = old_event.id;
if (old_event.ticket_url.length > 0 && payload.ticket_url.length == 0) {
payload.ticket_url = old_event.ticket_url;
}
if (updated(old_event, payload)) {
res = await fetch(`${api}/events/${payload.id}/?token=${token}`, {
method: 'PATCH',
body: JSON.stringify(payload),
headers
});
console.log(res.status, 'Update', place.name, payload.name);
} else {
console.log(201, 'Skip', place.name, payload.name);
}
} else {
console.log(201, 'Skip', place.name, payload.name);
}
}
}
})();

6
package.json

@ -3,5 +3,11 @@
"https-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0",
"minimist": "^1.2.6", "minimist": "^1.2.6",
"node-fetch": "^3.2.3" "node-fetch": "^3.2.3"
},
"devDependencies": {
"eslint": "^8.19.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.2.1",
"prettier": "^2.7.1"
} }
} }

37
src/signal/send.mjs

@ -0,0 +1,37 @@
import fetch from 'node-fetch';
const headers = { 'Content-Type': 'application/json' };
export default async function send(event, place) {
let message;
try {
const format = (d) => {
return (
d.getFullYear() +
'-' +
('0' + (d.getMonth() + 1)).slice(-2) +
'-' +
('0' + d.getDate()).slice(-2) +
' ' +
('0' + d.getHours()).slice(-2) +
':' +
('0' + d.getMinutes()).slice(-2)
);
};
let newEvent = JSON.parse(event);
let startTime = `${format(new Date(newEvent.start * 1000))}`;
message = `${startTime} ${place.name}: ${newEvent.name}`;
let s = await fetch(`http://localhost:8080/v2/send`, {
body: JSON.stringify({
message,
number: '+4793478353',
recipients: ['+4793478353']
}),
method: 'POST',
headers
});
} catch (e) {
console.error(e);
}
return message;
}

571
yarn.lock

@ -2,6 +2,45 @@
# yarn lockfile v1 # yarn lockfile v1
"@eslint/eslintrc@^1.3.0":
version "1.3.0"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f"
integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
espree "^9.3.2"
globals "^13.15.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
js-yaml "^4.1.0"
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@humanwhocodes/config-array@^0.9.2":
version "0.9.5"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7"
integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==
dependencies:
"@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1"
minimatch "^3.0.4"
"@humanwhocodes/object-schema@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.7.1:
version "8.7.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
agent-base@6: agent-base@6:
version "6.0.2" version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@ -9,18 +48,245 @@ agent-base@6:
dependencies: dependencies:
debug "4" debug "4"
ajv@^6.10.0, ajv@^6.12.4:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
chalk@^4.0.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
dependencies:
color-name "~1.1.4"
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
cross-spawn@^7.0.2:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
dependencies:
path-key "^3.1.0"
shebang-command "^2.0.0"
which "^2.0.1"
data-uri-to-buffer@^4.0.0: data-uri-to-buffer@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b"
integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==
debug@4: debug@4, debug@^4.1.1, debug@^4.3.2:
version "4.3.4" version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies: dependencies:
ms "2.1.2" ms "2.1.2"
deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
dependencies:
esutils "^2.0.2"
escape-string-regexp@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-config-prettier@^8.5.0:
version "8.5.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
eslint-plugin-prettier@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b"
integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
dependencies:
prettier-linter-helpers "^1.0.0"
eslint-scope@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
eslint-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
dependencies:
eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint-visitor-keys@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
eslint@^8.19.0:
version "8.19.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.19.0.tgz#7342a3cbc4fbc5c106a1eefe0fd0b50b6b1a7d28"
integrity sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==
dependencies:
"@eslint/eslintrc" "^1.3.0"
"@humanwhocodes/config-array" "^0.9.2"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.3.2"
doctrine "^3.0.0"
escape-string-regexp "^4.0.0"
eslint-scope "^7.1.1"
eslint-utils "^3.0.0"
eslint-visitor-keys "^3.3.0"
espree "^9.3.2"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
functional-red-black-tree "^1.0.1"
glob-parent "^6.0.1"
globals "^13.15.0"
ignore "^5.2.0"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
minimatch "^3.1.2"
natural-compare "^1.4.0"
optionator "^0.9.1"
regexpp "^3.2.0"
strip-ansi "^6.0.1"
strip-json-comments "^3.1.0"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
espree@^9.3.2:
version "9.3.2"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596"
integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==
dependencies:
acorn "^8.7.1"
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.3.0"
esquery@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
dependencies:
estraverse "^5.1.0"
esrecurse@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
dependencies:
estraverse "^5.2.0"
estraverse@^5.1.0, estraverse@^5.2.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-diff@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
fast-levenshtein@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fetch-blob@^3.1.2, fetch-blob@^3.1.4: fetch-blob@^3.1.2, fetch-blob@^3.1.4:
version "3.1.5" version "3.1.5"
resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.5.tgz#0077bf5f3fcdbd9d75a0b5362f77dbb743489863" resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.5.tgz#0077bf5f3fcdbd9d75a0b5362f77dbb743489863"
@ -29,6 +295,26 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4:
node-domexception "^1.0.0" node-domexception "^1.0.0"
web-streams-polyfill "^3.0.3" web-streams-polyfill "^3.0.3"
file-entry-cache@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
dependencies:
flat-cache "^3.0.4"
flat-cache@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
dependencies:
flatted "^3.1.0"
rimraf "^3.0.2"
flatted@^3.1.0:
version "3.2.6"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2"
integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==
formdata-polyfill@^4.0.10: formdata-polyfill@^4.0.10:
version "4.0.10" version "4.0.10"
resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
@ -36,6 +322,47 @@ formdata-polyfill@^4.0.10:
dependencies: dependencies:
fetch-blob "^3.1.2" fetch-blob "^3.1.2"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==
glob-parent@^6.0.1:
version "6.0.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
dependencies:
is-glob "^4.0.3"
glob@^7.1.3:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
globals@^13.15.0:
version "13.16.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-13.16.0.tgz#9be4aca28f311aaeb974ea54978ebbb5e35ce46a"
integrity sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==
dependencies:
type-fest "^0.20.2"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
https-proxy-agent@^5.0.0: https-proxy-agent@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
@ -44,6 +371,91 @@ https-proxy-agent@^5.0.0:
agent-base "6" agent-base "6"
debug "4" debug "4"
ignore@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
dependencies:
parent-module "^1.0.0"
resolve-from "^4.0.0"
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-glob@^4.0.0, is-glob@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
dependencies:
argparse "^2.0.1"
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
dependencies:
prelude-ls "^1.2.1"
type-check "~0.4.0"
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.6: minimist@^1.2.6:
version "1.2.6" version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
@ -54,6 +466,11 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
node-domexception@^1.0.0: node-domexception@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
@ -68,7 +485,159 @@ node-fetch@^3.2.3:
fetch-blob "^3.1.4" fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10" formdata-polyfill "^4.0.10"
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
optionator@^0.9.1:
version "0.9.1"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
dependencies:
deep-is "^0.1.3"
fast-levenshtein "^2.0.6"
levn "^0.4.1"
prelude-ls "^1.2.1"
type-check "^0.4.0"
word-wrap "^1.2.3"
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
dependencies:
callsites "^3.0.0"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prettier-linter-helpers@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
dependencies:
fast-diff "^1.1.2"
prettier@^2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
punycode@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
regexpp@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
dependencies:
shebang-regex "^3.0.0"
shebang-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
dependencies:
prelude-ls "^1.2.1"
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
uri-js@^4.2.2:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
dependencies:
punycode "^2.1.0"
v8-compile-cache@^2.0.3:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
web-streams-polyfill@^3.0.3: web-streams-polyfill@^3.0.3:
version "3.2.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965" resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965"
integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA== integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==
which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
dependencies:
isexe "^2.0.0"
word-wrap@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==

Loading…
Cancel
Save