From 172bcfa80af8c9652b06fa0f3c56eba1dba3f99a Mon Sep 17 00:00:00 2001 From: unfirth <66843328+unfirthman@users.noreply.github.com> Date: Tue, 9 Aug 2022 22:36:57 -0400 Subject: [PATCH 01/19] Update README.md updated to reflect @unfirthman plans for python update of this repository --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 82b84ca..e8e7fc7 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,10 @@ # chs-source -sources for chs-shows + +## Python style + + +sources for chs-shows --- + +but now updated with python and beautiful soup by + +### @unfirthman From cfd7ff341d54e358d088699723273ece69d0d143 Mon Sep 17 00:00:00 2001 From: unfirth Date: Fri, 12 Aug 2022 13:57:30 -0400 Subject: [PATCH 02/19] Friday python update --- Python Rebuild/Music Hall.py | 106 +++++++++++++++++++++++++++++++++++ index.js | 3 +- show.js | 29 ++++++---- 3 files changed, 127 insertions(+), 11 deletions(-) create mode 100644 Python Rebuild/Music Hall.py diff --git a/Python Rebuild/Music Hall.py b/Python Rebuild/Music Hall.py new file mode 100644 index 0000000..532aadf --- /dev/null +++ b/Python Rebuild/Music Hall.py @@ -0,0 +1,106 @@ +### CHS music source Charleston Music Hall + + +import requests +from bs4 import BeautifulSoup +import numpy as np + +music_hall = requests.get("https://www.charlestonmusichall.com/shows/") +soup = BeautifulSoup(music_hall.content, "html.parser") + +music_hall_sect = soup.find_all(type="application/ld+json") + + +music_hall_list = list(music_hall_sect) + +music_hall_string = str(music_hall_list) +music_hall_string_quotes = music_hall_string.replace('"', ' ') + +result = music_hall_string_quotes.split(",") +# print('\n'.join(result)) + +result_strings = [] +for list in result: + result_strings.append(str(list)) + + +#### TRY BREAKING result OBJECT DOWN FURTHER, THEN TO NEAT DICT + +# print(result_strings) + +names = [] +for line in result_strings: + if line.index('name') == True: + names.append(line) +print(names) + +### attempt as a list iterator function + +# def sep(list, chunk_size): +# for item in range(0, len(list), chunk_size): +# yield list[item:item + chunk_size] + +# music_hall_split_item = sep(music_hall_list, 6) +# music_hall_split_list = list(music_hall_split_item) +# music_hall_split_dict = dict(music_hall_split_item) +# music_hall_split_string = str(music_hall_split_item) + + + + + +# print(len(music_hall_split_string)) + +# music_hall_names = [] +# for name, event in music_hall_split_dict: +# music_hall_names.append(name, ":", event) +# print(music_hall_names) + +# music_hall_items = [] + +# for list in music_hall_split_list: +# music_hall_items.append(list) + +# names = [] +# for item in music_hall_items: +# fresh_item = item.find('"name') +# names.append(fresh_item) + +# print(type(music_hall_split_list)) + + + +#### attempt to convert to list, to string, then into seperate lists + +# music_hall_list = list(music_hall_sect) +# music_hall_string = str(music_hall_list) +# music_hall_split = music_hall_string.split(",") + +# print(music_hall_split) + + +# print(music_hall_sect) +# event_name = [] + +# for event in music_hall_sect: +# event_name.append(event) +# print(event_name) + +# for event in music_hall_sect: +# name = music_hall_sect.find_all('name') +# event_name.append(name) +# print(event_name) + + + +# print(music_hall_sect.text()) +# music_hall_events = music_hall.find_all('script', attrs={'@type': "Event"}) +# print(music_hall_events) + +# print(type(music_hall_sect)) + +# music_hall_sect_text = music_hall_sect.text +# print(music_hall_sect_text) + + + diff --git a/index.js b/index.js index 0cd22c3..9b2531f 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,5 @@ + + var fs = require('fs') var queue = require('queue-async') var childProcess = require('child_process') @@ -31,4 +33,3 @@ show.getShows(function(result) { }) }) }) - diff --git a/show.js b/show.js index 5074059..84c24d6 100644 --- a/show.js +++ b/show.js @@ -1,7 +1,13 @@ -var levelup = require('levelup') -var queue = require('queue-async') -var moment = require('moment') -var db = levelup('./db') + +import js2py +from js2py import require + +original_code = """ + +let levelup = require('levelup') +let queue = require('queue-async') +let moment = require('moment') +let db = levelup('./db') exports.getShows = function(done) { getShows(function(result) { @@ -19,7 +25,7 @@ exports.addShows = function(shows) { // command line argument should be of format YYYY-MM-DD exports.referenceDate = function() { - var result = moment() + let result = moment() if( process.argv.length === 3 ) { result = moment( process.argv[2] ) } @@ -28,11 +34,11 @@ exports.referenceDate = function() } function getShows(done) { - var showsThisWeek = [] - var date = exports.referenceDate(); + let showsThisWeek = [] + let date = exports.referenceDate(); - var today = date.toISOString().slice(0,10) - var nextWeek = date.add(7, 'days').toISOString().slice(0,10) + let today = date.toISOString().slice(0,10) + let nextWeek = date.add(7, 'days').toISOString().slice(0,10) db.createReadStream({gte: today, lt: nextWeek}) .on('data', function(data) { showsThisWeek.push(data.value) @@ -46,7 +52,7 @@ function getShows(done) { } function addShows(shows, done) { - var q = queue(1) + let q = queue(1) shows.forEach(function (show) { q.defer(function (cb) { db.put(show.date + '!' + show.venue + '!' + show.title, JSON.stringify(show), function (err) { @@ -58,4 +64,7 @@ function addShows(shows, done) { console.log('putting') }) } +""" +result = js2py.eval_js(original_code) +print(result) \ No newline at end of file From 056a4f862c4b82320b958913298b0202282cdfa1 Mon Sep 17 00:00:00 2001 From: unfirth Date: Sat, 13 Aug 2022 19:37:35 -0400 Subject: [PATCH 03/19] update 081322 --- Python Rebuild/Music Hall v0.py | 157 ++++++++++++++++++++++++++++++++ Python Rebuild/Music Hall.py | 108 ++++++++++++++++++++++ 2 files changed, 265 insertions(+) create mode 100644 Python Rebuild/Music Hall v0.py create mode 100644 Python Rebuild/Music Hall.py diff --git a/Python Rebuild/Music Hall v0.py b/Python Rebuild/Music Hall v0.py new file mode 100644 index 0000000..40f397a --- /dev/null +++ b/Python Rebuild/Music Hall v0.py @@ -0,0 +1,157 @@ +### CHS music source Charleston Music Hall + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json +#### FUNCTIONS + +### attempt to clean string of []{} characters, but not working as of 8/13/22 +# def process_string(txt): +# special_chars = '@', '"', '{', '}' +# for char in txt: +# new_txt = txt.replace(special_chars, " ") +# return str(new_txt) + + +#### request html, beautiful soup results + +url = "https://www.charlestonmusichall.com/shows/" +result = requests.get(url) +doc = BeautifulSoup(result.text, "html5lib") + + +##### parsing by class type!!!!!!!! +events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") +print(events_block) + + +# #### convert beautiful soup result to string + +# events_block_string = str(events_block) +# result = events_block_string.split(",") +# result_split = '\n'.join(result) + +# #### convert each line to string +# big_string = "" +# for line in result_split: +# line_clean = str(line) +# big_string += line_clean +# # print(big_string) + +# ### remove special characters +# quotation_marks = big_string.replace('"', ' ') +# bracket_1 = quotation_marks.replace('{', ' ') +# bracket_2 = bracket_1.replace('}', ' ') +# bracket_3 = bracket_2.replace('[', ' ') +# bracket_4 = bracket_3.replace(']', ' ') +# ugh_ookay = bracket_4.replace('(', ' ') +# ugh_okay = ugh_ookay.replace(')', ' ') +# at_sign = ugh_okay.replace('@', ' ') +# number_sign = at_sign.replace('#', ' ') +# ampersand = number_sign.replace('&', ' ') +# colon_oscopy = ampersand.replace(':', ' ') +# # print(colon_oscopy) + + +# ##### split string into several sublists inside mast_list +# mast_list = colon_oscopy.split('\n') +# # print(mast_list) +# # print(type(mast_list)) +# # print(len(mast_list)) + +# new_list = list(enumerate(mast_list)) +# # print(new_list) + + +# if 'name' in new_list: +# return True + +### remove tuples isn't working +# clean_lines = "" +# dirty_lines = "" +# for line in ampersand: +# if type(line) != tuple: +# clean_lines += line +# else: +# dirty_lines += line +# print(dirty_lines) + +# clean_string = "" +# for line in big_string: +# processed_line = process_string(line) +# clean_string += processed_line + + + + + + + + + + + + +### BeautifulSoup html request + +# music_hall = requests.get("https://www.charlestonmusichall.com/shows/") +# soup = BeautifulSoup(music_hall.content, "html.parser") + +# music_hall_sect = soup.find_all(type="application/ld+json") + + +# music_hall_list = list(music_hall_sect) + +# music_hall_string = str(music_hall_list) +# music_hall_string_clean = process_string(music_hall_string) + +# music_hall_string_quotes = music_hall_string_clean.replace('"', ' ') + +# result = music_hall_string_quotes.split(",") +# # print('\n'.join(result)) + +# result_strings = [] +# for list in result: +# result_strings.append(str(list)) +# result_string_line = '\n'.join(result_strings) +# #### TRY BREAKING result OBJECT DOWN FURTHER, THEN TO NEAT DICT + +# # for line in result_string_line: +# # result_string_clean = process_string(line) +# # return result_string_clean + + +# result_string_to_list = result_string_line.split('\n') + + + +# true_lists = [] +# discard_lists = [] +# for list in result_string_to_list: +# if len(list) in result_string_to_list > 2: +# discard_lists.append(list) +# else: +# true_lists.append(list) + +# # print(true_lists) + +# true_list_keys = true_lists[::2] +# true_list_values = true_lists[1::2] +# # print(true_list_keys) +# # print(true_list_values) + +# true_dict = dict(zip(true_list_keys, true_list_values)) +# print(true_dict) + + + +### how to break down into key:value pairs + +# for line in result_string_line: +# line.split(",") + + + diff --git a/Python Rebuild/Music Hall.py b/Python Rebuild/Music Hall.py new file mode 100644 index 0000000..dde9dcc --- /dev/null +++ b/Python Rebuild/Music Hall.py @@ -0,0 +1,108 @@ +### CHS music source Charleston Music Hall + + +import requests +from bs4 import BeautifulSoup +import numpy as np + +music_hall = requests.get("https://www.charlestonmusichall.com/shows/") +soup = BeautifulSoup(music_hall.content, "html.parser") + +music_hall_sect = soup.find_all(type="application/ld+json") + + +music_hall_list = list(music_hall_sect) + +music_hall_string = str(music_hall_list) +music_hall_string_quotes = music_hall_string.replace('"', ' ') + +result = music_hall_string_quotes.split(",") +# print('\n'.join(result)) + +result_strings = [] +for list in result: + result_strings.append(str(list)) +result_string_line = '\n'.join(result_strings) +#### TRY BREAKING result OBJECT DOWN FURTHER, THEN TO NEAT DICT +print(result_string_line) +### how to break down into key:value pairs + + + + +# print(result_strings) + +# names = [] +# for line in result_strings: +# if line.index('name') == True: +# names.append(line) +# print(names) + +### attempt as a list iterator function + +# def sep(list, chunk_size): +# for item in range(0, len(list), chunk_size): +# yield list[item:item + chunk_size] + +# music_hall_split_item = sep(music_hall_list, 6) +# music_hall_split_list = list(music_hall_split_item) +# music_hall_split_dict = dict(music_hall_split_item) +# music_hall_split_string = str(music_hall_split_item) + + + + + +# print(len(music_hall_split_string)) + +# music_hall_names = [] +# for name, event in music_hall_split_dict: +# music_hall_names.append(name, ":", event) +# print(music_hall_names) + +# music_hall_items = [] + +# for list in music_hall_split_list: +# music_hall_items.append(list) + +# names = [] +# for item in music_hall_items: +# fresh_item = item.find('"name') +# names.append(fresh_item) + +# print(type(music_hall_split_list)) + + + +#### attempt to convert to list, to string, then into seperate lists + +# music_hall_list = list(music_hall_sect) +# music_hall_string = str(music_hall_list) +# music_hall_split = music_hall_string.split(",") + +# print(music_hall_split) + + +# print(music_hall_sect) +# event_name = [] + +# for event in music_hall_sect: +# event_name.append(event) +# print(event_name) + +# for event in music_hall_sect: +# name = music_hall_sect.find_all('name') +# event_name.append(name) +# print(event_name) + + + +# print(music_hall_sect.text()) +# music_hall_events = music_hall.find_all('script', attrs={'@type': "Event"}) +# print(music_hall_events) + +# print(type(music_hall_sect)) + +# music_hall_sect_text = music_hall_sect.text +# print(music_hall_sect_text) + From 365bd076ef536392230fc9d27be210117677739b Mon Sep 17 00:00:00 2001 From: unfirth Date: Sat, 13 Aug 2022 19:52:04 -0400 Subject: [PATCH 04/19] update 081322 --- index.js | 3 ++- show.js | 29 +++++++++++++++++++---------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/index.js b/index.js index 0cd22c3..9b2531f 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,5 @@ + + var fs = require('fs') var queue = require('queue-async') var childProcess = require('child_process') @@ -31,4 +33,3 @@ show.getShows(function(result) { }) }) }) - diff --git a/show.js b/show.js index 5074059..84c24d6 100644 --- a/show.js +++ b/show.js @@ -1,7 +1,13 @@ -var levelup = require('levelup') -var queue = require('queue-async') -var moment = require('moment') -var db = levelup('./db') + +import js2py +from js2py import require + +original_code = """ + +let levelup = require('levelup') +let queue = require('queue-async') +let moment = require('moment') +let db = levelup('./db') exports.getShows = function(done) { getShows(function(result) { @@ -19,7 +25,7 @@ exports.addShows = function(shows) { // command line argument should be of format YYYY-MM-DD exports.referenceDate = function() { - var result = moment() + let result = moment() if( process.argv.length === 3 ) { result = moment( process.argv[2] ) } @@ -28,11 +34,11 @@ exports.referenceDate = function() } function getShows(done) { - var showsThisWeek = [] - var date = exports.referenceDate(); + let showsThisWeek = [] + let date = exports.referenceDate(); - var today = date.toISOString().slice(0,10) - var nextWeek = date.add(7, 'days').toISOString().slice(0,10) + let today = date.toISOString().slice(0,10) + let nextWeek = date.add(7, 'days').toISOString().slice(0,10) db.createReadStream({gte: today, lt: nextWeek}) .on('data', function(data) { showsThisWeek.push(data.value) @@ -46,7 +52,7 @@ function getShows(done) { } function addShows(shows, done) { - var q = queue(1) + let q = queue(1) shows.forEach(function (show) { q.defer(function (cb) { db.put(show.date + '!' + show.venue + '!' + show.title, JSON.stringify(show), function (err) { @@ -58,4 +64,7 @@ function addShows(shows, done) { console.log('putting') }) } +""" +result = js2py.eval_js(original_code) +print(result) \ No newline at end of file From 7f54c2196c148c3312a81fdc6673258312b0c86a Mon Sep 17 00:00:00 2001 From: unfirth Date: Sun, 14 Aug 2022 12:35:08 -0400 Subject: [PATCH 05/19] this finds names of events and dates of events and zips them in a list --- Python Rebuild/Music Hall v01.py | 50 ++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Python Rebuild/Music Hall v01.py diff --git a/Python Rebuild/Music Hall v01.py b/Python Rebuild/Music Hall v01.py new file mode 100644 index 0000000..0d36fec --- /dev/null +++ b/Python Rebuild/Music Hall v01.py @@ -0,0 +1,50 @@ +### CHS music source Charleston Music Hall + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + +#### FUNCTIONS + + ### currently empty + + +#### request html, beautiful soup results + +url = "https://www.charlestonmusichall.com/shows/" +result = requests.get(url) +doc = BeautifulSoup(result.text, "html5lib") + + +##### parsing by class type!!!!!!!! +events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") +#### class is dates +dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-datetime cmh-event-dates") + + +### date list +date_time = [] +for date in dates_block: + item = date.get_text() + date_time.append(item) +# print(date_time) + + +### name list +name_list = [] +for title in events_block: + item = title.get_text() + name_list.append(item) +# print(name_list) +# print(len(name_list)) + +### zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) + +#### print lists!!!! +print(*names_dates_list, sep = "\n") + From f8878e262633bb66ef8454d81ec96d1a01556b21 Mon Sep 17 00:00:00 2001 From: unfirth Date: Sun, 14 Aug 2022 13:16:49 -0400 Subject: [PATCH 06/19] gaillard tin roof --- Python Rebuild/gaillard.py | 54 ++++++++++++++++++++++++++++++++++++++ Python Rebuild/tin roof.py | 50 +++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 Python Rebuild/gaillard.py create mode 100644 Python Rebuild/tin roof.py diff --git a/Python Rebuild/gaillard.py b/Python Rebuild/gaillard.py new file mode 100644 index 0000000..152d33e --- /dev/null +++ b/Python Rebuild/gaillard.py @@ -0,0 +1,54 @@ +### CHS music source Tin Roof + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + +#### FUNCTIONS + + ### currently empty + + +#### request html, beautiful soup results + +url = "https://gaillardcenter.org/buy-tickets/" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +##### parsing by class type!!!!!!!! +events_block = doc.find_all(class_="performance-item__title") +#### parsing by dates +dates_block = doc.find_all(class_="performance-item__date") +### parsing by detail +details_block = doc.find_all(class_="performance-item__details") + + + + +### date list +date_time = [] +for date in dates_block: + item = date.get_text() + date_time.append(item) +# print(date_time) + + +### name list +name_list = [] +for title in events_block: + item = title.get_text() + name_list.append(item) +# # print(name_list) +# # print(len(name_list)) + +# ### zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) + +# #### print lists!!!! +print(*names_dates_list, sep = "\n") + diff --git a/Python Rebuild/tin roof.py b/Python Rebuild/tin roof.py new file mode 100644 index 0000000..8b40d84 --- /dev/null +++ b/Python Rebuild/tin roof.py @@ -0,0 +1,50 @@ +### CHS music source Tin Roof + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + +#### FUNCTIONS + + ### currently empty + + +#### request html, beautiful soup results + +url = "https://charlestontinroof.com/#schedule" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +##### parsing by class type!!!!!!!! +events_block = doc.find_all(tag="ng-scope") +#### class is dates +dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-datetime cmh-event-dates") +print(doc.prettify()) + +# ### date list +# date_time = [] +# for date in dates_block: +# item = date.get_text() +# date_time.append(item) +# # print(date_time) + + +# ### name list +# name_list = [] +# for title in events_block: +# item = title.get_text() +# name_list.append(item) +# # print(name_list) +# # print(len(name_list)) + +# ### zip lists +# names_dates_list = zip(name_list, date_time) +# names_dates_list = list(names_dates_list) + +# #### print lists!!!! +# print(*names_dates_list, sep = "\n") + From fc762fb30ecf7ca7e25116c755f05b2308aee39e Mon Sep 17 00:00:00 2001 From: unfirth Date: Mon, 15 Aug 2022 11:08:01 -0400 Subject: [PATCH 07/19] 081522 morning update --- Python Rebuild/chs pour house.py | 61 ++++++++++++++++++++++++++++++++ Python Rebuild/music farm.py | 55 ++++++++++++++++++++++++++++ Python Rebuild/royal americal.py | 54 ++++++++++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 Python Rebuild/chs pour house.py create mode 100644 Python Rebuild/music farm.py create mode 100644 Python Rebuild/royal americal.py diff --git a/Python Rebuild/chs pour house.py b/Python Rebuild/chs pour house.py new file mode 100644 index 0000000..ef97ffd --- /dev/null +++ b/Python Rebuild/chs pour house.py @@ -0,0 +1,61 @@ +### CHS music source Tin Roof + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + +#### FUNCTIONS + + ### currently empty + + +#### request html, beautiful soup results + +url = "https://charlestonpourhouse.com/shows/" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +##### parsing by class type!!!!!!!! + +### parsing by event name +events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") +#### parsing by dates +dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-datetime") + +### parsing by detail +details_block = doc.find_all(class_="sg-tribe-events-calendar-list__event-extra-info") + + + + +### date list +date_time = [] +for date in dates_block: + item = date.get_text(strip=True) + date_time.append(item) +print(date_time) + + +### name list +name_list = [] +for title in events_block: + item = title.get_text(strip=True) + name_list.append(item) +# print(name_list) +# # print(len(name_list)) + +### more details + + + +# ### zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) + +# #### print lists!!!! +print(*names_dates_list, sep = "\n") + diff --git a/Python Rebuild/music farm.py b/Python Rebuild/music farm.py new file mode 100644 index 0000000..8bff73c --- /dev/null +++ b/Python Rebuild/music farm.py @@ -0,0 +1,55 @@ +### CHS music source Tin Roof + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + +#### FUNCTIONS + + ### currently empty + + +#### request html, beautiful soup results + +url = "https://www.musicfarm.com/shows/" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +##### parsing by class type!!!!!!!! +events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") +#### parsing by dates +dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-daynum tribe-common-h5 tribe-common-h4--min-medium") + +### parsing by detail +details_block = doc.find_all("h3") + + + + +### date list +date_time = [] +for date in dates_block: + item = date.get_text(strip=True) + date_time.append(item) +# print(date_time) + + +### name list +name_list = [] +for title in events_block: + item = title.get_text(strip=True) + name_list.append(item) +# # print(name_list) +# # print(len(name_list)) + +# ### zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) + +# #### print lists!!!! +print(*names_dates_list, sep = "\n") + diff --git a/Python Rebuild/royal americal.py b/Python Rebuild/royal americal.py new file mode 100644 index 0000000..56e0987 --- /dev/null +++ b/Python Rebuild/royal americal.py @@ -0,0 +1,54 @@ +### CHS music source Tin Roof + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + +#### FUNCTIONS + + ### currently empty + + +#### request html, beautiful soup results + +url = "https://www.theroyalamerican.com/schedule" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +##### parsing by class type!!!!!!!! +events_block = doc.find_all(class_="eventlist-title-link") +#### parsing by dates +dates_block = doc.find_all(class_="event-date") +### parsing by detail +# details_block = doc.find_all(class_="performance-item__details") + + + + +### date list +date_time = [] +for date in dates_block: + item = date.get_text() + date_time.append(item) +# print(date_time) + + +### name list +name_list = [] +for title in events_block: + item = title.get_text() + name_list.append(item) +# # print(name_list) +# # print(len(name_list)) + +# ### zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) + +# #### print lists!!!! +print(*names_dates_list, sep = "\n") + From 04100cead0494409d00cdff972e8afff7cac2a62 Mon Sep 17 00:00:00 2001 From: unfirth Date: Mon, 15 Aug 2022 16:40:01 -0400 Subject: [PATCH 08/19] 081522 afternoon update --- Python Rebuild/functions/gaillard.py | 48 ++++++++++++ Python Rebuild/functions/windjammer.py | 98 ++++++++++++++++++++++++ Python Rebuild/theater99.py | 76 +++++++++++++++++++ Python Rebuild/windjammer.py | 100 +++++++++++++++++++++++++ 4 files changed, 322 insertions(+) create mode 100644 Python Rebuild/functions/gaillard.py create mode 100644 Python Rebuild/functions/windjammer.py create mode 100644 Python Rebuild/theater99.py create mode 100644 Python Rebuild/windjammer.py diff --git a/Python Rebuild/functions/gaillard.py b/Python Rebuild/functions/gaillard.py new file mode 100644 index 0000000..973e5fb --- /dev/null +++ b/Python Rebuild/functions/gaillard.py @@ -0,0 +1,48 @@ +### CHS music source Gaillard + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + + +def gaillard_info() + + +#### request html, beautiful soup results + +url = "https://gaillardcenter.org/buy-tickets/" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +##### parsing by class type!!!!!!!! +events_block = doc.find_all(class_="performance-item__title") +#### parsing by dates +dates_block = doc.find_all(class_="performance-item__date") +### parsing by detail +details_block = doc.find_all(class_="performance-item__details") + + +### date list +date_time = [] +for date in dates_block: + item = date.get_text() + date_time.append(item) + + +### name list +name_list = [] +for title in events_block: + item = title.get_text() + name_list.append(item) + +# ### zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) + +# #### print lists!!!! +print(*names_dates_list, sep = "\n") + diff --git a/Python Rebuild/functions/windjammer.py b/Python Rebuild/functions/windjammer.py new file mode 100644 index 0000000..c5d7a37 --- /dev/null +++ b/Python Rebuild/functions/windjammer.py @@ -0,0 +1,98 @@ +### CHS music source Theater 99 + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + + +def + +#### request html, beautiful soup results + +url = "https://the-windjammer.com/events/" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +##### parsing by class type!!!!!!!! + +### parsing by event name +events_block = doc.find_all(class_="event-arc-title") +#### parsing by dates + + +find_day_item = doc.find_all(class_="event-arc-day") +find_month_item = doc.find_all(class_="event-arc-month") + +find_day = [] +for day in find_day_item: + item = day.get_text() + find_day.append(item) + +find_month = [] +for month in find_month_item: + item = month.get_text() + find_month.append(item) + + +dates_block_item = zip(find_day, find_month) +date_time = list(dates_block_item) + +# print(date_time) + + +## parsing by detail +# details_block = doc.find_all(class_="event_arc_info") +# print(details_block) + + + +# ### date list +# date_time = [] +# for date in dates_block: +# item = date.get_text(strip=True) +# date_time.append(item) +# # print(date_time) + + +### name list +name_list = [] +for title in events_block: + item = title.get_text(strip=True) + name_list.append(item) + +# print(name_list) + +#### turn into title style +# name_list = [] +# for cap in name_list_caps: +# cap_title = str(cap.title()) +# name_list.append(cap_title) + +# print(name_list) + + +### more details + +# detail_list = [] +# for sect in details_block: +# item = sect.get_text(strip=True) +# detail_list.append(item) + + +# ### zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) + + + +# names_dates_info = zip(names_dates_list, detail_list) + + + +# #### print lists!!!! +print(*names_dates_list, sep = "\n") + diff --git a/Python Rebuild/theater99.py b/Python Rebuild/theater99.py new file mode 100644 index 0000000..2633562 --- /dev/null +++ b/Python Rebuild/theater99.py @@ -0,0 +1,76 @@ +### CHS music source Theater 99 + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + +#### FUNCTIONS + + ### currently empty + + +#### request html, beautiful soup results + +url = "https://theatre99.com/schedule/" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +##### parsing by class type!!!!!!!! + +### parsing by event name +events_block = doc.find_all(class_="ai1ec-event-title") +#### parsing by dates +dates_block = doc.find_all(class_="ai1ec-event-time") + +### parsing by detail +details_block = doc.find_all(class_="ai1ec-popup-excerpt") + + + + + +### date list +date_time = [] +for date in dates_block: + item = date.get_text(strip=True) + date_time.append(item) +# print(date_time) + + +### name list +name_list_caps = [] +for title in events_block: + item = title.get_text(strip=True) + name_list_caps.append(item) + +#### turn into title style +name_list = [] +for cap in name_list_caps: + cap_title = str(cap.title()) + name_list.append(cap_title) + +# print(name_list) + + +### more details + +detail_list = [] +for sect in details_block: + item = sect.get_text(strip=True) + detail_list.append(item) + + +# ### zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) +names_dates_info = zip(names_dates_list, detail_list) + + + +# #### print lists!!!! +print(*names_dates_info, sep = "\n") + diff --git a/Python Rebuild/windjammer.py b/Python Rebuild/windjammer.py new file mode 100644 index 0000000..4a4b202 --- /dev/null +++ b/Python Rebuild/windjammer.py @@ -0,0 +1,100 @@ +### CHS music source Theater 99 + +### Imports +import requests +from bs4 import BeautifulSoup +import numpy as np +import regex as re +import json + +#### FUNCTIONS + + ### currently empty + + +#### request html, beautiful soup results + +url = "https://the-windjammer.com/events/" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +##### parsing by class type!!!!!!!! + +### parsing by event name +events_block = doc.find_all(class_="event-arc-title") +#### parsing by dates + + +find_day_item = doc.find_all(class_="event-arc-day") +find_month_item = doc.find_all(class_="event-arc-month") + +find_day = [] +for day in find_day_item: + item = day.get_text() + find_day.append(item) + +find_month = [] +for month in find_month_item: + item = month.get_text() + find_month.append(item) + + +dates_block_item = zip(find_day, find_month) +date_time = list(dates_block_item) + +# print(date_time) + + +## parsing by detail +# details_block = doc.find_all(class_="event_arc_info") +# print(details_block) + + + +# ### date list +# date_time = [] +# for date in dates_block: +# item = date.get_text(strip=True) +# date_time.append(item) +# # print(date_time) + + +### name list +name_list = [] +for title in events_block: + item = title.get_text(strip=True) + name_list.append(item) + +# print(name_list) + +#### turn into title style +# name_list = [] +# for cap in name_list_caps: +# cap_title = str(cap.title()) +# name_list.append(cap_title) + +# print(name_list) + + +### more details + +# detail_list = [] +# for sect in details_block: +# item = sect.get_text(strip=True) +# detail_list.append(item) + + +# ### zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) + + + +# names_dates_info = zip(names_dates_list, detail_list) + + + +# #### print lists!!!! +print(*names_dates_list, sep = "\n") + From 94d23769ed0ce0db9ca670af9654e984331e6c70 Mon Sep 17 00:00:00 2001 From: unfirthman Date: Tue, 25 Apr 2023 17:29:18 -0400 Subject: [PATCH 09/19] anuStart --- CNAME | 1 - LICENSE | 22 ------ Python Rebuild/functions/gaillard.py | 60 +++++++-------- Python Rebuild/music farm.py | 2 +- README.md | 10 --- about.html | 16 ---- generateHTML.js | 110 --------------------------- index.js | 35 --------- makePage.js | 9 --- missing.md | 2 - package.json | 27 ------- public/css/style.css | 99 ------------------------ show.js | 70 ----------------- show.md | 13 ---- sources/gaillard.js | 35 --------- sources/home-team-si.js | 34 --------- sources/home-team-wa.js | 35 --------- sources/music-farm.js | 75 ------------------ sources/music-hall.js | 53 ------------- sources/pour-house.js | 71 ----------------- sources/royal-american.js | 63 --------------- sources/sparrow.js | 57 -------------- sources/theatre-99.js | 68 ----------------- sources/tin-roof.js | 56 -------------- sources/windjammer.js | 60 --------------- sources/woolfe-street.js | 58 -------------- 26 files changed, 29 insertions(+), 1112 deletions(-) delete mode 100644 CNAME delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 about.html delete mode 100644 generateHTML.js delete mode 100644 index.js delete mode 100644 makePage.js delete mode 100644 missing.md delete mode 100644 package.json delete mode 100644 public/css/style.css delete mode 100644 show.js delete mode 100644 show.md delete mode 100644 sources/gaillard.js delete mode 100644 sources/home-team-si.js delete mode 100644 sources/home-team-wa.js delete mode 100644 sources/music-farm.js delete mode 100644 sources/music-hall.js delete mode 100644 sources/pour-house.js delete mode 100644 sources/royal-american.js delete mode 100644 sources/sparrow.js delete mode 100644 sources/theatre-99.js delete mode 100644 sources/tin-roof.js delete mode 100644 sources/windjammer.js delete mode 100644 sources/woolfe-street.js diff --git a/CNAME b/CNAME deleted file mode 100644 index 1da435a..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -chs-tonight.com diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f16cf1b..0000000 --- a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 DanHanf - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/Python Rebuild/functions/gaillard.py b/Python Rebuild/functions/gaillard.py index 973e5fb..bd1162a 100644 --- a/Python Rebuild/functions/gaillard.py +++ b/Python Rebuild/functions/gaillard.py @@ -1,6 +1,6 @@ -### CHS music source Gaillard +# CHS music source Gaillard -### Imports +# Imports import requests from bs4 import BeautifulSoup import numpy as np @@ -8,41 +8,37 @@ import json -def gaillard_info() +def gaillard_info(): + # request html, beautiful soup results -#### request html, beautiful soup results + url = "https://gaillardcenter.org/buy-tickets/" + result = requests.get(url) + doc = BeautifulSoup(result.text, "lxml") -url = "https://gaillardcenter.org/buy-tickets/" -result = requests.get(url) -doc = BeautifulSoup(result.text, "lxml") + # parsing by class type!!!!!!!! + events_block = doc.find_all(class_="performance-item__title") + # parsing by dates + dates_block = doc.find_all(class_="performance-item__date") + # parsing by detail + #details_block = doc.find_all(class_="performance-item__details") + # date list + date_time = [] + for date in dates_block: + item = date.get_text() + date_time.append(item) -##### parsing by class type!!!!!!!! -events_block = doc.find_all(class_="performance-item__title") -#### parsing by dates -dates_block = doc.find_all(class_="performance-item__date") -### parsing by detail -details_block = doc.find_all(class_="performance-item__details") + # name list + name_list = [] + for title in events_block: + item = title.get_text() + name_list.append(item) + # ### zip lists + names_dates_list = zip(name_list, date_time) + names_dates_list = list(names_dates_list) -### date list -date_time = [] -for date in dates_block: - item = date.get_text() - date_time.append(item) - - -### name list -name_list = [] -for title in events_block: - item = title.get_text() - name_list.append(item) - -# ### zip lists -names_dates_list = zip(name_list, date_time) -names_dates_list = list(names_dates_list) - -# #### print lists!!!! -print(*names_dates_list, sep = "\n") + # #### print lists!!!! + print(*names_dates_list, sep = "\n") diff --git a/Python Rebuild/music farm.py b/Python Rebuild/music farm.py index 8bff73c..475cce9 100644 --- a/Python Rebuild/music farm.py +++ b/Python Rebuild/music farm.py @@ -23,7 +23,7 @@ events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") #### parsing by dates dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-daynum tribe-common-h5 tribe-common-h4--min-medium") - + ### parsing by detail details_block = doc.find_all("h3") diff --git a/README.md b/README.md deleted file mode 100644 index e8e7fc7..0000000 --- a/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# chs-source - -## Python style - - -sources for chs-shows --- - -but now updated with python and beautiful soup by - -### @unfirthman diff --git a/about.html b/about.html deleted file mode 100644 index e958c0b..0000000 --- a/about.html +++ /dev/null @@ -1,16 +0,0 @@ - - - about - - - - - - -
-

