diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b6bc2914..00000000 --- a/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -logs -*.log -npm-debug.log* -pids -*.pid -*.seed -lib-cov -.nyc_output -.grunt -.lock-wscript -build/Release -node_modules -jspm_packages -.npm -.node_repl_history -.DS_Store -.env -.vscode \ No newline at end of file diff --git a/client/.gitignore b/client/.gitignore index a547bf36..d3614a66 100644 --- a/client/.gitignore +++ b/client/.gitignore @@ -11,6 +11,9 @@ node_modules dist dist-ssr *.local +.env + +*.css.map # Editor directories and files .vscode/* diff --git a/client/public/DELETEME.txt b/client/public/DELETEME.txt new file mode 100644 index 00000000..e69de29b diff --git a/resources/Conventions.md b/resources/Conventions.md new file mode 100644 index 00000000..e69de29b diff --git a/resources/ER-Diagram_Entities-Only.svg b/resources/ER-Diagram_Entities-Only.svg new file mode 100644 index 00000000..8ceec794 --- /dev/null +++ b/resources/ER-Diagram_Entities-Only.svg @@ -0,0 +1,4 @@ + + + +
Captain
Captain
Term
Term
Sector
Sector
Scout
Scout
FinanceItem
FinanceItem
gender
gender
name
name
firstName
firstName
MiddleName
MiddleName
lastName
lastName
password
password
captainId
captainId
phoneNumber
phoneNumber
email
email
startDate
startDate
endDate
endDate
termName
termName
termNumber
termNumber
sectorName
sectorName
baseName
baseName
suffixName
suffixName
name
name
firstName
firstName
middleName
middleName
lastName
lastName
ScoutId
ScoutId
expelled
expelled
ScoutProfile
ScoutProfile
photo
photo
birthdate
birthdate
schoolGrade
schoolGrade
birthCertificate
birthCertificate
age
age
enrollDate
enrollDate
Notification
Notification
notId
notId
type
type
message
message
timeStamp
timeStamp
Week
Week
canceled
canceled
startDate
startDate
itemId
itemId
value
value
timestamp
timestamp
D
D
otherItem
otherItem
Subscription
Subscription
decription
decription
weekly
Subscribtion
weekly...
D
D
UnitCaptain
UnitCaptain
GeneralCaptain
GeneralCaptain
RegularCaptain
RegularCaptain
weekNumber
weekNumber
type
type
reportId
reportId
info
info
date
date
Report
Report
Session
Session
Activity
Activity
title
title
documentUrl
documentUrl
type
type
place
place
day
day
Aspect
Aspect
name
name
catageory
catageory
aspectId
aspectId
sessoinId
sessoinId
activityId
activityId
gender
gender
Text is not SVG - cannot display
\ No newline at end of file diff --git a/resources/ER-Diagram_No-Attribute.svg b/resources/ER-Diagram_No-Attribute.svg new file mode 100644 index 00000000..770aa37e --- /dev/null +++ b/resources/ER-Diagram_No-Attribute.svg @@ -0,0 +1,4 @@ + + + +
Captain
Captain
Term
Term
1
1
Sector
Sector
Scout
Scout
FinanceItem
FinanceItem
ScoutProfile
ScoutProfile
Notification
Notification
Week
Week
D
D
OtherItem
OtherItem
Subscription
Subscription
M
M
C_Attends
C_Attends
S_Attends
S_Attends
N
N
M
M
N
N
attendanceStatus
attendanceStatus
attendanceStatus
attendanceStatus
Contains
Contains
N
N
1
1
Has
Has
1
1
1
1
Leads
Leads
N
N
1
1
D
D
UnitCaptain
UnitCaptain
GeneralCaptain
GeneralCaptain
RegularCaptain
RegularCaptain
1
1
Manages
Manages
N
N
1
1
CreatedBy
CreatedBy
N
N
1
1
Recieved
Recieved
N
N
M
M
N
N
BelongsTo
BelongsTo
1
1
1
1
WeeklySectorSub
WeeklySectorSub
1
1
Report
Report
FileReport
FileReport
1
1
GetReported
GetReported
N
N
N
N
Session
Session
Activity
Activity
Give
Give
N
N
1
1
M
M
Guide
Guide
N
N
N
N
A_Attend
A_Attend
N
N
M
M
attendanceStatus
attendanceStatus
Occured
Occured
M
M
1
1
Activity_
Participation
Activity_...
M
M
N
N
Session_
Participation
Session_...
M
M
N
N
S_Occured
S_Occured
M
M
1
1
score
score
1
1
Aspects
Aspects
grades
grades
N
N
Scored
Scored
1
1
N
N
score
score
TimeStamp
TimeStamp
Text is not SVG - cannot display
\ No newline at end of file diff --git a/resources/ER-Report.pdf b/resources/ER-Report.pdf new file mode 100644 index 00000000..4e22a1e5 Binary files /dev/null and b/resources/ER-Report.pdf differ diff --git a/resources/Proposal-Report.pdf b/resources/Proposal-Report.pdf new file mode 100644 index 00000000..f647e2ed Binary files /dev/null and b/resources/Proposal-Report.pdf differ diff --git a/resources/Schema-Diagram.svg b/resources/Schema-Diagram.svg new file mode 100644 index 00000000..3fc4bb3a --- /dev/null +++ b/resources/Schema-Diagram.svg @@ -0,0 +1,825 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Week + + + + + + + weekNumber + canceled + startDate + + + + + + termNumber + + + + + + + + + + + + Activity + + + + + + + activityId + place + weekNumber + + + + + + termNumber + + + + + + day + type + + + + + + + + + ActivityAttendance + + + + + + + scoutId + + + + + + + + + activityId + + + + + + score + attendanceStatus + + + + + + + + + ActivityGuidance + + + + + + + activityId + + + + + + + + + captainId + + + + + + + + + + + + ActivitySectorParticipation + + + + + + + activityId + + + + + + + + + sectorBaseName + + + + + + + + + sectorSuffixName + + + + + + + + + + + + Scout + + + + + + + scoutId + firstName + middleName + lastName + expelled + sectorBaseName + + + + + + sectorSuffixName + + + + + + gender + + + + + + + + + Captain + + + + + + + captainId + firstName + middleName + lastName + phoneNumber + email + passward + rSectorBaseName + + + + + + rSectorSuffixName + + + + + + gender + type + + + + + + + + + Sector + + + + + + + baseName + + + + + + suffixName + unitCaptainId + + + + + + + + + + + + Aspect + + + + + + + aspectId + name + sectorBaseName + + + + + + sectorSuffixName + + + + + + category + + + + + + + + + ScoutScore + + + + + + + scoutId + + + + + + + + + aspectId + + + + + + score + timestamp + + + + + + + + + CaptainAttendance + + + + + + + captainId + + + + + + + + + weekNumber + + + + + + + + + termNumber + + + + + + attendanceStatus + + + + + + + + + OtherItem + + + + + + description + + + + + + itemId + + + + + + generalCaptainId + + + + + + + + + + + + RecieveNotification + + + + + + + notificationId + + + + + + + + + captainId + + + + + + + + + + + + Report + + + + + + + reportId + info + date + captainId + + + + + + scoutId + + + + + + + + + + + + Session + + + + + + + sessionId + title + documentURL + captainId + + + + + + weekNumber + + + + + + termNumber + + + + + + + + + + + + FinanceItem + + + + + + + itemId + value + timestamp + type + + + + + + + + + Subscription + + + + + + + itemId + + + + + + sectorBaseName + + + + + + sectorSuffixName + + + + + + weekNumber + + + + + + termNumber + + + + + + + + + + + + Notification + + + + + + + NotificationId + timestamp + message + contentType + + + + + + + + + ScoutAttends + + + + + + + scoutId + + + + + + + + + weekNumber + + + + + + + + + termNumber + + + + + + attendanceStatus + + + + + + + + + ScoutProfile + + + + + + birthCertificate + birthDate + enrollDate + photo + scoutId + + + + + + schoolGrade + + + + + + + + + SessionSectorParticipation + + + + + + + sessionID + + + + + + + + + sectorBaseName + + + + + + + + + sectorSuffixName + + + + + + + + + + + + Term + + + + + + + termNumber + termName + startDate + endDate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/.env.example b/server/.env.example new file mode 100644 index 00000000..e69de29b diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 00000000..3982c14a --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,37 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +pids +*.pid +*.seed +.env +lib-cov +.nyc_output +.grunt +.lock-wscript +build/Release +jspm_packages +.npm +.node_repl_history \ No newline at end of file diff --git a/server/README.md b/server/README.md new file mode 100644 index 00000000..9227aaff --- /dev/null +++ b/server/README.md @@ -0,0 +1,24 @@ +# Server side + +## Technologies + +- JavaScript +- NodeJs +- Express + +## Installation + +```bash +cd server +npm install +``` + +## Usage + +```bash +node app +``` + +## Endpoints + +- TBD diff --git a/server/app.js b/server/app.js new file mode 100644 index 00000000..e69de29b diff --git a/server/controllers/example.controller.js b/server/controllers/example.controller.js new file mode 100644 index 00000000..e69de29b diff --git a/server/database/createDatabase.psql b/server/database/createDatabase.psql new file mode 100644 index 00000000..e9e99f36 --- /dev/null +++ b/server/database/createDatabase.psql @@ -0,0 +1,1153 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 16.1 (Ubuntu 16.1-1.pgdg22.04+1) +-- Dumped by pg_dump version 16.1 (Ubuntu 16.1-1.pgdg22.04+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +DROP DATABASE IF EXISTS scoutsManagementSystem; +-- +-- Name: scoutsManagementSystem; Type: DATABASE; Schema: -; Owner: - +-- + +CREATE DATABASE scoutsManagementSystem WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'C'; + + +\connect scoutsManagementSystem + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Name: ActivityType; Type: TYPE; Schema: public; Owner: - +-- + +CREATE TYPE public."ActivityType" AS ENUM ( + 'entertainment', + 'rowing', + 'camping', + 'wildCooking', + 'scouting', + 'volunteering', + 'other' +); + + +-- +-- Name: AspectCategory; Type: TYPE; Schema: public; Owner: - +-- + +CREATE TYPE public."AspectCategory" AS ENUM ( + 'scoutingSkills', + 'behaviour', + 'participation', + 'exams', + 'other' +); + + +-- +-- Name: AttendanceStatus; Type: TYPE; Schema: public; Owner: - +-- + +CREATE TYPE public."AttendanceStatus" AS ENUM ( + 'absent', + 'execused', + 'termExecused', + 'attended' +); + + +-- +-- Name: CaptainType; Type: TYPE; Schema: public; Owner: - +-- + +CREATE TYPE public."CaptainType" AS ENUM ( + 'general', + 'unit', + 'regular' +); + + +-- +-- Name: Days; Type: TYPE; Schema: public; Owner: - +-- + +CREATE TYPE public."Days" AS ENUM ( + 'sat', + 'sun', + 'mon', + 'tue', + 'wed', + 'thu', + 'fri' +); + + +-- +-- Name: FinanceItemType; Type: TYPE; Schema: public; Owner: - +-- + +CREATE TYPE public."FinanceItemType" AS ENUM ( + 'income', + 'expense' +); + + +-- +-- Name: Gender; Type: TYPE; Schema: public; Owner: - +-- + +CREATE TYPE public."Gender" AS ENUM ( + 'male', + 'female' +); + + +-- +-- Name: NotificationType; Type: TYPE; Schema: public; Owner: - +-- + +CREATE TYPE public."NotificationType" AS ENUM ( + 'attendance', + 'report', + 'financeItemCreated', + 'other' +); + + +-- +-- Name: Activity; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Activity" ( + "activityId" integer NOT NULL, + place character varying(255), + "weekNumber" integer NOT NULL, + "termNumber" integer NOT NULL, + day public."Days" NOT NULL, + type public."ActivityType" NOT NULL +); + + +-- +-- Name: ActivityAttendance; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."ActivityAttendance" ( + "scoutId" integer NOT NULL, + "activityId" integer NOT NULL, + score integer, + "attendanceStatus" public."AttendanceStatus" NOT NULL +); + + +-- +-- Name: ActivityGuidance; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."ActivityGuidance" ( + "activityId" integer NOT NULL, + "captainId" integer NOT NULL +); + + +-- +-- Name: ActivitySectorParticipation; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."ActivitySectorParticipation" ( + "activityId" integer NOT NULL, + "sectorBaseName" character varying NOT NULL, + "sectorSuffixName" character varying NOT NULL +); + + +-- +-- Name: Activity_activityId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Activity_activityId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Activity_activityId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Activity_activityId_seq" OWNED BY public."Activity"."activityId"; + + +-- +-- Name: Aspect; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Aspect" ( + "aspectId" integer NOT NULL, + name character varying(255) NOT NULL, + "sectorBaseName" character varying(255) NOT NULL, + "sectorSuffixName" character varying(255) NOT NULL, + category public."AspectCategory" NOT NULL +); + + +-- +-- Name: Aspect_aspectId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Aspect_aspectId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Aspect_aspectId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Aspect_aspectId_seq" OWNED BY public."Aspect"."aspectId"; + + +-- +-- Name: Captain; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Captain" ( + "captainId" integer NOT NULL, + "firstName" character varying(255) NOT NULL, + "middleName" character varying(255) NOT NULL, + "lastName" character varying(255) NOT NULL, + "phoneNumber" character varying(255) NOT NULL, + email character varying(255) NOT NULL, + passward character varying(255) NOT NULL, + "rSectorBaseName" character varying(255), + "rSectorSuffixName" character varying(255), + gender public."Gender" NOT NULL, + type public."CaptainType" NOT NULL +); + + +-- +-- Name: CaptainAttendance; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."CaptainAttendance" ( + "captainId" integer NOT NULL, + "weekNumber" integer NOT NULL, + "termNumber" integer NOT NULL, + "attendanceStatus" public."AttendanceStatus" NOT NULL +); + + +-- +-- Name: Captain_captainId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Captain_captainId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Captain_captainId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Captain_captainId_seq" OWNED BY public."Captain"."captainId"; + + +-- +-- Name: FinanceItem; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."FinanceItem" ( + "itemId" integer NOT NULL, + value double precision NOT NULL, + "timestamp" timestamp(0) without time zone NOT NULL, + type public."FinanceItemType" NOT NULL +); + + +-- +-- Name: FinanceItem_itemId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."FinanceItem_itemId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: FinanceItem_itemId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."FinanceItem_itemId_seq" OWNED BY public."FinanceItem"."itemId"; + + +-- +-- Name: Notification; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Notification" ( + "NotificationId" integer NOT NULL, + "timestamp" timestamp(0) without time zone NOT NULL, + message character varying(255) NOT NULL, + "contentType" public."NotificationType" NOT NULL +); + + +-- +-- Name: Notification_NotificationId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Notification_NotificationId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Notification_NotificationId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Notification_NotificationId_seq" OWNED BY public."Notification"."NotificationId"; + + +-- +-- Name: OtherItem; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."OtherItem" ( + description text NOT NULL, + "itemId" bigint NOT NULL, + "generalCaptainId" integer +); + + +-- +-- Name: RecieveNotification; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."RecieveNotification" ( + "notificationId" integer NOT NULL, + "captainId" integer NOT NULL +); + + +-- +-- Name: Report; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Report" ( + "reportId" integer NOT NULL, + info text NOT NULL, + date date NOT NULL, + "captainId" integer, + "scoutId" integer NOT NULL +); + + +-- +-- Name: Report_captainId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Report_captainId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Report_captainId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Report_captainId_seq" OWNED BY public."Report"."captainId"; + + +-- +-- Name: Report_reportId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Report_reportId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Report_reportId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Report_reportId_seq" OWNED BY public."Report"."reportId"; + + +-- +-- Name: Scout; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Scout" ( + "scoutId" integer NOT NULL, + "firstName" character varying(255) NOT NULL, + "middleName" character varying(255) NOT NULL, + "lastName" character varying(255), + expelled boolean DEFAULT false NOT NULL, + "sectorBaseName" character varying(255), + "sectorSuffixName" character varying(255), + gender public."Gender" +); + + +-- +-- Name: ScoutAttends; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."ScoutAttends" ( + "scoutId" integer NOT NULL, + "weekNumber" integer NOT NULL, + "termNumber" integer NOT NULL, + "attendanceStatus" public."AttendanceStatus" NOT NULL +); + + +-- +-- Name: ScoutProfile; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."ScoutProfile" ( + "birthCertificate" character varying(255), + "birthDate" date, + "enrollDate" date, + photo character varying(255), + "scoutId" integer NOT NULL, + "schoolGrade" integer +); + + +-- +-- Name: ScoutScore; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."ScoutScore" ( + "scoutId" integer NOT NULL, + "aspectId" integer NOT NULL, + score integer NOT NULL, + "timestamp" timestamp without time zone NOT NULL +); + + +-- +-- Name: Scout_scoutId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Scout_scoutId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Scout_scoutId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Scout_scoutId_seq" OWNED BY public."Scout"."scoutId"; + + +-- +-- Name: Sector; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Sector" ( + "baseName" character varying(255) NOT NULL, + "suffixName" character varying(255) NOT NULL, + "unitCaptainId" integer +); + + +-- +-- Name: Session; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Session" ( + "sessionId" integer NOT NULL, + title character varying(255) NOT NULL, + "documentURL" character varying(255), + "captainId" integer, + "weekNumber" integer NOT NULL, + "termNumber" integer NOT NULL +); + + +-- +-- Name: SessionSectorParticipation; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."SessionSectorParticipation" ( + "sessionID" integer NOT NULL, + "sectorBaseName" character varying NOT NULL, + "sectorSuffixName" character varying NOT NULL +); + + +-- +-- Name: Session_sessionId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Session_sessionId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Session_sessionId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Session_sessionId_seq" OWNED BY public."Session"."sessionId"; + + +-- +-- Name: Subscription; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Subscription" ( + "itemId" integer NOT NULL, + "sectorBaseName" character varying(255), + "sectorSuffixName" character varying(255), + "weekNumber" integer NOT NULL, + "termNumber" integer NOT NULL +); + + +-- +-- Name: Subscription_itemId_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Subscription_itemId_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Subscription_itemId_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Subscription_itemId_seq" OWNED BY public."Subscription"."itemId"; + + +-- +-- Name: Term; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Term" ( + "termNumber" integer NOT NULL, + "termName" character varying(255), + "startDate" date NOT NULL, + "endDate" date NOT NULL +); + + +-- +-- Name: Term_termNumber_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public."Term_termNumber_seq" + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: Term_termNumber_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public."Term_termNumber_seq" OWNED BY public."Term"."termNumber"; + + +-- +-- Name: Week; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public."Week" ( + "weekNumber" integer NOT NULL, + canceled boolean DEFAULT false NOT NULL, + "startDate" date NOT NULL, + "termNumber" integer NOT NULL +); + + +-- +-- Name: Activity activityId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Activity" ALTER COLUMN "activityId" SET DEFAULT nextval('public."Activity_activityId_seq"'::regclass); + + +-- +-- Name: Aspect aspectId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Aspect" ALTER COLUMN "aspectId" SET DEFAULT nextval('public."Aspect_aspectId_seq"'::regclass); + + +-- +-- Name: Captain captainId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Captain" ALTER COLUMN "captainId" SET DEFAULT nextval('public."Captain_captainId_seq"'::regclass); + + +-- +-- Name: FinanceItem itemId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."FinanceItem" ALTER COLUMN "itemId" SET DEFAULT nextval('public."FinanceItem_itemId_seq"'::regclass); + + +-- +-- Name: Notification NotificationId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Notification" ALTER COLUMN "NotificationId" SET DEFAULT nextval('public."Notification_NotificationId_seq"'::regclass); + + +-- +-- Name: Report reportId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Report" ALTER COLUMN "reportId" SET DEFAULT nextval('public."Report_reportId_seq"'::regclass); + + +-- +-- Name: Report captainId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Report" ALTER COLUMN "captainId" SET DEFAULT nextval('public."Report_captainId_seq"'::regclass); + + +-- +-- Name: Scout scoutId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Scout" ALTER COLUMN "scoutId" SET DEFAULT nextval('public."Scout_scoutId_seq"'::regclass); + + +-- +-- Name: Session sessionId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Session" ALTER COLUMN "sessionId" SET DEFAULT nextval('public."Session_sessionId_seq"'::regclass); + + +-- +-- Name: Subscription itemId; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Subscription" ALTER COLUMN "itemId" SET DEFAULT nextval('public."Subscription_itemId_seq"'::regclass); + + +-- +-- Name: Term termNumber; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Term" ALTER COLUMN "termNumber" SET DEFAULT nextval('public."Term_termNumber_seq"'::regclass); + + +-- +-- Name: ActivityAttendance ActivityAttendance_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ActivityAttendance" + ADD CONSTRAINT "ActivityAttendance_pkey" PRIMARY KEY ("scoutId", "activityId"); + + +-- +-- Name: ActivityGuidance ActivityGuidance_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ActivityGuidance" + ADD CONSTRAINT "ActivityGuidance_pkey" PRIMARY KEY ("activityId", "captainId"); + + +-- +-- Name: ActivitySectorParticipation ActivitySectorParticipation_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ActivitySectorParticipation" + ADD CONSTRAINT "ActivitySectorParticipation_pkey" PRIMARY KEY ("activityId", "sectorBaseName", "sectorSuffixName"); + + +-- +-- Name: Activity Activity_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Activity" + ADD CONSTRAINT "Activity_pkey" PRIMARY KEY ("activityId"); + + +-- +-- Name: Aspect Aspect_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Aspect" + ADD CONSTRAINT "Aspect_pkey" PRIMARY KEY ("aspectId"); + + +-- +-- Name: CaptainAttendance CaptainAttendance_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."CaptainAttendance" + ADD CONSTRAINT "CaptainAttendance_pkey" PRIMARY KEY ("captainId", "weekNumber", "termNumber"); + + +-- +-- Name: Captain Captain_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Captain" + ADD CONSTRAINT "Captain_pkey" PRIMARY KEY ("captainId"); + + +-- +-- Name: FinanceItem FinanceItem_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."FinanceItem" + ADD CONSTRAINT "FinanceItem_pkey" PRIMARY KEY ("itemId"); + + +-- +-- Name: Notification Notification_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Notification" + ADD CONSTRAINT "Notification_pkey" PRIMARY KEY ("NotificationId"); + + +-- +-- Name: OtherItem OtherItem_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."OtherItem" + ADD CONSTRAINT "OtherItem_pkey" PRIMARY KEY ("itemId"); + + +-- +-- Name: RecieveNotification RecieveNotification_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."RecieveNotification" + ADD CONSTRAINT "RecieveNotification_pkey" PRIMARY KEY ("notificationId", "captainId"); + + +-- +-- Name: Report Report_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Report" + ADD CONSTRAINT "Report_pkey" PRIMARY KEY ("reportId"); + + +-- +-- Name: ScoutAttends ScoutAttends_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ScoutAttends" + ADD CONSTRAINT "ScoutAttends_pkey" PRIMARY KEY ("scoutId", "weekNumber", "termNumber"); + + +-- +-- Name: ScoutScore ScoutScore_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ScoutScore" + ADD CONSTRAINT "ScoutScore_pkey" PRIMARY KEY ("scoutId", "aspectId"); + + +-- +-- Name: Scout Scout_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Scout" + ADD CONSTRAINT "Scout_pkey" PRIMARY KEY ("scoutId"); + + +-- +-- Name: Sector Sector_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Sector" + ADD CONSTRAINT "Sector_pkey" PRIMARY KEY ("baseName", "suffixName"); + + +-- +-- Name: SessionSectorParticipation SessionSectorParticipation_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."SessionSectorParticipation" + ADD CONSTRAINT "SessionSectorParticipation_pkey" PRIMARY KEY ("sessionID", "sectorBaseName", "sectorSuffixName"); + + +-- +-- Name: Session Session_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Session" + ADD CONSTRAINT "Session_pkey" PRIMARY KEY ("sessionId"); + + +-- +-- Name: Subscription Subscription_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Subscription" + ADD CONSTRAINT "Subscription_pkey" PRIMARY KEY ("itemId"); + + +-- +-- Name: Term Term_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Term" + ADD CONSTRAINT "Term_pkey" PRIMARY KEY ("termNumber"); + + +-- +-- Name: Week Week_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Week" + ADD CONSTRAINT "Week_pkey" PRIMARY KEY ("weekNumber", "termNumber"); + + +-- +-- Name: Captain captain_email_unique; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Captain" + ADD CONSTRAINT captain_email_unique UNIQUE (email); + + +-- +-- Name: Captain captain_phonenumber_unique; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Captain" + ADD CONSTRAINT captain_phonenumber_unique UNIQUE ("phoneNumber"); + + +-- +-- Name: SessionSectorParticipation SessionParticipation_Sector_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."SessionSectorParticipation" + ADD CONSTRAINT "SessionParticipation_Sector_FK" FOREIGN KEY ("sectorBaseName", "sectorSuffixName") REFERENCES public."Sector"("baseName", "suffixName") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: SessionSectorParticipation SessionParticipation_Session_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."SessionSectorParticipation" + ADD CONSTRAINT "SessionParticipation_Session_FK" FOREIGN KEY ("sessionID") REFERENCES public."Session"("sessionId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: ActivityAttendance activityAttendance_activity_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ActivityAttendance" + ADD CONSTRAINT "activityAttendance_activity_FK" FOREIGN KEY ("activityId") REFERENCES public."Activity"("activityId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: ActivityAttendance activityAttendance_scout_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ActivityAttendance" + ADD CONSTRAINT "activityAttendance_scout_FK" FOREIGN KEY ("scoutId") REFERENCES public."Scout"("scoutId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: ActivityGuidance activityGuidance_activity_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ActivityGuidance" + ADD CONSTRAINT "activityGuidance_activity_FK" FOREIGN KEY ("activityId") REFERENCES public."Activity"("activityId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: ActivityGuidance activityGuidance_captain_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ActivityGuidance" + ADD CONSTRAINT "activityGuidance_captain_FK" FOREIGN KEY ("captainId") REFERENCES public."Captain"("captainId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: ActivitySectorParticipation activityParticipation_activity_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ActivitySectorParticipation" + ADD CONSTRAINT "activityParticipation_activity_FK" FOREIGN KEY ("activityId") REFERENCES public."Activity"("activityId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: ActivitySectorParticipation activityParticipation_sector_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ActivitySectorParticipation" + ADD CONSTRAINT "activityParticipation_sector_FK" FOREIGN KEY ("sectorBaseName", "sectorSuffixName") REFERENCES public."Sector"("baseName", "suffixName") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: Activity activity_weeknumber_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Activity" + ADD CONSTRAINT "activity_weeknumber_FK" FOREIGN KEY ("weekNumber", "termNumber") REFERENCES public."Week"("weekNumber", "termNumber") ON UPDATE RESTRICT ON DELETE RESTRICT NOT VALID; + + +-- +-- Name: Aspect aspect_sectorName_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Aspect" + ADD CONSTRAINT "aspect_sectorName_FK" FOREIGN KEY ("sectorBaseName", "sectorSuffixName") REFERENCES public."Sector"("baseName", "suffixName") ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; + + +-- +-- Name: ScoutAttends attendance_scout_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ScoutAttends" + ADD CONSTRAINT "attendance_scout_FK" FOREIGN KEY ("scoutId") REFERENCES public."Scout"("scoutId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: ScoutAttends attendance_week_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ScoutAttends" + ADD CONSTRAINT "attendance_week_FK" FOREIGN KEY ("weekNumber", "termNumber") REFERENCES public."Week"("weekNumber", "termNumber") ON UPDATE RESTRICT ON DELETE RESTRICT; + + +-- +-- Name: CaptainAttendance captainAttendance_regularCaptain_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."CaptainAttendance" + ADD CONSTRAINT "captainAttendance_regularCaptain_FK" FOREIGN KEY ("captainId") REFERENCES public."Captain"("captainId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: CaptainAttendance captainAttendance_week_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."CaptainAttendance" + ADD CONSTRAINT "captainAttendance_week_FK" FOREIGN KEY ("weekNumber", "termNumber") REFERENCES public."Week"("weekNumber", "termNumber") ON UPDATE RESTRICT ON DELETE RESTRICT; + + +-- +-- Name: Captain captain_sector_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Captain" + ADD CONSTRAINT "captain_sector_FK" FOREIGN KEY ("rSectorBaseName", "rSectorSuffixName") REFERENCES public."Sector"("baseName", "suffixName") ON UPDATE CASCADE ON DELETE SET NULL NOT VALID; + + +-- +-- Name: OtherItem otherItem_financeItem_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."OtherItem" + ADD CONSTRAINT "otherItem_financeItem_FK" FOREIGN KEY ("itemId") REFERENCES public."FinanceItem"("itemId") ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; + + +-- +-- Name: OtherItem otherItem_generalCaptain_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."OtherItem" + ADD CONSTRAINT "otherItem_generalCaptain_FK" FOREIGN KEY ("generalCaptainId") REFERENCES public."Captain"("captainId") ON UPDATE RESTRICT ON DELETE SET NULL NOT VALID; + + +-- +-- Name: RecieveNotification recNot_captain_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."RecieveNotification" + ADD CONSTRAINT "recNot_captain_FK" FOREIGN KEY ("captainId") REFERENCES public."Captain"("captainId") ON UPDATE RESTRICT ON DELETE CASCADE NOT VALID; + + +-- +-- Name: RecieveNotification recNot_notification_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."RecieveNotification" + ADD CONSTRAINT "recNot_notification_FK" FOREIGN KEY ("notificationId") REFERENCES public."Notification"("NotificationId") ON UPDATE RESTRICT ON DELETE CASCADE NOT VALID; + + +-- +-- Name: Report report_captain_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Report" + ADD CONSTRAINT "report_captain_FK" FOREIGN KEY ("captainId") REFERENCES public."Captain"("captainId") ON UPDATE RESTRICT ON DELETE SET NULL NOT VALID; + + +-- +-- Name: Report report_scout_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Report" + ADD CONSTRAINT "report_scout_FK" FOREIGN KEY ("scoutId") REFERENCES public."Scout"("scoutId") ON UPDATE RESTRICT ON DELETE CASCADE NOT VALID; + + +-- +-- Name: ScoutScore score_aspect_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ScoutScore" + ADD CONSTRAINT "score_aspect_FK" FOREIGN KEY ("aspectId") REFERENCES public."Aspect"("aspectId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: ScoutScore score_scout_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ScoutScore" + ADD CONSTRAINT "score_scout_FK" FOREIGN KEY ("scoutId") REFERENCES public."Scout"("scoutId") ON UPDATE RESTRICT ON DELETE CASCADE; + + +-- +-- Name: ScoutProfile scoutProfile_scout_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."ScoutProfile" + ADD CONSTRAINT "scoutProfile_scout_FK" FOREIGN KEY ("scoutId") REFERENCES public."Scout"("scoutId") ON UPDATE RESTRICT ON DELETE CASCADE NOT VALID; + + +-- +-- Name: Scout scout_sector_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Scout" + ADD CONSTRAINT "scout_sector_FK" FOREIGN KEY ("sectorBaseName", "sectorBaseName") REFERENCES public."Sector"("suffixName", "baseName") ON UPDATE CASCADE ON DELETE SET NULL NOT VALID; + + +-- +-- Name: Sector sector_unitCaptain_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Sector" + ADD CONSTRAINT "sector_unitCaptain_FK" FOREIGN KEY ("unitCaptainId") REFERENCES public."Captain"("captainId") ON UPDATE RESTRICT ON DELETE SET NULL NOT VALID; + + +-- +-- Name: Session session_captain_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Session" + ADD CONSTRAINT "session_captain_FK" FOREIGN KEY ("captainId") REFERENCES public."Captain"("captainId") ON UPDATE RESTRICT ON DELETE SET NULL NOT VALID; + + +-- +-- Name: Session session_week_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Session" + ADD CONSTRAINT "session_week_FK" FOREIGN KEY ("weekNumber", "termNumber") REFERENCES public."Week"("weekNumber", "termNumber") ON UPDATE RESTRICT ON DELETE RESTRICT NOT VALID; + + +-- +-- Name: Subscription subscription_financeItem_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Subscription" + ADD CONSTRAINT "subscription_financeItem_FK" FOREIGN KEY ("itemId") REFERENCES public."FinanceItem"("itemId") ON UPDATE RESTRICT ON DELETE CASCADE NOT VALID; + + +-- +-- Name: Subscription subscription_sector_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Subscription" + ADD CONSTRAINT "subscription_sector_FK" FOREIGN KEY ("sectorBaseName", "sectorSuffixName") REFERENCES public."Sector"("baseName", "suffixName") ON UPDATE CASCADE ON DELETE SET NULL NOT VALID; + + +-- +-- Name: Subscription subscription_week_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Subscription" + ADD CONSTRAINT "subscription_week_FK" FOREIGN KEY ("weekNumber", "termNumber") REFERENCES public."Week"("weekNumber", "termNumber") ON UPDATE RESTRICT ON DELETE RESTRICT NOT VALID; + + +-- +-- Name: Week week_term_FK; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public."Week" + ADD CONSTRAINT "week_term_FK" FOREIGN KEY ("termNumber") REFERENCES public."Term"("termNumber") ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; + + +-- +-- PostgreSQL database dump complete +-- diff --git a/server/middlewares/example.middleware.js b/server/middlewares/example.middleware.js new file mode 100644 index 00000000..e69de29b diff --git a/server/models/example.model.js b/server/models/example.model.js new file mode 100644 index 00000000..e69de29b diff --git a/server/package-lock.json b/server/package-lock.json new file mode 100644 index 00000000..11ca95fd --- /dev/null +++ b/server/package-lock.json @@ -0,0 +1,1229 @@ +{ + "name": "server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "server", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "cors": "^2.8.5", + "dotenv": "^16.3.1", + "express": "^4.18.2", + "pg": "^8.11.3" + }, + "devDependencies": { + "nodemon": "^3.0.2" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "engines": { + "node": ">=4" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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/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/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "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/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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": "3.0.2", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz", + "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "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==", + "dev": true, + "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.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "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/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, + "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/pg": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", + "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.6.2", + "pg-pool": "^3.6.1", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", + "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", + "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true + }, + "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.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/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "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": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "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/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/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==", + "dev": true, + "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==", + "dev": true + }, + "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" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 00000000..5c476c07 --- /dev/null +++ b/server/package.json @@ -0,0 +1,21 @@ +{ + "name": "server", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "nodemon app.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "cors": "^2.8.5", + "dotenv": "^16.3.1", + "express": "^4.18.2", + "pg": "^8.11.3" + }, + "devDependencies": { + "nodemon": "^3.0.2" + } +} diff --git a/server/routes/example.route.js b/server/routes/example.route.js new file mode 100644 index 00000000..e69de29b diff --git a/server/utils/fileExample.js b/server/utils/fileExample.js new file mode 100644 index 00000000..e69de29b