Refactor many things

This commit is contained in:
Amit Jakubowicz 2019-10-04 17:21:47 +02:00
parent 65fa487d4e
commit 4425b8bc7d
13 changed files with 380 additions and 62 deletions

View File

@ -14,16 +14,15 @@ RUN apt-get install -y nodejs yarn nginx
# application
RUN mkdir /opt/client
COPY ./dist ./opt/client
COPY ./package.json /opt/client
COPY ./yarn.lock /opt/client
COPY ./dist/ssr ./opt/ssr
COPY ./package.json /opt/ssr
COPY ./yarn.lock /opt/ssr
COPY ./client.nginx /etc/nginx/sites-available/default
RUN mkdir /var/www/qpa
COPY ./bin /var/www/qpa
COPY ./dist/static/. /var/www/qpa
RUN (cd /opt/client; yarn install --production)
WORKDIR /opt/client
WORKDIR /opt/ssr
ENTRYPOINT service nginx start; node SSR/index.js
ENTRYPOINT service nginx start; node ssr-server.js

View File

@ -6,9 +6,9 @@
"private": true,
"scripts": {
"build": "yarn client-build; yarn ssr-build",
"client-build": "webpack --config ./webpack.config.ts",
"ssr-build": "tsc; cp packages/qpa-ssr/*.mustache dist/SSR/",
"start": "NODE_ENV=development webpack-dev-server --config ./webpack.config.ts --hot --progress",
"client-build": "(cd packages/qpa; yarn build)",
"ssr-build": "(cd packages/qpa-ssr; yarn build)",
"start": "NODE_ENV=development webpack-dev-server --config packages/qpa/webpack.config.ts --hot --progress",
"ssr": "API_URL=http://alpha.quepasaalpujarra.com/graphql ts-node packages/qpa-ssr/index.ts",
"release": "docker build -t eu.gcr.io/qpa-staging-237606/web:$TAG .; docker push eu.gcr.io/qpa-staging-237606/web:$TAG"
},
@ -17,41 +17,14 @@
],
"dependencies": {
"@babel/node": "^7.6.2",
"@emotion/core": "^10.0.15",
"@emotion/styled": "^10.0.12",
"@types/mustache": "^0.8.32",
"@types/react-router-dom": "^4.3.3",
"apollo-cache-inmemory": "^1.3.8",
"apollo-client": "^2.4.5",
"apollo-link": "^1.2.12",
"apollo-link-http": "^1.5.14",
"apollo-link-logger": "^1.2.3",
"date-fns": "^1.30.1",
"emotion": "^10.0.14",
"emotion-server": "^10.0.14",
"express": "^4.17.1",
"file-loader": "^4.2.0",
"formik": "^1.4.1",
"graphql": "^14.0.2",
"graphql-tag": "^2.9.2",
"graphql-tools": "^4.0.3",
"jest": "^24.8.0",
"jest-cli": "^24.8.0",
"keycode": "^2.2.0",
"mustache": "^3.0.1",
"node-fetch": "^2.6.0",
"nodemon": "^1.19.1",
"qpa-components": "0.0.1",
"qpa-message-center": "0.0.1",
"ramda": "^0.26.1",
"react": "^16.8.6",
"react-apollo": "^2.2.4",
"react-dom": "^16.8.6",
"react-router": "^5.0.0",
"react-router-dom": "^5.0.0",
"styled-components": "^4.1.3",
"typeface-fira-sans": "^0.0.75",
"url-loader": "^2.1.0"
"qpa": "0.0.1"
},
"devDependencies": {
"@babel/cli": "^7.2.3",

View File

@ -3,7 +3,7 @@ import * as ReactDOM from "react-dom"
import App from "../qpa/App/App"
import Providers from "../qpa/App/Providers"
const container = document.getElementById("app")
const container = (document).getElementById("app")
ReactDOM.hydrate(
<Providers>
<App />

View File

@ -3,7 +3,7 @@ import {ApolloClient} from "apollo-client"
import * as React from "react"
import {ApolloProvider} from "react-apollo"
import { StaticRouter } from "react-router"
import {AppContextProvider} from "../qpa/App/Context/AppContext"
import {AppContextProvider} from "qpa/App/Context/AppContext"
interface Props {
children: React.ReactChild | React.ReactChildren

View File

@ -11,7 +11,7 @@ import fetch from "node-fetch"
import * as path from "path"
import * as React from "react"
import { getDataFromTree } from "react-apollo"
import App from "../qpa/App/App"
import App from "qpa/App/App"
import SSRProviders from "./SSRProviders"
export const httpSSRHandler = async (req: Request, res: Response) => {
res.status(200)
@ -42,15 +42,27 @@ export const httpSSRHandler = async (req: Request, res: Response) => {
const appBody = renderStylesToString(appWithData)
const initialState = graphqlClient.extract()
const template = fs.readFileSync(
path.join(__dirname, "./index.html.mustache"),
"utf-8",
)
const result = Mustache.render(template, {
appBody,
apolloData: JSON.stringify(initialState),
})
res.send(result)
}
const template = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Quepasa Alpujarra</title>
<script type="application/javascript">
__APOLLO_DATA__ = {{{ apolloData }}};
</script>
</head>
<body>
<div id="app">{{{ appBody }}}</div>
<script type="application/javascript" src="/bundle.js"></script>
</body>
</html>
`

View File

@ -0,0 +1,88 @@
{
"name": "qpa-ssr",
"version": "0.0.1",
"main": "index.ts",
"license": "private",
"private": true,
"scripts": {
"build": "webpack --config ./webpack.config.ts --progress",
"start": "NODE_ENV=development webpack-dev-server --config ./webpack.config.ts --hot --progress"
},
"dependencies": {
"@babel/node": "^7.6.2",
"@emotion/core": "^10.0.15",
"@emotion/styled": "^10.0.12",
"@types/mustache": "^0.8.32",
"@types/react-router-dom": "^4.3.3",
"apollo-cache-inmemory": "^1.3.8",
"apollo-client": "^2.4.5",
"apollo-link": "^1.2.12",
"apollo-link-http": "^1.5.14",
"apollo-link-logger": "^1.2.3",
"date-fns": "^1.30.1",
"emotion": "^10.0.14",
"emotion-server": "^10.0.14",
"express": "^4.17.1",
"file-loader": "^4.2.0",
"formik": "^1.4.1",
"graphql": "^14.0.2",
"graphql-tag": "^2.9.2",
"graphql-tools": "^4.0.3",
"jest": "^24.8.0",
"jest-cli": "^24.8.0",
"keycode": "^2.2.0",
"mustache": "^3.0.1",
"node-fetch": "^2.6.0",
"nodemon": "^1.19.1",
"qpa-components": "0.0.1",
"qpa-message-center": "0.0.1",
"ramda": "^0.26.1",
"react": "^16.8.6",
"react-apollo": "^2.2.4",
"react-dom": "^16.8.6",
"react-router": "^5.0.0",
"react-router-dom": "^5.0.0",
"styled-components": "^4.1.3",
"typeface-fira-sans": "^0.0.75",
"typescript-register": "^1.1.0",
"url-loader": "^2.1.0"
},
"devDependencies": {
"@babel/cli": "^7.2.3",
"@babel/core": "^7.3.3",
"@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/plugin-proposal-object-rest-spread": "^7.3.2",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-syntax-export-default-from": "^7.2.0",
"@babel/plugin-syntax-jsx": "^7.2.0",
"@babel/preset-env": "^7.3.1",
"@babel/preset-react": "^7.0.0",
"@babel/preset-typescript": "^7.3.3",
"@emotion/babel-preset-css-prop": "^10.0.9",
"@types/express": "^4.17.1",
"@types/jest": "^24.0.6",
"@types/node": "^11.9.4",
"@types/react": "^16.4.18",
"@types/react-dom": "^16.8.4",
"@types/react-loadable": "^5.4.1",
"@types/react-router": "^4.0.31",
"@types/styled-components": "^4.1.10",
"@types/webpack": "^4.4.27",
"@types/webpack-dev-server": "^3.1.2",
"apollo-link-context": "^1.0.14",
"babel-loader": "^8.0.5",
"babel-plugin-styled-components": "^1.10.0",
"html-webpack-plugin": "^3.2.0",
"react-hot-loader": "^4.8.2",
"ts-jest": "^24.0.0",
"ts-node": "^8.0.2",
"tslint": "^5.12.1",
"tslint-config-prettier": "^1.16.0",
"typescript": "^3.5.3",
"webpack": "^4.30.0",
"webpack-cli": "^3.2.3",
"webpack-dev-server": "^3.3.1",
"webpack-html-plugin": "^0.1.1",
"yarn": "^1.13.0"
}
}

View File

@ -2,14 +2,16 @@
"compilerOptions": {
"skipLibCheck": true,
"sourceMap": true,
"esModuleInterop": true,
"jsx": "react",
"module": "es2015",
"moduleResolution": "node",
"lib": [
"dom",
"es7",
"esnext.asynciterable"
]
}
},
"include": [
"packages", "@types/index.d.ts"],
"exclude": [
".*/__tests__/.*", "node_modules", "dist", "lib", "__tests__"
]
}

View File

@ -0,0 +1,71 @@
import * as path from "path"
import * as webpack from "webpack"
const config: webpack.Configuration = {
entry: "./index.ts",
resolve: {
extensions: [".js", ".jsx", ".ts", ".tsx"],
},
target: "node",
devServer: {
historyApiFallback: true,
hot: true,
proxy: {
"/graphql": {
redirect: false,
changeOrigin: true,
target: `https://alpha.quepasaalpujarra.com`,
},
"/api": {
redirect: false,
changeOrigin: true,
target: `https://alpha.quepasaalpujarra.com`,
},
},
},
module: {
rules: [
{
exclude: path.resolve(__dirname, "node_modules"),
test: /\.tsx?$/,
use: {
loader: "babel-loader",
options: {
presets: [
"@babel/typescript",
"@babel/react",
[
"@emotion/babel-preset-css-prop",
{
autoLabel: true,
labelFormat: "[local]",
},
],
],
plugins: [
"@babel/plugin-proposal-class-properties",
].filter(Boolean),
},
},
},
{
test: /\.(woff|woff2)$/i,
use: [
{
loader: "url-loader",
},
],
},
],
},
devtool: "@source-map",
output: {
path: path.resolve(__dirname, "../../dist/ssr"),
filename: "ssr-server.js",
publicPath: "/",
}
}
export default config

87
packages/qpa/package.json Normal file
View File

@ -0,0 +1,87 @@
{
"name": "qpa",
"version": "0.0.1",
"main": "index.ts",
"license": "private",
"private": true,
"scripts": {
"build": "webpack --config ./webpack.config.ts --progress",
"start": "NODE_ENV=development webpack-dev-server --config ./webpack.config.ts --hot --progress"
},
"dependencies": {
"@babel/node": "^7.6.2",
"@emotion/core": "^10.0.15",
"@emotion/styled": "^10.0.12",
"@types/mustache": "^0.8.32",
"@types/react-router-dom": "^4.3.3",
"apollo-cache-inmemory": "^1.3.8",
"apollo-client": "^2.4.5",
"apollo-link": "^1.2.12",
"apollo-link-http": "^1.5.14",
"apollo-link-logger": "^1.2.3",
"date-fns": "^1.30.1",
"emotion": "^10.0.14",
"emotion-server": "^10.0.14",
"express": "^4.17.1",
"file-loader": "^4.2.0",
"formik": "^1.4.1",
"graphql": "^14.0.2",
"graphql-tag": "^2.9.2",
"graphql-tools": "^4.0.3",
"jest": "^24.8.0",
"jest-cli": "^24.8.0",
"keycode": "^2.2.0",
"mustache": "^3.0.1",
"node-fetch": "^2.6.0",
"nodemon": "^1.19.1",
"qpa-components": "0.0.1",
"qpa-message-center": "0.0.1",
"ramda": "^0.26.1",
"react": "^16.8.6",
"react-apollo": "^2.2.4",
"react-dom": "^16.8.6",
"react-router": "^5.0.0",
"react-router-dom": "^5.0.0",
"styled-components": "^4.1.3",
"typeface-fira-sans": "^0.0.75",
"url-loader": "^2.1.0"
},
"devDependencies": {
"@babel/cli": "^7.2.3",
"@babel/core": "^7.3.3",
"@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/plugin-proposal-object-rest-spread": "^7.3.2",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-syntax-export-default-from": "^7.2.0",
"@babel/plugin-syntax-jsx": "^7.2.0",
"@babel/preset-env": "^7.3.1",
"@babel/preset-react": "^7.0.0",
"@babel/preset-typescript": "^7.3.3",
"@emotion/babel-preset-css-prop": "^10.0.9",
"@types/express": "^4.17.1",
"@types/jest": "^24.0.6",
"@types/node": "^11.9.4",
"@types/react": "^16.4.18",
"@types/react-dom": "^16.8.4",
"@types/react-loadable": "^5.4.1",
"@types/react-router": "^4.0.31",
"@types/styled-components": "^4.1.10",
"@types/webpack": "^4.4.27",
"@types/webpack-dev-server": "^3.1.2",
"apollo-link-context": "^1.0.14",
"babel-loader": "^8.0.5",
"babel-plugin-styled-components": "^1.10.0",
"html-webpack-plugin": "^3.2.0",
"react-hot-loader": "^4.8.2",
"ts-jest": "^24.0.0",
"ts-node": "^8.0.2",
"tslint": "^5.12.1",
"tslint-config-prettier": "^1.16.0",
"typescript": "^3.5.3",
"webpack": "^4.30.0",
"webpack-cli": "^3.2.3",
"webpack-dev-server": "^3.3.1",
"webpack-html-plugin": "^0.1.1",
"yarn": "^1.13.0"
}
}

