diff --git a/common/static/common/js/components/BlockBrowser/.eslintrc.js b/common/static/common/js/components/BlockBrowser/.eslintrc.js
new file mode 100644
index 000000000000..838b853a8277
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/.eslintrc.js
@@ -0,0 +1,11 @@
+module.exports = {
+ extends: 'eslint-config-edx',
+ root: true,
+ settings: {
+ 'import/resolver': {
+ webpack: {
+ config: 'webpack.dev.config.js',
+ },
+ },
+ },
+};
diff --git a/common/static/common/js/components/BlockBrowser/components/BlockBrowser/BlockBrowser.jsx b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/BlockBrowser.jsx
new file mode 100644
index 000000000000..b1817f221658
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/BlockBrowser.jsx
@@ -0,0 +1,114 @@
+/* global gettext */
+import { Button, Icon } from '@edx/paragon';
+import classNames from 'classnames';
+import PropTypes from 'prop-types';
+import React from 'react';
+
+const RightIcon = (
+
+);
+
+const UpIcon = (
+
+);
+
+const BLOCK_TYPE_NAME = {
+ course: 'Course',
+ chapter: 'Section',
+ sequential: 'Sub-section',
+ vertical: 'Unit',
+};
+
+const BlockType = PropTypes.shape({
+ children: PropTypes.array,
+ display_name: PropTypes.string.isRequired,
+ id: PropTypes.string.isRequired,
+ parent: PropTypes.string,
+ type: PropTypes.string.isRequired,
+});
+
+export const BlockList = ({ blocks, selectedBlock, onSelectBlock, onChangeRoot }) => (
+
+ {blocks.map(block => (
+
+ onSelectBlock(block.id)}
+ label={block.display_name}
+ />
+ {block.children &&
+ onChangeRoot(block.id)}
+ label={RightIcon}
+ />
+ }
+
+ ))}
+
+);
+
+BlockList.propTypes = {
+ blocks: PropTypes.arrayOf(BlockType),
+ selectedBlock: PropTypes.string,
+ onSelectBlock: PropTypes.func.isRequired,
+ onChangeRoot: PropTypes.func.isRequired,
+};
+
+BlockList.defaultProps = {
+ blocks: null,
+ selectedBlock: null,
+};
+
+
+export const BlockBrowser = ({ blocks, selectedBlock, onSelectBlock, onChangeRoot, className }) =>
+ !!blocks && (
+
+ );
+
+BlockBrowser.propTypes = {
+ blocks: BlockType,
+ selectedBlock: PropTypes.string,
+ onSelectBlock: PropTypes.func.isRequired,
+ onChangeRoot: PropTypes.func.isRequired,
+};
+
+BlockBrowser.defaultProps = {
+ blocks: null,
+ selectedBlock: null,
+};
diff --git a/common/static/common/js/components/BlockBrowser/components/BlockBrowser/BlockBrowser.test.jsx b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/BlockBrowser.test.jsx
new file mode 100644
index 000000000000..861e7fec3b27
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/BlockBrowser.test.jsx
@@ -0,0 +1,49 @@
+/* global jest,test,describe,expect */
+import React from 'react';
+import renderer from 'react-test-renderer';
+import { BlockBrowser, BlockList } from './BlockBrowser';
+import testBlockTree from './test-block-tree.json';
+
+describe('BlockList component', () => {
+ test('render with basic parameters', () => {
+ const component = renderer.create(
+ ,
+ );
+ const tree = component.toJSON();
+ expect(tree).toMatchSnapshot();
+ });
+});
+
+describe('BlockBrowser component', () => {
+ test('render with basic parameters', () => {
+ const component = renderer.create(
+ ,
+ );
+ const tree = component.toJSON();
+ expect(tree).toMatchSnapshot();
+ });
+
+ test('render with custom classname', () => {
+ const component = renderer.create(
+ ,
+ );
+ const tree = component.toJSON();
+ expect(tree).toMatchSnapshot();
+ });
+});
diff --git a/common/static/common/js/components/BlockBrowser/components/BlockBrowser/BlockBrowserContainer.jsx b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/BlockBrowserContainer.jsx
new file mode 100644
index 000000000000..d3931c2bb541
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/BlockBrowserContainer.jsx
@@ -0,0 +1,22 @@
+import { connect } from 'react-redux';
+import { changeRoot } from '../../data/actions/courseBlocks';
+import { getActiveBlockTree } from '../../data/selectors/index';
+import { BlockBrowser } from './BlockBrowser';
+
+const mapStateToProps = state => ({
+ blocks: getActiveBlockTree(state),
+ selectedBlock: state.selectedBlock,
+});
+
+
+const mapDispatchToProps = dispatch => ({
+ onChangeRoot: blockId => dispatch(changeRoot(blockId)),
+});
+
+
+const BlockBrowserContainer = connect(
+ mapStateToProps,
+ mapDispatchToProps,
+)(BlockBrowser);
+
+export default BlockBrowserContainer;
diff --git a/common/static/common/js/components/BlockBrowser/components/BlockBrowser/__snapshots__/BlockBrowser.test.jsx.snap b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/__snapshots__/BlockBrowser.test.jsx.snap
new file mode 100644
index 000000000000..d51261cbc1cf
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/__snapshots__/BlockBrowser.test.jsx.snap
@@ -0,0 +1,706 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`BlockBrowser component render with basic parameters 1`] = `
+
+
+
+
+
+ Introduction
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ Example Week 1: Getting Started
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ Example Week 2: Get Interactive
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ Example Week 3: Be Social
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ About Exams and Certificates
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ holding section
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+`;
+
+exports[`BlockBrowser component render with custom classname 1`] = `
+
+
+
+
+
+ Introduction
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ Example Week 1: Getting Started
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ Example Week 2: Get Interactive
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ Example Week 3: Be Social
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ About Exams and Certificates
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ holding section
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+`;
+
+exports[`BlockList component render with basic parameters 1`] = `
+
+
+
+ Introduction
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ Example Week 1: Getting Started
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ Example Week 2: Get Interactive
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ Example Week 3: Be Social
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ About Exams and Certificates
+
+
+
+
+
+ View child items
+
+
+
+
+
+
+ holding section
+
+
+
+
+
+ View child items
+
+
+
+
+
+`;
diff --git a/common/static/common/js/components/BlockBrowser/components/BlockBrowser/test-block-tree.json b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/test-block-tree.json
new file mode 100644
index 000000000000..9fe2278067d9
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/components/BlockBrowser/test-block-tree.json
@@ -0,0 +1,1390 @@
+{
+ "parent": null,
+ "display_name": "edX Demonstration Course",
+ "block_id": "course",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@course+block@course",
+ "display_name": "Introduction",
+ "block_id": "d8a6192ade314473a78242dfeedfbf5b",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@d8a6192ade314473a78242dfeedfbf5b",
+ "display_name": "Demo Course Overview",
+ "block_id": "edx_introduction",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@edx_introduction",
+ "display_name": "Introduction: Video and Sequences",
+ "block_id": "vertical_0270f6de40fc",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc",
+ "display_name": "Blank HTML Page",
+ "block_id": "030e35c4756a4ddc8d40b95fbbfff4d4",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@030e35c4756a4ddc8d40b95fbbfff4d4"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc",
+ "display_name": "Discussion",
+ "block_id": "236f057b15b84679a26cd8c6af34e8d4",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@236f057b15b84679a26cd8c6af34e8d4",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@236f057b15b84679a26cd8c6af34e8d4",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@236f057b15b84679a26cd8c6af34e8d4"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc",
+ "display_name": "Welcome!",
+ "block_id": "0b9e39477cf34507a7a48f74be381fdd",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd",
+ "type": "video",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@video+block@0b9e39477cf34507a7a48f74be381fdd"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0270f6de40fc"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@edx_introduction",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@edx_introduction",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@edx_introduction"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@chapter+block@d8a6192ade314473a78242dfeedfbf5b",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@chapter+block@d8a6192ade314473a78242dfeedfbf5b",
+ "type": "chapter",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@d8a6192ade314473a78242dfeedfbf5b"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@course+block@course",
+ "display_name": "Example Week 1: Getting Started",
+ "block_id": "interactive_demonstrations",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations",
+ "display_name": "Lesson 1 - Getting Started",
+ "block_id": "19a30717eff543078a5d94ae9d6c18a5",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5",
+ "display_name": "Getting Started",
+ "block_id": "867dddb6f55d410caaa9c1eb9c6743ec",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@867dddb6f55d410caaa9c1eb9c6743ec",
+ "display_name": "Getting Started",
+ "block_id": "82d599b014b246c7a9b5dfc750dc08a9",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@82d599b014b246c7a9b5dfc750dc08a9",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@82d599b014b246c7a9b5dfc750dc08a9",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@82d599b014b246c7a9b5dfc750dc08a9"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@867dddb6f55d410caaa9c1eb9c6743ec",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@867dddb6f55d410caaa9c1eb9c6743ec",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@867dddb6f55d410caaa9c1eb9c6743ec"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5",
+ "display_name": "Working with Videos",
+ "block_id": "4f6c1b4e316a419ab5b6bf30e6c708e9",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@4f6c1b4e316a419ab5b6bf30e6c708e9",
+ "display_name": "",
+ "block_id": "6bcccc2d7343416e9e03fd7325b2f232",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@6bcccc2d7343416e9e03fd7325b2f232",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@6bcccc2d7343416e9e03fd7325b2f232",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@6bcccc2d7343416e9e03fd7325b2f232"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@4f6c1b4e316a419ab5b6bf30e6c708e9",
+ "display_name": "Science and Cooking Chef Profile: JOSÉ ANDRÉS",
+ "block_id": "7e9b434e6de3435ab99bd3fb25bde807",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@7e9b434e6de3435ab99bd3fb25bde807",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@video+block@7e9b434e6de3435ab99bd3fb25bde807",
+ "type": "video",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@video+block@7e9b434e6de3435ab99bd3fb25bde807"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@4f6c1b4e316a419ab5b6bf30e6c708e9",
+ "display_name": "Working with Videos",
+ "block_id": "412dc8dbb6674014862237b23c1f643f",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@412dc8dbb6674014862237b23c1f643f",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@412dc8dbb6674014862237b23c1f643f",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@412dc8dbb6674014862237b23c1f643f"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@4f6c1b4e316a419ab5b6bf30e6c708e9",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@4f6c1b4e316a419ab5b6bf30e6c708e9",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@4f6c1b4e316a419ab5b6bf30e6c708e9"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5",
+ "display_name": "Videos on edX",
+ "block_id": "3dc16db8d14842e38324e95d4030b8a0",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3dc16db8d14842e38324e95d4030b8a0",
+ "display_name": "Videos on edX",
+ "block_id": "0a3b4139f51a4917a3aff9d519b1eeb6",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@0a3b4139f51a4917a3aff9d519b1eeb6",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@0a3b4139f51a4917a3aff9d519b1eeb6",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@0a3b4139f51a4917a3aff9d519b1eeb6"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3dc16db8d14842e38324e95d4030b8a0",
+ "display_name": "Video",
+ "block_id": "5c90cffecd9b48b188cbfea176bf7fe9",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@5c90cffecd9b48b188cbfea176bf7fe9",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@video+block@5c90cffecd9b48b188cbfea176bf7fe9",
+ "type": "video",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@video+block@5c90cffecd9b48b188cbfea176bf7fe9"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3dc16db8d14842e38324e95d4030b8a0",
+ "display_name": "Videos on edX",
+ "block_id": "722085be27c84ac693cfebc8ac5da700",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@722085be27c84ac693cfebc8ac5da700",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@722085be27c84ac693cfebc8ac5da700",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@722085be27c84ac693cfebc8ac5da700"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@3dc16db8d14842e38324e95d4030b8a0",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@3dc16db8d14842e38324e95d4030b8a0",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3dc16db8d14842e38324e95d4030b8a0"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5",
+ "display_name": "Video Demonstrations",
+ "block_id": "4a1bba2a403f40bca5ec245e945b0d76",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@4a1bba2a403f40bca5ec245e945b0d76",
+ "display_name": "",
+ "block_id": "ed5dccf14ae94353961f46fa07217491",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@ed5dccf14ae94353961f46fa07217491",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@ed5dccf14ae94353961f46fa07217491",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@ed5dccf14ae94353961f46fa07217491"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@4a1bba2a403f40bca5ec245e945b0d76",
+ "display_name": "Video Demonstrations",
+ "block_id": "9f9e1373cc8243b985c8750cc8acec7d",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@9f9e1373cc8243b985c8750cc8acec7d",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@9f9e1373cc8243b985c8750cc8acec7d",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@9f9e1373cc8243b985c8750cc8acec7d"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@4a1bba2a403f40bca5ec245e945b0d76",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@4a1bba2a403f40bca5ec245e945b0d76",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@4a1bba2a403f40bca5ec245e945b0d76"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5",
+ "display_name": "Video Presentation Styles",
+ "block_id": "256f17a44983429fb1a60802203ee4e0",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@256f17a44983429fb1a60802203ee4e0",
+ "display_name": "",
+ "block_id": "c2f7008c9ccf4bd09d5d800c98fb0722",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@c2f7008c9ccf4bd09d5d800c98fb0722",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@c2f7008c9ccf4bd09d5d800c98fb0722",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@c2f7008c9ccf4bd09d5d800c98fb0722"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@256f17a44983429fb1a60802203ee4e0",
+ "display_name": "Connecting a Circuit and a Circuit Diagram",
+ "block_id": "636541acbae448d98ab484b028c9a7f6",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@video+block@636541acbae448d98ab484b028c9a7f6",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@video+block@636541acbae448d98ab484b028c9a7f6",
+ "type": "video",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@video+block@636541acbae448d98ab484b028c9a7f6"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@256f17a44983429fb1a60802203ee4e0",
+ "display_name": "Video Presentation Styles",
+ "block_id": "e2cb0e0994f84b0abfa5f4ae42ed9d44",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@e2cb0e0994f84b0abfa5f4ae42ed9d44",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@e2cb0e0994f84b0abfa5f4ae42ed9d44",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@e2cb0e0994f84b0abfa5f4ae42ed9d44"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@256f17a44983429fb1a60802203ee4e0",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@256f17a44983429fb1a60802203ee4e0",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@256f17a44983429fb1a60802203ee4e0"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5",
+ "display_name": "Interactive Questions",
+ "block_id": "e3601c0abee6427d8c17e6d6f8fdddd1",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@e3601c0abee6427d8c17e6d6f8fdddd1",
+ "display_name": "Interactive Questions",
+ "block_id": "9cee77a606ea4c1aa5440e0ea5d0f618",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@9cee77a606ea4c1aa5440e0ea5d0f618",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@9cee77a606ea4c1aa5440e0ea5d0f618",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@9cee77a606ea4c1aa5440e0ea5d0f618"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@e3601c0abee6427d8c17e6d6f8fdddd1",
+ "display_name": "",
+ "block_id": "3169f89efde2452993f2f2d9bc74f5b2",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@3169f89efde2452993f2f2d9bc74f5b2",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@3169f89efde2452993f2f2d9bc74f5b2",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@3169f89efde2452993f2f2d9bc74f5b2"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@e3601c0abee6427d8c17e6d6f8fdddd1",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@e3601c0abee6427d8c17e6d6f8fdddd1",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@e3601c0abee6427d8c17e6d6f8fdddd1"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5",
+ "display_name": "Reading Assignments",
+ "block_id": "134df56c516a4a0dbb24dd5facef746e",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e",
+ "display_name": "Reading Assignments",
+ "block_id": "e0254b911fa246218bd98bbdadffef06",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@e0254b911fa246218bd98bbdadffef06",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@e0254b911fa246218bd98bbdadffef06",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@e0254b911fa246218bd98bbdadffef06"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e",
+ "display_name": "Text",
+ "block_id": "2574c523e97b477a9d72fbb37bfb995f",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@2574c523e97b477a9d72fbb37bfb995f",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@2574c523e97b477a9d72fbb37bfb995f",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@2574c523e97b477a9d72fbb37bfb995f"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e",
+ "display_name": "Perchance to Dream",
+ "block_id": "932e6f2ce8274072a355a94560216d1a",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@932e6f2ce8274072a355a94560216d1a",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@932e6f2ce8274072a355a94560216d1a",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@932e6f2ce8274072a355a94560216d1a"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e",
+ "display_name": "Attributing Blame",
+ "block_id": "303034da25524878a2e66fb57c91cf85",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@303034da25524878a2e66fb57c91cf85",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@303034da25524878a2e66fb57c91cf85",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@303034da25524878a2e66fb57c91cf85"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e",
+ "display_name": "Reading Sample",
+ "block_id": "ffa5817d49e14fec83ad6187cbe16358",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@ffa5817d49e14fec83ad6187cbe16358",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@ffa5817d49e14fec83ad6187cbe16358",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@ffa5817d49e14fec83ad6187cbe16358"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations",
+ "display_name": "Homework - Question Styles",
+ "block_id": "basic_questions",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
+ "display_name": "Pointing on a Picture",
+ "block_id": "2152d4a4aadc4cb0af5256394a3d1fc7",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@2152d4a4aadc4cb0af5256394a3d1fc7",
+ "display_name": "Pointing on a Picture",
+ "block_id": "c554538a57664fac80783b99d9d6da7c",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@c554538a57664fac80783b99d9d6da7c",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@c554538a57664fac80783b99d9d6da7c",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@c554538a57664fac80783b99d9d6da7c"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@2152d4a4aadc4cb0af5256394a3d1fc7",
+ "display_name": "",
+ "block_id": "e5eac7e1a5a24f5fa7ed77bb6d136591",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@e5eac7e1a5a24f5fa7ed77bb6d136591",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@e5eac7e1a5a24f5fa7ed77bb6d136591",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@e5eac7e1a5a24f5fa7ed77bb6d136591"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@2152d4a4aadc4cb0af5256394a3d1fc7",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@2152d4a4aadc4cb0af5256394a3d1fc7",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@2152d4a4aadc4cb0af5256394a3d1fc7"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
+ "display_name": "Drag and Drop",
+ "block_id": "47dbd5f836544e61877a483c0b75606c",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@47dbd5f836544e61877a483c0b75606c",
+ "display_name": "Drag and Drop",
+ "block_id": "d2e35c1d294b4ba0b3b1048615605d2a",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@d2e35c1d294b4ba0b3b1048615605d2a",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@d2e35c1d294b4ba0b3b1048615605d2a",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@d2e35c1d294b4ba0b3b1048615605d2a"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@47dbd5f836544e61877a483c0b75606c",
+ "display_name": "",
+ "block_id": "5ab88e67d46049b9aa694cb240c39cef",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@5ab88e67d46049b9aa694cb240c39cef",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@5ab88e67d46049b9aa694cb240c39cef",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@5ab88e67d46049b9aa694cb240c39cef"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@47dbd5f836544e61877a483c0b75606c",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@47dbd5f836544e61877a483c0b75606c",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@47dbd5f836544e61877a483c0b75606c"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
+ "display_name": "Multiple Choice Questions",
+ "block_id": "54bb9b142c6c4c22afc62bcb628f0e68",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@54bb9b142c6c4c22afc62bcb628f0e68",
+ "display_name": "Multiple Choice Questions",
+ "block_id": "a0effb954cca4759994f1ac9e9434bf4",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@a0effb954cca4759994f1ac9e9434bf4",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@a0effb954cca4759994f1ac9e9434bf4",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@a0effb954cca4759994f1ac9e9434bf4"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@54bb9b142c6c4c22afc62bcb628f0e68",
+ "display_name": "",
+ "block_id": "67c26b1e826e47aaa29757f62bcd1ad0",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@67c26b1e826e47aaa29757f62bcd1ad0",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@67c26b1e826e47aaa29757f62bcd1ad0",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@67c26b1e826e47aaa29757f62bcd1ad0"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@54bb9b142c6c4c22afc62bcb628f0e68",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@54bb9b142c6c4c22afc62bcb628f0e68",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@54bb9b142c6c4c22afc62bcb628f0e68"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
+ "display_name": "Mathematical Expressions",
+ "block_id": "vertical_0c92347a5c00",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0c92347a5c00",
+ "display_name": "Mathematical Expressions",
+ "block_id": "Sample_Algebraic_Problem",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@Sample_Algebraic_Problem",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@Sample_Algebraic_Problem",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@Sample_Algebraic_Problem"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0c92347a5c00",
+ "display_name": "",
+ "block_id": "870371212ba04dcf9536d7c7b8f3109e",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@870371212ba04dcf9536d7c7b8f3109e",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@870371212ba04dcf9536d7c7b8f3109e",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@870371212ba04dcf9536d7c7b8f3109e"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0c92347a5c00",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0c92347a5c00",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0c92347a5c00"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
+ "display_name": "Chemical Equations",
+ "block_id": "vertical_1fef54c2b23b",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_1fef54c2b23b",
+ "display_name": "Chemical Equations",
+ "block_id": "Sample_ChemFormula_Problem",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@Sample_ChemFormula_Problem",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@Sample_ChemFormula_Problem",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@Sample_ChemFormula_Problem"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_1fef54c2b23b",
+ "display_name": "",
+ "block_id": "4d672c5893cb4f1dad0de67d2008522e",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@4d672c5893cb4f1dad0de67d2008522e",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@4d672c5893cb4f1dad0de67d2008522e",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@4d672c5893cb4f1dad0de67d2008522e"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_1fef54c2b23b",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_1fef54c2b23b",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_1fef54c2b23b"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
+ "display_name": "Numerical Input",
+ "block_id": "2889db1677a549abb15eb4d886f95d1c",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@2889db1677a549abb15eb4d886f95d1c",
+ "display_name": "Numerical Input",
+ "block_id": "75f9562c77bc4858b61f907bb810d974",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@75f9562c77bc4858b61f907bb810d974",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@75f9562c77bc4858b61f907bb810d974",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@75f9562c77bc4858b61f907bb810d974"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@2889db1677a549abb15eb4d886f95d1c",
+ "display_name": "",
+ "block_id": "501aed9d902349eeb2191fa505548de2",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@501aed9d902349eeb2191fa505548de2",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@501aed9d902349eeb2191fa505548de2",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@501aed9d902349eeb2191fa505548de2"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@2889db1677a549abb15eb4d886f95d1c",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@2889db1677a549abb15eb4d886f95d1c",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@2889db1677a549abb15eb4d886f95d1c"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
+ "display_name": "Text input",
+ "block_id": "e8a5cc2aed424838853defab7be45e42",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@e8a5cc2aed424838853defab7be45e42",
+ "display_name": "Text Input",
+ "block_id": "0d759dee4f9d459c8956136dbde55f02",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@0d759dee4f9d459c8956136dbde55f02",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@0d759dee4f9d459c8956136dbde55f02",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@0d759dee4f9d459c8956136dbde55f02"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@e8a5cc2aed424838853defab7be45e42",
+ "display_name": "",
+ "block_id": "6244918637ed4ff4b5f94a840a7e4b43",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@6244918637ed4ff4b5f94a840a7e4b43",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@6244918637ed4ff4b5f94a840a7e4b43",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@6244918637ed4ff4b5f94a840a7e4b43"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@e8a5cc2aed424838853defab7be45e42",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@e8a5cc2aed424838853defab7be45e42",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@e8a5cc2aed424838853defab7be45e42"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations",
+ "type": "chapter",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@course+block@course",
+ "display_name": "Example Week 2: Get Interactive",
+ "block_id": "graded_interactions",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@graded_interactions",
+ "display_name": "Lesson 2 - Let's Get Interactive!",
+ "block_id": "simulations",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@simulations",
+ "display_name": "Lesson 2 - Let's Get Interactive! ",
+ "block_id": "d0d804e8863c4a95a659c04d8a2b2bc0",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@d0d804e8863c4a95a659c04d8a2b2bc0",
+ "display_name": "Lesson 2: Let's Get Interactive!",
+ "block_id": "78d7d3642f3a4dbabbd1b017861aa5f2",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@78d7d3642f3a4dbabbd1b017861aa5f2",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@78d7d3642f3a4dbabbd1b017861aa5f2",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@78d7d3642f3a4dbabbd1b017861aa5f2"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@d0d804e8863c4a95a659c04d8a2b2bc0",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@d0d804e8863c4a95a659c04d8a2b2bc0",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@d0d804e8863c4a95a659c04d8a2b2bc0"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@simulations",
+ "display_name": "An Interactive Reference Table",
+ "block_id": "vertical_2dbb0072785e",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_2dbb0072785e",
+ "display_name": "An Interactive Reference Table",
+ "block_id": "html_07d547513285",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@html_07d547513285",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@html_07d547513285",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@html_07d547513285"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_2dbb0072785e",
+ "display_name": "",
+ "block_id": "6f7a6670f87147149caeff6afa07a526",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@6f7a6670f87147149caeff6afa07a526",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@6f7a6670f87147149caeff6afa07a526",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@6f7a6670f87147149caeff6afa07a526"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_2dbb0072785e",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_2dbb0072785e",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_2dbb0072785e"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@simulations",
+ "display_name": "Zooming Diagrams",
+ "block_id": "vertical_98cf62510471",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_98cf62510471",
+ "display_name": "Zooming Diagrams",
+ "block_id": "700x_pathways",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@700x_pathways",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@700x_pathways",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@700x_pathways"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_98cf62510471",
+ "display_name": "",
+ "block_id": "e0d7423118ab432582d03e8e8dad8e36",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@e0d7423118ab432582d03e8e8dad8e36",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@e0d7423118ab432582d03e8e8dad8e36",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@e0d7423118ab432582d03e8e8dad8e36"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_98cf62510471",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_98cf62510471",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_98cf62510471"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@simulations",
+ "display_name": "Electronic Sound Experiment",
+ "block_id": "vertical_d32bf9b2242c",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_d32bf9b2242c",
+ "display_name": "Electronic Sound Experiment",
+ "block_id": "Lab_5B_Mosfet_Amplifier_Experiment",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@Lab_5B_Mosfet_Amplifier_Experiment",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@Lab_5B_Mosfet_Amplifier_Experiment",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@Lab_5B_Mosfet_Amplifier_Experiment"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_d32bf9b2242c",
+ "display_name": "",
+ "block_id": "03f051f9a8814881a3783d2511613aa6",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@03f051f9a8814881a3783d2511613aa6",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@03f051f9a8814881a3783d2511613aa6",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@03f051f9a8814881a3783d2511613aa6"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_d32bf9b2242c",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_d32bf9b2242c",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_d32bf9b2242c"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@simulations",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@simulations",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@simulations"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@graded_interactions",
+ "display_name": "Homework - Labs and Demos",
+ "block_id": "graded_simulations",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@graded_simulations",
+ "display_name": "Labs and Demos",
+ "block_id": "d6cee45205a449369d7ef8f159b22bdf",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@d6cee45205a449369d7ef8f159b22bdf",
+ "display_name": "Labs and Demos",
+ "block_id": "2bee8c4248e842a19ba1e73ed8d426c2",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@2bee8c4248e842a19ba1e73ed8d426c2",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@2bee8c4248e842a19ba1e73ed8d426c2",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@2bee8c4248e842a19ba1e73ed8d426c2"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@d6cee45205a449369d7ef8f159b22bdf",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@d6cee45205a449369d7ef8f159b22bdf",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@d6cee45205a449369d7ef8f159b22bdf"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@graded_simulations",
+ "display_name": "Molecule Editor",
+ "block_id": "vertical_0fab6aa52165",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0fab6aa52165",
+ "display_name": "",
+ "block_id": "2b94658d2eee4d85ae13f83bc24cfca9",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@2b94658d2eee4d85ae13f83bc24cfca9",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@2b94658d2eee4d85ae13f83bc24cfca9",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@2b94658d2eee4d85ae13f83bc24cfca9"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0fab6aa52165",
+ "display_name": "Molecule Editor",
+ "block_id": "700x_editmolB",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@700x_editmolB",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@700x_editmolB",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@700x_editmolB"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0fab6aa52165",
+ "display_name": "",
+ "block_id": "0aa7a3bdbe18427795b0c1a1d7c3cb9a",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@0aa7a3bdbe18427795b0c1a1d7c3cb9a",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@0aa7a3bdbe18427795b0c1a1d7c3cb9a",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@0aa7a3bdbe18427795b0c1a1d7c3cb9a"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0fab6aa52165",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0fab6aa52165",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0fab6aa52165"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@graded_simulations",
+ "display_name": "Code Grader",
+ "block_id": "vertical_aae927868e55",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_aae927868e55",
+ "display_name": "Code Grader",
+ "block_id": "891211e17f9a472290a5f12c7a6626d7",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@891211e17f9a472290a5f12c7a6626d7",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@891211e17f9a472290a5f12c7a6626d7",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@891211e17f9a472290a5f12c7a6626d7"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_aae927868e55",
+ "display_name": "",
+ "block_id": "python_grader",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@python_grader",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@python_grader",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@python_grader"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_aae927868e55",
+ "display_name": "",
+ "block_id": "c6cd4bea43454aaea60ad01beb0cf213",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@c6cd4bea43454aaea60ad01beb0cf213",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@c6cd4bea43454aaea60ad01beb0cf213",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@c6cd4bea43454aaea60ad01beb0cf213"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_aae927868e55",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_aae927868e55",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_aae927868e55"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@graded_simulations",
+ "display_name": "Electric Circuit Simulator",
+ "block_id": "vertical_c037f3757df1",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_c037f3757df1",
+ "display_name": "Electronic Circuit Simulator",
+ "block_id": "d5a5caaf35e84ebc9a747038465dcfb4",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@d5a5caaf35e84ebc9a747038465dcfb4",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@d5a5caaf35e84ebc9a747038465dcfb4",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@d5a5caaf35e84ebc9a747038465dcfb4"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_c037f3757df1",
+ "display_name": "",
+ "block_id": "free_form_simulation",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@free_form_simulation",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@free_form_simulation",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@free_form_simulation"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_c037f3757df1",
+ "display_name": "",
+ "block_id": "logic_gate_problem",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@logic_gate_problem",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@logic_gate_problem",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@logic_gate_problem"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_c037f3757df1",
+ "display_name": "",
+ "block_id": "4f06b358a96f4d1dae57d6d81acd06f2",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@4f06b358a96f4d1dae57d6d81acd06f2",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@4f06b358a96f4d1dae57d6d81acd06f2",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@4f06b358a96f4d1dae57d6d81acd06f2"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_c037f3757df1",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_c037f3757df1",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_c037f3757df1"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@graded_simulations",
+ "display_name": "Protein Creator",
+ "block_id": "vertical_bc69a47c6fae",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_bc69a47c6fae",
+ "display_name": "Protein Builder",
+ "block_id": "78e3719e864e45f3bee938461f3c3de6",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@78e3719e864e45f3bee938461f3c3de6",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@78e3719e864e45f3bee938461f3c3de6",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@78e3719e864e45f3bee938461f3c3de6"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_bc69a47c6fae",
+ "display_name": "Designing Proteins in Two Dimensions",
+ "block_id": "700x_proteinmake",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@700x_proteinmake",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@700x_proteinmake",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@700x_proteinmake"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_bc69a47c6fae",
+ "display_name": "",
+ "block_id": "ed01bcd164e64038a78964a16eac3edc",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@ed01bcd164e64038a78964a16eac3edc",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@ed01bcd164e64038a78964a16eac3edc",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@ed01bcd164e64038a78964a16eac3edc"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_bc69a47c6fae",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_bc69a47c6fae",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_bc69a47c6fae"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@graded_simulations",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@graded_simulations",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@graded_simulations"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@graded_interactions",
+ "display_name": "Homework - Essays",
+ "block_id": "175e76c4951144a29d46211361266e0e",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@175e76c4951144a29d46211361266e0e",
+ "display_name": "Peer Assessed Essays",
+ "block_id": "fb79dcbad35b466a8c6364f8ffee9050",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@fb79dcbad35b466a8c6364f8ffee9050",
+ "display_name": "Open Response Assessment",
+ "block_id": "b24c33ea35954c7889e1d2944d3fe397",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@openassessment+block@b24c33ea35954c7889e1d2944d3fe397",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@openassessment+block@b24c33ea35954c7889e1d2944d3fe397",
+ "type": "openassessment",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@openassessment+block@b24c33ea35954c7889e1d2944d3fe397"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@fb79dcbad35b466a8c6364f8ffee9050",
+ "display_name": "Peer Grading",
+ "block_id": "12ad4f3ff4c14114a6e629b00e000976",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@12ad4f3ff4c14114a6e629b00e000976",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@12ad4f3ff4c14114a6e629b00e000976",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@12ad4f3ff4c14114a6e629b00e000976"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@fb79dcbad35b466a8c6364f8ffee9050",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@fb79dcbad35b466a8c6364f8ffee9050",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@fb79dcbad35b466a8c6364f8ffee9050"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@175e76c4951144a29d46211361266e0e",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@175e76c4951144a29d46211361266e0e",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@175e76c4951144a29d46211361266e0e"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@chapter+block@graded_interactions",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@chapter+block@graded_interactions",
+ "type": "chapter",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@graded_interactions"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@course+block@course",
+ "display_name": "Example Week 3: Be Social",
+ "block_id": "social_integration",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@social_integration",
+ "display_name": "Lesson 3 - Be Social",
+ "block_id": "48ecb924d7fe4b66a230137626bfa93e",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@48ecb924d7fe4b66a230137626bfa93e",
+ "display_name": "Be Social",
+ "block_id": "3c4b575924bf4b75a2f3542df5c354fc",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3c4b575924bf4b75a2f3542df5c354fc",
+ "display_name": "Be Social",
+ "block_id": "f9f3a25e7bab46e583fd1fbbd7a2f6a0",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@f9f3a25e7bab46e583fd1fbbd7a2f6a0",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@f9f3a25e7bab46e583fd1fbbd7a2f6a0",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@f9f3a25e7bab46e583fd1fbbd7a2f6a0"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@3c4b575924bf4b75a2f3542df5c354fc",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@3c4b575924bf4b75a2f3542df5c354fc",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3c4b575924bf4b75a2f3542df5c354fc"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@48ecb924d7fe4b66a230137626bfa93e",
+ "display_name": "Discussion Forums",
+ "block_id": "vertical_3888db0bc286",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_3888db0bc286",
+ "display_name": "Discussion Forums",
+ "block_id": "html_49b4494da2f7",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@html_49b4494da2f7",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@html_49b4494da2f7",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@html_49b4494da2f7"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_3888db0bc286",
+ "display_name": "Discussion Forums",
+ "block_id": "discussion_5deb6081620d",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@discussion_5deb6081620d",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@discussion_5deb6081620d",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@discussion_5deb6081620d"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_3888db0bc286",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_3888db0bc286",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_3888db0bc286"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@48ecb924d7fe4b66a230137626bfa93e",
+ "display_name": "Getting Help",
+ "block_id": "312cb4faed17420e82ab3178fc3e251a",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@312cb4faed17420e82ab3178fc3e251a",
+ "display_name": "Getting Help",
+ "block_id": "8bb218cccf8d40519a971ff0e4901ccf",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@8bb218cccf8d40519a971ff0e4901ccf",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@8bb218cccf8d40519a971ff0e4901ccf",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@8bb218cccf8d40519a971ff0e4901ccf"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@312cb4faed17420e82ab3178fc3e251a",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@312cb4faed17420e82ab3178fc3e251a",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@312cb4faed17420e82ab3178fc3e251a"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@48ecb924d7fe4b66a230137626bfa93e",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@48ecb924d7fe4b66a230137626bfa93e",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@48ecb924d7fe4b66a230137626bfa93e"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@social_integration",
+ "display_name": "Homework - Find Your Study Buddy",
+ "block_id": "dbe8fc027bcb4fe9afb744d2e8415855",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@dbe8fc027bcb4fe9afb744d2e8415855",
+ "display_name": "Homework - Find Your Study Buddy",
+ "block_id": "26d89b08f75d48829a63520ed8b0037d",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@26d89b08f75d48829a63520ed8b0037d",
+ "display_name": "Find Your Study Buddy",
+ "block_id": "6018785795994726950614ce7d0f38c5",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@6018785795994726950614ce7d0f38c5",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@6018785795994726950614ce7d0f38c5",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@6018785795994726950614ce7d0f38c5"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@26d89b08f75d48829a63520ed8b0037d",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@26d89b08f75d48829a63520ed8b0037d",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@26d89b08f75d48829a63520ed8b0037d"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@dbe8fc027bcb4fe9afb744d2e8415855",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@dbe8fc027bcb4fe9afb744d2e8415855",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@dbe8fc027bcb4fe9afb744d2e8415855"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@social_integration",
+ "display_name": "More Ways to Connect",
+ "block_id": "6ab9c442501d472c8ed200e367b4edfa",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@6ab9c442501d472c8ed200e367b4edfa",
+ "display_name": "Google Hangout",
+ "block_id": "3f2c11aba9434e459676a7d7acc4d960",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3f2c11aba9434e459676a7d7acc4d960",
+ "display_name": "Text",
+ "block_id": "d45779ad3d024a40a09ad8cc317c0970",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@d45779ad3d024a40a09ad8cc317c0970",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@d45779ad3d024a40a09ad8cc317c0970",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@d45779ad3d024a40a09ad8cc317c0970"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3f2c11aba9434e459676a7d7acc4d960",
+ "display_name": "Text",
+ "block_id": "55cbc99f262443d886a25cf84594eafb",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@55cbc99f262443d886a25cf84594eafb",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@55cbc99f262443d886a25cf84594eafb",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@55cbc99f262443d886a25cf84594eafb"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3f2c11aba9434e459676a7d7acc4d960",
+ "display_name": "Google Hangout",
+ "block_id": "ade92343df3d4953a40ab3adc8805390",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@ade92343df3d4953a40ab3adc8805390",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@ade92343df3d4953a40ab3adc8805390",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@ade92343df3d4953a40ab3adc8805390"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@3f2c11aba9434e459676a7d7acc4d960",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@3f2c11aba9434e459676a7d7acc4d960",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@3f2c11aba9434e459676a7d7acc4d960"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@6ab9c442501d472c8ed200e367b4edfa",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@6ab9c442501d472c8ed200e367b4edfa",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@6ab9c442501d472c8ed200e367b4edfa"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@chapter+block@social_integration",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@chapter+block@social_integration",
+ "type": "chapter",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@social_integration"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@course+block@course",
+ "display_name": "About Exams and Certificates",
+ "block_id": "1414ffd5143b4b508f739b563ab468b7",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@1414ffd5143b4b508f739b563ab468b7",
+ "display_name": "edX Exams",
+ "block_id": "workflow",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "display_name": "EdX Exams",
+ "block_id": "934cc32c177d41b580c8413e561346b3",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@934cc32c177d41b580c8413e561346b3",
+ "display_name": "EdX Exams",
+ "block_id": "8293139743f34377817d537b69911530",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@8293139743f34377817d537b69911530",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@8293139743f34377817d537b69911530",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@8293139743f34377817d537b69911530"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@934cc32c177d41b580c8413e561346b3",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@934cc32c177d41b580c8413e561346b3",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@934cc32c177d41b580c8413e561346b3"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "display_name": "Immediate Feedback",
+ "block_id": "vertical_f04afeac0131",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_f04afeac0131",
+ "display_name": "Immediate Feedback",
+ "block_id": "ex_practice_2",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@ex_practice_2",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@ex_practice_2",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@ex_practice_2"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_f04afeac0131",
+ "display_name": "",
+ "block_id": "4aba537a78774bd5a862485a8563c345",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@4aba537a78774bd5a862485a8563c345",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@4aba537a78774bd5a862485a8563c345",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@4aba537a78774bd5a862485a8563c345"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_f04afeac0131",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_f04afeac0131",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_f04afeac0131"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "display_name": "Getting Answers",
+ "block_id": "b6662b497c094bcc9b870d8270c90c93",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@b6662b497c094bcc9b870d8270c90c93",
+ "display_name": "Getting Answers",
+ "block_id": "45d46192272c4f6db6b63586520bbdf4",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@45d46192272c4f6db6b63586520bbdf4",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@45d46192272c4f6db6b63586520bbdf4",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@45d46192272c4f6db6b63586520bbdf4"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@b6662b497c094bcc9b870d8270c90c93",
+ "display_name": "",
+ "block_id": "f480df4ce91347c5ae4301ddf6146238",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@f480df4ce91347c5ae4301ddf6146238",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@f480df4ce91347c5ae4301ddf6146238",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@f480df4ce91347c5ae4301ddf6146238"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@b6662b497c094bcc9b870d8270c90c93",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@b6662b497c094bcc9b870d8270c90c93",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@b6662b497c094bcc9b870d8270c90c93"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "display_name": "Answering More Than Once",
+ "block_id": "f91d8d31f7cf48ce990f8d8745ae4cfa",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@f91d8d31f7cf48ce990f8d8745ae4cfa",
+ "display_name": "Answering More Than Once",
+ "block_id": "651e0945b77f42e0a4c89b8c3e6f5b3b",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@651e0945b77f42e0a4c89b8c3e6f5b3b",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@651e0945b77f42e0a4c89b8c3e6f5b3b",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@651e0945b77f42e0a4c89b8c3e6f5b3b"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@f91d8d31f7cf48ce990f8d8745ae4cfa",
+ "display_name": "",
+ "block_id": "b8cec2a19ebf463f90cd3544c7927b0e",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@b8cec2a19ebf463f90cd3544c7927b0e",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@b8cec2a19ebf463f90cd3544c7927b0e",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@b8cec2a19ebf463f90cd3544c7927b0e"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@f91d8d31f7cf48ce990f8d8745ae4cfa",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@f91d8d31f7cf48ce990f8d8745ae4cfa",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@f91d8d31f7cf48ce990f8d8745ae4cfa"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "display_name": "Limited Checks",
+ "block_id": "vertical_ac391cde8a91",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_ac391cde8a91",
+ "display_name": "Limited Checks",
+ "block_id": "ex_practice_limited_checks",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@ex_practice_limited_checks",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@ex_practice_limited_checks",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@ex_practice_limited_checks"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_ac391cde8a91",
+ "display_name": "Few Checks",
+ "block_id": "d1b84dcd39b0423d9e288f27f0f7f242",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@d1b84dcd39b0423d9e288f27f0f7f242",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@d1b84dcd39b0423d9e288f27f0f7f242",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@d1b84dcd39b0423d9e288f27f0f7f242"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_ac391cde8a91",
+ "display_name": "",
+ "block_id": "cd177caa62444fbca48aa8f843f09eac",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@cd177caa62444fbca48aa8f843f09eac",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@cd177caa62444fbca48aa8f843f09eac",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@cd177caa62444fbca48aa8f843f09eac"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_ac391cde8a91",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_ac391cde8a91",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_ac391cde8a91"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "display_name": "Randomized Questions",
+ "block_id": "vertical_36e0beb03f0a",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_36e0beb03f0a",
+ "display_name": "Randomized Questions",
+ "block_id": "ex_practice_3",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@problem+block@ex_practice_3",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@problem+block@ex_practice_3",
+ "type": "problem",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@problem+block@ex_practice_3"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_36e0beb03f0a",
+ "display_name": "",
+ "block_id": "ddede76df71045ffa16de9d1481d2119",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@ddede76df71045ffa16de9d1481d2119",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@ddede76df71045ffa16de9d1481d2119",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@ddede76df71045ffa16de9d1481d2119"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_36e0beb03f0a",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_36e0beb03f0a",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_36e0beb03f0a"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "display_name": "Overall Grade Performance",
+ "block_id": "1b0e2c2c84884b95b1c99fb678cc964c",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@1b0e2c2c84884b95b1c99fb678cc964c",
+ "display_name": "Overall Grade",
+ "block_id": "f4a39219742149f781a1dda6f43a623c",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@f4a39219742149f781a1dda6f43a623c",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@f4a39219742149f781a1dda6f43a623c",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@f4a39219742149f781a1dda6f43a623c"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@1b0e2c2c84884b95b1c99fb678cc964c",
+ "display_name": "",
+ "block_id": "1a810b1a3b2447b998f0917d0e5a802b",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@1a810b1a3b2447b998f0917d0e5a802b",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@1a810b1a3b2447b998f0917d0e5a802b",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@1a810b1a3b2447b998f0917d0e5a802b"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@1b0e2c2c84884b95b1c99fb678cc964c",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@1b0e2c2c84884b95b1c99fb678cc964c",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@1b0e2c2c84884b95b1c99fb678cc964c"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "display_name": "Passing a Course",
+ "block_id": "c7e98fd39a6944edb6b286c32e1150ff",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@c7e98fd39a6944edb6b286c32e1150ff",
+ "display_name": "Passing a Course",
+ "block_id": "5e009378f0b64585baa0a14b155974b9",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@5e009378f0b64585baa0a14b155974b9",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@5e009378f0b64585baa0a14b155974b9",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@5e009378f0b64585baa0a14b155974b9"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@c7e98fd39a6944edb6b286c32e1150ff",
+ "display_name": "",
+ "block_id": "23e6eda482c04335af2bb265beacaf59",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@discussion+block@23e6eda482c04335af2bb265beacaf59",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@discussion+block@23e6eda482c04335af2bb265beacaf59",
+ "type": "discussion",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@discussion+block@23e6eda482c04335af2bb265beacaf59"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@c7e98fd39a6944edb6b286c32e1150ff",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@c7e98fd39a6944edb6b286c32e1150ff",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@c7e98fd39a6944edb6b286c32e1150ff"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "display_name": "Getting Your edX Certificate",
+ "block_id": "d6eaa391d2be41dea20b8b1bfbcb1c45",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@d6eaa391d2be41dea20b8b1bfbcb1c45",
+ "display_name": "Getting Your edX Certificate",
+ "block_id": "148ae8fa73ea460eb6f05505da0ba6e6",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@148ae8fa73ea460eb6f05505da0ba6e6",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@148ae8fa73ea460eb6f05505da0ba6e6",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@148ae8fa73ea460eb6f05505da0ba6e6"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@d6eaa391d2be41dea20b8b1bfbcb1c45",
+ "display_name": "Blank HTML Page",
+ "block_id": "6b6bee43c7c641509da71c9299cc9f5a",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@html+block@6b6bee43c7c641509da71c9299cc9f5a",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@html+block@6b6bee43c7c641509da71c9299cc9f5a",
+ "type": "html",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@html+block@6b6bee43c7c641509da71c9299cc9f5a"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@vertical+block@d6eaa391d2be41dea20b8b1bfbcb1c45",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@vertical+block@d6eaa391d2be41dea20b8b1bfbcb1c45",
+ "type": "vertical",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@d6eaa391d2be41dea20b8b1bfbcb1c45"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@workflow"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@chapter+block@1414ffd5143b4b508f739b563ab468b7",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@chapter+block@1414ffd5143b4b508f739b563ab468b7",
+ "type": "chapter",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@1414ffd5143b4b508f739b563ab468b7"
+ },
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@course+block@course",
+ "display_name": "holding section",
+ "block_id": "9fca584977d04885bc911ea76a9ef29e",
+ "children": [
+ {
+ "parent": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@9fca584977d04885bc911ea76a9ef29e",
+ "display_name": "New Subsection",
+ "block_id": "07bc32474380492cb34f76e5f9d9a135",
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@sequential+block@07bc32474380492cb34f76e5f9d9a135",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@sequential+block@07bc32474380492cb34f76e5f9d9a135",
+ "type": "sequential",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@sequential+block@07bc32474380492cb34f76e5f9d9a135"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@chapter+block@9fca584977d04885bc911ea76a9ef29e",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@chapter+block@9fca584977d04885bc911ea76a9ef29e",
+ "type": "chapter",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@chapter+block@9fca584977d04885bc911ea76a9ef29e"
+ }
+ ],
+ "student_view_url": "http://localhost:18000/xblock/block-v1:edX+DemoX+Demo_Course+type@course+block@course",
+ "lms_web_url": "http://localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@course+block@course",
+ "type": "course",
+ "id": "block-v1:edX+DemoX+Demo_Course+type@course+block@course"
+}
diff --git a/common/static/common/js/components/BlockBrowser/data/actions/constants.js b/common/static/common/js/components/BlockBrowser/data/actions/constants.js
new file mode 100644
index 000000000000..a881f36a33a5
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/data/actions/constants.js
@@ -0,0 +1,8 @@
+export default {
+ fetch: {
+ SUCCESS: 'FETCH_COURSE_BLOCKS_SUCCESS',
+ FAILURE: 'FETCH_COURSE_BLOCKS_FAILURE',
+ },
+ SELECT_BLOCK: 'SELECT_BLOCK',
+ CHANGE_ROOT: 'CHANGE_ROOT',
+};
diff --git a/common/static/common/js/components/BlockBrowser/data/actions/courseBlocks.js b/common/static/common/js/components/BlockBrowser/data/actions/courseBlocks.js
new file mode 100644
index 000000000000..8a44a144e946
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/data/actions/courseBlocks.js
@@ -0,0 +1,38 @@
+import { getCourseBlocks } from '../api/client';
+import courseBlocksActions from './constants';
+
+const fetchCourseBlocksSuccess = (blocks, excludeBlockTypes) => ({
+ type: courseBlocksActions.fetch.SUCCESS,
+ blocks,
+ excludeBlockTypes,
+});
+
+const selectBlock = blockId => ({
+ type: courseBlocksActions.SELECT_BLOCK,
+ blockId,
+});
+
+const changeRoot = blockId => ({
+ type: courseBlocksActions.CHANGE_ROOT,
+ blockId,
+});
+
+const fetchCourseBlocks = (courseId, excludeBlockTypes) => dispatch =>
+ getCourseBlocks(courseId)
+ .then((response) => {
+ if (response.ok) {
+ return response.json();
+ }
+ throw new Error(response);
+ })
+ .then(
+ json => dispatch(fetchCourseBlocksSuccess(json, excludeBlockTypes)),
+ error => console.log(error), // eslint-disable-line no-console
+ );
+
+export {
+ fetchCourseBlocks,
+ fetchCourseBlocksSuccess,
+ selectBlock,
+ changeRoot,
+};
diff --git a/common/static/common/js/components/BlockBrowser/data/api/client.js b/common/static/common/js/components/BlockBrowser/data/api/client.js
new file mode 100644
index 000000000000..fd9876788591
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/data/api/client.js
@@ -0,0 +1,34 @@
+import Cookies from 'js-cookie';
+import 'whatwg-fetch';
+
+const COURSE_BLOCKS_API = '/api/courses/v1/blocks/';
+
+const HEADERS = {
+ Accept: 'application/json',
+ 'Content-Type': 'application/json',
+ 'X-CSRFToken': Cookies.get('csrftoken'),
+};
+
+export function buildQueryString(data) {
+ return Object.keys(data)
+ .map((key) => {
+ const value = Array.isArray(data[key])
+ ? data[key].map(item => encodeURIComponent(item)).join(',')
+ : encodeURIComponent(data[key]);
+ return `${encodeURIComponent(key)}=${value}`;
+ })
+ .join('&');
+}
+
+export const getCourseBlocks = courseId => fetch(
+ `${COURSE_BLOCKS_API}/?${buildQueryString({
+ course_id: courseId,
+ all_blocks: true,
+ depth: 'all',
+ requested_fields: ['name', 'display_name', 'block_type', 'children'],
+ })}`, {
+ credentials: 'same-origin',
+ method: 'get',
+ headers: HEADERS,
+ },
+);
diff --git a/common/static/common/js/components/BlockBrowser/data/reducers/index.js b/common/static/common/js/components/BlockBrowser/data/reducers/index.js
new file mode 100644
index 000000000000..7d14e63052cd
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/data/reducers/index.js
@@ -0,0 +1,55 @@
+import { combineReducers } from 'redux';
+import courseBlocksActions from '../actions/constants';
+
+export const buildBlockTree = (blocks, excludeBlockTypes) => {
+ if (!(blocks && blocks.root)) return null;
+ const blockTree = (root, parent) => {
+ const tree = Object.assign({ parent }, blocks.blocks[root]);
+ if (tree.children) {
+ tree.children = tree.children.map(block => blockTree(block, root));
+ if (excludeBlockTypes) {
+ tree.children = tree.children.filter(
+ block => !excludeBlockTypes.includes(block.type),
+ );
+ }
+ }
+ return tree;
+ };
+ return blockTree(blocks.root, null);
+};
+
+const blocks = (state = {}, action) => {
+ switch (action.type) {
+ case courseBlocksActions.fetch.SUCCESS:
+ return buildBlockTree(action.blocks, action.excludeBlockTypes);
+ default:
+ return state;
+ }
+};
+
+const selectedBlock = (state = null, action) => {
+ switch (action.type) {
+ case courseBlocksActions.SELECT_BLOCK:
+ return action.blockId;
+ default:
+ return state;
+ }
+};
+
+
+const rootBlock = (state = null, action) => {
+ switch (action.type) {
+ case courseBlocksActions.fetch.SUCCESS:
+ return action.blocks.root;
+ case courseBlocksActions.CHANGE_ROOT:
+ return action.blockId;
+ default:
+ return state;
+ }
+};
+
+export default combineReducers({
+ blocks,
+ selectedBlock,
+ rootBlock,
+});
diff --git a/common/static/common/js/components/BlockBrowser/data/selectors/index.js b/common/static/common/js/components/BlockBrowser/data/selectors/index.js
new file mode 100644
index 000000000000..cc217618715b
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/data/selectors/index.js
@@ -0,0 +1,16 @@
+export const findBlockWithId = (blockList, blockId) => {
+ if (!blockList) return null;
+ for (let idx = 0; idx < blockList.length; idx += 1) {
+ const block = blockList[idx];
+ if (block.id === blockId) return block;
+
+ const foundBlock = findBlockWithId(block.children, blockId);
+ if (foundBlock) return foundBlock;
+ }
+ return null;
+};
+
+export const getActiveBlockTree = (state) => {
+ if (state.rootBlock === state.blocks.id) return state.blocks;
+ return findBlockWithId(state.blocks.children, state.rootBlock);
+};
diff --git a/common/static/common/js/components/BlockBrowser/data/store.js b/common/static/common/js/components/BlockBrowser/data/store.js
new file mode 100644
index 000000000000..5b3b242d3c21
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/data/store.js
@@ -0,0 +1,15 @@
+import { applyMiddleware, createStore } from 'redux';
+import thunkMiddleware from 'redux-thunk';
+
+import rootReducer from './reducers';
+
+const configureStore = initialState => createStore(
+ rootReducer,
+ initialState,
+ applyMiddleware(thunkMiddleware),
+);
+
+
+const store = configureStore();
+
+export default store;
diff --git a/common/static/common/js/components/BlockBrowser/index.jsx b/common/static/common/js/components/BlockBrowser/index.jsx
new file mode 100644
index 000000000000..f1b530652bbf
--- /dev/null
+++ b/common/static/common/js/components/BlockBrowser/index.jsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { Provider } from 'react-redux';
+import BlockBrowserContainer from './components/BlockBrowser/BlockBrowserContainer';
+import store from './data/store';
+
+export const BlockBrowser = props => (
+
+
+
+);
+
+export default BlockBrowser;
diff --git a/jest.config.js b/jest.config.js
index 602c21fcb5d0..75e52d71368e 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -5,12 +5,13 @@ module.exports = {
"modulePaths": [
"common/static/common/js/components",
],
+ "setupTestFrameworkScriptFile": "/setupTests.js",
"testMatch": [
- "**/ProblemBrowser/**/*.test.jsx",
+ "/**/*.test.jsx",
"common/static/common/js/components/**/?(*.)+(spec|test).js?(x)",
],
"transform": {
"^.+\\.jsx$": "babel-jest",
"^.+\\.js$": "babel-jest",
},
-}
+};
diff --git a/lms/djangoapps/instructor/static/instructor/ProblemBrowser/.eslintrc.js b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/.eslintrc.js
new file mode 100644
index 000000000000..838b853a8277
--- /dev/null
+++ b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/.eslintrc.js
@@ -0,0 +1,11 @@
+module.exports = {
+ extends: 'eslint-config-edx',
+ root: true,
+ settings: {
+ 'import/resolver': {
+ webpack: {
+ config: 'webpack.dev.config.js',
+ },
+ },
+ },
+};
diff --git a/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/Main.jsx b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/Main.jsx
new file mode 100644
index 000000000000..aca0041c9948
--- /dev/null
+++ b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/Main.jsx
@@ -0,0 +1,54 @@
+/* global gettext */
+import { Button } from '@edx/paragon';
+import { BlockBrowser } from 'BlockBrowser';
+import * as PropTypes from 'prop-types';
+import * as React from 'react';
+
+export default class Main extends React.Component {
+ constructor(props) {
+ super(props);
+ this.handleToggleDropdown = this.handleToggleDropdown.bind(this);
+ this.state = {
+ showDropdown: false,
+ };
+ }
+
+ handleToggleDropdown() {
+ this.props.fetchCourseBlocks(this.props.courseId, this.props.excludeBlockTypes);
+ this.setState({ showDropdown: !this.state.showDropdown });
+ }
+
+ hideDropdown() {
+ this.setState({ showDropdown: false });
+ }
+
+ render() {
+ const { selectedBlock, onSelectBlock } = this.props;
+
+ return (
+
+
+
+ {this.state.showDropdown &&
+ {
+ this.hideDropdown();
+ onSelectBlock(blockId);
+ }}
+ />}
+
+ );
+ }
+}
+
+Main.propTypes = {
+ courseId: PropTypes.string.isRequired,
+ excludeBlockTypes: PropTypes.arrayOf(PropTypes.string),
+ fetchCourseBlocks: PropTypes.func.isRequired,
+ onSelectBlock: PropTypes.func.isRequired,
+ selectedBlock: PropTypes.string,
+};
+
+Main.defaultProps = {
+ excludeBlockTypes: null,
+ selectedBlock: null,
+};
diff --git a/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/Main.test.jsx b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/Main.test.jsx
index 2fde31f044d9..1c468b4ca009 100644
--- a/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/Main.test.jsx
+++ b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/Main.test.jsx
@@ -1,9 +1,71 @@
+/* global jest,test,describe,expect */
+import { Button } from '@edx/paragon';
+import { BlockBrowser } from 'BlockBrowser';
+import { shallow } from 'enzyme';
import React from 'react';
-import Main from './Main.jsx';
import renderer from 'react-test-renderer';
-test('My first demo test', () => {
- const component = renderer.create( );
- let tree = component.toJSON();
- expect(tree).toMatchSnapshot();
+import Main from './Main';
+
+describe('ProblemBrowser Main component', () => {
+ const courseId = 'testcourse';
+ const excludedBlockTypes = [];
+
+ test('render with basic parameters', () => {
+ const component = renderer.create(
+ ,
+ );
+ const tree = component.toJSON();
+ expect(tree).toMatchSnapshot();
+ });
+
+ test('render with selected block', () => {
+ const component = renderer.create(
+ ,
+ );
+ const tree = component.toJSON();
+ expect(tree).toMatchSnapshot();
+ });
+
+ test('fetch course block on toggling dropdown', () => {
+ const fetchCourseBlocksMock = jest.fn();
+ const component = renderer.create(
+ ,
+ );
+ const instance = component.getInstance();
+ instance.handleToggleDropdown();
+ expect(fetchCourseBlocksMock.mock.calls.length).toBe(1);
+ });
+
+ test('display dropdown on toggling dropdown', () => {
+ const component = shallow(
+ ,
+ );
+ component.find(Button).simulate('click');
+ expect(component.find(BlockBrowser)).toBeTruthy();
+ });
});
diff --git a/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/MainContainer.jsx b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/MainContainer.jsx
new file mode 100644
index 000000000000..a36b31978be9
--- /dev/null
+++ b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/MainContainer.jsx
@@ -0,0 +1,22 @@
+import { fetchCourseBlocks, selectBlock } from 'BlockBrowser/data/actions/courseBlocks';
+import { connect } from 'react-redux';
+
+import Main from './Main';
+
+const mapStateToProps = state => ({
+ selectedBlock: state.selectedBlock,
+});
+
+
+const mapDispatchToProps = dispatch => ({
+ onSelectBlock: blockId => dispatch(selectBlock(blockId)),
+ fetchCourseBlocks: (courseId, excludeBlockTypes) =>
+ dispatch(fetchCourseBlocks(courseId, excludeBlockTypes)),
+});
+
+const MainContainer = connect(
+ mapStateToProps,
+ mapDispatchToProps,
+)(Main);
+
+export default MainContainer;
diff --git a/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/__snapshots__/Main.test.jsx.snap b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/__snapshots__/Main.test.jsx.snap
index 82aa691791cb..2fafa3a6a3d5 100644
--- a/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/__snapshots__/Main.test.jsx.snap
+++ b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/components/Main/__snapshots__/Main.test.jsx.snap
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`My first demo test 1`] = `
+exports[`ProblemBrowser Main component render with basic parameters 1`] = `
@@ -17,6 +17,29 @@ exports[`My first demo test 1`] = `
disabled={true}
name="problem-location"
type="text"
+ value={null}
+ />
+
+`;
+
+exports[`ProblemBrowser Main component render with selected block 1`] = `
+
+
+ Select a section or problem
+
+
`;
diff --git a/lms/djangoapps/instructor/static/instructor/ProblemBrowser/index.jsx b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/index.jsx
new file mode 100644
index 000000000000..2e8b7849bb77
--- /dev/null
+++ b/lms/djangoapps/instructor/static/instructor/ProblemBrowser/index.jsx
@@ -0,0 +1,12 @@
+import store from 'BlockBrowser/data/store';
+import React from 'react';
+
+import { Provider } from 'react-redux';
+
+import MainContainer from './components/Main/MainContainer';
+
+export const ProblemBrowser = props => (
+
+
+
+);
diff --git a/lms/static/sass/course/instructor/_instructor_2.scss b/lms/static/sass/course/instructor/_instructor_2.scss
index 3ce9b5e028a5..52503e478ba8 100644
--- a/lms/static/sass/course/instructor/_instructor_2.scss
+++ b/lms/static/sass/course/instructor/_instructor_2.scss
@@ -1502,6 +1502,53 @@
}
}
}
+
+ .block-browser {
+ .header {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+
+ .title {
+ margin: 0 0.5em;
+ }
+ }
+
+ ul {
+ display: flex;
+ flex-direction: column;
+ padding: 0;
+ margin: 0;
+
+ li {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ margin: 0.25em 0;
+
+ .block-name {
+ flex-grow: 1;
+ margin-right: 0.5em;
+ text-align: left;
+ }
+ }
+ }
+ }
+
+ .problem-browser {
+ .block-browser {
+ position: absolute;
+ background: white;
+ padding: 5px;
+ box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
+ }
+
+ input {
+ max-width: 800px;
+ width: 100%;
+ margin-bottom: 0;
+ }
+ }
}
// view - metrics
diff --git a/lms/templates/instructor/instructor_dashboard_2/data_download.html b/lms/templates/instructor/instructor_dashboard_2/data_download.html
index 4e6c381d64ca..400c376dbcd7 100644
--- a/lms/templates/instructor/instructor_dashboard_2/data_download.html
+++ b/lms/templates/instructor/instructor_dashboard_2/data_download.html
@@ -1,4 +1,5 @@
<%page args="section_data" expression_filter="h"/>
+<%namespace name='static' file='/static_content.html'/>
<%!
from django.utils.translation import ugettext as _
from openedx.core.djangolib.markup import HTML, Text
@@ -46,14 +47,30 @@ ${_("Reports")}
%endif
- ${_("To generate a CSV file that lists all student answers to a given problem, enter the location of the problem (from its Staff Debug Info).")}
+ ${_("Select a problem to generate a CSV file that lists all student answers to the problem. You also select a section or chapter to include results of all problems in that section or chapter.")}
+ <% max_entries = settings.FEATURES.get('MAX_PROBLEM_RESPONSES_COUNT') %>
+ %if max_entries is not None:
+
+ ${_("NOTE")}:
+ ${_("The generated report is limited to {max_entries} responses. If you expect more than {max_entries} "
+ "responses, try generating the report on a chapter-by-chapter, or problem-by-problem basis, or contact "
+ "your site administrator to increase the limit.").format(max_entries=max_entries)}
+
+ %endif
-
- ${_("Problem location: ")}
-
-
+
+ ${static.renderReact(
+ component="ProblemBrowser",
+ id="react-block-listing",
+ props={
+ "courseId": course.id,
+ "excludeBlockTypes": ['html', 'video', 'discussion']
+ }
+ )}
+
+
diff --git a/lms/templates/instructor/instructor_dashboard_2/instructor_dashboard_2.html b/lms/templates/instructor/instructor_dashboard_2/instructor_dashboard_2.html
index a42547bcc661..1e51061786f0 100644
--- a/lms/templates/instructor/instructor_dashboard_2/instructor_dashboard_2.html
+++ b/lms/templates/instructor/instructor_dashboard_2/instructor_dashboard_2.html
@@ -48,12 +48,12 @@
+
-
<%static:js group='module-descriptor-js'/>
<%static:js group='instructor_dash'/>
<%static:js group='application'/>
diff --git a/package-lock.json b/package-lock.json
index 345aa6af6269..72ac54b0bfea 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,18 +5,18 @@
"requires": true,
"dependencies": {
"@babel/code-frame": {
- "version": "7.0.0-beta.49",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.49.tgz",
- "integrity": "sha1-vs2AVIJzREDJ0TfkbXc0DmTX9Rs=",
+ "version": "7.0.0-beta.53",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz",
+ "integrity": "sha1-mA0VYLhjV1v1o3eSUDfgEy71kh4=",
"dev": true,
"requires": {
- "@babel/highlight": "7.0.0-beta.49"
+ "@babel/highlight": "7.0.0-beta.53"
}
},
"@babel/highlight": {
- "version": "7.0.0-beta.49",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.49.tgz",
- "integrity": "sha1-lr3GtD4TSCASumaRsQGEktOWIsw=",
+ "version": "7.0.0-beta.53",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.53.tgz",
+ "integrity": "sha1-9OlS2tF4fSBeGI0+OEzc5JyjaPs=",
"dev": true,
"requires": {
"chalk": "2.3.1",
@@ -123,14 +123,14 @@
"prop-types": "15.6.0",
"react": "16.4.1",
"react-dom": "16.1.0",
- "react-dropzone": "4.2.11",
+ "react-dropzone": "4.2.13",
"react-intl": "2.4.0",
"react-intl-translations-manager": "5.0.3",
"react-paginate": "5.2.3",
"react-redux": "5.0.7",
- "react-transition-group": "2.3.1",
+ "react-transition-group": "2.4.0",
"redux": "3.7.2",
- "redux-devtools-extension": "2.13.2",
+ "redux-devtools-extension": "2.13.5",
"redux-thunk": "2.2.0",
"reselect": "3.0.1",
"whatwg-fetch": "2.0.3"
@@ -199,6 +199,12 @@
"stylelint-scss": "2.4.0"
}
},
+ "@types/node": {
+ "version": "10.5.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz",
+ "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==",
+ "dev": true
+ },
"abab": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
@@ -208,7 +214,7 @@
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg="
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"accepts": {
"version": "1.3.3",
@@ -394,7 +400,7 @@
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo="
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
"are-we-there-yet": {
"version": "1.1.4",
@@ -462,7 +468,7 @@
"arr-flatten": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE="
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
},
"arr-union": {
"version": "3.1.0",
@@ -643,9 +649,9 @@
"dev": true
},
"attr-accept": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-1.1.2.tgz",
- "integrity": "sha512-NUj0itVSnpFkUYCj3XKSRCZ7N9gPwWcyX/tF7HosqyDBPMSygALivvJIGI8VvlPcunns5khMkpxoNshvmhy/ZQ==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-1.1.3.tgz",
+ "integrity": "sha512-iT40nudw8zmCweivz6j58g+RT33I4KbaIvRUhjNmDwO2WmsQUxFEZZYZ5w3vXe5x5MX9D7mfvA/XaLOZYFR9EQ==",
"requires": {
"core-js": "2.5.3"
}
@@ -910,7 +916,7 @@
"dev": true,
"requires": {
"babel-plugin-istanbul": "4.1.6",
- "babel-preset-jest": "23.0.1"
+ "babel-preset-jest": "23.2.0"
}
},
"babel-loader": {
@@ -964,9 +970,9 @@
}
},
"babel-plugin-jest-hoist": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.0.1.tgz",
- "integrity": "sha1-6qEclkVjrqnCG+zvK994U/fzwUg=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz",
+ "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=",
"dev": true
},
"babel-plugin-syntax-async-functions": {
@@ -1382,12 +1388,12 @@
}
},
"babel-preset-jest": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.0.1.tgz",
- "integrity": "sha1-YxzFRcbPAhlDATvK8i9F2H/mIZg=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz",
+ "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=",
"dev": true,
"requires": {
- "babel-plugin-jest-hoist": "23.0.1",
+ "babel-plugin-jest-hoist": "23.2.0",
"babel-plugin-syntax-object-rest-spread": "6.13.0"
}
},
@@ -1476,7 +1482,7 @@
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
- "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM="
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
},
"backbone": {
"version": "1.3.3",
@@ -1681,7 +1687,7 @@
"bn.js": {
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
- "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8="
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
},
"body-parser": {
"version": "1.18.2",
@@ -1709,6 +1715,12 @@
}
}
},
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
"boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
@@ -1763,9 +1775,9 @@
"dev": true
},
"browser-resolve": {
- "version": "1.11.2",
- "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
- "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
+ "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
"dev": true,
"requires": {
"resolve": "1.1.7"
@@ -1838,7 +1850,7 @@
"browserify-zlib": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
- "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
"requires": {
"pako": "1.0.6"
}
@@ -2091,6 +2103,20 @@
"integrity": "sha1-Bew1hEm7wV3sOcatV/KuDs1SrrM=",
"dev": true
},
+ "cheerio": {
+ "version": "1.0.0-rc.2",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz",
+ "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=",
+ "dev": true,
+ "requires": {
+ "css-select": "1.2.0",
+ "dom-serializer": "0.1.0",
+ "entities": "1.1.1",
+ "htmlparser2": "3.9.2",
+ "lodash": "4.17.5",
+ "parse5": "3.0.3"
+ }
+ },
"chokidar": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
@@ -2115,7 +2141,7 @@
"cipher-base": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
"requires": {
"inherits": "2.0.3",
"safe-buffer": "5.1.1"
@@ -2127,10 +2153,16 @@
"integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
"dev": true
},
+ "circular-json-es6": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/circular-json-es6/-/circular-json-es6-2.0.2.tgz",
+ "integrity": "sha512-ODYONMMNb3p658Zv+Pp+/XPa5s6q7afhz3Tzyvo+VRh9WIrJ64J76ZC4GQxnlye/NesTn09jvOiuE8+xxfpwhQ==",
+ "dev": true
+ },
"clap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
- "integrity": "sha1-TzZ0WzIAhJJVf0ZBLWbVDLmbzlE=",
+ "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
"requires": {
"chalk": "1.1.3"
},
@@ -2328,7 +2360,7 @@
"color-convert": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
- "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
"requires": {
"color-name": "1.1.3"
}
@@ -2495,7 +2527,7 @@
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"dev": true
},
"convert-source-map": {
@@ -2517,7 +2549,7 @@
"copy-to-clipboard": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.0.8.tgz",
- "integrity": "sha1-9OgvSogw3ORma3643tDJvMMTq6k=",
+ "integrity": "sha512-c3GdeY8qxCHGezVb1EFQfHYK/8NZRemgcTIzPq7PuxjHAf/raKibn2QdhHPb/y6q74PMgH6yizaDZlRmw6QyKw==",
"requires": {
"toggle-selection": "1.0.6"
}
@@ -2535,7 +2567,7 @@
"cosmiconfig": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-3.1.0.tgz",
- "integrity": "sha1-ZAqUv5hH8yGABAPNJzr2BmXHM5c=",
+ "integrity": "sha512-zedsBhLSbPBms+kE7AH4vHg6JsKDz6epSv2/+5XHs8ILHlgDciSJfSWf8sX9aQ52Jb7KI7VswUTsLpR/G0cr2Q==",
"dev": true,
"requires": {
"is-directory": "0.3.1",
@@ -2547,7 +2579,7 @@
"esprima": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
+ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
"dev": true
},
"js-yaml": {
@@ -2634,7 +2666,7 @@
"crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
- "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
"requires": {
"browserify-cipher": "1.0.0",
"browserify-sign": "4.0.4",
@@ -2687,6 +2719,30 @@
}
}
},
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "dev": true,
+ "requires": {
+ "boolbase": "1.0.0",
+ "css-what": "2.1.0",
+ "domutils": "1.5.1",
+ "nth-check": "1.0.1"
+ },
+ "dependencies": {
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.0"
+ }
+ }
+ }
+ },
"css-selector-tokenizer": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
@@ -2709,6 +2765,12 @@
}
}
},
+ "css-what": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
+ "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
+ "dev": true
+ },
"cssesc": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
@@ -2763,9 +2825,9 @@
}
},
"cssom": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
- "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
+ "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==",
"dev": true
},
"cssstyle": {
@@ -2774,7 +2836,7 @@
"integrity": "sha512-tNvaxM5blOnxanyxI6panOsnfiyLRj3HV4qjqqS45WPNS1usdYWRUQjqTEEELK73lpeP/1KoIGYUwrBn/VcECA==",
"dev": true,
"requires": {
- "cssom": "0.3.2"
+ "cssom": "0.3.4"
}
},
"currently-unhandled": {
@@ -2850,7 +2912,7 @@
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
@@ -2876,6 +2938,15 @@
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
"dev": true
},
+ "deep-equal-ident": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/deep-equal-ident/-/deep-equal-ident-1.1.1.tgz",
+ "integrity": "sha1-BvS4nlNxDNbOpKd4HHqVZkLejck=",
+ "dev": true,
+ "requires": {
+ "lodash.isequal": "3.0.4"
+ }
+ },
"deep-extend": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
@@ -3084,6 +3155,12 @@
}
}
},
+ "discontinuous-range": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
+ "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=",
+ "dev": true
+ },
"doctrine": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
@@ -3313,7 +3390,7 @@
"emoji-regex": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz",
- "integrity": "sha1-m66pKbFVVlwR6kHGYm6qZc75ksI=",
+ "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==",
"dev": true
},
"emojis-list": {
@@ -3451,6 +3528,74 @@
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
"dev": true
},
+ "enzyme": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.3.0.tgz",
+ "integrity": "sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA==",
+ "dev": true,
+ "requires": {
+ "cheerio": "1.0.0-rc.2",
+ "function.prototype.name": "1.1.0",
+ "has": "1.0.1",
+ "is-boolean-object": "1.0.0",
+ "is-callable": "1.1.3",
+ "is-number-object": "1.0.3",
+ "is-string": "1.0.4",
+ "is-subset": "0.1.1",
+ "lodash": "4.17.5",
+ "object-inspect": "1.6.0",
+ "object-is": "1.0.1",
+ "object.assign": "4.1.0",
+ "object.entries": "1.0.4",
+ "object.values": "1.0.4",
+ "raf": "3.4.0",
+ "rst-selector-parser": "2.2.3"
+ }
+ },
+ "enzyme-adapter-react-16": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz",
+ "integrity": "sha512-kC8pAtU2Jk3OJ0EG8Y2813dg9Ol0TXi7UNxHzHiWs30Jo/hj7alc//G1YpKUsPP1oKl9X+Lkx+WlGJpPYA+nvw==",
+ "dev": true,
+ "requires": {
+ "enzyme-adapter-utils": "1.4.0",
+ "lodash": "4.17.5",
+ "object.assign": "4.1.0",
+ "object.values": "1.0.4",
+ "prop-types": "15.6.0",
+ "react-reconciler": "0.7.0",
+ "react-test-renderer": "16.4.0"
+ }
+ },
+ "enzyme-adapter-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.4.0.tgz",
+ "integrity": "sha512-ajvyXQYbmCoKCX/FaraNzBgXDXJBltCd0GdXfKc0DdRPYgCLaZfS6Ts576IFt8aX2GU9ajZv2g5jfcJ+Nttejw==",
+ "dev": true,
+ "requires": {
+ "object.assign": "4.1.0",
+ "prop-types": "15.6.0"
+ }
+ },
+ "enzyme-matchers": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/enzyme-matchers/-/enzyme-matchers-6.0.2.tgz",
+ "integrity": "sha1-eU1OQyVNqqD//TpZHlhp/IYd7rI=",
+ "dev": true,
+ "requires": {
+ "circular-json-es6": "2.0.2",
+ "deep-equal-ident": "1.1.1"
+ }
+ },
+ "enzyme-to-json": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.3.4.tgz",
+ "integrity": "sha1-Z8YEDpMRgvGDQYry659DIyWKp38=",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.5"
+ }
+ },
"errno": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
@@ -3774,7 +3919,7 @@
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0",
@@ -3832,7 +3977,7 @@
"eslint-config-airbnb-base": {
"version": "11.3.2",
"resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz",
- "integrity": "sha1-hwOxGr48iKx+wrdFt/31LgCuaAo=",
+ "integrity": "sha512-/fhjt/VqzBA2SRsx7ErDtv6Ayf+XLw9LIOqmpBuHFCVwyJo2EtzGWMB9fYRFBoWWQLxmNmCpenNiH0RxyeS41w==",
"dev": true,
"requires": {
"eslint-restricted-globals": "0.1.1"
@@ -4130,16 +4275,16 @@
"evp_bytestokey": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
- "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
"requires": {
"md5.js": "1.3.4",
"safe-buffer": "5.1.1"
}
},
"exec-sh": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz",
- "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==",
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz",
+ "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==",
"dev": true,
"requires": {
"merge": "1.2.0"
@@ -4255,17 +4400,17 @@
}
},
"expect": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-23.1.0.tgz",
- "integrity": "sha1-v9/VeiogFw2HWZnul4fMcfAcIF8=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-23.4.0.tgz",
+ "integrity": "sha1-baTsyZwUcSU+cogziYOtHrrbYMM=",
"dev": true,
"requires": {
"ansi-styles": "3.2.0",
- "jest-diff": "23.0.1",
+ "jest-diff": "23.2.0",
"jest-get-type": "22.4.3",
- "jest-matcher-utils": "23.0.1",
- "jest-message-util": "23.1.0",
- "jest-regex-util": "23.0.0"
+ "jest-matcher-utils": "23.2.0",
+ "jest-message-util": "23.4.0",
+ "jest-regex-util": "23.3.0"
}
},
"exports-loader": {
@@ -4337,7 +4482,7 @@
"async": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
- "integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=",
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
"requires": {
"lodash": "4.17.5"
}
@@ -4714,7 +4859,7 @@
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"function.prototype.name": {
"version": "1.1.0",
@@ -4802,7 +4947,7 @@
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
@@ -4832,7 +4977,7 @@
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
- "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo="
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
},
"globby": {
"version": "7.1.1",
@@ -5380,7 +5525,7 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
}
}
},
@@ -5392,7 +5537,7 @@
"ignore": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
- "integrity": "sha1-YSKJv7PCIOGGpYEYYY1b6MG6sCE=",
+ "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
"dev": true
},
"import-local": {
@@ -5652,10 +5797,16 @@
"binary-extensions": "1.11.0"
}
},
+ "is-boolean-object": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz",
+ "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=",
+ "dev": true
+ },
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4="
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-builtin-module": {
"version": "1.0.0",
@@ -5808,29 +5959,18 @@
"kind-of": "3.2.2"
}
},
+ "is-number-object": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz",
+ "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=",
+ "dev": true
+ },
"is-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
"dev": true
},
- "is-odd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
- "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
- "dev": true,
- "requires": {
- "is-number": "4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- }
- }
- },
"is-path-cwd": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
@@ -5863,7 +6003,7 @@
"is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"requires": {
"isobject": "3.0.1"
}
@@ -5917,6 +6057,18 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
+ "is-string": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz",
+ "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=",
+ "dev": true
+ },
+ "is-subset": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
+ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
+ "dev": true
+ },
"is-supported-regexp-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz",
@@ -6224,7 +6376,7 @@
"dev": true,
"requires": {
"import-local": "1.0.0",
- "jest-cli": "23.1.0"
+ "jest-cli": "23.4.1"
},
"dependencies": {
"ansi-escapes": {
@@ -6239,6 +6391,16 @@
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
+ "babel-jest": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.0.tgz",
+ "integrity": "sha1-IsNMOS4hdvakw2eZKn/P9p0uhVc=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-istanbul": "4.1.6",
+ "babel-preset-jest": "23.2.0"
+ }
+ },
"camelcase": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
@@ -6272,9 +6434,9 @@
"dev": true
},
"jest-cli": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.1.0.tgz",
- "integrity": "sha1-64vdTODRUlCJLjGtm2m8mdKo9r8=",
+ "version": "23.4.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.4.1.tgz",
+ "integrity": "sha512-Cmd7bex+kYmMGwGrIh/crwUieUFr+4PCTaK32tEA0dm0wklXV8zGgWh8n+8WbhsFPNzacolxdtcfBKIorcV5FQ==",
"dev": true,
"requires": {
"ansi-escapes": "3.1.0",
@@ -6288,30 +6450,176 @@
"istanbul-lib-coverage": "1.2.0",
"istanbul-lib-instrument": "1.10.1",
"istanbul-lib-source-maps": "1.2.5",
- "jest-changed-files": "23.0.1",
- "jest-config": "23.1.0",
- "jest-environment-jsdom": "23.1.0",
+ "jest-changed-files": "23.4.0",
+ "jest-config": "23.4.1",
+ "jest-environment-jsdom": "23.4.0",
"jest-get-type": "22.4.3",
- "jest-haste-map": "23.1.0",
- "jest-message-util": "23.1.0",
- "jest-regex-util": "23.0.0",
- "jest-resolve-dependencies": "23.0.1",
- "jest-runner": "23.1.0",
- "jest-runtime": "23.1.0",
- "jest-snapshot": "23.0.1",
- "jest-util": "23.1.0",
- "jest-validate": "23.0.1",
- "jest-watcher": "23.1.0",
- "jest-worker": "23.0.1",
+ "jest-haste-map": "23.4.1",
+ "jest-message-util": "23.4.0",
+ "jest-regex-util": "23.3.0",
+ "jest-resolve-dependencies": "23.4.1",
+ "jest-runner": "23.4.1",
+ "jest-runtime": "23.4.1",
+ "jest-snapshot": "23.4.1",
+ "jest-util": "23.4.0",
+ "jest-validate": "23.4.0",
+ "jest-watcher": "23.4.0",
+ "jest-worker": "23.2.0",
"micromatch": "2.3.11",
"node-notifier": "5.2.1",
- "realpath-native": "1.0.0",
+ "prompts": "0.1.12",
+ "realpath-native": "1.0.1",
"rimraf": "2.6.2",
"slash": "1.0.0",
"string-length": "2.0.0",
"strip-ansi": "4.0.0",
"which": "1.3.0",
- "yargs": "11.0.0"
+ "yargs": "11.1.0"
+ }
+ },
+ "jest-config": {
+ "version": "23.4.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.4.1.tgz",
+ "integrity": "sha512-OT29qlcw9Iw7u0PC04wD9tjLJL4vpGdMZrrHMFwYSO3HxOikbHywjmtQ7rntW4qvBcpbi7iCMTPPRmpDjImQEw==",
+ "dev": true,
+ "requires": {
+ "babel-core": "6.26.0",
+ "babel-jest": "23.4.0",
+ "chalk": "2.3.1",
+ "glob": "7.1.2",
+ "jest-environment-jsdom": "23.4.0",
+ "jest-environment-node": "23.4.0",
+ "jest-get-type": "22.4.3",
+ "jest-jasmine2": "23.4.1",
+ "jest-regex-util": "23.3.0",
+ "jest-resolve": "23.4.1",
+ "jest-util": "23.4.0",
+ "jest-validate": "23.4.0",
+ "pretty-format": "23.2.0"
+ }
+ },
+ "jest-haste-map": {
+ "version": "23.4.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.4.1.tgz",
+ "integrity": "sha512-PGQxOEGAfRbTyJkmZeOKkVSs+KVeWgG625p89KUuq+sIIchY5P8iPIIc+Hw2tJJPBzahU3qopw1kF/qyhDdNBw==",
+ "dev": true,
+ "requires": {
+ "fb-watchman": "2.0.0",
+ "graceful-fs": "4.1.11",
+ "jest-docblock": "23.2.0",
+ "jest-serializer": "23.0.1",
+ "jest-worker": "23.2.0",
+ "micromatch": "2.3.11",
+ "sane": "2.5.2"
+ }
+ },
+ "jest-jasmine2": {
+ "version": "23.4.1",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.4.1.tgz",
+ "integrity": "sha512-nHmRgTtM9fuaK3RBz2z4j9mYVEJwB7FdoflQSvrwHV8mCT5z4DeHoKCvPp2R27F8fZTYJUYVMb36xn+ydg0tfA==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.1",
+ "co": "4.6.0",
+ "expect": "23.4.0",
+ "is-generator-fn": "1.0.0",
+ "jest-diff": "23.2.0",
+ "jest-each": "23.4.0",
+ "jest-matcher-utils": "23.2.0",
+ "jest-message-util": "23.4.0",
+ "jest-snapshot": "23.4.1",
+ "jest-util": "23.4.0",
+ "pretty-format": "23.2.0"
+ }
+ },
+ "jest-resolve": {
+ "version": "23.4.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.4.1.tgz",
+ "integrity": "sha512-VNk4YRNR5gsHhNS0Lp46/DzTT11e+ecbUC61ikE593cKbtdrhrMO+zXkOJaE8YDD5sHxH9W6OfssNn4FkZBzZQ==",
+ "dev": true,
+ "requires": {
+ "browser-resolve": "1.11.3",
+ "chalk": "2.3.1",
+ "realpath-native": "1.0.1"
+ }
+ },
+ "jest-resolve-dependencies": {
+ "version": "23.4.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.4.1.tgz",
+ "integrity": "sha512-Jp0wgNJg3OYPvXJfNVX4k4/niwGS6ARuKacum/vue48+4A1XPJ2H3aVFuNb3gUaiB/6Le7Zyl8AUb4MELBfcmg==",
+ "dev": true,
+ "requires": {
+ "jest-regex-util": "23.3.0",
+ "jest-snapshot": "23.4.1"
+ }
+ },
+ "jest-runner": {
+ "version": "23.4.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.4.1.tgz",
+ "integrity": "sha512-78KyhObsx0VEuUQ74ikGt68NpP6PApTjGpJPSyZ7AvwOFRqFlxdHpCU/lFPQxW/fLEghl4irz9OHjRLGcGFNyQ==",
+ "dev": true,
+ "requires": {
+ "exit": "0.1.2",
+ "graceful-fs": "4.1.11",
+ "jest-config": "23.4.1",
+ "jest-docblock": "23.2.0",
+ "jest-haste-map": "23.4.1",
+ "jest-jasmine2": "23.4.1",
+ "jest-leak-detector": "23.2.0",
+ "jest-message-util": "23.4.0",
+ "jest-runtime": "23.4.1",
+ "jest-util": "23.4.0",
+ "jest-worker": "23.2.0",
+ "source-map-support": "0.5.6",
+ "throat": "4.1.0"
+ }
+ },
+ "jest-runtime": {
+ "version": "23.4.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.4.1.tgz",
+ "integrity": "sha512-fnInrsEAbLpNctQa+RLnKZyQLMmb5u4YdoT9CbRKWhjMY7q6ledOu+x+ORZ3glQOK/vJIS701RaJRp1pc5ziaA==",
+ "dev": true,
+ "requires": {
+ "babel-core": "6.26.0",
+ "babel-plugin-istanbul": "4.1.6",
+ "chalk": "2.3.1",
+ "convert-source-map": "1.5.1",
+ "exit": "0.1.2",
+ "fast-json-stable-stringify": "2.0.0",
+ "graceful-fs": "4.1.11",
+ "jest-config": "23.4.1",
+ "jest-haste-map": "23.4.1",
+ "jest-message-util": "23.4.0",
+ "jest-regex-util": "23.3.0",
+ "jest-resolve": "23.4.1",
+ "jest-snapshot": "23.4.1",
+ "jest-util": "23.4.0",
+ "jest-validate": "23.4.0",
+ "micromatch": "2.3.11",
+ "realpath-native": "1.0.1",
+ "slash": "1.0.0",
+ "strip-bom": "3.0.0",
+ "write-file-atomic": "2.3.0",
+ "yargs": "11.1.0"
+ }
+ },
+ "jest-snapshot": {
+ "version": "23.4.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.1.tgz",
+ "integrity": "sha512-oMjaQ4vB4uT211zx00X0R7hg+oLVRDvhVKiC6+vSg7Be9S/AmkDMCVUoaPcLRK/0NkZBTzrh4WCzrSZgUEZW3g==",
+ "dev": true,
+ "requires": {
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "chalk": "2.3.1",
+ "jest-diff": "23.2.0",
+ "jest-matcher-utils": "23.2.0",
+ "jest-message-util": "23.4.0",
+ "jest-resolve": "23.4.1",
+ "mkdirp": "0.5.1",
+ "natural-compare": "1.4.0",
+ "pretty-format": "23.2.0",
+ "semver": "5.5.0"
}
},
"os-locale": {
@@ -6325,6 +6633,22 @@
"mem": "1.1.0"
}
},
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
+ "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "1.1.0",
+ "source-map": "0.6.1"
+ }
+ },
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
@@ -6344,6 +6668,12 @@
"ansi-regex": "3.0.0"
}
},
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
@@ -6351,9 +6681,9 @@
"dev": true
},
"yargs": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz",
- "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz",
+ "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==",
"dev": true,
"requires": {
"cliui": "4.1.0",
@@ -6382,403 +6712,213 @@
}
},
"jest-changed-files": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.0.1.tgz",
- "integrity": "sha1-95Vy0HIIROpd+EwqRI6GLCJU9gw=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.0.tgz",
+ "integrity": "sha1-8bME+YwjWvXZox7FJCYsXk3jxv8=",
"dev": true,
"requires": {
"throat": "4.1.0"
}
},
- "jest-config": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.1.0.tgz",
- "integrity": "sha1-cIyg9DHTVu5CT7SJXTMIAGvdgkE=",
- "dev": true,
- "requires": {
- "babel-core": "6.26.0",
- "babel-jest": "23.0.1",
- "chalk": "2.3.1",
- "glob": "7.1.2",
- "jest-environment-jsdom": "23.1.0",
- "jest-environment-node": "23.1.0",
- "jest-get-type": "22.4.3",
- "jest-jasmine2": "23.1.0",
- "jest-regex-util": "23.0.0",
- "jest-resolve": "23.1.0",
- "jest-util": "23.1.0",
- "jest-validate": "23.0.1",
- "pretty-format": "23.0.1"
- }
- },
"jest-diff": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.0.1.tgz",
- "integrity": "sha1-PUkTfO4SwyCktNK0pvpugtSRoWo=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.2.0.tgz",
+ "integrity": "sha1-nyz0tR4Sx5FVAgCrwWtHEwrxBio=",
"dev": true,
"requires": {
"chalk": "2.3.1",
"diff": "3.4.0",
"jest-get-type": "22.4.3",
- "pretty-format": "23.0.1"
+ "pretty-format": "23.2.0"
}
},
"jest-docblock": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.0.1.tgz",
- "integrity": "sha1-3t3RgzO+XcJBUmCgTvP86SdrVyU=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz",
+ "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=",
"dev": true,
"requires": {
"detect-newline": "2.1.0"
}
},
"jest-each": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.1.0.tgz",
- "integrity": "sha1-FhRrWSw1SGelrl4TzfFcbGW2lsY=",
- "dev": true,
- "requires": {
- "chalk": "2.3.1",
- "pretty-format": "23.0.1"
- }
- },
- "jest-environment-jsdom": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.1.0.tgz",
- "integrity": "sha1-hZKZFOI77TV32sl1X0EG0Gl8R5w=",
- "dev": true,
- "requires": {
- "jest-mock": "23.1.0",
- "jest-util": "23.1.0",
- "jsdom": "11.11.0"
- }
- },
- "jest-environment-node": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.1.0.tgz",
- "integrity": "sha1-RSwL+UnPy7rNoeF2Lu7XC8eEx9U=",
- "dev": true,
- "requires": {
- "jest-mock": "23.1.0",
- "jest-util": "23.1.0"
- }
- },
- "jest-get-type": {
- "version": "22.4.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz",
- "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==",
- "dev": true
- },
- "jest-haste-map": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.1.0.tgz",
- "integrity": "sha1-GObH1ajScTb5G32YUvhd4McHTEk=",
- "dev": true,
- "requires": {
- "fb-watchman": "2.0.0",
- "graceful-fs": "4.1.11",
- "jest-docblock": "23.0.1",
- "jest-serializer": "23.0.1",
- "jest-worker": "23.0.1",
- "micromatch": "2.3.11",
- "sane": "2.5.2"
- }
- },
- "jest-jasmine2": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.1.0.tgz",
- "integrity": "sha1-SvqzFym2VN3NKwdK3YSTlvE7MLg=",
- "dev": true,
- "requires": {
- "chalk": "2.3.1",
- "co": "4.6.0",
- "expect": "23.1.0",
- "is-generator-fn": "1.0.0",
- "jest-diff": "23.0.1",
- "jest-each": "23.1.0",
- "jest-matcher-utils": "23.0.1",
- "jest-message-util": "23.1.0",
- "jest-snapshot": "23.0.1",
- "jest-util": "23.1.0",
- "pretty-format": "23.0.1"
- }
- },
- "jest-leak-detector": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.0.1.tgz",
- "integrity": "sha1-nboHUFrDSVw50+wJrB5WRZnoYaA=",
- "dev": true,
- "requires": {
- "pretty-format": "23.0.1"
- }
- },
- "jest-matcher-utils": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.0.1.tgz",
- "integrity": "sha1-DGwNrt+YM8Kn82I2Bp7+y0w/bl8=",
- "dev": true,
- "requires": {
- "chalk": "2.3.1",
- "jest-get-type": "22.4.3",
- "pretty-format": "23.0.1"
- }
- },
- "jest-message-util": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.1.0.tgz",
- "integrity": "sha1-moCbpIfsrFzlEdTmmO47XuJGHqk=",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.0.0-beta.49",
- "chalk": "2.3.1",
- "micromatch": "2.3.11",
- "slash": "1.0.0",
- "stack-utils": "1.0.1"
- }
- },
- "jest-mock": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.1.0.tgz",
- "integrity": "sha1-o4HDGxIasfYMRiotrbe4bczKxIc=",
- "dev": true
- },
- "jest-regex-util": {
- "version": "23.0.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.0.0.tgz",
- "integrity": "sha1-3Vwf3gxG9DcTFM8Q96dRoj9Oj3Y=",
- "dev": true
- },
- "jest-resolve": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.1.0.tgz",
- "integrity": "sha1-ueMW7s69bwC8UKOWDRUnuuZXktI=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.4.0.tgz",
+ "integrity": "sha1-L6nt2J2qGk7cn/m/YGKja3E0UUM=",
"dev": true,
"requires": {
- "browser-resolve": "1.11.2",
"chalk": "2.3.1",
- "realpath-native": "1.0.0"
+ "pretty-format": "23.2.0"
}
},
- "jest-resolve-dependencies": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.0.1.tgz",
- "integrity": "sha1-0BoQ3a2RUsTOzfXqwriFccS2pk0=",
+ "jest-environment-enzyme": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/jest-environment-enzyme/-/jest-environment-enzyme-6.0.2.tgz",
+ "integrity": "sha1-iQUmYi1d6KggoYSdJoTwO8AG4O8=",
"dev": true,
"requires": {
- "jest-regex-util": "23.0.0",
- "jest-snapshot": "23.0.1"
- }
- },
- "jest-runner": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.1.0.tgz",
- "integrity": "sha1-+iCpM//3MaVDKzVh5/ZCZZT6KbU=",
- "dev": true,
- "requires": {
- "exit": "0.1.2",
- "graceful-fs": "4.1.11",
- "jest-config": "23.1.0",
- "jest-docblock": "23.0.1",
- "jest-haste-map": "23.1.0",
- "jest-jasmine2": "23.1.0",
- "jest-leak-detector": "23.0.1",
- "jest-message-util": "23.1.0",
- "jest-runtime": "23.1.0",
- "jest-util": "23.1.0",
- "jest-worker": "23.0.1",
- "source-map-support": "0.5.6",
- "throat": "4.1.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
- "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
- "dev": true,
- "requires": {
- "buffer-from": "1.1.0",
- "source-map": "0.6.1"
- }
- }
- }
- },
- "jest-runtime": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.1.0.tgz",
- "integrity": "sha1-tK4OhyWeys/UqIS2OdsHz03WIK8=",
- "dev": true,
- "requires": {
- "babel-core": "6.26.0",
- "babel-plugin-istanbul": "4.1.6",
- "chalk": "2.3.1",
- "convert-source-map": "1.5.1",
- "exit": "0.1.2",
- "fast-json-stable-stringify": "2.0.0",
- "graceful-fs": "4.1.11",
- "jest-config": "23.1.0",
- "jest-haste-map": "23.1.0",
- "jest-message-util": "23.1.0",
- "jest-regex-util": "23.0.0",
- "jest-resolve": "23.1.0",
- "jest-snapshot": "23.0.1",
- "jest-util": "23.1.0",
- "jest-validate": "23.0.1",
- "micromatch": "2.3.11",
- "realpath-native": "1.0.0",
- "slash": "1.0.0",
- "strip-bom": "3.0.0",
- "write-file-atomic": "2.3.0",
- "yargs": "11.0.0"
+ "jest-environment-jsdom": "22.4.3"
},
"dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "cliui": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
- "dev": true,
- "requires": {
- "string-width": "2.1.1",
- "strip-ansi": "4.0.0",
- "wrap-ansi": "2.1.0"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "2.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "os-locale": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
- "dev": true,
- "requires": {
- "execa": "0.7.0",
- "lcid": "1.0.0",
- "mem": "1.1.0"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "which-module": {
+ "callsites": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
"dev": true
- },
- "yargs": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz",
- "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==",
- "dev": true,
- "requires": {
- "cliui": "4.1.0",
- "decamelize": "1.2.0",
- "find-up": "2.1.0",
- "get-caller-file": "1.0.2",
- "os-locale": "2.1.0",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "2.1.1",
- "which-module": "2.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "9.0.2"
+ },
+ "jest-environment-jsdom": {
+ "version": "22.4.3",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz",
+ "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==",
+ "dev": true,
+ "requires": {
+ "jest-mock": "22.4.3",
+ "jest-util": "22.4.3",
+ "jsdom": "11.11.0"
}
},
- "yargs-parser": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
- "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
+ "jest-message-util": {
+ "version": "22.4.3",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz",
+ "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==",
"dev": true,
"requires": {
- "camelcase": "4.1.0"
+ "@babel/code-frame": "7.0.0-beta.53",
+ "chalk": "2.3.1",
+ "micromatch": "2.3.11",
+ "slash": "1.0.0",
+ "stack-utils": "1.0.1"
+ }
+ },
+ "jest-mock": {
+ "version": "22.4.3",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz",
+ "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==",
+ "dev": true
+ },
+ "jest-util": {
+ "version": "22.4.3",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz",
+ "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==",
+ "dev": true,
+ "requires": {
+ "callsites": "2.0.0",
+ "chalk": "2.3.1",
+ "graceful-fs": "4.1.11",
+ "is-ci": "1.1.0",
+ "jest-message-util": "22.4.3",
+ "mkdirp": "0.5.1",
+ "source-map": "0.6.1"
}
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
}
}
},
- "jest-serializer": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz",
- "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=",
+ "jest-environment-jsdom": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz",
+ "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=",
+ "dev": true,
+ "requires": {
+ "jest-mock": "23.2.0",
+ "jest-util": "23.4.0",
+ "jsdom": "11.11.0"
+ }
+ },
+ "jest-environment-node": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz",
+ "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=",
+ "dev": true,
+ "requires": {
+ "jest-mock": "23.2.0",
+ "jest-util": "23.4.0"
+ }
+ },
+ "jest-enzyme": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/jest-enzyme/-/jest-enzyme-6.0.2.tgz",
+ "integrity": "sha1-vEZBad5sLVBgLgK7yUZEYFB/spU=",
+ "dev": true,
+ "requires": {
+ "enzyme-matchers": "6.0.2",
+ "enzyme-to-json": "3.3.4",
+ "jest-environment-enzyme": "6.0.2"
+ }
+ },
+ "jest-get-type": {
+ "version": "22.4.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz",
+ "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==",
"dev": true
},
- "jest-snapshot": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.0.1.tgz",
- "integrity": "sha1-ZnT6Gbnraamcq+zUFb3cQtavPn4=",
+ "jest-leak-detector": {
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.2.0.tgz",
+ "integrity": "sha1-wonZYdxjjxQ1fU75bgQx7MGqN30=",
+ "dev": true,
+ "requires": {
+ "pretty-format": "23.2.0"
+ }
+ },
+ "jest-matcher-utils": {
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.2.0.tgz",
+ "integrity": "sha1-TUmB8jIT6Tnjzt8j3DTHR7WuGRM=",
"dev": true,
"requires": {
"chalk": "2.3.1",
- "jest-diff": "23.0.1",
- "jest-matcher-utils": "23.0.1",
- "mkdirp": "0.5.1",
- "natural-compare": "1.4.0",
- "pretty-format": "23.0.1"
+ "jest-get-type": "22.4.3",
+ "pretty-format": "23.2.0"
+ }
+ },
+ "jest-message-util": {
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz",
+ "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "7.0.0-beta.53",
+ "chalk": "2.3.1",
+ "micromatch": "2.3.11",
+ "slash": "1.0.0",
+ "stack-utils": "1.0.1"
}
},
+ "jest-mock": {
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz",
+ "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=",
+ "dev": true
+ },
+ "jest-regex-util": {
+ "version": "23.3.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz",
+ "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=",
+ "dev": true
+ },
+ "jest-serializer": {
+ "version": "23.0.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz",
+ "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=",
+ "dev": true
+ },
"jest-util": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.1.0.tgz",
- "integrity": "sha1-wCUbrzRkTG3S/qeKli9CY6xVdy0=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz",
+ "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=",
"dev": true,
"requires": {
"callsites": "2.0.0",
"chalk": "2.3.1",
"graceful-fs": "4.1.11",
"is-ci": "1.1.0",
- "jest-message-util": "23.1.0",
+ "jest-message-util": "23.4.0",
"mkdirp": "0.5.1",
"slash": "1.0.0",
"source-map": "0.6.1"
@@ -6799,21 +6939,21 @@
}
},
"jest-validate": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.0.1.tgz",
- "integrity": "sha1-zZ8BqJ0mu4hfEqhmdxXpyGWldU8=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.4.0.tgz",
+ "integrity": "sha1-2W7t4B7wOskJwAnpyORVGX1IwgE=",
"dev": true,
"requires": {
"chalk": "2.3.1",
"jest-get-type": "22.4.3",
"leven": "2.1.0",
- "pretty-format": "23.0.1"
+ "pretty-format": "23.2.0"
}
},
"jest-watcher": {
- "version": "23.1.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.1.0.tgz",
- "integrity": "sha1-qNWELjjZ+0r/+CPfartCpYrmzb0=",
+ "version": "23.4.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz",
+ "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=",
"dev": true,
"requires": {
"ansi-escapes": "3.1.0",
@@ -6830,9 +6970,9 @@
}
},
"jest-worker": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.0.1.tgz",
- "integrity": "sha1-nmSd2WP/QEYCb5HEAX8Dmmqkp7w=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz",
+ "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=",
"dev": true,
"requires": {
"merge-stream": "1.0.1"
@@ -6896,14 +7036,14 @@
"acorn": "5.5.0",
"acorn-globals": "4.1.0",
"array-equal": "1.0.0",
- "cssom": "0.3.2",
+ "cssom": "0.3.4",
"cssstyle": "0.3.1",
"data-urls": "1.0.0",
"domexception": "1.0.1",
"escodegen": "1.10.0",
"html-encoding-sniffer": "1.0.2",
"left-pad": "1.3.0",
- "nwsapi": "2.0.3",
+ "nwsapi": "2.0.4",
"parse5": "4.0.0",
"pn": "1.1.0",
"request": "2.87.0",
@@ -6989,6 +7129,12 @@
"sshpk": "1.13.1"
}
},
+ "parse5": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
+ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
+ "dev": true
+ },
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
@@ -7435,6 +7581,12 @@
"is-buffer": "1.1.6"
}
},
+ "kleur": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-1.0.1.tgz",
+ "integrity": "sha512-8srIZ5BK5PCJw1L/JN741xgNfSjuQNK9ImYbYzv7ZUD3WPfuywaY+yd7lQOphJ+2vwXnMLnRZoAh5X+orRt4LQ==",
+ "dev": true
+ },
"known-css-properties": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.5.0.tgz",
@@ -7543,6 +7695,17 @@
"integrity": "sha1-G2rh1frPPCVTI1ChPBGXy4u2dPQ=",
"dev": true
},
+ "lodash._baseisequal": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz",
+ "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=",
+ "dev": true,
+ "requires": {
+ "lodash.isarray": "3.0.4",
+ "lodash.istypedarray": "3.0.6",
+ "lodash.keys": "3.1.2"
+ }
+ },
"lodash._basetostring": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
@@ -7553,6 +7716,12 @@
"resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
"integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc="
},
+ "lodash._bindcallback": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz",
+ "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=",
+ "dev": true
+ },
"lodash._getnative": {
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
@@ -7639,6 +7808,12 @@
"integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY=",
"dev": true
},
+ "lodash.flattendeep": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
+ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
+ "dev": true
+ },
"lodash.get": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-3.7.0.tgz",
@@ -7659,6 +7834,22 @@
"resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
"integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U="
},
+ "lodash.isequal": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-3.0.4.tgz",
+ "integrity": "sha1-HDXrO27wzR/1F0Pj6jz3/f/ay2Q=",
+ "dev": true,
+ "requires": {
+ "lodash._baseisequal": "3.0.7",
+ "lodash._bindcallback": "3.0.1"
+ }
+ },
+ "lodash.istypedarray": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz",
+ "integrity": "sha1-yaR3SYYHUB2OhJTSg7h8OSgc72I=",
+ "dev": true
+ },
"lodash.keys": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
@@ -7972,7 +8163,7 @@
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
- "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
"safe-buffer": "5.1.1"
}
@@ -8117,7 +8308,7 @@
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
"brace-expansion": "1.1.11"
}
@@ -8220,9 +8411,9 @@
"integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw=="
},
"nanomatch": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
- "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
"dev": true,
"requires": {
"arr-diff": "4.0.0",
@@ -8230,7 +8421,6 @@
"define-property": "2.0.2",
"extend-shallow": "3.0.2",
"fragment-cache": "0.2.1",
- "is-odd": "2.0.0",
"is-windows": "1.0.2",
"kind-of": "6.0.2",
"object.pick": "1.3.0",
@@ -8283,6 +8473,18 @@
"integrity": "sha1-RvrCt92iVgpMt+YoZ3vV9k6sW+E=",
"dev": true
},
+ "nearley": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.13.0.tgz",
+ "integrity": "sha512-ioYYogSaZhFlCpRizQgY3UT3G1qFXmHGY/5ozoFE3dMfiCRAeJfh+IPE3/eh9gCZvqLhPCWb4bLt7Bqzo+1mLQ==",
+ "dev": true,
+ "requires": {
+ "nomnom": "1.6.2",
+ "railroad-diagrams": "1.0.0",
+ "randexp": "0.4.6",
+ "semver": "5.5.0"
+ }
+ },
"negotiator": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
@@ -8292,7 +8494,7 @@
"node-fetch": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
- "integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
"requires": {
"encoding": "0.1.12",
"is-stream": "1.1.0"
@@ -8334,7 +8536,7 @@
"node-libs-browser": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
- "integrity": "sha1-X5QmPUBPbkR2fXJpAf/wVHjWAN8=",
+ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
"requires": {
"assert": "1.4.1",
"browserify-zlib": "0.2.0",
@@ -8470,6 +8672,30 @@
"is": "3.2.1"
}
},
+ "nomnom": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz",
+ "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=",
+ "dev": true,
+ "requires": {
+ "colors": "0.5.1",
+ "underscore": "1.4.4"
+ },
+ "dependencies": {
+ "colors": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz",
+ "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=",
+ "dev": true
+ },
+ "underscore": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
+ "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=",
+ "dev": true
+ }
+ }
+ },
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
@@ -8481,7 +8707,7 @@
"normalize-package-data": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"requires": {
"hosted-git-info": "2.5.0",
"is-builtin-module": "1.0.0",
@@ -8539,6 +8765,15 @@
"set-blocking": "2.0.0"
}
},
+ "nth-check": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
+ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
+ "dev": true,
+ "requires": {
+ "boolbase": "1.0.0"
+ }
+ },
"null-check": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
@@ -8556,9 +8791,9 @@
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"nwsapi": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.3.tgz",
- "integrity": "sha512-zFJF9lOpg2+uicP0BQKOAfIOqeTp/p8PC669mewxgRkR1hGjne8BMUHk4wpRS9o5Z0icA5Nv04HmGkW31KfMKw==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.4.tgz",
+ "integrity": "sha512-Zt6HRR6RcJkuj5/N9zeE7FN6YitRW//hK2wTOwX274IBphbY3Zf5+yn5mZ9v/SzAOTMjQNxZf9KkmPLWn0cV4g==",
"dev": true
},
"oauth-sign": {
@@ -8604,6 +8839,12 @@
"resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz",
"integrity": "sha1-rwt5f/6+r4pSxmN87b6IFs/sG8g="
},
+ "object-inspect": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
+ "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
+ "dev": true
+ },
"object-is": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz",
@@ -8614,6 +8855,15 @@
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
"integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0="
},
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ }
+ },
"object.assign": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
@@ -8636,15 +8886,6 @@
"has": "1.0.1"
}
},
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dev": true,
- "requires": {
- "isobject": "3.0.1"
- }
- },
"object.getownpropertydescriptors": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
@@ -8683,6 +8924,18 @@
"isobject": "3.0.1"
}
},
+ "object.values": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz",
+ "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.2",
+ "es-abstract": "1.10.0",
+ "function-bind": "1.1.1",
+ "has": "1.0.1"
+ }
+ },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -8882,7 +9135,7 @@
"pako": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
- "integrity": "sha1-AQEhG6pwxLykoPY/Igbpe3368lg="
+ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg=="
},
"parse-asn1": {
"version": "5.1.0",
@@ -8930,10 +9183,13 @@
}
},
"parse5": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
- "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
- "dev": true
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
+ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "10.5.2"
+ }
},
"parsejson": {
"version": "0.0.3",
@@ -9032,7 +9288,7 @@
"pbkdf2": {
"version": "3.0.14",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
- "integrity": "sha1-o14TxkeZsGzhUyD0WcIw5o5zut4=",
+ "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
"requires": {
"create-hash": "1.1.3",
"create-hmac": "1.1.6",
@@ -9466,7 +9722,7 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
}
}
},
@@ -9554,7 +9810,7 @@
"postcss-reporter": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz",
- "integrity": "sha1-oUF3/RNCgp0pFlPyeG79ZxEDMsM=",
+ "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==",
"dev": true,
"requires": {
"chalk": "2.3.1",
@@ -9577,7 +9833,7 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
@@ -9640,7 +9896,7 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
@@ -9736,9 +9992,9 @@
"integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
},
"pretty-format": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.0.1.tgz",
- "integrity": "sha1-1h0GUmjkx1kIO8y8onoBrXx2AfQ=",
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
+ "integrity": "sha1-OwqqY8AYpTWDNzwcs6XZbMXoMBc=",
"dev": true,
"requires": {
"ansi-regex": "3.0.0",
@@ -9756,7 +10012,7 @@
"private": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
- "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8="
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
},
"process": {
"version": "0.11.10",
@@ -9777,11 +10033,21 @@
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"requires": {
"asap": "2.0.6"
}
},
+ "prompts": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.12.tgz",
+ "integrity": "sha512-pgR1GE1JM8q8UsHVIgjdK62DPwvrf0kvaKWJ/mfMoCm2lwfIReX/giQ1p0AlMoUXNhQap/8UiOdqi3bOROm/eg==",
+ "dev": true,
+ "requires": {
+ "kleur": "1.0.1",
+ "sisteransi": "0.1.1"
+ }
+ },
"prop-types": {
"version": "15.6.0",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz",
@@ -9874,10 +10140,35 @@
"integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
"dev": true
},
+ "raf": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz",
+ "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==",
+ "dev": true,
+ "requires": {
+ "performance-now": "2.1.0"
+ }
+ },
+ "railroad-diagrams": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
+ "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=",
+ "dev": true
+ },
+ "randexp": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
+ "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
+ "dev": true,
+ "requires": {
+ "discontinuous-range": "1.0.0",
+ "ret": "0.1.15"
+ }
+ },
"randomatic": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
- "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
"requires": {
"is-number": "3.0.0",
"kind-of": "4.0.0"
@@ -9979,11 +10270,11 @@
}
},
"react-dropzone": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-4.2.11.tgz",
- "integrity": "sha512-hE1yJ56GaWvLRgYPU0ffY2h1pxPpPwIe8UO77bREtJR6sgmSiTTdOZCkKw7rPE887g8XDSQ/fO3KWi8asrO4tQ==",
+ "version": "4.2.13",
+ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-4.2.13.tgz",
+ "integrity": "sha512-kqpt0Up4GZZFoz4WvBTVzMmVDUZFoGRKDXeyV+baWXZx8Gt0CZmOtV7BSMF1JaBihx6mwy+rfYVNnOKB2hrY9Q==",
"requires": {
- "attr-accept": "1.1.2",
+ "attr-accept": "1.1.3",
"prop-types": "15.6.0"
}
},
@@ -10043,25 +10334,29 @@
}
},
"react-is": {
- "version": "16.4.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.0.tgz",
- "integrity": "sha512-8ADZg/mBw+t2Fbr5Hm1K64v8q8Q6E+DprV5wQ5A8PSLW6XP0XJFMdUskVEW8efQ5oUgWHn8EYdHEPAMF0Co6hA==",
+ "version": "16.4.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.1.tgz",
+ "integrity": "sha512-xpb0PpALlFWNw/q13A+1aHeyJyLYCg0/cCHPUA43zYluZuIPHaHL3k8OBsTgQtxqW0FhyDEMvi8fZ/+7+r4OSQ==",
"dev": true
},
+ "react-lifecycles-compat": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+ },
"react-paginate": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/react-paginate/-/react-paginate-5.2.3.tgz",
"integrity": "sha512-4Bf2xbNNZpjHliPvgXndg4ictj9S9Mf/E/eSfctGPO9XpJseBU+UZbmaa0Zmd6FZmGm1uBu1wGiF4CPCpDwZLQ==",
"requires": {
- "prop-types": "15.6.1"
+ "prop-types": "15.6.2"
},
"dependencies": {
"prop-types": {
- "version": "15.6.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz",
- "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==",
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
"requires": {
- "fbjs": "0.8.16",
"loose-envify": "1.3.1",
"object-assign": "4.1.1"
}
@@ -10073,6 +10368,18 @@
"resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz",
"integrity": "sha1-acLVdB5t9eCPIw82u8KUTuEiJVU="
},
+ "react-reconciler": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz",
+ "integrity": "sha512-50JwZ3yNyMS8fchN+jjWEJOH3Oze7UmhxeoJLn2j6f3NjpfCRbcmih83XTWmzqtar/ivd5f7tvQhvvhism2fgg==",
+ "dev": true,
+ "requires": {
+ "fbjs": "0.8.16",
+ "loose-envify": "1.3.1",
+ "object-assign": "4.1.1",
+ "prop-types": "15.6.0"
+ }
+ },
"react-redux": {
"version": "5.0.7",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz",
@@ -10109,25 +10416,25 @@
"fbjs": "0.8.16",
"object-assign": "4.1.1",
"prop-types": "15.6.0",
- "react-is": "16.4.0"
+ "react-is": "16.4.1"
}
},
"react-transition-group": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.3.1.tgz",
- "integrity": "sha512-hu4/LAOFSKjWt1+1hgnOv3ldxmt6lvZGTWz4KUkFrqzXrNDIVSu6txIcPszw7PNduR8en9YTN55JLRyd/L1ZiQ==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.4.0.tgz",
+ "integrity": "sha512-Xv5d55NkJUxUzLCImGSanK8Cl/30sgpOEMGc5m86t8+kZwrPxPCPcFqyx83kkr+5Lz5gs6djuvE5By+gce+VjA==",
"requires": {
"dom-helpers": "3.3.1",
"loose-envify": "1.3.1",
- "prop-types": "15.6.1"
+ "prop-types": "15.6.2",
+ "react-lifecycles-compat": "3.0.4"
},
"dependencies": {
"prop-types": {
- "version": "15.6.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz",
- "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==",
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
"requires": {
- "fbjs": "0.8.16",
"loose-envify": "1.3.1",
"object-assign": "4.1.1"
}
@@ -10197,7 +10504,7 @@
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
- "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
"safe-buffer": "5.1.1"
}
@@ -10216,9 +10523,9 @@
}
},
"realpath-native": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz",
- "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.1.tgz",
+ "integrity": "sha512-W14EcXuqUvKP8dkWkD7B95iMy77lpMnlFXbbk409bQtNCbeu0kvRE5reo+yIZ3JXxg6frbGsz2DLQ39lrCB40g==",
"dev": true,
"requires": {
"util.promisify": "1.0.0"
@@ -10277,7 +10584,7 @@
"redux": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz",
- "integrity": "sha1-BrcxIyFZAdJdBlvjQusCa8HIU3s=",
+ "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==",
"requires": {
"lodash": "4.17.5",
"lodash-es": "4.17.6",
@@ -10286,9 +10593,9 @@
}
},
"redux-devtools-extension": {
- "version": "2.13.2",
- "resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.2.tgz",
- "integrity": "sha1-4Pmo6N/KfBe+kscSSVijuU6ykR0="
+ "version": "2.13.5",
+ "resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.5.tgz",
+ "integrity": "sha512-QQ9BRy77oURHMdGys9rfQcCQDzXZ1T4oW+eUyE5Cg7DNVau69HJzc4YNDMOmpi0Dzpi1zOQgQ2rUpgJta4Lfqg=="
},
"redux-thunk": {
"version": "2.2.0",
@@ -10313,7 +10620,7 @@
"regenerator-transform": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
- "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=",
+ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
"requires": {
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
@@ -10638,6 +10945,16 @@
"inherits": "2.0.3"
}
},
+ "rst-selector-parser": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz",
+ "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=",
+ "dev": true,
+ "requires": {
+ "lodash.flattendeep": "4.4.0",
+ "nearley": "2.13.0"
+ }
+ },
"rsvp": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz",
@@ -10647,7 +10964,7 @@
"rtlcss": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.2.1.tgz",
- "integrity": "sha1-+FN+QVUggWawXhiYAhMZNvzv0p4=",
+ "integrity": "sha512-JjQ5DlrmwiItAjlmhoxrJq5ihgZcE0wMFxt7S17bIrt4Lw0WwKKFk+viRhvodB/0falyG/5fiO043ZDh6/aqTw==",
"requires": {
"chalk": "2.3.1",
"findup": "0.1.5",
@@ -10669,7 +10986,7 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
}
}
},
@@ -10691,7 +11008,7 @@
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM="
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
},
"safe-regex": {
"version": "1.1.0",
@@ -10715,7 +11032,7 @@
"requires": {
"anymatch": "2.0.0",
"capture-exit": "1.2.0",
- "exec-sh": "0.2.1",
+ "exec-sh": "0.2.2",
"fb-watchman": "2.0.0",
"micromatch": "3.1.10",
"minimist": "1.2.0",
@@ -10994,7 +11311,7 @@
"extglob": "2.0.4",
"fragment-cache": "0.2.1",
"kind-of": "6.0.2",
- "nanomatch": "1.2.9",
+ "nanomatch": "1.2.13",
"object.pick": "1.3.0",
"regex-not": "1.0.2",
"snapdragon": "0.8.2",
@@ -11023,7 +11340,7 @@
"sass-loader": {
"version": "6.0.6",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz",
- "integrity": "sha1-6dXmwfFV+qMqSybXqbcQfCJeQPk=",
+ "integrity": "sha512-c3/Zc+iW+qqDip6kXPYLEgsAu2lf4xz0EZDplB7EmSUMda12U1sGJPetH55B/j9eu0bTtKzKlNPWWyYC7wFNyQ==",
"requires": {
"async": "2.6.0",
"clone-deep": "0.3.0",
@@ -11035,7 +11352,7 @@
"async": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
- "integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=",
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
"requires": {
"lodash": "4.17.5"
}
@@ -11283,6 +11600,12 @@
}
}
},
+ "sisteransi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz",
+ "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==",
+ "dev": true
+ },
"slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
@@ -11291,7 +11614,7 @@
"slice-ansi": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
- "integrity": "sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00=",
+ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0"
@@ -11323,7 +11646,7 @@
"map-cache": "0.2.2",
"source-map": "0.5.7",
"source-map-resolve": "0.5.2",
- "use": "3.1.0"
+ "use": "3.1.1"
},
"dependencies": {
"define-property": {
@@ -11567,7 +11890,7 @@
"source-list-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
- "integrity": "sha1-qqR0A/eyRakvvJfqCPJQ1gh+0IU="
+ "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A=="
},
"source-map": {
"version": "0.5.7",
@@ -11637,7 +11960,7 @@
"specificity": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz",
- "integrity": "sha1-meZRHs7vD42bV5JJN6rCyxPRPEI=",
+ "integrity": "sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A==",
"dev": true
},
"split-string": {
@@ -11795,7 +12118,7 @@
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
- "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
"safe-buffer": "5.1.1"
}
@@ -12013,7 +12336,7 @@
"style-loader": {
"version": "0.18.2",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz",
- "integrity": "sha1-zDFFmvvNbYC3Ig7lSykan9Zv9es=",
+ "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==",
"requires": {
"loader-utils": "1.1.0",
"schema-utils": "0.3.0"
@@ -12124,7 +12447,7 @@
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -12279,13 +12602,13 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0",
@@ -12330,7 +12653,7 @@
"stylelint-config-recommended-scss": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-2.0.0.tgz",
- "integrity": "sha1-P0SzOK+zv1tr2e663UaO7ydxOSI=",
+ "integrity": "sha512-DUIW3daRl5EAyU4ZR6xfPa+bqV5wDccS7X1je6Enes9edpbmWUBR/5XLfDPnjMJgqOe2QwqwaE/qnG4lXID9rg==",
"dev": true,
"requires": {
"stylelint-config-recommended": "1.0.0"
@@ -12339,7 +12662,7 @@
"stylelint-config-standard": {
"version": "17.0.0",
"resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-17.0.0.tgz",
- "integrity": "sha1-QhA6CQBU7io93p7K7VXl1NnQWfw=",
+ "integrity": "sha512-G8jMZ0KsaVH7leur9XLZVhwOBHZ2vdbuJV8Bgy0ta7/PpBhEHo6fjVDaNchyCGXB5sRcWVq6O9rEU/MvY9cQDQ==",
"dev": true,
"requires": {
"stylelint-config-recommended": "1.0.0"
@@ -12348,7 +12671,7 @@
"stylelint-formatter-pretty": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/stylelint-formatter-pretty/-/stylelint-formatter-pretty-1.0.3.tgz",
- "integrity": "sha1-prQ8PzoTIGvft3fQ2ozvxsdsNsM=",
+ "integrity": "sha512-Jg39kL6kkjUrdKIiHwwz/fbElcF5dOS48ZhvGrEJeWijUbmY1yudclfXv9H61eBqKKu0E33nfez2r0G4EvPtFA==",
"dev": true,
"requires": {
"ansi-escapes": "2.0.0",
@@ -12407,7 +12730,7 @@
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0",
@@ -12462,7 +12785,7 @@
"sugarss": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sugarss/-/sugarss-1.0.1.tgz",
- "integrity": "sha1-voJtkAPg8kdzX5I2XcP9fxuunkQ=",
+ "integrity": "sha512-3qgLZytikQQEVn1/FrhY7B68gPUUGY3R1Q1vTiD5xT+Ti1DP/8iZuwFet9ONs5+bmL8pZoDQ6JrQHVgrNlK6mA==",
"dev": true,
"requires": {
"postcss": "6.0.19"
@@ -12482,7 +12805,7 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
@@ -12889,7 +13212,7 @@
"extglob": "2.0.4",
"fragment-cache": "0.2.1",
"kind-of": "6.0.2",
- "nanomatch": "1.2.9",
+ "nanomatch": "1.2.13",
"object.pick": "1.3.0",
"regex-not": "1.0.2",
"snapdragon": "0.8.2",
@@ -12953,7 +13276,7 @@
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
- "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
"safe-buffer": "5.1.1"
}
@@ -12976,7 +13299,7 @@
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
"requires": {
"os-tmpdir": "1.0.2"
@@ -13489,21 +13812,10 @@
}
},
"use": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
- "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
- "dev": true,
- "requires": {
- "kind-of": "6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
- }
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
},
"user-home": {
"version": "2.0.0",
@@ -13679,7 +13991,7 @@
"integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=",
"dev": true,
"requires": {
- "exec-sh": "0.2.1",
+ "exec-sh": "0.2.2",
"minimist": "1.2.0"
},
"dependencies": {
@@ -13916,7 +14228,7 @@
"webpack-merge": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.1.tgz",
- "integrity": "sha1-8Rl6Cpc+acb77rbWWCGaqMDBNVU=",
+ "integrity": "sha512-geQsZ86YkXOVOjvPC5yv3JSNnL6/X3Kzh935AQ/gJNEYXEfJDQFu/sdFuktS9OW2JcH/SJec8TGfRdrpHshH7A==",
"requires": {
"lodash": "4.17.5"
}
@@ -13933,7 +14245,7 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
}
}
},
@@ -13998,7 +14310,7 @@
"wide-align": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
- "integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=",
+ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
"requires": {
"string-width": "1.0.2"
}
@@ -14084,7 +14396,7 @@
"xml2js": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
- "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=",
+ "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
"dev": true,
"requires": {
"sax": "1.2.4",
diff --git a/package.json b/package.json
index b4ad0eaf2b46..d40f5ce32cc6 100644
--- a/package.json
+++ b/package.json
@@ -64,14 +64,17 @@
},
"devDependencies": {
"@edx/stylelint-config-edx": "1.1.0",
- "babel-jest": "^23.0.1",
+ "babel-jest": "23.0.1",
"edx-custom-a11y-rules": "0.1.3",
+ "enzyme": "3.3.0",
+ "enzyme-adapter-react-16": "1.1.1",
"eslint-config-edx": "3.0.1",
"eslint-config-edx-es5": "2.0.0",
"eslint-import-resolver-webpack": "0.8.4",
"jasmine-core": "2.6.4",
"jasmine-jquery": "2.1.1",
- "jest": "^23.1.0",
+ "jest": "23.1.0",
+ "jest-enzyme": "6.0.2",
"karma": "0.13.22",
"karma-chrome-launcher": "0.2.3",
"karma-coverage": "0.5.5",
@@ -87,7 +90,7 @@
"pa11y": "4.0.1",
"pa11y-reporter-json-oldnode": "1.0.0",
"plato": "1.2.2",
- "react-test-renderer": "^16.4.0",
+ "react-test-renderer": "16.4.0",
"selenium-webdriver": "3.4.0",
"sinon": "2.3.5",
"squirejs": "0.1.0",
diff --git a/pavelib/paver_tests/test_js_test.py b/pavelib/paver_tests/test_js_test.py
index 46aaa6f7bca2..1188e043b2ed 100644
--- a/pavelib/paver_tests/test_js_test.py
+++ b/pavelib/paver_tests/test_js_test.py
@@ -117,11 +117,15 @@ def verify_messages(self, options, dev_mode):
))
expected_messages.append(self.EXPECTED_INSTALL_NPM_ASSETS_COMMAND)
+ command_template = (
+ u'nodejs --max_old_space_size=4096 node_modules/.bin/karma start {options}'
+ )
+
for suite in suites:
# Karma test command
if suite != 'jest-snapshot':
karma_config_file = Env.KARMA_CONFIG_FILES[Env.JS_TEST_ID_KEYS.index(suite)]
- expected_test_tool_command = u'karma start {options}'.format(
+ expected_test_tool_command = command_template.format(
options=self.EXPECTED_KARMA_OPTIONS.format(
config_file=karma_config_file,
single_run='false' if dev_mode else 'true',
diff --git a/setupTests.js b/setupTests.js
new file mode 100644
index 000000000000..4f652dffd8f6
--- /dev/null
+++ b/setupTests.js
@@ -0,0 +1,6 @@
+import {configure} from 'enzyme';
+import Adapter from 'enzyme-adapter-react-16';
+
+configure({adapter: new Adapter()});
+
+global.gettext = (text) => text;
diff --git a/webpack.common.config.js b/webpack.common.config.js
index 241c90ab6339..5ad625f5eb01 100644
--- a/webpack.common.config.js
+++ b/webpack.common.config.js
@@ -52,6 +52,7 @@ module.exports = Merge.smart({
PasswordResetConfirmation: './lms/static/js/student_account/components/PasswordResetConfirmation.jsx',
StudentAccountDeletion: './lms/static/js/student_account/components/StudentAccountDeletion.jsx',
StudentAccountDeletionInitializer: './lms/static/js/student_account/StudentAccountDeletionInitializer.js',
+ ProblemBrowser: './lms/djangoapps/instructor/static/instructor/ProblemBrowser/index.jsx',
// Learner Dashboard
EntitlementFactory: './lms/static/js/learner_dashboard/course_entitlement_factory.js',
@@ -341,6 +342,7 @@ module.exports = Merge.smart({
'common/static/coffee/src',
'common/static/common/js',
'common/static/common/js/vendor/',
+ 'common/static/common/js/components',
'common/static/js/src',
'common/static/js/vendor/',
'common/static/js/vendor/jQuery-File-Upload/js/',