diff --git a/client/modules/Comment/CommentActions.js b/client/modules/Comment/CommentActions.js
new file mode 100644
index 000000000..cb911d38c
--- /dev/null
+++ b/client/modules/Comment/CommentActions.js
@@ -0,0 +1,42 @@
+import callApi from '../../util/apiCaller';
+
+export const GET_COMMENTS_BY_POST = 'GET_COMMENTS_BY_POST';
+export const ADD_COMMENT = 'ADD_COMMENT';
+export const DELETE_COMMENT = 'DELETE_COMMENT';
+export const GET_ERRORS = 'GET_ERRORS';
+
+export function deleteComment(cuid) {
+ return (dispatch) => {
+ callApi('comments', 'delete', { cuid });
+ return dispatch({
+ type: DELETE_COMMENT,
+ payload: cuid,
+ });
+ };
+}
+
+export function addComment(post, name, text) {
+ return (dispatch) => {
+ return callApi('comments', 'post', { post, name, text }).then(res => dispatch({
+ type: ADD_COMMENT,
+ payload: res,
+ }))
+ .catch(() => dispatch({
+ type: GET_ERRORS,
+ payload: null,
+ }));
+ };
+}
+
+export function getCommentsByPost(post) {
+ return (dispatch) => {
+ return callApi(`comment/${post}`).then(res => dispatch({
+ type: GET_COMMENTS_BY_POST,
+ comments: res,
+ }))
+ .catch(() => dispatch({
+ type: GET_COMMENTS_BY_POST,
+ comments: [],
+ }));
+ };
+}
diff --git a/client/modules/Comment/CommentReducer.js b/client/modules/Comment/CommentReducer.js
new file mode 100644
index 000000000..6d8093459
--- /dev/null
+++ b/client/modules/Comment/CommentReducer.js
@@ -0,0 +1,29 @@
+import { GET_COMMENTS_BY_POST, ADD_COMMENT, DELETE_COMMENT } from './CommentActions';
+
+const initialState = { comments: [] };
+
+const CommentReducer = (state = initialState, action) => {
+ switch (action.type) {
+ case GET_COMMENTS_BY_POST:
+ return {
+ comments: action.comments,
+ };
+ case ADD_COMMENT:
+ return {
+ ...state,
+ comments: [...state.comments, action.payload],
+ };
+ case DELETE_COMMENT:
+ return {
+ ...state,
+ comments: state.comments.filter(i => i.cuid !== action.payload),
+ };
+ default:
+ return state;
+ }
+};
+
+export default CommentReducer;
+
+/* Selectors */
+export const getComments = state => state.comments.comments;
diff --git a/client/modules/Comment/components/CommentCreator/CommentCreator.css b/client/modules/Comment/components/CommentCreator/CommentCreator.css
new file mode 100644
index 000000000..5fe649985
--- /dev/null
+++ b/client/modules/Comment/components/CommentCreator/CommentCreator.css
@@ -0,0 +1,49 @@
+.creator-container {
+ max-width: 300px;
+ margin-left: 15px;
+}
+
+.input-area {
+ display: flex;
+ flex-direction: column;
+}
+
+.input-area input,
+.input-area textarea {
+ margin-top: 10px;
+ padding: 10px;
+ font-size: 17px;
+}
+
+.input-area textarea {
+ resize: none;
+}
+
+.input-area input:focus,
+.input-area textarea:focus,
+.btn-send:focus {
+ outline: none;
+ border: 2px solid #555;
+}
+
+.input-area input::-webkit-input-placeholder,
+.input-area textarea::-webkit-input-placeholder {
+ font-size: 17px;
+ letter-spacing: 1.5px;
+}
+
+.input-area input:hover::-webkit-input-placeholder,
+.input-area input:focus::-webkit-input-placeholder,
+.input-area textarea:hover::-webkit-input-placeholder,
+.input-area textarea:focus::-webkit-input-placeholder {
+ color: #555;
+}
+
+.btn-send {
+ margin-top: 5px;
+ padding: 7px;
+ width: 100%;
+
+ font-size: 17px;
+ letter-spacing: 2px;
+}
\ No newline at end of file
diff --git a/client/modules/Comment/components/CommentCreator/CommentCreator.js b/client/modules/Comment/components/CommentCreator/CommentCreator.js
new file mode 100644
index 000000000..1bae5073e
--- /dev/null
+++ b/client/modules/Comment/components/CommentCreator/CommentCreator.js
@@ -0,0 +1,45 @@
+import React, { useState } from 'react';
+import PropTypes from 'prop-types';
+
+import styles from './CommentCreator.css';
+
+function CommentCreator(props) {
+ const [name, setName] = useState('');
+ const [text, setText] = useState('');
+
+ const addComment = () => {
+ props.handleAdd(props.post, name, text);
+ setName('');
+ setText('');
+ };
+ return (
+
+
What do you think about it? Let's text
+
+ setName(e.target.value)}
+ value={name}
+ />
+
+
+
+ );
+}
+
+CommentCreator.propTypes = {
+ handleAdd: PropTypes.func.isRequired,
+ post: PropTypes.string.isRequired,
+};
+
+export default CommentCreator;
diff --git a/client/modules/Comment/components/CommentItem/CommentItem.css b/client/modules/Comment/components/CommentItem/CommentItem.css
new file mode 100644
index 000000000..09a05ecba
--- /dev/null
+++ b/client/modules/Comment/components/CommentItem/CommentItem.css
@@ -0,0 +1,68 @@
+.comment-single {
+ position: relative;
+ display: flex;
+ margin: 15px;
+ padding: 15px;
+
+ background-color: #ccc;
+
+ border-radius: 20px;
+}
+
+.btn-delete {
+ position: absolute;
+
+ width: 20px;
+ height: 20px;
+ right: 20px;
+ top: 10px;
+
+ font-size: 15px;
+
+ border: 0;
+ background-color: transparent;
+}
+
+.btn-delete:hover {
+ cursor: pointer;
+ font-weight: bold;
+}
+
+.comment-data {
+ display: flex;
+ flex-direction: column;
+}
+
+.comment-single:hover {
+ box-shadow: 0 0 10px rgba(0,0,0,0.5);
+}
+
+.comment-single h3 {
+ display: flex;
+ align-items: center;
+ margin-right: 20px;
+}
+
+.comment-date {
+ margin-bottom: 6px;
+
+ font-size: 12px;
+}
+
+.comment-text {
+ padding-bottom: 6px;
+}
+
+.btn-edit {
+ width: fit-content;
+ background-color: transparent;
+ border: 0;
+
+ text-align: left;
+
+ cursor: pointer;
+}
+
+.btn-edit:hover {
+ font-weight: bold;
+}
\ No newline at end of file
diff --git a/client/modules/Comment/components/CommentItem/CommentItem.js b/client/modules/Comment/components/CommentItem/CommentItem.js
new file mode 100644
index 000000000..438bc5423
--- /dev/null
+++ b/client/modules/Comment/components/CommentItem/CommentItem.js
@@ -0,0 +1,55 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import Moment from 'react-moment';
+
+import styles from './CommentItem.css';
+
+function CommentItem(props) {
+ return (
+
+
{props.data.name}
+
+
+
+ {props.data.date}
+
+
+
+ {props.data.text}
+
+
+
+
+
+ );
+}
+
+CommentItem.propTypes = {
+ data: PropTypes.shape({
+ name: PropTypes.string.isRequired,
+ text: PropTypes.string.isRequired,
+ date: PropTypes.string.isRequired,
+ cuid: PropTypes.string.isRequired,
+ }),
+ handleDelete: PropTypes.func.isRequired,
+};
+
+export default CommentItem;
diff --git a/client/modules/Comment/components/CommentList.css b/client/modules/Comment/components/CommentList.css
new file mode 100644
index 000000000..85971e564
--- /dev/null
+++ b/client/modules/Comment/components/CommentList.css
@@ -0,0 +1,3 @@
+.comment-container {
+ max-width: 500px;
+}
\ No newline at end of file
diff --git a/client/modules/Comment/components/CommentList.js b/client/modules/Comment/components/CommentList.js
new file mode 100644
index 000000000..4706ff008
--- /dev/null
+++ b/client/modules/Comment/components/CommentList.js
@@ -0,0 +1,34 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+
+import CommentItem from './CommentItem/CommentItem';
+
+import styles from './CommentList.css';
+
+function CommentList(props) {
+ return (
+
+ {props.data ? props.data.map(comment => (
+
+ )) :
Download...
}
+
+ );
+}
+
+CommentList.propTypes = {
+ data: PropTypes.arrayOf(PropTypes.shape({
+ name: PropTypes.string.isRequired,
+ date: PropTypes.string.isRequired,
+ cuid: PropTypes.string.isRequired,
+ post: PropTypes.string.isRequired,
+ })),
+ handleDelete: PropTypes.func.isRequired,
+};
+
+export default CommentList;
diff --git a/client/modules/Post/pages/PostDetailPage/PostDetailPage.js b/client/modules/Post/pages/PostDetailPage/PostDetailPage.js
index 32c1e1c11..8a35a42a5 100644
--- a/client/modules/Post/pages/PostDetailPage/PostDetailPage.js
+++ b/client/modules/Post/pages/PostDetailPage/PostDetailPage.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useEffect } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import Helmet from 'react-helmet';
@@ -7,13 +7,28 @@ import { FormattedMessage } from 'react-intl';
// Import Style
import styles from '../../components/PostListItem/PostListItem.css';
+// Import components
+import CommentList from '../../../Comment/components/CommentList';
+import CommentCreator from '../../../Comment/components/CommentCreator/CommentCreator';
+
// Import Actions
import { fetchPost } from '../../PostActions';
+import { getCommentsByPost, addComment, deleteComment } from '../../../Comment/CommentActions';
// Import Selectors
import { getPost } from '../../PostReducer';
+import { getComments } from '../../../Comment/CommentReducer';
export function PostDetailPage(props) {
+ function fetchComments() {
+ // eslint-disable-next-line react/prop-types
+ return props.getCommentsByPost(props.post.cuid);
+ }
+
+ useEffect(() => {
+ fetchComments();
+ }, []);
+
return (
@@ -22,6 +37,8 @@ export function PostDetailPage(props) {
{props.post.name}
{props.post.content}
+
+
);
}
@@ -35,6 +52,7 @@ PostDetailPage.need = [params => {
function mapStateToProps(state, props) {
return {
post: getPost(state, props.params.cuid),
+ comments: getComments(state),
};
}
@@ -46,6 +64,14 @@ PostDetailPage.propTypes = {
slug: PropTypes.string.isRequired,
cuid: PropTypes.string.isRequired,
}).isRequired,
+ comments: PropTypes.arrayOf(PropTypes.shape({
+ name: PropTypes.string.isRequired,
+ date: PropTypes.string.isRequired,
+ cuid: PropTypes.string.isRequired,
+ post: PropTypes.string.isRequired,
+ })),
+ addComment: PropTypes.func.isRequired,
+ deleteComment: PropTypes.func.isRequired,
};
-export default connect(mapStateToProps)(PostDetailPage);
+export default connect(mapStateToProps, { getCommentsByPost, addComment, deleteComment })(PostDetailPage);
diff --git a/client/reducers.js b/client/reducers.js
index 2aa143142..9aadfe79d 100644
--- a/client/reducers.js
+++ b/client/reducers.js
@@ -7,10 +7,12 @@ import { combineReducers } from 'redux';
import app from './modules/App/AppReducer';
import posts from './modules/Post/PostReducer';
import intl from './modules/Intl/IntlReducer';
+import comments from './modules/Comment/CommentReducer';
// Combine all reducers into one root reducer
export default combineReducers({
app,
posts,
intl,
+ comments,
});
diff --git a/package-lock.json b/package-lock.json
index 14a36b319..2e9784208 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4821,9 +4821,9 @@
"dev": true
},
"fsevents": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
- "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz",
+ "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==",
"dev": true,
"optional": true,
"requires": {
@@ -4849,7 +4849,7 @@
"optional": true
},
"are-we-there-yet": {
- "version": "1.1.4",
+ "version": "1.1.5",
"bundled": true,
"dev": true,
"optional": true,
@@ -4873,7 +4873,7 @@
}
},
"chownr": {
- "version": "1.0.1",
+ "version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true
@@ -4909,7 +4909,7 @@
}
},
"deep-extend": {
- "version": "0.5.1",
+ "version": "0.6.0",
"bundled": true,
"dev": true,
"optional": true
@@ -4958,7 +4958,7 @@
}
},
"glob": {
- "version": "7.1.2",
+ "version": "7.1.3",
"bundled": true,
"dev": true,
"optional": true,
@@ -4978,12 +4978,12 @@
"optional": true
},
"iconv-lite": {
- "version": "0.4.21",
+ "version": "0.4.24",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
- "safer-buffer": "^2.1.0"
+ "safer-buffer": ">= 2.1.2 < 3"
}
},
"ignore-walk": {
@@ -5044,16 +5044,16 @@
"dev": true
},
"minipass": {
- "version": "2.2.4",
+ "version": "2.3.5",
"bundled": true,
"dev": true,
"requires": {
- "safe-buffer": "^5.1.1",
+ "safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
},
"minizlib": {
- "version": "1.1.0",
+ "version": "1.2.1",
"bundled": true,
"dev": true,
"optional": true,
@@ -5076,7 +5076,7 @@
"optional": true
},
"needle": {
- "version": "2.2.0",
+ "version": "2.2.4",
"bundled": true,
"dev": true,
"optional": true,
@@ -5087,18 +5087,18 @@
}
},
"node-pre-gyp": {
- "version": "0.10.0",
+ "version": "0.10.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.1",
- "needle": "^2.2.0",
+ "needle": "^2.2.1",
"nopt": "^4.0.1",
"npm-packlist": "^1.1.6",
"npmlog": "^4.0.2",
- "rc": "^1.1.7",
+ "rc": "^1.2.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4"
@@ -5115,13 +5115,13 @@
}
},
"npm-bundled": {
- "version": "1.0.3",
+ "version": "1.0.5",
"bundled": true,
"dev": true,
"optional": true
},
"npm-packlist": {
- "version": "1.1.10",
+ "version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true,
@@ -5196,12 +5196,12 @@
"optional": true
},
"rc": {
- "version": "1.2.7",
+ "version": "1.2.8",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
- "deep-extend": "^0.5.1",
+ "deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
@@ -5231,16 +5231,16 @@
}
},
"rimraf": {
- "version": "2.6.2",
+ "version": "2.6.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
- "glob": "^7.0.5"
+ "glob": "^7.1.3"
}
},
"safe-buffer": {
- "version": "5.1.1",
+ "version": "5.1.2",
"bundled": true,
"dev": true
},
@@ -5257,7 +5257,7 @@
"optional": true
},
"semver": {
- "version": "5.5.0",
+ "version": "5.6.0",
"bundled": true,
"dev": true,
"optional": true
@@ -5308,17 +5308,17 @@
"optional": true
},
"tar": {
- "version": "4.4.1",
+ "version": "4.4.8",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
- "chownr": "^1.0.1",
+ "chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
- "minipass": "^2.2.4",
- "minizlib": "^1.1.0",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
"mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.1",
+ "safe-buffer": "^5.1.2",
"yallist": "^3.0.2"
}
},
@@ -5329,12 +5329,12 @@
"optional": true
},
"wide-align": {
- "version": "1.1.2",
+ "version": "1.1.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
- "string-width": "^1.0.2"
+ "string-width": "^1.0.2 || 2"
}
},
"wrappy": {
@@ -5343,7 +5343,7 @@
"dev": true
},
"yallist": {
- "version": "3.0.2",
+ "version": "3.0.3",
"bundled": true,
"dev": true
}
@@ -7570,6 +7570,11 @@
}
}
},
+ "moment": {
+ "version": "2.24.0",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
+ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
+ },
"mongodb": {
"version": "2.2.34",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.34.tgz",
@@ -8729,7 +8734,8 @@
"dependencies": {
"append-transform": {
"version": "0.4.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=",
"dev": true,
"requires": {
"default-require-extensions": "^1.0.0"
@@ -8737,12 +8743,14 @@
},
"arrify": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
"caching-transform": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-bb2y8g+Nj7znnz6U6dF0Lc31wKE=",
"dev": true,
"requires": {
"md5-hex": "^1.2.0",
@@ -8752,7 +8760,8 @@
"dependencies": {
"write-file-atomic": {
"version": "1.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-sfUtwujcDjywTRh6JfdYo4qQyjs=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -8762,17 +8771,20 @@
"dependencies": {
"graceful-fs": {
"version": "4.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7widKIDwM7ARgjzlyPrnmNp3Xb0=",
"dev": true
},
"imurmurhash": {
"version": "0.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
"slide": {
"version": "1.1.6",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
"dev": true
}
}
@@ -8781,12 +8793,14 @@
},
"convert-source-map": {
"version": "1.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-RMCMJQbxD7PKb9iI1aNETPjWpmk=",
"dev": true
},
"default-require-extensions": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=",
"dev": true,
"requires": {
"strip-bom": "^2.0.0"
@@ -8794,7 +8808,8 @@
"dependencies": {
"strip-bom": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
@@ -8802,7 +8817,8 @@
"dependencies": {
"is-utf8": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
}
}
@@ -8811,7 +8827,8 @@
},
"find-cache-dir": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
"dev": true,
"requires": {
"commondir": "^1.0.1",
@@ -8821,12 +8838,14 @@
"dependencies": {
"commondir": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
"dev": true
},
"pkg-dir": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
"dev": true,
"requires": {
"find-up": "^1.0.0"
@@ -8836,7 +8855,8 @@
},
"find-up": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
"path-exists": "^2.0.0",
@@ -8845,7 +8865,8 @@
"dependencies": {
"path-exists": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
"pinkie-promise": "^2.0.0"
@@ -8853,7 +8874,8 @@
},
"pinkie-promise": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
@@ -8861,7 +8883,8 @@
"dependencies": {
"pinkie": {
"version": "2.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
}
}
@@ -8870,7 +8893,8 @@
},
"foreground-child": {
"version": "1.5.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-76NNl4DSV8dQsR4pbi4e3BT/+qo=",
"dev": true,
"requires": {
"cross-spawn-async": "^2.1.1",
@@ -8880,7 +8904,8 @@
"dependencies": {
"cross-spawn-async": {
"version": "2.2.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-yajY6aBlAsekYpbjOhoFS10vGBI=",
"dev": true,
"requires": {
"lru-cache": "^4.0.0",
@@ -8889,7 +8914,8 @@
"dependencies": {
"lru-cache": {
"version": "4.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-E0OVXtry432bnn7nJB4nxLn7cr4=",
"dev": true,
"requires": {
"pseudomap": "^1.0.1",
@@ -8898,12 +8924,14 @@
"dependencies": {
"pseudomap": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
"yallist": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MGxUODXwnuGkyyO3vOmrNByRzdQ=",
"dev": true
}
}
@@ -8912,12 +8940,14 @@
},
"signal-exit": {
"version": "2.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-N1h5sfkuvDszRIDQONxUam1VhWQ=",
"dev": true
},
"which": {
"version": "1.2.10",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-kc2b0HUTIkEbZZtA8FSyHelXqy0=",
"dev": true,
"requires": {
"isexe": "^1.1.1"
@@ -8925,7 +8955,8 @@
"dependencies": {
"isexe": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=",
"dev": true
}
}
@@ -8934,7 +8965,8 @@
},
"glob": {
"version": "7.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-CqI1kxpKlqwT1g/6wvuHe9btT1g=",
"dev": true,
"requires": {
"inflight": "^1.0.4",
@@ -8946,7 +8978,8 @@
"dependencies": {
"inflight": {
"version": "1.0.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-2zIEzVqd4ubNiQuFxuL2a89PYgo=",
"dev": true,
"requires": {
"once": "^1.3.0",
@@ -8955,19 +8988,22 @@
"dependencies": {
"wrappy": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
}
}
},
"inherits": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
"dev": true
},
"minimatch": {
"version": "3.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-UjYVelHk8ATBd/s8Un/33Xjw74M=",
"dev": true,
"requires": {
"brace-expansion": "^1.0.0"
@@ -8975,7 +9011,8 @@
"dependencies": {
"brace-expansion": {
"version": "1.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-RkogTHf0gsCFwqNsRWu/uvtnoSc=",
"dev": true,
"requires": {
"balanced-match": "^0.4.1",
@@ -8984,12 +9021,14 @@
"dependencies": {
"balanced-match": {
"version": "0.4.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-GQU+LgdI6ts3nabAnUVc9eEDkzU=",
"dev": true
},
"concat-map": {
"version": "0.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
}
}
@@ -8998,7 +9037,8 @@
},
"once": {
"version": "1.3.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
"dev": true,
"requires": {
"wrappy": "1"
@@ -9006,21 +9046,24 @@
"dependencies": {
"wrappy": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
}
}
},
"path-is-absolute": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI=",
"dev": true
}
}
},
"istanbul": {
"version": "0.4.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-W3FO4K5JOsXvIEuZ84crzu9z1To=",
"dev": true,
"requires": {
"abbrev": "1.0.x",
@@ -9041,17 +9084,20 @@
"dependencies": {
"abbrev": {
"version": "1.0.7",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-W2A1su6dT7XPhZ8Iqb6BsghJGEM=",
"dev": true
},
"async": {
"version": "1.5.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
"dev": true
},
"escodegen": {
"version": "1.8.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-skaq6CnOc9WeLFVyc1nt0cEwqBs=",
"dev": true,
"requires": {
"esprima": "^2.7.1",
@@ -9063,17 +9109,20 @@
"dependencies": {
"estraverse": {
"version": "1.9.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
"dev": true
},
"esutils": {
"version": "2.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true
},
"optionator": {
"version": "0.8.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-4xtJMs3V+4Yqiw0QvGPT7h7H14s=",
"dev": true,
"requires": {
"deep-is": "~0.1.3",
@@ -9086,17 +9135,20 @@
"dependencies": {
"deep-is": {
"version": "0.1.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
"fast-levenshtein": {
"version": "1.1.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-KuezKrweYS2kik4ThJuIii9h5+k=",
"dev": true
},
"levn": {
"version": "0.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"dev": true,
"requires": {
"prelude-ls": "~1.1.2",
@@ -9105,12 +9157,14 @@
},
"prelude-ls": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
"type-check": {
"version": "0.3.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"dev": true,
"requires": {
"prelude-ls": "~1.1.2"
@@ -9120,7 +9174,8 @@
},
"source-map": {
"version": "0.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
"dev": true,
"optional": true,
"requires": {
@@ -9129,7 +9184,8 @@
"dependencies": {
"amdefine": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-/RdHRwDLXMnCtwnwvp0jzjwZjDM=",
"dev": true,
"optional": true
}
@@ -9139,12 +9195,14 @@
},
"esprima": {
"version": "2.7.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9DvlQ2CZhOrkTJM6xjNSpq818zk=",
"dev": true
},
"fileset": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc=",
"dev": true,
"requires": {
"glob": "5.x",
@@ -9153,7 +9211,8 @@
"dependencies": {
"glob": {
"version": "5.0.15",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"requires": {
"inflight": "^1.0.4",
@@ -9165,7 +9224,8 @@
"dependencies": {
"inflight": {
"version": "1.0.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-2zIEzVqd4ubNiQuFxuL2a89PYgo=",
"dev": true,
"requires": {
"once": "^1.3.0",
@@ -9174,26 +9234,30 @@
"dependencies": {
"wrappy": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
}
}
},
"inherits": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
"dev": true
},
"path-is-absolute": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI=",
"dev": true
}
}
},
"minimatch": {
"version": "2.0.10",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
"dev": true,
"requires": {
"brace-expansion": "^1.0.0"
@@ -9201,7 +9265,8 @@
"dependencies": {
"brace-expansion": {
"version": "1.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-RkogTHf0gsCFwqNsRWu/uvtnoSc=",
"dev": true,
"requires": {
"balanced-match": "^0.4.1",
@@ -9210,12 +9275,14 @@
"dependencies": {
"balanced-match": {
"version": "0.4.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-GQU+LgdI6ts3nabAnUVc9eEDkzU=",
"dev": true
},
"concat-map": {
"version": "0.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
}
}
@@ -9226,7 +9293,8 @@
},
"handlebars": {
"version": "4.0.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ksbta7FkEQxQ1NjQ+93HCAbG+Oc=",
"dev": true,
"requires": {
"async": "^1.4.0",
@@ -9237,7 +9305,8 @@
"dependencies": {
"optimist": {
"version": "0.6.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"dev": true,
"requires": {
"minimist": "~0.0.1",
@@ -9246,19 +9315,22 @@
"dependencies": {
"minimist": {
"version": "0.0.10",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
"dev": true
},
"wordwrap": {
"version": "0.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
"dev": true
}
}
},
"source-map": {
"version": "0.4.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"dev": true,
"requires": {
"amdefine": ">=0.0.4"
@@ -9266,14 +9338,16 @@
"dependencies": {
"amdefine": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-/RdHRwDLXMnCtwnwvp0jzjwZjDM=",
"dev": true
}
}
},
"uglify-js": {
"version": "2.6.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9QvoikLNOWpiUdxSqzcvccwS/vA=",
"dev": true,
"optional": true,
"requires": {
@@ -9285,25 +9359,29 @@
"dependencies": {
"async": {
"version": "0.2.10",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
"dev": true,
"optional": true
},
"source-map": {
"version": "0.5.6",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
"dev": true,
"optional": true
},
"uglify-to-browserify": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
"dev": true,
"optional": true
},
"yargs": {
"version": "3.10.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
"dev": true,
"optional": true,
"requires": {
@@ -9315,13 +9393,15 @@
"dependencies": {
"camelcase": {
"version": "1.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
"dev": true,
"optional": true
},
"cliui": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
"dev": true,
"optional": true,
"requires": {
@@ -9332,7 +9412,8 @@
"dependencies": {
"center-align": {
"version": "0.1.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
"dev": true,
"optional": true,
"requires": {
@@ -9342,7 +9423,8 @@
"dependencies": {
"align-text": {
"version": "0.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
"dev": true,
"optional": true,
"requires": {
@@ -9353,7 +9435,8 @@
"dependencies": {
"kind-of": {
"version": "3.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-xhYIdH2BWwNiVW2zJ2Nip6OK3tM=",
"dev": true,
"optional": true,
"requires": {
@@ -9362,7 +9445,8 @@
"dependencies": {
"is-buffer": {
"version": "1.1.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-24l/w/esotUN6UtsjCiWpHcWJ68=",
"dev": true,
"optional": true
}
@@ -9370,13 +9454,15 @@
},
"longest": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
"dev": true,
"optional": true
},
"repeat-string": {
"version": "1.5.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ZOwMkeD0tHX5DVtkNlHj5uW2wtU=",
"dev": true,
"optional": true
}
@@ -9384,7 +9470,8 @@
},
"lazy-cache": {
"version": "1.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
"dev": true,
"optional": true
}
@@ -9392,7 +9479,8 @@
},
"right-align": {
"version": "0.1.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
"dev": true,
"optional": true,
"requires": {
@@ -9401,7 +9489,8 @@
"dependencies": {
"align-text": {
"version": "0.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
"dev": true,
"optional": true,
"requires": {
@@ -9412,7 +9501,8 @@
"dependencies": {
"kind-of": {
"version": "3.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-xhYIdH2BWwNiVW2zJ2Nip6OK3tM=",
"dev": true,
"optional": true,
"requires": {
@@ -9421,7 +9511,8 @@
"dependencies": {
"is-buffer": {
"version": "1.1.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-24l/w/esotUN6UtsjCiWpHcWJ68=",
"dev": true,
"optional": true
}
@@ -9429,13 +9520,15 @@
},
"longest": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
"dev": true,
"optional": true
},
"repeat-string": {
"version": "1.5.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ZOwMkeD0tHX5DVtkNlHj5uW2wtU=",
"dev": true,
"optional": true
}
@@ -9445,7 +9538,8 @@
},
"wordwrap": {
"version": "0.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
"dev": true,
"optional": true
}
@@ -9453,13 +9547,15 @@
},
"decamelize": {
"version": "1.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true,
"optional": true
},
"window-size": {
"version": "0.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
"dev": true,
"optional": true
}
@@ -9471,7 +9567,8 @@
},
"js-yaml": {
"version": "3.6.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -9480,7 +9577,8 @@
"dependencies": {
"argparse": {
"version": "1.0.7",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-wolQZIBVeBDxSovGLXoG9j7X+VE=",
"dev": true,
"requires": {
"sprintf-js": "~1.0.2"
@@ -9488,7 +9586,8 @@
"dependencies": {
"sprintf-js": {
"version": "1.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
}
}
@@ -9497,7 +9596,8 @@
},
"nopt": {
"version": "3.0.6",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"dev": true,
"requires": {
"abbrev": "1"
@@ -9505,7 +9605,8 @@
},
"once": {
"version": "1.3.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
"dev": true,
"requires": {
"wrappy": "1"
@@ -9513,19 +9614,22 @@
"dependencies": {
"wrappy": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
}
}
},
"resolve": {
"version": "1.1.7",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
"dev": true
},
"supports-color": {
"version": "3.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=",
"dev": true,
"requires": {
"has-flag": "^1.0.0"
@@ -9533,14 +9637,16 @@
"dependencies": {
"has-flag": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
"dev": true
}
}
},
"which": {
"version": "1.2.10",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-kc2b0HUTIkEbZZtA8FSyHelXqy0=",
"dev": true,
"requires": {
"isexe": "^1.1.1"
@@ -9548,21 +9654,24 @@
"dependencies": {
"isexe": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=",
"dev": true
}
}
},
"wordwrap": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
"dev": true
}
}
},
"md5-hex": {
"version": "1.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-0sSv6YPENwZiF5uMrRRSGRNQRsQ=",
"dev": true,
"requires": {
"md5-o-matic": "^0.1.1"
@@ -9570,14 +9679,16 @@
"dependencies": {
"md5-o-matic": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=",
"dev": true
}
}
},
"micromatch": {
"version": "2.3.8",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-lPv4837Z7eyga/HI97dD+19vWFQ=",
"dev": true,
"requires": {
"arr-diff": "^2.0.0",
@@ -9597,7 +9708,8 @@
"dependencies": {
"arr-diff": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"dev": true,
"requires": {
"arr-flatten": "^1.0.1"
@@ -9605,19 +9717,22 @@
"dependencies": {
"arr-flatten": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=",
"dev": true
}
}
},
"array-unique": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
"dev": true
},
"braces": {
"version": "1.8.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"dev": true,
"requires": {
"expand-range": "^1.8.1",
@@ -9627,7 +9742,8 @@
"dependencies": {
"expand-range": {
"version": "1.8.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
"dev": true,
"requires": {
"fill-range": "^2.1.0"
@@ -9635,7 +9751,8 @@
"dependencies": {
"fill-range": {
"version": "2.2.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
"dev": true,
"requires": {
"is-number": "^2.1.0",
@@ -9647,7 +9764,8 @@
"dependencies": {
"is-number": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
@@ -9655,7 +9773,8 @@
},
"isobject": {
"version": "2.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
"dev": true,
"requires": {
"isarray": "1.0.0"
@@ -9663,14 +9782,16 @@
"dependencies": {
"isarray": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
}
}
},
"randomatic": {
"version": "1.1.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Xp718tVzxnvSuBJK6QtRVuRXhAs=",
"dev": true,
"requires": {
"is-number": "^2.0.2",
@@ -9679,7 +9800,8 @@
},
"repeat-string": {
"version": "1.5.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ZOwMkeD0tHX5DVtkNlHj5uW2wtU=",
"dev": true
}
}
@@ -9688,19 +9810,22 @@
},
"preserve": {
"version": "0.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
"dev": true
},
"repeat-element": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
"dev": true
}
}
},
"expand-brackets": {
"version": "0.1.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"dev": true,
"requires": {
"is-posix-bracket": "^0.1.0"
@@ -9708,14 +9833,16 @@
"dependencies": {
"is-posix-bracket": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
"dev": true
}
}
},
"extglob": {
"version": "0.3.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"dev": true,
"requires": {
"is-extglob": "^1.0.0"
@@ -9723,17 +9850,20 @@
},
"filename-regex": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=",
"dev": true
},
"is-extglob": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
"dev": true
},
"is-glob": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
"is-extglob": "^1.0.0"
@@ -9741,7 +9871,8 @@
},
"kind-of": {
"version": "3.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-xhYIdH2BWwNiVW2zJ2Nip6OK3tM=",
"dev": true,
"requires": {
"is-buffer": "^1.0.2"
@@ -9749,19 +9880,22 @@
"dependencies": {
"is-buffer": {
"version": "1.1.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-24l/w/esotUN6UtsjCiWpHcWJ68=",
"dev": true
}
}
},
"normalize-path": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=",
"dev": true
},
"object.omit": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-hoWXMz1U5gZilAu0WGBd1q4S/pQ=",
"dev": true,
"requires": {
"for-own": "^0.1.3",
@@ -9770,7 +9904,8 @@
"dependencies": {
"for-own": {
"version": "0.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=",
"dev": true,
"requires": {
"for-in": "^0.1.5"
@@ -9778,21 +9913,24 @@
"dependencies": {
"for-in": {
"version": "0.1.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-AHN04rbVxnQgoUeb23WgSHK3OMQ=",
"dev": true
}
}
},
"is-extendable": {
"version": "0.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
"dev": true
}
}
},
"parse-glob": {
"version": "3.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
"dev": true,
"requires": {
"glob-base": "^0.3.0",
@@ -9803,7 +9941,8 @@
"dependencies": {
"glob-base": {
"version": "0.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
"dev": true,
"requires": {
"glob-parent": "^2.0.0",
@@ -9812,7 +9951,8 @@
"dependencies": {
"glob-parent": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
"dev": true,
"requires": {
"is-glob": "^2.0.0"
@@ -9822,14 +9962,16 @@
},
"is-dotfile": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=",
"dev": true
}
}
},
"regex-cache": {
"version": "0.4.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=",
"dev": true,
"requires": {
"is-equal-shallow": "^0.1.3",
@@ -9838,7 +9980,8 @@
"dependencies": {
"is-equal-shallow": {
"version": "0.1.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
"dev": true,
"requires": {
"is-primitive": "^2.0.0"
@@ -9846,7 +9989,8 @@
},
"is-primitive": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
"dev": true
}
}
@@ -9855,7 +9999,8 @@
},
"mkdirp": {
"version": "0.5.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
@@ -9863,14 +10008,16 @@
"dependencies": {
"minimist": {
"version": "0.0.8",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
}
}
},
"pkg-up": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=",
"dev": true,
"requires": {
"find-up": "^1.0.0"
@@ -9878,12 +10025,14 @@
},
"resolve-from": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=",
"dev": true
},
"rimraf": {
"version": "2.5.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-YrqUf6TAtDY4Oa7+zU8PutYFlyY=",
"dev": true,
"requires": {
"glob": "^7.0.0"
@@ -9891,17 +10040,20 @@
},
"signal-exit": {
"version": "3.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-PAVDtl17T7xgts2UWT2b9DZzm+g=",
"dev": true
},
"source-map": {
"version": "0.5.6",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
"dev": true
},
"spawn-wrap": {
"version": "1.2.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-3300R/tKAZYZpB9o7mQqcY5gYuk=",
"dev": true,
"requires": {
"foreground-child": "^1.3.3",
@@ -9914,17 +10066,20 @@
"dependencies": {
"os-homedir": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-DWK99EuRb9O73PLKsZGUj7CU8Ac=",
"dev": true
},
"signal-exit": {
"version": "2.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-N1h5sfkuvDszRIDQONxUam1VhWQ=",
"dev": true
},
"which": {
"version": "1.2.10",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-kc2b0HUTIkEbZZtA8FSyHelXqy0=",
"dev": true,
"requires": {
"isexe": "^1.1.1"
@@ -9932,7 +10087,8 @@
"dependencies": {
"isexe": {
"version": "1.1.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=",
"dev": true
}
}
@@ -9941,7 +10097,8 @@
},
"test-exclude": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9d3XGJJ7Ev0C8nCgqpOc627qQVE=",
"dev": true,
"requires": {
"arrify": "^1.0.1",
@@ -9953,7 +10110,8 @@
"dependencies": {
"lodash.assign": {
"version": "4.0.9",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Cgcx2TWQ3dm6RYn61lqvbuCSF+M=",
"dev": true,
"requires": {
"lodash.keys": "^4.0.0",
@@ -9962,19 +10120,22 @@
"dependencies": {
"lodash.keys": {
"version": "4.0.7",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MOGzvZjlTWoGEZkYEmhba8R8tjs=",
"dev": true
},
"lodash.rest": {
"version": "4.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-TBwyxAAoCHJQ+r9w1C4BUVSPSMU=",
"dev": true
}
}
},
"read-pkg-up": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
"find-up": "^1.0.0",
@@ -9983,7 +10144,8 @@
"dependencies": {
"read-pkg": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
"load-json-file": "^1.0.0",
@@ -9993,7 +10155,8 @@
"dependencies": {
"load-json-file": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -10005,12 +10168,14 @@
"dependencies": {
"graceful-fs": {
"version": "4.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7widKIDwM7ARgjzlyPrnmNp3Xb0=",
"dev": true
},
"parse-json": {
"version": "2.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
"error-ex": "^1.2.0"
@@ -10018,7 +10183,8 @@
"dependencies": {
"error-ex": {
"version": "1.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=",
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
@@ -10026,7 +10192,8 @@
"dependencies": {
"is-arrayish": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
}
}
@@ -10035,12 +10202,14 @@
},
"pify": {
"version": "2.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
@@ -10048,14 +10217,16 @@
"dependencies": {
"pinkie": {
"version": "2.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
}
}
},
"strip-bom": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
@@ -10063,7 +10234,8 @@
"dependencies": {
"is-utf8": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
}
}
@@ -10072,7 +10244,8 @@
},
"normalize-package-data": {
"version": "2.3.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=",
"dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
@@ -10083,12 +10256,14 @@
"dependencies": {
"hosted-git-info": {
"version": "2.1.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=",
"dev": true
},
"is-builtin-module": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"dev": true,
"requires": {
"builtin-modules": "^1.0.0"
@@ -10096,19 +10271,22 @@
"dependencies": {
"builtin-modules": {
"version": "1.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
}
}
},
"semver": {
"version": "5.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=",
"dev": true
},
"validate-npm-package-license": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
"dev": true,
"requires": {
"spdx-correct": "~1.0.0",
@@ -10117,7 +10295,8 @@
"dependencies": {
"spdx-correct": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
"dev": true,
"requires": {
"spdx-license-ids": "^1.0.2"
@@ -10125,14 +10304,16 @@
"dependencies": {
"spdx-license-ids": {
"version": "1.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-0H6hek0v2TUfnZTi/5zsdBgP6PM=",
"dev": true
}
}
},
"spdx-expression-parse": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-1SsUtelnB3FECvIlvLVjEirEUvY=",
"dev": true,
"requires": {
"spdx-exceptions": "^1.0.4",
@@ -10141,12 +10322,14 @@
"dependencies": {
"spdx-exceptions": {
"version": "1.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-IguEI5EZrpBFqJLbgag/TOFvgP0=",
"dev": true
},
"spdx-license-ids": {
"version": "1.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-0H6hek0v2TUfnZTi/5zsdBgP6PM=",
"dev": true
}
}
@@ -10157,7 +10340,8 @@
},
"path-type": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -10167,17 +10351,20 @@
"dependencies": {
"graceful-fs": {
"version": "4.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7widKIDwM7ARgjzlyPrnmNp3Xb0=",
"dev": true
},
"pify": {
"version": "2.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
@@ -10185,7 +10372,8 @@
"dependencies": {
"pinkie": {
"version": "2.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
}
}
@@ -10198,14 +10386,16 @@
},
"require-main-filename": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
"dev": true
}
}
},
"yargs": {
"version": "4.7.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-5gQyZYozh/8mnAKOrN5KUS5Djf8=",
"dev": true,
"requires": {
"camelcase": "^3.0.0",
@@ -10225,12 +10415,14 @@
"dependencies": {
"camelcase": {
"version": "3.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
"dev": true
},
"cliui": {
"version": "3.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
"dev": true,
"requires": {
"string-width": "^1.0.1",
@@ -10240,7 +10432,8 @@
"dependencies": {
"strip-ansi": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
@@ -10248,14 +10441,16 @@
"dependencies": {
"ansi-regex": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=",
"dev": true
}
}
},
"wrap-ansi": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-fTD4+HP5pbvDpk2ryNF34HGuQm8=",
"dev": true,
"requires": {
"string-width": "^1.0.1"
@@ -10265,12 +10460,14 @@
},
"decamelize": {
"version": "1.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
"lodash.assign": {
"version": "4.0.9",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Cgcx2TWQ3dm6RYn61lqvbuCSF+M=",
"dev": true,
"requires": {
"lodash.keys": "^4.0.0",
@@ -10279,19 +10476,22 @@
"dependencies": {
"lodash.keys": {
"version": "4.0.7",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MOGzvZjlTWoGEZkYEmhba8R8tjs=",
"dev": true
},
"lodash.rest": {
"version": "4.0.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-TBwyxAAoCHJQ+r9w1C4BUVSPSMU=",
"dev": true
}
}
},
"os-locale": {
"version": "1.4.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"dev": true,
"requires": {
"lcid": "^1.0.0"
@@ -10299,7 +10499,8 @@
"dependencies": {
"lcid": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"dev": true,
"requires": {
"invert-kv": "^1.0.0"
@@ -10307,7 +10508,8 @@
"dependencies": {
"invert-kv": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
"dev": true
}
}
@@ -10316,7 +10518,8 @@
},
"pkg-conf": {
"version": "1.1.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-N45W1v0T6Iv7b0ol33qD+qvduls=",
"dev": true,
"requires": {
"find-up": "^1.0.0",
@@ -10327,7 +10530,8 @@
"dependencies": {
"load-json-file": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -10339,12 +10543,14 @@
"dependencies": {
"graceful-fs": {
"version": "4.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7widKIDwM7ARgjzlyPrnmNp3Xb0=",
"dev": true
},
"parse-json": {
"version": "2.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
"error-ex": "^1.2.0"
@@ -10352,7 +10558,8 @@
"dependencies": {
"error-ex": {
"version": "1.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=",
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
@@ -10360,7 +10567,8 @@
"dependencies": {
"is-arrayish": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
}
}
@@ -10369,12 +10577,14 @@
},
"pify": {
"version": "2.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
@@ -10382,14 +10592,16 @@
"dependencies": {
"pinkie": {
"version": "2.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
}
}
},
"strip-bom": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
@@ -10397,7 +10609,8 @@
"dependencies": {
"is-utf8": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
}
}
@@ -10406,19 +10619,22 @@
},
"object-assign": {
"version": "4.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
"dev": true
},
"symbol": {
"version": "0.2.3",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-O5hzuKkB5Hxu/iFSajrDcu8ou8c=",
"dev": true
}
}
},
"read-pkg-up": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
"find-up": "^1.0.0",
@@ -10427,7 +10643,8 @@
"dependencies": {
"read-pkg": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
"load-json-file": "^1.0.0",
@@ -10437,7 +10654,8 @@
"dependencies": {
"load-json-file": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -10449,12 +10667,14 @@
"dependencies": {
"graceful-fs": {
"version": "4.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7widKIDwM7ARgjzlyPrnmNp3Xb0=",
"dev": true
},
"parse-json": {
"version": "2.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
"error-ex": "^1.2.0"
@@ -10462,7 +10682,8 @@
"dependencies": {
"error-ex": {
"version": "1.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=",
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
@@ -10470,7 +10691,8 @@
"dependencies": {
"is-arrayish": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
}
}
@@ -10479,12 +10701,14 @@
},
"pify": {
"version": "2.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
@@ -10492,14 +10716,16 @@
"dependencies": {
"pinkie": {
"version": "2.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
}
}
},
"strip-bom": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
@@ -10507,7 +10733,8 @@
"dependencies": {
"is-utf8": {
"version": "0.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
}
}
@@ -10516,7 +10743,8 @@
},
"normalize-package-data": {
"version": "2.3.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=",
"dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
@@ -10527,12 +10755,14 @@
"dependencies": {
"hosted-git-info": {
"version": "2.1.5",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=",
"dev": true
},
"is-builtin-module": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"dev": true,
"requires": {
"builtin-modules": "^1.0.0"
@@ -10540,19 +10770,22 @@
"dependencies": {
"builtin-modules": {
"version": "1.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
}
}
},
"semver": {
"version": "5.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=",
"dev": true
},
"validate-npm-package-license": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
"dev": true,
"requires": {
"spdx-correct": "~1.0.0",
@@ -10561,7 +10794,8 @@
"dependencies": {
"spdx-correct": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
"dev": true,
"requires": {
"spdx-license-ids": "^1.0.2"
@@ -10569,14 +10803,16 @@
"dependencies": {
"spdx-license-ids": {
"version": "1.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-0H6hek0v2TUfnZTi/5zsdBgP6PM=",
"dev": true
}
}
},
"spdx-expression-parse": {
"version": "1.0.2",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-1SsUtelnB3FECvIlvLVjEirEUvY=",
"dev": true,
"requires": {
"spdx-exceptions": "^1.0.4",
@@ -10585,12 +10821,14 @@
"dependencies": {
"spdx-exceptions": {
"version": "1.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-IguEI5EZrpBFqJLbgag/TOFvgP0=",
"dev": true
},
"spdx-license-ids": {
"version": "1.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-0H6hek0v2TUfnZTi/5zsdBgP6PM=",
"dev": true
}
}
@@ -10601,7 +10839,8 @@
},
"path-type": {
"version": "1.1.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -10611,17 +10850,20 @@
"dependencies": {
"graceful-fs": {
"version": "4.1.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7widKIDwM7ARgjzlyPrnmNp3Xb0=",
"dev": true
},
"pify": {
"version": "2.3.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
@@ -10629,7 +10871,8 @@
"dependencies": {
"pinkie": {
"version": "2.0.4",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
}
}
@@ -10642,17 +10885,20 @@
},
"require-main-filename": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
"dev": true
},
"set-blocking": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-zV5dk4BI3xrJLf6S4fFq3WVvXsU=",
"dev": true
},
"string-width": {
"version": "1.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ySEptvHX9SrPmvQkom44ZKBc6wo=",
"dev": true,
"requires": {
"code-point-at": "^1.0.0",
@@ -10662,7 +10908,8 @@
"dependencies": {
"code-point-at": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-9psZLT99keOC5Lcb3bd4eGGasMY=",
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
@@ -10670,14 +10917,16 @@
"dependencies": {
"number-is-nan": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-wCD1KcUoKt/dIz2R1LGBw9aG3Es=",
"dev": true
}
}
},
"is-fullwidth-code-point": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
@@ -10685,14 +10934,16 @@
"dependencies": {
"number-is-nan": {
"version": "1.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-wCD1KcUoKt/dIz2R1LGBw9aG3Es=",
"dev": true
}
}
},
"strip-ansi": {
"version": "3.0.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
@@ -10700,7 +10951,8 @@
"dependencies": {
"ansi-regex": {
"version": "2.0.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=",
"dev": true
}
}
@@ -10709,17 +10961,20 @@
},
"window-size": {
"version": "0.2.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=",
"dev": true
},
"y18n": {
"version": "3.2.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
"dev": true
},
"yargs-parser": {
"version": "2.4.0",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-HzZ9ycbPpWYLaXEjDzsnf8Xjrco=",
"dev": true,
"requires": {
"camelcase": "^2.1.1",
@@ -10728,7 +10983,8 @@
"dependencies": {
"camelcase": {
"version": "2.1.1",
- "bundled": true,
+ "resolved": false,
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
"dev": true
}
}
@@ -14180,14 +14436,14 @@
}
},
"react": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react/-/react-16.4.1.tgz",
- "integrity": "sha512-3GEs0giKp6E0Oh/Y9ZC60CmYgUPnp7voH9fbjWsvXtYFb4EWtgQub0ADSq0sJR0BbHc4FThLLtzlcFaFXIorwg==",
+ "version": "16.8.6",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz",
+ "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==",
"requires": {
- "fbjs": "^0.8.16",
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
- "prop-types": "^15.6.0"
+ "prop-types": "^15.6.2",
+ "scheduler": "^0.13.6"
}
},
"react-addons-test-utils": {
@@ -14236,14 +14492,14 @@
}
},
"react-dom": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.1.tgz",
- "integrity": "sha512-1Gin+wghF/7gl4Cqcvr1DxFX2Osz7ugxSwl6gBqCMpdrxHjIFUS7GYxrFftZ9Ln44FHw0JxCFD9YtZsrbR5/4A==",
+ "version": "16.8.6",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz",
+ "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==",
"requires": {
- "fbjs": "^0.8.16",
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
- "prop-types": "^15.6.0"
+ "prop-types": "^15.6.2",
+ "scheduler": "^0.13.6"
}
},
"react-helmet": {
@@ -14306,6 +14562,11 @@
"react-base16-styling": "^0.5.1"
}
},
+ "react-moment": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/react-moment/-/react-moment-0.8.4.tgz",
+ "integrity": "sha512-QhI19OcfhiAn60/O6bMR0w8ApXrPFCjv6+eV0I/P9/AswzjgEAx4L7VxMBCpS/jrythLa12Q9v88req+ys4YpA=="
+ },
"react-proxy": {
"version": "3.0.0-alpha.1",
"resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-3.0.0-alpha.1.tgz",
@@ -15063,6 +15324,15 @@
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true
},
+ "scheduler": {
+ "version": "0.13.6",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz",
+ "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ },
"schema-utils": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
diff --git a/package.json b/package.json
index f0fa1f581..10aeba410 100644
--- a/package.json
+++ b/package.json
@@ -41,12 +41,14 @@
"intl-locales-supported": "^1.0.0",
"isomorphic-fetch": "^2.2.1",
"limax": "^1.3.0",
+ "moment": "^2.24.0",
"mongoose": "^4.4.20",
"prop-types": "^15.6.2",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
+ "react": "^16.8.6",
+ "react-dom": "^16.8.6",
"react-helmet": "^5.2.0",
"react-intl": "^2.1.2",
+ "react-moment": "^0.8.4",
"react-redux": "^4.4.5",
"react-router": "^3.2.1",
"redux": "^3.5.2",
diff --git a/server/controllers/comment.controller.js b/server/controllers/comment.controller.js
new file mode 100644
index 000000000..5d6f6f014
--- /dev/null
+++ b/server/controllers/comment.controller.js
@@ -0,0 +1,91 @@
+import Comment from '../models/comment';
+import cuid from 'cuid';
+
+/**
+ * Get all comments
+ * @param req
+ * @param res
+ * @returns void
+ */
+export function getComments(req, res) {
+ Comment.find().sort('-date').exec((err, comments) => {
+ if (err) {
+ res.status(500).send(err);
+ }
+ res.json(comments);
+ });
+}
+
+/**
+ * Get comments by post
+ * @param req
+ * @param res
+ * @returns void
+ */
+export function getCommentsByPost(req, res) {
+ Comment.find({ post: req.params.post }).exec((err, comments) => {
+ if (err) {
+ res.status(404).send(err);
+ }
+ res.json(comments);
+ });
+}
+
+/**
+ * Add a comment
+ * @param req
+ * @param res
+ * @returns void
+ */
+export function addComment(req, res) {
+ if (!req.body.name || !req.body.text) {
+ res.status(403).end();
+ }
+
+ const newComment = new Comment(req.body);
+ newComment.name = req.body.name;
+ newComment.text = req.body.text;
+ newComment.post = req.body.post;
+ newComment.cuid = cuid();
+
+ newComment.save((err, saved) => {
+ if (err) {
+ res.status(500).send(err);
+ }
+ res.json(saved);
+ });
+}
+
+/**
+ * Update a comment
+ * @param req
+ * @param res
+ * @returns void
+ */
+export function updateComment(req, res) {
+ Comment.findOneAndUpdate(
+ { cuid: req.body.cuid },
+ { $set: { text: req.body.text },
+ })
+ .exec((err, comment) => {
+ if (err) {
+ res.status(500).send(err);
+ }
+ res.status(200).json(comment);
+ });
+}
+
+/**
+ * Remove a comment
+ * @param req
+ * @param res
+ * @returns void
+*/
+export function removeComment(req, res) {
+ Comment.findOne({ cuid: req.body.cuid }).remove((err, deleted) => {
+ if (err) {
+ res.status(500).send(err);
+ }
+ res.status(200).send(deleted);
+ });
+}
diff --git a/server/dummyData.js b/server/dummyData.js
index 7749aa13f..dc811f8ef 100644
--- a/server/dummyData.js
+++ b/server/dummyData.js
@@ -37,6 +37,15 @@ export default function () {
const post1 = new Post({ name: 'Admin', title: 'Hello MERN', slug: 'hello-mern', cuid: 'cikqgkv4q01ck7453ualdn3hd', content: content1 });
const post2 = new Post({ name: 'Admin', title: 'Lorem Ipsum', slug: 'lorem-ipsum', cuid: 'cikqgkv4q01ck7453ualdn3hf', content: content2 });
+ const comment1 = new Comment({ name: 'Alex', text: 'Nice article', cuid: 'cikqgkv4q01ck7453ualdn3hf', post: 'cikqgkv4q01ck7453ualdn3hd' });
+ const comment2 = new Comment({ name: 'Oleg', text: 'Great', cuid: 'cikqgkv4q01ck7453ualdn3hg', post: 'cikqgkv4q01ck7453ualdn3hd' });
+
+ Comment.create([comment1, comment2], (error) => {
+ if (!error) {
+ // console.log('ready to go....');
+ }
+ });
+
Post.create([post1, post2], (error) => {
if (!error) {
// console.log('ready to go....');
diff --git a/server/models/comment.js b/server/models/comment.js
new file mode 100644
index 000000000..cb80cc527
--- /dev/null
+++ b/server/models/comment.js
@@ -0,0 +1,12 @@
+import mongoose from 'mongoose';
+const Schema = mongoose.Schema;
+
+const commentSchema = new Schema({
+ name: { type: String, required: true },
+ text: { type: String, required: true },
+ cuid: { type: String, required: true },
+ post: { type: String, required: true },
+ date: { type: 'Date', default: Date.now, required: true },
+});
+
+export default mongoose.model('Comment', commentSchema);
diff --git a/server/routes/comment.routes.js b/server/routes/comment.routes.js
new file mode 100644
index 000000000..fb53a86fe
--- /dev/null
+++ b/server/routes/comment.routes.js
@@ -0,0 +1,20 @@
+import { Router } from 'express';
+import * as CommentRoutes from '../controllers/comment.controller';
+const router = new Router();
+
+// Get all comments
+router.route('/comments').get(CommentRoutes.getComments);
+
+// Get comments by post
+router.route('/comment/:post').get(CommentRoutes.getCommentsByPost);
+
+// Add a comment
+router.route('/comments').post(CommentRoutes.addComment);
+
+// Delete a comment
+router.route('/comments').delete(CommentRoutes.removeComment);
+
+// Update a comment
+router.route('/comments').put(CommentRoutes.updateComment);
+
+export default router;
diff --git a/server/server.js b/server/server.js
index 382249c91..cf2182b11 100644
--- a/server/server.js
+++ b/server/server.js
@@ -46,6 +46,7 @@ import Helmet from 'react-helmet';
import routes from '../client/routes';
import { fetchComponentData } from './util/fetchData';
import posts from './routes/post.routes';
+import comments from './routes/comment.routes';
import dummyData from './dummyData';
import serverConfig from './config';
@@ -71,6 +72,7 @@ app.use(bodyParser.json({ limit: '20mb' }));
app.use(bodyParser.urlencoded({ limit: '20mb', extended: false }));
app.use(Express.static(path.resolve(__dirname, '../dist/client')));
app.use('/api', posts);
+app.use('/api', comments);
// Render Initial HTML
const renderFullPage = (html, initialState) => {