├── .circleci
└── config.yml
├── .env.example
├── .gitignore
├── .snyk
├── .whitesource
├── README.md
├── app.mjs
├── bin
└── printSchema.mjs
├── data
├── client_credentials.js
├── resolvers.mjs
└── schema.mjs
├── package.json
├── public
├── index.html
└── stylesheets
│ └── style.sass
├── renovate.json
├── serverInit.mjs
├── test
└── schemaTest.mjs
└── yarn.lock
/.circleci/config.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | jobs:
3 | build:
4 | docker:
5 | - image: circleci/node:17.2.0@sha256:b2330f71df36d859dd822767ed7799bf67ea0a82efa451df6f121f52f7bd337d
6 | steps:
7 | - checkout
8 | - run:
9 | name: install-npm
10 | command: npm install
11 | - save_cache:
12 | key: dependency-cache-{{ checksum "package.json" }}
13 | paths:
14 | - ./node_modules
15 | - run:
16 | name: test
17 | command: npm test
18 | - store_artifacts:
19 | path: test-results.xml
20 | prefix: tests
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
1 | # please rename this to .env
2 | # and enter a correct client id and secret, which you can get there.
3 | #
4 | # https://developer.spotify.com/my-applications/#!/applications
5 | #
6 | # no special redirect_url is needed, but you can add
7 | #
8 | # http://localhost:4000/
9 | #
10 | #
11 | # These valued wont work :-)
12 | CLIENT_ID=12345678901234567890
13 | CLIENT_SECRET=abcdefghijklmnopqrstuvw1234567
14 |
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | npm-debug.log*
2 |
3 | # Coverage directory used by tools like istanbul
4 | coverage
5 |
6 | # Dependency directories
7 | node_modules
8 |
9 | # Optional npm cache directory
10 | .npm
11 |
12 | # Optional REPL history
13 | .node_repl_history
14 |
15 | # generated from sass
16 | public/stylesheets/style.css.map
17 | public/stylesheets/style.css
--------------------------------------------------------------------------------
/.snyk:
--------------------------------------------------------------------------------
1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
2 | version: v1.22.1
3 | ignore: {}
4 | # patches apply the minimum changes required to fix a vulnerability
5 | patch:
6 | 'npm:extend:20180424':
7 | - node-sass-middleware > node-sass > request > extend:
8 | patched: '2021-10-06T19:24:56.427Z'
9 | - node-sass-middleware > node-sass > node-gyp > request > extend:
10 | patched: '2021-10-06T19:24:56.427Z'
11 | 'npm:hoek:20180212':
12 | - node-sass-middleware > node-sass > node-gyp > request > hawk > hoek:
13 | patched: '2021-10-06T19:24:56.427Z'
14 | - node-sass-middleware > node-sass > node-gyp > request > hawk > boom > hoek:
15 | patched: '2021-10-06T19:24:56.427Z'
16 | - node-sass-middleware > node-sass > node-gyp > request > hawk > sntp > hoek:
17 | patched: '2021-10-06T19:24:56.427Z'
18 | - node-sass-middleware > node-sass > node-gyp > request > hawk > cryptiles > boom > hoek:
19 | patched: '2021-10-06T19:24:56.427Z'
20 | - node-sass-middleware > node-sass > request > hawk > hoek:
21 | patched: '2021-10-06T19:24:56.427Z'
22 | - node-sass-middleware > node-sass > request > hawk > boom > hoek:
23 | patched: '2021-10-06T19:24:56.427Z'
24 | - node-sass-middleware > node-sass > request > hawk > sntp > hoek:
25 | patched: '2021-10-06T19:24:56.427Z'
26 | - node-sass-middleware > node-sass > request > hawk > cryptiles > boom > hoek:
27 | patched: '2021-10-06T19:24:56.427Z'
28 | 'npm:stringstream:20180511':
29 | - node-sass-middleware > node-sass > request > stringstream:
30 | patched: '2021-10-06T19:24:56.427Z'
31 | - node-sass-middleware > node-sass > node-gyp > request > stringstream:
32 | patched: '2021-10-06T19:24:56.427Z'
33 | 'npm:tunnel-agent:20170305':
34 | - node-sass-middleware > node-sass > request > tunnel-agent:
35 | patched: '2021-10-06T19:24:56.427Z'
36 |
--------------------------------------------------------------------------------
/.whitesource:
--------------------------------------------------------------------------------
1 | {
2 | "scanSettings": {
3 | "configMode": "AUTO",
4 | "configExternalURL": "",
5 | "projectToken" : ""
6 | },
7 | "checkRunSettings": {
8 | "vulnerableCheckRunConclusionLevel": "failure"
9 | },
10 | "issueSettings": {
11 | "minSeverityLevel": "LOW"
12 | }
13 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # spotify-graphql-server
2 |
3 | This demonstrates how to build a GraphQL server which fetches data from an external API (Spotify),
4 | see [german blog post](https://blog.codecentric.de/2017/09/graphql-mit-spotify-teil-1-server) or
5 | [english blog post](https://blog.codecentric.de/en/2017/01/lets-build-spotify-graphql-server)
6 |
7 | ~Use the [Live Demo] as a playground for graphql queries.~
8 |
9 | ## Get started
10 |
11 | ### prerequisites
12 |
13 | For running this example locally, you must
14 | [register your own application at spotify](https://developer.spotify.com/documentation/general/guides/authorization/app-settings/).
15 | Then create an [.env](./.env) file with the generated token, based on the example [.env.example](./.env.example) file.
16 |
17 | Have a modern `node.js` version ( >=14 ) installed.
18 |
19 | Run `yarn install`.
20 |
21 | ### run server
22 |
23 | `yarn start` to start the graphql server, then open http://localhost:4000/
24 |
25 | `yarn watch` to start the graphql server which automatically restarts when any sources were changed (driven by `nodemon`)
26 |
27 | ### run tests
28 |
29 | `yarn test`
30 |
31 | ### print GraphQL schema idl
32 |
33 | `yarn run printSchema`
34 |
--------------------------------------------------------------------------------
/app.mjs:
--------------------------------------------------------------------------------
1 | import express from "express";
2 | import path from "path";
3 | import logger from "morgan";
4 | import cookieParser from "cookie-parser";
5 | import bodyParser from "body-parser";
6 | import cors from "cors";
7 |
8 | import { graphqlHTTP } from "express-graphql";
9 |
10 | import {schema} from "./data/schema.mjs";
11 | import { fetchArtistsByName } from "./data/resolvers.mjs";
12 |
13 | const app = express();
14 |
15 | app.use(logger('dev'));
16 | app.use(bodyParser.json());
17 | app.use(bodyParser.urlencoded({ extended: false }));
18 | app.use(cookieParser());
19 | app.use(express.static(path.join('.', 'public')));
20 |
21 | const rootValue = {
22 | hi: () => 'Hello world!',
23 | queryArtists: ({ byName }) => fetchArtistsByName(byName)
24 | };
25 |
26 | // API middleware
27 |
28 | app.use('/graphql', cors(), graphqlHTTP(req => ({
29 | schema,
30 | graphiql: true,
31 | rootValue,
32 | pretty: process.env.NODE_ENV !== 'production',
33 | })));
34 |
35 | // catch 404 and forward to error handler
36 | app.use(function(req, res, next) {
37 | const err = new Error('Not Found');
38 | err.status = 404;
39 | next(err);
40 | });
41 |
42 | // error handlers
43 |
44 | // development error handler
45 | // will print stacktrace
46 | if (app.get('env') === 'development') {
47 | app.use(function (err, req, res, next) {
48 | console.log(err)
49 | res.status(err.status || 500);
50 | res.send(`Sorry, there was this error: ` + `
51 |
${err.message}
52 | ${err.status}
53 | ${err.stack}
54 | `);
55 |
56 | });
57 | }
58 |
59 | // production error handler
60 | // no stack-traces leaked to user
61 | app.use(function (err, req, res, next) {
62 | res.status(err.status || 500);
63 | res.send(`Sorry, there was this error: ` + `
64 | ${err.message}
65 | ${err.status}
66 | ${err.stack}
67 | `);
68 | });
69 |
70 | export default app;
71 |
--------------------------------------------------------------------------------
/bin/printSchema.mjs:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | import { printSchema } from "graphql";
4 |
5 | import { schema } from "../data/schema.mjs";
6 |
7 | console.log(printSchema(schema));
8 |
--------------------------------------------------------------------------------
/data/client_credentials.js:
--------------------------------------------------------------------------------
1 | /**
2 | * For more information, read
3 | * https://developer.spotify.com/web-api/authorization-guide/#client_credentials_flow
4 | *
5 | * #authenticate() creates Promise for fetching a new authentication token with a `expire in ... ` information
6 | * which will be stored and used in the `isExpired()` check.
7 | *
8 | * Note: if `authenticate()` was not resolved yet, so there was no expire-information yet, the isExpired() will always
9 | * return `false`
10 | */
11 |
12 | import fetch from "node-fetch";
13 |
14 | import { config } from "dotenv";
15 |
16 | config();
17 | // load secrets from .env file and store in process.env
18 |
19 | const {
20 | CLIENT_ID = 'invalid',
21 | CLIENT_SECRET = 'invalid'
22 | } = process.env;
23 |
24 | const authorizationHeader = () => 'Basic ' + (new Buffer(CLIENT_ID + ':' + CLIENT_SECRET).toString('base64'));
25 |
26 | const authOptions = {
27 | url: 'https://accounts.spotify.com/api/token',
28 | };
29 |
30 | //
31 | let expireTime = 0;
32 |
33 | export default {
34 | isExpired: () => {
35 | if(expireTime) {
36 | return Date.now() > expireTime;
37 | }
38 | return false;
39 | },
40 | authenticate: () => {
41 | const options = {
42 | headers: {
43 | 'Content-Type': 'application/x-www-form-urlencoded',
44 | 'Accept': 'application/json',
45 | 'Authorization': authorizationHeader()
46 | },
47 | method: 'POST',
48 | body: 'grant_type=client_credentials'
49 | };
50 |
51 | return fetch(authOptions.url, options)
52 | .then((response) => {
53 | return response.json();
54 | })
55 | .then(token => {
56 | const time = Date.now();
57 | const expires_in = Number.parseInt(token.expires_in, 10);
58 |
59 | expireTime = time + expires_in * 1000; //
60 |
61 | return token;
62 | });
63 | }
64 | };
65 |
--------------------------------------------------------------------------------
/data/resolvers.mjs:
--------------------------------------------------------------------------------
1 | import fetch from "node-fetch";
2 |
3 | import client_credentials from "./client_credentials.js";
4 |
5 | function errorMsg (error) {
6 | if (error) {
7 | const { status = '', message = 'no details' } = error;
8 | return `Error: ${status}: ${message}`;
9 | }
10 | return 'An unknown error!'
11 | }
12 |
13 | function throwExceptionOnError (data) {
14 | if (data.error) {
15 | throw new Error(errorMsg(data.error));
16 | }
17 | }
18 |
19 | const headers = {
20 | 'Accept': 'application/json',
21 | 'Authorization': ''
22 | };
23 | let awaitingAuthorization;
24 |
25 | // const spotifyProxy = async () => {
26 | const spotifyProxy = () => {
27 | if (awaitingAuthorization && !client_credentials.isExpired()) {
28 | // use existing promise, if not expired
29 | return awaitingAuthorization;
30 | }
31 | if (!awaitingAuthorization || client_credentials.isExpired()) {
32 | awaitingAuthorization = new Promise((resolve, reject) => {
33 | client_credentials.authenticate()
34 | .then((token) => {
35 | headers.Authorization = 'Bearer ' + token.access_token;
36 | resolve(headers);
37 | })
38 | .catch((err) => {
39 | reject(err);
40 | });
41 | });
42 | }
43 | return awaitingAuthorization;
44 | };
45 |
46 | const haveHeadersWithAuthToken = async () => {
47 | return await spotifyProxy()
48 | };
49 |
50 |
51 | export const fetchArtistsByName = async (name) => {
52 | console.log(`debug: query artist ${name} `);
53 |
54 | const response = await fetch(`https://api.spotify.com/v1/search?q=${name}&type=artist`, {
55 | headers: await haveHeadersWithAuthToken()
56 | });
57 | const data = await response.json();
58 | throwExceptionOnError(data);
59 |
60 | return (data.artists.items || [])
61 | .map(artistRaw => spotifyJsonToArtist(artistRaw));
62 | };
63 |
64 | export const fetchAlbumsOfArtist = async (artistId) => {
65 | console.log(`debug: query albums of artist ${artistId} `);
66 |
67 | const response = await fetch(`https://api.spotify.com/v1/artists/${artistId}/albums`, {
68 | headers: await haveHeadersWithAuthToken()
69 | });
70 | const data = await response.json();
71 | throwExceptionOnError(data);
72 |
73 | return (data.items || [])
74 | .map(albumRaw => spotifyJsonToAlbum(albumRaw));
75 | };
76 |
77 | const spotifyJsonToArtist = async (raw) => {
78 | return {
79 | // fills with raw data (by ES6 spread operator):
80 | ...raw,
81 |
82 | // This needs extra logic: defaults to an empty string, if there is no image
83 | // else: just takes URL of the first image
84 | image: raw.images[0] ? raw.images[0].url : '',
85 |
86 | // .. needs to fetch the artist's albums:
87 | albums: (args) => {
88 | // this is similar to fetchArtistsByName()
89 | // returns a Promise which gets resolved asynchronously !
90 | const artistId = raw.id;
91 | const { limit=1 } = args;
92 | return fetchAlbumsOfArtist(artistId, limit);
93 | }
94 | };
95 | };
96 |
97 | const spotifyJsonToAlbum = (albumRaw) => {
98 | return {
99 | // fills with raw data (by ES6 spread operator):
100 | ...albumRaw,
101 |
102 | // This needs extra logic: defaults to an empty string, if there is no image
103 | // else: just takes URL of the first image
104 | image: albumRaw.images[0] ? albumRaw.images[0].url : '',
105 |
106 | tracks: [] // TODO implement fetching of tracks of album
107 | };
108 | };
109 |
--------------------------------------------------------------------------------
/data/schema.mjs:
--------------------------------------------------------------------------------
1 | import { buildSchema } from "graphql";
2 |
3 | export const schema = buildSchema(`
4 | # The root of all queries:
5 |
6 | type Query {
7 | # Just returns "Hello world!"
8 | hi(message: String = "Hi"): String
9 | queryArtists(byName: String = "Red Hot Chili Peppers"): [Artist]
10 | }
11 | type Artist {
12 | name: String!
13 | id: ID
14 | image: String
15 | albums(limit: Int = 10): [Album]
16 | }
17 | type Album {
18 | name: String
19 | id: ID
20 | image: String
21 | tracks: [Track]
22 | }
23 | type Track {
24 | name: String!
25 | artists: [Artist]
26 | preview_url: String
27 | id: ID
28 | }
29 | `);
30 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "spot-graphql-server",
3 | "version": "0.3.0",
4 | "private": true,
5 | "type": "module",
6 | "engines": {
7 | "yarn": "1",
8 | "npm": "11",
9 | "node": ">=16.x"
10 | },
11 | "scripts": {
12 | "test": "npm run simpletest",
13 | "build": "sass public/stylesheets/style.sass:public/stylesheets/style.css",
14 | "simpletest": "node ./test/schemaTest.mjs",
15 | "printSchema": "node ./bin/printSchema.mjs",
16 | "watch": "npm run build ; nodemon serverInit.mjs",
17 | "start": "npm run build ; node serverInit.mjs",
18 | "prepare": "yarn run snyk-protect",
19 | "snyk-protect": "snyk-protect"
20 | },
21 | "dependencies": {
22 | "@graphql-tools/mock": "9.0.23",
23 | "@snyk/protect": "1.1297.1",
24 | "body-parser": "2.2.0",
25 | "cookie-parser": "1.4.7",
26 | "cors": "2.8.5",
27 | "debug": "4.4.1",
28 | "dotenv": "16.5.0",
29 | "express": "5.1.0",
30 | "express-graphql": "0.12.0",
31 | "graphql": "16.11.0",
32 | "morgan": "1.10.0",
33 | "node-fetch": "3.3.2",
34 | "sass": "1.89.0"
35 | },
36 | "devDependencies": {
37 | "nodemon": "3.1.10"
38 | },
39 | "snyk": true
40 | }
41 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Spotify Graphql Server
5 |
6 |
13 |
14 |
15 |
Spotify Graphql Server
16 |
17 | by @lowsky@mastodontech.de
19 |
20 | Try these predefined queries in GraphiQL playground:
21 |
22 | Start a query for
23 |
24 | artists with a name containing Red Hot Chili
25 |
26 |
27 | artists with a name containing Red Hot Chili
28 | and their albums and its tracks.
29 |
30 |
31 | in the GraphiQL playground.
32 |
33 | Or open an empty GraphiQL playground.
34 |
35 |
38 |
39 | Please do not mind, that there is a "natural" limit set by Spotify, so the query results may be "incomplete".
40 |
41 |
42 |
43 | Find (old) details in the English or
44 | German blog post and find the sources on
45 | GitHub
46 |
47 |
48 |
--------------------------------------------------------------------------------
/public/stylesheets/style.sass:
--------------------------------------------------------------------------------
1 | body
2 | padding: 2em 1em
3 | margin: 0 auto
4 | max-width: 48em
5 |
6 | color: #555
7 |
8 | font: 14px "Roboto", Helvetica, Arial, sans-serif
9 | -webkit-font-smoothing: antialiased
10 | -moz-osx-font-smoothing: grayscale
11 |
12 | @import 'https://fonts.googleapis.com/css?family=Roboto:300,400,500'
13 |
14 | h1, h2, h3, strong
15 | color: #222
16 | margin-top: 2em
17 | padding-top: 1em
18 |
19 | h3
20 | margin-top: 1em
21 |
22 | a
23 | color: #00B7FF
24 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/serverInit.mjs:
--------------------------------------------------------------------------------
1 | /**
2 | * Module dependencies.
3 | */
4 | import dotenv from "dotenv/config";
5 | import debug0 from "debug";
6 |
7 | const debug = debug0('spot-graphql-server:server');
8 |
9 | import app from "./app.mjs";
10 | /**
11 | * Get port from environment and store in Express.
12 | */
13 | const port = process.env.PORT || '4000';
14 | app.set('port', port);
15 |
16 | /**
17 | * Listen on provided port, on all network interfaces.
18 | */
19 | app.on('error', onError);
20 | app.listen(port, () => {
21 | console.log(`listen on http://localhost:${port}`);
22 | });
23 |
24 | /**
25 | * Event listener for HTTP server "error" event.
26 | */
27 |
28 | function onError(error) {
29 | if (error.syscall !== 'listen') {
30 | throw error;
31 | }
32 |
33 | // handle specific listen errors with friendly messages
34 | switch (error.code) {
35 | case 'EACCES':
36 | console.error(`Port $port requires elevated privileges`);
37 | process.exit(1);
38 | break;
39 | case 'EADDRINUSE':
40 | console.error(`Port $port is already in use`);
41 | process.exit(1);
42 | break;
43 | default:
44 | throw error;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/test/schemaTest.mjs:
--------------------------------------------------------------------------------
1 | import { mockServer } from "@graphql-tools/mock";
2 |
3 | import { schema } from "../data/schema.mjs";
4 |
5 | let cnt = 0;
6 |
7 | const simpleMockServer = mockServer(schema, {
8 | String: () => 'loremipsum ' + (cnt++),
9 | Album: () => {
10 | return {
11 | name: () => {return 'Album#1'}
12 | };
13 | }
14 | });
15 |
16 | const result = simpleMockServer.query(`{
17 | queryArtists(byName:"Marilyn Manson") {
18 | name
19 | albums {
20 | name
21 | tracks {
22 | name
23 | artists { name }
24 | }
25 | }
26 | }
27 | }`);
28 |
29 | result.then(data => {
30 | console.log('data: ', JSON.stringify(data, ' ', 1));
31 | }).catch(error => {
32 | console.log('error: ', error);
33 | });
34 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@graphql-tools/merge@^9.0.24":
6 | version "9.0.24"
7 | resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-9.0.24.tgz#1f366e85588894cb496bd1c332be7665db143df2"
8 | integrity sha512-NzWx/Afl/1qHT3Nm1bghGG2l4jub28AdvtG11PoUlmjcIjnFBJMv4vqL0qnxWe8A82peWo4/TkVdjJRLXwgGEw==
9 | dependencies:
10 | "@graphql-tools/utils" "^10.8.6"
11 | tslib "^2.4.0"
12 |
13 | "@graphql-tools/mock@9.0.23":
14 | version "9.0.23"
15 | resolved "https://registry.yarnpkg.com/@graphql-tools/mock/-/mock-9.0.23.tgz#d03f2c35be87084ed497b74c0eecb8d6cc1e137c"
16 | integrity sha512-l6z5OdMAvMybqG/8aIhSJyhyc4/ryEYWY4CmpkH9KbLFe0tLOMCCbBR0+K/ANMzs2ZdGy/9yknDHGvDH46fwZw==
17 | dependencies:
18 | "@graphql-tools/schema" "^10.0.23"
19 | "@graphql-tools/utils" "^10.8.6"
20 | fast-json-stable-stringify "^2.1.0"
21 | tslib "^2.4.0"
22 |
23 | "@graphql-tools/schema@^10.0.23":
24 | version "10.0.23"
25 | resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-10.0.23.tgz#d8865e96f37a04ca43303d7024add7edbe0c5ed4"
26 | integrity sha512-aEGVpd1PCuGEwqTXCStpEkmheTHNdMayiIKH1xDWqYp9i8yKv9FRDgkGrY4RD8TNxnf7iII+6KOBGaJ3ygH95A==
27 | dependencies:
28 | "@graphql-tools/merge" "^9.0.24"
29 | "@graphql-tools/utils" "^10.8.6"
30 | tslib "^2.4.0"
31 |
32 | "@graphql-tools/utils@^10.8.6":
33 | version "10.8.6"
34 | resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.8.6.tgz#69ef29e408a27919108b2b2227fe8b465acf9e5c"
35 | integrity sha512-Alc9Vyg0oOsGhRapfL3xvqh1zV8nKoFUdtLhXX7Ki4nClaIJXckrA86j+uxEuG3ic6j4jlM1nvcWXRn/71AVLQ==
36 | dependencies:
37 | "@graphql-typed-document-node/core" "^3.1.1"
38 | "@whatwg-node/promise-helpers" "^1.0.0"
39 | cross-inspect "1.0.1"
40 | dset "^3.1.4"
41 | tslib "^2.4.0"
42 |
43 | "@graphql-typed-document-node/core@^3.1.1":
44 | version "3.1.1"
45 | resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052"
46 | integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==
47 |
48 | "@parcel/watcher-android-arm64@2.5.0":
49 | version "2.5.0"
50 | resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a"
51 | integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==
52 |
53 | "@parcel/watcher-darwin-arm64@2.5.0":
54 | version "2.5.0"
55 | resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f"
56 | integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==
57 |
58 | "@parcel/watcher-darwin-x64@2.5.0":
59 | version "2.5.0"
60 | resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb"
61 | integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==
62 |
63 | "@parcel/watcher-freebsd-x64@2.5.0":
64 | version "2.5.0"
65 | resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82"
66 | integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==
67 |
68 | "@parcel/watcher-linux-arm-glibc@2.5.0":
69 | version "2.5.0"
70 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42"
71 | integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==
72 |
73 | "@parcel/watcher-linux-arm-musl@2.5.0":
74 | version "2.5.0"
75 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4"
76 | integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==
77 |
78 | "@parcel/watcher-linux-arm64-glibc@2.5.0":
79 | version "2.5.0"
80 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03"
81 | integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==
82 |
83 | "@parcel/watcher-linux-arm64-musl@2.5.0":
84 | version "2.5.0"
85 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732"
86 | integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==
87 |
88 | "@parcel/watcher-linux-x64-glibc@2.5.0":
89 | version "2.5.0"
90 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d"
91 | integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==
92 |
93 | "@parcel/watcher-linux-x64-musl@2.5.0":
94 | version "2.5.0"
95 | resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef"
96 | integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==
97 |
98 | "@parcel/watcher-win32-arm64@2.5.0":
99 | version "2.5.0"
100 | resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154"
101 | integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==
102 |
103 | "@parcel/watcher-win32-ia32@2.5.0":
104 | version "2.5.0"
105 | resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220"
106 | integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==
107 |
108 | "@parcel/watcher-win32-x64@2.5.0":
109 | version "2.5.0"
110 | resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7"
111 | integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==
112 |
113 | "@parcel/watcher@^2.4.1":
114 | version "2.5.0"
115 | resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10"
116 | integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==
117 | dependencies:
118 | detect-libc "^1.0.3"
119 | is-glob "^4.0.3"
120 | micromatch "^4.0.5"
121 | node-addon-api "^7.0.0"
122 | optionalDependencies:
123 | "@parcel/watcher-android-arm64" "2.5.0"
124 | "@parcel/watcher-darwin-arm64" "2.5.0"
125 | "@parcel/watcher-darwin-x64" "2.5.0"
126 | "@parcel/watcher-freebsd-x64" "2.5.0"
127 | "@parcel/watcher-linux-arm-glibc" "2.5.0"
128 | "@parcel/watcher-linux-arm-musl" "2.5.0"
129 | "@parcel/watcher-linux-arm64-glibc" "2.5.0"
130 | "@parcel/watcher-linux-arm64-musl" "2.5.0"
131 | "@parcel/watcher-linux-x64-glibc" "2.5.0"
132 | "@parcel/watcher-linux-x64-musl" "2.5.0"
133 | "@parcel/watcher-win32-arm64" "2.5.0"
134 | "@parcel/watcher-win32-ia32" "2.5.0"
135 | "@parcel/watcher-win32-x64" "2.5.0"
136 |
137 | "@snyk/protect@1.1297.1":
138 | version "1.1297.1"
139 | resolved "https://registry.yarnpkg.com/@snyk/protect/-/protect-1.1297.1.tgz#c9ebb000a62dac19f816d27774b8f4ce3bc41d70"
140 | integrity sha512-utKBpujqA4GzyzBjeUZETaLtq6LDuzc7WA13V0FcZK4UCli6OltOPRk4J1LG1EgU/XELOW6SKJGAFOBWmZpdvQ==
141 |
142 | "@whatwg-node/promise-helpers@^1.0.0":
143 | version "1.2.2"
144 | resolved "https://registry.yarnpkg.com/@whatwg-node/promise-helpers/-/promise-helpers-1.2.2.tgz#9e26073385086975e65609d6c9b27f9d7f92280d"
145 | integrity sha512-aPVTGCs/QEYkSTnYcLKE1wyYZykbGjaXsEwXHc0FKbSlojIpdw72BQMJx9aJXzkCs6qy9WfDV0jhV9C2qIYYOA==
146 | dependencies:
147 | tslib "^2.6.3"
148 |
149 | abbrev@1:
150 | version "1.1.1"
151 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
152 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
153 |
154 | accepts@^1.3.7:
155 | version "1.3.8"
156 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
157 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
158 | dependencies:
159 | mime-types "~2.1.34"
160 | negotiator "0.6.3"
161 |
162 | accepts@^2.0.0:
163 | version "2.0.0"
164 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895"
165 | integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==
166 | dependencies:
167 | mime-types "^3.0.0"
168 | negotiator "^1.0.0"
169 |
170 | anymatch@~3.1.2:
171 | version "3.1.2"
172 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
173 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
174 | dependencies:
175 | normalize-path "^3.0.0"
176 | picomatch "^2.0.4"
177 |
178 | balanced-match@^1.0.0:
179 | version "1.0.2"
180 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
181 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
182 |
183 | basic-auth@~2.0.1:
184 | version "2.0.1"
185 | resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
186 | integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
187 | dependencies:
188 | safe-buffer "5.1.2"
189 |
190 | binary-extensions@^2.0.0:
191 | version "2.2.0"
192 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
193 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
194 |
195 | body-parser@2.2.0, body-parser@^2.2.0:
196 | version "2.2.0"
197 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.0.tgz#f7a9656de305249a715b549b7b8fd1ab9dfddcfa"
198 | integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==
199 | dependencies:
200 | bytes "^3.1.2"
201 | content-type "^1.0.5"
202 | debug "^4.4.0"
203 | http-errors "^2.0.0"
204 | iconv-lite "^0.6.3"
205 | on-finished "^2.4.1"
206 | qs "^6.14.0"
207 | raw-body "^3.0.0"
208 | type-is "^2.0.0"
209 |
210 | brace-expansion@^1.1.7:
211 | version "1.1.11"
212 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
213 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
214 | dependencies:
215 | balanced-match "^1.0.0"
216 | concat-map "0.0.1"
217 |
218 | braces@^3.0.3:
219 | version "3.0.3"
220 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
221 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
222 | dependencies:
223 | fill-range "^7.1.1"
224 |
225 | braces@~3.0.2:
226 | version "3.0.2"
227 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
228 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
229 | dependencies:
230 | fill-range "^7.0.1"
231 |
232 | bytes@3.1.2, bytes@^3.1.2:
233 | version "3.1.2"
234 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
235 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
236 |
237 | call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
238 | version "1.0.2"
239 | resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
240 | integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
241 | dependencies:
242 | es-errors "^1.3.0"
243 | function-bind "^1.1.2"
244 |
245 | call-bound@^1.0.2:
246 | version "1.0.4"
247 | resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
248 | integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
249 | dependencies:
250 | call-bind-apply-helpers "^1.0.2"
251 | get-intrinsic "^1.3.0"
252 |
253 | chokidar@^3.5.2:
254 | version "3.5.3"
255 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
256 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
257 | dependencies:
258 | anymatch "~3.1.2"
259 | braces "~3.0.2"
260 | glob-parent "~5.1.2"
261 | is-binary-path "~2.1.0"
262 | is-glob "~4.0.1"
263 | normalize-path "~3.0.0"
264 | readdirp "~3.6.0"
265 | optionalDependencies:
266 | fsevents "~2.3.2"
267 |
268 | chokidar@^4.0.0:
269 | version "4.0.1"
270 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41"
271 | integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
272 | dependencies:
273 | readdirp "^4.0.1"
274 |
275 | concat-map@0.0.1:
276 | version "0.0.1"
277 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
278 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
279 |
280 | content-disposition@^1.0.0:
281 | version "1.0.0"
282 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.0.0.tgz#844426cb398f934caefcbb172200126bc7ceace2"
283 | integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==
284 | dependencies:
285 | safe-buffer "5.2.1"
286 |
287 | content-type@^1.0.4:
288 | version "1.0.4"
289 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
290 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
291 |
292 | content-type@^1.0.5:
293 | version "1.0.5"
294 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
295 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
296 |
297 | cookie-parser@1.4.7:
298 | version "1.4.7"
299 | resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.7.tgz#e2125635dfd766888ffe90d60c286404fa0e7b26"
300 | integrity sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==
301 | dependencies:
302 | cookie "0.7.2"
303 | cookie-signature "1.0.6"
304 |
305 | cookie-signature@1.0.6:
306 | version "1.0.6"
307 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
308 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
309 |
310 | cookie-signature@^1.2.1:
311 | version "1.2.2"
312 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.2.tgz#57c7fc3cc293acab9fec54d73e15690ebe4a1793"
313 | integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==
314 |
315 | cookie@0.7.2, cookie@^0.7.1:
316 | version "0.7.2"
317 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
318 | integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
319 |
320 | cors@2.8.5:
321 | version "2.8.5"
322 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
323 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
324 | dependencies:
325 | object-assign "^4"
326 | vary "^1"
327 |
328 | cross-inspect@1.0.1:
329 | version "1.0.1"
330 | resolved "https://registry.yarnpkg.com/cross-inspect/-/cross-inspect-1.0.1.tgz#15f6f65e4ca963cf4cc1a2b5fef18f6ca328712b"
331 | integrity sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==
332 | dependencies:
333 | tslib "^2.4.0"
334 |
335 | data-uri-to-buffer@^4.0.0:
336 | version "4.0.0"
337 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b"
338 | integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==
339 |
340 | debug@2.6.9:
341 | version "2.6.9"
342 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
343 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
344 | dependencies:
345 | ms "2.0.0"
346 |
347 | debug@4.4.1:
348 | version "4.4.1"
349 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b"
350 | integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
351 | dependencies:
352 | ms "^2.1.3"
353 |
354 | debug@^4:
355 | version "4.3.4"
356 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
357 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
358 | dependencies:
359 | ms "2.1.2"
360 |
361 | debug@^4.3.5, debug@^4.4.0:
362 | version "4.4.0"
363 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
364 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
365 | dependencies:
366 | ms "^2.1.3"
367 |
368 | depd@2.0.0, depd@^2.0.0, depd@~2.0.0:
369 | version "2.0.0"
370 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
371 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
372 |
373 | depd@~1.1.2:
374 | version "1.1.2"
375 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
376 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
377 |
378 | detect-libc@^1.0.3:
379 | version "1.0.3"
380 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
381 | integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
382 |
383 | dotenv@16.5.0:
384 | version "16.5.0"
385 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692"
386 | integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==
387 |
388 | dset@^3.1.4:
389 | version "3.1.4"
390 | resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.4.tgz#f8eaf5f023f068a036d08cd07dc9ffb7d0065248"
391 | integrity sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==
392 |
393 | dunder-proto@^1.0.1:
394 | version "1.0.1"
395 | resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
396 | integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
397 | dependencies:
398 | call-bind-apply-helpers "^1.0.1"
399 | es-errors "^1.3.0"
400 | gopd "^1.2.0"
401 |
402 | ee-first@1.1.1:
403 | version "1.1.1"
404 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
405 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
406 |
407 | encodeurl@^2.0.0:
408 | version "2.0.0"
409 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
410 | integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
411 |
412 | es-define-property@^1.0.1:
413 | version "1.0.1"
414 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
415 | integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
416 |
417 | es-errors@^1.3.0:
418 | version "1.3.0"
419 | resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
420 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
421 |
422 | es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
423 | version "1.1.1"
424 | resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
425 | integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
426 | dependencies:
427 | es-errors "^1.3.0"
428 |
429 | escape-html@^1.0.3:
430 | version "1.0.3"
431 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
432 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
433 |
434 | etag@^1.8.1:
435 | version "1.8.1"
436 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
437 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
438 |
439 | express-graphql@0.12.0:
440 | version "0.12.0"
441 | resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.12.0.tgz#58deabc309909ca2c9fe2f83f5fbe94429aa23df"
442 | integrity sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg==
443 | dependencies:
444 | accepts "^1.3.7"
445 | content-type "^1.0.4"
446 | http-errors "1.8.0"
447 | raw-body "^2.4.1"
448 |
449 | express@5.1.0:
450 | version "5.1.0"
451 | resolved "https://registry.yarnpkg.com/express/-/express-5.1.0.tgz#d31beaf715a0016f0d53f47d3b4d7acf28c75cc9"
452 | integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==
453 | dependencies:
454 | accepts "^2.0.0"
455 | body-parser "^2.2.0"
456 | content-disposition "^1.0.0"
457 | content-type "^1.0.5"
458 | cookie "^0.7.1"
459 | cookie-signature "^1.2.1"
460 | debug "^4.4.0"
461 | encodeurl "^2.0.0"
462 | escape-html "^1.0.3"
463 | etag "^1.8.1"
464 | finalhandler "^2.1.0"
465 | fresh "^2.0.0"
466 | http-errors "^2.0.0"
467 | merge-descriptors "^2.0.0"
468 | mime-types "^3.0.0"
469 | on-finished "^2.4.1"
470 | once "^1.4.0"
471 | parseurl "^1.3.3"
472 | proxy-addr "^2.0.7"
473 | qs "^6.14.0"
474 | range-parser "^1.2.1"
475 | router "^2.2.0"
476 | send "^1.1.0"
477 | serve-static "^2.2.0"
478 | statuses "^2.0.1"
479 | type-is "^2.0.1"
480 | vary "^1.1.2"
481 |
482 | fast-json-stable-stringify@^2.1.0:
483 | version "2.1.0"
484 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
485 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
486 |
487 | fetch-blob@^3.1.2, fetch-blob@^3.1.4:
488 | version "3.1.5"
489 | resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.5.tgz#0077bf5f3fcdbd9d75a0b5362f77dbb743489863"
490 | integrity sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg==
491 | dependencies:
492 | node-domexception "^1.0.0"
493 | web-streams-polyfill "^3.0.3"
494 |
495 | fill-range@^7.0.1:
496 | version "7.0.1"
497 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
498 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
499 | dependencies:
500 | to-regex-range "^5.0.1"
501 |
502 | fill-range@^7.1.1:
503 | version "7.1.1"
504 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
505 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
506 | dependencies:
507 | to-regex-range "^5.0.1"
508 |
509 | finalhandler@^2.1.0:
510 | version "2.1.0"
511 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.1.0.tgz#72306373aa89d05a8242ed569ed86a1bff7c561f"
512 | integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==
513 | dependencies:
514 | debug "^4.4.0"
515 | encodeurl "^2.0.0"
516 | escape-html "^1.0.3"
517 | on-finished "^2.4.1"
518 | parseurl "^1.3.3"
519 | statuses "^2.0.1"
520 |
521 | formdata-polyfill@^4.0.10:
522 | version "4.0.10"
523 | resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
524 | integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==
525 | dependencies:
526 | fetch-blob "^3.1.2"
527 |
528 | forwarded@0.2.0:
529 | version "0.2.0"
530 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
531 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
532 |
533 | fresh@^2.0.0:
534 | version "2.0.0"
535 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4"
536 | integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==
537 |
538 | fsevents@~2.3.2:
539 | version "2.3.2"
540 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
541 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
542 |
543 | function-bind@^1.1.2:
544 | version "1.1.2"
545 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
546 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
547 |
548 | get-intrinsic@^1.2.5, get-intrinsic@^1.3.0:
549 | version "1.3.0"
550 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
551 | integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
552 | dependencies:
553 | call-bind-apply-helpers "^1.0.2"
554 | es-define-property "^1.0.1"
555 | es-errors "^1.3.0"
556 | es-object-atoms "^1.1.1"
557 | function-bind "^1.1.2"
558 | get-proto "^1.0.1"
559 | gopd "^1.2.0"
560 | has-symbols "^1.1.0"
561 | hasown "^2.0.2"
562 | math-intrinsics "^1.1.0"
563 |
564 | get-proto@^1.0.1:
565 | version "1.0.1"
566 | resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
567 | integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
568 | dependencies:
569 | dunder-proto "^1.0.1"
570 | es-object-atoms "^1.0.0"
571 |
572 | glob-parent@~5.1.2:
573 | version "5.1.2"
574 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
575 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
576 | dependencies:
577 | is-glob "^4.0.1"
578 |
579 | gopd@^1.2.0:
580 | version "1.2.0"
581 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
582 | integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
583 |
584 | graphql@16.11.0:
585 | version "16.11.0"
586 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633"
587 | integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==
588 |
589 | has-flag@^3.0.0:
590 | version "3.0.0"
591 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
592 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
593 |
594 | has-symbols@^1.1.0:
595 | version "1.1.0"
596 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
597 | integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
598 |
599 | hasown@^2.0.2:
600 | version "2.0.2"
601 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
602 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
603 | dependencies:
604 | function-bind "^1.1.2"
605 |
606 | http-errors@1.8.0:
607 | version "1.8.0"
608 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507"
609 | integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==
610 | dependencies:
611 | depd "~1.1.2"
612 | inherits "2.0.4"
613 | setprototypeof "1.2.0"
614 | statuses ">= 1.5.0 < 2"
615 | toidentifier "1.0.0"
616 |
617 | http-errors@2.0.0, http-errors@^2.0.0:
618 | version "2.0.0"
619 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
620 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
621 | dependencies:
622 | depd "2.0.0"
623 | inherits "2.0.4"
624 | setprototypeof "1.2.0"
625 | statuses "2.0.1"
626 | toidentifier "1.0.1"
627 |
628 | iconv-lite@0.4.24:
629 | version "0.4.24"
630 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
631 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
632 | dependencies:
633 | safer-buffer ">= 2.1.2 < 3"
634 |
635 | iconv-lite@0.6.3, iconv-lite@^0.6.3:
636 | version "0.6.3"
637 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
638 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
639 | dependencies:
640 | safer-buffer ">= 2.1.2 < 3.0.0"
641 |
642 | ignore-by-default@^1.0.1:
643 | version "1.0.1"
644 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
645 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk=
646 |
647 | immutable@^5.0.2:
648 | version "5.0.2"
649 | resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.2.tgz#bb8a987349a73efbe6b3b292a9cbaf1b530d296b"
650 | integrity sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==
651 |
652 | inherits@2.0.4:
653 | version "2.0.4"
654 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
655 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
656 |
657 | ipaddr.js@1.9.1:
658 | version "1.9.1"
659 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
660 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
661 |
662 | is-binary-path@~2.1.0:
663 | version "2.1.0"
664 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
665 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
666 | dependencies:
667 | binary-extensions "^2.0.0"
668 |
669 | is-extglob@^2.1.1:
670 | version "2.1.1"
671 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
672 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
673 |
674 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
675 | version "4.0.3"
676 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
677 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
678 | dependencies:
679 | is-extglob "^2.1.1"
680 |
681 | is-number@^7.0.0:
682 | version "7.0.0"
683 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
684 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
685 |
686 | is-promise@^4.0.0:
687 | version "4.0.0"
688 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3"
689 | integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==
690 |
691 | lru-cache@^6.0.0:
692 | version "6.0.0"
693 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
694 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
695 | dependencies:
696 | yallist "^4.0.0"
697 |
698 | math-intrinsics@^1.1.0:
699 | version "1.1.0"
700 | resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
701 | integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
702 |
703 | media-typer@^1.1.0:
704 | version "1.1.0"
705 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561"
706 | integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==
707 |
708 | merge-descriptors@^2.0.0:
709 | version "2.0.0"
710 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808"
711 | integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==
712 |
713 | micromatch@^4.0.5:
714 | version "4.0.8"
715 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
716 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
717 | dependencies:
718 | braces "^3.0.3"
719 | picomatch "^2.3.1"
720 |
721 | mime-db@1.52.0:
722 | version "1.52.0"
723 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
724 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
725 |
726 | mime-db@^1.54.0:
727 | version "1.54.0"
728 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5"
729 | integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
730 |
731 | mime-types@^3.0.0, mime-types@^3.0.1:
732 | version "3.0.1"
733 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce"
734 | integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==
735 | dependencies:
736 | mime-db "^1.54.0"
737 |
738 | mime-types@~2.1.34:
739 | version "2.1.35"
740 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
741 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
742 | dependencies:
743 | mime-db "1.52.0"
744 |
745 | minimatch@^3.1.2:
746 | version "3.1.2"
747 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
748 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
749 | dependencies:
750 | brace-expansion "^1.1.7"
751 |
752 | morgan@1.10.0:
753 | version "1.10.0"
754 | resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7"
755 | integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==
756 | dependencies:
757 | basic-auth "~2.0.1"
758 | debug "2.6.9"
759 | depd "~2.0.0"
760 | on-finished "~2.3.0"
761 | on-headers "~1.0.2"
762 |
763 | ms@2.0.0:
764 | version "2.0.0"
765 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
766 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
767 |
768 | ms@2.1.2:
769 | version "2.1.2"
770 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
771 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
772 |
773 | ms@^2.1.3:
774 | version "2.1.3"
775 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
776 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
777 |
778 | negotiator@0.6.3:
779 | version "0.6.3"
780 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
781 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
782 |
783 | negotiator@^1.0.0:
784 | version "1.0.0"
785 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a"
786 | integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==
787 |
788 | node-addon-api@^7.0.0:
789 | version "7.1.1"
790 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
791 | integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
792 |
793 | node-domexception@^1.0.0:
794 | version "1.0.0"
795 | resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
796 | integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
797 |
798 | node-fetch@3.3.2:
799 | version "3.3.2"
800 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b"
801 | integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==
802 | dependencies:
803 | data-uri-to-buffer "^4.0.0"
804 | fetch-blob "^3.1.4"
805 | formdata-polyfill "^4.0.10"
806 |
807 | nodemon@3.1.10:
808 | version "3.1.10"
809 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.10.tgz#5015c5eb4fffcb24d98cf9454df14f4fecec9bc1"
810 | integrity sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==
811 | dependencies:
812 | chokidar "^3.5.2"
813 | debug "^4"
814 | ignore-by-default "^1.0.1"
815 | minimatch "^3.1.2"
816 | pstree.remy "^1.1.8"
817 | semver "^7.5.3"
818 | simple-update-notifier "^2.0.0"
819 | supports-color "^5.5.0"
820 | touch "^3.1.0"
821 | undefsafe "^2.0.5"
822 |
823 | nopt@~1.0.10:
824 | version "1.0.10"
825 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
826 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=
827 | dependencies:
828 | abbrev "1"
829 |
830 | normalize-path@^3.0.0, normalize-path@~3.0.0:
831 | version "3.0.0"
832 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
833 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
834 |
835 | object-assign@^4:
836 | version "4.1.1"
837 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
838 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
839 |
840 | object-inspect@^1.13.3:
841 | version "1.13.4"
842 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213"
843 | integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
844 |
845 | on-finished@^2.4.1:
846 | version "2.4.1"
847 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
848 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
849 | dependencies:
850 | ee-first "1.1.1"
851 |
852 | on-finished@~2.3.0:
853 | version "2.3.0"
854 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
855 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
856 | dependencies:
857 | ee-first "1.1.1"
858 |
859 | on-headers@~1.0.2:
860 | version "1.0.2"
861 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
862 | integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
863 |
864 | once@^1.4.0:
865 | version "1.4.0"
866 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
867 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
868 | dependencies:
869 | wrappy "1"
870 |
871 | parseurl@^1.3.3:
872 | version "1.3.3"
873 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
874 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
875 |
876 | path-to-regexp@^8.0.0:
877 | version "8.2.0"
878 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4"
879 | integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==
880 |
881 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
882 | version "2.3.1"
883 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
884 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
885 |
886 | proxy-addr@^2.0.7:
887 | version "2.0.7"
888 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
889 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
890 | dependencies:
891 | forwarded "0.2.0"
892 | ipaddr.js "1.9.1"
893 |
894 | pstree.remy@^1.1.8:
895 | version "1.1.8"
896 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a"
897 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==
898 |
899 | qs@^6.14.0:
900 | version "6.14.0"
901 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930"
902 | integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==
903 | dependencies:
904 | side-channel "^1.1.0"
905 |
906 | range-parser@^1.2.1:
907 | version "1.2.1"
908 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
909 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
910 |
911 | raw-body@^2.4.1:
912 | version "2.5.1"
913 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
914 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
915 | dependencies:
916 | bytes "3.1.2"
917 | http-errors "2.0.0"
918 | iconv-lite "0.4.24"
919 | unpipe "1.0.0"
920 |
921 | raw-body@^3.0.0:
922 | version "3.0.0"
923 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.0.tgz#25b3476f07a51600619dae3fe82ddc28a36e5e0f"
924 | integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==
925 | dependencies:
926 | bytes "3.1.2"
927 | http-errors "2.0.0"
928 | iconv-lite "0.6.3"
929 | unpipe "1.0.0"
930 |
931 | readdirp@^4.0.1:
932 | version "4.0.2"
933 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a"
934 | integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==
935 |
936 | readdirp@~3.6.0:
937 | version "3.6.0"
938 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
939 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
940 | dependencies:
941 | picomatch "^2.2.1"
942 |
943 | router@^2.2.0:
944 | version "2.2.0"
945 | resolved "https://registry.yarnpkg.com/router/-/router-2.2.0.tgz#019be620b711c87641167cc79b99090f00b146ef"
946 | integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==
947 | dependencies:
948 | debug "^4.4.0"
949 | depd "^2.0.0"
950 | is-promise "^4.0.0"
951 | parseurl "^1.3.3"
952 | path-to-regexp "^8.0.0"
953 |
954 | safe-buffer@5.1.2:
955 | version "5.1.2"
956 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
957 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
958 |
959 | safe-buffer@5.2.1:
960 | version "5.2.1"
961 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
962 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
963 |
964 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
965 | version "2.1.2"
966 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
967 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
968 |
969 | sass@1.89.0:
970 | version "1.89.0"
971 | resolved "https://registry.yarnpkg.com/sass/-/sass-1.89.0.tgz#6df72360c5c3ec2a9833c49adafe57b28206752d"
972 | integrity sha512-ld+kQU8YTdGNjOLfRWBzewJpU5cwEv/h5yyqlSeJcj6Yh8U4TDA9UA5FPicqDz/xgRPWRSYIQNiFks21TbA9KQ==
973 | dependencies:
974 | chokidar "^4.0.0"
975 | immutable "^5.0.2"
976 | source-map-js ">=0.6.2 <2.0.0"
977 | optionalDependencies:
978 | "@parcel/watcher" "^2.4.1"
979 |
980 | semver@^7.5.3:
981 | version "7.5.4"
982 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
983 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
984 | dependencies:
985 | lru-cache "^6.0.0"
986 |
987 | send@^1.1.0, send@^1.2.0:
988 | version "1.2.0"
989 | resolved "https://registry.yarnpkg.com/send/-/send-1.2.0.tgz#32a7554fb777b831dfa828370f773a3808d37212"
990 | integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==
991 | dependencies:
992 | debug "^4.3.5"
993 | encodeurl "^2.0.0"
994 | escape-html "^1.0.3"
995 | etag "^1.8.1"
996 | fresh "^2.0.0"
997 | http-errors "^2.0.0"
998 | mime-types "^3.0.1"
999 | ms "^2.1.3"
1000 | on-finished "^2.4.1"
1001 | range-parser "^1.2.1"
1002 | statuses "^2.0.1"
1003 |
1004 | serve-static@^2.2.0:
1005 | version "2.2.0"
1006 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.0.tgz#9c02564ee259bdd2251b82d659a2e7e1938d66f9"
1007 | integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==
1008 | dependencies:
1009 | encodeurl "^2.0.0"
1010 | escape-html "^1.0.3"
1011 | parseurl "^1.3.3"
1012 | send "^1.2.0"
1013 |
1014 | setprototypeof@1.2.0:
1015 | version "1.2.0"
1016 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
1017 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
1018 |
1019 | side-channel-list@^1.0.0:
1020 | version "1.0.0"
1021 | resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
1022 | integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
1023 | dependencies:
1024 | es-errors "^1.3.0"
1025 | object-inspect "^1.13.3"
1026 |
1027 | side-channel-map@^1.0.1:
1028 | version "1.0.1"
1029 | resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42"
1030 | integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==
1031 | dependencies:
1032 | call-bound "^1.0.2"
1033 | es-errors "^1.3.0"
1034 | get-intrinsic "^1.2.5"
1035 | object-inspect "^1.13.3"
1036 |
1037 | side-channel-weakmap@^1.0.2:
1038 | version "1.0.2"
1039 | resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea"
1040 | integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==
1041 | dependencies:
1042 | call-bound "^1.0.2"
1043 | es-errors "^1.3.0"
1044 | get-intrinsic "^1.2.5"
1045 | object-inspect "^1.13.3"
1046 | side-channel-map "^1.0.1"
1047 |
1048 | side-channel@^1.1.0:
1049 | version "1.1.0"
1050 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
1051 | integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
1052 | dependencies:
1053 | es-errors "^1.3.0"
1054 | object-inspect "^1.13.3"
1055 | side-channel-list "^1.0.0"
1056 | side-channel-map "^1.0.1"
1057 | side-channel-weakmap "^1.0.2"
1058 |
1059 | simple-update-notifier@^2.0.0:
1060 | version "2.0.0"
1061 | resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb"
1062 | integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==
1063 | dependencies:
1064 | semver "^7.5.3"
1065 |
1066 | "source-map-js@>=0.6.2 <2.0.0":
1067 | version "1.0.2"
1068 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
1069 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
1070 |
1071 | statuses@2.0.1, statuses@^2.0.1:
1072 | version "2.0.1"
1073 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
1074 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
1075 |
1076 | "statuses@>= 1.5.0 < 2":
1077 | version "1.5.0"
1078 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
1079 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
1080 |
1081 | supports-color@^5.5.0:
1082 | version "5.5.0"
1083 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1084 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1085 | dependencies:
1086 | has-flag "^3.0.0"
1087 |
1088 | to-regex-range@^5.0.1:
1089 | version "5.0.1"
1090 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1091 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1092 | dependencies:
1093 | is-number "^7.0.0"
1094 |
1095 | toidentifier@1.0.0:
1096 | version "1.0.0"
1097 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
1098 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
1099 |
1100 | toidentifier@1.0.1:
1101 | version "1.0.1"
1102 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
1103 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
1104 |
1105 | touch@^3.1.0:
1106 | version "3.1.0"
1107 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
1108 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==
1109 | dependencies:
1110 | nopt "~1.0.10"
1111 |
1112 | tslib@^2.4.0:
1113 | version "2.4.0"
1114 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
1115 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
1116 |
1117 | tslib@^2.6.3:
1118 | version "2.8.1"
1119 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
1120 | integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
1121 |
1122 | type-is@^2.0.0, type-is@^2.0.1:
1123 | version "2.0.1"
1124 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97"
1125 | integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==
1126 | dependencies:
1127 | content-type "^1.0.5"
1128 | media-typer "^1.1.0"
1129 | mime-types "^3.0.0"
1130 |
1131 | undefsafe@^2.0.5:
1132 | version "2.0.5"
1133 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c"
1134 | integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==
1135 |
1136 | unpipe@1.0.0:
1137 | version "1.0.0"
1138 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
1139 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
1140 |
1141 | vary@^1, vary@^1.1.2:
1142 | version "1.1.2"
1143 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
1144 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
1145 |
1146 | web-streams-polyfill@^3.0.3:
1147 | version "3.2.1"
1148 | resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6"
1149 | integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==
1150 |
1151 | wrappy@1:
1152 | version "1.0.2"
1153 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1154 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
1155 |
1156 | yallist@^4.0.0:
1157 | version "4.0.0"
1158 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
1159 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
1160 |
--------------------------------------------------------------------------------