View File

@ -0,0 +1,16 @@
{
"compilerOptions": {
"skipLibCheck": true,
"sourceMap": true,
"jsx": "react",
"lib": [
"es7",
"esnext.asynciterable"
]
},
"include": [
"packages", "@types/index.d.ts"],
"exclude": [
".*/__tests__/.*", "node_modules", "dist", "lib", "__tests__"
]
}

View File

@ -1,9 +1,9 @@
import HtmlWebpackPlugin from "html-webpack-plugin"
import * as HtmlWebpackPlugin from "html-webpack-plugin"
import * as path from "path"
import * as webpack from "webpack"
const config: webpack.Configuration = {
entry: "./packages/qpa/App/index.tsx",
entry: "./App/index.tsx",
resolve: {
extensions: [".js", ".jsx", ".ts", ".tsx"],
},
@ -62,13 +62,13 @@ const config: webpack.Configuration = {
},
devtool: "@source-map",
output: {
path: path.resolve(__dirname, "./dist"),
path: path.resolve(__dirname, "../../dist/static"),
filename: "bundle.js",
publicPath: "/",
},
plugins: [new HtmlWebpackPlugin({
title: "blabla",
template: "./packages/qpa/index-dev.html",
template: "./index-dev.html",
})],
}

View File

@ -2,18 +2,15 @@
"compilerOptions": {
"skipLibCheck": true,
"sourceMap": true,
"esModuleInterop": true,
"jsx": "react",
"module": "commonjs",
"outDir": "dist/",
"lib": [
"dom",
"es7",
"esnext.asynciterable"
"esnext.asynciterable",
"dom"
]
},
"include": [
"packages/qpa", "@types/index.d.ts"],
"packages", "@types/index.d.ts"],
"exclude": [
".*/__tests__/.*", "node_modules", "dist", "lib", "__tests__"
]

