Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
2023-029
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2023-029
2023-029
Commits
d8f96f23
Commit
d8f96f23
authored
May 11, 2023
by
janithGamage
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feature: update
desc : node server implemented * User REST API implemented
parent
c8b2dcd2
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
2730 additions
and
0 deletions
+2730
-0
.vscode/settings.json
.vscode/settings.json
+1
-0
Project/Backend/Server_Node/.env-example
Project/Backend/Server_Node/.env-example
+2
-0
Project/Backend/Server_Node/controllers/user.controller.js
Project/Backend/Server_Node/controllers/user.controller.js
+228
-0
Project/Backend/Server_Node/middleware/auth.middleware.js
Project/Backend/Server_Node/middleware/auth.middleware.js
+32
-0
Project/Backend/Server_Node/models/user.model.js
Project/Backend/Server_Node/models/user.model.js
+56
-0
Project/Backend/Server_Node/package-lock.json
Project/Backend/Server_Node/package-lock.json
+2326
-0
Project/Backend/Server_Node/package.json
Project/Backend/Server_Node/package.json
+25
-0
Project/Backend/Server_Node/routes/user.routes.js
Project/Backend/Server_Node/routes/user.routes.js
+14
-0
Project/Backend/Server_Node/server.js
Project/Backend/Server_Node/server.js
+46
-0
No files found.
.vscode/settings.json
View file @
d8f96f23
{
{
"cSpell.words"
:
[
"cSpell.words"
:
[
"Janith"
,
"SLIIT"
"SLIIT"
]
]
}
}
\ No newline at end of file
Project/Backend/Server_Node/.env-example
0 → 100644
View file @
d8f96f23
DB_PASSWORD = JppbU6MZeHfOj7sp
DB_USERNAME = admin
\ No newline at end of file
Project/Backend/Server_Node/controllers/user.controller.js
0 → 100644
View file @
d8f96f23
import
bcrypt
from
'
bcryptjs
'
;
import
jwt
from
'
jsonwebtoken
'
;
import
mongoose
from
'
mongoose
'
;
import
nodemailer
from
"
nodemailer
"
;
import
{
v4
as
uuidv4
}
from
'
uuid
'
;
import
User
from
'
../models/user.model.js
'
;
export
const
signIn
=
async
(
req
,
res
)
=>
{
const
{
email
,
password
}
=
req
.
body
;
try
{
if
(
email
===
null
||
typeof
email
==
"
undefined
"
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
Email Field Required
"
})
if
(
password
===
null
||
typeof
password
==
"
undefined
"
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
Password Field Required
"
})
const
existingUser
=
await
User
.
findOne
({
email
:
email
});
if
(
!
existingUser
)
return
res
.
status
(
404
).
json
({
code
:
"
02
"
,
message
:
"
User doesn't exist
"
})
const
isPasswordCorrect
=
await
bcrypt
.
compare
(
password
,
existingUser
.
password
)
if
(
!
isPasswordCorrect
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
Invalid Credentials
"
})
const
token
=
jwt
.
sign
({
email
:
existingUser
.
email
,
id
:
existingUser
.
_id
},
'
test
'
,
{
expiresIn
:
"
1h
"
})
res
.
status
(
200
).
json
({
code
:
"
01
"
,
result
:
existingUser
,
token
})
}
catch
(
error
)
{
res
.
status
(
500
).
json
({
code
:
"
00
"
,
message
:
"
Something went wrong
"
})
}
}
export
const
signUp
=
async
(
req
,
res
)
=>
{
const
{
email
,
password
,
confirmPassword
,
type
,
userFirstName
,
userLastName
,
userContactNumber
,
userAddressLine1
,
userAddressLine2
,
userAddressLine3
,
}
=
req
.
body
;
try
{
if
(
!
type
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
Type Field Required
"
})
if
(
!
email
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
Email Field Required
"
})
if
(
!
userFirstName
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
User First Name Field Required
"
})
if
(
!
userLastName
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
User Last Name Field Required
"
})
if
(
!
userContactNumber
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
User Contact Number Field Required
"
})
const
existingUser
=
await
User
.
findOne
({
email
})
if
(
existingUser
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
User already exists
"
})
if
(
type
===
"
buyer
"
)
{
if
(
!
password
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
Password Field Required
"
})
if
(
password
!==
confirmPassword
)
return
res
.
status
(
400
).
json
({
code
:
"
02
"
,
message
:
"
Passwords do not match
"
})
const
hashedPassword
=
await
bcrypt
.
hash
(
password
,
12
)
const
userDetails
=
new
User
({
email
,
password
:
hashedPassword
,
type
,
userDetails
:
{
userQNumber
:
uuidv4
(),
userEmail
:
email
,
userName
:
`
${
userFirstName
}
${
userLastName
}
`
,
userContactNumber
,
userAddress
:
`
${
userAddressLine1
}
,
${
userAddressLine2
}
,
${
userAddressLine3
}
`
,
userType
:
type
,
}
})
const
userResult
=
await
userDetails
.
save
()
const
token
=
jwt
.
sign
({
email
:
userResult
.
email
,
id
:
userResult
.
_id
},
'
test
'
,
{
expiresIn
:
"
1h
"
})
res
.
status
(
200
).
json
({
code
:
"
01
"
,
result
:
userResult
,
token
})
}
else
if
(
type
===
"
trader
"
)
{
const
userDetails
=
new
User
({
email
,
type
,
userDetails
:
{
userQNumber
:
uuidv4
(),
userEmail
:
email
,
userName
:
`
${
userFirstName
}
${
userLastName
}
`
,
userContactNumber
,
userAddress
:
`
${
userAddressLine1
}
,
${
userAddressLine2
}
,
${
userAddressLine3
}
`
,
userType
:
type
,
},
states
:
2
})
const
userResult
=
await
userDetails
.
save
()
const
token
=
jwt
.
sign
({
email
:
userResult
.
email
,
id
:
userResult
.
_id
},
'
test
'
,
{
expiresIn
:
"
1h
"
})
res
.
status
(
200
).
json
({
code
:
"
01
"
,
result
:
userResult
,
token
})
}
}
catch
(
error
)
{
res
.
status
(
500
).
json
({
code
:
"
00
"
,
message
:
"
Something went wrong
"
})
}
}
export
const
getUsers
=
async
(
req
,
res
)
=>
{
try
{
const
users
=
await
User
.
find
();
res
.
status
(
200
);
res
.
json
(
users
);
}
catch
(
error
)
{
console
.
log
(
error
)
res
.
status
(
404
);
res
.
json
({
message
:
error
.
message
})
}
}
export
const
getUser
=
async
(
req
,
res
)
=>
{
const
{
id
}
=
req
.
params
;
try
{
const
user
=
await
User
.
findById
(
id
);
res
.
status
(
200
);
res
.
json
({
code
:
"
01
"
,
result
:
user
});
}
catch
(
error
)
{
res
.
status
(
404
);
res
.
json
({
"
message
"
:
error
.
message
});
}
}
export
const
getUserAccordingToType
=
async
(
req
,
res
)
=>
{
const
{
userType
}
=
req
.
params
;
try
{
const
users
=
await
User
.
find
({
type
:
userType
});
res
.
status
(
200
);
res
.
json
(
users
);
}
catch
(
error
)
{
res
.
status
(
404
);
res
.
json
({
"
message
"
:
error
.
message
});
}
}
export
const
updateUser
=
async
(
req
,
res
)
=>
{
const
{
id
}
=
req
.
params
;
const
data
=
req
.
body
;
try
{
if
(
!
mongoose
.
Types
.
ObjectId
.
isValid
(
id
))
{
return
res
.
status
(
404
).
json
({
code
:
"
02
"
,
message
:
`No User for this id:
${
id
}
`
});
}
if
(
data
.
type
==
"
buyer
"
||
data
.
type
==
"
admin
"
)
{
const
updateUser
=
{
...
data
,
_id
:
id
}
await
User
.
findByIdAndUpdate
(
id
,
updateUser
,
{
new
:
true
})
res
.
status
(
200
);
res
.
json
({
code
:
"
01
"
,
result
:
updateUser
})
}
else
if
(
data
.
type
==
"
trader
"
)
{
var
password
=
Math
.
random
().
toString
(
36
).
slice
(
-
8
);
const
hashPassword
=
await
bcrypt
.
hash
(
password
,
12
)
const
updateUser
=
{
...
data
,
password
:
hashPassword
,
_id
:
id
}
await
User
.
findByIdAndUpdate
(
id
,
updateUser
,
{
new
:
true
})
//call email service
let
transporter
=
nodemailer
.
createTransport
({
service
:
'
gmail
'
,
auth
:
{
type
:
'
OAuth2
'
,
user
:
process
.
env
.
MAIL_USERNAME
,
pass
:
process
.
env
.
MAIL_PASSWORD
,
clientId
:
process
.
env
.
OAUTH_CLIENTID
,
clientSecret
:
process
.
env
.
OAUTH_CLIENT_SECRET
,
refreshToken
:
process
.
env
.
OAUTH_REFRESH_TOKEN
}
});
let
mailOptions
=
{
from
:
"
janithgamage1.ed@gmail.com
"
,
to
:
updateUser
.
email
,
subject
:
'
Shop House Project
'
,
text
:
`You are Successfully Approved, you're username:
${
updateUser
.
email
}
, you're password :
${
password
}
`
};
transporter
.
sendMail
(
mailOptions
,
function
(
err
,
data
)
{
if
(
err
)
{
console
.
log
(
"
Error
"
+
err
);
}
else
{
console
.
log
(
"
Email sent successfully
"
);
}
});
res
.
status
(
200
);
res
.
json
({
code
:
"
01
"
,
result
:
updateUser
})
}
}
catch
(
error
)
{
res
.
status
(
404
);
res
.
json
({
code
:
"
00
"
,
"
message
"
:
error
.
message
});
}
}
export
const
deleteUser
=
async
(
req
,
res
)
=>
{
const
{
id
}
=
req
.
params
;
try
{
if
(
!
mongoose
.
Types
.
ObjectId
.
isValid
(
id
))
{
return
res
.
status
(
404
).
json
({
code
:
"
02
"
,
message
:
`No User for this id:
${
id
}
`
});
}
await
User
.
findByIdAndDelete
(
id
);
res
.
status
(
200
);
res
.
json
({
code
:
"
01
"
,
"
message
"
:
"
User Deleted Successfully
"
});
}
catch
(
error
)
{
res
.
status
(
404
);
res
.
json
({
code
:
"
00
"
,
"
message
"
:
error
.
message
});
}
}
Project/Backend/Server_Node/middleware/auth.middleware.js
0 → 100644
View file @
d8f96f23
import
jwt
from
'
jsonwebtoken
'
;
const
auth
=
async
(
req
,
res
,
next
)
=>
{
try
{
if
(
req
.
headers
.
authorization
!=
null
)
{
const
token
=
req
.
headers
.
authorization
.
split
(
"
"
)[
1
];
const
isCustomAuth
=
token
.
length
<
500
;
let
decoderData
;
if
(
token
&&
isCustomAuth
)
{
decoderData
=
jwt
.
verify
(
token
,
'
test
'
);
req
.
userId
=
decoderData
?.
id
;
}
else
{
decoderData
=
jwt
.
decode
(
token
)
req
.
userId
=
decoderData
?.
sub
;
}
next
();
}
else
{
res
.
status
(
500
).
json
({
message
:
'
user not authorized
'
})
}
}
catch
(
error
)
{
console
.
log
(
error
)
}
}
export
default
auth
;
\ No newline at end of file
Project/Backend/Server_Node/models/user.model.js
0 → 100644
View file @
d8f96f23
import
mongoose
from
"
mongoose
"
;
const
userSchema
=
mongoose
.
Schema
({
email
:
{
type
:
String
,
required
:
true
,
unique
:
true
},
password
:
{
type
:
String
},
type
:
{
type
:
String
,
required
:
true
},
userDetails
:
{
userQNumber
:
{
type
:
String
,
required
:
true
,
unique
:
true
},
userEmail
:
{
type
:
String
,
required
:
true
,
},
userName
:
{
type
:
String
,
required
:
true
},
userContactNumber
:
{
type
:
String
,
required
:
true
},
userAddress
:
{
type
:
String
},
userType
:
{
type
:
String
,
required
:
true
},
},
states
:
{
type
:
String
,
default
:
"
1
"
},
createdAt
:
{
type
:
Date
},
updatedAt
:
{
type
:
Date
}
});
const
User
=
mongoose
.
model
(
"
Users
"
,
userSchema
);
export
default
User
;
Project/Backend/Server_Node/package-lock.json
0 → 100644
View file @
d8f96f23
{
"name"
:
"server_node"
,
"version"
:
"1.0.0"
,
"lockfileVersion"
:
2
,
"requires"
:
true
,
"packages"
:
{
""
:
{
"name"
:
"server_node"
,
"version"
:
"1.0.0"
,
"license"
:
"ISC"
,
"dependencies"
:
{
"bcryptjs"
:
"^2.4.3"
,
"body-parser"
:
"^1.20.2"
,
"cors"
:
"^2.8.5"
,
"dotenv"
:
"^16.0.3"
,
"express"
:
"^4.18.2"
,
"jsonwebtoken"
:
"^9.0.0"
,
"mongoose"
:
"^7.1.1"
,
"nodemailer"
:
"^6.9.1"
,
"nodemon"
:
"^2.0.22"
,
"uuid"
:
"^9.0.0"
}
},
"node_modules/@types/node"
:
{
"version"
:
"20.1.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/node/-/node-20.1.2.tgz"
,
"integrity"
:
"sha512-CTO/wa8x+rZU626cL2BlbCDzydgnFNgc19h4YvizpTO88MFQxab8wqisxaofQJ/9bLGugRdWIuX/TbIs6VVF6g=="
},
"node_modules/@types/webidl-conversions"
:
{
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
,
"integrity"
:
"sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
},
"node_modules/@types/whatwg-url"
:
{
"version"
:
"8.2.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz"
,
"integrity"
:
"sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA=="
,
"dependencies"
:
{
"@types/node"
:
"*"
,
"@types/webidl-conversions"
:
"*"
}
},
"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/bcryptjs"
:
{
"version"
:
"2.4.3"
,
"resolved"
:
"https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz"
,
"integrity"
:
"sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
},
"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/bson"
:
{
"version"
:
"5.3.0"
,
"resolved"
:
"https://registry.npmjs.org/bson/-/bson-5.3.0.tgz"
,
"integrity"
:
"sha512-ukmCZMneMlaC5ebPHXIkP8YJzNl5DC41N5MAIvKDqLggdao342t4McltoJBQfQya/nHBWAcSsYRqlXPoQkTJag=="
,
"engines"
:
{
"node"
:
">=14.20.1"
}
},
"node_modules/buffer-equal-constant-time"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz"
,
"integrity"
:
"sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
},
"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/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/dotenv"
:
{
"version"
:
"16.0.3"
,
"resolved"
:
"https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz"
,
"integrity"
:
"sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
,
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/ecdsa-sig-formatter"
:
{
"version"
:
"1.0.11"
,
"resolved"
:
"https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz"
,
"integrity"
:
"sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="
,
"dependencies"
:
{
"safe-buffer"
:
"^5.0.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/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/ip"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/ip/-/ip-2.0.0.tgz"
,
"integrity"
:
"sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
},
"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/jsonwebtoken"
:
{
"version"
:
"9.0.0"
,
"resolved"
:
"https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz"
,
"integrity"
:
"sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw=="
,
"dependencies"
:
{
"jws"
:
"^3.2.2"
,
"lodash"
:
"^4.17.21"
,
"ms"
:
"^2.1.1"
,
"semver"
:
"^7.3.8"
},
"engines"
:
{
"node"
:
">=12"
,
"npm"
:
">=6"
}
},
"node_modules/jsonwebtoken/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/jwa"
:
{
"version"
:
"1.4.1"
,
"resolved"
:
"https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz"
,
"integrity"
:
"sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA=="
,
"dependencies"
:
{
"buffer-equal-constant-time"
:
"1.0.1"
,
"ecdsa-sig-formatter"
:
"1.0.11"
,
"safe-buffer"
:
"^5.0.1"
}
},
"node_modules/jws"
:
{
"version"
:
"3.2.2"
,
"resolved"
:
"https://registry.npmjs.org/jws/-/jws-3.2.2.tgz"
,
"integrity"
:
"sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA=="
,
"dependencies"
:
{
"jwa"
:
"^1.4.1"
,
"safe-buffer"
:
"^5.0.1"
}
},
"node_modules/kareem"
:
{
"version"
:
"2.5.1"
,
"resolved"
:
"https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz"
,
"integrity"
:
"sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA=="
,
"engines"
:
{
"node"
:
">=12.0.0"
}
},
"node_modules/lodash"
:
{
"version"
:
"4.17.21"
,
"resolved"
:
"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
,
"integrity"
:
"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"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=="
,
"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/memory-pager"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz"
,
"integrity"
:
"sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
,
"optional"
:
true
},
"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/mongodb"
:
{
"version"
:
"5.3.0"
,
"resolved"
:
"https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz"
,
"integrity"
:
"sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ=="
,
"dependencies"
:
{
"bson"
:
"^5.2.0"
,
"mongodb-connection-string-url"
:
"^2.6.0"
,
"socks"
:
"^2.7.1"
},
"engines"
:
{
"node"
:
">=14.20.1"
},
"optionalDependencies"
:
{
"saslprep"
:
"^1.0.3"
},
"peerDependencies"
:
{
"@aws-sdk/credential-providers"
:
"^3.201.0"
,
"mongodb-client-encryption"
:
">=2.3.0 <3"
,
"snappy"
:
"^7.2.2"
},
"peerDependenciesMeta"
:
{
"@aws-sdk/credential-providers"
:
{
"optional"
:
true
},
"mongodb-client-encryption"
:
{
"optional"
:
true
},
"snappy"
:
{
"optional"
:
true
}
}
},
"node_modules/mongodb-connection-string-url"
:
{
"version"
:
"2.6.0"
,
"resolved"
:
"https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz"
,
"integrity"
:
"sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ=="
,
"dependencies"
:
{
"@types/whatwg-url"
:
"^8.2.1"
,
"whatwg-url"
:
"^11.0.0"
}
},
"node_modules/mongoose"
:
{
"version"
:
"7.1.1"
,
"resolved"
:
"https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz"
,
"integrity"
:
"sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA=="
,
"dependencies"
:
{
"bson"
:
"^5.2.0"
,
"kareem"
:
"2.5.1"
,
"mongodb"
:
"5.3.0"
,
"mpath"
:
"0.9.0"
,
"mquery"
:
"5.0.0"
,
"ms"
:
"2.1.3"
,
"sift"
:
"16.0.1"
},
"engines"
:
{
"node"
:
">=14.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/mongoose"
}
},
"node_modules/mongoose/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/mpath"
:
{
"version"
:
"0.9.0"
,
"resolved"
:
"https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz"
,
"integrity"
:
"sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew=="
,
"engines"
:
{
"node"
:
">=4.0.0"
}
},
"node_modules/mquery"
:
{
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz"
,
"integrity"
:
"sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg=="
,
"dependencies"
:
{
"debug"
:
"4.x"
},
"engines"
:
{
"node"
:
">=14.0.0"
}
},
"node_modules/mquery/node_modules/debug"
:
{
"version"
:
"4.3.4"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
,
"integrity"
:
"sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
,
"dependencies"
:
{
"ms"
:
"2.1.2"
},
"engines"
:
{
"node"
:
">=6.0"
},
"peerDependenciesMeta"
:
{
"supports-color"
:
{
"optional"
:
true
}
}
},
"node_modules/mquery/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=="
},
"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/nodemailer"
:
{
"version"
:
"6.9.1"
,
"resolved"
:
"https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz"
,
"integrity"
:
"sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA=="
,
"engines"
:
{
"node"
:
">=6.0.0"
}
},
"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/nodemon/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/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/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/punycode"
:
{
"version"
:
"2.3.0"
,
"resolved"
:
"https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
,
"integrity"
:
"sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
,
"engines"
:
{
"node"
:
">=6"
}
},
"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/saslprep"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz"
,
"integrity"
:
"sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag=="
,
"optional"
:
true
,
"dependencies"
:
{
"sparse-bitfield"
:
"^3.0.3"
},
"engines"
:
{
"node"
:
">=6"
}
},
"node_modules/semver"
:
{
"version"
:
"7.5.0"
,
"resolved"
:
"https://registry.npmjs.org/semver/-/semver-7.5.0.tgz"
,
"integrity"
:
"sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA=="
,
"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/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/sift"
:
{
"version"
:
"16.0.1"
,
"resolved"
:
"https://registry.npmjs.org/sift/-/sift-16.0.1.tgz"
,
"integrity"
:
"sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ=="
},
"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/smart-buffer"
:
{
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
,
"integrity"
:
"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
,
"engines"
:
{
"node"
:
">= 6.0.0"
,
"npm"
:
">= 3.0.0"
}
},
"node_modules/socks"
:
{
"version"
:
"2.7.1"
,
"resolved"
:
"https://registry.npmjs.org/socks/-/socks-2.7.1.tgz"
,
"integrity"
:
"sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ=="
,
"dependencies"
:
{
"ip"
:
"^2.0.0"
,
"smart-buffer"
:
"^4.2.0"
},
"engines"
:
{
"node"
:
">= 10.13.0"
,
"npm"
:
">= 3.0.0"
}
},
"node_modules/sparse-bitfield"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz"
,
"integrity"
:
"sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ=="
,
"optional"
:
true
,
"dependencies"
:
{
"memory-pager"
:
"^1.0.2"
}
},
"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=="
,
"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/tr46"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz"
,
"integrity"
:
"sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA=="
,
"dependencies"
:
{
"punycode"
:
"^2.1.1"
},
"engines"
:
{
"node"
:
">=12"
}
},
"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/uuid"
:
{
"version"
:
"9.0.0"
,
"resolved"
:
"https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz"
,
"integrity"
:
"sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg=="
,
"bin"
:
{
"uuid"
:
"dist/bin/uuid"
}
},
"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/webidl-conversions"
:
{
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
,
"integrity"
:
"sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
,
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/whatwg-url"
:
{
"version"
:
"11.0.0"
,
"resolved"
:
"https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz"
,
"integrity"
:
"sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ=="
,
"dependencies"
:
{
"tr46"
:
"^3.0.0"
,
"webidl-conversions"
:
"^7.0.0"
},
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/yallist"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
,
"integrity"
:
"sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
},
"dependencies"
:
{
"@types/node"
:
{
"version"
:
"20.1.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/node/-/node-20.1.2.tgz"
,
"integrity"
:
"sha512-CTO/wa8x+rZU626cL2BlbCDzydgnFNgc19h4YvizpTO88MFQxab8wqisxaofQJ/9bLGugRdWIuX/TbIs6VVF6g=="
},
"@types/webidl-conversions"
:
{
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
,
"integrity"
:
"sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
},
"@types/whatwg-url"
:
{
"version"
:
"8.2.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz"
,
"integrity"
:
"sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA=="
,
"requires"
:
{
"@types/node"
:
"*"
,
"@types/webidl-conversions"
:
"*"
}
},
"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=="
},
"bcryptjs"
:
{
"version"
:
"2.4.3"
,
"resolved"
:
"https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz"
,
"integrity"
:
"sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
},
"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"
}
},
"bson"
:
{
"version"
:
"5.3.0"
,
"resolved"
:
"https://registry.npmjs.org/bson/-/bson-5.3.0.tgz"
,
"integrity"
:
"sha512-ukmCZMneMlaC5ebPHXIkP8YJzNl5DC41N5MAIvKDqLggdao342t4McltoJBQfQya/nHBWAcSsYRqlXPoQkTJag=="
},
"buffer-equal-constant-time"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz"
,
"integrity"
:
"sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
},
"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"
}
},
"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=="
},
"dotenv"
:
{
"version"
:
"16.0.3"
,
"resolved"
:
"https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz"
,
"integrity"
:
"sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
},
"ecdsa-sig-formatter"
:
{
"version"
:
"1.0.11"
,
"resolved"
:
"https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz"
,
"integrity"
:
"sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="
,
"requires"
:
{
"safe-buffer"
:
"^5.0.1"
}
},
"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=="
},
"ip"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/ip/-/ip-2.0.0.tgz"
,
"integrity"
:
"sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
},
"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=="
},
"jsonwebtoken"
:
{
"version"
:
"9.0.0"
,
"resolved"
:
"https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz"
,
"integrity"
:
"sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw=="
,
"requires"
:
{
"jws"
:
"^3.2.2"
,
"lodash"
:
"^4.17.21"
,
"ms"
:
"^2.1.1"
,
"semver"
:
"^7.3.8"
},
"dependencies"
:
{
"ms"
:
{
"version"
:
"2.1.3"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
,
"integrity"
:
"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
}
}
},
"jwa"
:
{
"version"
:
"1.4.1"
,
"resolved"
:
"https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz"
,
"integrity"
:
"sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA=="
,
"requires"
:
{
"buffer-equal-constant-time"
:
"1.0.1"
,
"ecdsa-sig-formatter"
:
"1.0.11"
,
"safe-buffer"
:
"^5.0.1"
}
},
"jws"
:
{
"version"
:
"3.2.2"
,
"resolved"
:
"https://registry.npmjs.org/jws/-/jws-3.2.2.tgz"
,
"integrity"
:
"sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA=="
,
"requires"
:
{
"jwa"
:
"^1.4.1"
,
"safe-buffer"
:
"^5.0.1"
}
},
"kareem"
:
{
"version"
:
"2.5.1"
,
"resolved"
:
"https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz"
,
"integrity"
:
"sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA=="
},
"lodash"
:
{
"version"
:
"4.17.21"
,
"resolved"
:
"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
,
"integrity"
:
"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"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=="
,
"requires"
:
{
"yallist"
:
"^4.0.0"
}
},
"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=="
},
"memory-pager"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz"
,
"integrity"
:
"sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
,
"optional"
:
true
},
"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"
}
},
"mongodb"
:
{
"version"
:
"5.3.0"
,
"resolved"
:
"https://registry.npmjs.org/mongodb/-/mongodb-5.3.0.tgz"
,
"integrity"
:
"sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ=="
,
"requires"
:
{
"bson"
:
"^5.2.0"
,
"mongodb-connection-string-url"
:
"^2.6.0"
,
"saslprep"
:
"^1.0.3"
,
"socks"
:
"^2.7.1"
}
},
"mongodb-connection-string-url"
:
{
"version"
:
"2.6.0"
,
"resolved"
:
"https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz"
,
"integrity"
:
"sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ=="
,
"requires"
:
{
"@types/whatwg-url"
:
"^8.2.1"
,
"whatwg-url"
:
"^11.0.0"
}
},
"mongoose"
:
{
"version"
:
"7.1.1"
,
"resolved"
:
"https://registry.npmjs.org/mongoose/-/mongoose-7.1.1.tgz"
,
"integrity"
:
"sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA=="
,
"requires"
:
{
"bson"
:
"^5.2.0"
,
"kareem"
:
"2.5.1"
,
"mongodb"
:
"5.3.0"
,
"mpath"
:
"0.9.0"
,
"mquery"
:
"5.0.0"
,
"ms"
:
"2.1.3"
,
"sift"
:
"16.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=="
}
}
},
"mpath"
:
{
"version"
:
"0.9.0"
,
"resolved"
:
"https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz"
,
"integrity"
:
"sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew=="
},
"mquery"
:
{
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz"
,
"integrity"
:
"sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg=="
,
"requires"
:
{
"debug"
:
"4.x"
},
"dependencies"
:
{
"debug"
:
{
"version"
:
"4.3.4"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
,
"integrity"
:
"sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
,
"requires"
:
{
"ms"
:
"2.1.2"
}
},
"ms"
:
{
"version"
:
"2.1.2"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
,
"integrity"
:
"sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"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=="
},
"nodemailer"
:
{
"version"
:
"6.9.1"
,
"resolved"
:
"https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz"
,
"integrity"
:
"sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA=="
},
"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=="
},
"semver"
:
{
"version"
:
"5.7.1"
,
"resolved"
:
"https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
,
"integrity"
:
"sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
"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"
}
},
"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=="
},
"punycode"
:
{
"version"
:
"2.3.0"
,
"resolved"
:
"https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
,
"integrity"
:
"sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
},
"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=="
},
"saslprep"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz"
,
"integrity"
:
"sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag=="
,
"optional"
:
true
,
"requires"
:
{
"sparse-bitfield"
:
"^3.0.3"
}
},
"semver"
:
{
"version"
:
"7.5.0"
,
"resolved"
:
"https://registry.npmjs.org/semver/-/semver-7.5.0.tgz"
,
"integrity"
:
"sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA=="
,
"requires"
:
{
"lru-cache"
:
"^6.0.0"
}
},
"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"
}
},
"sift"
:
{
"version"
:
"16.0.1"
,
"resolved"
:
"https://registry.npmjs.org/sift/-/sift-16.0.1.tgz"
,
"integrity"
:
"sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ=="
},
"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=="
}
}
},
"smart-buffer"
:
{
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
,
"integrity"
:
"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
},
"socks"
:
{
"version"
:
"2.7.1"
,
"resolved"
:
"https://registry.npmjs.org/socks/-/socks-2.7.1.tgz"
,
"integrity"
:
"sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ=="
,
"requires"
:
{
"ip"
:
"^2.0.0"
,
"smart-buffer"
:
"^4.2.0"
}
},
"sparse-bitfield"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz"
,
"integrity"
:
"sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ=="
,
"optional"
:
true
,
"requires"
:
{
"memory-pager"
:
"^1.0.2"
}
},
"statuses"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
,
"integrity"
:
"sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
},
"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"
}
},
"tr46"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz"
,
"integrity"
:
"sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA=="
,
"requires"
:
{
"punycode"
:
"^2.1.1"
}
},
"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=="
},
"uuid"
:
{
"version"
:
"9.0.0"
,
"resolved"
:
"https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz"
,
"integrity"
:
"sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg=="
},
"vary"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
,
"integrity"
:
"sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
},
"webidl-conversions"
:
{
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
,
"integrity"
:
"sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
},
"whatwg-url"
:
{
"version"
:
"11.0.0"
,
"resolved"
:
"https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz"
,
"integrity"
:
"sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ=="
,
"requires"
:
{
"tr46"
:
"^3.0.0"
,
"webidl-conversions"
:
"^7.0.0"
}
},
"yallist"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
,
"integrity"
:
"sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
}
Project/Backend/Server_Node/package.json
0 → 100644
View file @
d8f96f23
{
"name"
:
"server_node"
,
"version"
:
"1.0.0"
,
"description"
:
"SLIIT Final Year Research Project Server (NodeJS)"
,
"main"
:
"server.js"
,
"type"
:
"module"
,
"scripts"
:
{
"start"
:
"node server.js"
,
"dev"
:
"nodemon server.js"
},
"author"
:
"devJanith"
,
"license"
:
"ISC"
,
"dependencies"
:
{
"bcryptjs"
:
"^2.4.3"
,
"body-parser"
:
"^1.20.2"
,
"cors"
:
"^2.8.5"
,
"dotenv"
:
"^16.0.3"
,
"express"
:
"^4.18.2"
,
"jsonwebtoken"
:
"^9.0.0"
,
"mongoose"
:
"^7.1.1"
,
"nodemailer"
:
"^6.9.1"
,
"nodemon"
:
"^2.0.22"
,
"uuid"
:
"^9.0.0"
}
}
Project/Backend/Server_Node/routes/user.routes.js
0 → 100644
View file @
d8f96f23
import
express
from
"
express
"
;
import
{
deleteUser
,
getUser
,
getUserAccordingToType
,
getUsers
,
signIn
,
signUp
,
updateUser
}
from
"
../controllers/user.controller.js
"
;
const
router
=
express
.
Router
();
router
.
post
(
'
/sign-in
'
,
signIn
)
router
.
post
(
'
/sign-up
'
,
signUp
)
router
.
get
(
'
/all
'
,
getUsers
);
router
.
get
(
'
/:id
'
,
getUser
);
router
.
get
(
'
/test/:userType
'
,
getUserAccordingToType
);
router
.
put
(
'
/:id
'
,
updateUser
);
router
.
delete
(
'
/:id
'
,
deleteUser
);
export
default
router
;
\ No newline at end of file
Project/Backend/Server_Node/server.js
0 → 100644
View file @
d8f96f23
import
bodyParser
from
"
body-parser
"
;
import
cors
from
"
cors
"
;
import
dotenv
from
"
dotenv
"
;
import
express
from
"
express
"
;
import
mongoose
from
"
mongoose
"
;
//import routes
import
userRoutes
from
"
./routes/user.routes.js
"
;
dotenv
.
config
();
const
app
=
express
();
app
.
use
(
bodyParser
.
json
({
limit
:
"
30mb
"
,
extended
:
true
}));
app
.
use
(
bodyParser
.
urlencoded
({
limit
:
"
30mb
"
,
extended
:
true
}));
app
.
use
(
cors
());
//end
app
.
get
(
"
/
"
,
(
req
,
res
)
=>
{
res
.
json
({
message
:
"
Welcome to Server Node
"
});
});
//implement routes
app
.
use
(
"
/rest_node/user
"
,
userRoutes
);
const
CONNECTION_URL
=
`mongodb+srv://
${
process
.
env
.
DB_USERNAME
}
:
${
process
.
env
.
DB_PASSWORD
}
@cluster0.dmza8yi.mongodb.net/?retryWrites=true&w=majority`
;
const
PORT
=
process
.
env
.
PORT
||
5000
;
mongoose
.
connect
(
CONNECTION_URL
,
{
useNewUrlParser
:
true
,
useUnifiedTopology
:
true
,
})
.
then
(()
=>
{
app
.
listen
(
PORT
,
()
=>
console
.
log
(
`Server Running on port :http://localhost:
${
PORT
}
`
)
);
})
.
catch
((
error
)
=>
{
console
.
error
(
error
);
process
.
exit
(
1
);
});
app
.
use
((
err
,
req
,
res
,
next
)
=>
{
console
.
error
(
err
.
stack
);
res
.
status
(
500
).
send
(
'
Internal Server Error
'
);
});
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment