From eb236cf602a693f2fc8b250c87efc148b9e64cc5 Mon Sep 17 00:00:00 2001 From: Admir Sabanovic Date: Fri, 19 May 2017 10:37:11 +0200 Subject: [PATCH] refactor --- .gitignore | 4 +- {client/router => app/auth}/auth-defender.js | 2 +- {client => app}/auth/authentication.js | 10 --- {client => app}/components/article.comp.js | 65 ++++++++++++-- .../components/comment-preview.comp.js | 0 .../components/comments-container.comp.js | 0 .../components/layout/c-banner.comp.js | 0 .../components/layout/c-footer.comp.js | 0 .../components/layout/c-nav.comp.js | 1 - {client => app}/components/layout/index.js | 0 .../components/popular-tags.comp.js | 0 app/config.js | 3 + app/config.js.example | 3 + {client => app/core}/component-registry.js | 0 app/core/core.js | 85 +++++++++++++++++++ app/http/http.js | 33 +++++++ {client => app}/index.html | 12 +-- app/index.js | 19 +++++ {client => app}/pages/article-preview.comp.js | 9 +- {client => app}/pages/editor.comp.js | 0 {client => app}/pages/home.comp.js | 23 ++--- {client => app}/pages/login.comp.js | 2 - {client => app}/pages/profile.comp.js | 0 {client => app}/pages/register.comp.js | 0 {client => app}/pages/settings.comp.js | 0 {client => app}/router/router-handler.js | 6 +- {client => app}/router/router-outlet.js | 0 client/index.js | 83 ------------------ client/simple-template.html | 1 - package.json | 3 +- webpack.config.js | 6 +- webpack.config.prod.js | 6 +- yarn.lock | 34 +++++++- 33 files changed, 259 insertions(+), 151 deletions(-) rename {client/router => app/auth}/auth-defender.js (66%) rename {client => app}/auth/authentication.js (82%) rename {client => app}/components/article.comp.js (56%) rename {client => app}/components/comment-preview.comp.js (100%) rename {client => app}/components/comments-container.comp.js (100%) rename {client => app}/components/layout/c-banner.comp.js (100%) rename {client => app}/components/layout/c-footer.comp.js (100%) rename {client => app}/components/layout/c-nav.comp.js (99%) rename {client => app}/components/layout/index.js (100%) rename {client => app}/components/popular-tags.comp.js (100%) create mode 100644 app/config.js create mode 100644 app/config.js.example rename {client => app/core}/component-registry.js (100%) create mode 100644 app/core/core.js create mode 100644 app/http/http.js rename {client => app}/index.html (83%) create mode 100644 app/index.js rename {client => app}/pages/article-preview.comp.js (94%) rename {client => app}/pages/editor.comp.js (100%) rename {client => app}/pages/home.comp.js (89%) rename {client => app}/pages/login.comp.js (97%) rename {client => app}/pages/profile.comp.js (100%) rename {client => app}/pages/register.comp.js (100%) rename {client => app}/pages/settings.comp.js (100%) rename {client => app}/router/router-handler.js (91%) rename {client => app}/router/router-outlet.js (100%) delete mode 100644 client/index.js delete mode 100644 client/simple-template.html diff --git a/.gitignore b/.gitignore index 2f2efbb..dfb779b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,6 @@ .DS_Store Thumbs.db build -dist \ No newline at end of file +dist + +client/config.js \ No newline at end of file diff --git a/client/router/auth-defender.js b/app/auth/auth-defender.js similarity index 66% rename from client/router/auth-defender.js rename to app/auth/auth-defender.js index 8df0d18..e63a967 100644 --- a/client/router/auth-defender.js +++ b/app/auth/auth-defender.js @@ -1,4 +1,4 @@ -import {Authentication} from "../auth/authentication"; +import {Authentication} from "./authentication"; export class AuthDefender { static canActivate() { return Authentication.instance.auth; diff --git a/client/auth/authentication.js b/app/auth/authentication.js similarity index 82% rename from client/auth/authentication.js rename to app/auth/authentication.js index f72bc53..8063b54 100644 --- a/client/auth/authentication.js +++ b/app/auth/authentication.js @@ -6,21 +6,11 @@ export class Authentication { throw new Error('use instance'); } - var unparsedAuth = localStorage.getItem('auth'); - if (unparsedAuth) { - this._auth = JSON.parse(unparsedAuth); - } this._callbacks = []; return Authentication.inst; } get auth() { - if (this._auth) { - var unparsedAuth = localStorage.getItem('auth'); - if (unparsedAuth) { - this._auth = JSON.parse(unparsedAuth); - } - } return JSON.parse(localStorage.getItem('auth')); } diff --git a/client/components/article.comp.js b/app/components/article.comp.js similarity index 56% rename from client/components/article.comp.js rename to app/components/article.comp.js index 1e5b5e1..7ba793e 100644 --- a/client/components/article.comp.js +++ b/app/components/article.comp.js @@ -1,4 +1,5 @@ import {RouterHandler} from "../router/router-handler"; +import {Authentication} from "../auth/authentication"; "use strict"; export class ArticleComponent extends HTMLElement { @@ -10,8 +11,6 @@ export class ArticleComponent extends HTMLElement { heart: 0 }; this.updateHearts = this.updateHearts.bind(this); - - this.$tagList = null; } static get observedAttributes() { @@ -29,7 +28,6 @@ export class ArticleComponent extends HTMLElement { connectedCallback() { this.innerHTML = this.render(); - // this.$tagList = this.querySelector('ul.tag-list'); const button = this.querySelector('#ion-heart'); button.addEventListener('click', this.updateHearts); @@ -47,10 +45,59 @@ export class ArticleComponent extends HTMLElement { } - updateHearts() { - var span = this.querySelector('#ion-heart > span'); - this.model.favoritesCount = this.model.favoritesCount + 1; - span.innerHTML = this.model.favoritesCount; + updateHearts(e) { + e.preventDefault(); + var auth = Authentication.instance.auth; + if (!auth) { + RouterHandler.getInstance.router.navigate('#/login'); + } + let headers = { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/json', + 'Authorization': 'Token ' + auth.token + }; + console.log(this.model); + if (this.model.favorited) { + this.unfavoritArticle(headers); + } else { + this.favoriteArticle(headers); + } + // POST /api/articles/:slug/favorite + + // DELETE /api/articles/:slug/favorite + } + + + favoriteArticle(headers) { + fetch('https://conduit.productionready.io/api/articles/' + this.model.slug + '/favorite', { + headers: headers, + method: 'POST' + }).then(function (response) { + return response.json(); + }).then(r => { + console.log(r); + this.model.favorited = r.article.favorited; + var span = this.querySelector('#ion-heart > span'); + span.parentNode.classList.add('active'); + this.model.favoritesCount = this.model.favoritesCount + 1; + span.innerHTML = this.model.favoritesCount; + }); + } + + unfavoritArticle(headers) { + fetch('https://conduit.productionready.io/api/articles/' + this.model.slug + '/favorite', { + headers: headers, + method: 'DELETE' + }).then(function (response) { + return response.json(); + }).then(r => { + console.log(r); + this.model.favorited = r.article.favorited; + var span = this.querySelector('#ion-heart > span'); + this.model.favoritesCount = this.model.favoritesCount - 1; + span.parentNode.classList.remove('active'); + span.innerHTML = this.model.favoritesCount; + }); } @@ -65,7 +112,7 @@ export class ArticleComponent extends HTMLElement { ${this.model.author.username} ${this.model.createdAt} - @@ -80,7 +127,7 @@ export class ArticleComponent extends HTMLElement { ${tag} `; - }).join(' ')} + }).join(' ')} diff --git a/client/components/comment-preview.comp.js b/app/components/comment-preview.comp.js similarity index 100% rename from client/components/comment-preview.comp.js rename to app/components/comment-preview.comp.js diff --git a/client/components/comments-container.comp.js b/app/components/comments-container.comp.js similarity index 100% rename from client/components/comments-container.comp.js rename to app/components/comments-container.comp.js diff --git a/client/components/layout/c-banner.comp.js b/app/components/layout/c-banner.comp.js similarity index 100% rename from client/components/layout/c-banner.comp.js rename to app/components/layout/c-banner.comp.js diff --git a/client/components/layout/c-footer.comp.js b/app/components/layout/c-footer.comp.js similarity index 100% rename from client/components/layout/c-footer.comp.js rename to app/components/layout/c-footer.comp.js diff --git a/client/components/layout/c-nav.comp.js b/app/components/layout/c-nav.comp.js similarity index 99% rename from client/components/layout/c-nav.comp.js rename to app/components/layout/c-nav.comp.js index bbf8b4b..56c4e2a 100644 --- a/client/components/layout/c-nav.comp.js +++ b/app/components/layout/c-nav.comp.js @@ -83,7 +83,6 @@ export class CNavComponent extends HTMLElement { setCurrentActive() { let curUrl = location.hash; - console.log(curUrl); this.updateActive(curUrl); } diff --git a/client/components/layout/index.js b/app/components/layout/index.js similarity index 100% rename from client/components/layout/index.js rename to app/components/layout/index.js diff --git a/client/components/popular-tags.comp.js b/app/components/popular-tags.comp.js similarity index 100% rename from client/components/popular-tags.comp.js rename to app/components/popular-tags.comp.js diff --git a/app/config.js b/app/config.js new file mode 100644 index 0000000..44cff8f --- /dev/null +++ b/app/config.js @@ -0,0 +1,3 @@ +export const config = { + rest_url: 'https://conduit.productionready.io/api/' +}; diff --git a/app/config.js.example b/app/config.js.example new file mode 100644 index 0000000..44cff8f --- /dev/null +++ b/app/config.js.example @@ -0,0 +1,3 @@ +export const config = { + rest_url: 'https://conduit.productionready.io/api/' +}; diff --git a/client/component-registry.js b/app/core/component-registry.js similarity index 100% rename from client/component-registry.js rename to app/core/component-registry.js diff --git a/app/core/core.js b/app/core/core.js new file mode 100644 index 0000000..3a1e188 --- /dev/null +++ b/app/core/core.js @@ -0,0 +1,85 @@ +import {layoutComponents} from "../components/layout/index"; +import {ArticleComponent} from "../components/article.comp"; +import {HomeComponent} from "../pages/home.comp"; +import {CLoginComponent} from "../pages/login.comp"; +import {CRegisterComponent} from "../pages/register.comp"; +import {RouterOutlet} from "../router/router-outlet"; +import {ComponentRegistry} from "./component-registry"; +import {ProfileComponent} from "../pages/profile.comp"; +import {ArticlePreviewComponent} from "../pages/article-preview.comp"; +import {CommentPreviewComponent} from "../components/comment-preview.comp"; +import {EditorComponent} from "../pages/editor.comp"; +import {SettingsComponent} from "../pages/settings.comp"; +import {PopularTagsComponent} from "../components/popular-tags.comp"; +import {CommentsContainerComponent} from "../components/comments-container.comp"; + +export class Core { + constructor() { + if (!Core.inst) { + Core.inst = this; + } else { + throw new Error('use instance'); + } + + ComponentRegistry.register(components); + + return Core.inst; + } + + static get instance() { + return Core.inst; + } +} +Core.inst = null; + +const components = [ + ...layoutComponents, + { + tagName: 'c-article', + component: ArticleComponent + }, + { + tagName: 'router-outlet', + component: RouterOutlet + }, + { + tagName: 'c-home', + component: HomeComponent + }, + { + tagName: 'c-login', + component: CLoginComponent + }, + { + tagName: 'c-register', + component: CRegisterComponent + }, + { + tagName: 'c-profile', + component: ProfileComponent + }, + { + tagName: 'article-preview', + component: ArticlePreviewComponent + }, + { + tagName: 'comment-preview', + component: CommentPreviewComponent + }, + { + tagName: 'comments-container', + component: CommentsContainerComponent + }, + { + tagName: 'c-editor', + component: EditorComponent + }, + { + tagName: 'c-settings', + component: SettingsComponent + }, + { + tagName: 'popular-tags', + component: PopularTagsComponent + } +]; diff --git a/app/http/http.js b/app/http/http.js new file mode 100644 index 0000000..5b7e90c --- /dev/null +++ b/app/http/http.js @@ -0,0 +1,33 @@ +import {Authentication} from "../auth/authentication"; +import {config} from '../config'; + +export class Http { + constructor() { + if (!Http.inst) { + Http.inst = this; + } else { + throw new Error('use instance'); + } + + return Http.inst; + } + + static get instance() { + return Http.inst; + } + + doGet(path, authentication) { + const headers = { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/json', + }; + + if(authentication === true) { + headers['Authorization'] = 'Token ' + Authentication.instance.auth.token; + } + return fetch(config.rest_url + path, { + headers: headers + }); + } +} +Http.inst = null; diff --git a/client/index.html b/app/index.html similarity index 83% rename from client/index.html rename to app/index.html index 6d7d645..94f6db6 100644 --- a/client/index.html +++ b/app/index.html @@ -11,10 +11,10 @@ - -
- -
- + +
+ +
+ - \ No newline at end of file + diff --git a/app/index.js b/app/index.js new file mode 100644 index 0000000..acc9296 --- /dev/null +++ b/app/index.js @@ -0,0 +1,19 @@ +import {RouterHandler} from "./router/router-handler"; +import {Authentication} from "./auth/authentication"; +import {Core} from "./core/core"; +import {Http} from "./http/http"; + +/** + * Order is important ! + */ +class App { + constructor() { + new Authentication(); + const router = new RouterHandler(); + new Core(); + new Http(); + router.init(); + } +} + +new App(); diff --git a/client/pages/article-preview.comp.js b/app/pages/article-preview.comp.js similarity index 94% rename from client/pages/article-preview.comp.js rename to app/pages/article-preview.comp.js index 89ad3ef..ea892d0 100644 --- a/client/pages/article-preview.comp.js +++ b/app/pages/article-preview.comp.js @@ -41,7 +41,7 @@ export class ArticlePreviewComponent extends HTMLElement { this.$articleActionDate = document.getElementById('article-action-date'); this.$articleActionFollowUsername = document.getElementById('article-action-follow-username'); this.$articleActionFavouritesCount = document.getElementById('article-action-favorites-count'); - this.$commentsWrapper = document.getElementById('comments-wrapper'); + // /api/articles/:slug fetch('https://conduit.productionready.io/api/articles/' + this.slug).then((response) => { return response.json(); @@ -51,13 +51,6 @@ export class ArticlePreviewComponent extends HTMLElement { }); } - generateCommentComponents(comment) { - // let newComment = new CommentPreviewComponent(); - // comment.author.username, comment.body - // newComment.setAttribute('username', comment.author.username); - // this.$commentsWrapper.appendChild(newComment); - } - updateArticleContent() { this.$articleTitle.textContent = this.article.title; this.$profileUsername.textContent = this.article.author.username; diff --git a/client/pages/editor.comp.js b/app/pages/editor.comp.js similarity index 100% rename from client/pages/editor.comp.js rename to app/pages/editor.comp.js diff --git a/client/pages/home.comp.js b/app/pages/home.comp.js similarity index 89% rename from client/pages/home.comp.js rename to app/pages/home.comp.js index d58a19e..7c00b71 100644 --- a/client/pages/home.comp.js +++ b/app/pages/home.comp.js @@ -1,7 +1,8 @@ +"use strict"; import {ArticleComponent} from "../components/article.comp"; import {Authentication} from "../auth/authentication"; import {RouterHandler} from "../router/router-handler"; -"use strict"; +import {Http} from "../http/http"; export class HomeComponent extends HTMLElement { @@ -12,7 +13,6 @@ export class HomeComponent extends HTMLElement { this.auth = Authentication.instance.auth; } - this.$yourFeed = null; this.yourFeedHandleEvent = this.yourFeedHandleEvent.bind(this); this.globalFeedEventHandle = this.globalFeedEventHandle.bind(this); RouterHandler.getInstance.router.navigate('#/'); @@ -40,11 +40,7 @@ export class HomeComponent extends HTMLElement { console.log('NOT AUTHORIZED'); } else { this.$yourFeedButton.addEventListener('click', this.yourFeedHandleEvent); - this.fetchArticles('/feed', { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': 'application/json', - 'Authorization': 'Token ' + this.auth.token - }); + this.fetchArticles('/feed', true); console.log('AUTHORIZED'); } @@ -69,11 +65,7 @@ export class HomeComponent extends HTMLElement { this.removeCurrentTagFilter(); this.$yourFeedButton.classList.add('active'); this.$globalFeedButton.classList.remove('active'); - this.fetchArticles('/feed', { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': 'application/json', - 'Authorization': 'Token ' + this.auth.token - }); + this.fetchArticles('/feed', true); } generateArticle(article) { @@ -116,12 +108,11 @@ export class HomeComponent extends HTMLElement { - fetchArticles(params, headers) { + fetchArticles(params, auth) { this.cleanGlobalFeed(); this.$globalFeed.innerHTML = '
Loading articles
'; - fetch('https://conduit.productionready.io/api/articles' + params, { - headers: headers - }).then(function (response) { + + Http.instance.doGet('/articles' + params, auth).then(function (response) { return response.json(); }).then(r => { this.$globalFeed.textContent = ''; diff --git a/client/pages/login.comp.js b/app/pages/login.comp.js similarity index 97% rename from client/pages/login.comp.js rename to app/pages/login.comp.js index e527074..70d70a3 100644 --- a/client/pages/login.comp.js +++ b/app/pages/login.comp.js @@ -46,9 +46,7 @@ export class CLoginComponent extends HTMLElement { }) .catch(errors => { for (var prop in errors) { - // skip loop if the property is from prototype if(!errors.hasOwnProperty(prop)) continue; - // your code while(this.$errorMessages.firstChild) { this.$errorMessages.removeChild(this.$errorMessages.firstChild); } diff --git a/client/pages/profile.comp.js b/app/pages/profile.comp.js similarity index 100% rename from client/pages/profile.comp.js rename to app/pages/profile.comp.js diff --git a/client/pages/register.comp.js b/app/pages/register.comp.js similarity index 100% rename from client/pages/register.comp.js rename to app/pages/register.comp.js diff --git a/client/pages/settings.comp.js b/app/pages/settings.comp.js similarity index 100% rename from client/pages/settings.comp.js rename to app/pages/settings.comp.js diff --git a/client/router/router-handler.js b/app/router/router-handler.js similarity index 91% rename from client/router/router-handler.js rename to app/router/router-handler.js index 05bdbd5..8a558f3 100644 --- a/client/router/router-handler.js +++ b/app/router/router-handler.js @@ -1,7 +1,6 @@ var Navigo = require('navigo'); import {CLoginComponent} from "../pages/login.comp"; -import {AuthDefender} from "./auth-defender"; -import {Authentication} from "../auth/authentication"; +import {AuthDefender} from "../auth/auth-defender"; import {SettingsComponent} from "../pages/settings.comp"; import {EditorComponent} from "../pages/editor.comp"; import {ArticlePreviewComponent} from "../pages/article-preview.comp"; @@ -44,7 +43,7 @@ export class RouterHandler { {path: '/register', resolve: CRegisterComponent}, {path: '/profile/:username', resolve: ProfileComponent}, {path: '/article/:slug', resolve: ArticlePreviewComponent}, - {path: 'editor', resolve: EditorComponent, canActivate: AuthDefender.canActivate} + {path: '/editor', resolve: EditorComponent, canActivate: AuthDefender.canActivate} ]; this.router.on(() => { @@ -73,5 +72,4 @@ export class RouterHandler { } } RouterHandler.instance = null; -new RouterHandler(); diff --git a/client/router/router-outlet.js b/app/router/router-outlet.js similarity index 100% rename from client/router/router-outlet.js rename to app/router/router-outlet.js diff --git a/client/index.js b/client/index.js deleted file mode 100644 index 4f6b54b..0000000 --- a/client/index.js +++ /dev/null @@ -1,83 +0,0 @@ -import {layoutComponents} from "./components/layout/index"; -import {ArticleComponent} from "./components/article.comp"; -import {HomeComponent} from "./pages/home.comp"; -import {CLoginComponent} from "./pages/login.comp"; -import {CRegisterComponent} from "./pages/register.comp"; -import {RouterOutlet} from "./router/router-outlet"; -import {ComponentRegistry} from "./component-registry"; -import {RouterHandler} from "./router/router-handler"; -import {ProfileComponent} from "./pages/profile.comp"; -import {ArticlePreviewComponent} from "./pages/article-preview.comp"; -import {CommentPreviewComponent} from "./components/comment-preview.comp"; -import {Authentication} from "./auth/authentication"; -import {EditorComponent} from "./pages/editor.comp"; -import {SettingsComponent} from "./pages/settings.comp"; -import {PopularTagsComponent} from "./components/popular-tags.comp"; -import {CommentsContainerComponent} from "./components/comments-container.comp"; - - -class App { - constructor() { - new Authentication(); - this.registerComponents(); - RouterHandler.getInstance.init(); - } - - registerComponents() { - const components = [ - ...layoutComponents, - { - tagName: 'c-article', - component: ArticleComponent - }, - { - tagName: 'router-outlet', - component: RouterOutlet - }, - { - tagName: 'c-home', - component: HomeComponent - }, - { - tagName: 'c-login', - component: CLoginComponent - }, - { - tagName: 'c-register', - component: CRegisterComponent - }, - { - tagName: 'c-profile', - component: ProfileComponent - }, - { - tagName: 'article-preview', - component: ArticlePreviewComponent - }, - { - tagName: 'comment-preview', - component: CommentPreviewComponent - }, - { - tagName: 'comments-container', - component: CommentsContainerComponent - }, - { - tagName: 'c-editor', - component: EditorComponent - }, - { - tagName: 'c-settings', - component: SettingsComponent - }, - { - tagName: 'popular-tags', - component: PopularTagsComponent - } - ]; - ComponentRegistry.register(components); - } - -} - -new App(); diff --git a/client/simple-template.html b/client/simple-template.html deleted file mode 100644 index 40486c8..0000000 --- a/client/simple-template.html +++ /dev/null @@ -1 +0,0 @@ -

simple template

\ No newline at end of file diff --git a/package.json b/package.json index 9a3b231..d1d7550 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,11 @@ "babel-loader": "^7.0.0", "babel-plugin-transform-decorators-legacy": "^1.3.4", "babel-preset-es2015": "^6.24.1", - "babel-preset-react": "^6.24.1", "copy-webpack-plugin": "^4.0.1", "html-webpack-plugin": "^2.28.0", "path": "^0.12.7", + "uglify-es": "git://github.com/mishoo/UglifyJS2#harmony", + "uglifyjs-webpack-plugin": "^0.4.3", "webpack": "^2.5.1", "webpack-dev-server": "^2.4.5" } diff --git a/webpack.config.js b/webpack.config.js index 96238ab..91b3eac 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,14 +2,14 @@ var webpack = require('webpack'); const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const HtmlWebpackPluginConfig = new HtmlWebpackPlugin({ - template: './client/index.html', + template: './app/index.html', filename: 'index.html', inject: 'body', }); var CopyWebpackPlugin = require('copy-webpack-plugin'); module.exports = { - entry: ['./client/index.js'], + entry: ['./app/index.js'], output: { path: path.resolve('dist'), filename: 'index_bundle.js' @@ -26,7 +26,7 @@ module.exports = { ] }, plugins: [HtmlWebpackPluginConfig, new webpack.HotModuleReplacementPlugin(), new CopyWebpackPlugin([{ - context: './client', + context: './app', from: '**/*.html', }])], devServer: { diff --git a/webpack.config.prod.js b/webpack.config.prod.js index caef507..d098f0e 100644 --- a/webpack.config.prod.js +++ b/webpack.config.prod.js @@ -5,7 +5,7 @@ var CopyWebpackPlugin = require('copy-webpack-plugin'); module.exports = { devtool: 'source-map', - entry: ['./client/index.js'], + entry: ['./app/index.js'], output: { path: path.join(__dirname, 'dist'), filename: 'bundle.js' @@ -13,11 +13,11 @@ module.exports = { plugins: [ new webpack.optimize.OccurrenceOrderPlugin(), new HtmlWebpackPlugin({ - template: './client/index.html' + template: './app/index.html' }), new CopyWebpackPlugin([{ - context: './client', + context: './app', from: '**/*.html', }]) ], diff --git a/yarn.lock b/yarn.lock index dda3e02..c0c8450 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1676,11 +1676,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@~2.0.0: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -inherits@2.0.1, inherits@^2.0.1, inherits@~2.0.1: +inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" @@ -1950,6 +1950,12 @@ lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" +markdown@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/markdown/-/markdown-0.5.0.tgz#28205b565a8ae7592de207463d6637dc182722b2" + dependencies: + nopt "~2.1.1" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -2060,6 +2066,10 @@ nan@^2.3.0: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" +navigo@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/navigo/-/navigo-4.7.1.tgz#8b28980c0a1cc12e255656cd962c9c6cc5cd111c" + ncname@1.0.x: version "1.0.0" resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" @@ -2131,6 +2141,12 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" +nopt@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.1.2.tgz#6cccd977b80132a07731d6e8ce58c2c8303cf9af" + dependencies: + abbrev "1" + normalize-package-data@^2.3.2: version "2.3.8" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" @@ -2939,6 +2955,13 @@ type-is@~1.6.14: media-typer "0.3.0" mime-types "~2.1.15" +"uglify-es@git://github.com/mishoo/UglifyJS2#harmony": + version "3.0.9" + resolved "git://github.com/mishoo/UglifyJS2#9a074c26373cdfef974bf9d1397a5a20c3113e4d" + dependencies: + commander "~2.9.0" + source-map "~0.5.1" + uglify-js@3.0.x: version "3.0.7" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.7.tgz#5cca9c14abae2dd60ceccdf7da3c672cc8069cec" @@ -2959,6 +2982,13 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" +uglifyjs-webpack-plugin@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.3.tgz#a672a7d6655f94dfa7e09670d48030f37cc93267" + dependencies: + source-map "^0.5.6" + webpack-sources "^0.2.3" + uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"