View File

@ -1704,6 +1704,11 @@ ansi-html@0.0.7:
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
ansi-regex@^0.2.0, ansi-regex@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
integrity sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@ -1719,6 +1724,11 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
ansi-styles@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
integrity sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@ -2484,6 +2494,17 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.2:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174"
integrity sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=
dependencies:
ansi-styles "^1.1.0"
escape-string-regexp "^1.0.0"
has-ansi "^0.1.0"
strip-ansi "^0.3.0"
supports-color "^0.2.0"
change-case@2.3.x:
version "2.3.1"
resolved "https://registry.yarnpkg.com/change-case/-/change-case-2.3.1.tgz#2c4fde3f063bb41d00cd68e0d5a09db61cbe894f"
@ -3457,7 +3478,7 @@ escape-html@~1.0.3:
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
escape-string-regexp@^1.0.5:
escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
@ -4144,6 +4165,13 @@ har-validator@~5.1.0:
ajv "^6.5.5"
har-schema "^2.0.0"
has-ansi@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e"
integrity sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=
dependencies:
ansi-regex "^0.2.0"
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@ -7281,6 +7309,13 @@ sane@^4.0.3:
minimist "^1.1.1"
walker "~1.0.5"
sanitize-filename@^1.3.0:
version "1.6.3"
resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378"
integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==
dependencies:
truncate-utf8-bytes "^1.0.0"
sax@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@ -7785,6 +7820,13 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
strip-ansi@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220"
integrity sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=
dependencies:
ansi-regex "^0.2.1"
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@ -7857,6 +7899,11 @@ supports-color@6.1.0, supports-color@^6.1.0:
dependencies:
has-flag "^3.0.0"
supports-color@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=
supports-color@^5.2.0, supports-color@^5.3.0, supports-color@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@ -8087,6 +8134,13 @@ trim-right@^1.0.1:
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
truncate-utf8-bytes@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
integrity sha1-QFkjkJWS1W94pYGENLC3hInKXys=
dependencies:
utf8-byte-length "^1.0.1"
ts-invariant@^0.4.0, ts-invariant@^0.4.2:
version "0.4.4"
resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86"
@ -8198,6 +8252,20 @@ typeface-fira-sans@^0.0.75:
resolved "https://registry.yarnpkg.com/typeface-fira-sans/-/typeface-fira-sans-0.0.75.tgz#6caaa7c7298f34838476af3c37dc57d2f1621132"
integrity sha512-PeaE4JCzBxbrp3oJzLjz+EVMjMIvrqnpmC7cp+HKYgPFbd9j4TAjGWRCEeaY/j9PRbTMICbrTuvanQFCmcjrYQ==
typescript-register@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/typescript-register/-/typescript-register-1.1.0.tgz#3054f9242e96194ded4284af09f06758c370fd1a"
integrity sha1-MFT5JC6WGU3tQoSvCfBnWMNw/Ro=
dependencies:
chalk "^0.5.1"
sanitize-filename "^1.3.0"
typescript "^1.4.1"
typescript@^1.4.1:
version "1.8.10"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-1.8.10.tgz#b475d6e0dff0bf50f296e5ca6ef9fbb5c7320f1e"
integrity sha1-tHXW4N/wv1DyluXKbvn7tccyDx4=
typescript@^3.5.3:
version "3.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977"
@ -8400,6 +8468,11 @@ use@^3.1.0:
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
utf8-byte-length@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61"
integrity sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"