From d6ecb14ff4eb890a032431ca78b667c3afcc43fa Mon Sep 17 00:00:00 2001 From: Ryan Pandya Date: Fri, 5 May 2023 16:34:51 -0700 Subject: [PATCH] First swing at importing data --- .gitignore | 3 +- lifetracker-server/data.csv | 366 ++++ lifetracker-server/package-lock.json | 1854 ++++++++++++++++++++ lifetracker-server/package.json | 20 + lifetracker-server/src/app.js | 20 + lifetracker-server/src/import.js | 10 + lifetracker-vue/src/components/AuthNav.vue | 1 + lifetracker-vue/src/router/index.ts | 13 + lifetracker-vue/src/services/Api.ts | 7 + lifetracker-vue/src/stores/database.ts | 23 + lifetracker-vue/src/stores/session.ts | 21 +- lifetracker-vue/src/types/entry.ts | 6 + lifetracker-vue/src/views/DatabaseView.vue | 25 +- lifetracker-vue/src/views/TableView.vue | 84 +- 14 files changed, 2403 insertions(+), 50 deletions(-) create mode 100644 lifetracker-server/data.csv create mode 100644 lifetracker-server/package-lock.json create mode 100644 lifetracker-server/package.json create mode 100644 lifetracker-server/src/app.js create mode 100644 lifetracker-server/src/import.js create mode 100644 lifetracker-vue/src/services/Api.ts create mode 100644 lifetracker-vue/src/stores/database.ts create mode 100644 lifetracker-vue/src/types/entry.ts diff --git a/.gitignore b/.gitignore index 2935a4b..2b08ef8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /env -/node_modules \ No newline at end of file +/node_modules +/*/node_modules \ No newline at end of file diff --git a/lifetracker-server/data.csv b/lifetracker-server/data.csv new file mode 100644 index 0000000..1a353a4 --- /dev/null +++ b/lifetracker-server/data.csv @@ -0,0 +1,366 @@ +DATE,DAY,12 AM,1 AM,2 AM,3 AM,4 AM,5 AM,6 AM,7 AM,8 AM,9 AM,10 AM,11 AM,12 PM,1 PM,2 PM,3 PM,4 PM,5 PM,6 PM,7 PM,8 PM,9 PM,10 PM,11 PM,Mood,Comments,, +1/1,SUN,2,2,2,0,0,0,0,0,0,0,0,9,2,3,3,2,2,2,2,2,2,2,2,2,5,"Upstate with Hil, Averi, Lex, etc",, +1/2,MON,2,2,0,0,0,0,0,0,0,0,2,2,10,10,10,9,9,9,10,2,2,2,2,2,6,Hungover return; dinner with Gabe and Jackie,, +1/3,TUE,3,9,0,0,0,0,0,0,0,8,8,6,3,8,9,9,5,9,9,9,9,9,3,7,3,Languishing,, +1/4,WED,7,9,0,0,0,0,0,0,0,0,8,9,7,7,6,0,3,3,3,3,3,8,9,9,4,Still languishing,, +1/5,THU,9,0,0,0,0,0,0,0,0,0,8,9,9,10,9,9,9,10,4,4,4,4,4,10,3,Finally on the way home,, +1/6,FRI,10,0,0,0,0,0,0,0,3,10,10,10,10,10,10,10,10,10,10,10,10,8,8,8,6,"En route via Springfield, IL!",, +1/7,SAT,8,8,0,0,0,0,0,0,6,6,3,3,8,8,8,8,8,1,1,1,3,8,8,8,8,First day back; gym; family; fast,, +1/8,SUN,0,0,0,0,0,0,0,0,0,8,8,8,10,10,10,10,10,3,6,7,7,9,9,9,8,"Cleaning, relaxing, getting shit done.",, +1/9,MON,0,0,0,0,0,0,0,0,8,9,8,5,6,8,5,8,5,5,6,6,8,3,3,9,6,Lazy first Monday. Couple calls. Worked from home. Caught up on wedding and house needs.,, +1/10,TUE,0,0,0,0,0,0,0,0,8,7,7,6,5,5,5,5,5,5,3,8,8,8,6,8,6,Prep for tomorrow,, +1/11,WED,9,0,0,0,0,0,0,0,8,10,5,5,5,5,5,5,5,5,5,5,5,8,3,9,7,SK,, +1/12,THU,0,0,0,0,0,0,0,10,5,10,5,5,5,5,5,5,5,5,5,5,5,3,8,9,8,Ontario Teachers OTPP,, +1/13,FRI,0,0,0,0,0,0,0,3,8,3,6,5,3,3,5,10,10,7,7,1,1,1,3,0,8,Jamaican dinner for Peru/Kiri and parents,, +1/14,SAT,0,0,0,0,0,0,0,0,0,0,8,10,10,7,0,0,7,10,8,9,9,9,9,9,7,"Nice needed lazy day. Did some drugs, probably too many.",, +1/15,SUN,6,8,0,0,0,0,0,0,0,0,0,10,10,8,8,7,7,3,8,2,2,2,3,8,8,Lazy rainy day. Saw Andrew and sienna in the evening.,, +1/16,MON,9,0,0,0,0,0,0,0,0,0,3,8,6,7,8,8,8,8,8,8,3,3,3,9,6,Stressed about work. Had vodka and popcorn.,, +1/17,TUE,3,0,0,0,0,0,0,9,0,0,9,6,5,7,7,5,8,8,8,8,7,7,8,8,7,Hindi lessons!,, +1/18,WED,9,0,0,0,0,0,0,10,5,5,5,5,8,6,6,3,3,7,7,3,8,8,3,3,7,Lazy,, +1/19,THU,8,0,0,0,0,0,0,0,0,10,10,3,8,10,0,6,8,8,6,3,6,3,9,9,5,not sure,, +1/20,FRI,9,0,0,0,8,0,0,0,0,0,10,6,6,5,3,6,8,7,7,3,3,3,9,9,6,long Hindi lesson and RDR2,, +1/21,SAT,9,9,9,9,0,0,0,0,0,0,10,8,3,3,10,3,8,0,0,6,6,6,6,6,6,Polestar demo; In n out; Cleaning and packing,, +1/22,SUN,7,3,8,0,0,0,0,0,10,10,1,1,10,10,10,10,10,10,10,10,10,10,10,10,7,Flying to Chicago,, +1/23,MON,9,0,0,0,0,0,0,10,10,5,5,5,5,5,5,5,5,5,5,5,5,5,8,0,7,First day with TM,, +1/24,TUE,0,0,0,0,0,0,0,10,10,10,10,5,5,5,5,5,1,1,2,2,2,3,10,9,6,Second day with TM; basketball game,, +1/25,WED,0,0,0,0,0,0,0,10,10,10,5,10,10,10,10,10,10,10,3,3,3,5,8,0,7,No-Go Decision! Commercial to NY,, +1/26,THU,0,0,0,0,0,10,10,10,10,6,6,5,10,10,10,3,3,3,3,3,5,8,3,0,6,Driving upstate for wedding rentals,, +1/27,FRI,0,0,0,0,0,0,0,0,5,5,5,10,8,8,10,9,9,9,5,5,5,9,9,0,5,Board meeting sucked,, +1/28,SAT,0,0,0,0,0,0,0,0,5,8,8,5,3,8,6,8,8,10,3,3,3,3,0,0,4,Hangover and day wastage,, +1/29,SUN,0,8,0,0,0,0,0,0,0,9,9,8,7,7,7,3,9,9,9,9,9,0,0,0,6,Quiet day in feat several hours of Hindi,, +1/30,MON,0,0,0,0,0,0,10,3,3,3,8,8,6,10,7,10,10,10,10,10,10,0,0,0,6,Another wedding rentals; flight to India,, +1/31,TUE,0,0,0,0,0,10,10,10,0,0,0,0,10,10,8,0,0,0,8,10,10,10,10,10,7,Endless travel forever,, +2/1,WED,5,5,5,5,5,5,0,5,5,8,0,0,0,0,0,0,0,5,8,10,8,5,5,5,4,Cool safari. why the fuck are we in India.,, +2/2,THU,5,5,5,5,5,5,5,5,5,5,9,9,0,0,0,0,0,0,0,0,10,10,10,10,3,"welp, I'm sick ",, +2/3,FRI,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,10,5,5,5,2,and still in fucking India,, +2/4,SAT,8,10,5,5,5,5,5,5,5,5,5,3,0,0,0,0,0,0,0,0,10,10,10,10,1,planned how to continue drowning; met Aftab,, +2/5,SUN,10,10,10,10,10,8,8,8,8,8,0,0,0,0,0,0,0,0,10,5,5,5,5,5,1,Why does it take fucking forever to travel anywhere in India,, +2/6,MON,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,10,5,5,5,5,5,4,A little better. PD India day 1,, +2/7,TUE,5,5,5,5,5,5,0,0,9,9,9,10,10,10,10,10,10,0,0,10,10,10,10,10,1,"PD India Day 2, town hall, doomsday, our fates, getting home.",, +2/8,WED,10,0,0,0,0,0,10,10,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10,5,Infinity travel and flying,, +2/9,THU,10,3,3,0,0,0,0,0,0,5,5,8,8,5,8,8,0,0,0,9,3,3,8,7,7,Nice to be home.,, +2/10,FRI,9,9,9,9,0,0,0,0,0,0,10,5,9,0,0,0,9,5,8,3,3,8,0,0,6,avoidance ,, +2/11,SAT,0,0,0,0,0,0,10,8,9,9,6,8,8,8,8,8,8,0,7,8,8,8,3,8,7,,, +2/12,SUN,0,0,0,0,0,0,0,0,0,8,8,8,8,2,2,2,1,1,1,1,1,8,0,0,6,Annie and family.,, +2/13,MON,0,0,0,0,0,0,0,10,6,6,5,5,5,5,5,5,5,5,5,9,3,0,0,0,4,Connecting with folks at the office. Doomsday planning.,, +2/14,TUE,0,0,0,0,0,0,0,0,0,10,8,5,5,5,5,6,10,6,6,7,3,3,3,3,3,Dreading work. Good Valentine's dinner with Jen.,, +2/15,WED,0,0,0,0,0,0,0,0,5,7,5,5,5,7,5,5,5,5,3,9,10,6,9,0,2,Coming to terms with / trying to fight killing marketing at PD,, +2/16,THU,0,0,0,0,0,0,8,7,7,7,7,7,10,9,5,7,8,7,9,9,3,8,9,0,4,Waste of a day.,, +2/17,FRI,0,0,0,0,0,0,0,8,9,6,6,6,6,6,10,8,7,7,7,7,7,7,10,8,6,Playing with AI and cooking!,, +2/18,SAT,0,0,0,0,0,0,0,0,0,7,10,10,10,10,3,3,3,3,3,3,3,3,0,0,7,Birthday weekend!,, +2/19,SUN,0,0,0,0,0,0,0,8,10,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,7,Birthday weekend part 2,, +2/20,MON,0,0,0,9,0,0,0,0,8,3,3,10,10,10,9,9,3,5,5,5,5,3,9,9,6,Mostly helping Jen with her case study,, +2/21,TUE,0,0,0,0,0,0,0,10,10,5,5,5,5,5,5,5,5,5,5,1,1,3,6,0,5,First day of construction! Dilhan lunch. ,, +2/22,WED,0,0,0,0,0,0,0,0,10,9,3,9,5,10,5,9,8,3,9,9,3,3,3,3,2,ugh everything is so exhausting,, +2/23,THU,0,0,0,0,0,0,0,0,0,3,6,2,5,8,8,8,3,3,6,8,6,3,8,0,4,Yeah,, +2/24,FRI,0,0,0,0,0,0,0,0,0,8,8,5,6,7,7,6,6,6,6,6,6,6,6,6,4,moving out (temporarily),, +2/25,SAT,8,8,9,9,0,0,0,0,8,3,6,6,6,6,6,6,6,10,2,2,2,2,2,2,5,"more moving, friends and bwc",, +2/26,SUN,3,9,9,9,9,9,9,9,0,0,6,6,10,10,10,10,0,0,0,0,0,0,0,0,5,MDMA night and flight to Dubai,, +2/27,MON,10,0,0,0,0,10,10,10,0,0,9,9,0,0,0,0,0,3,8,10,10,5,5,5,5,Meeting with CG.,, +2/28,TUE,5,5,5,5,5,5,5,5,0,0,0,0,10,8,0,0,0,8,10,5,5,5,5,5,5,Meeting with mubadala/strata.,, +3/1,WED,5,5,5,5,5,5,10,10,0,5,0,0,0,0,0,0,5,5,8,8,8,3,0,5,6,Conference in Abu Dhabi ,, +3/2,THU,5,5,5,5,5,5,5,8,0,0,0,0,0,5,0,0,0,8,10,5,5,5,8,8,7,Maybe things are looking up?,, +3/3,FRI,8,10,10,10,8,0,0,0,10,5,5,8,8,8,0,0,10,10,8,8,10,10,10,0,7,Nalin; coming home,, +3/4,SAT,0,0,0,0,0,0,0,0,0,10,10,10,10,10,10,8,8,3,3,3,3,3,3,0,8,Good to be back. Emily Calkins and Co like it in the Bay! Lasagna in a restaurant with a bad memory.,, +3/5,SUN,0,9,9,9,0,0,0,0,0,0,0,3,6,3,10,3,10,10,10,10,10,8,0,0,8,Home and flight to Scottsdale,, +3/6,MON,0,0,0,0,0,10,7,7,7,7,7,7,7,7,7,7,7,7,10,10,10,10,10,3,7,Recurrent training for PA46,, +3/7,TUE,9,9,9,0,0,0,0,0,0,6,8,6,6,6,6,8,8,10,10,10,10,10,10,10,4,Flew to Lummi Island. Got in late. No dinner for us,, +3/8,WED,8,0,0,0,0,0,0,3,5,5,6,5,5,3,5,9,0,3,5,3,3,3,3,8,4,"Nail biting for both of us. yet, enjoying the cabin and northwest.",, +3/9,THU,0,0,0,0,9,0,0,0,0,5,3,10,5,6,6,7,5,5,5,5,3,3,3,3,3,"Hiked, cooked, talked to TM. Worlds starting and ending for Jen and me.",, +3/10,FRI,3,9,0,0,0,0,0,0,8,5,5,3,5,6,6,10,10,1,1,1,1,1,1,1,6,"Seattle, meeting Josh's sister Kyra",, +3/11,SAT,0,0,0,0,0,0,0,0,0,0,10,3,3,10,10,10,10,10,10,3,8,8,8,9,5,basically just getting home,, +3/12,SUN,0,0,0,0,0,0,0,7,8,0,0,0,0,3,3,6,10,10,3,3,2,3,3,3,6,Checked into the Claremont hotel. Bonnie Cole. grey's anatomy.,, +3/13,MON,0,0,0,0,0,0,0,5,10,3,8,5,3,8,8,8,8,3,1,1,1,3,3,3,5,Stressed about TM/Allison decision. Enjoying Claremont and new tablet.,, +3/14,TUE,3,9,9,0,0,0,0,9,9,0.5,0.5,10,5,9,0.5,0.5,0.5,5,8,8,3,3,8,3,1,One more circuit down the spiral to the drain?,, +3/15,WED,0,0,0,0,0,0,0,0,5,0.5,10,5,6,5,5,8,9,5,0.5,5,9,9,3,3,2,Still shitty,, +3/16,THU,0,0,0,0,0,0,0,0,8,8,10,10,5,5,5,5,3,5,5,10,5,5,9,9,3,Chewing glass internally. Edward. Drinking. Embarrassing myself with KG.,, +3/17,FRI,9,0,0,0,0,9,9,0,0,10,9,5,6,6,6,6,10,1,1,1,5,5,5,3,1,True colors revealed? and a nice dinner at Daytrip with Ashley and Elie. Wedding invites finally sent.,, +3/18,SAT,9,9,0,0,0,9,0,9,9,9,0,8,10,0.5,9,9,9,9,10,6,6,6,6,8,4,"Getting some good perspective, cleaning the house",, +3/19,SUN,6,6,9,0,0,0,0,0,0,0,0,0,8,10,6,6,8,8,10,8,8,8,8,8,5,Gym and sushi. New lowest weight this year!,, +3/20,MON,8,8,0,0,0,0,0,0,0,10,5,5,5,5,5,5,9,9,3,10,8,5,8,0,2,shitty,, +3/21,TUE,9,9,0,0,0,0,0,0,0,10,9,10,10,5,5,5,5,5,5,10,10,2,5,0,4,The transition day. layoffs happened. power went out. slept at the office. ran into Mario,, +3/22,WED,0,0,0,0,0,0,0,0,0,0,8,10,3,5,5,5,9,9,5,10,10,8,9,0,5,Getting there.,, +3/23,THU,0,9,9,0,0,9,0,9,10,5,5,8,0.5,10,108,108,108,8,8,8,8,8,8,9,6,Relaxed.,, +3/24,FRI,8,0,0,0,0,0,0,0,10,10,6,0.5,0.5,8,5,8,6,6,8,8,8,8,8,0,5,Didn't do much with my day.,, +3/25,SAT,0,0,0,0,0,0,0,0,0,0,8,10,6,6,6,6,5,6,8,8,8,9,9,9,6,At least I've gotten exercise and haven't eaten or drank too much,, +3/26,SUN,9,9,9,9,9,9,9,0,0,0,0,0,10,0.5,0.5,8,8,3,8,8,8,8,8,8,5,Lazy day,, +3/27,MON,9,9,0,0,0,0,0,0,0,10,8,8,5,5,5,7,1,1,67,67,8,8,8,8,6,Feeling alright today.,, +3/28,TUE,83,9,0,0,0,0,0,0,0,5,103,0.5,0.5,89,89,81,101,81,81,0.5,0.5,8,89,89,4,Kinda aimless. ,, +3/29,WED,3,3,33,0,0,0,0,0,0,105,35,73,10,65,65,5,31,31,35,35,33,57,101,99,7,Good to have Jen back!,, +3/30,THU,83,0,0,0,0,98,98,3,10,5,5,6,6,6,73,5,0.5,0.5,3,3,3,3,33,83,5,"Alright, but stressed. Good life admin progress.",, +3/31,FRI,0,0,0,0,0,0,0,0,0,10,5,5,57,2,9,5,5,5,10,3,2,2,2,0,3,ugh,, +4/1,SAT,0,0,0,0,0,0,0,0,0,103,101,83,106,104,2,2,2,2,2,2,28,2,104,104,4,Graziano! Radio show! Rushed stressful trip!,, +4/2,SUN,10,0.4,0.4,0.4,10,10,10,10,10,10,0.4,0.4,0.4,104,0.4,0.4,10,10,10,10,10,10,10,10,6,"I mean, stressed kinda, but nice to be in Pategonia!",, +4/3,MON,10,10,10,10,10,10,10,37,37,10,10,10,10,103,8,3,3,3,3,0,0,0,0,0,7,Long (excessive) but very good and beautiful hike up Mt Fitz Roy in Patagonia,, +4/4,TUE,0,0,0,0,37,37,37,37,37,37,37,37,37,37,38,10,3,8,33,8,0,0,0,0,7,Long (way too long) but very nice hike!,, +4/5,WED,0,0,0,0,0,0,37,37,37,37,38,38,3,65,37,37,10,38,38,38,3,0,0,0,7,Pretty much same as above!,, +4/6,THU,0,0,0,0,106,37,37,37,37,38,10,104,104,104,104,104,104,104,104,38,38,10,0,0,6,Beautiful trip.,, +4/7,FRI,0,0,0,0,0,0,0,33,38,56,56,65,38,39,83,2,2,2,2,2,2,2,33,0,8,"Gabe, Jackie, tango lessons!",, +4/8,SAT,0,0,0,0,0,0,83,106,106,38,10,2,2,2,2,2,10,28,28,28,28,0,0,0,8,"Gorgeous hotel ""home"" in BA. Day with Gabe and Jackie. dinner with Phoebe.",, +4/9,SUN,0,0,0,0,0,38,38,103,28,28,34,34,39,39,36,36,28,28,28,2,3,0,0,0,8,Really fun day!,, +4/10,MON,0,0,0,0,0,0,0.5,36,103,39,38,38,38,3,39,2,28,28,28,2,8,0,0,0,8,Don Julio and more Buenos Aires!,, +4/11,TUE,0,0,0,0,0,108,108,106,104,104,38,34,34,34,104,104,38,104,104,104,104,0.4,0.4,0.4,8,Day in Uruguay; heading home,, +4/12,WED,0.4,0.4,98,0.4,0.4,104,104,104,104,0.4,0.4,0.4,104,104,5,103,89,101,38,103,8,8,8,83,7,Back home.,, +4/13,THU,0,0,0,0,0,0,0,83,5,6,6,5,8,8,6,88,88,88,88,88,88,88,88,83,6,Pretty much just video games ,, +4/14,FRI,0,0,0,0,0,0,0,0,8,8,8,6,8,88,66,66,101,8,8,3,38,38,36,36,5,Good walk. Not productive,, +4/15,SAT,0,0,0,0,0,0,33,8,88,88,33,88,88,104,3,38,104,1,1,3,88,88,88,88,6,Family time,, +4/16,SUN,88,0,0,0,0,0,0,0,0,0,3,82,69,69,66,66,1,1,3,36,38,88,88,83,6,"Walked, saw parents.",, +4/17,MON,0,0,0,0,0,0,0,3,83,105,69,69,69,69,83,88,0.5,99,3,36,88,36,36,99,5,Jen's first day! My 3200th. No work done.,, +4/18,TUE,0,0,0,0,0,0,0,98,0,61,61,61,5,5,5,5,69,89,91,3,3,3,3,3,5,Finally cleaned (annoyed how long it goes).,, +4/19,WED,83,0,0,0,0,0,0,0,83,89,89,5,101,5,0.5,5,9,9,1,36,36,8,33,8,4,IDK,, +4/20,THU,0,0,0,0,0,0,0,98,103,8,83,8,101,88,66,66,88,104,31,31,31,36,36,0,4,IDK still,, +4/21,FRI,0,0,0,0,0,0,0,5,33,103,8,101,5,63,46,46,46,46,3,5,3,3,9,83,2,I guess drugs?,, +4/22,SAT,83,83,9,9,9,0,0,0,0,0,0,0,0,3,103,104,2,2,3,3,104,96,96,96,3,Burglarized!!,, +4/23,SUN,0,0,0,0,0,0,0,0,0,96,96,96,96,96,36,96,96,63,8,8,36,36,8,36,4,Aftermath. Goose chase at the flea market and in Antioch,, +4/24,MON,0,0,0,0,0,0,0,0,5,83,63,63,5,89,5,0.5,99,9,9,9,36,106,36,8,4,didn't do much. had a few calls,, +4/25,TUE,0,0,0,0,0,0,0,0,8,10,5,67,67,5,5,5,10,8,0.5,3,89,36,36,36,6,Caught up. Worked out,, +4/26,WED,98,0,0,0,0,0,0,0,0,103,83,5,5,67,67,101,5,5,7,5,5,3,3,3,6,Starting to feel more on top of things,, +4/27,THU,0,0,0,0,98,98,0,0,0,89,91,91,67,67,101,5,65,58,10,15,15,38,3,89,6,Neighborhood meeting re public safety. Caught up. Nice to see Perumal a bit more.,, +4/28,FRI,0,0,0,0,0,0,0,0,0,33,6,7,7,9,9,9,9,7,91,1,1,1,8,36,5,"Kind of wasted due to Jen's struggle, but overall a good day. saw family and Samoti.",, +4/29,SAT,8,83,0,0,0,0,0,0,0,0,103,91,8,76,78,78,78,78,78,78,36,78,78,8,5,Programming project,, +4/30,SUN,9,9,9,0,0,0,0,0,0,0,0,0,3,8,9,9,9,9,61,9,9,89,36,36,4,Wasted day,, +5/1,MON,9,0,0,0,0,0,0,0,0,5,0.5,103,46,46,46,46,63,8,103,107,38,38,36,8,5,Picked up whiskers,, +5/2,TUE,83,0,0,0,0,0,0,0,5,103,107,5,5,5,78,78,78,78,78,78,38,5,3,3,5,Did some programming. Smoked cigarettes like... 6 times?,, +5/3,WED,3,99,0,0,0,0,0,0,0,10,107,67,67,101,83,0.5,0.5,89,5,5,3,36,36,0,6,Feel like tomorrow's big.,, +5/4,THU,0,0,0,98,0,0,0,5,5,5,5,5,67,67,101,5,63,58,78,58,58,58,3,3,7,"Indeed, big day. Feels like the start of a new chapter ",, +5/5,FRI,3,0,0,0,0,0,0,33,89,63,67,67,101,78,78,78,,,2,2,2,2,2,2,,,, +5/6,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/7,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/8,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/9,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/10,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/11,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/12,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/13,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/14,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/15,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/16,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/17,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/18,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/19,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/20,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/21,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/22,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/23,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/24,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/25,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/26,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/27,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/28,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/29,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/30,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5/31,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/1,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/2,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/3,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/4,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/5,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/6,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/7,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/8,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/9,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/10,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/11,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/12,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/13,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/14,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/15,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/16,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/17,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/18,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/19,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/20,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/21,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/22,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/23,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/24,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/25,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/26,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/27,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/28,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/29,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6/30,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/1,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/2,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/3,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/4,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/5,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/6,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/7,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/8,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/9,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/10,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/11,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/12,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/13,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/14,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/15,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/16,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/17,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/18,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/19,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/20,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/21,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/22,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/23,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/24,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/25,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/26,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/27,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/28,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/29,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/30,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +7/31,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/1,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/2,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/3,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/4,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/5,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/6,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/7,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/8,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/9,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/10,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/11,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/12,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/13,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/14,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/15,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/16,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/17,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/18,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/19,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/20,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/21,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/22,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/23,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/24,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/25,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/26,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/27,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/28,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/29,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/30,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +8/31,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/1,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/2,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/3,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/4,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/5,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/6,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/7,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/8,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/9,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/10,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/11,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/12,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/13,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/14,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/15,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/16,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/17,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/18,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/19,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/20,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/21,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/22,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/23,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/24,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/25,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/26,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/27,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/28,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/29,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9/30,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/1,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/2,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/3,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/4,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/5,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/6,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/7,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/8,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/9,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/10,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/11,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/12,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/13,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/14,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/15,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/16,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/17,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/18,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/19,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/20,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/21,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/22,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/23,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/24,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/25,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/26,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/27,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/28,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/29,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/30,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10/31,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/1,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/2,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/3,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/4,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/5,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/6,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/7,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/8,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/9,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/10,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/11,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/12,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/13,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/14,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/15,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/16,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/17,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/18,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/19,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/20,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/21,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/22,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/23,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/24,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/25,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/26,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/27,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/28,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/29,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11/30,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/1,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/2,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/3,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/4,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/5,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/6,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/7,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/8,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/9,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/10,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/11,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/12,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/13,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/14,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/15,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/16,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/17,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/18,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/19,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/20,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/21,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/22,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/23,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/24,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/25,MON,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/26,TUE,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/27,WED,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/28,THU,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/29,FRI,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/30,SAT,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12/31,SUN,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/lifetracker-server/package-lock.json b/lifetracker-server/package-lock.json new file mode 100644 index 0000000..9ccafc7 --- /dev/null +++ b/lifetracker-server/package-lock.json @@ -0,0 +1,1854 @@ +{ + "name": "lifetracker-server", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "lifetracker-server", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "body-parser": "^1.20.2", + "cors": "^2.8.5", + "csv": "^6.2.12", + "express": "^4.18.2", + "morgan": "^1.10.0", + "nodemon": "^2.0.22" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "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==" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0", + "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==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/csv": { + "version": "6.2.12", + "resolved": "https://registry.npmjs.org/csv/-/csv-6.2.12.tgz", + "integrity": "sha512-Q1+8O4MKIM9U9OqYc2+A6U0ijGrxzs1YqNDUWlqoS98dx9/Kln6dCuazhau8v7Gi5pUEpRcTtlBisy7AFGFr2A==", + "dependencies": { + "csv-generate": "^4.2.6", + "csv-parse": "^5.3.10", + "csv-stringify": "^6.3.4", + "stream-transform": "^3.2.6" + }, + "engines": { + "node": ">= 0.1.90" + } + }, + "node_modules/csv-generate": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.2.6.tgz", + "integrity": "sha512-VtnYqhWLcsUocA346ewFOk+rrqcoT663j11vXzD2uelXq9WguQ3QzDeVD8ISso7hhVtkDSHcWl9psdemeiEHDA==" + }, + "node_modules/csv-parse": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.3.10.tgz", + "integrity": "sha512-cTXY6iy0gN5Ha/cGILeDgQE+nKiKDU2m0DjSRdJhr86BN3cM7oefBsTk2aH0LQeaYtL7Z7HvW+jYoadmdhzeDA==" + }, + "node_modules/csv-stringify": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.3.4.tgz", + "integrity": "sha512-/VVkafziBS1WyiQWYQ/krnBW1lJbr0RbanP7mMrFwy9V/sG8Xk6bacMS9IjUN0x3Jpp2iowpz9Lofd/KJIZ1qA==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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==" + }, + "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==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "engines": { + "node": ">=4" + } + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "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==", + "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/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-transform": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.2.6.tgz", + "integrity": "sha512-/pyOvaCQFqYTmrFhmMbnAEVo3SsTx1H39eUVPOtYeAgbEUc+rDo7GoP8LbHJgU83mKtzJe/7Nq/ipaAnUOHgJQ==" + }, + "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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + } + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "csv": { + "version": "6.2.12", + "resolved": "https://registry.npmjs.org/csv/-/csv-6.2.12.tgz", + "integrity": "sha512-Q1+8O4MKIM9U9OqYc2+A6U0ijGrxzs1YqNDUWlqoS98dx9/Kln6dCuazhau8v7Gi5pUEpRcTtlBisy7AFGFr2A==", + "requires": { + "csv-generate": "^4.2.6", + "csv-parse": "^5.3.10", + "csv-stringify": "^6.3.4", + "stream-transform": "^3.2.6" + } + }, + "csv-generate": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.2.6.tgz", + "integrity": "sha512-VtnYqhWLcsUocA346ewFOk+rrqcoT663j11vXzD2uelXq9WguQ3QzDeVD8ISso7hhVtkDSHcWl9psdemeiEHDA==" + }, + "csv-parse": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.3.10.tgz", + "integrity": "sha512-cTXY6iy0gN5Ha/cGILeDgQE+nKiKDU2m0DjSRdJhr86BN3cM7oefBsTk2aH0LQeaYtL7Z7HvW+jYoadmdhzeDA==" + }, + "csv-stringify": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.3.4.tgz", + "integrity": "sha512-/VVkafziBS1WyiQWYQ/krnBW1lJbr0RbanP7mMrFwy9V/sG8Xk6bacMS9IjUN0x3Jpp2iowpz9Lofd/KJIZ1qA==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } + } + }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "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==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "requires": { + "ee-first": "1.1.1" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "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==" + }, + "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==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "stream-transform": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.2.6.tgz", + "integrity": "sha512-/pyOvaCQFqYTmrFhmMbnAEVo3SsTx1H39eUVPOtYeAgbEUc+rDo7GoP8LbHJgU83mKtzJe/7Nq/ipaAnUOHgJQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "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==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + } + } +} diff --git a/lifetracker-server/package.json b/lifetracker-server/package.json new file mode 100644 index 0000000..a5cc8a5 --- /dev/null +++ b/lifetracker-server/package.json @@ -0,0 +1,20 @@ +{ + "name": "lifetracker-server", + "version": "1.0.0", + "description": "The backend server for Lifetracker.", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "./node_modules/nodemon/bin/nodemon.js src/app.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "body-parser": "^1.20.2", + "cors": "^2.8.5", + "csv": "^6.2.12", + "express": "^4.18.2", + "morgan": "^1.10.0", + "nodemon": "^2.0.22" + } +} diff --git a/lifetracker-server/src/app.js b/lifetracker-server/src/app.js new file mode 100644 index 0000000..e9ca5c9 --- /dev/null +++ b/lifetracker-server/src/app.js @@ -0,0 +1,20 @@ +const express = require('express') +const bodyParser = require('body-parser') +const cors = require('cors') +const morgan = require('morgan') + +const { entries } = require('./import.js') + +const app = express() +app.use(morgan('combined')) +app.use(bodyParser.json()) +app.use(cors()) + +app.get('/database', (req, res) => { + res.send( + entries + // [["05/04", "THU", 0, 0, 0, 98, 0, 0, 0, 5, 5, 5, 5, 5, 67, 67, 101, 5, 63, 58, 78, 58, 58, 58, 3, 3, 7]] + ) + }) + +app.listen(process.env.PORT || 8081) diff --git a/lifetracker-server/src/import.js b/lifetracker-server/src/import.js new file mode 100644 index 0000000..d5e22e8 --- /dev/null +++ b/lifetracker-server/src/import.js @@ -0,0 +1,10 @@ +var fs = require('fs'); + +var data = fs.readFileSync('data.csv') + .toString() // convert Buffer to string + .split('\n') // split string to lines + .slice(1) // remove first line + .map(e => e.trim()) // remove white spaces for each line + .map(e => e.split(',').map(e => e.trim())); // split each line to array + +exports.entries = data; \ No newline at end of file diff --git a/lifetracker-vue/src/components/AuthNav.vue b/lifetracker-vue/src/components/AuthNav.vue index 12c8695..ca2c321 100644 --- a/lifetracker-vue/src/components/AuthNav.vue +++ b/lifetracker-vue/src/components/AuthNav.vue @@ -2,6 +2,7 @@ import { useSessionStore } from "../stores/session"; const storeSession = useSessionStore(); +// Try connecting to an existing session storeSession.connect(); diff --git a/lifetracker-vue/src/router/index.ts b/lifetracker-vue/src/router/index.ts index 6dbf96a..e7f868d 100644 --- a/lifetracker-vue/src/router/index.ts +++ b/lifetracker-vue/src/router/index.ts @@ -2,6 +2,7 @@ import { createRouter, createWebHistory } from 'vue-router' import TableView from '../views/TableView.vue' import DatabaseView from '../views/DatabaseView.vue' import AboutView from '../views/AboutView.vue' +import { useSessionStore } from "../stores/session"; const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), @@ -24,3 +25,15 @@ const router = createRouter({ }) export default router + + +// router.beforeEach(async (to) => { +// // redirect to login page if not logged in and trying to access a restricted page +// const publicPages = ['/database']; +// const authRequired = !publicPages.includes(to.path); +// const auth = useSessionStore(); + +// if (authRequired && !auth.session['id']) { +// return '/database'; +// } +// }); \ No newline at end of file diff --git a/lifetracker-vue/src/services/Api.ts b/lifetracker-vue/src/services/Api.ts new file mode 100644 index 0000000..6cd97f0 --- /dev/null +++ b/lifetracker-vue/src/services/Api.ts @@ -0,0 +1,7 @@ +import axios from 'axios' + +export default() => { + return axios.create({ + baseURL: `http://localhost:8081` + }) +} \ No newline at end of file diff --git a/lifetracker-vue/src/stores/database.ts b/lifetracker-vue/src/stores/database.ts new file mode 100644 index 0000000..c73a62c --- /dev/null +++ b/lifetracker-vue/src/stores/database.ts @@ -0,0 +1,23 @@ +import type { IEntry } from "@/types/entry"; +import { defineStore } from 'pinia'; +import Api from "@/services/Api" + +export const useDatabaseStore = defineStore({ + id: 'databaseState', + state: () => ({ + entries: [] as IEntry[] + }), + getters: { + length: (state) => state.entries.length + }, + actions: { + async fetchEntries(){ + try{ + const response = await Api().get("database"); + this.entries = response.data; + } catch (error) { + console.log(error); + } + } + } +}) \ No newline at end of file diff --git a/lifetracker-vue/src/stores/session.ts b/lifetracker-vue/src/stores/session.ts index 5f0226c..8b02f30 100644 --- a/lifetracker-vue/src/stores/session.ts +++ b/lifetracker-vue/src/stores/session.ts @@ -1,5 +1,4 @@ import type { ISession } from '@/types/session'; -import axios from 'axios'; import { defineStore } from 'pinia'; import { Client, Account, ID } from 'appwrite'; @@ -15,14 +14,18 @@ export const useSessionStore = defineStore({ session: [] as ISession[], }), getters: { - isConnected: (state) => state.session['userId'] == 'ryan', + isConnected: (state) => state.session['userId'], }, actions: { logout() { - const promise = this.account.deleteSession(this.session); + const promise = account.deleteSession(this.session.id); var self = this; promise.then(function (response) { - self.userId = null; self.email = null; self.session = false; + self.session = { + email: '', + userId: '', + id: '', + }; console.log(response); // Success }, function (error) { console.log(error); // Failure @@ -35,20 +38,21 @@ export const useSessionStore = defineStore({ userId: '', id: '', }; + var self = this; promise.then( function (response) { session.email = response.providerUid; session.userId = response.userId; session.id = response.$id; console.log('Connected to existing session'); - session = session; + self.session = session; }, function (error) { session.email = null; session.userId = null; - session.id = null; + session.id = ''; console.log('No existing session; starting fresh.'); - return session; + self.session = session; } ); }, @@ -60,12 +64,13 @@ export const useSessionStore = defineStore({ userId: '', id: '', }; + var self = this; promise.then(function (response) { session.email = response.providerUid; session.userId = response.userId; session.id = response.$id; console.log('Logged in'); - return session; + self.session = session; }, function (error) { console.log('Error'); }); diff --git a/lifetracker-vue/src/types/entry.ts b/lifetracker-vue/src/types/entry.ts new file mode 100644 index 0000000..e6a3285 --- /dev/null +++ b/lifetracker-vue/src/types/entry.ts @@ -0,0 +1,6 @@ +export interface IEntry { + date: Date, + hours: Number[], + mood: Number, + note: String +} \ No newline at end of file diff --git a/lifetracker-vue/src/views/DatabaseView.vue b/lifetracker-vue/src/views/DatabaseView.vue index 76b98d9..07ccd5d 100644 --- a/lifetracker-vue/src/views/DatabaseView.vue +++ b/lifetracker-vue/src/views/DatabaseView.vue @@ -1,5 +1,6 @@ @@ -10,25 +11,22 @@ export default { }, data(){ return { - userId: userId, - email: email, - password: password, - error: null, - session: session, - } + entries: [] + } }, methods: { - connect() { - console.log("Legacy method called."); + async getDatabase() { + const response = await Api().get("database"); + this.entries = response.data; } } } diff --git a/lifetracker-vue/src/views/TableView.vue b/lifetracker-vue/src/views/TableView.vue index 14cee52..24b5dfa 100644 --- a/lifetracker-vue/src/views/TableView.vue +++ b/lifetracker-vue/src/views/TableView.vue @@ -1,44 +1,62 @@ - - - + + + + + + + + \ No newline at end of file