this is a website that scrapes some other websites so that you can see, at a glance, what's happening tonight in charleston.

-

as an added bonus, you can also see what's coming up this week.

-

code is on github. feel free to fork/send a pull request.

-

created by dan hanf and morgan herlocker. inspired by dctn by tom macwright. - - \ No newline at end of file diff --git a/generateHTML.js b/generateHTML.js deleted file mode 100644 index 9dc8b97..0000000 --- a/generateHTML.js +++ /dev/null @@ -1,110 +0,0 @@ -var moment = require("moment") -var show = require('./show.js') -var gaillard = [], hometeamsi = [], hometeamwa = [], musicfarm = [], musichall = [], pourhouse = [], royalamerican = [] - , sparrow = [], theatre99 = [], tinroof = [], windjammer = [], tonight = [], thisWeek = [], woolfe =[] - -module.exports = function(shows, done) { - sortShows(shows) - var tonightList = tonightHTML(tonight) - thisWeek.push(generateHTML(gaillard, 'Gaillard Center')) - thisWeek.push(generateHTML(hometeamsi, "Home Team Sullivan's Island")) - thisWeek.push(generateHTML(hometeamwa, "Home Team West Ashley")) - thisWeek.push(generateHTML(musicfarm, 'Music Farm')) - thisWeek.push(generateHTML(musichall, 'Charleston Music Hall')) - thisWeek.push(generateHTML(pourhouse, 'Pour House')) - thisWeek.push(generateHTML(royalamerican, 'The Royal American')) - thisWeek.push(generateHTML(sparrow, 'The Sparrow')) - thisWeek.push(generateHTML(theatre99, 'Theatre 99')) - thisWeek.push(generateHTML(tinroof, 'Tin Roof')) - thisWeek.push(generateHTML(windjammer, 'The Windjammer')) - thisWeek.push(generateHTML(woolfe, 'Woolfe Street')) - thisWeek.push([""]) - done(tonightList, thisWeek) -} - -function sortShows(shows) { - var today = show.referenceDate().format('YYYY-MM-DD') - shows.forEach(function(show) { - show = JSON.parse(show) - var venue = show.venue - if(venue === 'Gaillard Center') {gaillard.push(show)} - else if(venue === "Home Team Sullivan's Island") {hometeamsi.push(show)} - else if(venue === 'Home Team West Ashley') {hometeamwa.push(show)} - else if(venue === 'Music Farm') {musicfarm.push(show)} - else if(venue === 'Charleston Music Hall') {musichall.push(show)} - else if(venue === 'Pour House') {pourhouse.push(show)} - else if(venue === 'The Royal American') {royalamerican.push(show)} - else if(venue === 'The Sparrow') {sparrow.push(show)} - else if(venue === 'Theatre 99') {theatre99.push(show)} - else if(venue === 'Tin Roof') {tinroof.push(show)} - else if(venue === 'The Windjammer') {windjammer.push(show)} - else if(venue === 'Woolfe Street') {woolfe.push(show)} - if(show.date === today) {tonight.push(show)} - }) -} - -function tonightHTML(shows) { - var today = moment().format("MMMM Do YYYY") - // generate all the boilerplate stuff - var html = "chs-tonight" - html += "" - // google analytics - html += "" - // now here's the meat - html += "

" - html += "

"+today+"

" - html += "

TON" - html += "IGHT

" - html += "
    " - shows.forEach(function(show) { - html += "
  • " - if(show.url) {html+="

    "+show.title+"

    "} - else {html+= "

    "+show.title+"

    "} - if(show.time) {html += "Time: "+show.time+"
    "} - if(show.price) {html += "Price: "+show.price+"
    "} - if(show.details) {html += "Details: "+show.details+"
    "} - html += "
" - }) - html += "" - html += "

THI" - html += "S WE" - html += "EK

" - return html -} - -function generateHTML(shows, venue) { - if(shows.length > 0) { - var venueUrl = shows[0].venueUrl - var html = "
    " - } - else var html = "

    "+venue+"

      " - shows.forEach(function(show) { - var newDate = [] - var date = show.date.split('-') - var year = date[0] - var month = date[1] - var day = date[2] - newDate.push(month) - newDate.push(day) - newDate.push(year) - html += "
    • " - if(show.url) {html+="

      "+show.title+"

      "} - else {html+= "

      "+show.title+"

      "} - html += "Date: "+newDate.join('-')+"
      " - if(show.time) {html += "Time: "+show.time+"
      "} - if(show.price) {html += "Price: "+show.price+"
      "} - if(show.details) {html += "Details: "+show.details+"
      "} - if(show.age) {html += "Age: "+show.age+"
      "} - html += "
    • " - }) - html += "
    " - return html -} - diff --git a/index.js b/index.js deleted file mode 100644 index 9b2531f..0000000 --- a/index.js +++ /dev/null @@ -1,35 +0,0 @@ - - -var fs = require('fs') -var queue = require('queue-async') -var childProcess = require('child_process') -var show = require('./show.js') -var generateHTML = require('./generateHTML.js') -var makePage = require('./makePage.js') - -// Scrapers run / DB updated every 30 minutes -//new cronJob('*/30 * * * *', function(){ -fs.readdir(__dirname+'/sources', function(err, dirs){ - var q = queue() - dirs.forEach(function(dir){ - var fn = require(__dirname + '/sources/' + dir) - q.defer(fn) - }) - q.awaitAll(function(errs, results){ - var shows = [] - results.forEach(function(venue){ - shows = shows.concat(venue) - }) - show.addShows(shows) - }) -}) - -show.getShows(function(result) { - generateHTML(result, function(tonight, thisWeek) { - // returns html for tonight and array of html for each venue this week - makePage(tonight, thisWeek.join(' '), function() { - childProcess.execSync('git add .; git commit -m "refresh"; git push origin gh-pages;') - //console.log('done') - }) - }) -}) diff --git a/makePage.js b/makePage.js deleted file mode 100644 index 79aaaea..0000000 --- a/makePage.js +++ /dev/null @@ -1,9 +0,0 @@ -var fs = require('fs') - -module.exports = function(tonight, thisWeek, done) { - var data = tonight - data += thisWeek - fs.writeFile('index.html', data, function(){ - done() - }) -} \ No newline at end of file diff --git a/missing.md b/missing.md deleted file mode 100644 index ac11347..0000000 --- a/missing.md +++ /dev/null @@ -1,2 +0,0 @@ -##missing -- The Mill diff --git a/package.json b/package.json deleted file mode 100644 index 4532cc0..0000000 --- a/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "chs-source", - "version": "1.0.0", - "description": "source for chs-shows", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/DanHanf/chs-source.git" - }, - "author": "dan hanf", - "license": "MIT", - "bugs": { - "url": "https://github.com/DanHanf/chs-source/issues" - }, - "homepage": "https://github.com/DanHanf/chs-source#readme", - "dependencies": { - "cheerio": "^0.19.0", - "leveldown": "^1.3.0", - "levelup": "^1.2.1", - "moment": "^2.10.3", - "queue-async": "^1.0.7", - "request": "^2.58.0" - } -} diff --git a/public/css/style.css b/public/css/style.css deleted file mode 100644 index 27598b5..0000000 --- a/public/css/style.css +++ /dev/null @@ -1,99 +0,0 @@ -html { - font-family: 'Quicksand', monospace; - font-size: 14px; -} -body { - color: #000; - background-color:#FFF; - margin-left:25%; - margin-right:25%; -} -ul { - list-style:none; -} -h1 { - text-align:center; - background-color: #000; - color:#FFF; - padding:15px; -} -h2 { - margin-top:5px; - margin-bottom:5px; -} -h3 { - margin-top: 5px; - margin-bottom: 5px; -} -a { - color:#FF0000; - text-decoration: none -} -a:hover { - color:#FFF; - background-color: #FF0000; -} -h2 a { - color:#000; -} -h2 a:hover { - color: #FFF; - background-color:#000; -} -#nav { - text-align: center; -} -#about { - margin-top:25%; - text-align:center; - border:1px dashed black; -} -/*.red { - color:#FF0000; - background-color:#551a8b; -} -.orange { - color:#FF7D00; - background-color:#4b0082; -} -.yellow { - color:#FFFF00; - background-color:#0000FF; -} -.green { - color:#000; - background-color:#00FF00; -} -.blue { - color:#0000FF; - background-color:#FFFF00; -} -.indigo { - color:#4b0082; - background-color:#FF7D00; -} -.violet { - color:#551a8b; - background-color:#FF0000; -}*/ -.venueName { - background-color:#FFF; - color:#000; - width:100%; - text-decoration: underline; - letter-spacing: .15em; -} -.showItem { - -} -.spacer { - display: block; - margin-top:2px; - margin-bottom:2px; - background-color:#000; - height:1px; - width:100%; -} -#date { - text-align: center; -} diff --git a/show.js b/show.js deleted file mode 100644 index 84c24d6..0000000 --- a/show.js +++ /dev/null @@ -1,70 +0,0 @@ - -import js2py -from js2py import require - -original_code = """ - -let levelup = require('levelup') -let queue = require('queue-async') -let moment = require('moment') -let db = levelup('./db') - -exports.getShows = function(done) { - getShows(function(result) { - done(result) - }) -} - -exports.addShows = function(shows) { - addShows(shows, function() { - console.log('written') - }) -} - -// if there is a date on the command line, use that. else use current moment( -// command line argument should be of format YYYY-MM-DD -exports.referenceDate = function() -{ - let result = moment() - - if( process.argv.length === 3 ) - { result = moment( process.argv[2] ) } - - return result; -} - -function getShows(done) { - let showsThisWeek = [] - let date = exports.referenceDate(); - - let today = date.toISOString().slice(0,10) - let nextWeek = date.add(7, 'days').toISOString().slice(0,10) - db.createReadStream({gte: today, lt: nextWeek}) - .on('data', function(data) { - showsThisWeek.push(data.value) - }) - .on('error', function(err) { - console.log('err::::'+err) - }) - .on('end', function() { - done(showsThisWeek) - }) -} - -function addShows(shows, done) { - let q = queue(1) - shows.forEach(function (show) { - q.defer(function (cb) { - db.put(show.date + '!' + show.venue + '!' + show.title, JSON.stringify(show), function (err) { - cb(null, null) - }) - }) - }) - q.awaitAll(function () { - console.log('putting') - }) -} -""" -result = js2py.eval_js(original_code) - -print(result) \ No newline at end of file diff --git a/show.md b/show.md deleted file mode 100644 index 8146bc7..0000000 --- a/show.md +++ /dev/null @@ -1,13 +0,0 @@ -###show spec - - ```json -{ - "venue", - "title", - "url", - "date", - "price", - "age", - "details" -} -``` \ No newline at end of file diff --git a/sources/gaillard.js b/sources/gaillard.js deleted file mode 100644 index 891f7aa..0000000 --- a/sources/gaillard.js +++ /dev/null @@ -1,35 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , url = 'http://www.gaillardcenter.com/buy-tickets/' - , shows = [] - -gaillard = function(done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - $('.event-promo').each(function(i, elem) { - var $$ = cheerio.load(elem) - var date = $$('div.date').text().trim().split('Multiple Dates').join('').split('.').join('/') - date = normalizeDate(date) - var show = { - venue: 'Gaillard Center', - venueUrl: 'http://www.gaillardcenter.com/', - title: $$('div.name').text().trim(), - url: 'http://www.gaillardcenter.com'+$$('div.overlay').children().attr('href'), - date: date - } - shows.push(show) - }) - done(null, shows) - }) -} - -normalizeDate = function(date) { - date = date.split('/') - var month = date.shift() - var day = date.shift() - date.push(month) - date.push(day) - return date.join('-') -} - -module.exports = gaillard diff --git a/sources/home-team-si.js b/sources/home-team-si.js deleted file mode 100644 index 68d3e57..0000000 --- a/sources/home-team-si.js +++ /dev/null @@ -1,34 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , url = 'http://hometeambbq.com/music-and-special-events/calendar/category/sullivans-island/' - , shows = [] - -function hometeamsi(done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - - $('#eventList').find('li').each(function(i, elem) { - var year = $(elem).parent().parent().attr('id').split('-')[1] - var month = $(elem).parent().parent().attr('id').split('-')[0] - var day = getDay($(elem).find('h3').text().split(':')[0].trim().split('. ')[1]) - var show = { - venue: "Home Team Sullivan's Island", - venueUrl: 'http://hometeambbq.com/about/sullivans-island/', - title: $(elem).find('h3').text().split(':')[1].trim(), - date: year + '-' + month + '-' + day, - price: $(elem).find('h4.price').text(), - time: $(elem).find('h5 span').text() - } - shows.push(show) - }) - done(null, shows) - }) -} - -function getDay(str) { - var day = str.toString() - if(day.length === 1) day = '0' + day - return day -} - -module.exports = hometeamsi \ No newline at end of file diff --git a/sources/home-team-wa.js b/sources/home-team-wa.js deleted file mode 100644 index f766210..0000000 --- a/sources/home-team-wa.js +++ /dev/null @@ -1,35 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , url = 'http://hometeambbq.com/music-and-special-events/calendar/category/west-ashley/' - , shows = [] - -function hometeamwa(done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - - $('#eventList').find('li').each(function(i, elem) { - var year = $(elem).parent().parent().attr('id').split('-')[1] - var month = $(elem).parent().parent().attr('id').split('-')[0] - var day = getDay($(elem).find('h3').text().split(':')[0].trim().split('. ')[1]) - var show = { - venue: "Home Team West Ashley", - venueUrl: 'http://hometeambbq.com/about/west-ashley/', - title: $(elem).find('h3').text().split(':')[1].trim(), - date: year + '-' + month + '-' + day, - price: $(elem).find('h4.price').text(), - time: $(elem).find('h5 span').text() - } - shows.push(show) - }) - done(null, shows) - }) -} - -function getDay(str) { - var day = str.toString() - if(day.length === 1) day = '0' + day - return day -} - - -module.exports = hometeamwa \ No newline at end of file diff --git a/sources/music-farm.js b/sources/music-farm.js deleted file mode 100644 index 34eb8d6..0000000 --- a/sources/music-farm.js +++ /dev/null @@ -1,75 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , url = 'http://www.musicfarm.com/all-shows/' - , shows = [] - -function musicfarm (done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - $('.list-view-item').each(function(i, elem) { - var $$ = cheerio.load(elem) - if($$('.location').text() === "Music Farm Charleston") { - var date = $$('.dates').text().trim() - date = normalizeDate(date) - var show = { - venue: 'Music Farm', - venueUrl: 'http://www.musicfarm.com/venues/music-farm-charleston/upcoming-shows/', - title: $$('.headliners').text().trim(), - url: 'http://www.musicfarm.com'+$$('.headliners').children().attr('href'), - date: date, - price: $$('.price-range').text().trim(), - age: $$('.age-restriction').text().trim(), - time: $$('.start').text().slice(5).trim() - } - shows.push(show) - } - }) - done(null, shows) - }) -} - -function normalizeDate(date) { - date = date.split(',').join('') - date = date.split(' ') - date = date.slice(1) - switch(date[0]) { - case 'January': date[0] = '01' - break; - case 'February': date[0] = '02' - break; - case 'March': date[0] = '03' - break; - case 'April': date[0] = '04' - break; - case 'May': date[0] = '05' - break; - case 'June': date[0] = '06' - break; - case 'July': date[0] = '07' - break; - case 'August': date[0] = '08' - break; - case 'September': date[0] = '09' - break; - case 'October': date[0] = '10' - break; - case 'November': date[0] = '11' - break; - case 'December': date[0] = '12' - break; - default: date[0] = '13' - break; - } - if(date[1].length < 2) { - date[1] = '0'+date[1] - } - var year = date.pop() - var day = date.pop() - var month = date.pop() - date.push(year) - date.push(month) - date.push(day) - return date.join('-') -} - -module.exports = musicfarm \ No newline at end of file diff --git a/sources/music-hall.js b/sources/music-hall.js deleted file mode 100644 index 72435ed..0000000 --- a/sources/music-hall.js +++ /dev/null @@ -1,53 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , url = 'http://charlestonmusichall.com/events/' - , shows = [] - -function musicfarm (done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - $('.event_wrap').each(function(i, elem) { - var show = { - venue: 'Charleston Music Hall', - venueUrl: 'http://charlestonmusichall.com/', - title: $(elem).find('.event_title').text().trim(), - url: $(elem).find('.event_title').children().attr('href'), - date: $(elem).find('img .photo').attr('href'), - date: $(elem).find('img').attr('src').split('/')[$(elem).find('img').attr('src').split('/').indexOf('files')+1].trim() + '-' + - getMonth($(elem).find('.month').text().trim()) + '-' + - getDay($(elem).find('.day').text().trim()), - details: ($(elem).find('.venue_notes').text().trim()).split('\n').join(' ').split('\r').join(' ') - } - shows.push(show) - }) - done(null, shows) - }) -} - -function getMonth(str) { - var months = [ - 'Jan', - 'Feb', - 'Mar', - 'Apr', - 'May', - 'Jun', - 'Jul', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec' - ] - var month = (months.indexOf(str) + 1).toString() - if(month.length === 1) month = '0' + month - return month -} - -function getDay(str) { - var day = str.toString() - if(day.length === 1) day = '0' + day - return day -} - -module.exports = musicfarm \ No newline at end of file diff --git a/sources/pour-house.js b/sources/pour-house.js deleted file mode 100644 index ca2a27d..0000000 --- a/sources/pour-house.js +++ /dev/null @@ -1,71 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , options = { - url: 'http://www.charlestonpourhouse.com/schedule/', - headers: { - 'User-Agent': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us)' + - ' AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7' - } - } - , price = '' - , time = '' - , date = '' - , shows = [] - , months = ['January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December'] - -function pourHouse(done) { - request(options, function(err, response, body) { - var $ = cheerio.load(body) - $('.event-info-container').each(function(i, elem) { - var $$ = cheerio.load(elem) - $$('tr').each(function(t, el) { - var key = $$(el).find('th').text().trim() - if(key === 'Cover:') { - price = $$(el).find('td').text() - } - if(key === 'Showtime:') { - time = $$(el).find('td').text() - } - date = $$('.eventdate').text().trim() - date = normalizeDate(date) - }) - show = { - venue: 'Pour House', - venueUrl: 'http://www.charlestonpourhouse.com/', - title: $$('.eventtitle').text().trim().split('\r').join('').split('\t').join('').split('\n').join(''), - url: $$('.eventtitle').children().attr('href'), - date: date, - price: price, - time: time - } - shows.push(show) - }) - done(null, shows) - }) -} - -module.exports = pourHouse - -function normalizeDate(date) { - var newDate = [] - date = date.split(' ') - var month = (months.indexOf(date[1])+1).toString() - if(month.length <2) month = '0'+month - var day = date[2] - var year = date[3] - newDate.push(year) - newDate.push(month) - newDate.push(day) - return newDate.join('-').split(',').join('') -} diff --git a/sources/royal-american.js b/sources/royal-american.js deleted file mode 100644 index 4073e46..0000000 --- a/sources/royal-american.js +++ /dev/null @@ -1,63 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , url = 'http://theroyalamerican.com/schedule/' - , shows = [] - , months = ['January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December'] - -function royalamerican (done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - $('.gig').each(function(i, elem) { - var price, time - var $$ = cheerio.load(elem) - var title = $$('.title').text().trim() - if($$('.with').text().trim()) title += $$('.with').text().trim() - var date = $$('.date').text().trim() - var timePrice = $$('.details').text().trim().split('Show: ').join('').split('|') - if(timePrice[0]) time = timePrice[0].trim() - if(timePrice[1] && timePrice[1].trim().slice(0,1) === '$') price = timePrice[1].split('Cover')[0].trim() - else price = '' - var year = $('#gigs_left').children().attr('name') - date = normalizeDate(date, year) - var show = { - venue: 'The Royal American', - venueUrl: 'http://theroyalamerican.com/', - title: title, - time: time.slice(0,5).trim(), - price: price, - url: $$('.details').first().find('a').attr('href'), - date: date - } - shows.push(show) - }) - done(null, shows) - }) -} - -module.exports = royalamerican - -function normalizeDate(date, year) { - var newDate = [] - date = date.split(' ') - var day = date.pop() - if(day.length < 2) day = '0'+day - var month = date.pop() - month = (months.indexOf(month)+1).toString() - if(month.length < 2) month = '0'+month - year = year.split('_')[1] - newDate.push(year) - newDate.push(month) - newDate.push(day) - return newDate.join('-') -} \ No newline at end of file diff --git a/sources/sparrow.js b/sources/sparrow.js deleted file mode 100644 index b066b63..0000000 --- a/sources/sparrow.js +++ /dev/null @@ -1,57 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , url = 'https://www.reverbnation.com/venue/load_schedule/1186603?page=1' - , shows = [] - , months = [ - 'Jan', - 'Feb', - 'Mar', - 'Apr', - 'May', - 'Jun', - 'Jul', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec' - ] - -sparrow = function(done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - $('.show_nugget').each(function(i, elem) { - var $$ = cheerio.load(elem) - var date = $$('.details_time').text().split('@')[0].split(' ').join(' ').trim() - date = normalizeDate(date) - var show = { - venue: 'The Sparrow', - venueUrl: 'https://www.facebook.com/thesparrowparkcircle', - title: $$('meta[itemprop="description"]')[0].attribs.content.split('at')[0].split('At')[0].trim(), - url: $$('meta[itemprop="url"]')[0].attribs.content, - date: date, - time: $$('.details_time').text().split('@')[1].trim(), - age: '21+' - } - shows.push(show) - }) - done(null, shows) - }) -} - -module.exports = sparrow - -function normalizeDate(date) { - var newDate=[] - date = date.split(' ') - var year = date.pop() - var day = date.pop() - if(day.length<3) day = '0'+day - var month = date.pop() - month = (months.indexOf(month)+1).toString() - if(month.length<2) month = '0'+month - newDate.push(year) - newDate.push(month) - newDate.push(day) - return newDate.join('-').split(',').join('') -} \ No newline at end of file diff --git a/sources/theatre-99.js b/sources/theatre-99.js deleted file mode 100644 index 83e0608..0000000 --- a/sources/theatre-99.js +++ /dev/null @@ -1,68 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , moment = require('moment') - , url = 'http://www.theatre99.com/schedule.php' - , shows = [] - , months = [ - 'Jan', - 'Feb', - 'Mar', - 'Apr', - 'May', - 'Jun', - 'Jul', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec' - ] - , date - -theatre99 = function(done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - $('.caldays').each(function(i, elem) { - if(i===0) {} - else { - var $$ = cheerio.load(elem) - $$('tr').each(function(r, row) { - var $$$ = cheerio.load(row) - $$$('td').each(function(c, cell) { - var $$$$ = cheerio.load(cell) - if($$$$('div.caldate').first().text().trim() === 'TODAY') date = moment().format('MMM D') - else date = $$$$('div.caldate').first().text().trim() +' '+ $$$$('div.showdetails').text().trim().split(' - ')[0] - var year = $('.calbg h1').text().split(' ')[1].trim() - date = normalizeDate(date.trim(), year) - var show = { - venue: 'Theatre 99', - venueUrl: 'http://theatre99.com/', - title: $$$$('div.calshowtitle').first().text().trim(), - url: 'http://www.theatre99.com/'+$$$$('div.calshowtitle').children().attr('href'), - date: date, - price: $$$$('div.showdetails').first().text().trim().split(' - ')[1], - time: $$$$('div.showdetails').first().text().trim().split(' - ')[0] - } - if(show.title) shows.push(show) - }) - }) - } - }) - done(null, shows) - }) -} - -module.exports = theatre99 - -function normalizeDate(date, year) { - var newDate = [] - var month = date.split(' ')[0] - var day = date.split(' ')[1] - month = (months.indexOf(month)+1).toString() - if(month.length<2) month = '0'+month - if(day.length<2) day = '0'+day - newDate.push(year) - newDate.push(month) - newDate.push(day) - return newDate.join('-') -} \ No newline at end of file diff --git a/sources/tin-roof.js b/sources/tin-roof.js deleted file mode 100644 index fe66f59..0000000 --- a/sources/tin-roof.js +++ /dev/null @@ -1,56 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , url = 'https://www.reverbnation.com/venue/load_schedule/1008205?page=1' - , shows = [] - , months = ['January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December'] - -tinroof = function(done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - $('.show_nugget').each(function(i, elem) { - var $$ = cheerio.load(elem) - var date = $$('.shows_date_').text().split('@')[0].trim() - var year = $$('meta[itemprop="startDate"]')[0].attribs.content.split('-')[0] - date = normalizeDate(date, year) - var show = { - venue: 'Tin Roof', - venueUrl: 'http://www.charlestontinroof.com/', - title: $$('meta[itemprop="description"]')[0].attribs.content, - url: $$('meta[itemprop="url"]')[0].attribs.content, - date: date, - time: $$('.shows_date_').text().split('@')[1].trim(), - age: $$('.shows_disclaimer_').text().trim() - } - shows.push(show) - }) - done(null, shows) - }) -} - -module.exports = tinroof - -function normalizeDate(date, year) { - var newDate = [] - var day - var month = date.split(' ')[1] - if(date.split(' ')[2] != '') day = date.split(' ')[2] - else day = date.split(' ')[3] - month = (months.indexOf(month)+1).toString() - if(month.length<2) month = '0'+month - if(day.length<2) day = '0'+day - newDate.push(year) - newDate.push(month) - newDate.push(day) - return newDate.join('-') -} \ No newline at end of file diff --git a/sources/windjammer.js b/sources/windjammer.js deleted file mode 100644 index 2aed613..0000000 --- a/sources/windjammer.js +++ /dev/null @@ -1,60 +0,0 @@ -var cheerio = require('cheerio') - , request = require('request') - , url = 'http://www.the-windjammer.com/wp/events/' - , shows = [] - , months = [ - 'Jan', - 'Feb', - 'Mar', - 'Apr', - 'May', - 'Jun', - 'Jul', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec' - ] - -windjammer = function(done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - $('.event-archive').each(function(i, elem) { - var $$ = cheerio.load(elem) - var date = $$('.event-arc-day').text().trim() + ' ' + $$('.event-arc-month').text().trim() - var eventUrl = $$('.event-arc-title').children().attr('href') - request(eventUrl, function(er, resp, eventBody) { - var $$$ = cheerio.load(eventBody) - var year = $$$('.event-single-year').text() - date = normalizeDate(date, year) - var show = { - venue: 'The Windjammer', - venueUrl: 'http://www.the-windjammer.com/wp/', - title: $$('.event-arc-title').children().text(), - url: eventUrl, - time: $$('.event-arc-time').text().split('\r').join('').split('\n').join('').trim(), - price: $$('.event-cancel-out').children().text(), - date: date - } - shows.push(show) - }) - }) - done(null, shows) - }) -} - -module.exports = windjammer - -function normalizeDate(date, year) { - var newDate = [] - date = date.split(' ') - var month = date.pop() - var day = date.pop() - month = (months.indexOf(month)+1).toString() - if(month.length<2) month = '0'+month - newDate.push(year) - newDate.push(month) - newDate.push(day) - return newDate.join('-') -} \ No newline at end of file diff --git a/sources/woolfe-street.js b/sources/woolfe-street.js deleted file mode 100644 index 43603cf..0000000 --- a/sources/woolfe-street.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Created by johnhethcox on 9/15/15. - */ -var cheerio = require('cheerio') - , request = require('request') - , url = 'http://woolfestreetplayhouse.tix.com/Schedule.aspx?OrgNum=1687&Tooltip=N' - , eventUrlPrefix = 'http://woolfestreetplayhouse.tix.com/' - , shows = []; - -woolfe = function(done) { - request(url, function(err, response, body) { - var $ = cheerio.load(body) - var table = $("#MasterContent_TixInnerContent_ctl00_gvSchedule"); - if( table === null ) { return } - - table.find( 'tr.TixClass4' ).each(function(i, el) { - - var date = parseDate( el.children[1].children[0].data ); - - var time = el.children[1].children[2].data; - time = time.replace( "at ", "" ); - - var title = $(el.children[3]).find( "a" )[0].children[0].data; - var href = $(el.children[3]).find( "a" ).attr( 'href'); - //fix relative URL - href = eventUrlPrefix + href; - - var show = { - venue: 'Woolfe Street', - venueUrl: 'http://www.woolfestreetplayhouse.com', - title: title, - url: href, - date: date, - time: time - } - shows.push(show) - } ) - - done(null, shows) - }) -} - -function parseDate( date ) -{ - var newDate = [] - var mdyString = date.split( /\s/ )[1]; - var tokens = mdyString.split( /\// ); - - if( tokens.length !== 3 ) return ""; - if(tokens[0].length<2) tokens[0] = '0'+tokens[0] - if(tokens[1].length<2) tokens[1] = '0'+tokens[1] - newDate.push(tokens[2]) - newDate.push(tokens[0]) - newDate.push(tokens[1]) - return newDate.join('-') -} - -module.exports = woolfe From fece08b08cd8d38ee3d2481e06e7266ecbeccf37 Mon Sep 17 00:00:00 2001 From: unfirthman Date: Tue, 25 Apr 2023 18:23:00 -0400 Subject: [PATCH 10/19] cleaned up some code and added a bash script to create a data.json --- Python Rebuild/scripts/data.json | 1 + Python Rebuild/scripts/initial.sh | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 Python Rebuild/scripts/data.json create mode 100644 Python Rebuild/scripts/initial.sh diff --git a/Python Rebuild/scripts/data.json b/Python Rebuild/scripts/data.json new file mode 100644 index 0000000..347fae4 --- /dev/null +++ b/Python Rebuild/scripts/data.json @@ -0,0 +1 @@ +[["Kings and Queens", "Apr25Tue"], ["The Reckoning", "Apr26Wed"], ["Evanoff", "Apr26Wed"], ["Maya De Vitry", "Apr27Thu"], ["LITZ", "Apr27Thu"], ["Sun-Dried Vibes", "Apr28Fri"], ["The Hip Abduction", "Apr28Fri"], ["PoHo Night Market", "Apr29Sat"], ["The Brothers Comatose", "Apr29Sat"], ["Motown Throwdown", "Apr30Sun"], ["James McMurtry", "Apr30Sun"], ["Pretty Good", "May1Mon"], ["Kings and Queens", "May2Tue"], ["The Reckoning", "May3Wed"], ["Henhouse Prowlers", "May4Thu"], ["Lureto & Friends", "May4Thu"], ["Z\ufeffiggymoto \u201cLatin is Dead\u201d", "May5Fri"], ["Lureto & Friends", "May5Fri"], ["The Reckoning", "May6Sat"], ["Daily Bread", "May6Sat"], ["Motown Throwdown", "May7Sun"], ["Agent Orange", "May7Sun"], ["Slim & Friends", "May8Mon"], ["Jamie McLean", "May9Tue"], ["Esther Rose", "May9Tue"], ["The Reckoning", "May10Wed"], ["Eggy", "May10Wed"], ["Certainly So", "May11Thu"], ["Shot Thru The Heart", "May11Thu"], ["Andrew Scotchie", "May12Fri"], ["Perpetual Groove", "May12Fri"], ["Strap On Face Funk 15", "May13Sat"], ["Strap On Face Funk 15", "May13Sat"], ["Motown Throwdown", "May14Sun"], ["Dopapod", "May14Sun"], ["Slim & Friends", "May15Mon"], ["Kings and Queens", "May16Tue"], ["The Reckoning", "May17Wed"], ["Maxwells Silver Jammer", "May17Wed"], ["Late Night Radio + Michal Menert", "May18Thu"], ["Electro Lust", "May19Fri"], ["Karl Denson\u2019s Tiny Universe", "May19Fri"], ["Adam Knights Buried Alive", "May20Sat"], ["Of Good Nature + Pierce Edens", "May20Sat"], ["Motown Throwdown", "May21Sun"], ["Kaleta & Super Yamba Band", "May21Sun"], ["Slim & Friends", "May22Mon"], ["Kings and Queens", "May23Tue"], ["The Reckoning", "May24Wed"], ["Nattali Rize", "May24Wed"], ["Frute", "May25Thu"], ["Matthew Logan Vasquez", "May25Thu"], ["Brandon \u201cTaz\u201d Niederauer", "May26Fri"], ["Thee Hot Girl Hoedown", "May27Sat"], ["Motown Throwdown", "May28Sun"], ["The Fritz", "May28Sun"], ["Slim & Friends", "May29Mon"], ["Kings and Queens", "May30Tue"], ["Ballyhoo", "May30Tue"], ["The Reckoning", "May31Wed"], ["Squeaky Feet", "May31Wed"], ["La Luz", "Jun1Thu"], ["Motown Throwdown", "Jun4Sun"], ["Sneezy", "Jun4Sun"], ["Pretty Good", "Jun5Mon"], ["Baked Shrimp", "Jun7Wed"], ["The Band of Heathens", "Jun9Fri"], ["Harvest Moon", "Jun10Sat"], ["Motown Throwdown", "Jun11Sun"], ["Ally Venable", "Jun11Sun"], ["Pretty Good", "Jun12Mon"], ["Equanimous", "Jun12Mon"], ["W.I.T.C.H.", "Jun13Tue"], ["The Goddamn Gallows + IV and the Strange Band", "Jun14Wed"], ["The Rock and Roll Playhouse Plays", "Jun17Sat"], ["PoHo Night Market", "Jun17Sat"], ["Space Armadillo", "Jun17Sat"], ["Motown Throwdown", "Jun18Sun"], ["Legendary Shack Shakers", "Jun18Sun"], ["Pretty Good", "Jun19Mon"], ["Badfish \u2013 A Tribute to Sublime", "Jun19Mon"], ["The Snozzberries", "Jun24Sat"], ["Motown Throwdown", "Jun25Sun"], ["Souls of Mischief", "Jun25Sun"], ["Pretty Good", "Jun26Mon"], ["Joshua Hedley + Lauren Morrow", "Jun27Tue"], ["Mr. Holland\u2019s Oats", "Jun30Fri"], ["Pigeons Playing Ping Pong", "Jul1Sat"], ["Motown Throwdown", "Jul2Sun"], ["Pigeons Playing Ping Pong", "Jul2Sun"], ["Pretty Good", "Jul3Mon"], ["Cash Machine", "Jul7Fri"], ["Check Your Head", "Jul7Fri"], ["The Grateful Brothers", "Jul8Sat"], ["Motown Throwdown", "Jul9Sun"], ["Pretty Good", "Jul10Mon"], ["Son Volt", "Jul13Thu"], ["Motown Throwdown", "Jul16Sun"], ["Brent Cobb", "Jul16Sun"], ["Pretty Good", "Jul17Mon"], ["Duane Betts and Palmetto Motel", "Jul18Tue"], ["Graham Whorley", "Jul22Sat"], ["Motown Throwdown", "Jul23Sun"], ["Pretty Good", "Jul24Mon"], ["Magnolia Boulevard", "Jul27Thu"], ["Underground Springhouse & Frute", "Jul27Thu"], ["Circles Around The Sun", "Jul28Fri"], ["Circles Around The Sun", "Jul29Sat"], ["Motown Throwdown", "Jul30Sun"], ["Circles Around The Sun", "Jul30Sun"], ["Pretty Good", "Jul31Mon"], ["Spray Allen", "Aug3Thu"], ["Motown Throwdown", "Aug6Sun"], ["Grateful Dub", "Aug6Sun"], ["PoHo Night Market", "Aug12Sat"], ["Motown Throwdown", "Aug13Sun"], ["Motown Throwdown", "Aug20Sun"], ["Motown Throwdown", "Aug27Sun"], ["The Nude Party", "Sep12Tue"], ["Oteil & Friends", "Sep30Sat"]] \ No newline at end of file diff --git a/Python Rebuild/scripts/initial.sh b/Python Rebuild/scripts/initial.sh new file mode 100644 index 0000000..a988ca1 --- /dev/null +++ b/Python Rebuild/scripts/initial.sh @@ -0,0 +1,7 @@ +#! /bin/bash + +chsPourHouse="../Venues/chsPourHouse/chs_pour_house.py" +musicFarm="../Venues/musicFarm/music_farm.py" + +python $chsPourHouse & +python $musicFarm & From 1e800bfee134af7cec7612cfbb7ca907ebe8df79 Mon Sep 17 00:00:00 2001 From: unfirthman Date: Tue, 25 Apr 2023 18:24:31 -0400 Subject: [PATCH 11/19] cleaned up some code and added a bash script to create a data.json --- .../chsPourHouse/chs_pour_house.py} | 30 +++++++++---------- .../{ => Venues/gaillard}/gaillard.py | 0 .../musicFarm/music_farm.py} | 25 ++++++++-------- .../{ => Venues/musicHall}/Music Hall v0.py | 0 .../{ => Venues/musicHall}/Music Hall v01.py | 0 .../{ => Venues/musicHall}/Music Hall.py | 0 .../royalAmerican}/royal americal.py | 0 .../{ => Venues/theater99}/theater99.py | 0 .../{ => Venues/tinRoof}/tin roof.py | 0 .../{ => Venues/windjammer}/windjammer.py | 0 10 files changed, 27 insertions(+), 28 deletions(-) rename Python Rebuild/{chs pour house.py => Venues/chsPourHouse/chs_pour_house.py} (74%) rename Python Rebuild/{ => Venues/gaillard}/gaillard.py (100%) rename Python Rebuild/{music farm.py => Venues/musicFarm/music_farm.py} (76%) rename Python Rebuild/{ => Venues/musicHall}/Music Hall v0.py (100%) rename Python Rebuild/{ => Venues/musicHall}/Music Hall v01.py (100%) rename Python Rebuild/{ => Venues/musicHall}/Music Hall.py (100%) rename Python Rebuild/{ => Venues/royalAmerican}/royal americal.py (100%) rename Python Rebuild/{ => Venues/theater99}/theater99.py (100%) rename Python Rebuild/{ => Venues/tinRoof}/tin roof.py (100%) rename Python Rebuild/{ => Venues/windjammer}/windjammer.py (100%) diff --git a/Python Rebuild/chs pour house.py b/Python Rebuild/Venues/chsPourHouse/chs_pour_house.py similarity index 74% rename from Python Rebuild/chs pour house.py rename to Python Rebuild/Venues/chsPourHouse/chs_pour_house.py index ef97ffd..9892193 100644 --- a/Python Rebuild/chs pour house.py +++ b/Python Rebuild/Venues/chsPourHouse/chs_pour_house.py @@ -1,38 +1,36 @@ -### CHS music source Tin Roof - -### Imports +# Imports import requests from bs4 import BeautifulSoup import numpy as np import regex as re import json -#### FUNCTIONS +# FUNCTIONS - ### currently empty +# currently empty -#### request html, beautiful soup results +# request html, beautiful soup results url = "https://charlestonpourhouse.com/shows/" result = requests.get(url) doc = BeautifulSoup(result.text, "lxml") -##### parsing by class type!!!!!!!! +# parsing by class type!!!!!!!! -### parsing by event name +# parsing by event name events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") -#### parsing by dates +# parsing by dates dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-datetime") - -### parsing by detail + +# parsing by detail details_block = doc.find_all(class_="sg-tribe-events-calendar-list__event-extra-info") -### date list +# date list date_time = [] for date in dates_block: item = date.get_text(strip=True) @@ -40,7 +38,7 @@ print(date_time) -### name list +# name list name_list = [] for title in events_block: item = title.get_text(strip=True) @@ -48,8 +46,7 @@ # print(name_list) # # print(len(name_list)) -### more details - +# more details # ### zip lists @@ -59,3 +56,6 @@ # #### print lists!!!! print(*names_dates_list, sep = "\n") +# write data to a JSON file +with open("data.json", "w") as outfile: + json.dump(names_dates_list, outfile) diff --git a/Python Rebuild/gaillard.py b/Python Rebuild/Venues/gaillard/gaillard.py similarity index 100% rename from Python Rebuild/gaillard.py rename to Python Rebuild/Venues/gaillard/gaillard.py diff --git a/Python Rebuild/music farm.py b/Python Rebuild/Venues/musicFarm/music_farm.py similarity index 76% rename from Python Rebuild/music farm.py rename to Python Rebuild/Venues/musicFarm/music_farm.py index 475cce9..8d82275 100644 --- a/Python Rebuild/music farm.py +++ b/Python Rebuild/Venues/musicFarm/music_farm.py @@ -1,36 +1,32 @@ -### CHS music source Tin Roof - -### Imports +# Imports import requests from bs4 import BeautifulSoup import numpy as np import regex as re import json -#### FUNCTIONS +# FUNCTIONS - ### currently empty +# currently empty -#### request html, beautiful soup results +# request html, beautiful soup results url = "https://www.musicfarm.com/shows/" result = requests.get(url) doc = BeautifulSoup(result.text, "lxml") -##### parsing by class type!!!!!!!! +# parsing by class type!!!!!!!! events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") -#### parsing by dates +# parsing by dates dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-daynum tribe-common-h5 tribe-common-h4--min-medium") -### parsing by detail +# parsing by detail details_block = doc.find_all("h3") - - -### date list +# date list date_time = [] for date in dates_block: item = date.get_text(strip=True) @@ -38,7 +34,7 @@ # print(date_time) -### name list +# name list name_list = [] for title in events_block: item = title.get_text(strip=True) @@ -53,3 +49,6 @@ # #### print lists!!!! print(*names_dates_list, sep = "\n") +# write data to a JSON file +with open("data.json", "w") as outfile: + json.dump(names_dates_list, outfile) diff --git a/Python Rebuild/Music Hall v0.py b/Python Rebuild/Venues/musicHall/Music Hall v0.py similarity index 100% rename from Python Rebuild/Music Hall v0.py rename to Python Rebuild/Venues/musicHall/Music Hall v0.py diff --git a/Python Rebuild/Music Hall v01.py b/Python Rebuild/Venues/musicHall/Music Hall v01.py similarity index 100% rename from Python Rebuild/Music Hall v01.py rename to Python Rebuild/Venues/musicHall/Music Hall v01.py diff --git a/Python Rebuild/Music Hall.py b/Python Rebuild/Venues/musicHall/Music Hall.py similarity index 100% rename from Python Rebuild/Music Hall.py rename to Python Rebuild/Venues/musicHall/Music Hall.py diff --git a/Python Rebuild/royal americal.py b/Python Rebuild/Venues/royalAmerican/royal americal.py similarity index 100% rename from Python Rebuild/royal americal.py rename to Python Rebuild/Venues/royalAmerican/royal americal.py diff --git a/Python Rebuild/theater99.py b/Python Rebuild/Venues/theater99/theater99.py similarity index 100% rename from Python Rebuild/theater99.py rename to Python Rebuild/Venues/theater99/theater99.py diff --git a/Python Rebuild/tin roof.py b/Python Rebuild/Venues/tinRoof/tin roof.py similarity index 100% rename from Python Rebuild/tin roof.py rename to Python Rebuild/Venues/tinRoof/tin roof.py diff --git a/Python Rebuild/windjammer.py b/Python Rebuild/Venues/windjammer/windjammer.py similarity index 100% rename from Python Rebuild/windjammer.py rename to Python Rebuild/Venues/windjammer/windjammer.py From 76117858f5c8b2dc5d4e37f42110bf819010fe4d Mon Sep 17 00:00:00 2001 From: unfirthman Date: Wed, 26 Apr 2023 11:57:16 -0400 Subject: [PATCH 12/19] delete data.json --- Python Rebuild/scripts/data.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Python Rebuild/scripts/data.json diff --git a/Python Rebuild/scripts/data.json b/Python Rebuild/scripts/data.json deleted file mode 100644 index 347fae4..0000000 --- a/Python Rebuild/scripts/data.json +++ /dev/null @@ -1 +0,0 @@ -[["Kings and Queens", "Apr25Tue"], ["The Reckoning", "Apr26Wed"], ["Evanoff", "Apr26Wed"], ["Maya De Vitry", "Apr27Thu"], ["LITZ", "Apr27Thu"], ["Sun-Dried Vibes", "Apr28Fri"], ["The Hip Abduction", "Apr28Fri"], ["PoHo Night Market", "Apr29Sat"], ["The Brothers Comatose", "Apr29Sat"], ["Motown Throwdown", "Apr30Sun"], ["James McMurtry", "Apr30Sun"], ["Pretty Good", "May1Mon"], ["Kings and Queens", "May2Tue"], ["The Reckoning", "May3Wed"], ["Henhouse Prowlers", "May4Thu"], ["Lureto & Friends", "May4Thu"], ["Z\ufeffiggymoto \u201cLatin is Dead\u201d", "May5Fri"], ["Lureto & Friends", "May5Fri"], ["The Reckoning", "May6Sat"], ["Daily Bread", "May6Sat"], ["Motown Throwdown", "May7Sun"], ["Agent Orange", "May7Sun"], ["Slim & Friends", "May8Mon"], ["Jamie McLean", "May9Tue"], ["Esther Rose", "May9Tue"], ["The Reckoning", "May10Wed"], ["Eggy", "May10Wed"], ["Certainly So", "May11Thu"], ["Shot Thru The Heart", "May11Thu"], ["Andrew Scotchie", "May12Fri"], ["Perpetual Groove", "May12Fri"], ["Strap On Face Funk 15", "May13Sat"], ["Strap On Face Funk 15", "May13Sat"], ["Motown Throwdown", "May14Sun"], ["Dopapod", "May14Sun"], ["Slim & Friends", "May15Mon"], ["Kings and Queens", "May16Tue"], ["The Reckoning", "May17Wed"], ["Maxwells Silver Jammer", "May17Wed"], ["Late Night Radio + Michal Menert", "May18Thu"], ["Electro Lust", "May19Fri"], ["Karl Denson\u2019s Tiny Universe", "May19Fri"], ["Adam Knights Buried Alive", "May20Sat"], ["Of Good Nature + Pierce Edens", "May20Sat"], ["Motown Throwdown", "May21Sun"], ["Kaleta & Super Yamba Band", "May21Sun"], ["Slim & Friends", "May22Mon"], ["Kings and Queens", "May23Tue"], ["The Reckoning", "May24Wed"], ["Nattali Rize", "May24Wed"], ["Frute", "May25Thu"], ["Matthew Logan Vasquez", "May25Thu"], ["Brandon \u201cTaz\u201d Niederauer", "May26Fri"], ["Thee Hot Girl Hoedown", "May27Sat"], ["Motown Throwdown", "May28Sun"], ["The Fritz", "May28Sun"], ["Slim & Friends", "May29Mon"], ["Kings and Queens", "May30Tue"], ["Ballyhoo", "May30Tue"], ["The Reckoning", "May31Wed"], ["Squeaky Feet", "May31Wed"], ["La Luz", "Jun1Thu"], ["Motown Throwdown", "Jun4Sun"], ["Sneezy", "Jun4Sun"], ["Pretty Good", "Jun5Mon"], ["Baked Shrimp", "Jun7Wed"], ["The Band of Heathens", "Jun9Fri"], ["Harvest Moon", "Jun10Sat"], ["Motown Throwdown", "Jun11Sun"], ["Ally Venable", "Jun11Sun"], ["Pretty Good", "Jun12Mon"], ["Equanimous", "Jun12Mon"], ["W.I.T.C.H.", "Jun13Tue"], ["The Goddamn Gallows + IV and the Strange Band", "Jun14Wed"], ["The Rock and Roll Playhouse Plays", "Jun17Sat"], ["PoHo Night Market", "Jun17Sat"], ["Space Armadillo", "Jun17Sat"], ["Motown Throwdown", "Jun18Sun"], ["Legendary Shack Shakers", "Jun18Sun"], ["Pretty Good", "Jun19Mon"], ["Badfish \u2013 A Tribute to Sublime", "Jun19Mon"], ["The Snozzberries", "Jun24Sat"], ["Motown Throwdown", "Jun25Sun"], ["Souls of Mischief", "Jun25Sun"], ["Pretty Good", "Jun26Mon"], ["Joshua Hedley + Lauren Morrow", "Jun27Tue"], ["Mr. Holland\u2019s Oats", "Jun30Fri"], ["Pigeons Playing Ping Pong", "Jul1Sat"], ["Motown Throwdown", "Jul2Sun"], ["Pigeons Playing Ping Pong", "Jul2Sun"], ["Pretty Good", "Jul3Mon"], ["Cash Machine", "Jul7Fri"], ["Check Your Head", "Jul7Fri"], ["The Grateful Brothers", "Jul8Sat"], ["Motown Throwdown", "Jul9Sun"], ["Pretty Good", "Jul10Mon"], ["Son Volt", "Jul13Thu"], ["Motown Throwdown", "Jul16Sun"], ["Brent Cobb", "Jul16Sun"], ["Pretty Good", "Jul17Mon"], ["Duane Betts and Palmetto Motel", "Jul18Tue"], ["Graham Whorley", "Jul22Sat"], ["Motown Throwdown", "Jul23Sun"], ["Pretty Good", "Jul24Mon"], ["Magnolia Boulevard", "Jul27Thu"], ["Underground Springhouse & Frute", "Jul27Thu"], ["Circles Around The Sun", "Jul28Fri"], ["Circles Around The Sun", "Jul29Sat"], ["Motown Throwdown", "Jul30Sun"], ["Circles Around The Sun", "Jul30Sun"], ["Pretty Good", "Jul31Mon"], ["Spray Allen", "Aug3Thu"], ["Motown Throwdown", "Aug6Sun"], ["Grateful Dub", "Aug6Sun"], ["PoHo Night Market", "Aug12Sat"], ["Motown Throwdown", "Aug13Sun"], ["Motown Throwdown", "Aug20Sun"], ["Motown Throwdown", "Aug27Sun"], ["The Nude Party", "Sep12Tue"], ["Oteil & Friends", "Sep30Sat"]] \ No newline at end of file From 779d574449cc163b631dbe2a7e141bdc648e9755 Mon Sep 17 00:00:00 2001 From: unfirthman Date: Wed, 26 Apr 2023 22:40:55 -0400 Subject: [PATCH 13/19] committing to make sure I don't screw up the next half --- .../Venues/chsPourHouse/chs_pour_house.py | 20 +++++----- .../Venues/chsPourHouse/chs_pour_house.sh | 5 +++ Python Rebuild/Venues/gaillard/gaillard.py | 40 +++++++++---------- Python Rebuild/Venues/gaillard/gaillard.sh | 5 +++ Python Rebuild/Venues/musicFarm/music_farm.py | 19 ++++----- Python Rebuild/Venues/musicFarm/music_farm.sh | 5 +++ .../{Music Hall v0.py => Music Hall_OLD_1.py} | 0 .../{Music Hall.py => Music Hall_OLD_2.py} | 0 .../{Music Hall v01.py => music_hall.py} | 33 ++++++++------- Python Rebuild/Venues/musicHall/music_hall.sh | 5 +++ Python Rebuild/script.sh | 4 ++ Python Rebuild/scripts/initial.sh | 21 ++++++++-- 12 files changed, 100 insertions(+), 57 deletions(-) create mode 100644 Python Rebuild/Venues/chsPourHouse/chs_pour_house.sh create mode 100644 Python Rebuild/Venues/gaillard/gaillard.sh create mode 100644 Python Rebuild/Venues/musicFarm/music_farm.sh rename Python Rebuild/Venues/musicHall/{Music Hall v0.py => Music Hall_OLD_1.py} (100%) rename Python Rebuild/Venues/musicHall/{Music Hall.py => Music Hall_OLD_2.py} (100%) rename Python Rebuild/Venues/musicHall/{Music Hall v01.py => music_hall.py} (64%) create mode 100644 Python Rebuild/Venues/musicHall/music_hall.sh create mode 100644 Python Rebuild/script.sh diff --git a/Python Rebuild/Venues/chsPourHouse/chs_pour_house.py b/Python Rebuild/Venues/chsPourHouse/chs_pour_house.py index 9892193..af5ef5b 100644 --- a/Python Rebuild/Venues/chsPourHouse/chs_pour_house.py +++ b/Python Rebuild/Venues/chsPourHouse/chs_pour_house.py @@ -1,8 +1,9 @@ # Imports import requests from bs4 import BeautifulSoup -import numpy as np -import regex as re +# import numpy as np +# import regex as re +from pathlib import Path import json # FUNCTIONS @@ -17,7 +18,7 @@ doc = BeautifulSoup(result.text, "lxml") -# parsing by class type!!!!!!!! +# parsing by class type # parsing by event name events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") @@ -35,7 +36,7 @@ for date in dates_block: item = date.get_text(strip=True) date_time.append(item) -print(date_time) +# print(date_time) # name list @@ -44,18 +45,19 @@ item = title.get_text(strip=True) name_list.append(item) # print(name_list) -# # print(len(name_list)) + +# print(len(name_list)) # more details -# ### zip lists +# zip lists names_dates_list = zip(name_list, date_time) names_dates_list = list(names_dates_list) -# #### print lists!!!! -print(*names_dates_list, sep = "\n") +# print lists +# print(*names_dates_list, sep="\n") # write data to a JSON file -with open("data.json", "w") as outfile: +with Path("../../JSON/chs_pour_house.json").open("w") as outfile: json.dump(names_dates_list, outfile) diff --git a/Python Rebuild/Venues/chsPourHouse/chs_pour_house.sh b/Python Rebuild/Venues/chsPourHouse/chs_pour_house.sh new file mode 100644 index 0000000..5a06105 --- /dev/null +++ b/Python Rebuild/Venues/chsPourHouse/chs_pour_house.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +chsPourHouse="./chs_pour_house.py" + +python $chsPourHouse diff --git a/Python Rebuild/Venues/gaillard/gaillard.py b/Python Rebuild/Venues/gaillard/gaillard.py index 152d33e..953b624 100644 --- a/Python Rebuild/Venues/gaillard/gaillard.py +++ b/Python Rebuild/Venues/gaillard/gaillard.py @@ -1,35 +1,32 @@ -### CHS music source Tin Roof - -### Imports +# Imports import requests from bs4 import BeautifulSoup -import numpy as np -import regex as re +# import numpy as np +# import regex as re +from pathlib import Path import json -#### FUNCTIONS +# FUNCTIONS - ### currently empty +# currently empty -#### request html, beautiful soup results +# request html, beautiful soup results url = "https://gaillardcenter.org/buy-tickets/" result = requests.get(url) doc = BeautifulSoup(result.text, "lxml") -##### parsing by class type!!!!!!!! +# parsing by class type events_block = doc.find_all(class_="performance-item__title") -#### parsing by dates +# parsing by dates dates_block = doc.find_all(class_="performance-item__date") -### parsing by detail +# parsing by detail details_block = doc.find_all(class_="performance-item__details") - - -### date list +# date list date_time = [] for date in dates_block: item = date.get_text() @@ -37,18 +34,21 @@ # print(date_time) -### name list +# name list name_list = [] for title in events_block: item = title.get_text() name_list.append(item) -# # print(name_list) -# # print(len(name_list)) +# print(name_list) +# print(len(name_list)) -# ### zip lists +# zip lists names_dates_list = zip(name_list, date_time) names_dates_list = list(names_dates_list) -# #### print lists!!!! -print(*names_dates_list, sep = "\n") +# print lists! +# print(*names_dates_list, sep="\n") +# write data to a JSON file +with Path("../../JSON/gaillard.json").open("w") as outfile: + json.dump(names_dates_list, outfile) diff --git a/Python Rebuild/Venues/gaillard/gaillard.sh b/Python Rebuild/Venues/gaillard/gaillard.sh new file mode 100644 index 0000000..8ecf729 --- /dev/null +++ b/Python Rebuild/Venues/gaillard/gaillard.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +gaillard="./gaillard.py" + +python $gaillard diff --git a/Python Rebuild/Venues/musicFarm/music_farm.py b/Python Rebuild/Venues/musicFarm/music_farm.py index 8d82275..b0f17c5 100644 --- a/Python Rebuild/Venues/musicFarm/music_farm.py +++ b/Python Rebuild/Venues/musicFarm/music_farm.py @@ -1,8 +1,9 @@ # Imports import requests from bs4 import BeautifulSoup -import numpy as np -import regex as re +# import numpy as np +# import regex as re +from pathlib import Path import json # FUNCTIONS @@ -17,7 +18,7 @@ doc = BeautifulSoup(result.text, "lxml") -# parsing by class type!!!!!!!! +# parsing by class type events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") # parsing by dates dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-daynum tribe-common-h5 tribe-common-h4--min-medium") @@ -39,16 +40,16 @@ for title in events_block: item = title.get_text(strip=True) name_list.append(item) -# # print(name_list) -# # print(len(name_list)) +# print(name_list) +# print(len(name_list)) -# ### zip lists +# zip lists names_dates_list = zip(name_list, date_time) names_dates_list = list(names_dates_list) -# #### print lists!!!! -print(*names_dates_list, sep = "\n") +# print lists +# print(*names_dates_list, sep="\n") # write data to a JSON file -with open("data.json", "w") as outfile: +with Path("../../JSON/music_farm.json").open("w") as outfile: json.dump(names_dates_list, outfile) diff --git a/Python Rebuild/Venues/musicFarm/music_farm.sh b/Python Rebuild/Venues/musicFarm/music_farm.sh new file mode 100644 index 0000000..0adba4e --- /dev/null +++ b/Python Rebuild/Venues/musicFarm/music_farm.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +musicFarm="./music_farm.py" + +python $musicFarm diff --git a/Python Rebuild/Venues/musicHall/Music Hall v0.py b/Python Rebuild/Venues/musicHall/Music Hall_OLD_1.py similarity index 100% rename from Python Rebuild/Venues/musicHall/Music Hall v0.py rename to Python Rebuild/Venues/musicHall/Music Hall_OLD_1.py diff --git a/Python Rebuild/Venues/musicHall/Music Hall.py b/Python Rebuild/Venues/musicHall/Music Hall_OLD_2.py similarity index 100% rename from Python Rebuild/Venues/musicHall/Music Hall.py rename to Python Rebuild/Venues/musicHall/Music Hall_OLD_2.py diff --git a/Python Rebuild/Venues/musicHall/Music Hall v01.py b/Python Rebuild/Venues/musicHall/music_hall.py similarity index 64% rename from Python Rebuild/Venues/musicHall/Music Hall v01.py rename to Python Rebuild/Venues/musicHall/music_hall.py index 0d36fec..b850fec 100644 --- a/Python Rebuild/Venues/musicHall/Music Hall v01.py +++ b/Python Rebuild/Venues/musicHall/music_hall.py @@ -1,31 +1,31 @@ -### CHS music source Charleston Music Hall - -### Imports +# Imports import requests from bs4 import BeautifulSoup -import numpy as np -import regex as re +# import numpy as np +# import regex as re +from pathlib import Path import json -#### FUNCTIONS +# FUNCTIONS - ### currently empty +# currently empty -#### request html, beautiful soup results +# request html, beautiful soup results url = "https://www.charlestonmusichall.com/shows/" result = requests.get(url) doc = BeautifulSoup(result.text, "html5lib") -##### parsing by class type!!!!!!!! +# parsing by class type events_block = doc.find_all(class_="tribe-events-calendar-list__event-title-link tribe-common-anchor-thin") -#### class is dates + +# class is dates dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-datetime cmh-event-dates") -### date list +# date list date_time = [] for date in dates_block: item = date.get_text() @@ -33,7 +33,7 @@ # print(date_time) -### name list +# name list name_list = [] for title in events_block: item = title.get_text() @@ -41,10 +41,13 @@ # print(name_list) # print(len(name_list)) -### zip lists +# zip lists names_dates_list = zip(name_list, date_time) names_dates_list = list(names_dates_list) -#### print lists!!!! -print(*names_dates_list, sep = "\n") +# print lists! +# print(*names_dates_list, sep = "\n") +# write data to a JSON file +with Path("../../JSON/music_hall.json").open("w") as outfile: + json.dump(names_dates_list, outfile) diff --git a/Python Rebuild/Venues/musicHall/music_hall.sh b/Python Rebuild/Venues/musicHall/music_hall.sh new file mode 100644 index 0000000..f09e5a7 --- /dev/null +++ b/Python Rebuild/Venues/musicHall/music_hall.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +musicHall="./music_hall.py" + +python $musicHall diff --git a/Python Rebuild/script.sh b/Python Rebuild/script.sh new file mode 100644 index 0000000..511bd55 --- /dev/null +++ b/Python Rebuild/script.sh @@ -0,0 +1,4 @@ +#! /bin/bash + +cd scripts +sh initial.sh diff --git a/Python Rebuild/scripts/initial.sh b/Python Rebuild/scripts/initial.sh index a988ca1..f881444 100644 --- a/Python Rebuild/scripts/initial.sh +++ b/Python Rebuild/scripts/initial.sh @@ -1,7 +1,20 @@ #! /bin/bash -chsPourHouse="../Venues/chsPourHouse/chs_pour_house.py" -musicFarm="../Venues/musicFarm/music_farm.py" +cd ../Venues/chsPourHouse/ +sh chs_pour_house.sh +cd ../ +cd ../Venues/musicFarm/ +sh music_farm.sh +cd ../ +cd ../Venues/gaillard/ +sh gaillard.sh +cd ../ +cd ../Venues/musicHall/ +sh music_hall.sh -python $chsPourHouse & -python $musicFarm & + +#chsPourHouse="../Venues/chsPourHouse/chs_pour_house.sh" +#musicFarm="../Venues/musicFarm/music_farm.sh" +# +#sh $chsPourHouse +#sh $musicFarm From 16b12fcbd82d1baa0959c3fc1758c0ce9500819e Mon Sep 17 00:00:00 2001 From: unfirthman Date: Wed, 26 Apr 2023 23:42:51 -0400 Subject: [PATCH 14/19] so far, so good: the scripting feels pretty good --- .../{royal americal.py => royal_american.py} | 38 +++++++------- .../Venues/royalAmerican/royal_american.sh | 5 ++ Python Rebuild/Venues/theater99/theater99.py | 43 ++++++++-------- Python Rebuild/Venues/theater99/theater99.sh | 5 ++ Python Rebuild/Venues/tinRoof/tin roof.py | 50 ------------------- Python Rebuild/Venues/tinRoof/tin_roof.py | 48 ++++++++++++++++++ .../{windjammer.py => wind_jammer.py} | 41 +++++++-------- .../Venues/windjammer/wind_jammer.sh | 5 ++ Python Rebuild/scripts/initial.sh | 10 +++- 9 files changed, 129 insertions(+), 116 deletions(-) rename Python Rebuild/Venues/royalAmerican/{royal americal.py => royal_american.py} (60%) create mode 100644 Python Rebuild/Venues/royalAmerican/royal_american.sh create mode 100644 Python Rebuild/Venues/theater99/theater99.sh delete mode 100644 Python Rebuild/Venues/tinRoof/tin roof.py create mode 100644 Python Rebuild/Venues/tinRoof/tin_roof.py rename Python Rebuild/Venues/windjammer/{windjammer.py => wind_jammer.py} (75%) create mode 100644 Python Rebuild/Venues/windjammer/wind_jammer.sh diff --git a/Python Rebuild/Venues/royalAmerican/royal americal.py b/Python Rebuild/Venues/royalAmerican/royal_american.py similarity index 60% rename from Python Rebuild/Venues/royalAmerican/royal americal.py rename to Python Rebuild/Venues/royalAmerican/royal_american.py index 56e0987..8f52d09 100644 --- a/Python Rebuild/Venues/royalAmerican/royal americal.py +++ b/Python Rebuild/Venues/royalAmerican/royal_american.py @@ -1,35 +1,30 @@ -### CHS music source Tin Roof - -### Imports +# Imports import requests from bs4 import BeautifulSoup -import numpy as np -import regex as re +from pathlib import Path import json -#### FUNCTIONS +# FUNCTIONS - ### currently empty +# currently empty -#### request html, beautiful soup results +# request html, beautiful soup results url = "https://www.theroyalamerican.com/schedule" result = requests.get(url) doc = BeautifulSoup(result.text, "lxml") -##### parsing by class type!!!!!!!! +# parsing by class type events_block = doc.find_all(class_="eventlist-title-link") -#### parsing by dates +# parsing by dates dates_block = doc.find_all(class_="event-date") -### parsing by detail +# parsing by detail # details_block = doc.find_all(class_="performance-item__details") - - -### date list +# date list date_time = [] for date in dates_block: item = date.get_text() @@ -37,18 +32,21 @@ # print(date_time) -### name list +# name list name_list = [] for title in events_block: item = title.get_text() name_list.append(item) -# # print(name_list) -# # print(len(name_list)) +# print(name_list) +# print(len(name_list)) -# ### zip lists +# zip lists names_dates_list = zip(name_list, date_time) names_dates_list = list(names_dates_list) -# #### print lists!!!! -print(*names_dates_list, sep = "\n") +# print lists +# print(*names_dates_list, sep="\n") +# write data to a JSON file +with Path("../../JSON/royal_american.json").open("w") as outfile: + json.dump(names_dates_list, outfile) diff --git a/Python Rebuild/Venues/royalAmerican/royal_american.sh b/Python Rebuild/Venues/royalAmerican/royal_american.sh new file mode 100644 index 0000000..4353751 --- /dev/null +++ b/Python Rebuild/Venues/royalAmerican/royal_american.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +royalAmerican="./royal_american.py" + +python $royalAmerican diff --git a/Python Rebuild/Venues/theater99/theater99.py b/Python Rebuild/Venues/theater99/theater99.py index 2633562..418888f 100644 --- a/Python Rebuild/Venues/theater99/theater99.py +++ b/Python Rebuild/Venues/theater99/theater99.py @@ -1,39 +1,34 @@ -### CHS music source Theater 99 - -### Imports +# Imports import requests from bs4 import BeautifulSoup -import numpy as np -import regex as re +from pathlib import Path import json -#### FUNCTIONS +# FUNCTIONS - ### currently empty +# currently empty -#### request html, beautiful soup results +# request html, beautiful soup results url = "https://theatre99.com/schedule/" result = requests.get(url) doc = BeautifulSoup(result.text, "lxml") -##### parsing by class type!!!!!!!! +# parsing by class type -### parsing by event name +# parsing by event name events_block = doc.find_all(class_="ai1ec-event-title") -#### parsing by dates + +# parsing by dates dates_block = doc.find_all(class_="ai1ec-event-time") -### parsing by detail +# parsing by detail details_block = doc.find_all(class_="ai1ec-popup-excerpt") - - - -### date list +# date list date_time = [] for date in dates_block: item = date.get_text(strip=True) @@ -41,13 +36,13 @@ # print(date_time) -### name list +# name list name_list_caps = [] for title in events_block: item = title.get_text(strip=True) name_list_caps.append(item) -#### turn into title style +# turn into title style name_list = [] for cap in name_list_caps: cap_title = str(cap.title()) @@ -56,7 +51,7 @@ # print(name_list) -### more details +# more details detail_list = [] for sect in details_block: @@ -64,13 +59,15 @@ detail_list.append(item) -# ### zip lists +# zip lists names_dates_list = zip(name_list, date_time) names_dates_list = list(names_dates_list) names_dates_info = zip(names_dates_list, detail_list) +# print lists +# print(*names_dates_info, sep="\n") -# #### print lists!!!! -print(*names_dates_info, sep = "\n") - +# write data to a JSON file +with Path("../../JSON/theater99.json").open("w") as outfile: + json.dump(names_dates_list, outfile) diff --git a/Python Rebuild/Venues/theater99/theater99.sh b/Python Rebuild/Venues/theater99/theater99.sh new file mode 100644 index 0000000..4c7e137 --- /dev/null +++ b/Python Rebuild/Venues/theater99/theater99.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +theater99="./theater99.py" + +python $theater99 diff --git a/Python Rebuild/Venues/tinRoof/tin roof.py b/Python Rebuild/Venues/tinRoof/tin roof.py deleted file mode 100644 index 8b40d84..0000000 --- a/Python Rebuild/Venues/tinRoof/tin roof.py +++ /dev/null @@ -1,50 +0,0 @@ -### CHS music source Tin Roof - -### Imports -import requests -from bs4 import BeautifulSoup -import numpy as np -import regex as re -import json - -#### FUNCTIONS - - ### currently empty - - -#### request html, beautiful soup results - -url = "https://charlestontinroof.com/#schedule" -result = requests.get(url) -doc = BeautifulSoup(result.text, "lxml") - - -##### parsing by class type!!!!!!!! -events_block = doc.find_all(tag="ng-scope") -#### class is dates -dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-datetime cmh-event-dates") -print(doc.prettify()) - -# ### date list -# date_time = [] -# for date in dates_block: -# item = date.get_text() -# date_time.append(item) -# # print(date_time) - - -# ### name list -# name_list = [] -# for title in events_block: -# item = title.get_text() -# name_list.append(item) -# # print(name_list) -# # print(len(name_list)) - -# ### zip lists -# names_dates_list = zip(name_list, date_time) -# names_dates_list = list(names_dates_list) - -# #### print lists!!!! -# print(*names_dates_list, sep = "\n") - diff --git a/Python Rebuild/Venues/tinRoof/tin_roof.py b/Python Rebuild/Venues/tinRoof/tin_roof.py new file mode 100644 index 0000000..002dca4 --- /dev/null +++ b/Python Rebuild/Venues/tinRoof/tin_roof.py @@ -0,0 +1,48 @@ +# Imports +import requests +from bs4 import BeautifulSoup +from pathlib import Path +import json + +# FUNCTIONS + +# currently empty + + +# request html, beautiful soup results + +url = "https://charlestontinroof.com/#schedule" +result = requests.get(url) +doc = BeautifulSoup(result.text, "lxml") + + +# parsing by class type +events_block = doc.find_all(tag="ng-scope") + +# class is dates +dates_block = doc.find_all(class_="tribe-events-calendar-list__event-date-tag-datetime cmh-event-dates") +print(doc.prettify()) + +# date list +date_time = [] +for date in dates_block: + item = date.get_text() + date_time.append(item) +# print(date_time) + + +# name list +name_list = [] +for title in events_block: + item = title.get_text() + name_list.append(item) +# print(name_list) +# print(len(name_list)) + +# zip lists +names_dates_list = zip(name_list, date_time) +names_dates_list = list(names_dates_list) + +# print lists +print(*names_dates_list, sep="\n") + diff --git a/Python Rebuild/Venues/windjammer/windjammer.py b/Python Rebuild/Venues/windjammer/wind_jammer.py similarity index 75% rename from Python Rebuild/Venues/windjammer/windjammer.py rename to Python Rebuild/Venues/windjammer/wind_jammer.py index 4a4b202..1329591 100644 --- a/Python Rebuild/Venues/windjammer/windjammer.py +++ b/Python Rebuild/Venues/windjammer/wind_jammer.py @@ -1,29 +1,26 @@ -### CHS music source Theater 99 - -### Imports +# Imports import requests from bs4 import BeautifulSoup -import numpy as np -import regex as re +from pathlib import Path import json -#### FUNCTIONS +# FUNCTIONS - ### currently empty +# currently empty -#### request html, beautiful soup results +# request html, beautiful soup results url = "https://the-windjammer.com/events/" result = requests.get(url) doc = BeautifulSoup(result.text, "lxml") -##### parsing by class type!!!!!!!! +# parsing by class type! -### parsing by event name +# parsing by event name events_block = doc.find_all(class_="event-arc-title") -#### parsing by dates +# parsing by dates find_day_item = doc.find_all(class_="event-arc-day") @@ -46,13 +43,12 @@ # print(date_time) -## parsing by detail +# parsing by detail # details_block = doc.find_all(class_="event_arc_info") # print(details_block) - -# ### date list +# date list # date_time = [] # for date in dates_block: # item = date.get_text(strip=True) @@ -60,7 +56,7 @@ # # print(date_time) -### name list +# name list name_list = [] for title in events_block: item = title.get_text(strip=True) @@ -68,7 +64,7 @@ # print(name_list) -#### turn into title style +# turn into title style # name_list = [] # for cap in name_list_caps: # cap_title = str(cap.title()) @@ -77,7 +73,7 @@ # print(name_list) -### more details +# more details # detail_list = [] # for sect in details_block: @@ -85,16 +81,17 @@ # detail_list.append(item) -# ### zip lists +# zip lists names_dates_list = zip(name_list, date_time) names_dates_list = list(names_dates_list) - # names_dates_info = zip(names_dates_list, detail_list) +# print lists +# print(*names_dates_list, sep="\n") -# #### print lists!!!! -print(*names_dates_list, sep = "\n") - +# write data to a JSON file +with Path("../../JSON/wind_jammer.json").open("w") as outfile: + json.dump(names_dates_list, outfile) diff --git a/Python Rebuild/Venues/windjammer/wind_jammer.sh b/Python Rebuild/Venues/windjammer/wind_jammer.sh new file mode 100644 index 0000000..41ea3cf --- /dev/null +++ b/Python Rebuild/Venues/windjammer/wind_jammer.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +windJammer="./wind_jammer.py" + +python $windJammer diff --git a/Python Rebuild/scripts/initial.sh b/Python Rebuild/scripts/initial.sh index f881444..6131354 100644 --- a/Python Rebuild/scripts/initial.sh +++ b/Python Rebuild/scripts/initial.sh @@ -11,7 +11,15 @@ sh gaillard.sh cd ../ cd ../Venues/musicHall/ sh music_hall.sh - +cd ../ +cd ../Venues/royalAmerican/ +sh royal_american.sh +cd ../ +cd ../Venues/theater99/ +sh theater99.sh +cd ../ +cd ../Venues/windjammer/ +sh wind_jammer.sh #chsPourHouse="../Venues/chsPourHouse/chs_pour_house.sh" #musicFarm="../Venues/musicFarm/music_farm.sh" From dfbacc07f3eb43c42f9304c8bec327fe1e1dba6d Mon Sep 17 00:00:00 2001 From: unfirthman Date: Fri, 28 Apr 2023 21:29:42 -0400 Subject: [PATCH 15/19] main scripting is done and the scope is internal. I began making the table, that will be continued in the next commit --- Python Rebuild/chs-source/.eslintrc.cjs | 15 + Python Rebuild/chs-source/.gitignore | 24 + Python Rebuild/chs-source/index.html | 13 + Python Rebuild/chs-source/package-lock.json | 3418 +++++++++++++++++ Python Rebuild/chs-source/package.json | 26 + Python Rebuild/chs-source/public/vite.svg | 1 + Python Rebuild/chs-source/src/App.css | 42 + Python Rebuild/chs-source/src/App.jsx | 39 + .../src/Components/Calendar/Calendar.css | 0 .../src/Components/Calendar/Calendar.jsx | 23 + .../chs-source/src/Components/Table/Table.css | 3 + .../chs-source/src/Components/Table/Table.jsx | 38 + .../chs-source/src/assets/react.svg | 1 + Python Rebuild/chs-source/src/index.css | 69 + Python Rebuild/chs-source/src/main.jsx | 10 + Python Rebuild/chs-source/vite.config.js | 7 + 16 files changed, 3729 insertions(+) create mode 100644 Python Rebuild/chs-source/.eslintrc.cjs create mode 100644 Python Rebuild/chs-source/.gitignore create mode 100644 Python Rebuild/chs-source/index.html create mode 100644 Python Rebuild/chs-source/package-lock.json create mode 100644 Python Rebuild/chs-source/package.json create mode 100644 Python Rebuild/chs-source/public/vite.svg create mode 100644 Python Rebuild/chs-source/src/App.css create mode 100644 Python Rebuild/chs-source/src/App.jsx create mode 100644 Python Rebuild/chs-source/src/Components/Calendar/Calendar.css create mode 100644 Python Rebuild/chs-source/src/Components/Calendar/Calendar.jsx create mode 100644 Python Rebuild/chs-source/src/Components/Table/Table.css create mode 100644 Python Rebuild/chs-source/src/Components/Table/Table.jsx create mode 100644 Python Rebuild/chs-source/src/assets/react.svg create mode 100644 Python Rebuild/chs-source/src/index.css create mode 100644 Python Rebuild/chs-source/src/main.jsx create mode 100644 Python Rebuild/chs-source/vite.config.js diff --git a/Python Rebuild/chs-source/.eslintrc.cjs b/Python Rebuild/chs-source/.eslintrc.cjs new file mode 100644 index 0000000..ec601b2 --- /dev/null +++ b/Python Rebuild/chs-source/.eslintrc.cjs @@ -0,0 +1,15 @@ +module.exports = { + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + 'plugin:react-hooks/recommended', + ], + parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, + settings: { react: { version: '18.2' } }, + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': 'warn', + }, +} diff --git a/Python Rebuild/chs-source/.gitignore b/Python Rebuild/chs-source/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/Python Rebuild/chs-source/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/Python Rebuild/chs-source/index.html b/Python Rebuild/chs-source/index.html new file mode 100644 index 0000000..79c4701 --- /dev/null +++ b/Python Rebuild/chs-source/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
    + + + diff --git a/Python Rebuild/chs-source/package-lock.json b/Python Rebuild/chs-source/package-lock.json new file mode 100644 index 0000000..40fa06f --- /dev/null +++ b/Python Rebuild/chs-source/package-lock.json @@ -0,0 +1,3418 @@ +{ + "name": "chs-source", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chs-source", + "version": "0.0.0", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.28", + "@types/react-dom": "^18.0.11", + "@vitejs/plugin-react": "^4.0.0", + "eslint": "^8.38.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.3.4", + "vite": "^4.3.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", + "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", + "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.4", + "@babel/helper-compilation-targets": "^7.21.4", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.4", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.4", + "@babel/types": "^7.21.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", + "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.4", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", + "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.21.4", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", + "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", + "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", + "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.4", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.4", + "@babel/types": "^7.21.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", + "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", + "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", + "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", + "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", + "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", + "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", + "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", + "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", + "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", + "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", + "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", + "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", + "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", + "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", + "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", + "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", + "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", + "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", + "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", + "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", + "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", + "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", + "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.1", + "globals": "^13.19.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" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", + "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz", + "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.1.tgz", + "integrity": "sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.0.tgz", + "integrity": "sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.21.4", + "@babel/plugin-transform-react-jsx-self": "^7.21.0", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001481", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz", + "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.374", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.374.tgz", + "integrity": "sha512-dNP9tQNTrjgVlSXMqGaj0BdrCS+9pcUvy5/emB6x8kh0YwCoDZ0Z4ce1+7aod+KhybHUd5o5LgKrc5al4kVmzQ==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", + "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.18", + "@esbuild/android-arm64": "0.17.18", + "@esbuild/android-x64": "0.17.18", + "@esbuild/darwin-arm64": "0.17.18", + "@esbuild/darwin-x64": "0.17.18", + "@esbuild/freebsd-arm64": "0.17.18", + "@esbuild/freebsd-x64": "0.17.18", + "@esbuild/linux-arm": "0.17.18", + "@esbuild/linux-arm64": "0.17.18", + "@esbuild/linux-ia32": "0.17.18", + "@esbuild/linux-loong64": "0.17.18", + "@esbuild/linux-mips64el": "0.17.18", + "@esbuild/linux-ppc64": "0.17.18", + "@esbuild/linux-riscv64": "0.17.18", + "@esbuild/linux-s390x": "0.17.18", + "@esbuild/linux-x64": "0.17.18", + "@esbuild/netbsd-x64": "0.17.18", + "@esbuild/openbsd-x64": "0.17.18", + "@esbuild/sunos-x64": "0.17.18", + "@esbuild/win32-arm64": "0.17.18", + "@esbuild/win32-ia32": "0.17.18", + "@esbuild/win32-x64": "0.17.18" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.39.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", + "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.39.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "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.2.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz", + "integrity": "sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.0.tgz", + "integrity": "sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.3.tgz", + "integrity": "sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==", + "dev": true, + "dependencies": { + "esbuild": "^0.17.5", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/Python Rebuild/chs-source/package.json b/Python Rebuild/chs-source/package.json new file mode 100644 index 0000000..285fb7c --- /dev/null +++ b/Python Rebuild/chs-source/package.json @@ -0,0 +1,26 @@ +{ + "name": "chs-source", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.28", + "@types/react-dom": "^18.0.11", + "@vitejs/plugin-react": "^4.0.0", + "eslint": "^8.38.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.3.4", + "vite": "^4.3.2" + } +} diff --git a/Python Rebuild/chs-source/public/vite.svg b/Python Rebuild/chs-source/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/Python Rebuild/chs-source/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Python Rebuild/chs-source/src/App.css b/Python Rebuild/chs-source/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/Python Rebuild/chs-source/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/Python Rebuild/chs-source/src/App.jsx b/Python Rebuild/chs-source/src/App.jsx new file mode 100644 index 0000000..884969c --- /dev/null +++ b/Python Rebuild/chs-source/src/App.jsx @@ -0,0 +1,39 @@ +//import Calendar from './Components/Calendar/Calendar'; +import Table from './Components/Table/Table'; + +const App = () => { + const data = [ + { day: 'Sunday', event: 'Acoustic Jam', venue: 'The Blue Note' }, + { day: 'Sunday', event: 'Open Mic Night', venue: 'The Roxy' }, + { day: 'Monday', event: 'Karaoke Night', venue: 'The Karaoke Lounge' }, + { day: 'Tuesday', event: 'Trivia Night', venue: 'The Pub' }, + { day: 'Wednesday', event: 'Live Music', venue: 'The Loft' }, + { day: 'Thursday', event: 'Comedy Night', venue: 'The Chuckle Hut' }, + { day: 'Friday', event: 'DJ Night', venue: 'The Club' }, + { day: 'Saturday', event: 'Live Band', venue: 'The Arena' }, + ]; + + const filteredData = {}; + + data.forEach((item) => { + if (filteredData[item.day]) { + filteredData[item.day].push(item); + } else { + filteredData[item.day] = [item]; + } + }); + + return ( +
    +

    Events Calendar

    + {Object.entries(filteredData).map(([day, events]) => ( +
    +

    {`${day}'s Events:`}

    + + + ))} + + ); +}; + +export default App; diff --git a/Python Rebuild/chs-source/src/Components/Calendar/Calendar.css b/Python Rebuild/chs-source/src/Components/Calendar/Calendar.css new file mode 100644 index 0000000..e69de29 diff --git a/Python Rebuild/chs-source/src/Components/Calendar/Calendar.jsx b/Python Rebuild/chs-source/src/Components/Calendar/Calendar.jsx new file mode 100644 index 0000000..3c42c39 --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/Calendar/Calendar.jsx @@ -0,0 +1,23 @@ +import { useState } from "react"; + + +const Calendar = () => { + const daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + const [selectedDay, setSelectedDay] = useState(null); + + const handleDayClick = (day) => { + setSelectedDay(day); + }; + + return ( +
    + {daysOfWeek.map((day) => ( + + ))} +
    + ); +}; + +export default Calendar diff --git a/Python Rebuild/chs-source/src/Components/Table/Table.css b/Python Rebuild/chs-source/src/Components/Table/Table.css new file mode 100644 index 0000000..3d757cc --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/Table/Table.css @@ -0,0 +1,3 @@ +table, th, td { + border: 1px solid black; +} diff --git a/Python Rebuild/chs-source/src/Components/Table/Table.jsx b/Python Rebuild/chs-source/src/Components/Table/Table.jsx new file mode 100644 index 0000000..df8c0a6 --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/Table/Table.jsx @@ -0,0 +1,38 @@ +import "./Table.css"; +import PropTypes from "prop-types"; + +const Table = ({ data }) => { + return ( +
    + + + + + + + + + {data.map(({ day, event, venue }, index) => ( + + {index % 3 === 0 && } + + + + ))} + +
    DayEventVenue
    {day}{event}{venue}
    + ); +}; + +Table.propTypes = { + data: PropTypes.arrayOf( + PropTypes.shape({ + day: PropTypes.string.isRequired, + event: PropTypes.string.isRequired, + venue: PropTypes.string.isRequired, + }) + ).isRequired, +}; + +export default Table; + diff --git a/Python Rebuild/chs-source/src/assets/react.svg b/Python Rebuild/chs-source/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/Python Rebuild/chs-source/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Python Rebuild/chs-source/src/index.css b/Python Rebuild/chs-source/src/index.css new file mode 100644 index 0000000..2c3fac6 --- /dev/null +++ b/Python Rebuild/chs-source/src/index.css @@ -0,0 +1,69 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/Python Rebuild/chs-source/src/main.jsx b/Python Rebuild/chs-source/src/main.jsx new file mode 100644 index 0000000..54b39dd --- /dev/null +++ b/Python Rebuild/chs-source/src/main.jsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.jsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')).render( + + + , +) diff --git a/Python Rebuild/chs-source/vite.config.js b/Python Rebuild/chs-source/vite.config.js new file mode 100644 index 0000000..5a33944 --- /dev/null +++ b/Python Rebuild/chs-source/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From c729162890c3b5128f1146d6ded47e6ee5312310 Mon Sep 17 00:00:00 2001 From: unfirthman Date: Tue, 2 May 2023 14:30:02 -0400 Subject: [PATCH 16/19] chs-pour-house module now integrated css next and migrate to other venues --- Python Rebuild/chs-source/src/App.css | 44 +----------- Python Rebuild/chs-source/src/App.jsx | 36 ++-------- .../chs-source/src/Components/Table/Table.css | 17 ++++- .../chs-source/src/Components/Table/Table.jsx | 61 ++++++++-------- .../chs-source/src/Components/Today/Today.css | 0 .../chs-source/src/Components/Today/Today.jsx | 0 .../Components/venueReact/chsPourHouse.jsx | 44 ++++++++++++ Python Rebuild/chs-source/src/index.css | 69 ------------------- 8 files changed, 102 insertions(+), 169 deletions(-) create mode 100644 Python Rebuild/chs-source/src/Components/Today/Today.css create mode 100644 Python Rebuild/chs-source/src/Components/Today/Today.jsx create mode 100644 Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse.jsx diff --git a/Python Rebuild/chs-source/src/App.css b/Python Rebuild/chs-source/src/App.css index b9d355d..9d4aa54 100644 --- a/Python Rebuild/chs-source/src/App.css +++ b/Python Rebuild/chs-source/src/App.css @@ -1,42 +1,4 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; +h1 { + display: flex; + align-self: center; } diff --git a/Python Rebuild/chs-source/src/App.jsx b/Python Rebuild/chs-source/src/App.jsx index 884969c..a20e87d 100644 --- a/Python Rebuild/chs-source/src/App.jsx +++ b/Python Rebuild/chs-source/src/App.jsx @@ -1,38 +1,16 @@ +//App.jsx //import Calendar from './Components/Calendar/Calendar'; -import Table from './Components/Table/Table'; +//import Table from './Components/Table/Table'; +import './App.css' +import ChsPourHouse from './Components/venueReact/chsPourHouse'; -const App = () => { - const data = [ - { day: 'Sunday', event: 'Acoustic Jam', venue: 'The Blue Note' }, - { day: 'Sunday', event: 'Open Mic Night', venue: 'The Roxy' }, - { day: 'Monday', event: 'Karaoke Night', venue: 'The Karaoke Lounge' }, - { day: 'Tuesday', event: 'Trivia Night', venue: 'The Pub' }, - { day: 'Wednesday', event: 'Live Music', venue: 'The Loft' }, - { day: 'Thursday', event: 'Comedy Night', venue: 'The Chuckle Hut' }, - { day: 'Friday', event: 'DJ Night', venue: 'The Club' }, - { day: 'Saturday', event: 'Live Band', venue: 'The Arena' }, - ]; - - const filteredData = {}; - data.forEach((item) => { - if (filteredData[item.day]) { - filteredData[item.day].push(item); - } else { - filteredData[item.day] = [item]; - } - }); +const App = () => { return ( -
    -

    Events Calendar

    - {Object.entries(filteredData).map(([day, events]) => ( -
    -

    {`${day}'s Events:`}

    - +
    +
    - ))} - ); }; diff --git a/Python Rebuild/chs-source/src/Components/Table/Table.css b/Python Rebuild/chs-source/src/Components/Table/Table.css index 3d757cc..1ab582e 100644 --- a/Python Rebuild/chs-source/src/Components/Table/Table.css +++ b/Python Rebuild/chs-source/src/Components/Table/Table.css @@ -1,3 +1,18 @@ -table, th, td { +div { + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; +} + +table { + border: 1px solid black; +} + +th { + border: 1px solid black; +} + +td { border: 1px solid black; } diff --git a/Python Rebuild/chs-source/src/Components/Table/Table.jsx b/Python Rebuild/chs-source/src/Components/Table/Table.jsx index df8c0a6..37d2830 100644 --- a/Python Rebuild/chs-source/src/Components/Table/Table.jsx +++ b/Python Rebuild/chs-source/src/Components/Table/Table.jsx @@ -1,37 +1,40 @@ -import "./Table.css"; -import PropTypes from "prop-types"; +import "./Table.css" +import PropTypes from 'prop-types'; const Table = ({ data }) => { - return ( -
    - - - - - - - - - {data.map(({ day, event, venue }, index) => ( - - {index % 3 === 0 && } - - - - ))} - -
    DayEventVenue
    {day}{event}{venue}
    - ); + return ( + + + + + + + + + + + + + + {data.map(({ day, event}, index) => ( + + + + + ))} + +
    CHS PourHouseGaillardMusic FarmMusic HallRoyal AmericanTheater 99The WindJammer
    {day}{event}
    + ); }; Table.propTypes = { - data: PropTypes.arrayOf( - PropTypes.shape({ - day: PropTypes.string.isRequired, - event: PropTypes.string.isRequired, - venue: PropTypes.string.isRequired, - }) - ).isRequired, + data: PropTypes.arrayOf( + PropTypes.shape({ + day: PropTypes.string.isRequired, + event: PropTypes.string.isRequired, + venue: PropTypes.string.isRequired, + }) + ).isRequired, }; export default Table; diff --git a/Python Rebuild/chs-source/src/Components/Today/Today.css b/Python Rebuild/chs-source/src/Components/Today/Today.css new file mode 100644 index 0000000..e69de29 diff --git a/Python Rebuild/chs-source/src/Components/Today/Today.jsx b/Python Rebuild/chs-source/src/Components/Today/Today.jsx new file mode 100644 index 0000000..e69de29 diff --git a/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse.jsx b/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse.jsx new file mode 100644 index 0000000..ba2f0d4 --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse.jsx @@ -0,0 +1,44 @@ +// chsPourHouse.jsx +import data from "../../../../JSON/chs_pour_house.json"; +import PropTypes from "prop-types"; + +const ChsPourHouse = () => { + const mappedData = []; + + data.forEach((item) => { + const mappedItem = { + name: item[0], + date: item[1], + }; + mappedData.push(mappedItem); + }); + + return ( + + + + + + + + {Object.keys(mappedData).map((key) => ( + + + + + ))} + +
    CHS Pour House
    {mappedData[key].name}{mappedData[key].date}
    + ); +}; + +ChsPourHouse.propTypes = { + mappedData: PropTypes.arrayOf( + PropTypes.shape({ + name: PropTypes.string.isRequired, + date: PropTypes.string.isRequired, + }) + ).isRequired, +}; + +export default ChsPourHouse; diff --git a/Python Rebuild/chs-source/src/index.css b/Python Rebuild/chs-source/src/index.css index 2c3fac6..e69de29 100644 --- a/Python Rebuild/chs-source/src/index.css +++ b/Python Rebuild/chs-source/src/index.css @@ -1,69 +0,0 @@ -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} From dc0225b8fe4297a074110b9772e74843bf11272d Mon Sep 17 00:00:00 2001 From: unfirthman Date: Tue, 2 May 2023 14:30:20 -0400 Subject: [PATCH 17/19] chs-pour-house module now integrated css next and migrate to other venues --- Python Rebuild/JSON/chs_pour_house.json | 119 ++++++++++++++++++++++++ Python Rebuild/JSON/gaillard.json | 1 + Python Rebuild/JSON/music_farm.json | 1 + Python Rebuild/JSON/music_hall.json | 1 + Python Rebuild/JSON/royal_american.json | 1 + Python Rebuild/JSON/theater99.json | 1 + Python Rebuild/JSON/wind_jammer.json | 1 + 7 files changed, 125 insertions(+) create mode 100644 Python Rebuild/JSON/chs_pour_house.json create mode 100644 Python Rebuild/JSON/gaillard.json create mode 100644 Python Rebuild/JSON/music_farm.json create mode 100644 Python Rebuild/JSON/music_hall.json create mode 100644 Python Rebuild/JSON/royal_american.json create mode 100644 Python Rebuild/JSON/theater99.json create mode 100644 Python Rebuild/JSON/wind_jammer.json diff --git a/Python Rebuild/JSON/chs_pour_house.json b/Python Rebuild/JSON/chs_pour_house.json new file mode 100644 index 0000000..20551fb --- /dev/null +++ b/Python Rebuild/JSON/chs_pour_house.json @@ -0,0 +1,119 @@ +[ + ["The Hip Abduction", "Apr28Fri"], + ["PoHo Night Market", "Apr29Sat"], + ["The Brothers Comatose", "Apr29Sat"], + ["Motown Throwdown", "Apr30Sun"], + ["James McMurtry", "Apr30Sun"], + ["Pretty Good", "May1Mon"], + ["Kings and Queens", "May2Tue"], + ["The Reckoning", "May3Wed"], + ["Henhouse Prowlers", "May4Thu"], + ["Lureto & Friends", "May4Thu"], + ["Z\ufeffiggymoto \u201cLatin is Dead\u201d", "May5Fri"], + ["Lureto & Friends", "May5Fri"], + ["The Reckoning", "May6Sat"], + ["Daily Bread", "May6Sat"], + ["Motown Throwdown", "May7Sun"], + ["Agent Orange", "May7Sun"], + ["Slim & Friends", "May8Mon"], + ["Jamie McLean", "May9Tue"], + ["Esther Rose", "May9Tue"], + ["The Reckoning", "May10Wed"], + ["Eggy", "May10Wed"], + ["Certainly So", "May11Thu"], + ["Shot Thru The Heart", "May11Thu"], + ["Andrew Scotchie", "May12Fri"], + ["Perpetual Groove", "May12Fri"], + ["Strap On Face Funk 15", "May13Sat"], + ["Strap On Face Funk 15", "May13Sat"], + ["Motown Throwdown", "May14Sun"], + ["Dopapod", "May14Sun"], + ["Slim & Friends", "May15Mon"], + ["Kings and Queens", "May16Tue"], + ["The Reckoning", "May17Wed"], + ["Maxwells Silver Jammer", "May17Wed"], + ["Late Night Radio + Michal Menert", "May18Thu"], + ["Electro Lust", "May19Fri"], + ["Karl Denson\u2019s Tiny Universe", "May19Fri"], + ["Adam Knights Buried Alive", "May20Sat"], + ["Of Good Nature + Pierce Edens", "May20Sat"], + ["Motown Throwdown", "May21Sun"], + ["Kaleta & Super Yamba Band", "May21Sun"], + ["Slim & Friends", "May22Mon"], + ["Kings and Queens", "May23Tue"], + ["The Reckoning", "May24Wed"], + ["Nattali Rize", "May24Wed"], + ["Frute", "May25Thu"], + ["Matthew Logan Vasquez", "May25Thu"], + ["Brandon \u201cTaz\u201d Niederauer", "May26Fri"], + ["Thee Hot Girl Hoedown", "May27Sat"], + ["Motown Throwdown", "May28Sun"], + ["The Fritz", "May28Sun"], + ["Slim & Friends", "May29Mon"], + ["Kings and Queens", "May30Tue"], + ["Ballyhoo", "May30Tue"], + ["The Reckoning", "May31Wed"], + ["Squeaky Feet", "May31Wed"], + ["La Luz", "Jun1Thu"], + ["Motown Throwdown", "Jun4Sun"], + ["Sneezy", "Jun4Sun"], + ["Pretty Good", "Jun5Mon"], + ["Baked Shrimp", "Jun7Wed"], + ["The Band of Heathens", "Jun9Fri"], + ["The Dirty Grass Players", "Jun10Sat"], + ["Harvest Moon", "Jun10Sat"], + ["Motown Throwdown", "Jun11Sun"], + ["Ally Venable", "Jun11Sun"], + ["Pretty Good", "Jun12Mon"], + ["Equanimous", "Jun12Mon"], + ["W.I.T.C.H.", "Jun13Tue"], + ["The Goddamn Gallows + IV and the Strange Band", "Jun14Wed"], + ["The Rock and Roll Playhouse Plays", "Jun17Sat"], + ["PoHo Night Market", "Jun17Sat"], + ["Space Armadillo", "Jun17Sat"], + ["Motown Throwdown", "Jun18Sun"], + ["Legendary Shack Shakers", "Jun18Sun"], + ["Pretty Good", "Jun19Mon"], + ["Badfish \u2013 A Tribute to Sublime", "Jun19Mon"], + ["The Snozzberries", "Jun24Sat"], + ["Motown Throwdown", "Jun25Sun"], + ["Souls of Mischief", "Jun25Sun"], + ["Pretty Good", "Jun26Mon"], + ["Joshua Hedley + Lauren Morrow", "Jun27Tue"], + ["Mr. Holland\u2019s Oats", "Jun30Fri"], + ["Pigeons Playing Ping Pong", "Jul1Sat"], + ["Motown Throwdown", "Jul2Sun"], + ["Pigeons Playing Ping Pong", "Jul2Sun"], + ["Pretty Good", "Jul3Mon"], + ["Cash Machine", "Jul7Fri"], + ["Check Your Head", "Jul7Fri"], + ["The Grateful Brothers", "Jul8Sat"], + ["Motown Throwdown", "Jul9Sun"], + ["Pretty Good", "Jul10Mon"], + ["Son Volt", "Jul13Thu"], + ["Interstellar Echoes", "Jul15Sat"], + ["Motown Throwdown", "Jul16Sun"], + ["Brent Cobb", "Jul16Sun"], + ["Pretty Good", "Jul17Mon"], + ["Duane Betts and Palmetto Motel", "Jul18Tue"], + ["Graham Whorley", "Jul22Sat"], + ["Motown Throwdown", "Jul23Sun"], + ["Mountain Grass Unit", "Jul23Sun"], + ["Pretty Good", "Jul24Mon"], + ["Magnolia Boulevard", "Jul27Thu"], + ["Underground Springhouse & Frute", "Jul27Thu"], + ["Circles Around The Sun", "Jul28Fri"], + ["Circles Around The Sun", "Jul29Sat"], + ["Motown Throwdown", "Jul30Sun"], + ["Circles Around The Sun", "Jul30Sun"], + ["Pretty Good", "Jul31Mon"], + ["Spray Allen", "Aug3Thu"], + ["Motown Throwdown", "Aug6Sun"], + ["Grateful Dub", "Aug6Sun"], + ["PoHo Night Market", "Aug12Sat"], + ["Motown Throwdown", "Aug13Sun"], + ["Motown Throwdown", "Aug20Sun"], + ["Motown Throwdown", "Aug27Sun"], + ["The Nude Party", "Sep12Tue"], + ["Oteil & Friends", "Sep30Sat"] +] diff --git a/Python Rebuild/JSON/gaillard.json b/Python Rebuild/JSON/gaillard.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/Python Rebuild/JSON/gaillard.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/Python Rebuild/JSON/music_farm.json b/Python Rebuild/JSON/music_farm.json new file mode 100644 index 0000000..b2e539c --- /dev/null +++ b/Python Rebuild/JSON/music_farm.json @@ -0,0 +1 @@ +[["Charleston Metal Night", "4.28"], ["SOLD OUT: Spoon", "4.29"], ["Hoodoo Gurus", "5.1"], ["Joey Jay", "5.4"], ["Gasolina", "5.5"], ["Big Bubble Rave", "5.6"], ["The Breakfast Club", "5.11"], ["Mystical Half-Dozen & Friends: Intergalactic Dance Party", "5.12"], ["Saosin", "5.13"], ["CANCELED: Tallah", "5.14"], ["Boogie T.RIO", "5.18"], ["Start Making Sense", "5.19"], ["Sueco", "5.20"], ["The Midnight City", "5.26"], ["The Elements", "5.27"], ["Summer Salt", "6.3"], ["Power Of Love", "6.9"], ["Charleston Punk Night", "6.10"], ["Mimosa Fest", "6.11"], ["GBH", "6.12"], ["Between The Buried & Me", "6.16"], ["Grunge-A-Palooza", "6.17"], ["Shrek Rave", "6.23"], ["Best Night Ever: Taylor\u2019s Version", "6.24"], ["Bilmuri", "6.30"], ["Native Sons", "7.1"], ["Five For Fighting", "7.2"], ["Larry June", "7.3"], ["Lo Monaco and The Talbott Brothers", "7.8"], ["K-Pop Mixtape", "7.15"], ["Del Amitri", "7.17"], ["The Baseball Project", "8.11"], ["Candlelight: Best of Marvin Gaye, Stevie Wonder, and More", "9.21"], ["Candlelight: Best of Marvin Gaye, Stevie Wonder, and More", "9.21"], ["Circle Jerks", "9.27"], ["Deer Tick", "10.12"], ["Dehd", "10.14"], ["Varietopia w/ Paul F. Tompkins", "11.17"]] \ No newline at end of file diff --git a/Python Rebuild/JSON/music_hall.json b/Python Rebuild/JSON/music_hall.json new file mode 100644 index 0000000..1893423 --- /dev/null +++ b/Python Rebuild/JSON/music_hall.json @@ -0,0 +1 @@ +[[" 2 Miles Ahead: The Hospitality Tour ", " Fri 4.28 "], [" Lily\u2019s Burlesque ", " Sat 4.29 "], [" Little Feat: Boogie Your Spring Away Tour ", " Sun 4.30 "], [" PechaKucha 42 ", " Wed 5.3 "], [" Citizen Cope: Spring 2023 \u2013 Solo Acoustic ", " Thu 5.4 "], [" Girl Named Tom ", " Fri 5.5 "], [" Kathleen Madigan: Boxed Wine & Tiny Banjos Tour ", " Sat 5.6 "], [" The Gaslight Anthem ", " Sun 5.7 "], [" Leonid & Friends: A Tribute To The Music of Chicago ", " Wed 5.10 "], [" Space Oddity: A Tribute to David Bowie ", " Thu 5.11 "], [" NEW DATE: Bored Teachers Comedy Tour ", " Fri 5.12 "], [" Summer Samba: Charleston Jazz Orchestra ", " Sat 5.13 "], [" Summer Samba: Charleston Jazz Orchestra ", " Sat 5.13 "], [" JAZZ IS DEAD: 25th Anniversary Tour ", " Sun 5.14 "], [" Hari Kondabolu ", " Mon 5.15 "], [" Hunter Hayes: The Red Sky Tour ", " Tue 5.16 "], [" Straight Up With Stassi Live: The Mommy Dearest Tour ", " Wed 5.17 "], [" Closed for Private Event ", " Fri 5.19 "], [" Kountry Wayne: Help Is On The Way Tour ", " Sat 5.20 "], [" Emerald City ", " Sun 5.21 "], [" Emerald City ", " Sun 5.21 "], [" The Mummy Film Screening ", " Thu 5.25 "], [" The Summer of Twilight Film Series: Twilight ", " Tue 5.30 "], [" Ranky Tanky ", " Fri 6.2 "], [" Leslie Jones ", " Sat 6.3 "], [" Matt Maeson: That\u2019s My Cue Tour ", " Mon 6.5 "], [" The Summer of Twilight Film Series: New Moon ", " Tue 6.6 "], [" Boz Scaggs ", " Wed 6.7 "], [" Samantha Bee is Your Favorite Woman Tour ", " Fri 6.9 "], [" Toad the Wet Sprocket: All You Want Tour ", " Sun 6.11 "], [" The Summer of Twilight Film Series: Eclipse ", " Tue 6.13 "], [" Eric Gales ", " Fri 6.16 "], [" Summer Comfort ", " Sat 6.17 "], [" The Summer of Twilight Film Series: Breaking Dawn Pt. 1 ", " Tue 6.20 "], [" Ziggy Marley ", " Wed 6.21 "], [" Margaret Cho: Live and LIVID! ", " Fri 6.23 "], [" Gumshoes: A Whodunnit? ", " Sun 6.25 "], [" The Summer of Twilight Film Series: Breaking Dawn Pt. 2 ", " Tue 6.27 "], [" Remember The Name\u2026The Struts Tour ", " Wed 7.5 "], [" Old Gods of Appalachia ", " Thu 7.6 "], [" American Jukebox 2: The hits of the 60\u2019s, 70\u2019s and 80\u2019s! ", " Sat 7.8 "], [" American Jukebox 2: The hits of the 60\u2019s, 70\u2019s and 80\u2019s! ", " Sat 7.8 "], [" American Jukebox 2: The hits of the 60\u2019s, 70\u2019s and 80\u2019s! ", " Sun 7.9 "], [" Andrew McMahon In The Wilderness ", " Mon 7.17 "], [" Milky Chance: Summer Haze Tour ", " Wed 7.19 "], [" Tommy Emmanuel ", " Thu 7.20 "], [" Back N Black: The Ultimate AC/DC Experience ", " Sat 7.22 "], [" Mary Chapin Carpenter ", " Wed 8.9 "], [" The Brubeck Brothers Quartet ", " Fri 9.1 "], [" Black Jacket Symphony Presents Saturday Night Fever ", " Sat 9.9 "], [" Queens of Jazz: Charleston Jazz Orchestra + Quiana Parler ", " Sat 9.16 "], [" Queens of Jazz: Charleston Jazz Orchestra + Quiana Parler ", " Sat 9.16 "], [" Ryan Hamilton ", " Fri 9.22 "], [" Chris Botti ", " Sun 9.24 "], [" Tegan and Sara \u2013 Crybaby 2023 Tour ", " Wed 9.27 "], [" Tom Papa: 2023 Comedy Tour ", " Fri 9.29 "], [" Switchfoot \u2013 The Beautiful Letdown 20th Anniversary Tour ", " Tue 10.3 "], [" Todrick Hall: Velvet Rage Tour ", " Thu 10.12 "], [" Saxophone Supernova: Charleston Jazz Orchestra + Melissa Aldana ", " Sat 10.21 "], [" Saxophone Supernova: Charleston Jazz Orchestra + Melissa Aldana ", " Sat 10.21 "], [" Steve Hackett: Genesis Revisited ", " Thu 10.26 "], [" Michael Carbonaro ", " Sat 10.28 "], [" Brian Culbertson: The Trilogy Tour ", " Wed 11.8 "], [" Paula Poundstone ", " Fri 11.10 "], [" Steve Trevi\u00f1o \u2013 America\u2019s Favorite Husband Tour ", " Fri 11.17 "], [" New Date: Scott Bradlee\u2019s Postmodern Jukebox ", " Sun 11.26 "], [" Holiday Swing: Charleston Jazz Orchestra ", " Sat 12.2 "], [" Holiday Swing: Charleston Jazz Orchestra ", " Sat 12.2 "], [" The Charleston Christmas Special 2023 ", " Thu 12.14 "], [" The Charleston Christmas Special 2023 ", " Fri 12.15 "], [" The Charleston Christmas Special 2023 ", " Sat 12.16 "], [" The Charleston Christmas Special 2023 ", " Sat 12.16 "], [" The Charleston Christmas Special 2023 ", " Sun 12.17 "], [" The Charleston Christmas Special 2023 ", " Tue 12.19 "], [" The Charleston Christmas Special 2023 ", " Wed 12.20 "], [" The Charleston Christmas Special 2023 ", " Thu 12.21 "], [" The Charleston Christmas Special 2023 ", " Fri 12.22 "], [" The Charleston Christmas Special 2023 ", " Sat 12.23 "]] \ No newline at end of file diff --git a/Python Rebuild/JSON/royal_american.json b/Python Rebuild/JSON/royal_american.json new file mode 100644 index 0000000..615faab --- /dev/null +++ b/Python Rebuild/JSON/royal_american.json @@ -0,0 +1 @@ +[["Sam Morrow + David Quinn", "Fri, Apr 28, 2023"], ["Jordan Igoe", "Sat, Apr 29, 2023"], ["Trash Panda + Me Nd Adam", "Sat, Apr 29, 2023"], ["CULTURA FESTIVAL ", "Sun, Apr 30, 2023"], ["Illiterate Light", "Fri, May 5, 2023"], ["Meredith Foster", "Sat, May 6, 2023"], ["Ray Deezy ", "Saturday, May 6, 2023"], ["The Minks", "Wed, May 10, 2023"], ["Daddy's Beemer (Album Release)", "Thu, May 11, 2023"], ["Daddy's Beemer (Album Release) ", "Thu, May 11, 2023"], ["Secret Guest", "Fri, May 12, 2023"], ["\"Pocket Full Of Shells\" - A Tribute to RATM", "Fri, May 12, 2023"], ["Broken Speakers (Album Release)", "Sat, May 13, 2023"], ["Soda City Riot", "Sat, May 13, 2023"], ["Hotel Hugo + Easily Amused", "Sun, May 14, 2023"], ["Majic Dust", "Fri, May 19, 2023"], ["North By North ", "Sat, May 20, 2023"], ["Kind Hearted Strangers + Early Eyes", "Sat, May 20, 2023"], ["The Puddleducks", "Sun, May 21, 2023"], ["Five Door Sedan (fka Dakota Muckey)", "Sun, May 21, 2023"], ["Jared Petteys & The Headliners ", "Mon, May 22, 2023"], ["An Evening With Chris Wilcox & Friends", "Fri, May 26, 2023"], ["T. Hardy Morris", "Sat, May 27, 2023"], ["Homemade Haircuts + Tennis Courts ", "Sat, May 27, 2023"], ["Tom Mackell", "Sun, May 28, 2023"], ["Supper Club", "Sat, Jun 3, 2023"], ["Thrifters & Drifters Market ", "Sun, Jun 4, 2023"], ["The Prescriptions", "Fri, Jun 9, 2023"], ["Crumbsnatchers + Similar Kind", "Sat, Jun 10, 2023"], ["Fo Daniels", "Sat, Jun 10, 2023"], ["Dinner Time + Future Crib", "Sun, Jun 11, 2023"], ["Okey Dokey ", "Thu, Jun 15, 2023"], ["Trash Panda ", "Fri, Jun 16, 2023"], ["The Thing ", "Fri, Jun 16, 2023"], ["Jive Talk", "Sat, Jun 17, 2023"], ["Jordan Igoe", "Sat, Jun 17, 2023"], ["Connor Kelly & The Time Warp", "Sun, Jun 18, 2023"], ["Extra Chill Presents: BABE CLUB", "Sat, Jun 24, 2023"], ["DJ United feat. Quentin Ravanel (Drums) + Clark (Sax)", "Sun, Jun 25, 2023"], ["Thrifters & Drifters Market ", "Fri, Jun 30, 2023"], ["2 Slices", "Sat, Jul 1, 2023"], ["TWEN", "Sat, Jul 1, 2023"], ["Will Overman", "Sun, Jul 2, 2023"], ["Trash Panda", "Fri, Jul 21, 2023"], ["Kind Hearted Strangers", "Sat, Jul 22, 2023"], ["Thelma & The Sleaze", "Sat, Jul 22, 2023"], ["The Simplicity", "Sun, Jul 23, 2023"], ["SUPERSUCKERS", "Fri, Jul 28, 2023"], ["North By North", "Sat, Jul 29, 2023"], ["Brooke Garwood", "Sat, Jul 29, 2023"], ["Godwin Falcon", "Sun, Jul 30, 2023"], ["Homemade Haircuts", "Sunday, April 23, 2023"], ["Lucile", "Sat, Apr 22, 2023"], ["Secret Guest", "Sun, Apr 23, 2023"], ["Hotel Hugo + Hollifield", "Fri, Apr 21, 2023"], ["Shem Creeps", "Sat, Apr 22, 2023"]] \ No newline at end of file diff --git a/Python Rebuild/JSON/theater99.json b/Python Rebuild/JSON/theater99.json new file mode 100644 index 0000000..65f182d --- /dev/null +++ b/Python Rebuild/JSON/theater99.json @@ -0,0 +1 @@ +[["Clean Improv Comedy Show", "6:00 pm"], ["(Sold Out) Take The Funny And Run", "Apr 1 @ 6:00 pm"], ["Laughway To The Weekend", "8:00 pm"], ["(Sold Out) Take The Funny And Run", "Apr 1 @ 8:00 pm"], ["(Sold Out) The Have Nots! Comedy Improv", "8:00 pm"], ["Laughway To The Weekend", "Apr 5 @ 8:00 pm"], ["Student And Faculty Improv Jam", "8:00 pm"], ["Take The Funny And Run", "Apr 7 @ 8:00 pm"], ["Take The Funny And Run", "8:00 pm"], ["Laughway To The Weekend", "Apr 8 @ 8:00 pm"], ["Give \u2018Em A Hand Comedy Show!", "8:00 pm"], ["Take The Funny And Run", "Apr 12 @ 8:00 pm"], ["Take The Funny And Run", "8:00 pm"], ["Laughway To The Weekend", "Apr 13 @ 8:00 pm"], ["Laugh For A Lincoln", "8:00 pm"], ["Take The Funny And Run", "Apr 14 @ 8:00 pm"], ["Take The Funny And Run", "8:00 pm"]] \ No newline at end of file diff --git a/Python Rebuild/JSON/wind_jammer.json b/Python Rebuild/JSON/wind_jammer.json new file mode 100644 index 0000000..af27519 --- /dev/null +++ b/Python Rebuild/JSON/wind_jammer.json @@ -0,0 +1 @@ +[["Dave Landeo on the inside Stage", ["28", "Apr"]], ["Uncle Mingo on the N\u00dcTRL Beach Stage", ["28", "Apr"]], ["Weird Science on the Inside Stage", ["29", "Apr"]], ["The John Driskell Hopkins Band with JDH of Zac Brown Band on the inside Stage", ["04", "May"]], ["The Broken Hearts \u2013 A Tom Petty Tribute on the N\u00dcTRL Beach Stage", ["05", "May"]], ["The Brook & The Bluff with Savannah Conley on the N\u00dcTRL Beach Stage", ["06", "May"]], ["Railroad Earth \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["11", "May"]], ["Bumpin Uglies on the N\u00dcTRL Beach Stage", ["12", "May"]], ["The Blue Dogs on the N\u00dcTRL Beach Stage", ["13", "May"]], ["Grace Potter on the N\u00dcTRL Beach Stage- Wednesday", ["17", "May"]], ["Grace Potter on the N\u00dcTRL Beach Stage- Thursday", ["18", "May"]], ["Chris Lane on the N\u00dcTRL Beach Stage", ["19", "May"]], ["The Delta Circus \u2013 The Rolling Stones Tribute \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["20", "May"]], ["David Nail on the N\u00dcTRL Beach Stage", ["21", "May"]], ["Futurebirds with Leon III on the N\u00dcTRL Beach Stage- Thursday", ["25", "May"]], ["Futurebirds with Leon III on the N\u00dcTRL Beach Stage- Friday", ["26", "May"]], ["Rock The 90\u2019s \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["27", "May"]], ["Rumors on the N\u00dcTRL Beach Stage", ["28", "May"]], ["Flipturn on the N\u00dcTRL Beach Stage", ["01", "Jun"]], ["Corey Smith on the N\u00dcTRL Beach Stage- Friday", ["02", "Jun"]], ["Corey Smith on the N\u00dcTRL Beach Stage- Saturday", ["03", "Jun"]], ["Robert Randolph on the N\u00dcTRL Beach Stage", ["04", "Jun"]], ["The Disco Biscuits on the N\u00dcTRL Beach Stage", ["07", "Jun"]], ["Drivin N Cryin \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["09", "Jun"]], ["The Stews W/ The Castellows on the N\u00dcTRL Beach Stage", ["10", "Jun"]], ["Charley Crockett on the N\u00dcTRL Beach Stage", ["12", "Jun"]], ["Nightrain \u2013 Guns N\u2019 Roses tribute \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["15", "Jun"]], ["Boy Named Banjo \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["17", "Jun"]], ["Andy Frasco and the UN on the N\u00dcTRL Beach Stage", ["22", "Jun"]], ["The Piedmont Boys \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["23", "Jun"]], ["Easy Honey W/ The Thing on the N\u00dcTRL Beach Stage", ["30", "Jun"]], ["Yacht Rock Revue on the N\u00dcTRL Beach Stage- Saturday", ["01", "Jul"]], ["Yacht Rock Revue on the N\u00dcTRL Beach Stage- Sunday", ["02", "Jul"]], ["Edwin McCain on the N\u00dcTRL Beach Stage", ["03", "Jul"]], ["Flatland Cavalry with Pony Bradshaw on the N\u00dcTRL Beach Stage", ["06", "Jul"]], ["The 502s with Under the Rug on the N\u00dcTRL Beach Stage", ["07", "Jul"]], ["Mat Kearney Acoustic Trio on the N\u00dcTRL Beach Stage", ["09", "Jul"]], ["MOE. \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["20", "Jul"]], ["Muscadine Bloodline on the N\u00dcTRL Beach Stage", ["21", "Jul"]], ["The Vegabonds on the N\u00dcTRL Beach Stage", ["29", "Jul"]], ["Morgan Wade \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["09", "Aug"]], ["Charles Esten on the N\u00dcTRL Beach Stage", ["12", "Aug"]], ["Cowboy Mouth \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["25", "Aug"]], ["Sister Hazel\u2019s Hang on Hazelnut Isle 2023", ["25", "Aug"]], ["Sister Hazel \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage \u2013 Saturday", ["26", "Aug"]], ["Larry Fleet \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["27", "Aug"]], ["Sister Hazel \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage \u2013 Sunday Early Show", ["27", "Aug"]], ["Death Kings on the inside Stage", ["27", "Apr"]], ["Umphrey\u2019s McGee on the N\u00dcTRL Beach Stage", ["27", "Apr"]], ["Baysik (Ryan Stasik & Brendan Bayliss of Umphrey\u2019s McGee) \u2013 21Up or with Parent on the N\u00dcTRL Beach Stage", ["26", "Apr"]], ["BLINK 180TRUE \u2013 CANCELED", ["23", "Apr"]], ["Mr Fahrenheit (Queen Tribute) On The N\u00dcTRL Beach Stage", ["22", "Apr"]], ["High 5 on the inside Stage", ["22", "Apr"]], ["Flatspell on the inside Stage", ["21", "Apr"]], ["Stop Light Observations on the N\u00dcTRL Beach Stage", ["21", "Apr"]], ["Kyle Dills on the inside Stage", ["20", "Apr"]], ["Dylan Scott on the N\u00dcTRL Beach Stage", ["20", "Apr"]]] \ No newline at end of file From 0b40e6ee9dde604680d10a41e4d368679c003baf Mon Sep 17 00:00:00 2001 From: unfirthman Date: Fri, 5 May 2023 14:49:47 -0400 Subject: [PATCH 18/19] good styling, integration. closing this branch because the next one will be experimental --- Python Rebuild/chs-source/package-lock.json | 1235 ++++++++++++++++- Python Rebuild/chs-source/package.json | 1 + Python Rebuild/chs-source/src/App.css | 26 +- Python Rebuild/chs-source/src/App.jsx | 22 +- .../Components/venueReact/chsPourHouse.jsx | 44 - .../venueReact/chsPourHouse/chsPourHouse.css | 17 + .../venueReact/chsPourHouse/chsPourHouse.jsx | 33 + .../venueReact/musicFarm/musicFarm.css | 20 + .../venueReact/musicFarm/musicFarm.jsx | 35 + 9 files changed, 1352 insertions(+), 81 deletions(-) delete mode 100644 Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse.jsx create mode 100644 Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.css create mode 100644 Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.jsx create mode 100644 Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.css create mode 100644 Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.jsx diff --git a/Python Rebuild/chs-source/package-lock.json b/Python Rebuild/chs-source/package-lock.json index 40fa06f..016f858 100644 --- a/Python Rebuild/chs-source/package-lock.json +++ b/Python Rebuild/chs-source/package-lock.json @@ -15,6 +15,7 @@ "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", "@vitejs/plugin-react": "^4.0.0", + "cspell": "^6.31.1", "eslint": "^8.38.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", @@ -364,6 +365,387 @@ "node": ">=6.9.0" } }, + "node_modules/@cspell/cspell-bundled-dicts": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.31.1.tgz", + "integrity": "sha512-rsIev+dk1Vd8H1OKZhNhXycIVsMfeWJaeW3QUi1l4oIoGwQfJVbs1ZPZPHE5cglzyHOW1jQNStXf34UKaC6siA==", + "dev": true, + "dependencies": { + "@cspell/dict-ada": "^4.0.1", + "@cspell/dict-aws": "^3.0.0", + "@cspell/dict-bash": "^4.1.1", + "@cspell/dict-companies": "^3.0.9", + "@cspell/dict-cpp": "^5.0.2", + "@cspell/dict-cryptocurrencies": "^3.0.1", + "@cspell/dict-csharp": "^4.0.2", + "@cspell/dict-css": "^4.0.5", + "@cspell/dict-dart": "^2.0.2", + "@cspell/dict-django": "^4.0.2", + "@cspell/dict-docker": "^1.1.6", + "@cspell/dict-dotnet": "^5.0.0", + "@cspell/dict-elixir": "^4.0.2", + "@cspell/dict-en_us": "^4.3.2", + "@cspell/dict-en-common-misspellings": "^1.0.2", + "@cspell/dict-en-gb": "1.1.33", + "@cspell/dict-filetypes": "^3.0.0", + "@cspell/dict-fonts": "^3.0.1", + "@cspell/dict-fullstack": "^3.1.5", + "@cspell/dict-gaming-terms": "^1.0.4", + "@cspell/dict-git": "^2.0.0", + "@cspell/dict-golang": "^6.0.1", + "@cspell/dict-haskell": "^4.0.1", + "@cspell/dict-html": "^4.0.3", + "@cspell/dict-html-symbol-entities": "^4.0.0", + "@cspell/dict-java": "^5.0.5", + "@cspell/dict-k8s": "^1.0.1", + "@cspell/dict-latex": "^4.0.0", + "@cspell/dict-lorem-ipsum": "^3.0.0", + "@cspell/dict-lua": "^4.0.1", + "@cspell/dict-node": "^4.0.2", + "@cspell/dict-npm": "^5.0.5", + "@cspell/dict-php": "^4.0.1", + "@cspell/dict-powershell": "^5.0.1", + "@cspell/dict-public-licenses": "^2.0.2", + "@cspell/dict-python": "^4.0.2", + "@cspell/dict-r": "^2.0.1", + "@cspell/dict-ruby": "^5.0.0", + "@cspell/dict-rust": "^4.0.1", + "@cspell/dict-scala": "^5.0.0", + "@cspell/dict-software-terms": "^3.1.6", + "@cspell/dict-sql": "^2.1.0", + "@cspell/dict-svelte": "^1.0.2", + "@cspell/dict-swift": "^2.0.1", + "@cspell/dict-typescript": "^3.1.1", + "@cspell/dict-vue": "^3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@cspell/cspell-pipe": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.31.1.tgz", + "integrity": "sha512-zk1olZi4dr6GLm5PAjvsiZ01HURNSruUYFl1qSicGnTwYN8GaN4RhAwannAytcJ7zJPIcyXlid0YsB58nJf3wQ==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@cspell/cspell-service-bus": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-6.31.1.tgz", + "integrity": "sha512-YyBicmJyZ1uwKVxujXw7sgs9x+Eps43OkWmCtDZmZlnq489HdTSuhF1kTbVi2yeFSeaXIS87+uHo12z97KkQpg==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@cspell/cspell-types": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.31.1.tgz", + "integrity": "sha512-1KeTQFiHMssW1eRoF2NZIEg4gPVIfXLsL2+VSD/AV6YN7lBcuf6gRRgV5KWYarhxtEfjxhDdDTmu26l/iJEUtw==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@cspell/dict-ada": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.1.tgz", + "integrity": "sha512-/E9o3nHrXOhYmQE43deKbxZcR3MIJAsa+66IzP9TXGHheKEx8b9dVMVVqydDDH8oom1H0U20NRPtu6KRVbT9xw==", + "dev": true + }, + "node_modules/@cspell/dict-aws": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-3.0.0.tgz", + "integrity": "sha512-O1W6nd5y3Z00AMXQMzfiYrIJ1sTd9fB1oLr+xf/UD7b3xeHeMeYE2OtcWbt9uyeHim4tk+vkSTcmYEBKJgS5bQ==", + "dev": true + }, + "node_modules/@cspell/dict-bash": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.1.tgz", + "integrity": "sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==", + "dev": true + }, + "node_modules/@cspell/dict-companies": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.0.10.tgz", + "integrity": "sha512-LgPi7t9cMc2gBL63jkx/H3LAAtM/DjgZEsnmYmGqrCPWYVmKY1Y4sH2PBaV2ocE9CypV83M0DellGiUNb0kmug==", + "dev": true + }, + "node_modules/@cspell/dict-cpp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.0.3.tgz", + "integrity": "sha512-7sx/RFsf0hB3q8chx8OHYl9Kd+g0pqA1laphwaAQ+/jPwoAreYT3kNQWbJ3bIt/rMoORetFSQxckSbaJXwwqpw==", + "dev": true + }, + "node_modules/@cspell/dict-cryptocurrencies": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-3.0.1.tgz", + "integrity": "sha512-Tdlr0Ahpp5yxtwM0ukC13V6+uYCI0p9fCRGMGZt36rWv8JQZHIuHfehNl7FB/Qc09NCF7p5ep0GXbL+sVTd/+w==", + "dev": true + }, + "node_modules/@cspell/dict-csharp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz", + "integrity": "sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==", + "dev": true + }, + "node_modules/@cspell/dict-css": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.6.tgz", + "integrity": "sha512-2Lo8W2ezHmGgY8cWFr4RUwnjbndna5mokpCK/DuxGILQnuajR0J31ANQOXj/8iZM2phFB93ZzMNk/0c04TDfSQ==", + "dev": true + }, + "node_modules/@cspell/dict-dart": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.0.2.tgz", + "integrity": "sha512-jigcODm7Z4IFZ4vParwwP3IT0fIgRq/9VoxkXfrxBMsLBGGM2QltHBj7pl+joX+c4cOHxfyZktGJK1B1wFtR4Q==", + "dev": true + }, + "node_modules/@cspell/dict-django": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.0.2.tgz", + "integrity": "sha512-L0Yw6+Yh2bE9/FAMG4gy9m752G4V8HEBjEAGeRIQ9qvxDLR9yD6dPOtgEFTjv7SWlKSrLb9wA/W3Q2GKCOusSg==", + "dev": true + }, + "node_modules/@cspell/dict-docker": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.6.tgz", + "integrity": "sha512-zCCiRTZ6EOQpBnSOm0/3rnKW1kCcAUDUA7SxJG3SuH6iZvKi3I8FEg8+O83WQUeXg0SyPNerD9F40JLnnJjJig==", + "dev": true + }, + "node_modules/@cspell/dict-dotnet": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.0.tgz", + "integrity": "sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==", + "dev": true + }, + "node_modules/@cspell/dict-elixir": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz", + "integrity": "sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==", + "dev": true + }, + "node_modules/@cspell/dict-en_us": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.2.tgz", + "integrity": "sha512-o8xtHDLPNzW6hK5b1TaDTWt25vVi9lWlL6/dZ9YoS+ZMj+Dy/yuXatqfOgeGyU3a9+2gxC0kbr4oufMUQXI2mQ==", + "dev": true + }, + "node_modules/@cspell/dict-en-common-misspellings": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-1.0.2.tgz", + "integrity": "sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==", + "dev": true + }, + "node_modules/@cspell/dict-en-gb": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz", + "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==", + "dev": true + }, + "node_modules/@cspell/dict-filetypes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.0.tgz", + "integrity": "sha512-Fiyp0z5uWaK0d2TfR9GMUGDKmUMAsOhGD5A0kHoqnNGswL2iw0KB0mFBONEquxU65fEnQv4R+jdM2d9oucujuA==", + "dev": true + }, + "node_modules/@cspell/dict-fonts": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-3.0.2.tgz", + "integrity": "sha512-Z5QdbgEI7DV+KPXrAeDA6dDm/vTzyaW53SGlKqz6PI5VhkOjgkBXv3YtZjnxMZ4dY2ZIqq+RUK6qa9Pi8rQdGQ==", + "dev": true + }, + "node_modules/@cspell/dict-fullstack": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.1.5.tgz", + "integrity": "sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==", + "dev": true + }, + "node_modules/@cspell/dict-gaming-terms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.4.tgz", + "integrity": "sha512-hbDduNXlk4AOY0wFxcDMWBPpm34rpqJBeqaySeoUH70eKxpxm+dvjpoRLJgyu0TmymEICCQSl6lAHTHSDiWKZg==", + "dev": true + }, + "node_modules/@cspell/dict-git": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-2.0.0.tgz", + "integrity": "sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==", + "dev": true + }, + "node_modules/@cspell/dict-golang": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.1.tgz", + "integrity": "sha512-Z19FN6wgg2M/A+3i1O8qhrGaxUUGOW8S2ySN0g7vp4HTHeFmockEPwYx7gArfssNIruw60JorZv+iLJ6ilTeow==", + "dev": true + }, + "node_modules/@cspell/dict-haskell": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz", + "integrity": "sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==", + "dev": true + }, + "node_modules/@cspell/dict-html": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.3.tgz", + "integrity": "sha512-Gae8i8rrArT0UyG1I6DHDK62b7Be6QEcBSIeWOm4VIIW1CASkN9B0qFgSVnkmfvnu1Y3H7SSaaEynKjdj3cs8w==", + "dev": true + }, + "node_modules/@cspell/dict-html-symbol-entities": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz", + "integrity": "sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==", + "dev": true + }, + "node_modules/@cspell/dict-java": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.5.tgz", + "integrity": "sha512-X19AoJgWIBwJBSWGFqSgHaBR/FEykBHTMjL6EqOnhIGEyE9nvuo32tsSHjXNJ230fQxQptEvRZoaldNLtKxsRg==", + "dev": true + }, + "node_modules/@cspell/dict-k8s": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.1.tgz", + "integrity": "sha512-gc5y4Nm3hVdMZNBZfU2M1AsAmObZsRWjCUk01NFPfGhFBXyVne41T7E62rpnzu5330FV/6b/TnFcPgRmak9lLw==", + "dev": true + }, + "node_modules/@cspell/dict-latex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.0.tgz", + "integrity": "sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==", + "dev": true + }, + "node_modules/@cspell/dict-lorem-ipsum": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-3.0.0.tgz", + "integrity": "sha512-msEV24qEpzWZs2kcEicqYlhyBpR0amfDkJOs+iffC07si9ftqtQ+yP3lf1VFLpgqw3SQh1M1vtU7RD4sPrNlcQ==", + "dev": true + }, + "node_modules/@cspell/dict-lua": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.1.tgz", + "integrity": "sha512-j0MFmeCouSoC6EdZTbvGe1sJ9V+ruwKSeF+zRkNNNload7R72Co5kX1haW2xLHGdlq0kqSy1ODRZKdVl0e+7hg==", + "dev": true + }, + "node_modules/@cspell/dict-node": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-4.0.2.tgz", + "integrity": "sha512-FEQJ4TnMcXEFslqBQkXa5HposMoCGsiBv2ux4IZuIXgadXeHKHUHk60iarWpjhzNzQLyN2GD7NoRMd12bK3Llw==", + "dev": true + }, + "node_modules/@cspell/dict-npm": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.5.tgz", + "integrity": "sha512-eirZm4XpJNEcbmLGIwI2qXdRRlCKwEsH9mT3qCUytmbj6S6yn63F+8bShMW/yQBedV7+GXq9Td+cJdqiVutOiA==", + "dev": true + }, + "node_modules/@cspell/dict-php": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.1.tgz", + "integrity": "sha512-XaQ/JkSyq2c07MfRG54DjLi2CV+HHwS99DDCAao9Fq2JfkWroTQsUeek7wYZXJATrJVOULoV3HKih12x905AtQ==", + "dev": true + }, + "node_modules/@cspell/dict-powershell": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.1.tgz", + "integrity": "sha512-lLl+syWFgfv2xdsoxHfPIB2FGkn//XahCIKcRaf52AOlm1/aXeaJN579B9HCpvM7wawHzMqJ33VJuL/vb6Lc4g==", + "dev": true + }, + "node_modules/@cspell/dict-public-licenses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.2.tgz", + "integrity": "sha512-baKkbs/WGEV2lCWZoL0KBPh3uiPcul5GSDwmXEBAsR5McEW52LF94/b7xWM0EmSAc/y8ODc5LnPYC7RDRLi6LQ==", + "dev": true + }, + "node_modules/@cspell/dict-python": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.0.4.tgz", + "integrity": "sha512-whCrxsALD66PxSbxZ++xV1HQzxpRZMiX6LXEkZlj4gWuptrzyZUdTMiI8EqVEVfyf5G4EW7HNCTz35kNL5Zl+w==", + "dev": true + }, + "node_modules/@cspell/dict-r": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.1.tgz", + "integrity": "sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==", + "dev": true + }, + "node_modules/@cspell/dict-ruby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.0.tgz", + "integrity": "sha512-ssb96QxLZ76yPqFrikWxItnCbUKhYXJ2owkoIYzUGNFl2CHSoHCb5a6Zetum9mQ/oUA3gNeUhd28ZUlXs0la2A==", + "dev": true + }, + "node_modules/@cspell/dict-rust": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.1.tgz", + "integrity": "sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==", + "dev": true + }, + "node_modules/@cspell/dict-scala": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.0.tgz", + "integrity": "sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==", + "dev": true + }, + "node_modules/@cspell/dict-software-terms": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.1.8.tgz", + "integrity": "sha512-gXJWSqnr8U50wHo/tpplLaZUQBQQGOwaJFHyMhN+DVNO92setoApHQ0zSqy4KSSkfvdbgYP0nPAj0MAo9/TvOw==", + "dev": true + }, + "node_modules/@cspell/dict-sql": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.0.tgz", + "integrity": "sha512-Bb+TNWUrTNNABO0bmfcYXiTlSt0RD6sB2MIY+rNlaMyIwug43jUjeYmkLz2tPkn3+2uvySeFEOMVYhMVfcuDKg==", + "dev": true + }, + "node_modules/@cspell/dict-svelte": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz", + "integrity": "sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==", + "dev": true + }, + "node_modules/@cspell/dict-swift": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.1.tgz", + "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==", + "dev": true + }, + "node_modules/@cspell/dict-typescript": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.1.tgz", + "integrity": "sha512-N9vNJZoOXmmrFPR4ir3rGvnqqwmQGgOYoL1+y6D4oIhyr7FhaYiyF/d7QT61RmjZQcATMa6PSL+ZisCeRLx9+A==", + "dev": true + }, + "node_modules/@cspell/dict-vue": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz", + "integrity": "sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==", + "dev": true + }, + "node_modules/@cspell/dynamic-import": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-6.31.1.tgz", + "integrity": "sha512-uliIUv9uZlnyYmjUlcw/Dm3p0xJOEnWJNczHAfqAl4Ytg6QZktw0GtUA9b1umbRXLv0KRTPtSC6nMq3cR7rRmQ==", + "dev": true, + "dependencies": { + "import-meta-resolve": "^2.2.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@cspell/strong-weak-map": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-6.31.1.tgz", + "integrity": "sha512-z8AuWvUuSnugFKJOA9Ke0aiFuehcqLFqia9bk8XaQNEWr44ahPVn3sEWnAncTxPbpWuUw5UajoJa0egRAE1CCg==", + "dev": true, + "engines": { + "node": ">=14.6" + } + }, "node_modules/@esbuild/android-arm": { "version": "0.17.18", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", @@ -1055,6 +1437,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true + }, "node_modules/array.prototype.flatmap": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", @@ -1114,6 +1502,18 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/browserslist": { "version": "4.21.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", @@ -1195,50 +1595,424 @@ "supports-color": "^5.3.0" }, "engines": { - "node": ">=4" + "node": ">=4" + } + }, + "node_modules/clear-module": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", + "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==", + "dev": true, + "dependencies": { + "parent-module": "^2.0.0", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clear-module/node_modules/parent-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz", + "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==", + "dev": true, + "dependencies": { + "callsites": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clear-module/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/comment-json": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", + "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "dev": true, + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", + "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", + "dev": true, + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cspell": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-6.31.1.tgz", + "integrity": "sha512-gyCtpkOpwI/TGibbtIgMBFnAUUp2hnYdvW/9Ky4RcneHtLH0+V/jUEbZD8HbRKz0GVZ6mhKWbNRSEyP9p3Cejw==", + "dev": true, + "dependencies": { + "@cspell/cspell-pipe": "6.31.1", + "@cspell/dynamic-import": "6.31.1", + "chalk": "^4.1.2", + "commander": "^10.0.0", + "cspell-gitignore": "6.31.1", + "cspell-glob": "6.31.1", + "cspell-io": "6.31.1", + "cspell-lib": "6.31.1", + "fast-glob": "^3.2.12", + "fast-json-stable-stringify": "^2.1.0", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "imurmurhash": "^0.1.4", + "semver": "^7.3.8", + "strip-ansi": "^6.0.1", + "vscode-uri": "^3.0.7" + }, + "bin": { + "cspell": "bin.js", + "cspell-esm": "bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/streetsidesoftware/cspell?sponsor=1" + } + }, + "node_modules/cspell-dictionary": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-6.31.1.tgz", + "integrity": "sha512-7+K7aQGarqbpucky26wled7QSCJeg6VkLUWS+hLjyf0Cqc9Zew5xsLa4QjReExWUJx+a97jbiflITZNuWxgMrg==", + "dev": true, + "dependencies": { + "@cspell/cspell-pipe": "6.31.1", + "@cspell/cspell-types": "6.31.1", + "cspell-trie-lib": "6.31.1", + "fast-equals": "^4.0.3", + "gensequence": "^5.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cspell-gitignore": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.31.1.tgz", + "integrity": "sha512-PAcmjN6X89Z8qgjem6HYb+VmvVtKuc+fWs4sk21+jv2MiLk23Bkp+8slSaIDVR//58fxJkMx17PHyo2cDO/69A==", + "dev": true, + "dependencies": { + "cspell-glob": "6.31.1", + "find-up": "^5.0.0" + }, + "bin": { + "cspell-gitignore": "bin.mjs" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cspell-glob": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.31.1.tgz", + "integrity": "sha512-ygEmr5hgE4QtO5+L3/ihfMKBhPipbapfS22ilksFSChKMc15Regds0z+z/1ZBoe+OFAPneQfIuBxMwQ/fB00GQ==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.5" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cspell-grammar": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-6.31.1.tgz", + "integrity": "sha512-AsRVP0idcNFVSb9+p9XjMumFj3BUV67WIPWApaAzJl/dYyiIygQObRE+si0/QtFWGNw873b7hNhWZiKjqIdoaQ==", + "dev": true, + "dependencies": { + "@cspell/cspell-pipe": "6.31.1", + "@cspell/cspell-types": "6.31.1" + }, + "bin": { + "cspell-grammar": "bin.mjs" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cspell-io": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-6.31.1.tgz", + "integrity": "sha512-deZcpvTYY/NmLfOdOtzcm+nDvJZozKmj4TY3pPpX0HquPX0A/w42bFRT/zZNmRslFl8vvrCZZUog7SOc6ha3uA==", + "dev": true, + "dependencies": { + "@cspell/cspell-service-bus": "6.31.1", + "node-fetch": "^2.6.9" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cspell-lib": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.31.1.tgz", + "integrity": "sha512-KgSiulbLExY+z2jGwkO77+aAkyugsPAw7y07j3hTQLpd+0esPCZqrmbo2ItnkvkDNd/c34PqQCr7/044/rz8gw==", + "dev": true, + "dependencies": { + "@cspell/cspell-bundled-dicts": "6.31.1", + "@cspell/cspell-pipe": "6.31.1", + "@cspell/cspell-types": "6.31.1", + "@cspell/strong-weak-map": "6.31.1", + "clear-module": "^4.1.2", + "comment-json": "^4.2.3", + "configstore": "^5.0.1", + "cosmiconfig": "8.0.0", + "cspell-dictionary": "6.31.1", + "cspell-glob": "6.31.1", + "cspell-grammar": "6.31.1", + "cspell-io": "6.31.1", + "cspell-trie-lib": "6.31.1", + "fast-equals": "^4.0.3", + "find-up": "^5.0.0", + "gensequence": "^5.0.2", + "import-fresh": "^3.3.0", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0", + "vscode-languageserver-textdocument": "^1.0.8", + "vscode-uri": "^3.0.7" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/cspell-lib/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cspell-trie-lib": { + "version": "6.31.1", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.31.1.tgz", + "integrity": "sha512-MtYh7s4Sbr1rKT31P2BK6KY+YfOy3dWsuusq9HnqCXmq6aZ1HyFgjH/9p9uvqGi/TboMqn1KOV8nifhXK3l3jg==", + "dev": true, + "dependencies": { + "@cspell/cspell-pipe": "6.31.1", + "@cspell/cspell-types": "6.31.1", + "gensequence": "^5.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/cspell/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cspell/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cspell/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cspell/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cspell/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cspell/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/cspell/node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/cspell/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, + "node_modules/cspell/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", @@ -1296,12 +2070,33 @@ "node": ">=6.0.0" } }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.374", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.374.tgz", "integrity": "sha512-dNP9tQNTrjgVlSXMqGaj0BdrCS+9pcUvy5/emB6x8kh0YwCoDZ0Z4ce1+7aod+KhybHUd5o5LgKrc5al4kVmzQ==", "dev": true }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-abstract": { "version": "1.21.2", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", @@ -1706,6 +2501,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -1754,6 +2562,40 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-equals": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz", + "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1787,6 +2629,18 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -1884,6 +2738,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gensequence": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-5.0.2.tgz", + "integrity": "sha512-JlKEZnFc6neaeSVlkzBGGgkIoIaSxMgvdamRoPN8r3ozm2r9dusqxeKqYQ7lhzmj2UhFQP8nkyfCaiLQxiLrDA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -1907,6 +2770,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -1955,6 +2830,18 @@ "node": ">=10.13.0" } }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "dev": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -1991,6 +2878,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "node_modules/grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", @@ -2027,6 +2920,15 @@ "node": ">=4" } }, + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/has-property-descriptors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", @@ -2103,6 +3005,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-meta-resolve": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz", + "integrity": "sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -2128,6 +3040,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -2156,6 +3074,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -2256,6 +3180,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", @@ -2271,6 +3204,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -2357,6 +3299,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -2414,6 +3362,12 @@ "node": ">=4" } }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2464,6 +3418,12 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2505,6 +3465,43 @@ "yallist": "^3.0.2" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2547,6 +3544,26 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-releases": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", @@ -2727,6 +3744,24 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -2760,12 +3795,33 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/postcss": { "version": "8.4.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", @@ -2898,6 +3954,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/resolve": { "version": "2.0.0-next.4", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", @@ -2924,6 +3989,18 @@ "node": ">=4" } }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -3054,6 +4131,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -3190,6 +4273,24 @@ "node": ">=4" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3228,6 +4329,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -3243,6 +4353,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", @@ -3330,6 +4452,34 @@ } } }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz", + "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==", + "dev": true + }, + "node_modules/vscode-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz", + "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==", + "dev": true + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3396,6 +4546,27 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", diff --git a/Python Rebuild/chs-source/package.json b/Python Rebuild/chs-source/package.json index 285fb7c..9155a56 100644 --- a/Python Rebuild/chs-source/package.json +++ b/Python Rebuild/chs-source/package.json @@ -17,6 +17,7 @@ "@types/react": "^18.0.28", "@types/react-dom": "^18.0.11", "@vitejs/plugin-react": "^4.0.0", + "cspell": "^6.31.1", "eslint": "^8.38.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", diff --git a/Python Rebuild/chs-source/src/App.css b/Python Rebuild/chs-source/src/App.css index 9d4aa54..57db4e8 100644 --- a/Python Rebuild/chs-source/src/App.css +++ b/Python Rebuild/chs-source/src/App.css @@ -1,4 +1,28 @@ -h1 { + + +header { + width: 100%; + text-align: center; + margin-bottom: 20px; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +header.h1 { display: flex; align-self: center; } + +main { + display: flex; + flex-direction: row; + justify-content: center; +} + +div { + display: flex; + flex-direction: row; + justify-content: center; +} diff --git a/Python Rebuild/chs-source/src/App.jsx b/Python Rebuild/chs-source/src/App.jsx index a20e87d..348dc39 100644 --- a/Python Rebuild/chs-source/src/App.jsx +++ b/Python Rebuild/chs-source/src/App.jsx @@ -2,15 +2,29 @@ //import Calendar from './Components/Calendar/Calendar'; //import Table from './Components/Table/Table'; import './App.css' -import ChsPourHouse from './Components/venueReact/chsPourHouse'; +import ChsPourHouse from './Components/venueReact/chsPourHouse/chsPourHouse'; +import MusicFarm from './Components/venueReact/musicFarm/musicFarm'; const App = () => { return ( -
    - -
    + +
    +

    + Welcome to CHS Source! +

    +

    Your place for independent venue schedules

    +
    +
    +
    + +
    +
    + +
    +
    + ); }; diff --git a/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse.jsx b/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse.jsx deleted file mode 100644 index ba2f0d4..0000000 --- a/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse.jsx +++ /dev/null @@ -1,44 +0,0 @@ -// chsPourHouse.jsx -import data from "../../../../JSON/chs_pour_house.json"; -import PropTypes from "prop-types"; - -const ChsPourHouse = () => { - const mappedData = []; - - data.forEach((item) => { - const mappedItem = { - name: item[0], - date: item[1], - }; - mappedData.push(mappedItem); - }); - - return ( - - - - - - - - {Object.keys(mappedData).map((key) => ( - - - - - ))} - -
    CHS Pour House
    {mappedData[key].name}{mappedData[key].date}
    - ); -}; - -ChsPourHouse.propTypes = { - mappedData: PropTypes.arrayOf( - PropTypes.shape({ - name: PropTypes.string.isRequired, - date: PropTypes.string.isRequired, - }) - ).isRequired, -}; - -export default ChsPourHouse; diff --git a/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.css b/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.css new file mode 100644 index 0000000..06ef51e --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.css @@ -0,0 +1,17 @@ + + +table { + border: 1px solid black; + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: space-around; +} + +th { + border: 1px solid black; +} + +td { + border: 1px solid black; +} diff --git a/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.jsx b/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.jsx new file mode 100644 index 0000000..70228ad --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.jsx @@ -0,0 +1,33 @@ +// chsPourHouse.jsx +import "./chsPourHouse.css"; +import data from "../../../../../JSON/chs_pour_house.json"; +//import PropTypes from "prop-types"; + +const ChsPourHouse = () => { + const mappedData = data.map((item) => { + return { + name: item[0], + date: item[1], + }; + }); + + return ( + + + + + + + + {mappedData.map((item, index) => ( + + + + + ))} + +
    CHS Pour House
    {item.name}{item.date}
    + ); +}; + +export default ChsPourHouse; diff --git a/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.css b/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.css new file mode 100644 index 0000000..140f763 --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.css @@ -0,0 +1,20 @@ + +div { + + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: space-around; +} + +table { + border: 1px solid black; +} + +th { + border: 1px solid black; +} + +td { + border: 1px solid black; +} diff --git a/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.jsx b/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.jsx new file mode 100644 index 0000000..2764ca7 --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.jsx @@ -0,0 +1,35 @@ +// musicFarm.jsx +import './musicFarm.css' +import data from "../../../../../JSON/music_farm.json"; + +const MusicFarm = () => { + const mappedData = []; + + data.forEach((item) => { + const mappedItem = { + name: item[0], + date: item[1], + }; + mappedData.push(mappedItem); + }); + + return ( + + + + + + + + {Object.keys(mappedData).map((key) => ( + + + + + ))} + +
    The Music Farm
    {mappedData[key].name}{mappedData[key].date}
    + ); +}; + +export default MusicFarm; From 26596b936d1e96c4975d30942dfa0fc4a71797c0 Mon Sep 17 00:00:00 2001 From: unfirthman Date: Tue, 9 May 2023 14:17:24 -0400 Subject: [PATCH 19/19] mapping is working with nulls, but it is buggy. committing this and starting a new branch for possible v0.1 deployment --- Python Rebuild/chs-source/package-lock.json | 32 ++++++++ Python Rebuild/chs-source/package.json | 1 + .../venueReact/chsPourHouse/chsPourHouse.jsx | 10 ++- .../venueReact/musicFarm/musicFarm.jsx | 26 +++---- .../venueReact/replaceSkippedNumbers-OLD.js | 75 +++++++++++++++++++ .../venueReact/replaceSkippedNumbers.js | 40 ++++++++++ 6 files changed, 167 insertions(+), 17 deletions(-) create mode 100644 Python Rebuild/chs-source/src/Components/venueReact/replaceSkippedNumbers-OLD.js create mode 100644 Python Rebuild/chs-source/src/Components/venueReact/replaceSkippedNumbers.js diff --git a/Python Rebuild/chs-source/package-lock.json b/Python Rebuild/chs-source/package-lock.json index 016f858..bd43474 100644 --- a/Python Rebuild/chs-source/package-lock.json +++ b/Python Rebuild/chs-source/package-lock.json @@ -8,6 +8,7 @@ "name": "chs-source", "version": "0.0.0", "dependencies": { + "date-fns": "^2.30.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -316,6 +317,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", + "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", @@ -2019,6 +2031,21 @@ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", "dev": true }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -3937,6 +3964,11 @@ "node": ">=0.10.0" } }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", diff --git a/Python Rebuild/chs-source/package.json b/Python Rebuild/chs-source/package.json index 9155a56..609a201 100644 --- a/Python Rebuild/chs-source/package.json +++ b/Python Rebuild/chs-source/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "date-fns": "^2.30.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.jsx b/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.jsx index 70228ad..01cb1a7 100644 --- a/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.jsx +++ b/Python Rebuild/chs-source/src/Components/venueReact/chsPourHouse/chsPourHouse.jsx @@ -1,15 +1,17 @@ // chsPourHouse.jsx import "./chsPourHouse.css"; import data from "../../../../../JSON/chs_pour_house.json"; -//import PropTypes from "prop-types"; +import { replaceSkippedDates } from "../replaceSkippedNumbers"; const ChsPourHouse = () => { - const mappedData = data.map((item) => { + const filterData = replaceSkippedDates(data, 0); + const mappedData = filterData.map((item) => { return { - name: item[0], - date: item[1], + name: item.name, + date: item.date, }; }); + console.log(mappedData) return ( diff --git a/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.jsx b/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.jsx index 2764ca7..555a9d5 100644 --- a/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.jsx +++ b/Python Rebuild/chs-source/src/Components/venueReact/musicFarm/musicFarm.jsx @@ -1,17 +1,17 @@ // musicFarm.jsx import './musicFarm.css' import data from "../../../../../JSON/music_farm.json"; +import { replaceSkippedDates } from '../replaceSkippedNumbers'; const MusicFarm = () => { - const mappedData = []; - - data.forEach((item) => { - const mappedItem = { - name: item[0], - date: item[1], - }; - mappedData.push(mappedItem); - }); + const filterData = replaceSkippedDates(data, 0); + const mappedData = filterData.map((item) => { + return { + name: item.name, + date: item.date, + }; + }); + console.log(mappedData) return (
    @@ -21,10 +21,10 @@ const MusicFarm = () => { - {Object.keys(mappedData).map((key) => ( - - - + {mappedData.map((item, index) => ( + + + ))} diff --git a/Python Rebuild/chs-source/src/Components/venueReact/replaceSkippedNumbers-OLD.js b/Python Rebuild/chs-source/src/Components/venueReact/replaceSkippedNumbers-OLD.js new file mode 100644 index 0000000..3aa8fec --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/venueReact/replaceSkippedNumbers-OLD.js @@ -0,0 +1,75 @@ + + +// replaceSkippedNumbers.js + +/** + * Replaces skipped numbers in a list of name:date pairs with { name: null, date: missingNumber } objects. + * @param {Array} data - An array of name:date pairs. + * @returns {Array} - A new array with skipped numbers replaced with { name: null, date: missingNumber } objects. + +export const replaceSkippedNumbers = (data, replacementNumber) => { + const filteredData = []; + + for (let i = 0; i < data.length; i++) { + const curr = data[i]; + const prev = data[i - 1]; + + if (prev && curr[1] - prev[1] > 1) { + // Add missing objects for skipped numbers + for (let j = prev[1] + 1; j < curr[1]; j++) { + filteredData.push({ name: "Nothing Today!", date: replacementNumber }); + } + } + + // Create object with name and date properties + const obj = { name: curr[0], date: curr[1] }; + // Add object to filteredData + filteredData.push(obj); + } + + return filteredData; +}; + + */ + +import { format } from 'date-fns'; +import { eachDayOfInterval } from 'date-fns'; + +/** + * Replaces skipped dates in an array of name:date pairs with { name: null, date: missingDate } objects. + * @param {Array} data - An array of name:date pairs. + * @returns {Array} - A new array with skipped dates replaced with { name: null, date: missingDate } objects. + */ +export const replaceSkippedDates = (data) => { + const filteredData = []; + const dateFormat = 'yyyy-MM-dd'; + + for (let i = 0; i < data.length; i++) { + const curr = data[i]; + const prev = data[i - 1]; + + if (prev && curr[1] !== prev[1]) { + // Find missing dates +const startDate = new Date(prev[1]); +const endDate = new Date(curr[1]); +const allDates = eachDayOfInterval({ + start: startDate, + end: endDate +}).map(date => format(date, dateFormat)); + + // Add missing objects for skipped dates + allDates.forEach(date => { + filteredData.push({ name: null, date: date }); + }); + } + + // Create object with name and date properties + const obj = { name: curr[0], date: curr[1] }; + // Add object to filteredData + filteredData.push(obj); + } + + return filteredData; +}; + + diff --git a/Python Rebuild/chs-source/src/Components/venueReact/replaceSkippedNumbers.js b/Python Rebuild/chs-source/src/Components/venueReact/replaceSkippedNumbers.js new file mode 100644 index 0000000..babe1d7 --- /dev/null +++ b/Python Rebuild/chs-source/src/Components/venueReact/replaceSkippedNumbers.js @@ -0,0 +1,40 @@ +import { format } from 'date-fns'; +import { eachDayOfInterval } from 'date-fns'; + +/** + * Replaces skipped dates in an array of name:date pairs with { name: null, date: missingDate } objects. + * @param {Array} data - An array of name:date pairs. + * @returns {Array} - A new array with skipped dates replaced with { name: null, date: missingDate } objects. + */ +export const replaceSkippedDates = (data) => { + const filteredData = []; + const dateFormat = 'yyyy-MM-dd'; + + for (let i = 0; i < data.length; i++) { + const curr = data[i]; + const prev = data[i - 1]; + + if (prev && curr[1] !== prev[1]) { + const startDate = new Date(prev[1]); + const endDate = new Date(curr[1]); + if (!isNaN(startDate.getTime()) && !isNaN(endDate.getTime()) && startDate < endDate) { + const allDates = eachDayOfInterval({ + start: startDate, + end: endDate + }).map(date => format(date, dateFormat)); + + allDates.forEach(date => { + filteredData.push({ name: null, date: date }); + }); + } else { + console.error(`Invalid interval: start date ${startDate}, end date ${endDate}`); + } + } + + const obj = { name: curr[0], date: curr[1] }; + filteredData.push(obj); + } + + return filteredData; +}; +
    {mappedData[key].name}{mappedData[key].date}
    {item.name}{item.date}