Browse Source

switch back to JS for serverless functions (for now) (#549)

Vercel's TS transpiliation is too flaky: https://github.com/vercel/vercel/discussions/6665
pull/550/head
Jake Jarvis 1 month ago
committed by GitHub
parent
commit
4ce401b9ef
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 23
      .eslintrc.json
  2. 9
      .github/workflows/post-deploy.yml
  3. 3
      .gitignore
  4. 2
      .lighthouserc.json
  5. 2
      .prettierignore
  6. 44
      api/hits.js
  7. 33
      api/projects.js
  8. 26
      api/tracks.js
  9. 14
      api/types/hits.d.ts
  10. 21
      api/types/projects.d.ts
  11. 42
      api/types/tracks.d.ts
  12. 1
      gulpfile.js
  13. 24
      package.json
  14. 31
      tsconfig.json
  15. 242
      yarn.lock

23
.eslintrc.json

@ -33,27 +33,12 @@
]
},
"overrides": [{
// Serverless functions
"files": [
"api/**/*.ts"
"api/**/*.js"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:import/recommended",
"plugin:import/typescript",
"plugin:prettier/recommended"
],
"plugins": [
"@typescript-eslint",
"prettier"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": ["./tsconfig.json"]
},
"rules": {
"@typescript-eslint/restrict-template-expressions": "off"
"compat/compat": "off"
},
"env": {
"browser": false,
@ -63,8 +48,6 @@
"ignorePatterns": [
"public/**",
"static/assets/**",
"*.d.ts",
"api/**/*.js",
"gulpfile.js",
"webpack.config.js"
]

9
.github/workflows/post-deploy.yml

@ -19,10 +19,6 @@ jobs:
with:
node-version: 14.x
- run: yarn install --frozen-lockfile
# https://docs.sentry.io/platforms/node/typescript/#configuring-typescript-compiler
- run: |
npx -p typescript tsc
ls -lah ./api
- uses: getsentry/action-release@v1
if: github.event.deployment_status.environment == 'production'
env:
@ -31,7 +27,6 @@ jobs:
SENTRY_PROJECT: jarvis
with:
environment: ${{ github.event.deployment_status.environment }}
sourcemaps: ./api
- uses: browser-actions/setup-chrome@latest
with:
chrome-version: stable
@ -46,14 +41,16 @@ jobs:
- if: github.event.deployment_status.environment == 'production'
run: |
echo "BASE_DEPLOY_URL=https://jarv.is" >> $GITHUB_ENV
echo "LHCI_EXTRA_FLAGS=" >> $GITHUB_ENV
echo "LHCI_BUILD_CONTEXT__CURRENT_BRANCH=main" >> $GITHUB_ENV
- if: github.event.deployment_status.environment == 'preview'
run: |
echo "BASE_DEPLOY_URL=${{ github.event.deployment_status.target_url }}" >> $GITHUB_ENV
echo "LHCI_EXTRA_FLAGS=--assert.assertions.is-crawlable=off --assert.assertions.canonical=off" >> $GITHUB_ENV
echo "LHCI_BUILD_CONTEXT__CURRENT_BRANCH=${{ github.event.deployment.ref }}" >> $GITHUB_ENV
- continue-on-error: true
run: |
lhci autorun \
lhci autorun ${{ env.LHCI_EXTRA_FLAGS }} \
--collect.url=${{ env.BASE_DEPLOY_URL }}/ \
--collect.url=${{ env.BASE_DEPLOY_URL }}/notes/how-to-pull-request-fork-github/ \
--collect.url=${{ env.BASE_DEPLOY_URL }}/projects/

3
.gitignore

@ -15,9 +15,6 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
# compiled typescript
api/**/*.js
# Lighthouse CI
.lighthouseci/

2
.lighthouserc.json

@ -22,8 +22,6 @@
"unused-javascript": "warn",
"uses-optimized-images": "warn",
"uses-rel-preconnect": "warn",
"canonical": "off",
"is-crawlable": "off",
"modern-image-formats": "off",
"offscreen-images": "off",
"uses-long-cache-ttl": "off",

2
.prettierignore

@ -17,7 +17,6 @@ postcss.config.js
webpack.config.js
gulpfile.js
babel.config.json
tsconfig.json
# miscellaneous
vercel.json
@ -26,5 +25,4 @@ vercel.json
.lighthouseci/
.vscode/
LICENSE.md
api/**/*.js
content/notes/dark-mode/example.html

44
api/hits.ts → api/hits.js

@ -1,11 +1,9 @@
import * as Sentry from "@sentry/node";
import { VercelRequest, VercelResponse } from "@vercel/node";
import { Client, query as q } from "faunadb";
import fetch from "node-fetch";
import parser from "fast-xml-parser";
import { decode } from "html-entities";
import type { PageStats, OverallStats } from "./types/hits";
import faunadb from "faunadb";
const q = faunadb.query;
const baseUrl = "https://jarv.is/";
@ -14,8 +12,7 @@ Sentry.init({
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || "",
});
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export default async (req: VercelRequest, res: VercelResponse) => {
export default async (req, res) => {
try {
// some rudimentary error handling
if (!process.env.FAUNADB_SERVER_SECRET) {
@ -25,12 +22,11 @@ export default async (req: VercelRequest, res: VercelResponse) => {
throw new Error(`Method ${req.method} not allowed.`);
}
const client = new Client({
const client = new faunadb.Client({
secret: process.env.FAUNADB_SERVER_SECRET,
});
const { slug } = req.query;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let result: any;
let result;
if (!slug || slug === "/") {
// return overall site stats if slug not specified
@ -65,9 +61,8 @@ export default async (req: VercelRequest, res: VercelResponse) => {
}
};
const incrementPageHits = async (slug: string | string[], client: Client): Promise<PageStats> => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment
const result = await client.query<any>(
const incrementPageHits = async (slug, client) => {
const result = await client.query(
q.Let(
{ match: q.Match(q.Index("hits_by_slug"), slug) },
q.If(
@ -85,14 +80,12 @@ const incrementPageHits = async (slug: string | string[], client: Client): Promi
);
// send client the *new* hit count
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
return result.data;
};
const getSiteStats = async (client: Client): Promise<OverallStats> => {
const getSiteStats = async (client) => {
// get database and RSS results asynchronously
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment
const [feed, result] = await Promise.all<{ [key: string]: any }, any>([
const [feed, result] = await Promise.all([
parser.parse(await (await fetch(baseUrl + "feed.xml")).text()), // this is messy but it works :)
client.query(
q.Map(
@ -102,25 +95,18 @@ const getSiteStats = async (client: Client): Promise<OverallStats> => {
),
]);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
const pages: PageStats[] = result.data;
const stats: OverallStats = {
const pages = result.data;
const stats = {
total: { hits: 0 },
pages,
};
pages.map((p: PageStats) => {
pages.map((p) => {
// match URLs from RSS feed with db to populate some metadata
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
const match = feed.rss.channel.item.find(
(x: { link: string }) => x.link === baseUrl + p.slug + "/"
);
const match = feed.rss.channel.item.find((x) => x.link === baseUrl + p.slug + "/");
if (match) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
p.title = decode(match.title);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
p.url = match.link;
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
p.date = new Date(match.pubDate);
}
@ -131,9 +117,7 @@ const getSiteStats = async (client: Client): Promise<OverallStats> => {
});
// sort by hits (descending)
stats.pages.sort((a: { hits: number }, b: { hits: number }) => {
return a.hits > b.hits ? -1 : 1;
});
stats.pages.sort((a, b) => (a.hits > b.hits ? -1 : 1));
return stats;
};

33
api/projects.ts → api/projects.js

@ -1,16 +1,12 @@
import * as Sentry from "@sentry/node";
import { VercelRequest, VercelResponse } from "@vercel/node";
import { graphql, GraphQlQueryResponseData } from "@octokit/graphql";
import type { Repository, GHRepoSchema } from "./types/projects";
import { graphql } from "@octokit/graphql";
Sentry.init({
dsn: process.env.SENTRY_DSN || "",
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || "",
});
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export default async (req: VercelRequest, res: VercelResponse) => {
export default async (req, res) => {
try {
// some rudimentary error handling
if (req.method !== "GET") {
@ -48,9 +44,9 @@ export default async (req: VercelRequest, res: VercelResponse) => {
}
};
const fetchRepos = async (sort: string): Promise<Repository[]> => {
const fetchRepos = async (sort) => {
// https://docs.github.com/en/graphql/reference/objects#repository
const { user } = await graphql<GraphQlQueryResponseData>(
const { user } = await graphql(
`
query ($username: String!, $sort: String, $limit: Int) {
user(login: $username) {
@ -90,18 +86,15 @@ const fetchRepos = async (sort: string): Promise<Repository[]> => {
}
);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
const repos: Repository[] = user.repositories.edges.map(
({ node: repo }: { [key: string]: Readonly<GHRepoSchema> }) => ({
name: repo.name,
url: repo.url,
description: repo.description,
updatedAt: new Date(repo.pushedAt),
stars: repo.stargazerCount,
forks: repo.forkCount,
language: repo.primaryLanguage,
})
);
const repos = user.repositories.edges.map(({ node: repo }) => ({
name: repo.name,
url: repo.url,
description: repo.description,
updatedAt: new Date(repo.pushedAt),
stars: repo.stargazerCount,
forks: repo.forkCount,
language: repo.primaryLanguage,
}));
return repos;
};

26
api/tracks.ts → api/tracks.js

@ -2,18 +2,9 @@
// Heavily inspired by @leerob: https://leerob.io/snippets/spotify
import * as Sentry from "@sentry/node";
import { VercelRequest, VercelResponse } from "@vercel/node";
import fetch from "node-fetch";
import * as queryString from "query-string";
import type {
Track,
SpotifyTrackSchema,
SpotifyActivitySchema,
SpotifyTokenSchema,
SpotifyTopSchema,
} from "./types/tracks";
const { SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET, SPOTIFY_REFRESH_TOKEN } = process.env;
const basic = Buffer.from(`${SPOTIFY_CLIENT_ID}:${SPOTIFY_CLIENT_SECRET}`).toString("base64");
@ -30,8 +21,7 @@ Sentry.init({
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || "",
});
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export default async (req: VercelRequest, res: VercelResponse) => {
export default async (req, res) => {
try {
// some rudimentary error handling
if (req.method !== "GET") {
@ -80,7 +70,7 @@ export default async (req: VercelRequest, res: VercelResponse) => {
}
};
const getAccessToken = async (): Promise<SpotifyTokenSchema> => {
const getAccessToken = async () => {
const response = await fetch(TOKEN_ENDPOINT, {
method: "POST",
headers: {
@ -93,10 +83,10 @@ const getAccessToken = async (): Promise<SpotifyTokenSchema> => {
}),
});
return response.json() as Promise<SpotifyTokenSchema>;
return response.json();
};
const getNowPlaying = async (): Promise<Track> => {
const getNowPlaying = async () => {
const { access_token } = await getAccessToken();
const response = await fetch(NOW_PLAYING_ENDPOINT, {
@ -112,7 +102,7 @@ const getNowPlaying = async (): Promise<Track> => {
return { isPlaying: false };
}
const active = (await response.json()) as SpotifyActivitySchema;
const active = await response.json();
if (active.is_playing === true && active.item) {
return {
@ -128,7 +118,7 @@ const getNowPlaying = async (): Promise<Track> => {
}
};
const getTopTracks = async (): Promise<Track[]> => {
const getTopTracks = async () => {
const { access_token } = await getAccessToken();
const response = await fetch(TOP_TRACKS_ENDPOINT, {
@ -140,9 +130,9 @@ const getTopTracks = async (): Promise<Track[]> => {
},
});
const { items } = (await response.json()) as SpotifyTopSchema;
const { items } = await response.json();
const tracks: Track[] = items.map((track: Readonly<SpotifyTrackSchema>) => ({
const tracks = items.map((track) => ({
artist: track.artists.map((_artist) => _artist.name).join(", "),
title: track.name,
album: track.album.name,

14
api/types/hits.d.ts

@ -1,14 +0,0 @@
export type PageStats = {
slug: string;
hits: number;
title?: string;
url?: URL;
date?: Date;
};
export type OverallStats = {
total: {
hits: number;
};
pages: PageStats[];
};

21
api/types/projects.d.ts

@ -1,21 +0,0 @@
import type { Language } from "@octokit/graphql-schema";
type BaseRepoInfo = {
name: string;
url: URL;
description: string;
};
export type GHRepoSchema = Required<BaseRepoInfo> & {
primaryLanguage?: Language;
stargazerCount: number;
forkCount: number;
pushedAt: Date;
};
export type Repository = Required<BaseRepoInfo> & {
language?: Language;
stars: number;
forks: number;
updatedAt: Date;
};

42
api/types/tracks.d.ts

@ -1,42 +0,0 @@
export type SpotifyTrackSchema = {
name: string;
artists: Array<{
name: string;
}>;
album: {
name: string;
images?: Array<{
url: URL;
}>;
};
imageUrl?: URL;
external_urls: {
spotify: URL;
};
};
export type SpotifyActivitySchema = {
is_playing: boolean;
item?: SpotifyTrackSchema;
};
export type SpotifyTokenSchema = {
access_token: string;
token_type: string;
scope: string;
expires_in: number;
refresh_token: string;
};
export type SpotifyTopSchema = {
items: SpotifyTrackSchema[];
};
export type Track = {
isPlaying?: boolean;
artist?: string;
title?: string;
album?: string;
imageUrl?: URL;
songUrl?: URL;
};

1
gulpfile.js

@ -44,7 +44,6 @@ function clean() {
"builds/",
"_vendor/",
"static/assets/",
"api/**/*.js", // compiled typescript
]);
}

24
package.json

@ -21,8 +21,7 @@
"start": "gulp serve",
"clean": "gulp clean",
"lint": "run-s lint:**",
"lint:ts": "tsc --noEmit",
"lint:js": "eslint --ext .js,.ts .",
"lint:js": "eslint .",
"lint:scss": "stylelint 'assets/sass/**/*.scss' --syntax scss",
"lint:md": "markdownlint 'content/**/*.md'",
"lint:prettier": "prettier --check .",
@ -34,7 +33,6 @@
"@fontsource/roboto-mono": "4.5.0",
"@jakejarvis/dark-mode": "^0.7.2",
"@octokit/graphql": "^4.8.0",
"@octokit/graphql-schema": "^10.68.0",
"@sentry/node": "^6.12.0",
"clipboard": "^2.0.8",
"cross-fetch": "^3.1.4",
@ -47,7 +45,7 @@
"html-entities": "^2.3.2",
"lit-html": "^2.0.0-rc.5",
"modern-normalize": "^1.1.0",
"node-fetch": "^2.6.1",
"node-fetch": "^3.0.0",
"numeral": "^2.0.6",
"query-string": "^7.0.1",
"simple-anchor": "^1.0.3",
@ -62,20 +60,16 @@
"@babel/preset-env": "^7.15.4",
"@jakejarvis/eslint-config": "*",
"@percy/cli": "^1.0.0-beta.67",
"@types/node-fetch": "^2.5.12",
"@types/numeral": "^2.0.1",
"@types/twemoji": "^12.1.2",
"@types/url-parse": "^1.4.4",
"@typescript-eslint/eslint-plugin": "^4.31.0",
"@typescript-eslint/parser": "^4.31.0",
"@vercel/node": "^1.12.1",
"autoprefixer": "^10.3.4",
"babel-loader": "^8.2.2",
"babel-plugin-template-html-minifier": "^4.1.0",
"browser-sync": "^2.27.5",
"clean-css": "^5.1.5",
"copy-webpack-plugin": "^9.0.1",
"core-js": "^3.17.2",
"core-js": "^3.17.3",
"css-loader": "^6.2.0",
"css-minimizer-webpack-plugin": "^3.0.2",
"debug": "^4.3.2",
@ -108,7 +102,7 @@
"postcss-normalize-charset": "^5.0.1",
"postcss-reporter": "^7.0.2",
"postcss-svgo": "^5.0.2",
"prettier": "^2.3.2",
"prettier": "^2.4.0",
"pretty-quick": "^3.1.1",
"sass": "^1.39.0",
"sass-loader": "^12.1.0",
@ -120,8 +114,7 @@
"stylelint-prettier": "~1.2.0",
"stylelint-scss": "~3.20.1",
"terser": "^5.7.2",
"terser-webpack-plugin": "^5.2.3",
"typescript": "^4.4.2",
"terser-webpack-plugin": "^5.2.4",
"webpack": "^5.52.0",
"webpack-assets-manifest": "^5.0.6",
"webpack-cli": "^4.8.0",
@ -141,10 +134,7 @@
"stylelint --syntax scss",
"pretty-quick --staged"
],
"*.ts": [
"tsc --noEmit --esModuleInterop"
],
"*.{js,ts}": [
"*.js": [
"eslint",
"pretty-quick --staged"
],
@ -154,7 +144,7 @@
]
},
"volta": {
"node": "14.17.5",
"node": "14.17.6",
"yarn": "1.22.10"
}
}

31
tsconfig.json

@ -1,31 +0,0 @@
{
"compilerOptions": {
"target": "es2020",
"lib": [
"esnext",
"es2020"
],
"module": "es2020",
"moduleResolution": "node",
"importHelpers": true,
"esModuleInterop": true,
"isolatedModules": true,
"strict": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"allowJs": true,
"typeRoots": [
"./types",
"./node_modules/@types"
],
"sourceRoot": "./",
"inlineSources": true,
"inlineSourceMap": true
},
"include": [
"**/*.ts"
],
"exclude": [
"node_modules"
]
}

242
yarn.lock

@ -1058,14 +1058,6 @@
is-plain-object "^5.0.0"
universal-user-agent "^6.0.0"
"@octokit/graphql-schema@^10.68.0":
version "10.68.0"
resolved "https://registry.yarnpkg.com/@octokit/graphql-schema/-/graphql-schema-10.68.0.tgz#d8bcd6d89966190dfe673eb8e49794138aa01f8b"
integrity sha512-ZeqBUJLN736tt1Zg7a+vNMJw9UZh4rNtQFOf1MwzVHFmA3flsnit5p+aO0uRCo89wXCfCXPjBlw+DUDUh9X0PA==
dependencies:
graphql "^15.0.0"
graphql-tag "^2.10.3"
"@octokit/graphql@^4.8.0":
version "4.8.0"
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3"
@ -1402,7 +1394,7 @@
dependencies:
"@types/istanbul-lib-report" "*"
"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8":
"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8":
version "7.0.9"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
@ -1436,18 +1428,10 @@
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/node-fetch@^2.5.12":
version "2.5.12"
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66"
integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==
dependencies:
"@types/node" "*"
form-data "^3.0.0"
"@types/node@*":
version "16.7.13"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.13.tgz#86fae356b03b5a12f2506c6cf6cd9287b205973f"
integrity sha512-pLUPDn+YG3FYEt/pHI74HmnJOWzeR+tOIQzUx93pi9M7D8OE7PSLr97HboXwk5F+JS+TLtWuzCOW97AHjmOXXA==
version "16.9.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.0.tgz#d9512fe037472dcb58931ce19f837348db828a62"
integrity sha512-nmP+VR4oT0pJUPFbKE4SXj3Yb4Q/kz3M9dSAO1GGMebRKWHQxLfDNmU/yh3xxCJha3N60nQ/JwXWwOE/ZSEVag==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
@ -1510,84 +1494,6 @@
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@^4.31.0":
version "4.31.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.0.tgz#9c3fa6f44bad789a962426ad951b54695bd3af6b"
integrity sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw==
dependencies:
"@typescript-eslint/experimental-utils" "4.31.0"
"@typescript-eslint/scope-manager" "4.31.0"
debug "^4.3.1"
functional-red-black-tree "^1.0.1"
regexpp "^3.1.0"
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/experimental-utils@4.31.0":
version "4.31.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.0.tgz#0ef1d5d86c334f983a00f310e43c1ce4c14e054d"
integrity sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw==
dependencies:
"@types/json-schema" "^7.0.7"
"@typescript-eslint/scope-manager" "4.31.0"
"@typescript-eslint/types" "4.31.0"
"@typescript-eslint/typescript-estree" "4.31.0"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
"@typescript-eslint/parser@^4.31.0":
version "4.31.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.31.0.tgz#87b7cd16b24b9170c77595d8b1363f8047121e05"
integrity sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w==
dependencies:
"@typescript-eslint/scope-manager" "4.31.0"
"@typescript-eslint/types" "4.31.0"
"@typescript-eslint/typescript-estree" "4.31.0"
debug "^4.3.1"
"@typescript-eslint/scope-manager@4.31.0":
version "4.31.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.31.0.tgz#9be33aed4e9901db753803ba233b70d79a87fc3e"
integrity sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg==
dependencies:
"@typescript-eslint/types" "4.31.0"
"@typescript-eslint/visitor-keys" "4.31.0"
"@typescript-eslint/types@4.31.0":
version "4.31.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.31.0.tgz#9a7c86fcc1620189567dc4e46cad7efa07ee8dce"
integrity sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ==
"@typescript-eslint/typescript-estree@4.31.0":
version "4.31.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.0.tgz#4da4cb6274a7ef3b21d53f9e7147cc76f278a078"
integrity sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg==
dependencies:
"@typescript-eslint/types" "4.31.0"
"@typescript-eslint/visitor-keys" "4.31.0"
debug "^4.3.1"
globby "^11.0.3"
is-glob "^4.0.1"
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/visitor-keys@4.31.0":
version "4.31.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.0.tgz#4e87b7761cb4e0e627dc2047021aa693fc76ea2b"
integrity sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w==
dependencies:
"@typescript-eslint/types" "4.31.0"
eslint-visitor-keys "^2.0.0"
"@vercel/node@^1.12.1":
version "1.12.1"
resolved "https://registry.yarnpkg.com/@vercel/node/-/node-1.12.1.tgz#15f42f64690f904f8a52a387123ce0958657060f"
integrity sha512-NcawIY05BvVkWlsowaxF2hl/hJg475U8JvT2FnGykFPMx31q1/FtqyTw/awSrKfOSRXR0InrbEIDIelmS9NzPA==
dependencies:
"@types/node" "*"
ts-node "8.9.1"
typescript "4.3.4"
"@webassemblyjs/ast@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
@ -1943,11 +1849,6 @@ archy@^1.0.0:
resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=
arg@^4.1.0:
version "4.1.3"
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@ -2488,7 +2389,7 @@ browser-sync@^2.27.5:
ua-parser-js "^0.7.28"
yargs "^15.4.1"
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.1, browserslist@^4.16.6, browserslist@^4.16.8:
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.1, browserslist@^4.16.6, browserslist@^4.16.8, browserslist@^4.17.0:
version "4.17.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.0.tgz#1fcd81ec75b41d6d4994fb0831b92ac18c01649c"
integrity sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==
@ -3155,17 +3056,17 @@ copy-webpack-plugin@^9.0.1:
serialize-javascript "^6.0.0"
core-js-compat@^3.14.0, core-js-compat@^3.16.0:
version "3.17.2"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.17.2.tgz#f461ab950c0a0ffedfc327debf28b7e518950936"
integrity sha512-lHnt7A1Oqplebl5i0MrQyFv/yyEzr9p29OjlkcsFRDDgHwwQyVckfRGJ790qzXhkwM8ba4SFHHa2sO+T5f1zGg==
version "3.17.3"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.17.3.tgz#b39c8e4dec71ecdc735c653ce5233466e561324e"
integrity sha512-+in61CKYs4hQERiADCJsdgewpdl/X0GhEX77pjKgbeibXviIt2oxEjTc8O2fqHX8mDdBrDvX8MYD/RYsBv4OiA==
dependencies:
browserslist "^4.16.8"
browserslist "^4.17.0"
semver "7.0.0"
core-js@3, core-js@^3.16.2, core-js@^3.17.2:
version "3.17.2"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.17.2.tgz#f960eae710dc62c29cca93d5332e3660e289db10"
integrity sha512-XkbXqhcXeMHPRk2ItS+zQYliAMilea2euoMsnpRRdDad6b2VY6CQQcwz1K8AnWesfw4p165RzY0bTnr3UrbYiA==
core-js@3, core-js@^3.16.2, core-js@^3.17.3:
version "3.17.3"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.17.3.tgz#8e8bd20e91df9951e903cabe91f9af4a0895bc1e"
integrity sha512-lyvajs+wd8N1hXfzob1LdOCCHFU4bGMbqqmLn1Q4QlCpDqWPpGf+p0nj+LNrvDDG33j0hZXw2nsvvVpHysxyNw==
core-util-is@~1.0.0:
version "1.0.3"
@ -3377,6 +3278,11 @@ d@1, d@^1.0.1:
es5-ext "^0.10.50"
type "^1.0.1"
data-uri-to-buffer@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636"
integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==
date-fns@^2.23.0:
version "2.23.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.23.0.tgz#4e886c941659af0cf7b30fafdd1eaa37e88788a9"
@ -3624,11 +3530,6 @@ dev-ip@^1.0.1:
resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0"
integrity sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=
diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
dir-glob@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
@ -3844,9 +3745,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.830:
version "1.3.832"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.832.tgz#b947205525a7825eff9b39566140d5471241c244"
integrity sha512-x7lO8tGoW0CyV53qON4Lb5Rok9ipDelNdBIAiYUZ03dqy4u9vohMM1qV047+s/hiyJiqUWX/3PNwkX3kexX5ig==
version "1.3.833"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.833.tgz#e1394eb32ab8a9430ffd7d5adf632ce6c3b05e18"
integrity sha512-h+9aVaUHjyunLqtCjJF2jrJ73tYcJqo2cCGKtVAXH9WmnBsb8hiChRQ0P1uXjdxR6Wcfxibephy41c1YlZA/pA==
emoji-regex@^7.0.1:
version "7.0.3"
@ -4143,13 +4044,6 @@ eslint-utils@^2.1.0:
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
dependencies:
eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
@ -4535,6 +4429,13 @@ fd-slicer@~1.1.0:
dependencies:
pend "~1.2.0"
fetch-blob@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.2.tgz#6bc438675f3851ecea51758ac91f6a1cd1bacabd"
integrity sha512-hunJbvy/6OLjCD0uuhLdp0mMPzP/yd2ssd1t2FCJsaA7wkWhpbp9xfuNVpv7Ll4jFhzp6T4LAupSiV9uOeg0VQ==
dependencies:
web-streams-polyfill "^3.0.3"
figures@^1.3.5:
version "1.7.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
@ -5240,14 +5141,14 @@ graphql-request@^3.5.0:
extract-files "^9.0.0"
form-data "^3.0.0"
graphql-tag@^2.10.3, graphql-tag@^2.12.5:
graphql-tag@^2.12.5:
version "2.12.5"
resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.5.tgz#5cff974a67b417747d05c8d9f5f3cb4495d0db8f"
integrity sha512-5xNhP4063d16Pz3HBtKprutsPrmHZi5IdUGOWRxA2B6VF7BIRGOHZ5WQvDmJXZuPcBg7rYwaFxvQYjqkSdR3TQ==
dependencies:
tslib "^2.1.0"
graphql@^15.0.0, graphql@^15.5.3:
graphql@^15.5.3:
version "15.5.3"
resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.3.tgz#c72349017d5c9f5446a897fe6908b3186db1da00"
integrity sha512-sM+jXaO5KinTui6lbK/7b7H/Knj9BpjGxZ+Ki35v7YbUJxxdBCUqNM0h3CRVU1ZF9t5lNiBzvBCSYPvIwxPOQA==
@ -6907,11 +6808,6 @@ make-dir@^3.0.2, make-dir@^3.1.0:
dependencies:
semver "^6.0.0"
make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
make-iterator@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6"
@ -7349,6 +7245,14 @@ node-fetch@^2.6.1:
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.2.tgz#986996818b73785e47b1965cc34eb093a1d464d0"
integrity sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA==
node-fetch@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.0.0.tgz#79da7146a520036f2c5f644e4a26095f17e411ea"
integrity sha512-bKMI+C7/T/SPU1lKnbQbwxptpCrG9ashG+VkytmXCPZyuM9jB6VU+hY0oi4lC8LxTtAeWdckNCTa3nrGsAdA3Q==
dependencies:
data-uri-to-buffer "^3.0.1"
fetch-blob "^3.1.2"
node-releases@^1.1.75:
version "1.1.75"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.75.tgz#6dd8c876b9897a1b8e5a02de26afa79bb54ebbfe"
@ -8503,10 +8407,10 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
prettier@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d"
integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==
prettier@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.0.tgz#85bdfe0f70c3e777cf13a4ffff39713ca6f64cba"
integrity sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ==
pretty-bytes@^5.6.0:
version "5.6.0"
@ -9573,10 +9477,10 @@ source-map-resolve@^0.5.0:
source-map-url "^0.4.0"
urix "^0.1.0"
source-map-support@^0.5.17, source-map-support@~0.5.12, source-map-support@~0.5.19:
version "0.5.19"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
source-map-support@~0.5.12, source-map-support@~0.5.19:
version "0.5.20"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
@ -10152,10 +10056,10 @@ tempfile@^2.0.0:
temp-dir "^1.0.0"
uuid "^3.0.1"
terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.3:
version "5.2.3"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.3.tgz#4852c91f709a4ea2bcf324cf48e7e88124cda0cc"
integrity sha512-eDbuaDlXhVaaoKuLD3DTNTozKqln6xOG6Us0SzlKG5tNlazG+/cdl8pm9qiF1Di89iWScTI0HcO+CDcf2dkXiw==
terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4:
version "5.2.4"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1"
integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==
dependencies:
jest-worker "^27.0.6"
p-limit "^3.1.0"
@ -10367,17 +10271,6 @@ trough@^1.0.0:
resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
ts-node@8.9.1:
version "8.9.1"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.1.tgz#2f857f46c47e91dcd28a14e052482eb14cfd65a5"
integrity sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ==
dependencies:
arg "^4.1.0"
diff "^4.0.1"
make-error "^1.1.1"
source-map-support "^0.5.17"
yn "3.1.1"
tsconfig-paths@^3.11.0:
version "3.11.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36"
@ -10388,7 +10281,7 @@ tsconfig-paths@^3.11.0:
minimist "^1.2.0"
strip-bom "^3.0.0"
tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@ -10398,13 +10291,6 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
dependencies:
tslib "^1.8.1"
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@ -10498,16 +10384,6 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc"
integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==
typescript@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.2.tgz#6d618640d430e3569a1dfb44f7d7e600ced3ee86"
integrity sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==
ua-parser-js@^0.7.28:
version "0.7.28"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31"
@ -10835,6 +10711,11 @@ watchpack@^2.2.0:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
web-streams-polyfill@^3.0.3:
version "3.1.1"
resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.1.1.tgz#1516f2d4ea8f1bdbfed15eb65cb2df87098c8364"
integrity sha512-Czi3fG883e96T4DLEPRvufrF2ydhOOW1+1a6c3gNjH2aIh50DNFBdfwh2AKoOf1rXvpvavAoA11Qdq9+BKjE0Q==
webpack-assets-manifest@^5.0.6:
version "5.0.6"
resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-5.0.6.tgz#1fe7baf9b57f2d28ff09fcaef3d678cc15912b88"
@ -11020,9 +10901,9 @@ write-file-atomic@^3.0.3:
typedarray-to-buffer "^3.1.5"
ws@^8.0.0:
version "8.2.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.1.tgz#bdd92b3c56fdb47d2379b5ae534281922cc5bd12"
integrity sha512-XkgWpJU3sHU7gX8f13NqTn6KQ85bd1WU7noBHTT8fSohx7OS1TPY8k+cyRPCzFkia7C4mM229yeHr1qK9sM4JQ==
version "8.2.2"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.2.tgz#ca684330c6dd6076a737250ed81ac1606cb0a63e"
integrity sha512-Q6B6H2oc8QY3llc3cB8kVmQ6pnJWVQbP7Q5algTcIxx7YEpc0oU4NBVHlztA7Ekzfhw2r0rPducMUiCGWKQRzw==
ws@~7.4.2:
version "7.4.6"
@ -11152,11 +11033,6 @@ yeast@0.1.2:
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"

Loading…
Cancel
Save