Add changelog

This commit is contained in:
Tom Moor 2017-11-28 22:46:26 -08:00
parent 9f3e739952
commit 21c1c1797e
9 changed files with 296 additions and 12 deletions

10
CHANGELOG.md Normal file
View File

@ -0,0 +1,10 @@
## Nov 28th, 2017
- Added the changelog youre looking at!
- Fixed some issues with collection homepage
---
## Nov 23rd, 2017
- Initial open source release.

View File

@ -101,6 +101,7 @@
"fbemitter": "^2.1.1",
"file-loader": "0.9.0",
"flow-typed": "^2.1.2",
"fs-extra": "^4.0.2",
"history": "3.0.0",
"html-webpack-plugin": "2.17.0",
"http-errors": "1.4.0",
@ -147,6 +148,7 @@
"react-dropzone": "4.2.1",
"react-helmet": "^5.2.0",
"react-keydown": "^1.7.3",
"react-markdown": "^3.0.2",
"react-medium-image-zoom": "^3.0.2",
"react-modal": "^3.1.2",
"react-portal": "^4.0.0",

View File

@ -3,10 +3,12 @@ import React from 'react';
import Grid from 'styled-components-grid';
import { Helmet } from 'react-helmet';
import styled from 'styled-components';
import Header from './components/Header';
const Container = styled.div`
max-width: 720px;
margin: 0 auto;
padding: 0 2em;
pre {
padding: 0.5em 1em;
@ -56,20 +58,17 @@ export default function Pricing() {
return (
<Grid>
<Helmet>
<title>Developer API - Outline</title>
<title>API Documentation - Outline</title>
</Helmet>
<Header>
<h1>Documentation</h1>
<p>The API is the heart and soul of Outline.</p>
</Header>
<Container>
<h1>Outline API</h1>
<p>
First thing we build for Outline was its API. Its the heart and soul
of the service and as developers, its our mission to make the API as
rich and easy to use as possible.
</p>
<p>
<i>
While Outline is still in public beta, we might make small
adjustments, including breaking changes to the API.
</i>
As developers, its our mission to make the API as great as possible.
While Outline is still in public beta, we might make small
adjustments, including breaking changes to the API.
</p>
<h2>Making requests</h2>
<p>

40
server/pages/Changelog.js Normal file
View File

@ -0,0 +1,40 @@
// @flow
import React from 'react';
import styled from 'styled-components';
import Grid from 'styled-components-grid';
import ReactMarkdown from 'react-markdown';
import { Helmet } from 'react-helmet';
import Header from './components/Header';
import { color } from '../../shared/styles/constants';
function Changelog({ body }: { body: string }) {
return (
<Grid>
<Helmet>
<title>Changelog</title>
</Helmet>
<Header>
<h1>Changelog</h1>
<p>
Were building in public. Heres what weve been changing recently.
</p>
</Header>
<Container source={body} />
</Grid>
);
}
const Container = styled(ReactMarkdown)`
width: 100%;
max-width: 720px;
margin: 0 auto;
padding: 0 2em;
hr {
border: 0;
border-bottom: 1px solid ${color.slateLight};
margin: 4em 0;
}
`;
export default Changelog;

View File

@ -0,0 +1,22 @@
// @flow
import styled from 'styled-components';
import { color } from '../../../shared/styles/constants';
const Header = styled.div`
width: 100%;
padding: 0 2em 2em;
text-align: center;
background: ${color.slateLight};
margin-bottom: 2em;
p {
max-width: 720px;
margin: 0 auto;
}
h1 {
font-size: 2.5em;
}
`;
export default Header;

View File

@ -5,6 +5,7 @@ import breakpoint from 'styled-components-breakpoint';
import {
signin,
developers,
changelog,
githubUrl,
spectrumUrl,
blogUrl,
@ -23,6 +24,9 @@ function TopNavigation() {
<MenuItemDesktop>
<a href={blogUrl()}>Blog</a>
</MenuItemDesktop>
<MenuItemDesktop>
<a href={changelog()}>Changelog</a>
</MenuItemDesktop>
<MenuItem>
<a href={developers()}>API</a>
</MenuItem>

View File

@ -1,6 +1,7 @@
// @flow
import React from 'react';
import path from 'path';
import fs from 'fs-extra';
import httpErrors from 'http-errors';
import Koa from 'koa';
import Router from 'koa-router';
@ -12,6 +13,7 @@ import { slackAuth } from '../shared/utils/routeHelpers';
import Home from './pages/Home';
import About from './pages/About';
import Changelog from './pages/Changelog';
import Pricing from './pages/Pricing';
import Api from './pages/Api';
@ -62,6 +64,11 @@ router.get('/auth/slack/install', async ctx => {
router.get('/about', ctx => renderpage(ctx, <About />));
router.get('/pricing', ctx => renderpage(ctx, <Pricing />));
router.get('/developers', ctx => renderpage(ctx, <Api />));
router.get('/changelog', async ctx => {
const data = await fs.readFile(path.join(__dirname, '../CHANGELOG.md'));
const body = data.toString();
return renderpage(ctx, <Changelog body={body} />);
});
// home page
router.get('/', async ctx => {

View File

@ -45,6 +45,10 @@ export function developers(): string {
return '/developers';
}
export function changelog(): string {
return '/changelog';
}
export function signin(): string {
return '/auth/slack';
}

198
yarn.lock
View File

@ -998,6 +998,10 @@ babylon@^6.17.0, babylon@^6.17.4, babylon@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
bail@^1.0.0:
version "1.0.2"
resolved "https://registry.npmjs.org/bail/-/bail-1.0.2.tgz#f7d6c1731630a9f9f0d4d35ed1f962e2074a1764"
balanced-match@^0.4.2:
version "0.4.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
@ -1445,6 +1449,18 @@ change-case@3.0.x:
upper-case "^1.1.1"
upper-case-first "^1.1.0"
character-entities-legacy@^1.0.0:
version "1.1.1"
resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz#f40779df1a101872bb510a3d295e1fccf147202f"
character-entities@^1.0.0:
version "1.2.1"
resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz#f76871be5ef66ddb7f8f8e3478ecc374c27d6dca"
character-reference-invalid@^1.0.0:
version "1.1.1"
resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz#942835f750e4ec61a308e60c2ef8cc1011202efc"
charenc@~0.0.1:
version "0.0.2"
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
@ -1634,6 +1650,10 @@ code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
collapse-white-space@^1.0.2:
version "1.0.3"
resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz#4b906f670e5a963a87b76b0e1689643341b6023c"
color-convert@^1.3.0, color-convert@^1.9.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
@ -3347,6 +3367,14 @@ fs-extra@^4.0.0, fs-extra@^4.0.1:
jsonfile "^3.0.0"
universalify "^0.1.0"
fs-extra@^4.0.2:
version "4.0.2"
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b"
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.1.0"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@ -4219,6 +4247,17 @@ is-absolute@^0.2.3:
is-relative "^0.2.1"
is-windows "^0.2.0"
is-alphabetical@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.1.tgz#c77079cc91d4efac775be1034bf2d243f95e6f08"
is-alphanumerical@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz#dfb4aa4d1085e33bdb61c2dee9c80e9c6c19f53b"
dependencies:
is-alphabetical "^1.0.0"
is-decimal "^1.0.0"
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@ -4233,6 +4272,10 @@ is-bluebird@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2"
is-buffer@^1.1.4:
version "1.1.6"
resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
is-buffer@^1.1.5, is-buffer@~1.1.1:
version "1.1.5"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
@ -4263,6 +4306,10 @@ is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
is-decimal@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.1.tgz#f5fb6a94996ad9e8e3761fbfbd091f1fca8c4e82"
is-dotfile@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
@ -4315,6 +4362,10 @@ is-glob@^2.0.0, is-glob@^2.0.1:
dependencies:
is-extglob "^1.0.0"
is-hexadecimal@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69"
is-image@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-image/-/is-image-1.0.1.tgz#6fd51a752a1a111506d060d952118b0b989b426e"
@ -4474,6 +4525,10 @@ is-utf8@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
is-whitespace-character@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz#9ae0176f3282b65457a1992cdb084f8a5f833e3b"
is-window@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d"
@ -4482,6 +4537,10 @@ is-windows@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
is-word-character@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.1.tgz#5a03fa1ea91ace8a6eb0c7cd770eb86d65c8befb"
is@~0.2.6:
version "0.2.7"
resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562"
@ -4922,6 +4981,12 @@ jsonfile@^3.0.0:
optionalDependencies:
graceful-fs "^4.1.6"
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
optionalDependencies:
graceful-fs "^4.1.6"
jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
@ -5710,6 +5775,10 @@ map-stream@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
markdown-escapes@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.1.tgz#1994df2d3af4811de59a6714934c2b2292734518"
marked-terminal@^1.6.2:
version "1.7.0"
resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-1.7.0.tgz#c8c460881c772c7604b64367007ee5f77f125904"
@ -6569,6 +6638,17 @@ parse-asn1@^5.0.0:
evp_bytestokey "^1.0.0"
pbkdf2 "^3.0.3"
parse-entities@^1.0.2:
version "1.1.1"
resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz#8112d88471319f27abae4d64964b122fe4e1b890"
dependencies:
character-entities "^1.0.0"
character-entities-legacy "^1.0.0"
character-reference-invalid "^1.0.0"
is-alphanumerical "^1.0.0"
is-decimal "^1.0.0"
is-hexadecimal "^1.0.0"
parse-filepath@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73"
@ -7329,6 +7409,16 @@ react-keydown@^1.7.3:
dependencies:
core-js "^2.5.0"
react-markdown@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/react-markdown/-/react-markdown-3.0.2.tgz#e6e25a9c141a5dbada2fb016513cc5398515205c"
dependencies:
prop-types "^15.6.0"
remark-parse "^4.0.0"
unified "^6.1.5"
unist-util-visit "^1.1.3"
xtend "^4.0.1"
react-medium-image-zoom@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-3.0.2.tgz#13bb39a2aa2c4d63821fd018f8b4a93cd3316cd4"
@ -7652,6 +7742,26 @@ relateurl@0.2.x:
version "0.2.7"
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
remark-parse@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-4.0.0.tgz#99f1f049afac80382366e2e0d0bd55429dd45d8b"
dependencies:
collapse-white-space "^1.0.2"
is-alphabetical "^1.0.0"
is-decimal "^1.0.0"
is-whitespace-character "^1.0.0"
is-word-character "^1.0.0"
markdown-escapes "^1.0.0"
parse-entities "^1.0.2"
repeat-string "^1.5.4"
state-toggle "^1.0.0"
trim "0.0.1"
trim-trailing-lines "^1.0.0"
unherit "^1.0.4"
unist-util-remove-position "^1.0.0"
vfile-location "^2.0.0"
xtend "^4.0.1"
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@ -7670,7 +7780,7 @@ repeat-element@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
repeat-string@^1.5.2:
repeat-string@^1.5.2, repeat-string@^1.5.4:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
@ -7690,6 +7800,10 @@ replace-ext@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
replace-ext@1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
request@^2.79.0, request@^2.81.0:
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
@ -8285,6 +8399,10 @@ staged-git-files@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35"
state-toggle@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.0.tgz#d20f9a616bb4f0c3b98b91922d25b640aa2bc425"
statuses@1, "statuses@>= 1.2.1 < 2", "statuses@>= 1.3.1 < 2", statuses@^1.0.0, statuses@^1.2.0, statuses@~1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
@ -8750,6 +8868,18 @@ trim-right@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
trim-trailing-lines@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz#7aefbb7808df9d669f6da2e438cac8c46ada7684"
trim@0.0.1:
version "0.0.1"
resolved "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
trough@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/trough/-/trough-1.0.1.tgz#a9fd8b0394b0ae8fff82e0633a0a36ccad5b5f86"
tryit@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
@ -8848,10 +8978,29 @@ underscore@^1.7.0:
version "1.8.3"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
unherit@^1.0.4:
version "1.1.0"
resolved "https://registry.npmjs.org/unherit/-/unherit-1.1.0.tgz#6b9aaedfbf73df1756ad9e316dd981885840cd7d"
dependencies:
inherits "^2.0.1"
xtend "^4.0.1"
"unicode@>= 0.3.1":
version "10.0.0"
resolved "https://registry.yarnpkg.com/unicode/-/unicode-10.0.0.tgz#e5d51c1db93b6c71a0b879e0b0c4af7e6fdf688e"
unified@^6.1.5:
version "6.1.6"
resolved "https://registry.npmjs.org/unified/-/unified-6.1.6.tgz#5ea7f807a0898f1f8acdeefe5f25faa010cc42b1"
dependencies:
bail "^1.0.0"
extend "^3.0.0"
is-plain-obj "^1.1.0"
trough "^1.0.0"
vfile "^2.0.0"
x-is-function "^1.0.4"
x-is-string "^0.1.0"
uniq@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
@ -8870,6 +9019,26 @@ unique-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b"
unist-util-is@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.1.tgz#0c312629e3f960c66e931e812d3d80e77010947b"
unist-util-remove-position@^1.0.0:
version "1.1.1"
resolved "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz#5a85c1555fc1ba0c101b86707d15e50fa4c871bb"
dependencies:
unist-util-visit "^1.1.0"
unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz#3ccbdc53679eed6ecf3777dd7f5e3229c1b6aa3c"
unist-util-visit@^1.1.0, unist-util-visit@^1.1.3:
version "1.2.0"
resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.2.0.tgz#9dc78d1f95cd242e865f7f93f327d3296bb9a718"
dependencies:
unist-util-is "^2.1.1"
universalify@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"
@ -9039,6 +9208,25 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
vfile-location@^2.0.0:
version "2.0.2"
resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.2.tgz#d3675c59c877498e492b4756ff65e4af1a752255"
vfile-message@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.0.tgz#a6adb0474ea400fa25d929f1d673abea6a17e359"
dependencies:
unist-util-stringify-position "^1.1.1"
vfile@^2.0.0:
version "2.3.0"
resolved "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a"
dependencies:
is-buffer "^1.1.4"
replace-ext "1.0.0"
unist-util-stringify-position "^1.0.0"
vfile-message "^1.0.0"
vhost@~3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/vhost/-/vhost-3.0.2.tgz#2fb1decd4c466aa88b0f9341af33dc1aff2478d5"
@ -9267,6 +9455,14 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
x-is-function@^1.0.4:
version "1.0.4"
resolved "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e"
x-is-string@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
x-xss-protection@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/x-xss-protection/-/x-xss-protection-1.0.0.tgz#898afb93869b24661cf9c52f9ee8db8ed0764dd9"