M CHANGELOG.md => CHANGELOG.md +10 -0
@@ 8,6 8,15 @@ and this project adheres to
## [Unreleased]
+## [1.4.0] - 2021-08-15
+
+### Changed
+
++ Improved the HTTP API responses
++ Made it so that it is no longer possible to add a file of the same name as an
+ existing one (instead, the existing one has to be deleted manually
+ beforehand)
+
## [1.3.1] - 2021-07-17
### Fixed
@@ 40,6 49,7 @@ and this project adheres to
+ Initial release
[Unreleased]: https://git.sr.ht/~mser/emote-server/tree/develop
+[1.4.0]: https://git.sr.ht/~mser/emote-server/tree/1.4.0
[1.3.1]: https://git.sr.ht/~mser/emote-server/tree/1.3.1
[1.3.0]: https://git.sr.ht/~mser/emote-server/tree/1.3.0
[1.2.0]: https://git.sr.ht/~mser/emote-server/tree/1.2.0
M README.md => README.md +39 -29
@@ 169,10 169,10 @@ publicly accessible as well.
The base route (`GET /`) does not require authentication, but can _optionally_
be used to verify access keys. To do this, simply pass an access key as you
normally would, in which case it will either respond normally when using a
-valid access key or with an `AccessKeyError` when using an invalid one.
+valid access key or with an `InvalidAccessKey` error when using an invalid one.
-In case of any occuring errors, the response will have the following format
-and an appropriate HTTP status code:
+In case of any occuring errors, the response will have the following format and
+an appropriate HTTP status code:
```json5
{
@@ 187,8 187,8 @@ and an appropriate HTTP status code:
Responds with the version number and the API version number of the
installation. The API version number will increase by 1 every time an existing
-API endpoint is modified in a way it behaves differently than before or
-removed altogether.
+API endpoint is modified in a way it behaves differently than before or removed
+altogether.
__Route:__ `GET /`
@@ 205,15 205,15 @@ __Response on success:__
__Possible errors:__
-+ `AccessKeyError`
++ `InvalidAccessKey` (`401`): indicates a missing or wrong access key
+ (configured via `EMOTE_SERVER_ACCESS_KEY`)
##### Emotes
###### Adding emotes
-Adds a new emote. If a file with the same name already exists it will be
-overwritten. The request has to be of type `multipart-form-data` and the file
-needs to have the key `emote`.
+Adds a new emote. The request has to be of type `multipart-form-data` and the
+file needs to have the key `emote`.
__Route:__ `POST /emotes`
@@ 221,16 221,22 @@ __Response on success:__
```json5
{
- "success": true,
- "message": "Add"
+ "success": true
}
```
__Possible errors:__
-+ `AccessKeyError`
-+ `FileSizeError`
-+ `AddError`
++ `InvalidAccessKey` (`401`): indicates a missing or wrong access key
+ (configured via `EMOTE_SERVER_ACCESS_KEY`)
++ `MissingFile` (`400`): indicates that the file is missing
++ `UnsupportedFileExtension` (`400`): indicates that the file has an
+ unsupported file extension (configured via
+ `EMOTE_SERVER_SUPPORTED_FILE_EXTENSIONS`)
++ `FileSizeLimitExceeded` (`400`): indicates that the file exceeds the file
+ size limit (configured via `EMOTE_SERVER_FILE_SIZE_LIMIT`)
++ `FileExists` (`403`): indicates that a file of the same name already exists
++ `IO` (`500`): indicates an I/O issue (e.g., missing write permissions)
###### Deleting emotes
@@ 243,15 249,16 @@ __Response on success:__
```json5
{
- "success": true,
- "message": "Delete"
+ "success": true
}
```
__Possible errors:__
-+ `AccessKeyError`
-+ `DeleteError`
++ `InvalidAccessKey` (`401`): indicates a missing or wrong access key
+ (configured via `EMOTE_SERVER_ACCESS_KEY`)
++ `FileNotFound` (`404`): indicates that the file does not exist
++ `IO` (`500`): indicates an I/O issue (e.g., missing write permissions)
###### Listing emotes
@@ 276,8 283,9 @@ __Response on success:__
__Possible errors:__
-+ `AccessKeyError`
-+ `ListError`
++ `InvalidAccessKey` (`401`): indicates a missing or wrong access key
+ (configured via `EMOTE_SERVER_ACCESS_KEY`)
++ `IO` (`500`): indicates an I/O issue (e.g., missing write permissions)
###### Getting emotes
@@ 289,8 297,9 @@ __Output on success:__ The requested emote
__Possible errors:__
-+ `AccessKeyError`
-+ `GetError`
++ `InvalidAccessKey` (`401`): indicates a missing or wrong access key
+ (configured via `EMOTE_SERVER_ACCESS_KEY`)
++ `FileNotFound` (`404`): indicates that the file does not exist
###### Getting frozen emotes
@@ 303,9 312,10 @@ __Output on success:__ The requested frozen emote
__Possible errors:__
-+ `AccessKeyError`
-+ `GetError`
-+ `GenerationError`
++ `InvalidAccessKey` (`401`): indicates a missing or wrong access key
+ (configured via `EMOTE_SERVER_ACCESS_KEY`)
++ `FileNotFound` (`404`): indicates that the file does not exist
++ `IO` (`500`): indicates an I/O issue (e.g., missing write permissions)
###### Deleting frozen emotes
@@ 319,15 329,15 @@ __Response on success:__
```json5
{
- "success": true,
- "message": "Delete"
+ "success": true
}
```
__Possible errors:__
-+ `AccessKeyError`
-+ `DeleteError`
++ `InvalidAccessKey` (`401`): indicates a missing or wrong access key
+ (configured via `EMOTE_SERVER_ACCESS_KEY`)
++ `IO` (`500`): indicates an I/O issue (e.g., missing write permissions)
## Maintainer
M index.js => index.js +23 -17
@@ 69,7 69,7 @@ service.get('/', async (req, res) => {
} catch {
return res.send({
success: false,
- error: 'AccessKeyError'
+ error: 'InvalidAccessKey'
}, 401)
}
}
@@ 92,7 92,7 @@ service.get('/emotes', async (req, res) => {
} catch {
return res.send({
success: false,
- error: 'AccessKeyError'
+ error: 'InvalidAccessKey'
}, 401)
}
}
@@ 103,7 103,7 @@ service.get('/emotes', async (req, res) => {
success: listResponse.success,
[listResponse.success ? 'emotes' : 'error']: listResponse.success
? listResponse.emotes
- : listResponse.message
+ : listResponse.error
}, listResponse.code)
})
@@ 117,15 117,15 @@ service.post('/emotes', async (req, res) => {
} catch {
return res.send({
success: false,
- error: 'AccessKeyError'
+ error: 'InvalidAccessKey'
}, 401)
}
}
- if (!req.files && req.files.emote) {
+ if (!req.files?.emote) {
return res.send({
success: false,
- error: 'AddError'
+ error: 'MissingFile'
}, 400)
}
@@ 133,7 133,7 @@ service.post('/emotes', async (req, res) => {
res.send({
success: addResponse.success,
- [addResponse.success ? 'message' : 'error']: addResponse.message
+ ...(addResponse.success ? {} : { error: addResponse.error })
}, addResponse.code)
})
@@ 147,13 147,16 @@ service.get('/emotes/:emote', async (req, res) => {
} catch {
return res.send({
success: false,
- error: 'AccessKeyError'
+ error: 'InvalidAccessKey'
}, 401)
}
}
send(req, `${config.emotesPath}/${req.params.emote}`)
- .on('error', () => res.send({ success: false, error: 'GetError' }, 404))
+ .on(
+ 'error',
+ () => res.send({ success: false, error: 'FileNotFound' }, 404)
+ )
.pipe(res)
})
@@ 167,7 170,7 @@ service.delete('/emotes/:emote', async (req, res) => {
} catch {
return res.send({
success: false,
- error: 'AccessKeyError'
+ error: 'InvalidAccessKey'
}, 401)
}
}
@@ 176,7 179,7 @@ service.delete('/emotes/:emote', async (req, res) => {
res.send({
success: deleteResponse.success,
- [deleteResponse.success ? 'message' : 'error']: deleteResponse.message
+ ...(deleteResponse.success ? {} : { error: deleteResponse.error })
}, deleteResponse.code)
})
@@ 190,7 193,7 @@ service.get('/frozen-emotes/:emote', async (req, res) => {
} catch {
return res.send({
success: false,
- error: 'AccessKeyError'
+ error: 'InvalidAccessKey'
}, 401)
}
}
@@ 198,19 201,22 @@ service.get('/frozen-emotes/:emote', async (req, res) => {
if (!await emotes.isAnimatedEmote(req.params.emote)) {
return res.send({
success: false,
- error: 'GetError'
+ error: 'FileNotFound'
}, 404)
}
if (!await emotes.ensureFrozenEmoteExists(req.params.emote)) {
return res.send({
success: false,
- error: 'GenerationError'
+ error: 'IO'
}, 500)
}
send(req, `${config.frozenEmotesPath}/${req.params.emote}.png`)
- .on('error', () => res.send({ success: false, error: 'GetError' }, 404))
+ .on(
+ 'error',
+ () => res.send({ success: false, error: 'FileNotFound' }, 404)
+ )
.pipe(res)
})
@@ 224,7 230,7 @@ service.delete('/frozen-emotes', async (req, res) => {
} catch {
return res.send({
success: false,
- error: 'AccessKeyError'
+ error: 'InvalidAccessKey'
}, 401)
}
}
@@ 233,7 239,7 @@ service.delete('/frozen-emotes', async (req, res) => {
res.send({
success: deleteResponse.success,
- [deleteResponse.success ? 'message' : 'error']: deleteResponse.message
+ ...(deleteResponse.success ? {} : { error: deleteResponse.error })
}, deleteResponse.code)
})
M package.json => package.json +5 -5
@@ 1,6 1,6 @@
{
"name": "emote-server",
- "version": "1.3.1",
+ "version": "1.4.0",
"description": "A simple application to list and serve emotes",
"author": "Michael Serajnik <m@mser.at>",
"license": "AGPL-3.0-or-later",
@@ 27,16 27,16 @@
"dotenv": "^10.0.0",
"express-fileupload": "^1.2.1",
"fast-glob": "^3.2.7",
- "file-type": "^16.5.1",
+ "file-type": "^16.5.3",
"gif-frames": "^1.0.1",
- "joi": "^17.4.1",
+ "joi": "^17.4.2",
"restana": "^4.9.1",
"send": "^0.17.1"
},
"devDependencies": {
- "eslint": "^7.30.0",
+ "eslint": "^7.32.0",
"eslint-config-standard": "^16.0.3",
- "eslint-plugin-import": "^2.23.4",
+ "eslint-plugin-import": "^2.24.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.1.0"
}
M src/config/index.js => src/config/index.js +2 -2
@@ 13,8 13,8 @@ if (frozenEmotesPath.startsWith('.')) {
}
module.exports = {
- version: '1.3.1',
- apiVersion: 2,
+ version: '1.4.0',
+ apiVersion: 4,
publicUrl: process.env.EMOTE_SERVER_PUBLIC_URL || 'http://localhost',
port: process.env.EMOTE_SERVER_PORT || 8000,
numberOfWorkers:
M src/util/emotes.js => src/util/emotes.js +32 -30
@@ 23,7 23,7 @@ module.exports = {
} catch {
return {
success: false,
- message: 'ListError',
+ error: 'IO',
code: 500
}
}
@@ 49,7 49,7 @@ module.exports = {
)) {
return {
success: false,
- message: 'AddError',
+ error: 'UnsupportedFileExtension',
code: 400
}
}
@@ 58,38 58,45 @@ module.exports = {
if (Buffer.byteLength(file.data) > config.fileSizeLimit) {
return {
success: false,
- message: 'FileSizeError',
+ error: 'FileSizeLimitExceeded',
code: 400
}
}
}
+ const filePath = `${config.emotesPath}/${file.name}`
+
+ if (await this.exists(filePath)) {
+ return {
+ success: false,
+ error: 'FileExists',
+ code: 403
+ }
+ }
+
try {
- await fsp.writeFile(`${config.emotesPath}/${file.name}`, file.data)
+ await fsp.writeFile(filePath, file.data)
} catch {
return {
success: false,
- message: 'AddError',
+ error: 'IO',
code: 500
}
}
return {
success: true,
- message: 'Add',
code: 200
}
},
async delete (fileName) {
const filePath = `${config.emotesPath}/${fileName}`
- try {
- await fsp.access(filePath, fs.constants.F_OK)
- } catch {
+ if (!await this.exists(filePath)) {
return {
success: false,
- message: 'DeleteError',
- code: 500
+ error: 'FileNotFound',
+ code: 404
}
}
@@ 100,7 107,7 @@ module.exports = {
} catch {
return {
success: false,
- message: 'DeleteError',
+ error: 'IO',
code: 500
}
}
@@ 108,20 115,19 @@ module.exports = {
if (isAnimatedEmote) {
const frozenFilePath = `${config.frozenEmotesPath}/${fileName}.png`
- if (await this.frozenEmoteExists(fileName)) {
+ if (await this.exists(frozenFilePath)) {
try {
await fsp.unlink(frozenFilePath)
} catch {
return {
success: false,
- message: 'DeleteError',
+ error: 'IO',
code: 500
}
}
return {
success: true,
- message: 'Delete',
code: 200
}
}
@@ 129,7 135,6 @@ module.exports = {
return {
success: true,
- message: 'Delete',
code: 200
}
},
@@ 142,7 147,7 @@ module.exports = {
} catch {
return {
success: false,
- message: 'DeleteError',
+ error: 'IO',
code: 500
}
}
@@ 150,10 155,18 @@ module.exports = {
return {
success: true,
- message: 'Delete',
code: 200
}
},
+ async exists (filePath) {
+ try {
+ await fsp.access(filePath, fs.constants.F_OK)
+ } catch {
+ return false
+ }
+
+ return true
+ },
async getMimeType (filePath) {
await fsp.access(filePath, fs.constants.F_OK)
const fileType = await FileType.fromFile(filePath)
@@ 175,22 188,11 @@ module.exports = {
return true
},
- async frozenEmoteExists (fileName) {
- const frozenFilePath = `${config.frozenEmotesPath}/${fileName}.png`
-
- try {
- await fsp.access(frozenFilePath, fs.constants.F_OK)
- } catch {
- return false
- }
-
- return true
- },
async ensureFrozenEmoteExists (fileName) {
const filePath = `${config.emotesPath}/${fileName}`
const frozenFilePath = `${config.frozenEmotesPath}/${fileName}.png`
- if (await this.frozenEmoteExists(fileName)) {
+ if (await this.exists(frozenFilePath)) {
return true
}
M yarn.lock => yarn.lock +144 -108
@@ 18,9 18,9 @@
"@babel/highlight" "^7.10.4"
"@babel/helper-validator-identifier@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8"
- integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==
+ version "7.14.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48"
+ integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==
"@babel/highlight@^7.10.4":
version "7.14.5"
@@ 31,10 31,10 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@eslint/eslintrc@^0.4.2":
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179"
- integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==
+"@eslint/eslintrc@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
+ integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
@@ 110,10 110,10 @@
resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
-"@tokenizer/token@^0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3"
- integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==
+"@tokenizer/token@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
+ integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==
acorn-jsx@^5.3.1:
version "5.3.2"
@@ 321,9 321,9 @@ chalk@^2.0.0:
supports-color "^5.3.0"
chalk@^4.0.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
- integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
@@ 536,9 536,9 @@ error-ex@^1.3.1:
is-arrayish "^0.2.1"
es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2:
- version "1.18.3"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0"
- integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==
+ version "1.18.5"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.5.tgz#9b10de7d4c206a3581fd5b2124233e04db49ae19"
+ integrity sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==
dependencies:
call-bind "^1.0.2"
es-to-primitive "^1.2.1"
@@ 546,11 546,12 @@ es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2:
get-intrinsic "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.2"
+ internal-slot "^1.0.3"
is-callable "^1.2.3"
is-negative-zero "^2.0.1"
is-regex "^1.1.3"
is-string "^1.0.6"
- object-inspect "^1.10.3"
+ object-inspect "^1.11.0"
object-keys "^1.1.1"
object.assign "^4.1.2"
string.prototype.trimend "^1.0.4"
@@ 586,18 587,18 @@ eslint-config-standard@^16.0.3:
resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516"
integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==
-eslint-import-resolver-node@^0.3.4:
- version "0.3.4"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
- integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
+eslint-import-resolver-node@^0.3.5:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.5.tgz#939bbb0f74e179e757ca87f7a4a890dabed18ac4"
+ integrity sha512-XMoPKjSpXbkeJ7ZZ9icLnJMTY5Mc1kZbCakHquaFsXPpyWOwK0TK6CODO+0ca54UoM9LKOxyUNnoVZRl8TeaAg==
dependencies:
- debug "^2.6.9"
- resolve "^1.13.1"
+ debug "^3.2.7"
+ resolve "^1.20.0"
-eslint-module-utils@^2.6.1:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233"
- integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==
+eslint-module-utils@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz#94e5540dd15fe1522e8ffa3ec8db3b7fa7e7a534"
+ integrity sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==
dependencies:
debug "^3.2.7"
pkg-dir "^2.0.0"
@@ 610,17 611,17 @@ eslint-plugin-es@^3.0.0:
eslint-utils "^2.0.0"
regexpp "^3.0.0"
-eslint-plugin-import@^2.23.4:
- version "2.23.4"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97"
- integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==
+eslint-plugin-import@^2.24.0:
+ version "2.24.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.24.0.tgz#697ffd263e24da5e84e03b282f5fb62251777177"
+ integrity sha512-Kc6xqT9hiYi2cgybOc0I2vC9OgAYga5o/rAFinam/yF/t5uBqxQbauNPMC6fgb640T/89P0gFoO27FOilJ/Cqg==
dependencies:
array-includes "^3.1.3"
array.prototype.flat "^1.2.4"
debug "^2.6.9"
doctrine "^2.1.0"
- eslint-import-resolver-node "^0.3.4"
- eslint-module-utils "^2.6.1"
+ eslint-import-resolver-node "^0.3.5"
+ eslint-module-utils "^2.6.2"
find-up "^2.0.0"
has "^1.0.3"
is-core-module "^2.4.0"
@@ 673,13 674,13 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
-eslint@^7.30.0:
- version "7.30.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.30.0.tgz#6d34ab51aaa56112fd97166226c9a97f505474f8"
- integrity sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==
+eslint@^7.32.0:
+ version "7.32.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
+ integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
dependencies:
"@babel/code-frame" "7.12.11"
- "@eslint/eslintrc" "^0.4.2"
+ "@eslint/eslintrc" "^0.4.3"
"@humanwhocodes/config-array" "^0.5.0"
ajv "^6.10.0"
chalk "^4.0.0"
@@ 834,14 835,14 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
-file-type@^16.5.1:
- version "16.5.1"
- resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.1.tgz#dd697dc5c3a2f4db63af746f38a6322e5e7bc6a5"
- integrity sha512-Pi1G43smrCy82Q3be3sfKaeS5uHdfj905dP88YqhroG6TYbVY2ljTdDXeXqa6Cn5nOk6znOjWM2uZptA8vH/qQ==
+file-type@^16.5.3:
+ version "16.5.3"
+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06"
+ integrity sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==
dependencies:
readable-web-to-node-stream "^3.0.0"
- strtok3 "^6.0.3"
- token-types "^2.0.0"
+ strtok3 "^6.2.4"
+ token-types "^4.1.1"
fill-range@^7.0.1:
version "7.0.1"
@@ 866,9 867,9 @@ flat-cache@^3.0.4:
rimraf "^3.0.2"
flatted@^3.1.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.1.tgz#bbef080d95fca6709362c73044a1634f7c6e7d05"
- integrity sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561"
+ integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==
forever-agent@~0.6.1:
version "0.6.1"
@@ 904,7 905,7 @@ functional-red-black-tree@^1.0.1:
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-get-intrinsic@^1.0.2, get-intrinsic@^1.1.1:
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
@@ 973,16 974,16 @@ glob@^7.1.3:
path-is-absolute "^1.0.0"
globals@^13.6.0, globals@^13.9.0:
- version "13.10.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.10.0.tgz#60ba56c3ac2ca845cfbf4faeca727ad9dd204676"
- integrity sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==
+ version "13.11.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7"
+ integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==
dependencies:
type-fest "^0.20.2"
graceful-fs@^4.1.2:
- version "4.2.6"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
- integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
+ integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
har-schema@^2.0.0:
version "2.0.0"
@@ 1017,6 1018,13 @@ has-symbols@^1.0.1, has-symbols@^1.0.2:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
+has-tostringtag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+ dependencies:
+ has-symbols "^1.0.2"
+
has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ 1113,6 1121,15 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+internal-slot@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
+ integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
+ dependencies:
+ get-intrinsic "^1.1.0"
+ has "^1.0.3"
+ side-channel "^1.0.4"
+
iota-array@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087"
@@ 1124,16 1141,19 @@ is-arrayish@^0.2.1:
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
is-bigint@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a"
- integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
is-boolean-object@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8"
- integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
dependencies:
call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
is-buffer@^1.0.2:
version "1.1.6"
@@ 1141,9 1161,9 @@ is-buffer@^1.0.2:
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
is-callable@^1.1.4, is-callable@^1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
- integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
+ integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
is-core-module@^2.2.0, is-core-module@^2.4.0:
version "2.5.0"
@@ 1153,9 1173,11 @@ is-core-module@^2.2.0, is-core-module@^2.4.0:
has "^1.0.3"
is-date-object@^1.0.1:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5"
- integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
is-extglob@^2.1.1:
version "2.1.1"
@@ 1180,9 1202,11 @@ is-negative-zero@^2.0.1:
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
is-number-object@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb"
- integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
+ integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==
+ dependencies:
+ has-tostringtag "^1.0.0"
is-number@^7.0.0:
version "7.0.0"
@@ 1190,17 1214,19 @@ is-number@^7.0.0:
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-regex@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f"
- integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
dependencies:
call-bind "^1.0.2"
- has-symbols "^1.0.2"
+ has-tostringtag "^1.0.0"
is-string@^1.0.5, is-string@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f"
- integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
is-symbol@^1.0.2, is-symbol@^1.0.3:
version "1.0.4"
@@ 1229,10 1255,10 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-joi@^17.4.1:
- version "17.4.1"
- resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.1.tgz#15d2f23c8cbe4d1baded2dd190c58f8dbe11cca0"
- integrity sha512-gDPOwQ5sr+BUxXuPDGrC1pSNcVR/yGGcTI0aCnjYxZEa3za60K/iCQ+OFIkEHWZGVCUcUlXlFKvMmrlmxrG6UQ==
+joi@^17.4.2:
+ version "17.4.2"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7"
+ integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==
dependencies:
"@hapi/hoek" "^9.0.0"
"@hapi/topo" "^5.0.0"
@@ 1376,17 1402,17 @@ micromatch@^4.0.4:
braces "^3.0.1"
picomatch "^2.2.3"
-mime-db@1.48.0:
- version "1.48.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d"
- integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==
+mime-db@1.49.0:
+ version "1.49.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
+ integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
mime-types@^2.0.1, mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
- version "2.1.31"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b"
- integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==
+ version "2.1.32"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
+ integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
dependencies:
- mime-db "1.48.0"
+ mime-db "1.49.0"
mime@1.6.0:
version "1.6.0"
@@ 1478,7 1504,7 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-object-inspect@^1.10.3:
+object-inspect@^1.11.0, object-inspect@^1.9.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
@@ 1606,10 1632,10 @@ path-type@^3.0.0:
dependencies:
pify "^3.0.0"
-peek-readable@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.0.0.tgz#b024ef391c86136eba0ae9df3ff4f966a09e9a7e"
- integrity sha512-kLbU4cz6h86poGVBKgAVMpFmD47nX04fPPQNKnv9fuj+IJZYkEBjsYAVu5nDbZWx0ZsWwWlMzeG90zQa5KLBaA==
+peek-readable@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202"
+ integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ==
performance-now@^2.1.0:
version "2.1.0"
@@ 1804,7 1830,7 @@ resolve-from@^4.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-resolve@^1.10.0, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.20.0:
+resolve@^1.10.0, resolve@^1.10.1, resolve@^1.20.0:
version "1.20.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
@@ 1914,6 1940,15 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
slice-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
@@ 1945,9 1980,9 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f"
- integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b"
+ integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==
sprintf-js@~1.0.2:
version "1.0.3"
@@ 2033,12 2068,13 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-strtok3@^6.0.3:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.2.0.tgz#7c24e74a9a24c7f2b976e4469654d459e6795d91"
- integrity sha512-hBbPN4+f9fypbfTs0NImALgzYcb6k/blFr2mJVX6bUOmJCbXe/trDHdIC+Ir5XUXRMGFvq487ecwLitDoHVoew==
+strtok3@^6.2.4:
+ version "6.2.4"
+ resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81"
+ integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==
dependencies:
- peek-readable "^4.0.0"
+ "@tokenizer/token" "^0.3.0"
+ peek-readable "^4.0.1"
supports-color@^5.3.0:
version "5.5.0"
@@ 2088,12 2124,12 @@ toidentifier@1.0.0:
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
-token-types@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/token-types/-/token-types-2.1.1.tgz#bd585d64902aaf720b8979d257b4b850b4d45c45"
- integrity sha512-wnQcqlreS6VjthyHO3Y/kpK/emflxDBNhlNUPfh7wE39KnuDdOituXomIbyI79vBtF0Ninpkh72mcuRHo+RG3Q==
+token-types@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a"
+ integrity sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==
dependencies:
- "@tokenizer/token" "^0.1.1"
+ "@tokenizer/token" "^0.3.0"
ieee754 "^1.2.1"
tough-cookie@~2.5.0: