diff --git a/.editorconfig b/.editorconfig index 1984e03befa..295f7ff6e8b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,7 +10,7 @@ insert_final_newline = true trim_trailing_whitespace = true indent_style = tab -[{.babelrc,.eslintrc,.jshintrc,*.json,*.yml}] +[{.babelrc,.eslintrc,.rtlcssrc,*.json,*.yml}] indent_style = space indent_size = 2 diff --git a/.eslintrc b/.eslintrc index 765f3ab5bd4..c635990c8ca 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,21 +2,9 @@ "root": true, "extends": [ "plugin:@wordpress/eslint-plugin/recommended", - "plugin:jest/all", "plugin:import/recommended", "plugin:eslint-comments/recommended" ], - "settings": { - "react": { - "pragma": "wp", - "version": "16.6" - } - }, - "globals": { - "browser": true, - "wp": true, - "Set": true - }, "rules": { "block-scoped-var": "error", "complexity": ["error", { "max": 20 } ], @@ -51,30 +39,53 @@ "radix": [ "error", "as-needed" ], "require-await": "error", "rest-spread-spacing": [ "error", "never" ], - "jest/lowercase-name": [ - "error", - { - "ignore": [ "describe" ] - } - ], - "jest/no-hooks": "off", - "jest/prefer-expect-assertions": "off", - "jest/prefer-inline-snapshots": "off", "react/prop-types": "error", "import/no-unresolved": [ "error", { "ignore": [ "jquery", "amp-block-editor-data" ] - } ] + } ], + "jsdoc/check-indentation": "error", + "@wordpress/dependency-group": "error", + "@wordpress/react-no-unsafe-timeout": "error" }, "overrides": [ + { + "files":[ + "**/__tests__/**/*.js", + "**/test/*.js", + "**/?(*.)test.js", + "tests/js/**/*.js" + ], + "extends": [ + "plugin:jest/all" + ], + "rules": { + "jest/lowercase-name": [ + "error", + { + "ignore": [ "describe" ] + } + ], + "jest/no-hooks": "off", + "jest/prefer-expect-assertions": "off", + "jest/prefer-inline-snapshots": "off", + } + }, { "files": [ "tests/e2e/**/*.js" ], - "env": { - "browser": true - }, - "globals": { - "browser": true, - "page": true, - "wp": true + "extends": [ + "plugin:@wordpress/eslint-plugin/test-e2e", + "plugin:jest/all" + ], + "rules": { + "jest/lowercase-name": [ + "error", + { + "ignore": [ "describe" ] + } + ], + "jest/no-hooks": "off", + "jest/prefer-expect-assertions": "off", + "jest/prefer-inline-snapshots": "off", } } ] diff --git a/assets/src/amp-validation/amp-validated-url-post-edit-screen.js b/assets/src/amp-validation/amp-validated-url-post-edit-screen.js index 1a34f64409f..0703a64469c 100644 --- a/assets/src/amp-validation/amp-validated-url-post-edit-screen.js +++ b/assets/src/amp-validation/amp-validated-url-post-edit-screen.js @@ -9,14 +9,14 @@ const { ampValidation } = window; /** * The id for the 'Showing x of y errors' notice. * - * @var {string} + * @member {string} */ const idNumberErrors = 'number-errors'; /** * The id for the 'Show all' button. * - * @var {string} + * @member {string} */ const showAllId = 'show-all-errors'; diff --git a/assets/src/block-editor/components/layout-controls.js b/assets/src/block-editor/components/layout-controls.js index a6b1dd75d06..769e7058385 100644 --- a/assets/src/block-editor/components/layout-controls.js +++ b/assets/src/block-editor/components/layout-controls.js @@ -2,6 +2,7 @@ * External dependencies */ import PropTypes from 'prop-types'; +import { ReactElement } from 'react'; /** * WordPress dependencies @@ -12,12 +13,12 @@ import { __, sprintf } from '@wordpress/i18n'; /** * Layout controls for AMP blocks' attributes: layout, width, height. * - * @param {Object} attributes Block attributes. - * @param {string} attributes.ampLayout AMP layout option. - * @param {Function} setAttributes Callback to update block attributes. - * @param {Array} ampLayoutOptions Layout options. + * @param {Object} props Component props. + * @param {Object} props.attributes Block attributes. + * @param {Function} props.setAttributes Callback to update block attributes. + * @param {Array} props.ampLayoutOptions Layout options. * - * @return {Component} Controls. + * @return {ReactElement} Controls. */ const LayoutControls = ( { attributes, setAttributes, ampLayoutOptions } ) => { const { ampLayout, height, width } = attributes; diff --git a/assets/src/block-editor/components/media-placeholder.js b/assets/src/block-editor/components/media-placeholder.js index c29f150aa2d..30e80189ef4 100644 --- a/assets/src/block-editor/components/media-placeholder.js +++ b/assets/src/block-editor/components/media-placeholder.js @@ -2,6 +2,7 @@ * External dependencies */ import PropTypes from 'prop-types'; +import { ReactElement } from 'react'; /** * WordPress dependencies @@ -12,10 +13,11 @@ import { __ } from '@wordpress/i18n'; /** * Display media placeholder. * - * @param {string} name Block's name. - * @param {string} url URL. + * @param {Object} props Component props. + * @param {string} props.name Block's name. + * @param {string} props.url URL. * - * @return {Component} Placeholder. + * @return {ReactElement} Placeholder. */ const MediaPlaceholder = ( { name, url } ) => { return ( diff --git a/assets/src/block-editor/helpers/index.js b/assets/src/block-editor/helpers/index.js index 5a62fe867fc..e8d13aaaddc 100644 --- a/assets/src/block-editor/helpers/index.js +++ b/assets/src/block-editor/helpers/index.js @@ -2,6 +2,7 @@ * External dependencies */ import PropTypes from 'prop-types'; +import { ReactElement } from 'react'; /** * WordPress dependencies @@ -464,7 +465,7 @@ export const setImageBlockLayoutAttributes = ( props, layout ) => { * * @param {Object} props Props. * - * @return {Component} Inspector Controls. + * @return {ReactElement} Inspector Controls. */ export const setUpInspectorControls = ( props ) => { const { isSelected } = props; @@ -492,7 +493,7 @@ setUpInspectorControls.propTypes = { * * @param {Object} props Props. * - * @return {Component} Element. + * @return {ReactElement} Element. */ const AmpLayoutControl = ( props ) => { const { name, attributes: { ampLayout }, setAttributes } = props; @@ -531,7 +532,7 @@ AmpLayoutControl.propTypes = { * * @param {Object} props Props. * - * @return {Component} Element. + * @return {ReactElement} Element. */ const AmpNoloadingToggle = ( props ) => { const { attributes: { ampNoLoading }, setAttributes } = props; @@ -562,7 +563,7 @@ AmpNoloadingToggle.propTypes = { * * @param {Object} props Props. * - * @return {Component} Inspector Controls. + * @return {ReactElement} Inspector Controls. */ const setUpTextBlocksInspectorControls = ( props ) => { const { isSelected, attributes, setAttributes } = props; @@ -698,7 +699,7 @@ setUpTextBlocksInspectorControls.propTypes = { * * @param {Object} props Props. * - * @return {Component} Inspector controls. + * @return {ReactElement} Inspector controls. */ const setUpShortcodeInspectorControls = ( props ) => { const { isSelected } = props; @@ -729,7 +730,7 @@ setUpShortcodeInspectorControls.propTypes = { * * @param {Object} props Props. * - * @return {Component} Element. + * @return {ReactElement} Element. */ const AmpLightboxToggle = ( props ) => { const { attributes: { ampLightbox, linkTo, ampLayout }, setAttributes } = props; diff --git a/assets/src/block-validation/components/validation-error-message/index.js b/assets/src/block-validation/components/validation-error-message/index.js index 89dc1b37e0c..58e67b01d7d 100644 --- a/assets/src/block-validation/components/validation-error-message/index.js +++ b/assets/src/block-validation/components/validation-error-message/index.js @@ -2,6 +2,7 @@ * External dependencies */ import PropTypes from 'prop-types'; +import { ReactElement } from 'react'; /** * WordPress dependencies @@ -11,12 +12,13 @@ import { __, sprintf } from '@wordpress/i18n'; /** * Get message for validation error. * - * @param {?string} code Error code. - * @param {?string} nodeName Node name. - * @param {?string} parentName Parent node name. - * @param {?string} message Error message. + * @param {Object} props Component props. + * @param {?string} props.code Error code. + * @param {?string} props.node_name Node name. + * @param {?string} props.parent_name Parent node name. + * @param {?string} props.message Error message. * - * @return {Component} Validation error message. + * @return {ReactElement} Validation error message. */ const ValidationErrorMessage = ( { message, code, node_name: nodeName, parent_name: parentName } ) => { if ( message ) { diff --git a/assets/src/block-validation/helpers/index.js b/assets/src/block-validation/helpers/index.js index 86fd1ac6f19..4a0e8cb17c0 100644 --- a/assets/src/block-validation/helpers/index.js +++ b/assets/src/block-validation/helpers/index.js @@ -47,13 +47,14 @@ export const maybeResetValidationErrors = () => { */ export const updateValidationErrors = () => { const { getBlockCount, getClientIdsWithDescendants, getBlock } = select( 'core/block-editor' ); - const { getCurrentPost } = select( 'core/editor' ); const { resetValidationErrors, addValidationError, updateReviewLink } = dispatch( 'amp/block-validation' ); if ( 0 === getBlockCount() ) { return; } + const { getCurrentPost } = select( 'core/editor' ); + const currentPost = getCurrentPost(); /** diff --git a/assets/src/common/components/featured-image-cropper.js b/assets/src/common/components/featured-image-cropper.js index 8d62d708ee5..72bfbb2eb01 100644 --- a/assets/src/common/components/featured-image-cropper.js +++ b/assets/src/common/components/featured-image-cropper.js @@ -5,14 +5,13 @@ const { wp } = window; * A state for cropping a featured image. * * @constructs FeaturedImageCropper - * @inheritDoc */ const FeaturedImageCropper = wp.media.controller.Cropper.extend( { /** * Creates an object with the image attachment and crop properties. * * @param {wp.media.model.Attachment} attachment The attachment to crop. - * @return {jQuery.promise} A jQuery promise that represents the crop image request. + * @return {Promise} A jQuery promise (not a native one!) that represents the crop image request. */ doCrop( attachment ) { const cropDetails = attachment.get( 'cropDetails' ); diff --git a/assets/src/common/components/pre-publish-panel.js b/assets/src/common/components/pre-publish-panel.js index 52cade54e82..1d7c80e967b 100644 --- a/assets/src/common/components/pre-publish-panel.js +++ b/assets/src/common/components/pre-publish-panel.js @@ -19,9 +19,10 @@ import { validateFeaturedImage } from '../helpers'; /** * Conditionally adds a notice to the pre-publish panel for the featured image. * - * @param {Object} featuredMedia Media object. - * @param {Array} dimensions Required image dimensions. - * @param {boolean} required Whether selecting a featured image is required. + * @param {Object} props Component props. + * @param {Object} props.featuredMedia Media object. + * @param {Array} props.dimensions Required image dimensions. + * @param {boolean} props.required Whether selecting a featured image is required. * * @return {Function} Either a plain pre-publish panel, or the panel with a featured image notice. */ diff --git a/assets/src/common/components/select-media-frame.js b/assets/src/common/components/select-media-frame.js index 186fb56586d..8efa483bcae 100644 --- a/assets/src/common/components/select-media-frame.js +++ b/assets/src/common/components/select-media-frame.js @@ -20,7 +20,6 @@ const NOTICE_CLASSNAME = 'notice notice-warning notice-alt inline'; /** * FeaturedImageSelectionError * - * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View @@ -47,7 +46,6 @@ const FeaturedImageSelectionError = wp.media.View.extend( { * Applies if the featured image has the wrong file type, like .mov or .txt. * Very similar to the FeaturedImageSelectionError class. * - * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View @@ -71,7 +69,6 @@ export const SelectionFileTypeError = wp.media.View.extend( { * Applies when the video size is more than a certain amount of MB per second. * Very similar to the FeaturedImageSelectionError class. * - * @class * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View @@ -96,13 +93,11 @@ export const SelectionFileSizeError = wp.media.View.extend( { * Prevent selection of an image that does not meet the minimum requirements. * Also enforces the file type, ensuring that it was in the allowedTypes prop. * - * @class * @augments wp.media.view.Toolbar.Select * @augments wp.media.view.Toolbar * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View - * @inheritDoc */ export const FeaturedImageToolbarSelect = wp.media.view.Toolbar.Select.extend( { /** @@ -146,13 +141,11 @@ export const FeaturedImageToolbarSelect = wp.media.view.Toolbar.Select.extend( { * * Prevents selecting an attachment that has the wrong file type, like .mov or .txt. * - * @class * @augments wp.media.view.Toolbar.Select * @augments wp.media.view.Toolbar * @augments wp.media.View * @augments wp.Backbone.View * @augments Backbone.View - * @inheritDoc */ export const EnforcedFileToolbarSelect = wp.media.view.Toolbar.Select.extend( { /** @@ -179,14 +172,13 @@ export const EnforcedFileToolbarSelect = wp.media.view.Toolbar.Select.extend( { /** * Gets the select media frame, which displays in the bottom of the Media Library. * - * @param {Class} ToolbarSelect The select toolbar that display at the bottom of the Media Library. - * @return {Class} ToolbarSelect A wp.media Class that creates a Media Library toolbar. + * @param {Object} ToolbarSelect The select toolbar that display at the bottom of the Media Library. + * @return {Object} ToolbarSelect A wp.media Class that creates a Media Library toolbar. */ export const getSelectMediaFrame = ( ToolbarSelect ) => { /** * Selects a featured image from the media library. * - * @class * @augments wp.media.view.MediaFrame.Select * @augments wp.media.view.MediaFrame * @augments wp.media.view.Frame @@ -194,7 +186,6 @@ export const getSelectMediaFrame = ( ToolbarSelect ) => { * @augments wp.Backbone.View * @augments Backbone.View * @mixes wp.media.controller.StateMachine - * @inheritDoc */ return wp.media.view.MediaFrame.Select.extend( { /** diff --git a/assets/src/common/components/with-cropped-featured-image.js b/assets/src/common/components/with-cropped-featured-image.js index 53ff4a6deb0..9ebb6cba024 100644 --- a/assets/src/common/components/with-cropped-featured-image.js +++ b/assets/src/common/components/with-cropped-featured-image.js @@ -46,6 +46,8 @@ export default ( InitialMediaUpload, minImageDimensions, alternateMinImageDimens return class FeaturedImageMediaUpload extends InitialMediaUpload { /** * Constructs the class. + * + * @param {*} args Constructor arguments. */ constructor( ...args ) { super( ...args ); diff --git a/assets/src/common/components/with-enforced-file-type.js b/assets/src/common/components/with-enforced-file-type.js index 66268582872..766f0f3fff3 100644 --- a/assets/src/common/components/with-enforced-file-type.js +++ b/assets/src/common/components/with-enforced-file-type.js @@ -34,6 +34,8 @@ export default ( InitialMediaUpload ) => { return class EnforcedFileTypeMediaUpload extends InitialMediaUpload { /** * Constructs the class. + * + * @param {*} args Constructor arguments. */ constructor( ...args ) { super( ...args ); diff --git a/assets/src/common/helpers/index.js b/assets/src/common/helpers/index.js index 4c73c2fcc3c..5801f52b59f 100644 --- a/assets/src/common/helpers/index.js +++ b/assets/src/common/helpers/index.js @@ -48,7 +48,7 @@ export const hasMinimumDimensions = ( media, dimensions ) => { /** * Get minimum dimensions for a featured image. * - * @link https://developers.google.com/search/docs/data-types/article#article_types + * @see https://developers.google.com/search/docs/data-types/article#article_types * * "Images should be at least 1200 pixels wide. * For best results, provide multiple high-resolution images (minimum of 800,000 pixels when multiplying width and height) diff --git a/assets/src/common/helpers/test/fixtures/mockClasses.js b/assets/src/common/helpers/test/fixtures/mockClasses.js index 5e5c2e25a0a..013bac4d1c7 100644 --- a/assets/src/common/helpers/test/fixtures/mockClasses.js +++ b/assets/src/common/helpers/test/fixtures/mockClasses.js @@ -8,7 +8,7 @@ export class Mock { * Gets a given value. * * @param {string} key The key of the value to get. - * @return {mixed} value The value corresponding to the key. + * @return {*} value The value corresponding to the key. */ get( key ) { if ( this.hasOwnProperty( key ) ) { diff --git a/assets/src/stories-editor/components/animation-controls.js b/assets/src/stories-editor/components/animation-controls.js index f256c7e6f8a..eb2e1c072f1 100644 --- a/assets/src/stories-editor/components/animation-controls.js +++ b/assets/src/stories-editor/components/animation-controls.js @@ -2,6 +2,7 @@ * External dependencies */ import PropTypes from 'prop-types'; +import { ReactElement } from 'react'; /** * WordPress dependencies @@ -19,7 +20,7 @@ import { AnimationOrderPicker } from './'; /** * Animation controls for AMP Story layout blocks'. * - * @return {Component} Controls. + * @return {ReactElement} Controls. */ const AnimationControls = ( { animatedBlocks, diff --git a/assets/src/stories-editor/components/block-mover/draggable.js b/assets/src/stories-editor/components/block-mover/draggable.js index 321d192a298..98450a03c2d 100644 --- a/assets/src/stories-editor/components/block-mover/draggable.js +++ b/assets/src/stories-editor/components/block-mover/draggable.js @@ -107,12 +107,10 @@ class Draggable extends Component { } /** - * - Clones the current element and spawns clone over original element. - * - Adds dragover listener. + * Clones the current element and spawns clone over original element. + * Adds dragover listener. * - * @param {Object} event Custom DragEvent. - * @param {string} elementId The HTML id of the element to be dragged. - * @param {Object} transferData The data to be set to the event's dataTransfer - to be accessible in any later drop logic. + * @param {Object} event Custom DragEvent. */ onDragStart( event ) { const { blockName, elementId, transferData, onDragStart = noop } = this.props; diff --git a/assets/src/stories-editor/components/block-preview.js b/assets/src/stories-editor/components/block-preview.js index 0c89c3a67d6..9630060da9c 100644 --- a/assets/src/stories-editor/components/block-preview.js +++ b/assets/src/stories-editor/components/block-preview.js @@ -2,6 +2,7 @@ * External dependencies */ import PropTypes from 'prop-types'; +import { ReactElement } from 'react'; /** * WordPress dependencies @@ -15,7 +16,7 @@ import { BlockEdit } from '@wordpress/block-editor'; * * @param {Object} props Component props. * - * @return {WPElement} Rendered element. + * @return {ReactElement} Rendered element. */ const BlockPreview = ( { clientId, name, attributes, innerBlocks = [] } ) => { const block = createBlock( name, attributes, innerBlocks ); diff --git a/assets/src/stories-editor/components/draggable-text.js b/assets/src/stories-editor/components/draggable-text.js index f5a7d9968db..3d60f5be544 100644 --- a/assets/src/stories-editor/components/draggable-text.js +++ b/assets/src/stories-editor/components/draggable-text.js @@ -3,6 +3,7 @@ */ import PropTypes from 'prop-types'; import classnames from 'classnames'; +import { ReactElement } from 'react'; /** * WordPress dependencies @@ -21,7 +22,7 @@ import { StoryBlockMover } from './index'; * * @param {Object} props Component props. * - * @return {WPElement} Rendered element. + * @return {ReactElement} Rendered element. */ const DraggableText = ( props ) => { const { diff --git a/assets/src/stories-editor/components/higher-order/with-call-to-action-validation.js b/assets/src/stories-editor/components/higher-order/with-call-to-action-validation.js index 89554ebca46..a6529af59e9 100644 --- a/assets/src/stories-editor/components/higher-order/with-call-to-action-validation.js +++ b/assets/src/stories-editor/components/higher-order/with-call-to-action-validation.js @@ -15,10 +15,6 @@ const enhance = compose( * first block of the same type on the page -- if and only if that * "original" block is not the current one. Thus, an non-existent * `originalBlockClientId` prop signals that the block is valid. - * - * @param {Component} WrappedBlockEdit A filtered BlockEdit instance. - * - * @return {Component} Enhanced component with merged state data props. */ withSelect( ( select, props ) => { const { getBlockRootClientId, getBlock, getBlockOrder, getBlocksByClientId } = select( 'core/block-editor' ); diff --git a/assets/src/stories-editor/components/higher-order/with-page-number.js b/assets/src/stories-editor/components/higher-order/with-page-number.js index a68c24c1cc2..9f9585e0d12 100644 --- a/assets/src/stories-editor/components/higher-order/with-page-number.js +++ b/assets/src/stories-editor/components/higher-order/with-page-number.js @@ -16,7 +16,6 @@ const applyWithSelect = withSelect( ( select, props ) => { getBlockOrder, getBlockRootClientId, } = select( 'core/block-editor' ); - const { isReordering } = select( 'amp/story' ); if ( '' !== getBlockRootClientId( props.clientId ) ) { return { @@ -24,6 +23,7 @@ const applyWithSelect = withSelect( ( select, props ) => { }; } + const { isReordering } = select( 'amp/story' ); const currentIndex = getBlockOrder().indexOf( props.clientId ); return { diff --git a/assets/src/stories-editor/components/inserter/index.js b/assets/src/stories-editor/components/inserter/index.js index 9f651f8416f..da59a8fa2c6 100644 --- a/assets/src/stories-editor/components/inserter/index.js +++ b/assets/src/stories-editor/components/inserter/index.js @@ -11,6 +11,7 @@ * External dependencies */ import PropTypes from 'prop-types'; +import { ReactElement } from 'react'; /** * WordPress dependencies @@ -67,11 +68,11 @@ class Inserter extends Component { /** * Render callback to display Dropdown toggle element. * - * @param {Function} onToggle Callback to invoke when toggle is - * pressed. - * @param {boolean} isOpen Whether dropdown is currently open. + * @param {Object} args Callback args. + * @param {Function} args.onToggle Callback to invoke when toggle is pressed. + * @param {boolean} args.isOpen Whether dropdown is currently open. * - * @return {WPElement} Dropdown toggle element. + * @return {ReactElement} Dropdown toggle element. */ renderToggle( { onToggle, isOpen } ) { const { @@ -85,10 +86,9 @@ class Inserter extends Component { /** * Render callback to display Dropdown content element. * - * @param {Function} onClose Callback to invoke when dropdown is - * closed. + * @param {Function} onClose Callback to invoke when dropdown is closed. * - * @return {WPElement} Dropdown content element. + * @return {ReactElement} Dropdown content element. */ renderContent( { onClose } ) { const { rootClientId, clientId, isAppender } = this.props; diff --git a/assets/src/stories-editor/components/media-inserter/index.js b/assets/src/stories-editor/components/media-inserter/index.js index c4dd16a174b..236cb080e34 100644 --- a/assets/src/stories-editor/components/media-inserter/index.js +++ b/assets/src/stories-editor/components/media-inserter/index.js @@ -21,21 +21,24 @@ const POPOVER_PROPS = { position: 'bottom right', }; -const MediaInserter = ( { insertBlock, updateBlock, canInsertBlockType, showInserter } ) => { +const MediaInserter = ( { insertBlock, updateBlock, canInsertBlockType, showInserter, mediaType } ) => { const blocks = [ 'core/video', 'core/image', ]; + const imageTitle = 'image' === mediaType ? __( 'Update Background Image', 'amp' ) : __( 'Insert Background Image', 'amp' ); + const videoTitle = 'video' === mediaType ? __( 'Update Background Video', 'amp' ) : __( 'Insert Background Video', 'amp' ); + const dropDownOptions = [ { - title: __( 'Insert Background Image', 'amp' ), + title: imageTitle, icon: , onClick: () => mediaPicker( __( 'Select or Upload Media', 'amp' ), 'image', updateBlock ), disabled: ! showInserter, }, { - title: __( 'Insert Background Video', 'amp' ), + title: videoTitle, icon: , onClick: () => mediaPicker( __( 'Select or Upload Media', 'amp' ), 'video', updateBlock ), disabled: ! showInserter, @@ -78,6 +81,7 @@ MediaInserter.propTypes = { updateBlock: PropTypes.func.isRequired, canInsertBlockType: PropTypes.func.isRequired, showInserter: PropTypes.bool.isRequired, + mediaType: PropTypes.string.isRequired, }; const mediaPicker = ( dialogTitle, mediaType, updateBlock ) => { @@ -106,18 +110,23 @@ const mediaPicker = ( dialogTitle, mediaType, updateBlock ) => { const applyWithSelect = withSelect( ( select ) => { const { getCurrentPage } = select( 'amp/story' ); - const { canInsertBlockType, getBlockListSettings } = select( 'core/block-editor' ); + const { canInsertBlockType, getBlockListSettings, getBlock } = select( 'core/block-editor' ); const { isReordering } = select( 'amp/story' ); + const currentPage = getCurrentPage(); + const block = getBlock( currentPage ); + const mediaType = block && block.attributes.mediaType ? block.attributes.mediaType : ''; + return { isReordering: isReordering(), canInsertBlockType: ( name ) => { // canInsertBlockType() alone is not enough, see https://github.com/WordPress/gutenberg/issues/14515 - const blockSettings = getBlockListSettings( getCurrentPage() ); - return canInsertBlockType( name, getCurrentPage() ) && blockSettings && blockSettings.allowedBlocks.includes( name ); + const blockSettings = getBlockListSettings( currentPage ); + return canInsertBlockType( name, currentPage ) && blockSettings && blockSettings.allowedBlocks.includes( name ); }, // As used in component showInserter: select( 'core/edit-post' ).getEditorMode() === 'visual' && select( 'core/editor' ).getEditorSettings().richEditingEnabled, + mediaType, }; } ); diff --git a/assets/src/stories-editor/components/with-edit-featured-image.js b/assets/src/stories-editor/components/with-edit-featured-image.js index 9f2a41751c7..55f536e2611 100644 --- a/assets/src/stories-editor/components/with-edit-featured-image.js +++ b/assets/src/stories-editor/components/with-edit-featured-image.js @@ -20,11 +20,7 @@ import { hasMinimumDimensions, getMinimumFeaturedImageDimensions } from '../../c */ export default ( BlockEdit ) => { return withSelect( ( select, ownProps ) => { - const { getMedia } = select( 'core' ); const { getEditedPostAttribute } = select( 'core/editor' ); - const { getSelectedBlock } = select( 'core/block-editor' ); - const { editPost } = dispatch( 'core/editor' ); - const featuredImage = getEditedPostAttribute( 'featured_media' ); const isRelevantBlock = ( 'core/image' === ownProps.name || 'amp/amp-story-page' === ownProps.name ); @@ -32,6 +28,8 @@ export default ( BlockEdit ) => { return; } + const { getSelectedBlock } = select( 'core/block-editor' ); + const selectedMediaId = ownProps.attributes.mediaId || ownProps.attributes.id; const selectedBlock = getSelectedBlock(); if ( ! selectedMediaId || ! selectedBlock || ! selectedBlock.attributes ) { @@ -44,6 +42,9 @@ export default ( BlockEdit ) => { return; } + const { getMedia } = select( 'core' ); + const { editPost } = dispatch( 'core/editor' ); + // Conditionally set the selected image as the featured image. const media = getMedia( selectedMediaId ); if ( diff --git a/assets/src/stories-editor/helpers/index.js b/assets/src/stories-editor/helpers/index.js index f038bae0712..cf63fc9ad92 100644 --- a/assets/src/stories-editor/helpers/index.js +++ b/assets/src/stories-editor/helpers/index.js @@ -5,6 +5,7 @@ import uuid from 'uuid/v4'; import classnames from 'classnames'; import { every, has, isEqual } from 'lodash'; import memize from 'memize'; +import { ReactElement } from 'react'; /** * WordPress dependencies @@ -526,16 +527,16 @@ export const filterBlockAttributes = ( blockAttributes, blockType, innerHTML ) = /** * Wraps all movable blocks in a grid layer and assigns custom attributes as needed. * - * @param {WPElement} element Block element. - * @param {Object} blockType Block type object. - * @param {Object} attributes Block attributes. - * @param {number} attributes.positionTop Top offset in pixel. - * @param {number} attributes.positionLeft Left offset in pixel. - * @param {number} attributes.rotationAngle Rotation angle in degrees. - * @param {number} attributes.width Block width in pixels. - * @param {number} attributes.height Block height in pixels. + * @param {ReactElement} element Block element. + * @param {Object} blockType Block type object. + * @param {Object} attributes Block attributes. + * @param {number} attributes.positionTop Top offset in pixel. + * @param {number} attributes.positionLeft Left offset in pixel. + * @param {number} attributes.rotationAngle Rotation angle in degrees. + * @param {number} attributes.width Block width in pixels. + * @param {number} attributes.height Block height in pixels. * - * @return {Object} The wrapped element. + * @return {ReactElement} The wrapped element. */ export const wrapBlocksInGridLayer = ( element, blockType, attributes ) => { if ( ! element || ! ALLOWED_MOVABLE_BLOCKS.includes( blockType.name ) ) { @@ -837,7 +838,7 @@ export const getPixelsFromPercentage = ( axis, percentageValue, baseValue = 0 ) /** * Returns the minimum dimensions for a story poster image. * - * @link https://www.ampproject.org/docs/reference/components/amp-story#poster-guidelines-(for-poster-portrait-src,-poster-landscape-src,-and-poster-square-src) + * @see https://www.ampproject.org/docs/reference/components/amp-story#poster-guidelines-(for-poster-portrait-src,-poster-landscape-src,-and-poster-square-src) * * @return {Object} Minimum dimensions including width and height. */ @@ -930,13 +931,14 @@ export const createSkeletonTemplate = ( template ) => { /** * Determines a block's HTML class name based on its attributes. * - * @param {string[]} className List of pre-existing class names for the block. - * @param {boolean} ampFitText Whether amp-fit-text should be used or not. - * @param {?string} backgroundColor A string containing the background color slug. - * @param {?string} textColor A string containing the color slug. - * @param {string} customBackgroundColor A string containing the custom background color value. - * @param {string} customTextColor A string containing the custom color value. - * @param {?number} opacity Opacity. + * @param {Object} attributes Block attributes. + * @param {string[]} attributes.className List of pre-existing class names for the block. + * @param {boolean} attributes.ampFitText Whether amp-fit-text should be used or not. + * @param {?string} attributes.backgroundColor A string containing the background color slug. + * @param {?string} attributes.textColor A string containing the color slug. + * @param {string} attributes.customBackgroundColor A string containing the custom background color value. + * @param {string} attributes.customTextColor A string containing the custom color value. + * @param {?number} attributes.opacity Opacity. * * @return {string} The block's HTML class name. */ @@ -966,15 +968,16 @@ export const getClassNameFromBlockAttributes = ( { /** * Determines a block's inline style based on its attributes. * - * @param {string} align Block alignment. - * @param {?string} fontSize Font size slug. - * @param {?number} customFontSize Custom font size in pixels. - * @param {boolean} ampFitText Whether amp-fit-text should be used or not. - * @param {?string} backgroundColor A string containing the background color slug. - * @param {?string} textColor A string containing the color slug. - * @param {string} customBackgroundColor A string containing the custom background color value. - * @param {string} customTextColor A string containing the custom color value. - * @param {?number} opacity Opacity. + * @param {Object} attributes Block attributes. + * @param {string} attributes.align Block alignment. + * @param {?string} attributes.fontSize Font size slug. + * @param {?number} attributes.customFontSize Custom font size in pixels. + * @param {boolean} attributes.ampFitText Whether amp-fit-text should be used or not. + * @param {?string} attributes.backgroundColor A string containing the background color slug. + * @param {?string} attributes.textColor A string containing the color slug. + * @param {string} attributes.customBackgroundColor A string containing the custom background color value. + * @param {string} attributes.customTextColor A string containing the custom color value. + * @param {?number} attributes.opacity Opacity. * * @return {Object} Block inline style. */ @@ -1014,10 +1017,11 @@ export const getStylesFromBlockAttributes = ( { /** * Returns the settings object for the AMP story meta blocks (post title, author, date). * - * @param {string} attribute The post attribute this meta block reads from. - * @param {?string} placeholder Optional. Placeholder text in case the attribute is empty. - * @param {string} tagName Optional. The HTML tag name to use for the content. Default '

'. - * @param {boolean} isEditable Optional. Whether the meta block is editable by the user or not. Default false. + * @param {Object} args Function arguments. + * @param {string} args.attribute The post attribute this meta block reads from. + * @param {string} args.placeholder Optional. Placeholder text in case the attribute is empty. + * @param {string} [args.tagName] Optional. The HTML tag name to use for the content. Default '

'. + * @param {boolean} [args.isEditable] Optional. Whether the meta block is editable by the user or not. Default false. * * @return {Object} The meta block's settings object. */ @@ -1434,14 +1438,12 @@ export const maybeInitializeAnimations = () => { /** * Return a label for the block order controls depending on block position. * - * @param {string} type Block type - in the case of a single block, should - * define its 'type'. I.e. 'Text', 'Heading', 'Image' etc. + * @param {string} type Block type - in the case of a single block, should define its 'type'. I.e. 'Text', 'Heading', 'Image' etc. * @param {number} currentPosition The block's current position. * @param {number} newPosition The block's new position. * @param {boolean} isFirst This is the first block. * @param {boolean} isLast This is the last block. - * @param {number} dir Direction of movement (> 0 is considered to be going - * down, < 0 is up). + * @param {number} dir Direction of movement (> 0 is considered to be going down, < 0 is up). * * @return {string} Label for the block movement controls. */ @@ -1544,8 +1546,9 @@ export const getFirstFrameOfVideo = ( src ) => { /** * Uploads the video's first frame as an attachment. * - * @param {number} id Video ID. - * @param {string} src Video URL. + * @param {Object} media Media object. + * @param {number} media.id Video ID. + * @param {string} media.src Video URL. */ export const uploadVideoFrame = async ( { id: videoId, src } ) => { const { __experimentalMediaUpload: mediaUpload } = getSettings(); @@ -1624,7 +1627,7 @@ export const maybeAddMissingAnchor = ( clientId ) => { * @see https://github.com/bokuweb/re-resizable * * @param {number} number - * @param {Array|function} snap List of snap targets or function that provider + * @param {Array|Function} snap List of snap targets or function that provider * @param {number} snapGap Minimum gap required in order to move to the next snapping target * @return {number} New angle. */ diff --git a/assets/src/stories-editor/plugins/export.js b/assets/src/stories-editor/plugins/export.js index 0167bc3d79c..4f3947de81b 100644 --- a/assets/src/stories-editor/plugins/export.js +++ b/assets/src/stories-editor/plugins/export.js @@ -95,10 +95,11 @@ export const name = 'amp-story-export'; /** * Renders the actual export menu item. * - * @param {number} postId - * @param {function} createErrorNotice - * @param {function} createSuccessNotice - * @param {function} removeNotice + * @param {Object} props Component props. + * @param {number} props.postId Post ID. + * @param {Function} props.createErrorNotice Callback to create an error notice. + * @param {Function} props.createSuccessNotice Callback to create a success notice. + * @param {Function} props.removeNotice Callback to remove a notice. * * @return {Object} The rendered export menu item. */ diff --git a/composer.json b/composer.json index 199ad9beac5..c47a6b63938 100644 --- a/composer.json +++ b/composer.json @@ -12,13 +12,13 @@ "ext-iconv": "*", "ext-libxml": "*", "ext-spl": "*", - "cweagans/composer-patches": "1.6.6", + "cweagans/composer-patches": "1.6.7", "fasterimage/fasterimage": "1.5.0", "sabberworm/php-css-parser": "8.3.0" }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "0.5.0", - "phpcompatibility/php-compatibility": "9.2.0", + "phpcompatibility/php-compatibility": "9.3.0", "roave/security-advisories": "dev-master", "wp-cli/wp-cli": "^2.3", "wp-coding-standards/wpcs": "2.1.1", diff --git a/composer.lock b/composer.lock index 3c79ace180f..ffd1cd7e7d9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0467db52d812eba125e5ba9af8d03509", + "content-hash": "179b08a9aeba3a490f40eaad8fc729b6", "packages": [ { "name": "cweagans/composer-patches", - "version": "1.6.6", + "version": "1.6.7", "source": { "type": "git", "url": "https://github.com/cweagans/composer-patches.git", - "reference": "1d89dcc730e7f42426c434b88261fcfb3bce651e" + "reference": "2e6f72a2ad8d59cd7e2b729f218bf42adb14f590" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/1d89dcc730e7f42426c434b88261fcfb3bce651e", - "reference": "1d89dcc730e7f42426c434b88261fcfb3bce651e", + "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/2e6f72a2ad8d59cd7e2b729f218bf42adb14f590", + "reference": "2e6f72a2ad8d59cd7e2b729f218bf42adb14f590", "shasum": "" }, "require": { @@ -48,7 +48,7 @@ } ], "description": "Provides a way to patch Composer packages.", - "time": "2018-10-24T15:51:16+00:00" + "time": "2019-08-29T20:11:49+00:00" }, { "name": "fasterimage/fasterimage", @@ -127,11 +127,6 @@ "phpunit/phpunit": "~4.8" }, "type": "library", - "extra": { - "patches_applied": { - "PHP-CSS-Parser: Fix parsing CSS selectors which contain commas ": "patches/php-css-parser-mods.diff" - } - }, "autoload": { "psr-0": { "Sabberworm\\CSS": "lib/" @@ -318,16 +313,16 @@ }, { "name": "phpcompatibility/php-compatibility", - "version": "9.2.0", + "version": "9.3.0", "source": { "type": "git", "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "3db1bf1e28123fd574a4ae2e9a84072826d51b5e" + "reference": "06cc8d2c2ed62a70f52963dbdf5eaa1ec0fe34c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/3db1bf1e28123fd574a4ae2e9a84072826d51b5e", - "reference": "3db1bf1e28123fd574a4ae2e9a84072826d51b5e", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/06cc8d2c2ed62a70f52963dbdf5eaa1ec0fe34c5", + "reference": "06cc8d2c2ed62a70f52963dbdf5eaa1ec0fe34c5", "shasum": "" }, "require": { @@ -350,19 +345,19 @@ "LGPL-3.0-or-later" ], "authors": [ - { - "name": "Contributors", - "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" - }, { "name": "Wim Godden", - "role": "lead", - "homepage": "https://github.com/wimg" + "homepage": "https://github.com/wimg", + "role": "lead" }, { "name": "Juliette Reinders Folmer", - "role": "lead", - "homepage": "https://github.com/jrfnl" + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" } ], "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", @@ -372,7 +367,7 @@ "phpcs", "standards" ], - "time": "2019-06-27T19:58:56+00:00" + "time": "2019-08-28T15:29:06+00:00" }, { "name": "rmccue/requests", @@ -426,17 +421,6 @@ { "name": "roave/security-advisories", "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "ea693fa060702164985511acc3ceb5389c9ac761" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ea693fa060702164985511acc3ceb5389c9ac761", - "reference": "ea693fa060702164985511acc3ceb5389c9ac761", - "shasum": "" - }, "conflict": { "3f/pygmentize": "<1.2", "adodb/adodb-php": "<5.20.12", diff --git a/includes/admin/class-amp-post-meta-box.php b/includes/admin/class-amp-post-meta-box.php index f9aca13ece6..f67fa5c83c1 100644 --- a/includes/admin/class-amp-post-meta-box.php +++ b/includes/admin/class-amp-post-meta-box.php @@ -133,7 +133,7 @@ public function enqueue_admin_assets() { $validate = ( isset( $screen->base ) && 'post' === $screen->base && - ! $screen->is_block_editor && + ( ! isset( $screen->is_block_editor ) || ! $screen->is_block_editor ) && is_post_type_viewable( $post->post_type ) && AMP_Story_Post_Type::POST_TYPE_SLUG !== $post->post_type ); diff --git a/includes/admin/class-amp-story-templates.php b/includes/admin/class-amp-story-templates.php index 71b9d52b509..6ffcec3afcf 100644 --- a/includes/admin/class-amp-story-templates.php +++ b/includes/admin/class-amp-story-templates.php @@ -83,15 +83,16 @@ public function filter_pre_get_posts( $query ) { $referer = wp_parse_url( wp_get_referer() ); + $is_story_page = false; if ( isset( $referer['query'] ) ) { $parsed_args = wp_parse_args( $referer['query'] ); if ( isset( $parsed_args['post_type'] ) && AMP_Story_Post_Type::POST_TYPE_SLUG === $parsed_args['post_type'] ) { - return $query; // This is in the editor for a new AMP Story. + $is_story_page = true; // This is in the editor for a new AMP Story. } if ( isset( $parsed_args['post'] ) && AMP_Story_Post_Type::POST_TYPE_SLUG === get_post_type( $parsed_args['post'] ) ) { - return $query; // This is in the editor for an existing AMP Story. + $is_story_page = true; // This is in the editor for an existing AMP Story. } } @@ -100,13 +101,14 @@ public function filter_pre_get_posts( $query ) { $tax_query = []; } - $tax_query[] = [ + $reusable_query = [ 'taxonomy' => self::TEMPLATES_TAXONOMY, 'field' => 'slug', 'terms' => [ self::TEMPLATES_TERM ], - 'operator' => 'NOT IN', + 'operator' => $is_story_page ? 'IN' : 'NOT IN', // Include templates if is Story page, exclude otherwise. ]; + $tax_query[] = $reusable_query; $query->set( 'tax_query', $tax_query ); return $query; } diff --git a/includes/amp-helper-functions.php b/includes/amp-helper-functions.php index 8f227f7d7db..d5f53c694f4 100644 --- a/includes/amp-helper-functions.php +++ b/includes/amp-helper-functions.php @@ -474,6 +474,15 @@ function amp_register_default_scripts( $wp_scripts ) { } } + if ( isset( $extensions['amp-carousel'] ) ) { + /* + * The 0.2 version of amp-carousel depends on the amp-base-carousel component, but this is still experimental. + * Also, the validator spec does not currently specify what base dependencies a given component has. + * @todo Revisit once amp-base-carousel is no longer experimental. Add support for obtaining a list of extensions that depend on other extensions to include in the script dependencies when registering below. + */ + $extensions['amp-carousel'] = '0.1'; + } + foreach ( $extensions as $extension => $version ) { $src = sprintf( 'https://cdn.ampproject.org/v0/%s-%s.js', @@ -688,8 +697,22 @@ function amp_print_analytics( $analytics ) { if ( '' === $analytics ) { $analytics = []; } + $analytics_entries = amp_get_analytics( $analytics ); + /** + * Triggers before analytics entries are printed as amp-analytics tags. + * + * This is useful for printing additional `amp-analytics` tags to the page without having to refactor any existing + * markup generation logic to use the data structure mutated by the `amp_analytics_entries` filter. For such cases, + * this action should be used for printing `amp-analytics` tags as opposed to using the `wp_footer` and + * `amp_post_template_footer` actions; this will ensure analytics will also be included on AMP Stories. + * + * @since 1.3 + * @param array $analytics_entries Analytics entries, already potentially modified by the amp_analytics_entries filter. + */ + do_action( 'amp_print_analytics', $analytics_entries ); + if ( empty( $analytics_entries ) ) { return; } diff --git a/includes/class-amp-story-post-type.php b/includes/class-amp-story-post-type.php index 340fe21733d..79b499ea4ad 100644 --- a/includes/class-amp-story-post-type.php +++ b/includes/class-amp-story-post-type.php @@ -22,7 +22,7 @@ class AMP_Story_Post_Type { * * @var string */ - const REQUIRED_GUTENBERG_VERSION = '5.8'; + const REQUIRED_GUTENBERG_VERSION = '5.9'; /** * The slug of the story card CSS file. diff --git a/includes/embeds/class-amp-gallery-embed.php b/includes/embeds/class-amp-gallery-embed.php index d9f85de0383..c4b72ccef1a 100644 --- a/includes/embeds/class-amp-gallery-embed.php +++ b/includes/embeds/class-amp-gallery-embed.php @@ -166,9 +166,18 @@ public function maybe_override_gallery( $html, $attributes ) { $is_lightbox = isset( $attributes['amp-lightbox'] ) && true === filter_var( $attributes['amp-lightbox'], FILTER_VALIDATE_BOOLEAN ); if ( isset( $attributes['amp-carousel'] ) && false === filter_var( $attributes['amp-carousel'], FILTER_VALIDATE_BOOLEAN ) ) { if ( true === $is_lightbox ) { + $add_lightbox_attribute = static function ( $attr ) { + $attr['lightbox'] = ''; + return $attr; + }; + remove_filter( 'post_gallery', [ $this, 'maybe_override_gallery' ], 10 ); + add_filter( 'wp_get_attachment_image_attributes', $add_lightbox_attribute ); + $attributes['link'] = 'none'; - $html = '

    ' . gallery_shortcode( $attributes ) . '
'; + $html = gallery_shortcode( $attributes ); + + remove_filter( 'wp_get_attachment_image_attributes', $add_lightbox_attribute ); add_filter( 'post_gallery', [ $this, 'maybe_override_gallery' ], 10, 2 ); } diff --git a/includes/sanitizers/class-amp-allowed-tags-generated.php b/includes/sanitizers/class-amp-allowed-tags-generated.php index 47a52b26b07..0e4e6964242 100644 --- a/includes/sanitizers/class-amp-allowed-tags-generated.php +++ b/includes/sanitizers/class-amp-allowed-tags-generated.php @@ -13,7 +13,7 @@ */ class AMP_Allowed_Tags_Generated { - private static $spec_file_revision = 920; + private static $spec_file_revision = 935; private static $minimum_validator_revision_required = 375; private static $descendant_tag_lists = array( @@ -492,7 +492,7 @@ class AMP_Allowed_Tags_Generated { ), 'referrerpolicy' => array(), 'rel' => array( - 'blacklisted_value_regex' => '(^|\\s)(components|dns-prefetch|import|manifest|preconnect|prefetch|preload|prerender|serviceworker|stylesheet|subresource|)(\\s|$)', + 'blacklisted_value_regex' => '(^|\\s)(components|dns-prefetch|import|manifest|preconnect|prefetch|preload|prerender|serviceworker|stylesheet|subresource)(\\s|$)', ), 'role' => array(), 'tabindex' => array(), @@ -1356,7 +1356,6 @@ class AMP_Allowed_Tags_Generated { 5, ), ), - 'mandatory_ancestor' => 'form', 'requires_extension' => array( 'amp-autocomplete', ), @@ -1857,6 +1856,9 @@ class AMP_Allowed_Tags_Generated { '', ), ), + 'slide' => array( + 'value_regex' => '[0-9]+', + ), 'type' => array( 'value' => array( 'slides', @@ -1913,7 +1915,11 @@ class AMP_Allowed_Tags_Generated { '', ), ), + 'slide' => array( + 'value_regex' => '[0-9]+', + ), 'type' => array( + 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'carousel', @@ -1969,6 +1975,9 @@ class AMP_Allowed_Tags_Generated { '', ), ), + 'slide' => array( + 'value_regex' => '[0-9]+', + ), 'type' => array( 'value' => array( 'slides', @@ -2039,7 +2048,11 @@ class AMP_Allowed_Tags_Generated { '', ), ), + 'slide' => array( + 'value_regex' => '[0-9]+', + ), 'type' => array( + 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'carousel', @@ -2323,6 +2336,7 @@ class AMP_Allowed_Tags_Generated { 'offset-seconds' => array( 'value_regex' => '-?\\d+', ), + 'template' => array(), 'timestamp-ms' => array( 'value_regex' => '\\d+', ), @@ -2472,6 +2486,7 @@ class AMP_Allowed_Tags_Generated { 'media' => array(), 'min' => array(), 'mode' => array( + 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'overlay', @@ -2669,6 +2684,7 @@ class AMP_Allowed_Tags_Generated { 'value_regex' => '[0-9]+', ), 'mode' => array( + 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'overlay', @@ -4796,7 +4812,6 @@ class AMP_Allowed_Tags_Generated { 'disallowed_ancestor' => array( 'amp-story', ), - 'mandatory_parent' => 'body', 'requires_extension' => array( 'amp-sidebar', ), @@ -5723,6 +5738,118 @@ class AMP_Allowed_Tags_Generated { 'spec_url' => 'https://amp.dev/documentation/components/amp-video', ), ), + array( + 'attr_spec_list' => array( + 'album' => array(), + 'alt' => array(), + 'artist' => array(), + 'artwork' => array(), + 'attribution' => array(), + 'autoplay' => array( + 'value' => array( + '', + ), + ), + 'controls' => array( + 'value' => array( + '', + ), + ), + 'controlslist' => array(), + 'crossorigin' => array(), + 'data-amp-bind-album' => array(), + 'data-amp-bind-alt' => array(), + 'data-amp-bind-artist' => array(), + 'data-amp-bind-artwork' => array(), + 'data-amp-bind-attribution' => array(), + 'data-amp-bind-controls' => array(), + 'data-amp-bind-controlslist' => array(), + 'data-amp-bind-loop' => array(), + 'data-amp-bind-poster' => array(), + 'data-amp-bind-preload' => array(), + 'data-amp-bind-src' => array(), + 'data-amp-bind-title' => array(), + 'disableremoteplayback' => array( + 'value' => array( + '', + ), + ), + 'dock' => array( + 'requires_extension' => array( + 'amp-video-docking', + ), + ), + 'lightbox' => array(), + 'lightbox-thumbnail-id' => array( + 'value_regex_casei' => '^[a-z][a-z\\d_-]*', + ), + 'loop' => array( + 'value' => array( + '', + ), + ), + 'media' => array(), + 'muted' => array( + 'value' => array( + '', + ), + ), + 'noaudio' => array( + 'value' => array( + '', + ), + ), + 'noloading' => array( + 'value' => array( + '', + ), + ), + 'object-fit' => array(), + 'object-position' => array(), + 'placeholder' => array(), + 'poster' => array(), + 'preload' => array( + 'value' => array( + 'auto', + 'metadata', + 'none', + '', + ), + ), + 'rotate-to-fullscreen' => array( + 'value' => array( + '', + ), + ), + 'src' => array( + 'blacklisted_value_regex' => '__amp_source_origin', + 'value_url' => array( + 'allow_relative' => true, + 'protocol' => array( + 'https', + ), + ), + ), + ), + 'tag_spec' => array( + 'also_requires_tag_warning' => array( + 'amp-video extension .js script', + ), + 'amp_layout' => array( + 'supported_layouts' => array( + 6, + 2, + 3, + 7, + 1, + 4, + ), + ), + 'mandatory_ancestor' => 'amp-story-page-attachment', + 'spec_name' => 'amp-story >> amp-story-page-attachment >> amp-video', + 'spec_url' => 'https://amp.dev/documentation/components/amp-video', + ), + ), array( 'attr_spec_list' => array( 'album' => array(), @@ -6525,6 +6652,21 @@ class AMP_Allowed_Tags_Generated { ), ), ), + 'canvas' => array( + array( + 'attr_spec_list' => array( + 'height' => array(), + 'width' => array(), + ), + 'tag_spec' => array( + 'mandatory_ancestor' => 'amp-script', + 'requires_extension' => array( + 'amp-script', + ), + 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', + ), + ), + ), 'caption' => array( array( 'attr_spec_list' => array(), @@ -7038,6 +7180,18 @@ class AMP_Allowed_Tags_Generated { 'spec_url' => 'https://amp.dev/documentation/components/amp-image-slider', ), ), + array( + 'attr_spec_list' => array( + 'align' => array(), + 'fetch-error' => array( + 'mandatory' => true, + ), + ), + 'tag_spec' => array( + 'mandatory_ancestor' => 'amp-list', + 'spec_name' => 'AMP-LIST DIV [fetch-error]', + ), + ), ), 'dl' => array( array( @@ -8495,7 +8649,10 @@ class AMP_Allowed_Tags_Generated { ), ), 'height' => array(), + 'importance' => array(), + 'intrinsicsize' => array(), 'ismap' => array(), + 'loading' => array(), 'longdesc' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'value_url' => array( @@ -8623,6 +8780,7 @@ class AMP_Allowed_Tags_Generated { 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), + 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), @@ -8694,6 +8852,7 @@ class AMP_Allowed_Tags_Generated { 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), + 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), @@ -9472,7 +9631,7 @@ class AMP_Allowed_Tags_Generated { 'hreflang' => array(), 'media' => array(), 'rel' => array( - 'blacklisted_value_regex' => '(^|\\s)(canonical|components|import|manifest|preload|serviceworker|stylesheet|subresource|)(\\s|$)', + 'blacklisted_value_regex' => '(^|\\s)(canonical|components|import|manifest|preload|serviceworker|stylesheet|subresource)(\\s|$)', 'mandatory' => true, ), 'sizes' => array(), @@ -10168,6 +10327,24 @@ class AMP_Allowed_Tags_Generated { 'spec_name' => 'meta name=amp-recaptcha-input', ), ), + array( + 'attr_spec_list' => array( + 'content' => array( + 'mandatory' => true, + ), + 'name' => array( + 'dispatch_key' => 2, + 'mandatory' => true, + 'value_casei' => array( + 'amp-script-src', + ), + ), + ), + 'tag_spec' => array( + 'mandatory_parent' => 'head', + 'spec_name' => 'meta name=amp-script-src', + ), + ), array( 'attr_spec_list' => array( 'content' => array(), @@ -12197,6 +12374,7 @@ class AMP_Allowed_Tags_Generated { 'requires_usage' => 2, 'version' => array( '0.1', + '0.2', 'latest', ), ), @@ -15470,6 +15648,7 @@ class AMP_Allowed_Tags_Generated { 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), + 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), @@ -15503,6 +15682,7 @@ class AMP_Allowed_Tags_Generated { 'vector-effect' => array(), 'viewbox' => array(), 'visibility' => array(), + 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), diff --git a/includes/sanitizers/class-amp-base-sanitizer.php b/includes/sanitizers/class-amp-base-sanitizer.php index 62b915512d2..8efcc47e31b 100644 --- a/includes/sanitizers/class-amp-base-sanitizer.php +++ b/includes/sanitizers/class-amp-base-sanitizer.php @@ -338,6 +338,44 @@ public function maybe_enforce_https_src( $src, $force_https = false ) { return $src; } + /** + * Check whether the document of a given node is in dev mode. + * + * @param DOMNode $node Node to check the document of. + * @return bool Whether the document is in dev mode. + */ + protected function is_document_in_dev_mode( DOMNode $node ) { + $document = $node instanceof DOMDocument ? $node : $node->ownerDocument; + + return $document->documentElement->hasAttribute( + AMP_Rule_Spec::DEV_MODE_ATTRIBUTE + ); + } + + /** + * Check whether a node is exempt from validation during dev mode. + * + * @param DOMNode $node Node to check. + * @return bool Whether the node should be exempt during dev mode. + */ + protected function has_dev_mode_exemption( DOMNode $node ) { + if ( ! $node instanceof DOMElement ) { + return false; + } + + return $node->hasAttribute( AMP_Rule_Spec::DEV_MODE_ATTRIBUTE ); + } + + /** + * Check whether a certain node should be exempt from validation. + * + * @param DOMNode $node Node to check. + * @return bool Whether the node should be exempt from validation. + */ + protected function is_exempt_from_validation( DOMNode $node ) { + return $this->is_document_in_dev_mode( $node ) && $this->has_dev_mode_exemption( $node ); + } + /** * Removes an invalid child of a node. * @@ -351,6 +389,9 @@ public function maybe_enforce_https_src( $src, $force_https = false ) { * @return bool Whether the node should have been removed, that is, that the node was sanitized for validity. */ public function remove_invalid_child( $node, $validation_error = [] ) { + if ( $this->is_exempt_from_validation( $node ) ) { + return false; + } // Prevent double-reporting nodes that are rejected for sanitization. if ( isset( $this->should_not_removed_nodes[ $node->nodeName ] ) && in_array( $node, $this->should_not_removed_nodes[ $node->nodeName ], true ) ) { @@ -380,6 +421,10 @@ public function remove_invalid_child( $node, $validation_error = [] ) { * @return bool Whether the node should have been removed, that is, that the node was sanitized for validity. */ public function remove_invalid_attribute( $element, $attribute, $validation_error = [] ) { + if ( $this->is_exempt_from_validation( $element ) ) { + return false; + } + if ( is_string( $attribute ) ) { $node = $element->getAttributeNode( $attribute ); } else { @@ -388,6 +433,7 @@ public function remove_invalid_attribute( $element, $attribute, $validation_erro $should_remove = $this->should_sanitize_validation_error( $validation_error, compact( 'node' ) ); if ( $should_remove ) { $element->removeAttributeNode( $node ); + $this->clean_up_after_attribute_removal( $element, $node, $validation_error ); } return $should_remove; } @@ -485,6 +531,33 @@ public function prepare_validation_error( array $error = [], array $data = [] ) return $error; } + /** + * Cleans up artifacts after the removal of an attribute node. + * + * @since 1.3 + * + * @param DOMElement $element The node for which he attribute was + * removed. + * @param DOMAttr $attribute The attribute that was removed. + * @param array $validation_error Validation error details. + */ + protected function clean_up_after_attribute_removal( $element, $attribute, $validation_error ) { + static $attributes_tied_to_href = [ 'target', 'download', 'rel', 'rev', 'hreflang', 'type' ]; + + if ( 'href' === $attribute->nodeName ) { + /* + * "The target, download, rel, rev, hreflang, and type attributes must be omitted + * if the href attribute is not present." + * See: https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element + */ + foreach ( $attributes_tied_to_href as $attribute_to_remove ) { + if ( $element->hasAttribute( $attribute_to_remove ) ) { + $element->removeAttribute( $attribute_to_remove ); + } + } + } + } + /** * Get data-amp-* values from the parent node 'figure' added by editor block. * diff --git a/includes/sanitizers/class-amp-img-sanitizer.php b/includes/sanitizers/class-amp-img-sanitizer.php index 27ee7a11846..b8378a2689a 100644 --- a/includes/sanitizers/class-amp-img-sanitizer.php +++ b/includes/sanitizers/class-amp-img-sanitizer.php @@ -203,6 +203,12 @@ private function filter_attributes( $attributes ) { $out['noloading'] = $value; break; + // Skip directly copying new web platform attributes from img to amp-img which are largely handled by AMP already. + case 'importance': // Not supported by AMP. + case 'loading': // Lazy-loading handled by amp-img natively. + case 'intrinsicsize': // Responsive images handled by amp-img directly. + break; + default: $out[ $name ] = $value; break; @@ -381,6 +387,18 @@ private function maybe_add_lightbox_attributes( $attributes, $node ) { return $attributes; } + // Account for blocks that include alignment. + // In that case, the structure changes from figure.wp-block-image > img + // to div.wp-block-image > figure > img and the amp-lightbox attribute + // can be found on the wrapping div instead of the figure element. + $grand_parent = $parent_node->parentNode; + if ( $grand_parent instanceof DOMElement ) { + $classes = preg_split( '/\s+/', $grand_parent->getAttribute( 'class' ) ); + if ( in_array( 'wp-block-image', $classes, true ) ) { + $parent_node = $grand_parent; + } + } + $parent_attributes = AMP_DOM_Utils::get_node_attributes_as_assoc_array( $parent_node ); if ( isset( $parent_attributes['data-amp-lightbox'] ) && true === filter_var( $parent_attributes['data-amp-lightbox'], FILTER_VALIDATE_BOOLEAN ) ) { diff --git a/includes/sanitizers/class-amp-rule-spec.php b/includes/sanitizers/class-amp-rule-spec.php index f6d5a848f7e..55472a50610 100644 --- a/includes/sanitizers/class-amp-rule-spec.php +++ b/includes/sanitizers/class-amp-rule-spec.php @@ -54,6 +54,15 @@ abstract class AMP_Rule_Spec { const VALUE_PROPERTIES = 'value_properties'; const VALUE_URL = 'value_url'; + /** + * Attribute name for AMP dev mode. + * + * @since 1.2.2 + * @link https://github.com/ampproject/amphtml/issues/20974 + * @var string + */ + const DEV_MODE_ATTRIBUTE = 'data-ampdevmode'; + /** * Supported layout values. * diff --git a/includes/sanitizers/class-amp-tag-and-attribute-sanitizer.php b/includes/sanitizers/class-amp-tag-and-attribute-sanitizer.php index 42bf80eb6b4..40d3eada287 100644 --- a/includes/sanitizers/class-amp-tag-and-attribute-sanitizer.php +++ b/includes/sanitizers/class-amp-tag-and-attribute-sanitizer.php @@ -639,6 +639,9 @@ public function is_missing_mandatory_attribute( $attr_spec, $node ) { * @return true|WP_Error True when valid or error when invalid. */ private function validate_cdata_for_node( $element, $cdata_spec ) { + if ( isset( $cdata_spec['max_bytes'] ) && strlen( $element->textContent ) > $cdata_spec['max_bytes'] ) { + return new WP_Error( 'excessive_bytes' ); + } if ( isset( $cdata_spec['blacklisted_cdata_regex'] ) ) { if ( preg_match( '@' . $cdata_spec['blacklisted_cdata_regex']['regex'] . '@u', $element->textContent ) ) { return new WP_Error( $cdata_spec['blacklisted_cdata_regex']['error_message'] ); @@ -1069,7 +1072,10 @@ private function delegated_sanitize_disallowed_attribute_values_in_node( $node, // Remove the disallowed values. foreach ( $attrs_to_remove as $attr_node ) { - if ( isset( $attr_spec_list[ $attr_node->nodeName ][ AMP_Rule_Spec::VALUE_URL ][ AMP_Rule_Spec::ALLOW_EMPTY ] ) && + if ( isset( $attr_spec_list[ $attr_node->nodeName ][ AMP_Rule_Spec::VALUE_URL ] ) && + 'href' === $attr_node->nodeName ) { + $attributes_pending_removal[] = $attr_node; + } elseif ( isset( $attr_spec_list[ $attr_node->nodeName ][ AMP_Rule_Spec::VALUE_URL ][ AMP_Rule_Spec::ALLOW_EMPTY ] ) && ( true === $attr_spec_list[ $attr_node->nodeName ][ AMP_Rule_Spec::VALUE_URL ][ AMP_Rule_Spec::ALLOW_EMPTY ] ) ) { $attr_node->nodeValue = ''; } else { @@ -1320,6 +1326,12 @@ private function check_attr_spec_rule_valid_url( $node, $attr_name, $attr_spec_r foreach ( $this->extract_attribute_urls( $node->getAttributeNode( $attr_name ) ) as $url ) { $url = urldecode( $url ); + // Check whether the URL is parseable. + $parts = wp_parse_url( $url ); + if ( false === $parts ) { + return AMP_Rule_Spec::FAIL; + } + // Check if the protocol contains invalid chars (protocolCharIsValid: https://github.com/ampproject/amphtml/blob/af1e3a550feeafd732226202b8d1f26dcefefa18/validator/engine/parse-url.js#L31-L39). $protocol = $this->parse_protocol( $url ); if ( isset( $protocol ) ) { @@ -1331,7 +1343,7 @@ private function check_attr_spec_rule_valid_url( $node, $attr_name, $attr_spec_r // Check if the host contains invalid chars (hostCharIsValid: https://github.com/ampproject/amphtml/blob/af1e3a550feeafd732226202b8d1f26dcefefa18/validator/engine/parse-url.js#L62-L103). $host = wp_parse_url( $url, PHP_URL_HOST ); - if ( $host && preg_match( '/[!"#$%&\'()*+,\/:;<=>?@[\]^`{|}~\s]/i', $host ) ) { + if ( $host && preg_match( '/[!"#$%&\'()*+,\/:;<=>?@[\]^`{|}~\s]/', $host ) ) { return AMP_Rule_Spec::FAIL; } } diff --git a/package-lock.json b/package-lock.json index 2a4a1ee849f..d93c6aec49f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1166,90 +1166,83 @@ "integrity": "sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw==", "dev": true }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, "@hapi/hoek": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-6.2.4.tgz", - "integrity": "sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.2.2.tgz", + "integrity": "sha512-18P3VwngjNEcmvPj1mmiHLPyUPjhPAxIyJKDj4PRIY0F5ac3P0Vd0hkASPyWXHK0rfY3P9N2FoxV8ZuYaRBZ1g==", "dev": true }, "@hapi/joi": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.0.tgz", - "integrity": "sha512-n6kaRQO8S+kepUTbXL9O/UOL788Odqs38/VOfoCrATDtTvyfiO3fgjlSRaNkHabpTLgM7qru9ifqXlXbXk8SeQ==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", "dev": true, "requires": { "@hapi/address": "2.x.x", - "@hapi/hoek": "6.x.x", - "@hapi/marker": "1.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", "@hapi/topo": "3.x.x" } }, - "@hapi/marker": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@hapi/marker/-/marker-1.0.0.tgz", - "integrity": "sha512-JOfdekTXnJexfE8PyhZFyHvHjt81rBFSAbTIRAhF2vv/2Y1JzoKsGqxH/GpZJoF7aEfYok8JVcAHmSz1gkBieA==", - "dev": true - }, "@hapi/topo": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.2.tgz", - "integrity": "sha512-r+aumOqJ5QbD6aLPJWqVjMAPsx5pZKz+F5yPqXZ/WWG9JTtHbQqlzrJoknJ0iJxLj9vlXtmpSdjlkszseeG8OA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.3.tgz", + "integrity": "sha512-JmS9/vQK6dcUYn7wc2YZTqzIKubAQcJKu2KCKAru6es482U5RT5fP1EXCPtlXpiK7PR0On/kpQKI4fRKkzpZBQ==", "dev": true, "requires": { "@hapi/hoek": "8.x.x" - }, - "dependencies": { - "@hapi/hoek": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.1.0.tgz", - "integrity": "sha512-b1J4jxYnW+n6lC91V6Pqg9imP9BZq0HNCeM+3sbXg05rQsE9cGYrKFpZjyztVesGmNRE6R+QaEoWGATeIiUVjA==", - "dev": true - } } }, "@jest/console": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", - "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", "dev": true, "requires": { - "@jest/source-map": "^24.3.0", + "@jest/source-map": "^24.9.0", "chalk": "^2.0.1", "slash": "^2.0.0" } }, "@jest/core": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.8.0.tgz", - "integrity": "sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", "dev": true, "requires": { "@jest/console": "^24.7.1", - "@jest/reporters": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/transform": "^24.8.0", - "@jest/types": "^24.8.0", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", "exit": "^0.1.2", "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.8.0", - "jest-config": "^24.8.0", - "jest-haste-map": "^24.8.0", - "jest-message-util": "^24.8.0", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", "jest-regex-util": "^24.3.0", - "jest-resolve-dependencies": "^24.8.0", - "jest-runner": "^24.8.0", - "jest-runtime": "^24.8.0", - "jest-snapshot": "^24.8.0", - "jest-util": "^24.8.0", - "jest-validate": "^24.8.0", - "jest-watcher": "^24.8.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", "micromatch": "^3.1.10", "p-each-series": "^1.0.0", - "pirates": "^4.0.1", "realpath-native": "^1.1.0", "rimraf": "^2.5.4", + "slash": "^2.0.0", "strip-ansi": "^5.0.0" }, "dependencies": { @@ -1271,38 +1264,38 @@ } }, "@jest/environment": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz", - "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", "dev": true, "requires": { - "@jest/fake-timers": "^24.8.0", - "@jest/transform": "^24.8.0", - "@jest/types": "^24.8.0", - "jest-mock": "^24.8.0" + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" } }, "@jest/fake-timers": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz", - "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", "dev": true, "requires": { - "@jest/types": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-mock": "^24.8.0" + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" } }, "@jest/reporters": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.8.0.tgz", - "integrity": "sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", "dev": true, "requires": { - "@jest/environment": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/transform": "^24.8.0", - "@jest/types": "^24.8.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", "chalk": "^2.0.1", "exit": "^0.1.2", "glob": "^7.1.2", @@ -1310,13 +1303,13 @@ "istanbul-lib-instrument": "^3.0.1", "istanbul-lib-report": "^2.0.4", "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.1.1", - "jest-haste-map": "^24.8.0", - "jest-resolve": "^24.8.0", - "jest-runtime": "^24.8.0", - "jest-util": "^24.8.0", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", "jest-worker": "^24.6.0", - "node-notifier": "^5.2.1", + "node-notifier": "^5.4.2", "slash": "^2.0.0", "source-map": "^0.6.0", "string-length": "^2.0.0" @@ -1331,9 +1324,9 @@ } }, "@jest/source-map": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz", - "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, "requires": { "callsites": "^3.0.0", @@ -1350,45 +1343,46 @@ } }, "@jest/test-result": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz", - "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/types": "^24.8.0", + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", "@types/istanbul-lib-coverage": "^2.0.0" } }, "@jest/test-sequencer": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz", - "integrity": "sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", "dev": true, "requires": { - "@jest/test-result": "^24.8.0", - "jest-haste-map": "^24.8.0", - "jest-runner": "^24.8.0", - "jest-runtime": "^24.8.0" + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" } }, "@jest/transform": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz", - "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "babel-plugin-istanbul": "^5.1.0", "chalk": "^2.0.1", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.8.0", - "jest-regex-util": "^24.3.0", - "jest-util": "^24.8.0", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", "micromatch": "^3.1.10", + "pirates": "^4.0.1", "realpath-native": "^1.1.0", "slash": "^2.0.0", "source-map": "^0.6.1", @@ -1404,14 +1398,14 @@ } }, "@jest/types": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", - "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^12.0.9" + "@types/yargs": "^13.0.0" } }, "@mrmlnc/readdir-enhanced": { @@ -1602,10 +1596,13 @@ } }, "@types/yargs": { - "version": "12.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", - "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", - "dev": true + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", + "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } }, "@types/yargs-parser": { "version": "13.0.0", @@ -1920,6 +1917,16 @@ "@xtuc/long": "4.2.2" } }, + "@wordpress/a11y": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-2.5.0.tgz", + "integrity": "sha512-KY+Z0NFQUH6cNbFnP9P58fTCLS93zBz+SIEDA633yG46u1NHOBfWDS4lIrx52fihFdaakSTS0f2OH6yeRb41HQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@wordpress/dom-ready": "^2.5.0" + } + }, "@wordpress/api-fetch": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.4.0.tgz", @@ -1944,9 +1951,9 @@ } }, "@wordpress/autop": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-2.4.0.tgz", - "integrity": "sha512-QapmHuXN3daJpfBDVmKLAVIy97xmqoeBbAKT4sfhZGwR3NIv9fmiKrM8XKWSDAGAqNF1lYN2KkrFieXM7lDU4Q==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-2.5.0.tgz", + "integrity": "sha512-NPKxFo8trO0O2yGdszHD5696d3hCxgAbKgdDhpGDJbC0N9Yd6+EIYwBwmlISODlZExyE1LcR/tDD7EPjJR4w7w==", "dev": true, "requires": { "@babel/runtime": "^7.4.4" @@ -1959,9 +1966,9 @@ "dev": true }, "@wordpress/babel-preset-default": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-4.4.0.tgz", - "integrity": "sha512-cFdzlVSYe7M4lKojBxG/TaoRAL6r/UZhvFN7R7e49qlrNlB20YTGSkpKffO1h158mlPuunFIIt+425w/xQE8/g==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/babel-preset-default/-/babel-preset-default-4.5.0.tgz", + "integrity": "sha512-LkRtmVAsFP/litK323Y6Yk1/3GujyhBykToG3iCPbRoA4elGybCaj9AqXgSS1gIxxRYOTFf8Gt0LaF+xShIGuQ==", "dev": true, "requires": { "@babel/core": "^7.4.4", @@ -1973,14 +1980,22 @@ "@babel/runtime": "^7.4.4", "@wordpress/babel-plugin-import-jsx-pragma": "^2.3.0", "@wordpress/browserslist-config": "^2.6.0", + "@wordpress/element": "^2.7.0", "core-js": "^3.1.4" }, "dependencies": { - "@wordpress/browserslist-config": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-2.6.0.tgz", - "integrity": "sha512-vRgzGoxhcNVChBP30XZlyK4w6r/9ZpO+Fi1dzmButp31lUEb1pT5WBxTIQl3HE0JZ9YTEJ00WWGO5sjGi5MHZA==", - "dev": true + "@wordpress/element": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.7.0.tgz", + "integrity": "sha512-wyGOSFucslwndsSU4VlO7Z67C4NszsESM21fDwLF3z/JUcZDbcTZLmEId2QysgYUYtX5sBk6OvoTe8f4FY+SKQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@wordpress/escape-html": "^1.5.0", + "lodash": "^4.17.14", + "react": "^16.8.4", + "react-dom": "^16.8.4" + } } } }, @@ -2161,49 +2176,46 @@ } }, "@wordpress/block-library": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-2.7.0.tgz", - "integrity": "sha512-roArvZV4IN7URvI+dHUsNyLWy7WUSmuwndGxVqev15hdv7aOGct4DINv+S6l4LM/PgYsbSOHgDujT4vie9zfmA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-library/-/block-library-2.8.0.tgz", + "integrity": "sha512-jaHin7ZW5Ani2WtYn3kmckFRKDEXDvyC1HRlcFlKZeZ14zUeBtwgLWkKUBImGqXqF2rbrk0AYl2wfGXHM7GEwA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/autop": "^2.4.0", + "@wordpress/a11y": "^2.5.0", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/autop": "^2.5.0", "@wordpress/blob": "^2.5.0", - "@wordpress/block-editor": "^3.0.0", - "@wordpress/blocks": "^6.5.0", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/core-data": "^2.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/editor": "^9.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/html-entities": "^2.5.0", + "@wordpress/block-editor": "^3.1.0", + "@wordpress/blocks": "^6.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/core-data": "^2.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/date": "^3.5.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/editor": "^9.6.0", + "@wordpress/element": "^2.7.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/server-side-render": "^1.1.0", - "@wordpress/viewport": "^2.6.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/rich-text": "^3.6.0", + "@wordpress/server-side-render": "^1.2.0", + "@wordpress/url": "^2.7.0", + "@wordpress/viewport": "^2.7.0", "classnames": "^2.2.5", "fast-average-color": "4.3.0", "lodash": "^4.17.14", "memize": "^1.0.5", + "moment": "^2.22.1", + "tinycolor2": "^1.4.1", "url": "^0.11.0" }, "dependencies": { - "@wordpress/a11y": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-2.5.0.tgz", - "integrity": "sha512-KY+Z0NFQUH6cNbFnP9P58fTCLS93zBz+SIEDA633yG46u1NHOBfWDS4lIrx52fihFdaakSTS0f2OH6yeRb41HQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/dom-ready": "^2.5.0" - } - }, "@wordpress/api-fetch": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.4.0.tgz", - "integrity": "sha512-aNLVIXlnn7RIEzbDcVFhyQfV60O0ggLQOCkHhMCW1Ya86Jlohp658TXe8wIjFhC2ugY239WeZIl1tgoRjqIr0A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.5.0.tgz", + "integrity": "sha512-EaI7T/M5goqZPp4YeKfQwsvDzmbu6YV+cbPi6y6MF3QoccpTWqkMG4nJHuoI1uCK9/QxXVRLhCRzLG54L4kcOg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -2212,68 +2224,108 @@ } }, "@wordpress/block-editor": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-3.0.0.tgz", - "integrity": "sha512-ooEBV8kf1mnShUNLYSAZNiAZNFDoy9Eg9wihtfSDzc89431iFeClIw49dYEy3GFn84MNOHiCqXWHD7Ew2RR8iQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-3.1.0.tgz", + "integrity": "sha512-ec3GiK4qgW1PAINs1nrTBL6UuG53rKBz0M9KLsPHd/GeKsBlyqb47bsyO+dHyeB0k9Hsp42RnLkSfZ4Yh/d7Ag==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/a11y": "^2.5.0", "@wordpress/blob": "^2.5.0", - "@wordpress/blocks": "^6.5.0", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/blocks": "^6.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/html-entities": "^2.5.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/rich-text": "^3.5.0", - "@wordpress/token-list": "^1.5.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/rich-text": "^3.6.0", + "@wordpress/token-list": "^1.6.0", "@wordpress/url": "^2.7.0", - "@wordpress/viewport": "^2.6.0", - "@wordpress/wordcount": "^2.5.0", + "@wordpress/viewport": "^2.7.0", + "@wordpress/wordcount": "^2.6.0", "classnames": "^2.2.5", + "diff": "^3.5.0", "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", "lodash": "^4.17.10", + "memize": "^1.0.5", + "react-autosize-textarea": "^3.0.2", "react-spring": "^8.0.19", "redux-multi": "^0.1.12", "refx": "^3.0.0", "rememo": "^3.0.0", - "tinycolor2": "^1.4.1" + "tinycolor2": "^1.4.1", + "traverse": "^0.6.6" + } + }, + "@wordpress/block-serialization-default-parser": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-3.4.0.tgz", + "integrity": "sha512-X2M5O41vBVAQVg62U7EzgcL0iMbjgeMXokp8kVkU/1j0aKrX0N4Xqaf4XACBK9R4lLYyT6vzmxx0/6zH3R1f1A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4" + } + }, + "@wordpress/blocks": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-6.6.0.tgz", + "integrity": "sha512-riBvLB7hPaRcX9sanPfc/sF9SGnf1EMyeQhgg2Jq7C9zUhajjmwLep9Jb9CxwkMVUGLDmsWehZ6GyZNwXdfgew==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@wordpress/autop": "^2.5.0", + "@wordpress/blob": "^2.5.0", + "@wordpress/block-serialization-default-parser": "^3.4.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", + "@wordpress/html-entities": "^2.5.0", + "@wordpress/i18n": "^3.6.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/shortcode": "^2.4.0", + "hpq": "^1.3.0", + "lodash": "^4.17.14", + "rememo": "^3.0.0", + "showdown": "^1.8.6", + "simple-html-tokenizer": "^0.5.7", + "tinycolor2": "^1.4.1", + "uuid": "^3.3.2" } }, "@wordpress/components": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.1.0.tgz", - "integrity": "sha512-V35ZyDIVadVQQhKB6IyGULdMfi+44KLL6K0FL2gVihLxHq1P0g3sC6kE26DmYNcYXYfhyGMZT440nkUi1jEo3A==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.2.0.tgz", + "integrity": "sha512-fde8bKDNcn9fhq48Mj2QyaTjrluYBK8A77P+MGmiU/x72FtMvj8/HdBOoDpmuGMApTc5oDAfAzNiYyDHIHzNqQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/a11y": "^2.5.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/rich-text": "^3.5.0", - "@wordpress/url": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/rich-text": "^3.6.0", "classnames": "^2.2.5", "clipboard": "^2.0.1", - "diff": "^3.5.0", "dom-scroll-into-view": "^1.2.1", "lodash": "^4.17.14", "memize": "^1.0.5", "moment": "^2.22.1", "mousetrap": "^1.6.2", - "re-resizable": "^5.0.1", - "react-click-outside": "^3.0.0", + "re-resizable": "^6.0.0", "react-dates": "^17.1.1", "react-spring": "^8.0.20", "rememo": "^3.0.0", @@ -2282,286 +2334,203 @@ } }, "@wordpress/core-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-2.5.0.tgz", - "integrity": "sha512-v29VwTOvMvpiebkMDu6r57LHPvIL9mcWKxyrxQUTglXd8Nv9irAoyRxAFRS64DGu8ZbksC5Bl4piiuya2UwUDQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-2.6.0.tgz", + "integrity": "sha512-gwkD8f5IYi2Y+NgfT78gbLkNXk0buKxKxTaqlTm5WNFtS+YGe8DeO/zHGwD4o6gZM4Tay3OJ6EhP/LyEMaPMHw==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/data": "^4.8.0", + "@wordpress/deprecated": "^2.6.0", "@wordpress/url": "^2.7.0", "equivalent-key-map": "^0.2.2", "lodash": "^4.17.14", "rememo": "^3.0.0" } }, - "@wordpress/data-controls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-1.1.0.tgz", - "integrity": "sha512-uJSrOKdBBYJjLwES4AsfPRyh/GWVFZhf0e/znkx+4yB2T9M1UW156vMq7wuX7xkPiEwdu1j9hZItii9aVrnCmQ==", + "@wordpress/data": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-4.8.0.tgz", + "integrity": "sha512-WUdE6C7CfG6gcQw2nZ+VQ3EAB5alga97BjqTdvuAAm6BLFLwd5LDn4maQYLPFrQp27CyzjDy6KzKARHDrUJBOg==", "dev": true, "requires": { - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/data": "^4.7.0" + "@babel/runtime": "^7.4.4", + "@wordpress/compose": "^3.6.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/priority-queue": "^1.3.0", + "@wordpress/redux-routine": "^3.6.0", + "equivalent-key-map": "^0.2.2", + "is-promise": "^2.1.0", + "lodash": "^4.17.14", + "redux": "^4.0.0", + "turbo-combine-reducers": "^1.0.2" } }, - "@wordpress/deprecated": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.5.0.tgz", - "integrity": "sha512-bryhXZZ9dZ8DlMQ2liDAV3CQV7wEiftJ9UAOB7X32X4MPZoPqvk3IGiKgHFs3/pEr4Ums0CCckgUlnY7AI+hxQ==", + "@wordpress/data-controls": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-1.2.0.tgz", + "integrity": "sha512-J2VZptZgwzll5fipgzBKVqnlu2g5SrJZRSPDhVQ7LuJ5HdqRwaHdrA6GN+dDw5OZ6euA3RZ+THbWeXnDl/a26Q==", "dev": true, "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/hooks": "^2.5.0" + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/data": "^4.8.0" } }, - "@wordpress/dom": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-2.4.0.tgz", - "integrity": "sha512-8hcHi5iHgi1Z/1G6ti04bgsiYBDNlR05X7MiosjwP8U/iTmcRwKrmtA1X6qzsMlOgvJ3MetoLqGZb3lCjLtXmw==", + "@wordpress/deprecated": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.6.0.tgz", + "integrity": "sha512-DLYEhsG04V8qfm+k2hrHPExiC31+dgUGZBhIUq8ScvCIkqYOiWAgP0zTOjRgSuNk8Yp0/6XqSWbkXMC4ZQX03w==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "lodash": "^4.17.14" + "@wordpress/hooks": "^2.6.0" } }, "@wordpress/editor": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-9.5.0.tgz", - "integrity": "sha512-9TrRwfmPaqUOyLcTYnl/qqOkYesfFGN2OSLEqbLJIyA961xkRLDz5975MAvGZakHDWwkSv3bxS2ogSoJcr8FOg==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-9.6.0.tgz", + "integrity": "sha512-Cl/+wNkyaqq2B6ztZfcZ3yrkIUF/wO1R0ahDKoNr4PgQ+xUGHy/Rv7OuoqWUucgfrbm9p8Qb2wkzMiP6N4Mjkg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/blob": "^2.5.0", - "@wordpress/block-editor": "^3.0.0", - "@wordpress/blocks": "^6.5.0", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/core-data": "^2.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/data-controls": "^1.1.0", - "@wordpress/date": "^3.4.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/autop": "^2.5.0", + "@wordpress/block-editor": "^3.1.0", + "@wordpress/blocks": "^6.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/core-data": "^2.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/data-controls": "^1.2.0", + "@wordpress/date": "^3.5.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/html-entities": "^2.5.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/media-utils": "^1.0.0", - "@wordpress/notices": "^1.6.0", - "@wordpress/nux": "^3.5.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/media-utils": "^1.1.0", + "@wordpress/notices": "^1.7.0", + "@wordpress/nux": "^3.6.0", + "@wordpress/rich-text": "^3.6.0", + "@wordpress/server-side-render": "^1.2.0", "@wordpress/url": "^2.7.0", - "@wordpress/viewport": "^2.6.0", - "@wordpress/wordcount": "^2.5.0", + "@wordpress/viewport": "^2.7.0", + "@wordpress/wordcount": "^2.6.0", "classnames": "^2.2.5", - "inherits": "^2.0.3", "lodash": "^4.17.14", "memize": "^1.0.5", "react-autosize-textarea": "^3.0.2", "redux-optimist": "^1.0.0", "refx": "^3.0.0", - "rememo": "^3.0.0", - "traverse": "^0.6.6" + "rememo": "^3.0.0" } }, - "@wordpress/element": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.6.0.tgz", - "integrity": "sha512-t7BgD+gRvC0gOubElsiXhp0H5Dq1yAu2/J8aeok4Fcg1anUXcmjo9M7uL/C17e1AbDVIFQvCyhgOg9ltc/rgEA==", + "@wordpress/media-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-1.1.0.tgz", + "integrity": "sha512-xhO1fEj7Qwa2QyIW4PHKey7hO66jLF1skKDgWYz77wQLAvb2u7mKzQPQf6K5Y2jS+BYEqzXuyf0S7sWA9z1jnA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/escape-html": "^1.5.0", - "lodash": "^4.17.14", - "react": "^16.8.4", - "react-dom": "^16.8.4" - } - }, - "@wordpress/escape-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-1.5.0.tgz", - "integrity": "sha512-9jGwPbpdJ309EP4Acf6/zwHWeuYi0Bi5RAZx9q+BIYC7bjxLs3oFDS5QkEAi2mzrVAhIz+BbEWBGRg70U1RLlA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/hooks": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-2.5.0.tgz", - "integrity": "sha512-+nsYv5AdX7Oj9gVHvtDIQSE9gntrJwA5FpXSEVlZ2u2E5lhjGQS+a+IrRhxZL/7f2eKby5zvQV6vYCrqMtKxYg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/blob": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/i18n": "^3.6.0", + "lodash": "^4.17.14" } }, - "@wordpress/html-entities": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-2.5.0.tgz", - "integrity": "sha512-7TKaJKkOX2Tas0OyXNPz1kA2my1Z804weBf2RsPLiNXm593JDsf6Em8z1TA4mXtn7FO2ZAKTj/3yRemKK4PhnA==", + "@wordpress/notices": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-1.7.0.tgz", + "integrity": "sha512-qX72CvX3Wjo1jS2/9il+Jtq7m4USVZPMqJY3CoL75F9zjEx9O3rM5wKJzADlUVZBxV8Iy5el0qzwIaWxxw982g==", "dev": true, "requires": { - "@babel/runtime": "^7.4.4" + "@babel/runtime": "^7.4.4", + "@wordpress/a11y": "^2.5.0", + "@wordpress/data": "^4.8.0", + "lodash": "^4.17.14" } }, - "@wordpress/i18n": { + "@wordpress/nux": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.6.0.tgz", - "integrity": "sha512-/fkc5OoUCrIyHAaBEKIsXKl+UWj2kKjquhMSSHu3eVqLv/WKrKAzypPPAZC9UXfdSVBY8MrORYLh7vUy9Ic3Vw==", + "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-3.6.0.tgz", + "integrity": "sha512-jfQGpEi7fll/DsR5ah/SumORJ96qe4qNDu2wNDal2v2R43UYuvhu2ZAdh2nyHaJKybQui6HSh7HteT7oCouwpg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "gettext-parser": "^1.3.1", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/element": "^2.7.0", + "@wordpress/i18n": "^3.6.0", "lodash": "^4.17.14", - "memize": "^1.0.5", - "sprintf-js": "^1.1.1", - "tannin": "^1.1.0" + "rememo": "^3.0.0" } }, - "@wordpress/is-shallow-equal": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.5.0.tgz", - "integrity": "sha512-6GjIDZlwcgLmnt1uexUgnIj3zbzCPCtqe5vTqmsQeexC4zCIzgFJgzilOuuW/4kdwF/XB3jex91L9EImc5HTcw==", + "@wordpress/redux-routine": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-3.6.0.tgz", + "integrity": "sha512-uZE6vA3XISS42aR2lx/5dUSPDXYLo1ETFPNzW1JN19NbwwpF/n2S1uUxICskNHe/Ku/bB8tZ+QRrd7AquyqhQQ==", "dev": true, "requires": { - "@babel/runtime": "^7.4.4" + "@babel/runtime": "^7.4.4", + "is-promise": "^2.1.0", + "lodash": "^4.17.14", + "rungen": "^0.3.2" } }, - "@wordpress/keycodes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-2.5.0.tgz", - "integrity": "sha512-4SMN3pmJnNBexpd3/6JB6gJw+wcahBaVZaeMcHyF+Uw7bKcG6hDkzEAN6dWFJuifpdxmvilDE4H5JS/Ex9C6sA==", + "@wordpress/server-side-render": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-1.2.0.tgz", + "integrity": "sha512-21XwmfTHnL1jxr0lWuLmv0Dc3UtK+EaQkTaow8+nMtDiWoWXHxQrS9HljEqTNvTOw2hFtdfbBjHZFsBDk3cdmA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/components": "^8.2.0", + "@wordpress/data": "^4.8.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", "@wordpress/i18n": "^3.6.0", + "@wordpress/url": "^2.7.0", "lodash": "^4.17.14" } }, - "@wordpress/media-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-1.0.0.tgz", - "integrity": "sha512-HjleyNFc+toqeznm8KnR/JhAfDki08FhxZj3/3uksxA4HSJ3Qq6cNc46GlxCCNy7cGhSAsmYrATEsbq3s4IhAA==", + "@wordpress/token-list": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-1.6.0.tgz", + "integrity": "sha512-bZRqpiy1fJgLLjEL7AzQ12GctzSOQRndloNW5vxJB+v/vJbKw2LxTXSeidCHT5ur/zuGgVI27KjmHG4pkFE9Tg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/blob": "^2.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/i18n": "^3.6.0", "lodash": "^4.17.14" } }, - "@wordpress/notices": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-1.6.0.tgz", - "integrity": "sha512-CXJUHye/qGJo3MF3YC/AwKrFz8X5zEuaD6I1pOoOVVxpLZNMDgA2QqEbxb7X66bedBrh9akFYoNdGwS11KSsKg==", + "@wordpress/viewport": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-2.7.0.tgz", + "integrity": "sha512-3aep6FzeWmOznJm8iqgM0GT/cQ/6n6Zc2pk15SNrAwpnWRydfCKWlLeWRIJ/qCDQip14LPk7VXP6X48EMaZuaA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/a11y": "^2.5.0", - "@wordpress/data": "^4.7.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", "lodash": "^4.17.14" } }, - "@wordpress/nux": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-3.5.0.tgz", - "integrity": "sha512-PJJweT8/cNQvaFlrf8+jgntHouSu3Gf/OH8ZlICuF73W5Om9M+1Or4eaCS5wGjV1G014dxQBR/S2ydEio37NOw==", + "@wordpress/wordcount": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-2.6.0.tgz", + "integrity": "sha512-WC7/+10EtwzxZYMPBhSKvchTVsPq/BLoJlmGm0z/1lQ1HhA7CjbZ1OMFDtaxoWBPg+XUTA2Eo75HHwHHzxmlyg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/element": "^2.6.0", - "@wordpress/i18n": "^3.6.0", - "lodash": "^4.17.14", - "rememo": "^3.0.0" - } - }, - "@wordpress/rich-text": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-3.5.0.tgz", - "integrity": "sha512-2Pi56SGcao0M0OjZtpwdIyYIXganIDg054InPpdE7zeJRUxf8gKvTGSXA2bYLdDJC0RgCLTtWp+45ItV6byZDg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/escape-html": "^1.5.0", - "@wordpress/hooks": "^2.5.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "classnames": "^2.2.5", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "rememo": "^3.0.0" - } - }, - "@wordpress/server-side-render": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-1.1.0.tgz", - "integrity": "sha512-bSRHXfJozVzZSbkDSmhfBO/EuwebSLNvuBi/S0XrPA7lIJgqysZVPjSd7Z21qMnlKasF1N21lL7Dn1z2W/sMVQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/components": "^8.1.0", - "@wordpress/data": "^4.7.0", - "@wordpress/element": "^2.6.0", - "@wordpress/i18n": "^3.6.0", - "@wordpress/url": "^2.7.0", - "lodash": "^4.17.14" - } - }, - "@wordpress/token-list": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-1.5.0.tgz", - "integrity": "sha512-JamANQZLdv2WgmPd0ZumjzmzPoPjbZTWef2W2kuvNHvoLNO9yVulR754qdR/wGPBYEf5sDC3E2D3Vb/zgVEw7A==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "lodash": "^4.17.14" - } - }, - "@wordpress/url": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-2.7.0.tgz", - "integrity": "sha512-W1KEyllal8YWbLMyqfbPw7pQzVsJh73RQyqElrPwZ84TPeH/1JilKVMgKb2RXgJw8q8I+gZIXi6GmVY0+WNAxg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "qs": "^6.5.2" - } - }, - "@wordpress/viewport": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-2.6.0.tgz", - "integrity": "sha512-mnUu/SbwrW949AgOODDFLcbLUM/Qhlbi0qZ4JN5c/nOEukru5NRuktvyPPzcd9wWAeNVlqTSpq6E8ES+65ureg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/element": "^2.6.0", - "lodash": "^4.17.14" - } - }, - "@wordpress/wordcount": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-2.5.0.tgz", - "integrity": "sha512-Du/O50ZBpl5Pq/MevUZHQg0FBpT6v/SRhSV8lF5ByjZfXelUcQGN+gQ6RmNdasQ33KVPmspdCQHnQ+sThm4/iA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "lodash": "^4.17.14" + "lodash": "^4.17.14" } }, "dom-scroll-into-view": { @@ -2571,9 +2540,9 @@ "dev": true }, "re-resizable": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-5.0.1.tgz", - "integrity": "sha512-Iy8v5li7bhNBDxCN1DbA4l6G2Hk8NCZtcExoI1D+5pfvKyQcH8LH2P5h3DGoEfHhs0uyyRC1Qx8bHBomfrmxgA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.0.0.tgz", + "integrity": "sha512-RTrnhbGgYyZ4hTc6db4JeMnRfmloEPWtuYaXZEa2PRaEC4mreWNFnZtMVsHil3z3iX+WchD+da8BLlTJBcstMA==", "dev": true, "requires": { "fast-memoize": "^2.5.1" @@ -2582,41 +2551,32 @@ } }, "@wordpress/block-serialization-default-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-3.3.0.tgz", - "integrity": "sha512-fTUS/LEvvwyMcy1VvPl4I8c49GrmtFz5/5h9peaRJdk+jCFD0OsXhpXN1bdHC+0CAoJRz5j8Nf0k8FdFqj6uMg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-3.4.0.tgz", + "integrity": "sha512-X2M5O41vBVAQVg62U7EzgcL0iMbjgeMXokp8kVkU/1j0aKrX0N4Xqaf4XACBK9R4lLYyT6vzmxx0/6zH3R1f1A==", "dev": true, "requires": { "@babel/runtime": "^7.4.4" } }, - "@wordpress/block-serialization-spec-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-spec-parser/-/block-serialization-spec-parser-3.2.0.tgz", - "integrity": "sha512-Qce6P7hBI4PBb1nqzJHcyQ4IMa5i0weBDmfGrDNE1EHoJJZ4zfBnzkUqVVnYNDH5al896y6OzLcQoEKk6SDW9Q==", - "dev": true, - "requires": { - "pegjs": "^0.10.0" - } - }, "@wordpress/blocks": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-6.5.0.tgz", - "integrity": "sha512-0luBvWl8IvQwBkbKLuKg6enBvumxwVexR7gIQ6M9CaptUuVNmTheJIdg1EUUft/srRGyEwsQICDk/D9Pmx6nNw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-6.6.0.tgz", + "integrity": "sha512-riBvLB7hPaRcX9sanPfc/sF9SGnf1EMyeQhgg2Jq7C9zUhajjmwLep9Jb9CxwkMVUGLDmsWehZ6GyZNwXdfgew==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/autop": "^2.4.0", + "@wordpress/autop": "^2.5.0", "@wordpress/blob": "^2.5.0", - "@wordpress/block-serialization-default-parser": "^3.3.0", - "@wordpress/block-serialization-spec-parser": "^3.2.0", - "@wordpress/data": "^4.7.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/block-serialization-default-parser": "^3.4.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/html-entities": "^2.5.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", + "@wordpress/is-shallow-equal": "^1.6.0", "@wordpress/shortcode": "^2.4.0", "hpq": "^1.3.0", "lodash": "^4.17.14", @@ -2625,161 +2585,6 @@ "simple-html-tokenizer": "^0.5.7", "tinycolor2": "^1.4.1", "uuid": "^3.3.2" - }, - "dependencies": { - "@wordpress/autop": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-2.4.0.tgz", - "integrity": "sha512-QapmHuXN3daJpfBDVmKLAVIy97xmqoeBbAKT4sfhZGwR3NIv9fmiKrM8XKWSDAGAqNF1lYN2KkrFieXM7lDU4Q==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/blob": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-2.5.0.tgz", - "integrity": "sha512-Eze4O8XivI8Xw4ol3l2TIPUk+K/FVT3GDOuYnwykNXKf19AwOrc51rfX7bqKqonsoGpEQ3TZTIsMfj6+l4k95g==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/compose": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-3.5.0.tgz", - "integrity": "sha512-X9Qe7gq5+SNvT5yZXSEEgEz5UwUwYh52SBe8WlW59/t182NBBUy9FICEnmx7DRjMugZcSRDwFX39L6tuwo7cnA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/element": "^2.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "lodash": "^4.17.14" - } - }, - "@wordpress/data": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-4.7.0.tgz", - "integrity": "sha512-6ytvrcvg6otalvFNA26gnHv0GQkQT0h9/a780IKl0wyUqAYdKbn1J52CcJWopyfZ53HDq816NCZng1a4tWxHjQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/priority-queue": "^1.3.0", - "@wordpress/redux-routine": "^3.5.0", - "equivalent-key-map": "^0.2.2", - "is-promise": "^2.1.0", - "lodash": "^4.17.14", - "redux": "^4.0.0", - "turbo-combine-reducers": "^1.0.2" - } - }, - "@wordpress/deprecated": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.5.0.tgz", - "integrity": "sha512-bryhXZZ9dZ8DlMQ2liDAV3CQV7wEiftJ9UAOB7X32X4MPZoPqvk3IGiKgHFs3/pEr4Ums0CCckgUlnY7AI+hxQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/hooks": "^2.5.0" - } - }, - "@wordpress/dom": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-2.4.0.tgz", - "integrity": "sha512-8hcHi5iHgi1Z/1G6ti04bgsiYBDNlR05X7MiosjwP8U/iTmcRwKrmtA1X6qzsMlOgvJ3MetoLqGZb3lCjLtXmw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "lodash": "^4.17.14" - } - }, - "@wordpress/element": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.6.0.tgz", - "integrity": "sha512-t7BgD+gRvC0gOubElsiXhp0H5Dq1yAu2/J8aeok4Fcg1anUXcmjo9M7uL/C17e1AbDVIFQvCyhgOg9ltc/rgEA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/escape-html": "^1.5.0", - "lodash": "^4.17.14", - "react": "^16.8.4", - "react-dom": "^16.8.4" - } - }, - "@wordpress/escape-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-1.5.0.tgz", - "integrity": "sha512-9jGwPbpdJ309EP4Acf6/zwHWeuYi0Bi5RAZx9q+BIYC7bjxLs3oFDS5QkEAi2mzrVAhIz+BbEWBGRg70U1RLlA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/hooks": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-2.5.0.tgz", - "integrity": "sha512-+nsYv5AdX7Oj9gVHvtDIQSE9gntrJwA5FpXSEVlZ2u2E5lhjGQS+a+IrRhxZL/7f2eKby5zvQV6vYCrqMtKxYg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/html-entities": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-2.5.0.tgz", - "integrity": "sha512-7TKaJKkOX2Tas0OyXNPz1kA2my1Z804weBf2RsPLiNXm593JDsf6Em8z1TA4mXtn7FO2ZAKTj/3yRemKK4PhnA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/i18n": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.6.0.tgz", - "integrity": "sha512-/fkc5OoUCrIyHAaBEKIsXKl+UWj2kKjquhMSSHu3eVqLv/WKrKAzypPPAZC9UXfdSVBY8MrORYLh7vUy9Ic3Vw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "sprintf-js": "^1.1.1", - "tannin": "^1.1.0" - } - }, - "@wordpress/is-shallow-equal": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.5.0.tgz", - "integrity": "sha512-6GjIDZlwcgLmnt1uexUgnIj3zbzCPCtqe5vTqmsQeexC4zCIzgFJgzilOuuW/4kdwF/XB3jex91L9EImc5HTcw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/priority-queue": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@wordpress/priority-queue/-/priority-queue-1.3.0.tgz", - "integrity": "sha512-HlhHZUCnKW56b2KFg2cZcn6fnGdi6mrmfOn2lE3cBOibjQLYfOY3pe3TCd+AxS4GdfkgXFA7BHfAinaWCBpAyg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/redux-routine": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-3.5.0.tgz", - "integrity": "sha512-fssGjVcXlNFbAIjv6VhCWZYgsv51sugxxCgxAqgSIexsDVnOphDODo5V5bhcgwiZeL3/n5rzqvFQ7Dv4agvc/A==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "is-promise": "^2.1.0", - "rungen": "^0.3.2" - } - } } }, "@wordpress/browserslist-config": { @@ -2789,32 +2594,30 @@ "dev": true }, "@wordpress/components": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.1.0.tgz", - "integrity": "sha512-V35ZyDIVadVQQhKB6IyGULdMfi+44KLL6K0FL2gVihLxHq1P0g3sC6kE26DmYNcYXYfhyGMZT440nkUi1jEo3A==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.2.0.tgz", + "integrity": "sha512-fde8bKDNcn9fhq48Mj2QyaTjrluYBK8A77P+MGmiU/x72FtMvj8/HdBOoDpmuGMApTc5oDAfAzNiYyDHIHzNqQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/a11y": "^2.5.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/rich-text": "^3.5.0", - "@wordpress/url": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/rich-text": "^3.6.0", "classnames": "^2.2.5", "clipboard": "^2.0.1", - "diff": "^3.5.0", "dom-scroll-into-view": "^1.2.1", "lodash": "^4.17.14", "memize": "^1.0.5", "moment": "^2.22.1", "mousetrap": "^1.6.2", - "re-resizable": "^5.0.1", - "react-click-outside": "^3.0.0", + "re-resizable": "^6.0.0", "react-dates": "^17.1.1", "react-spring": "^8.0.20", "rememo": "^3.0.0", @@ -2822,74 +2625,14 @@ "uuid": "^3.3.2" }, "dependencies": { - "@wordpress/a11y": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-2.5.0.tgz", - "integrity": "sha512-KY+Z0NFQUH6cNbFnP9P58fTCLS93zBz+SIEDA633yG46u1NHOBfWDS4lIrx52fihFdaakSTS0f2OH6yeRb41HQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/dom-ready": "^2.5.0" - } - }, - "@wordpress/dom": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-2.4.0.tgz", - "integrity": "sha512-8hcHi5iHgi1Z/1G6ti04bgsiYBDNlR05X7MiosjwP8U/iTmcRwKrmtA1X6qzsMlOgvJ3MetoLqGZb3lCjLtXmw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "lodash": "^4.17.14" - } - }, - "@wordpress/escape-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-1.5.0.tgz", - "integrity": "sha512-9jGwPbpdJ309EP4Acf6/zwHWeuYi0Bi5RAZx9q+BIYC7bjxLs3oFDS5QkEAi2mzrVAhIz+BbEWBGRg70U1RLlA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/is-shallow-equal": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.5.0.tgz", - "integrity": "sha512-6GjIDZlwcgLmnt1uexUgnIj3zbzCPCtqe5vTqmsQeexC4zCIzgFJgzilOuuW/4kdwF/XB3jex91L9EImc5HTcw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/rich-text": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-3.5.0.tgz", - "integrity": "sha512-2Pi56SGcao0M0OjZtpwdIyYIXganIDg054InPpdE7zeJRUxf8gKvTGSXA2bYLdDJC0RgCLTtWp+45ItV6byZDg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/escape-html": "^1.5.0", - "@wordpress/hooks": "^2.5.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "classnames": "^2.2.5", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "rememo": "^3.0.0" - } - }, - "@wordpress/url": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-2.7.0.tgz", - "integrity": "sha512-W1KEyllal8YWbLMyqfbPw7pQzVsJh73RQyqElrPwZ84TPeH/1JilKVMgKb2RXgJw8q8I+gZIXi6GmVY0+WNAxg==", + "@wordpress/deprecated": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.6.0.tgz", + "integrity": "sha512-DLYEhsG04V8qfm+k2hrHPExiC31+dgUGZBhIUq8ScvCIkqYOiWAgP0zTOjRgSuNk8Yp0/6XqSWbkXMC4ZQX03w==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "qs": "^6.5.2" + "@wordpress/hooks": "^2.6.0" } }, "dom-scroll-into-view": { @@ -2901,21 +2644,21 @@ } }, "@wordpress/compose": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-3.5.0.tgz", - "integrity": "sha512-X9Qe7gq5+SNvT5yZXSEEgEz5UwUwYh52SBe8WlW59/t182NBBUy9FICEnmx7DRjMugZcSRDwFX39L6tuwo7cnA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-3.6.0.tgz", + "integrity": "sha512-ixXGsj2aBizA4XiawR0n8+Ee2vmhmyGkd9Cy4LZs4aQFunDVXuVypxk74YQJstzJCUVMdvR8B5K8vrnh38QDFw==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/element": "^2.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", "lodash": "^4.17.14" }, "dependencies": { "@wordpress/element": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.6.0.tgz", - "integrity": "sha512-t7BgD+gRvC0gOubElsiXhp0H5Dq1yAu2/J8aeok4Fcg1anUXcmjo9M7uL/C17e1AbDVIFQvCyhgOg9ltc/rgEA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.7.0.tgz", + "integrity": "sha512-wyGOSFucslwndsSU4VlO7Z67C4NszsESM21fDwLF3z/JUcZDbcTZLmEId2QysgYUYtX5sBk6OvoTe8f4FY+SKQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -2925,19 +2668,10 @@ "react-dom": "^16.8.4" } }, - "@wordpress/escape-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-1.5.0.tgz", - "integrity": "sha512-9jGwPbpdJ309EP4Acf6/zwHWeuYi0Bi5RAZx9q+BIYC7bjxLs3oFDS5QkEAi2mzrVAhIz+BbEWBGRg70U1RLlA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, "@wordpress/is-shallow-equal": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.5.0.tgz", - "integrity": "sha512-6GjIDZlwcgLmnt1uexUgnIj3zbzCPCtqe5vTqmsQeexC4zCIzgFJgzilOuuW/4kdwF/XB3jex91L9EImc5HTcw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.6.0.tgz", + "integrity": "sha512-Yi3JvowB1+bpiKnx9OYv5Ni2zA/j8zJa5dTA5IuchOgdODRGlg9XAuC1Kl0Bd9nLmQsoU50TJYiAlffv0lUhzQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4" @@ -2946,15 +2680,15 @@ } }, "@wordpress/core-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-2.5.0.tgz", - "integrity": "sha512-v29VwTOvMvpiebkMDu6r57LHPvIL9mcWKxyrxQUTglXd8Nv9irAoyRxAFRS64DGu8ZbksC5Bl4piiuya2UwUDQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-2.6.0.tgz", + "integrity": "sha512-gwkD8f5IYi2Y+NgfT78gbLkNXk0buKxKxTaqlTm5WNFtS+YGe8DeO/zHGwD4o6gZM4Tay3OJ6EhP/LyEMaPMHw==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/data": "^4.8.0", + "@wordpress/deprecated": "^2.6.0", "@wordpress/url": "^2.7.0", "equivalent-key-map": "^0.2.2", "lodash": "^4.17.14", @@ -2962,55 +2696,41 @@ }, "dependencies": { "@wordpress/api-fetch": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.4.0.tgz", - "integrity": "sha512-aNLVIXlnn7RIEzbDcVFhyQfV60O0ggLQOCkHhMCW1Ya86Jlohp658TXe8wIjFhC2ugY239WeZIl1tgoRjqIr0A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.5.0.tgz", + "integrity": "sha512-EaI7T/M5goqZPp4YeKfQwsvDzmbu6YV+cbPi6y6MF3QoccpTWqkMG4nJHuoI1uCK9/QxXVRLhCRzLG54L4kcOg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/i18n": "^3.6.0", - "@wordpress/url": "^2.7.0" - } - }, - "@wordpress/i18n": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.6.0.tgz", - "integrity": "sha512-/fkc5OoUCrIyHAaBEKIsXKl+UWj2kKjquhMSSHu3eVqLv/WKrKAzypPPAZC9UXfdSVBY8MrORYLh7vUy9Ic3Vw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "sprintf-js": "^1.1.1", - "tannin": "^1.1.0" - } - }, - "@wordpress/url": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-2.7.0.tgz", - "integrity": "sha512-W1KEyllal8YWbLMyqfbPw7pQzVsJh73RQyqElrPwZ84TPeH/1JilKVMgKb2RXgJw8q8I+gZIXi6GmVY0+WNAxg==", + "@wordpress/url": "^2.7.0" + } + }, + "@wordpress/deprecated": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.6.0.tgz", + "integrity": "sha512-DLYEhsG04V8qfm+k2hrHPExiC31+dgUGZBhIUq8ScvCIkqYOiWAgP0zTOjRgSuNk8Yp0/6XqSWbkXMC4ZQX03w==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "qs": "^6.5.2" + "@wordpress/hooks": "^2.6.0" } } } }, "@wordpress/data": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-4.7.0.tgz", - "integrity": "sha512-6ytvrcvg6otalvFNA26gnHv0GQkQT0h9/a780IKl0wyUqAYdKbn1J52CcJWopyfZ53HDq816NCZng1a4tWxHjQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-4.8.0.tgz", + "integrity": "sha512-WUdE6C7CfG6gcQw2nZ+VQ3EAB5alga97BjqTdvuAAm6BLFLwd5LDn4maQYLPFrQp27CyzjDy6KzKARHDrUJBOg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", "@wordpress/priority-queue": "^1.3.0", - "@wordpress/redux-routine": "^3.5.0", + "@wordpress/redux-routine": "^3.6.0", "equivalent-key-map": "^0.2.2", "is-promise": "^2.1.0", "lodash": "^4.17.14", @@ -3018,121 +2738,45 @@ "turbo-combine-reducers": "^1.0.2" }, "dependencies": { - "@wordpress/compose": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-3.5.0.tgz", - "integrity": "sha512-X9Qe7gq5+SNvT5yZXSEEgEz5UwUwYh52SBe8WlW59/t182NBBUy9FICEnmx7DRjMugZcSRDwFX39L6tuwo7cnA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/element": "^2.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "lodash": "^4.17.14" - } - }, "@wordpress/deprecated": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.5.0.tgz", - "integrity": "sha512-bryhXZZ9dZ8DlMQ2liDAV3CQV7wEiftJ9UAOB7X32X4MPZoPqvk3IGiKgHFs3/pEr4Ums0CCckgUlnY7AI+hxQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/hooks": "^2.5.0" - } - }, - "@wordpress/element": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.6.0.tgz", - "integrity": "sha512-t7BgD+gRvC0gOubElsiXhp0H5Dq1yAu2/J8aeok4Fcg1anUXcmjo9M7uL/C17e1AbDVIFQvCyhgOg9ltc/rgEA==", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.6.0.tgz", + "integrity": "sha512-DLYEhsG04V8qfm+k2hrHPExiC31+dgUGZBhIUq8ScvCIkqYOiWAgP0zTOjRgSuNk8Yp0/6XqSWbkXMC4ZQX03w==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/escape-html": "^1.5.0", - "lodash": "^4.17.14", - "react": "^16.8.4", - "react-dom": "^16.8.4" - } - }, - "@wordpress/escape-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-1.5.0.tgz", - "integrity": "sha512-9jGwPbpdJ309EP4Acf6/zwHWeuYi0Bi5RAZx9q+BIYC7bjxLs3oFDS5QkEAi2mzrVAhIz+BbEWBGRg70U1RLlA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/hooks": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-2.5.0.tgz", - "integrity": "sha512-+nsYv5AdX7Oj9gVHvtDIQSE9gntrJwA5FpXSEVlZ2u2E5lhjGQS+a+IrRhxZL/7f2eKby5zvQV6vYCrqMtKxYg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/is-shallow-equal": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.5.0.tgz", - "integrity": "sha512-6GjIDZlwcgLmnt1uexUgnIj3zbzCPCtqe5vTqmsQeexC4zCIzgFJgzilOuuW/4kdwF/XB3jex91L9EImc5HTcw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" + "@wordpress/hooks": "^2.6.0" } } } }, "@wordpress/data-controls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-1.1.0.tgz", - "integrity": "sha512-uJSrOKdBBYJjLwES4AsfPRyh/GWVFZhf0e/znkx+4yB2T9M1UW156vMq7wuX7xkPiEwdu1j9hZItii9aVrnCmQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-1.2.0.tgz", + "integrity": "sha512-J2VZptZgwzll5fipgzBKVqnlu2g5SrJZRSPDhVQ7LuJ5HdqRwaHdrA6GN+dDw5OZ6euA3RZ+THbWeXnDl/a26Q==", "dev": true, "requires": { - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/data": "^4.7.0" + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/data": "^4.8.0" }, "dependencies": { "@wordpress/api-fetch": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.4.0.tgz", - "integrity": "sha512-aNLVIXlnn7RIEzbDcVFhyQfV60O0ggLQOCkHhMCW1Ya86Jlohp658TXe8wIjFhC2ugY239WeZIl1tgoRjqIr0A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.5.0.tgz", + "integrity": "sha512-EaI7T/M5goqZPp4YeKfQwsvDzmbu6YV+cbPi6y6MF3QoccpTWqkMG4nJHuoI1uCK9/QxXVRLhCRzLG54L4kcOg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/i18n": "^3.6.0", "@wordpress/url": "^2.7.0" } - }, - "@wordpress/i18n": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.6.0.tgz", - "integrity": "sha512-/fkc5OoUCrIyHAaBEKIsXKl+UWj2kKjquhMSSHu3eVqLv/WKrKAzypPPAZC9UXfdSVBY8MrORYLh7vUy9Ic3Vw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "sprintf-js": "^1.1.1", - "tannin": "^1.1.0" - } - }, - "@wordpress/url": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-2.7.0.tgz", - "integrity": "sha512-W1KEyllal8YWbLMyqfbPw7pQzVsJh73RQyqElrPwZ84TPeH/1JilKVMgKb2RXgJw8q8I+gZIXi6GmVY0+WNAxg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "qs": "^6.5.2" - } } } }, "@wordpress/date": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-3.4.0.tgz", - "integrity": "sha512-3rhgSs3KGdGy3m8LIuWe65bkU9zEnbZ2jT0GBtLXqP1yP4STkAcDuedOApbMONgMP7R8bo9KYrQQcOi6eZi5NA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-3.5.0.tgz", + "integrity": "sha512-eg3/o7Z0SgeXtPhJxMuxSQUk9Lx0GGgQptpnparsFzgW69KgibLmGuDqepEhfClhKLeIR3kDVf/m1HRPSosbRA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -3141,9 +2785,9 @@ } }, "@wordpress/dependency-extraction-webpack-plugin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-1.1.0.tgz", - "integrity": "sha512-tCyxy7hLzDdCHQ1xGPiMlE7fBp/pCuEum89gqzoiz2HQJld6F7BTNMo3XfTzxFO0SHh/C64yOZgBB8FvH+warQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-1.2.0.tgz", + "integrity": "sha512-+x0ID9r1cyXMCAoN8leM0Eo5IJ/iFW4+4y323dLcksP6PBoY78f8sJeSwTH058Ts9en7wvsRc8pdOza/gZHVpw==", "dev": true, "requires": { "webpack": "^4.8.3", @@ -3172,9 +2816,9 @@ } }, "@wordpress/dom": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-2.4.0.tgz", - "integrity": "sha512-8hcHi5iHgi1Z/1G6ti04bgsiYBDNlR05X7MiosjwP8U/iTmcRwKrmtA1X6qzsMlOgvJ3MetoLqGZb3lCjLtXmw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-2.5.0.tgz", + "integrity": "sha512-nJUskVX/0RIskGgQBCXRrMMMxJcZ1UwQlpDBMNVPwMD9KPw13YnzCTzR6QgUMvCYF4pDUmxVIP+ao7CQzAL9lg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -3191,99 +2835,69 @@ } }, "@wordpress/e2e-test-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-2.2.0.tgz", - "integrity": "sha512-7MKwyxJKzjz3vB6DgUK8dVkWAYfjicnb9a7T5x1vme1Oub4ZU3cxEawdMdWCe0nSjXQYgatfD1Eff32whWB+Gw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@wordpress/e2e-test-utils/-/e2e-test-utils-2.3.0.tgz", + "integrity": "sha512-TvMyqjg0ebEicTWqtid0h46qz8Q9ks87IBMVh4KGJmuyyj15A0LeGFc7lNRprMj/HI2bhighoFpZX/FFcNJEqg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/keycodes": "^2.5.0", + "@wordpress/keycodes": "^2.6.0", "@wordpress/url": "^2.7.0", "lodash": "^4.17.14", "node-fetch": "^1.7.3" }, "dependencies": { - "@wordpress/i18n": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.6.0.tgz", - "integrity": "sha512-/fkc5OoUCrIyHAaBEKIsXKl+UWj2kKjquhMSSHu3eVqLv/WKrKAzypPPAZC9UXfdSVBY8MrORYLh7vUy9Ic3Vw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "sprintf-js": "^1.1.1", - "tannin": "^1.1.0" - } - }, "@wordpress/keycodes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-2.5.0.tgz", - "integrity": "sha512-4SMN3pmJnNBexpd3/6JB6gJw+wcahBaVZaeMcHyF+Uw7bKcG6hDkzEAN6dWFJuifpdxmvilDE4H5JS/Ex9C6sA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-2.6.0.tgz", + "integrity": "sha512-wWCyom/dHMBb2hmNbuZym30/6QrvW2RvIbQNu1LHNZvVqehMOQLdVMUf525aLVJVQfp9wfer/fz5TjphW43txA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/i18n": "^3.6.0", "lodash": "^4.17.14" } - }, - "@wordpress/url": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-2.7.0.tgz", - "integrity": "sha512-W1KEyllal8YWbLMyqfbPw7pQzVsJh73RQyqElrPwZ84TPeH/1JilKVMgKb2RXgJw8q8I+gZIXi6GmVY0+WNAxg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "qs": "^6.5.2" - } } } }, "@wordpress/edit-post": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-3.6.0.tgz", - "integrity": "sha512-/sFQ8+Z76VlrZ+/PNT7QJKBL4S3JfBALf2L1tRRBfUrwIAXCjgavaTfYSNcyqv1kdshw03QyzaBMIOCfFKqDuA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/edit-post/-/edit-post-3.7.0.tgz", + "integrity": "sha512-L9NDDnBSINOQgjI6FS1I9gPTep4FSLFiCMApz31eCvJH046dDdxA3ClPztzTavKnjaJSXXQninNk1xHnZUUQyg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/a11y": "^2.5.0", - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/block-editor": "^3.0.0", - "@wordpress/block-library": "^2.7.0", - "@wordpress/blocks": "^6.5.0", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/core-data": "^2.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/editor": "^9.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/block-editor": "^3.1.0", + "@wordpress/block-library": "^2.8.0", + "@wordpress/blocks": "^6.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/core-data": "^2.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/editor": "^9.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/nux": "^3.5.0", - "@wordpress/plugins": "^2.5.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/media-utils": "^1.1.0", + "@wordpress/notices": "^1.7.0", + "@wordpress/nux": "^3.6.0", + "@wordpress/plugins": "^2.6.0", "@wordpress/url": "^2.7.0", - "@wordpress/viewport": "^2.6.0", + "@wordpress/viewport": "^2.7.0", "classnames": "^2.2.5", "lodash": "^4.17.14", - "refx": "^3.0.0" + "memize": "^1.0.5", + "refx": "^3.0.0", + "rememo": "^3.0.0" }, "dependencies": { - "@wordpress/a11y": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-2.5.0.tgz", - "integrity": "sha512-KY+Z0NFQUH6cNbFnP9P58fTCLS93zBz+SIEDA633yG46u1NHOBfWDS4lIrx52fihFdaakSTS0f2OH6yeRb41HQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/dom-ready": "^2.5.0" - } - }, "@wordpress/api-fetch": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.4.0.tgz", - "integrity": "sha512-aNLVIXlnn7RIEzbDcVFhyQfV60O0ggLQOCkHhMCW1Ya86Jlohp658TXe8wIjFhC2ugY239WeZIl1tgoRjqIr0A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.5.0.tgz", + "integrity": "sha512-EaI7T/M5goqZPp4YeKfQwsvDzmbu6YV+cbPi6y6MF3QoccpTWqkMG4nJHuoI1uCK9/QxXVRLhCRzLG54L4kcOg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -3292,349 +2906,322 @@ } }, "@wordpress/block-editor": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-3.0.0.tgz", - "integrity": "sha512-ooEBV8kf1mnShUNLYSAZNiAZNFDoy9Eg9wihtfSDzc89431iFeClIw49dYEy3GFn84MNOHiCqXWHD7Ew2RR8iQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-3.1.0.tgz", + "integrity": "sha512-ec3GiK4qgW1PAINs1nrTBL6UuG53rKBz0M9KLsPHd/GeKsBlyqb47bsyO+dHyeB0k9Hsp42RnLkSfZ4Yh/d7Ag==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/a11y": "^2.5.0", "@wordpress/blob": "^2.5.0", - "@wordpress/blocks": "^6.5.0", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/blocks": "^6.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/html-entities": "^2.5.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/rich-text": "^3.5.0", - "@wordpress/token-list": "^1.5.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/rich-text": "^3.6.0", + "@wordpress/token-list": "^1.6.0", "@wordpress/url": "^2.7.0", - "@wordpress/viewport": "^2.6.0", - "@wordpress/wordcount": "^2.5.0", + "@wordpress/viewport": "^2.7.0", + "@wordpress/wordcount": "^2.6.0", "classnames": "^2.2.5", + "diff": "^3.5.0", "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", "lodash": "^4.17.10", + "memize": "^1.0.5", + "react-autosize-textarea": "^3.0.2", "react-spring": "^8.0.19", "redux-multi": "^0.1.12", "refx": "^3.0.0", "rememo": "^3.0.0", - "tinycolor2": "^1.4.1" - } - }, - "@wordpress/components": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.1.0.tgz", - "integrity": "sha512-V35ZyDIVadVQQhKB6IyGULdMfi+44KLL6K0FL2gVihLxHq1P0g3sC6kE26DmYNcYXYfhyGMZT440nkUi1jEo3A==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/a11y": "^2.5.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", - "@wordpress/i18n": "^3.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/rich-text": "^3.5.0", - "@wordpress/url": "^2.7.0", - "classnames": "^2.2.5", - "clipboard": "^2.0.1", - "diff": "^3.5.0", - "dom-scroll-into-view": "^1.2.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "moment": "^2.22.1", - "mousetrap": "^1.6.2", - "re-resizable": "^5.0.1", - "react-click-outside": "^3.0.0", - "react-dates": "^17.1.1", - "react-spring": "^8.0.20", - "rememo": "^3.0.0", "tinycolor2": "^1.4.1", - "uuid": "^3.3.2" - } - }, - "@wordpress/core-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-2.5.0.tgz", - "integrity": "sha512-v29VwTOvMvpiebkMDu6r57LHPvIL9mcWKxyrxQUTglXd8Nv9irAoyRxAFRS64DGu8ZbksC5Bl4piiuya2UwUDQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/url": "^2.7.0", - "equivalent-key-map": "^0.2.2", - "lodash": "^4.17.14", - "rememo": "^3.0.0" - } - }, - "@wordpress/data-controls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-1.1.0.tgz", - "integrity": "sha512-uJSrOKdBBYJjLwES4AsfPRyh/GWVFZhf0e/znkx+4yB2T9M1UW156vMq7wuX7xkPiEwdu1j9hZItii9aVrnCmQ==", - "dev": true, - "requires": { - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/data": "^4.7.0" - } - }, - "@wordpress/deprecated": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.5.0.tgz", - "integrity": "sha512-bryhXZZ9dZ8DlMQ2liDAV3CQV7wEiftJ9UAOB7X32X4MPZoPqvk3IGiKgHFs3/pEr4Ums0CCckgUlnY7AI+hxQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/hooks": "^2.5.0" + "traverse": "^0.6.6" } }, - "@wordpress/dom": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-2.4.0.tgz", - "integrity": "sha512-8hcHi5iHgi1Z/1G6ti04bgsiYBDNlR05X7MiosjwP8U/iTmcRwKrmtA1X6qzsMlOgvJ3MetoLqGZb3lCjLtXmw==", + "@wordpress/block-serialization-default-parser": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-3.4.0.tgz", + "integrity": "sha512-X2M5O41vBVAQVg62U7EzgcL0iMbjgeMXokp8kVkU/1j0aKrX0N4Xqaf4XACBK9R4lLYyT6vzmxx0/6zH3R1f1A==", "dev": true, "requires": { - "@babel/runtime": "^7.4.4", - "lodash": "^4.17.14" + "@babel/runtime": "^7.4.4" } }, - "@wordpress/editor": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-9.5.0.tgz", - "integrity": "sha512-9TrRwfmPaqUOyLcTYnl/qqOkYesfFGN2OSLEqbLJIyA961xkRLDz5975MAvGZakHDWwkSv3bxS2ogSoJcr8FOg==", + "@wordpress/blocks": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-6.6.0.tgz", + "integrity": "sha512-riBvLB7hPaRcX9sanPfc/sF9SGnf1EMyeQhgg2Jq7C9zUhajjmwLep9Jb9CxwkMVUGLDmsWehZ6GyZNwXdfgew==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", + "@wordpress/autop": "^2.5.0", "@wordpress/blob": "^2.5.0", - "@wordpress/block-editor": "^3.0.0", - "@wordpress/blocks": "^6.5.0", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/core-data": "^2.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/data-controls": "^1.1.0", - "@wordpress/date": "^3.4.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/block-serialization-default-parser": "^3.4.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/html-entities": "^2.5.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/media-utils": "^1.0.0", - "@wordpress/notices": "^1.6.0", - "@wordpress/nux": "^3.5.0", - "@wordpress/url": "^2.7.0", - "@wordpress/viewport": "^2.6.0", - "@wordpress/wordcount": "^2.5.0", - "classnames": "^2.2.5", - "inherits": "^2.0.3", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/shortcode": "^2.4.0", + "hpq": "^1.3.0", "lodash": "^4.17.14", - "memize": "^1.0.5", - "react-autosize-textarea": "^3.0.2", - "redux-optimist": "^1.0.0", - "refx": "^3.0.0", "rememo": "^3.0.0", - "traverse": "^0.6.6" + "showdown": "^1.8.6", + "simple-html-tokenizer": "^0.5.7", + "tinycolor2": "^1.4.1", + "uuid": "^3.3.2" } }, - "@wordpress/element": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.6.0.tgz", - "integrity": "sha512-t7BgD+gRvC0gOubElsiXhp0H5Dq1yAu2/J8aeok4Fcg1anUXcmjo9M7uL/C17e1AbDVIFQvCyhgOg9ltc/rgEA==", + "@wordpress/components": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.2.0.tgz", + "integrity": "sha512-fde8bKDNcn9fhq48Mj2QyaTjrluYBK8A77P+MGmiU/x72FtMvj8/HdBOoDpmuGMApTc5oDAfAzNiYyDHIHzNqQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/escape-html": "^1.5.0", + "@wordpress/a11y": "^2.5.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", + "@wordpress/i18n": "^3.6.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/rich-text": "^3.6.0", + "classnames": "^2.2.5", + "clipboard": "^2.0.1", + "dom-scroll-into-view": "^1.2.1", "lodash": "^4.17.14", - "react": "^16.8.4", - "react-dom": "^16.8.4" + "memize": "^1.0.5", + "moment": "^2.22.1", + "mousetrap": "^1.6.2", + "re-resizable": "^6.0.0", + "react-dates": "^17.1.1", + "react-spring": "^8.0.20", + "rememo": "^3.0.0", + "tinycolor2": "^1.4.1", + "uuid": "^3.3.2" } }, - "@wordpress/escape-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-1.5.0.tgz", - "integrity": "sha512-9jGwPbpdJ309EP4Acf6/zwHWeuYi0Bi5RAZx9q+BIYC7bjxLs3oFDS5QkEAi2mzrVAhIz+BbEWBGRg70U1RLlA==", + "@wordpress/core-data": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/core-data/-/core-data-2.6.0.tgz", + "integrity": "sha512-gwkD8f5IYi2Y+NgfT78gbLkNXk0buKxKxTaqlTm5WNFtS+YGe8DeO/zHGwD4o6gZM4Tay3OJ6EhP/LyEMaPMHw==", "dev": true, "requires": { - "@babel/runtime": "^7.4.4" + "@babel/runtime": "^7.4.4", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/data": "^4.8.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/url": "^2.7.0", + "equivalent-key-map": "^0.2.2", + "lodash": "^4.17.14", + "rememo": "^3.0.0" } }, - "@wordpress/hooks": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-2.5.0.tgz", - "integrity": "sha512-+nsYv5AdX7Oj9gVHvtDIQSE9gntrJwA5FpXSEVlZ2u2E5lhjGQS+a+IrRhxZL/7f2eKby5zvQV6vYCrqMtKxYg==", + "@wordpress/data": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-4.8.0.tgz", + "integrity": "sha512-WUdE6C7CfG6gcQw2nZ+VQ3EAB5alga97BjqTdvuAAm6BLFLwd5LDn4maQYLPFrQp27CyzjDy6KzKARHDrUJBOg==", "dev": true, "requires": { - "@babel/runtime": "^7.4.4" + "@babel/runtime": "^7.4.4", + "@wordpress/compose": "^3.6.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/priority-queue": "^1.3.0", + "@wordpress/redux-routine": "^3.6.0", + "equivalent-key-map": "^0.2.2", + "is-promise": "^2.1.0", + "lodash": "^4.17.14", + "redux": "^4.0.0", + "turbo-combine-reducers": "^1.0.2" } }, - "@wordpress/html-entities": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-2.5.0.tgz", - "integrity": "sha512-7TKaJKkOX2Tas0OyXNPz1kA2my1Z804weBf2RsPLiNXm593JDsf6Em8z1TA4mXtn7FO2ZAKTj/3yRemKK4PhnA==", + "@wordpress/data-controls": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/data-controls/-/data-controls-1.2.0.tgz", + "integrity": "sha512-J2VZptZgwzll5fipgzBKVqnlu2g5SrJZRSPDhVQ7LuJ5HdqRwaHdrA6GN+dDw5OZ6euA3RZ+THbWeXnDl/a26Q==", "dev": true, "requires": { - "@babel/runtime": "^7.4.4" + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/data": "^4.8.0" } }, - "@wordpress/i18n": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.6.0.tgz", - "integrity": "sha512-/fkc5OoUCrIyHAaBEKIsXKl+UWj2kKjquhMSSHu3eVqLv/WKrKAzypPPAZC9UXfdSVBY8MrORYLh7vUy9Ic3Vw==", + "@wordpress/deprecated": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.6.0.tgz", + "integrity": "sha512-DLYEhsG04V8qfm+k2hrHPExiC31+dgUGZBhIUq8ScvCIkqYOiWAgP0zTOjRgSuNk8Yp0/6XqSWbkXMC4ZQX03w==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "sprintf-js": "^1.1.1", - "tannin": "^1.1.0" - } - }, - "@wordpress/is-shallow-equal": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.5.0.tgz", - "integrity": "sha512-6GjIDZlwcgLmnt1uexUgnIj3zbzCPCtqe5vTqmsQeexC4zCIzgFJgzilOuuW/4kdwF/XB3jex91L9EImc5HTcw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" + "@wordpress/hooks": "^2.6.0" } }, - "@wordpress/keycodes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-2.5.0.tgz", - "integrity": "sha512-4SMN3pmJnNBexpd3/6JB6gJw+wcahBaVZaeMcHyF+Uw7bKcG6hDkzEAN6dWFJuifpdxmvilDE4H5JS/Ex9C6sA==", + "@wordpress/editor": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-9.6.0.tgz", + "integrity": "sha512-Cl/+wNkyaqq2B6ztZfcZ3yrkIUF/wO1R0ahDKoNr4PgQ+xUGHy/Rv7OuoqWUucgfrbm9p8Qb2wkzMiP6N4Mjkg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/autop": "^2.5.0", + "@wordpress/block-editor": "^3.1.0", + "@wordpress/blocks": "^6.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/core-data": "^2.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/data-controls": "^1.2.0", + "@wordpress/date": "^3.5.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", + "@wordpress/html-entities": "^2.5.0", "@wordpress/i18n": "^3.6.0", - "lodash": "^4.17.14" + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/media-utils": "^1.1.0", + "@wordpress/notices": "^1.7.0", + "@wordpress/nux": "^3.6.0", + "@wordpress/rich-text": "^3.6.0", + "@wordpress/server-side-render": "^1.2.0", + "@wordpress/url": "^2.7.0", + "@wordpress/viewport": "^2.7.0", + "@wordpress/wordcount": "^2.6.0", + "classnames": "^2.2.5", + "lodash": "^4.17.14", + "memize": "^1.0.5", + "react-autosize-textarea": "^3.0.2", + "redux-optimist": "^1.0.0", + "refx": "^3.0.0", + "rememo": "^3.0.0" } }, "@wordpress/media-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-1.0.0.tgz", - "integrity": "sha512-HjleyNFc+toqeznm8KnR/JhAfDki08FhxZj3/3uksxA4HSJ3Qq6cNc46GlxCCNy7cGhSAsmYrATEsbq3s4IhAA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-1.1.0.tgz", + "integrity": "sha512-xhO1fEj7Qwa2QyIW4PHKey7hO66jLF1skKDgWYz77wQLAvb2u7mKzQPQf6K5Y2jS+BYEqzXuyf0S7sWA9z1jnA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", + "@wordpress/api-fetch": "^3.5.0", "@wordpress/blob": "^2.5.0", - "@wordpress/element": "^2.6.0", + "@wordpress/element": "^2.7.0", "@wordpress/i18n": "^3.6.0", "lodash": "^4.17.14" } }, "@wordpress/notices": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-1.6.0.tgz", - "integrity": "sha512-CXJUHye/qGJo3MF3YC/AwKrFz8X5zEuaD6I1pOoOVVxpLZNMDgA2QqEbxb7X66bedBrh9akFYoNdGwS11KSsKg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-1.7.0.tgz", + "integrity": "sha512-qX72CvX3Wjo1jS2/9il+Jtq7m4USVZPMqJY3CoL75F9zjEx9O3rM5wKJzADlUVZBxV8Iy5el0qzwIaWxxw982g==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/a11y": "^2.5.0", - "@wordpress/data": "^4.7.0", + "@wordpress/data": "^4.8.0", "lodash": "^4.17.14" } }, "@wordpress/nux": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-3.5.0.tgz", - "integrity": "sha512-PJJweT8/cNQvaFlrf8+jgntHouSu3Gf/OH8ZlICuF73W5Om9M+1Or4eaCS5wGjV1G014dxQBR/S2ydEio37NOw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-3.6.0.tgz", + "integrity": "sha512-jfQGpEi7fll/DsR5ah/SumORJ96qe4qNDu2wNDal2v2R43UYuvhu2ZAdh2nyHaJKybQui6HSh7HteT7oCouwpg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/element": "^2.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/element": "^2.7.0", "@wordpress/i18n": "^3.6.0", "lodash": "^4.17.14", "rememo": "^3.0.0" } }, "@wordpress/plugins": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-2.5.0.tgz", - "integrity": "sha512-RnILA/bl7w3joov61/sliyODN1MFJIGYgfwv20hkmjirmM/q531T4Mzp7FOPiEBn6mqt+gGo4CuGAe8o+oP/Vw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-2.6.0.tgz", + "integrity": "sha512-/G+5jEhkki7nhUeShyab3G6qnvLsGjg4DU0uwk4CLWvRcMOKdUZoH+Io4kFAL8he6b3Il5zPFLQ1VM3bydMUUA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "lodash": "^4.17.14" } }, - "@wordpress/rich-text": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-3.5.0.tgz", - "integrity": "sha512-2Pi56SGcao0M0OjZtpwdIyYIXganIDg054InPpdE7zeJRUxf8gKvTGSXA2bYLdDJC0RgCLTtWp+45ItV6byZDg==", + "@wordpress/redux-routine": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-3.6.0.tgz", + "integrity": "sha512-uZE6vA3XISS42aR2lx/5dUSPDXYLo1ETFPNzW1JN19NbwwpF/n2S1uUxICskNHe/Ku/bB8tZ+QRrd7AquyqhQQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/escape-html": "^1.5.0", - "@wordpress/hooks": "^2.5.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "classnames": "^2.2.5", + "is-promise": "^2.1.0", "lodash": "^4.17.14", - "memize": "^1.0.5", - "rememo": "^3.0.0" + "rungen": "^0.3.2" } }, - "@wordpress/token-list": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-1.5.0.tgz", - "integrity": "sha512-JamANQZLdv2WgmPd0ZumjzmzPoPjbZTWef2W2kuvNHvoLNO9yVulR754qdR/wGPBYEf5sDC3E2D3Vb/zgVEw7A==", + "@wordpress/server-side-render": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-1.2.0.tgz", + "integrity": "sha512-21XwmfTHnL1jxr0lWuLmv0Dc3UtK+EaQkTaow8+nMtDiWoWXHxQrS9HljEqTNvTOw2hFtdfbBjHZFsBDk3cdmA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/components": "^8.2.0", + "@wordpress/data": "^4.8.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/i18n": "^3.6.0", + "@wordpress/url": "^2.7.0", "lodash": "^4.17.14" } }, - "@wordpress/url": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-2.7.0.tgz", - "integrity": "sha512-W1KEyllal8YWbLMyqfbPw7pQzVsJh73RQyqElrPwZ84TPeH/1JilKVMgKb2RXgJw8q8I+gZIXi6GmVY0+WNAxg==", + "@wordpress/token-list": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-1.6.0.tgz", + "integrity": "sha512-bZRqpiy1fJgLLjEL7AzQ12GctzSOQRndloNW5vxJB+v/vJbKw2LxTXSeidCHT5ur/zuGgVI27KjmHG4pkFE9Tg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "qs": "^6.5.2" + "lodash": "^4.17.14" } }, "@wordpress/viewport": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-2.6.0.tgz", - "integrity": "sha512-mnUu/SbwrW949AgOODDFLcbLUM/Qhlbi0qZ4JN5c/nOEukru5NRuktvyPPzcd9wWAeNVlqTSpq6E8ES+65ureg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-2.7.0.tgz", + "integrity": "sha512-3aep6FzeWmOznJm8iqgM0GT/cQ/6n6Zc2pk15SNrAwpnWRydfCKWlLeWRIJ/qCDQip14LPk7VXP6X48EMaZuaA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/element": "^2.6.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", "lodash": "^4.17.14" } }, "@wordpress/wordcount": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-2.5.0.tgz", - "integrity": "sha512-Du/O50ZBpl5Pq/MevUZHQg0FBpT6v/SRhSV8lF5ByjZfXelUcQGN+gQ6RmNdasQ33KVPmspdCQHnQ+sThm4/iA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-2.6.0.tgz", + "integrity": "sha512-WC7/+10EtwzxZYMPBhSKvchTVsPq/BLoJlmGm0z/1lQ1HhA7CjbZ1OMFDtaxoWBPg+XUTA2Eo75HHwHHzxmlyg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -3648,9 +3235,9 @@ "dev": true }, "re-resizable": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-5.0.1.tgz", - "integrity": "sha512-Iy8v5li7bhNBDxCN1DbA4l6G2Hk8NCZtcExoI1D+5pfvKyQcH8LH2P5h3DGoEfHhs0uyyRC1Qx8bHBomfrmxgA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.0.0.tgz", + "integrity": "sha512-RTrnhbGgYyZ4hTc6db4JeMnRfmloEPWtuYaXZEa2PRaEC4mreWNFnZtMVsHil3z3iX+WchD+da8BLlTJBcstMA==", "dev": true, "requires": { "fast-memoize": "^2.5.1" @@ -3659,59 +3246,50 @@ } }, "@wordpress/editor": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-9.5.0.tgz", - "integrity": "sha512-9TrRwfmPaqUOyLcTYnl/qqOkYesfFGN2OSLEqbLJIyA961xkRLDz5975MAvGZakHDWwkSv3bxS2ogSoJcr8FOg==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/editor/-/editor-9.6.0.tgz", + "integrity": "sha512-Cl/+wNkyaqq2B6ztZfcZ3yrkIUF/wO1R0ahDKoNr4PgQ+xUGHy/Rv7OuoqWUucgfrbm9p8Qb2wkzMiP6N4Mjkg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", - "@wordpress/blob": "^2.5.0", - "@wordpress/block-editor": "^3.0.0", - "@wordpress/blocks": "^6.5.0", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/core-data": "^2.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/data-controls": "^1.1.0", - "@wordpress/date": "^3.4.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/autop": "^2.5.0", + "@wordpress/block-editor": "^3.1.0", + "@wordpress/blocks": "^6.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/core-data": "^2.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/data-controls": "^1.2.0", + "@wordpress/date": "^3.5.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/html-entities": "^2.5.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/media-utils": "^1.0.0", - "@wordpress/notices": "^1.6.0", - "@wordpress/nux": "^3.5.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/media-utils": "^1.1.0", + "@wordpress/notices": "^1.7.0", + "@wordpress/nux": "^3.6.0", + "@wordpress/rich-text": "^3.6.0", + "@wordpress/server-side-render": "^1.2.0", "@wordpress/url": "^2.7.0", - "@wordpress/viewport": "^2.6.0", - "@wordpress/wordcount": "^2.5.0", + "@wordpress/viewport": "^2.7.0", + "@wordpress/wordcount": "^2.6.0", "classnames": "^2.2.5", - "inherits": "^2.0.3", "lodash": "^4.17.14", "memize": "^1.0.5", "react-autosize-textarea": "^3.0.2", "redux-optimist": "^1.0.0", "refx": "^3.0.0", - "rememo": "^3.0.0", - "traverse": "^0.6.6" + "rememo": "^3.0.0" }, "dependencies": { - "@wordpress/a11y": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-2.5.0.tgz", - "integrity": "sha512-KY+Z0NFQUH6cNbFnP9P58fTCLS93zBz+SIEDA633yG46u1NHOBfWDS4lIrx52fihFdaakSTS0f2OH6yeRb41HQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/dom-ready": "^2.5.0" - } - }, "@wordpress/api-fetch": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.4.0.tgz", - "integrity": "sha512-aNLVIXlnn7RIEzbDcVFhyQfV60O0ggLQOCkHhMCW1Ya86Jlohp658TXe8wIjFhC2ugY239WeZIl1tgoRjqIr0A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.5.0.tgz", + "integrity": "sha512-EaI7T/M5goqZPp4YeKfQwsvDzmbu6YV+cbPi6y6MF3QoccpTWqkMG4nJHuoI1uCK9/QxXVRLhCRzLG54L4kcOg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -3720,208 +3298,161 @@ } }, "@wordpress/block-editor": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-3.0.0.tgz", - "integrity": "sha512-ooEBV8kf1mnShUNLYSAZNiAZNFDoy9Eg9wihtfSDzc89431iFeClIw49dYEy3GFn84MNOHiCqXWHD7Ew2RR8iQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-3.1.0.tgz", + "integrity": "sha512-ec3GiK4qgW1PAINs1nrTBL6UuG53rKBz0M9KLsPHd/GeKsBlyqb47bsyO+dHyeB0k9Hsp42RnLkSfZ4Yh/d7Ag==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/a11y": "^2.5.0", "@wordpress/blob": "^2.5.0", - "@wordpress/blocks": "^6.5.0", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/blocks": "^6.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/html-entities": "^2.5.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/rich-text": "^3.5.0", - "@wordpress/token-list": "^1.5.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/rich-text": "^3.6.0", + "@wordpress/token-list": "^1.6.0", "@wordpress/url": "^2.7.0", - "@wordpress/viewport": "^2.6.0", - "@wordpress/wordcount": "^2.5.0", + "@wordpress/viewport": "^2.7.0", + "@wordpress/wordcount": "^2.6.0", "classnames": "^2.2.5", + "diff": "^3.5.0", "dom-scroll-into-view": "^1.2.1", + "inherits": "^2.0.3", "lodash": "^4.17.10", + "memize": "^1.0.5", + "react-autosize-textarea": "^3.0.2", "react-spring": "^8.0.19", "redux-multi": "^0.1.12", "refx": "^3.0.0", "rememo": "^3.0.0", - "tinycolor2": "^1.4.1" - } - }, - "@wordpress/components": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.1.0.tgz", - "integrity": "sha512-V35ZyDIVadVQQhKB6IyGULdMfi+44KLL6K0FL2gVihLxHq1P0g3sC6kE26DmYNcYXYfhyGMZT440nkUi1jEo3A==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/a11y": "^2.5.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", - "@wordpress/i18n": "^3.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/rich-text": "^3.5.0", - "@wordpress/url": "^2.7.0", - "classnames": "^2.2.5", - "clipboard": "^2.0.1", - "diff": "^3.5.0", - "dom-scroll-into-view": "^1.2.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "moment": "^2.22.1", - "mousetrap": "^1.6.2", - "re-resizable": "^5.0.1", - "react-click-outside": "^3.0.0", - "react-dates": "^17.1.1", - "react-spring": "^8.0.20", - "rememo": "^3.0.0", "tinycolor2": "^1.4.1", - "uuid": "^3.3.2" - } - }, - "@wordpress/dom": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-2.4.0.tgz", - "integrity": "sha512-8hcHi5iHgi1Z/1G6ti04bgsiYBDNlR05X7MiosjwP8U/iTmcRwKrmtA1X6qzsMlOgvJ3MetoLqGZb3lCjLtXmw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "lodash": "^4.17.14" - } - }, - "@wordpress/escape-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-1.5.0.tgz", - "integrity": "sha512-9jGwPbpdJ309EP4Acf6/zwHWeuYi0Bi5RAZx9q+BIYC7bjxLs3oFDS5QkEAi2mzrVAhIz+BbEWBGRg70U1RLlA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/hooks": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-2.5.0.tgz", - "integrity": "sha512-+nsYv5AdX7Oj9gVHvtDIQSE9gntrJwA5FpXSEVlZ2u2E5lhjGQS+a+IrRhxZL/7f2eKby5zvQV6vYCrqMtKxYg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/html-entities": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-2.5.0.tgz", - "integrity": "sha512-7TKaJKkOX2Tas0OyXNPz1kA2my1Z804weBf2RsPLiNXm593JDsf6Em8z1TA4mXtn7FO2ZAKTj/3yRemKK4PhnA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/i18n": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.6.0.tgz", - "integrity": "sha512-/fkc5OoUCrIyHAaBEKIsXKl+UWj2kKjquhMSSHu3eVqLv/WKrKAzypPPAZC9UXfdSVBY8MrORYLh7vUy9Ic3Vw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "sprintf-js": "^1.1.1", - "tannin": "^1.1.0" + "traverse": "^0.6.6" } }, - "@wordpress/is-shallow-equal": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.5.0.tgz", - "integrity": "sha512-6GjIDZlwcgLmnt1uexUgnIj3zbzCPCtqe5vTqmsQeexC4zCIzgFJgzilOuuW/4kdwF/XB3jex91L9EImc5HTcw==", + "@wordpress/block-serialization-default-parser": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-3.4.0.tgz", + "integrity": "sha512-X2M5O41vBVAQVg62U7EzgcL0iMbjgeMXokp8kVkU/1j0aKrX0N4Xqaf4XACBK9R4lLYyT6vzmxx0/6zH3R1f1A==", "dev": true, "requires": { "@babel/runtime": "^7.4.4" } }, - "@wordpress/keycodes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-2.5.0.tgz", - "integrity": "sha512-4SMN3pmJnNBexpd3/6JB6gJw+wcahBaVZaeMcHyF+Uw7bKcG6hDkzEAN6dWFJuifpdxmvilDE4H5JS/Ex9C6sA==", + "@wordpress/blocks": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-6.6.0.tgz", + "integrity": "sha512-riBvLB7hPaRcX9sanPfc/sF9SGnf1EMyeQhgg2Jq7C9zUhajjmwLep9Jb9CxwkMVUGLDmsWehZ6GyZNwXdfgew==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", + "@wordpress/autop": "^2.5.0", + "@wordpress/blob": "^2.5.0", + "@wordpress/block-serialization-default-parser": "^3.4.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", + "@wordpress/html-entities": "^2.5.0", "@wordpress/i18n": "^3.6.0", - "lodash": "^4.17.14" - } - }, - "@wordpress/rich-text": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-3.5.0.tgz", - "integrity": "sha512-2Pi56SGcao0M0OjZtpwdIyYIXganIDg054InPpdE7zeJRUxf8gKvTGSXA2bYLdDJC0RgCLTtWp+45ItV6byZDg==", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/shortcode": "^2.4.0", + "hpq": "^1.3.0", + "lodash": "^4.17.14", + "rememo": "^3.0.0", + "showdown": "^1.8.6", + "simple-html-tokenizer": "^0.5.7", + "tinycolor2": "^1.4.1", + "uuid": "^3.3.2" + } + }, + "@wordpress/components": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.2.0.tgz", + "integrity": "sha512-fde8bKDNcn9fhq48Mj2QyaTjrluYBK8A77P+MGmiU/x72FtMvj8/HdBOoDpmuGMApTc5oDAfAzNiYyDHIHzNqQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/escape-html": "^1.5.0", - "@wordpress/hooks": "^2.5.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", + "@wordpress/a11y": "^2.5.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", + "@wordpress/i18n": "^3.6.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/rich-text": "^3.6.0", "classnames": "^2.2.5", + "clipboard": "^2.0.1", + "dom-scroll-into-view": "^1.2.1", "lodash": "^4.17.14", "memize": "^1.0.5", - "rememo": "^3.0.0" + "moment": "^2.22.1", + "mousetrap": "^1.6.2", + "re-resizable": "^6.0.0", + "react-dates": "^17.1.1", + "react-spring": "^8.0.20", + "rememo": "^3.0.0", + "tinycolor2": "^1.4.1", + "uuid": "^3.3.2" } }, - "@wordpress/token-list": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-1.5.0.tgz", - "integrity": "sha512-JamANQZLdv2WgmPd0ZumjzmzPoPjbZTWef2W2kuvNHvoLNO9yVulR754qdR/wGPBYEf5sDC3E2D3Vb/zgVEw7A==", + "@wordpress/deprecated": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.6.0.tgz", + "integrity": "sha512-DLYEhsG04V8qfm+k2hrHPExiC31+dgUGZBhIUq8ScvCIkqYOiWAgP0zTOjRgSuNk8Yp0/6XqSWbkXMC4ZQX03w==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "lodash": "^4.17.14" + "@wordpress/hooks": "^2.6.0" } }, - "@wordpress/url": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-2.7.0.tgz", - "integrity": "sha512-W1KEyllal8YWbLMyqfbPw7pQzVsJh73RQyqElrPwZ84TPeH/1JilKVMgKb2RXgJw8q8I+gZIXi6GmVY0+WNAxg==", + "@wordpress/server-side-render": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/server-side-render/-/server-side-render-1.2.0.tgz", + "integrity": "sha512-21XwmfTHnL1jxr0lWuLmv0Dc3UtK+EaQkTaow8+nMtDiWoWXHxQrS9HljEqTNvTOw2hFtdfbBjHZFsBDk3cdmA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "qs": "^6.5.2" + "@wordpress/api-fetch": "^3.5.0", + "@wordpress/components": "^8.2.0", + "@wordpress/data": "^4.8.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/i18n": "^3.6.0", + "@wordpress/url": "^2.7.0", + "lodash": "^4.17.14" } }, - "@wordpress/viewport": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-2.6.0.tgz", - "integrity": "sha512-mnUu/SbwrW949AgOODDFLcbLUM/Qhlbi0qZ4JN5c/nOEukru5NRuktvyPPzcd9wWAeNVlqTSpq6E8ES+65ureg==", + "@wordpress/token-list": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/token-list/-/token-list-1.6.0.tgz", + "integrity": "sha512-bZRqpiy1fJgLLjEL7AzQ12GctzSOQRndloNW5vxJB+v/vJbKw2LxTXSeidCHT5ur/zuGgVI27KjmHG4pkFE9Tg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/element": "^2.6.0", "lodash": "^4.17.14" } }, - "@wordpress/wordcount": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-2.5.0.tgz", - "integrity": "sha512-Du/O50ZBpl5Pq/MevUZHQg0FBpT6v/SRhSV8lF5ByjZfXelUcQGN+gQ6RmNdasQ33KVPmspdCQHnQ+sThm4/iA==", + "@wordpress/viewport": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/viewport/-/viewport-2.7.0.tgz", + "integrity": "sha512-3aep6FzeWmOznJm8iqgM0GT/cQ/6n6Zc2pk15SNrAwpnWRydfCKWlLeWRIJ/qCDQip14LPk7VXP6X48EMaZuaA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", "lodash": "^4.17.14" } }, @@ -3932,9 +3463,9 @@ "dev": true }, "re-resizable": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-5.0.1.tgz", - "integrity": "sha512-Iy8v5li7bhNBDxCN1DbA4l6G2Hk8NCZtcExoI1D+5pfvKyQcH8LH2P5h3DGoEfHhs0uyyRC1Qx8bHBomfrmxgA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.0.0.tgz", + "integrity": "sha512-RTrnhbGgYyZ4hTc6db4JeMnRfmloEPWtuYaXZEa2PRaEC4mreWNFnZtMVsHil3z3iX+WchD+da8BLlTJBcstMA==", "dev": true, "requires": { "fast-memoize": "^2.5.1" @@ -3943,9 +3474,9 @@ } }, "@wordpress/element": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.6.0.tgz", - "integrity": "sha512-t7BgD+gRvC0gOubElsiXhp0H5Dq1yAu2/J8aeok4Fcg1anUXcmjo9M7uL/C17e1AbDVIFQvCyhgOg9ltc/rgEA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.7.0.tgz", + "integrity": "sha512-wyGOSFucslwndsSU4VlO7Z67C4NszsESM21fDwLF3z/JUcZDbcTZLmEId2QysgYUYtX5sBk6OvoTe8f4FY+SKQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -3953,17 +3484,6 @@ "lodash": "^4.17.14", "react": "^16.8.4", "react-dom": "^16.8.4" - }, - "dependencies": { - "@wordpress/escape-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-1.5.0.tgz", - "integrity": "sha512-9jGwPbpdJ309EP4Acf6/zwHWeuYi0Bi5RAZx9q+BIYC7bjxLs3oFDS5QkEAi2mzrVAhIz+BbEWBGRg70U1RLlA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - } } }, "@wordpress/escape-html": { @@ -3976,22 +3496,42 @@ } }, "@wordpress/eslint-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-2.4.0.tgz", - "integrity": "sha512-FOsNM6cCKZKug/sXKAum1lceGiULm4sKZlBCHUHRNiGSbOlWs+kjoATQOuid9nGYVK/uzvQOCN1xwZJbQ9XjDw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-3.0.0.tgz", + "integrity": "sha512-/X3hDwIgtPLp4niG+1S+QqKSgYBhYNjyZUB6W2k8ytsd0Z+WAKDN4hIbJ8/UY8XNVs+marhlJpgxfhlVLP/4ig==", "dev": true, "requires": { - "babel-eslint": "^10.0.1", - "eslint-plugin-jsx-a11y": "^6.2.1", - "eslint-plugin-react": "^7.12.4", - "eslint-plugin-react-hooks": "^1.6.0", + "babel-eslint": "^10.0.2", + "eslint-plugin-jest": "^22.15.1", + "eslint-plugin-jsdoc": "^15.8.0", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.14.3", + "eslint-plugin-react-hooks": "^1.6.1", + "globals": "^12.0.0", "requireindex": "^1.2.0" + }, + "dependencies": { + "globals": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.0.0.tgz", + "integrity": "sha512-c9xoi32iDwlETiyYfO0pd3M8GcEuytJinSoqq7k3fz4H8p2p31NyfKr7JVd7Y0QvmtWcWXcwqW4L33eeDYgh1A==", + "dev": true, + "requires": { + "type-fest": "^0.6.0" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, "@wordpress/hooks": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-2.5.0.tgz", - "integrity": "sha512-+nsYv5AdX7Oj9gVHvtDIQSE9gntrJwA5FpXSEVlZ2u2E5lhjGQS+a+IrRhxZL/7f2eKby5zvQV6vYCrqMtKxYg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-2.6.0.tgz", + "integrity": "sha512-93THIW9EklVkJLN3wr8PUdWqttRu/wGZgXUrM6fqqOGwm4uCL4S+jQe800kwZioRHvgW5moNLrvSdfanQ4QyEQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4" @@ -4021,18 +3561,18 @@ } }, "@wordpress/is-shallow-equal": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.5.0.tgz", - "integrity": "sha512-6GjIDZlwcgLmnt1uexUgnIj3zbzCPCtqe5vTqmsQeexC4zCIzgFJgzilOuuW/4kdwF/XB3jex91L9EImc5HTcw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.6.0.tgz", + "integrity": "sha512-Yi3JvowB1+bpiKnx9OYv5Ni2zA/j8zJa5dTA5IuchOgdODRGlg9XAuC1Kl0Bd9nLmQsoU50TJYiAlffv0lUhzQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4" } }, "@wordpress/jest-console": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-3.2.0.tgz", - "integrity": "sha512-WZl2eJH9g+OSTrFPpAKSCT7Pl7rvwatPnBm1Z4kpPZdOQDbF3w2a6yzfpjtBBD2BVEqHsaLAxn0jC6xHkqbAxw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-console/-/jest-console-3.3.0.tgz", + "integrity": "sha512-ga6KMvj81IclhT/3z7GYQZPdVYhBbasjYbCuzMwyFLMDGu3AZJVsxhTFufr2co3cSi03Z8dhWL2Mm9IEzQujdA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -4041,12 +3581,12 @@ } }, "@wordpress/jest-preset-default": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-4.3.0.tgz", - "integrity": "sha512-b8rucE3e7+VkD/gX9pB6c9ZysjUAOfNG2Lcp8OLtfzWvlzMkuJtl7+9P/D6GAWk2GEK54GdM018vl3IM5HkaHg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/jest-preset-default/-/jest-preset-default-5.1.0.tgz", + "integrity": "sha512-BqUkdxlE2RpLwQ+I9O5Tt5RrrxShfLK8Q3cooK+gjOv7ycaD81qkngwIx9oRdSf9iscFkVIAhRiVTNnNba9Hjg==", "dev": true, "requires": { - "@wordpress/jest-console": "^3.2.0", + "@wordpress/jest-console": "^3.3.0", "babel-jest": "^24.7.1", "enzyme": "^3.9.0", "enzyme-adapter-react-16": "^1.10.0", @@ -4054,9 +3594,9 @@ } }, "@wordpress/keycodes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-2.5.0.tgz", - "integrity": "sha512-4SMN3pmJnNBexpd3/6JB6gJw+wcahBaVZaeMcHyF+Uw7bKcG6hDkzEAN6dWFJuifpdxmvilDE4H5JS/Ex9C6sA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-2.6.0.tgz", + "integrity": "sha512-wWCyom/dHMBb2hmNbuZym30/6QrvW2RvIbQNu1LHNZvVqehMOQLdVMUf525aLVJVQfp9wfer/fz5TjphW43txA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -4065,78 +3605,42 @@ } }, "@wordpress/media-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-1.0.0.tgz", - "integrity": "sha512-HjleyNFc+toqeznm8KnR/JhAfDki08FhxZj3/3uksxA4HSJ3Qq6cNc46GlxCCNy7cGhSAsmYrATEsbq3s4IhAA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/media-utils/-/media-utils-1.1.0.tgz", + "integrity": "sha512-xhO1fEj7Qwa2QyIW4PHKey7hO66jLF1skKDgWYz77wQLAvb2u7mKzQPQf6K5Y2jS+BYEqzXuyf0S7sWA9z1jnA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/api-fetch": "^3.4.0", + "@wordpress/api-fetch": "^3.5.0", "@wordpress/blob": "^2.5.0", - "@wordpress/element": "^2.6.0", + "@wordpress/element": "^2.7.0", "@wordpress/i18n": "^3.6.0", "lodash": "^4.17.14" }, "dependencies": { "@wordpress/api-fetch": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.4.0.tgz", - "integrity": "sha512-aNLVIXlnn7RIEzbDcVFhyQfV60O0ggLQOCkHhMCW1Ya86Jlohp658TXe8wIjFhC2ugY239WeZIl1tgoRjqIr0A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-3.5.0.tgz", + "integrity": "sha512-EaI7T/M5goqZPp4YeKfQwsvDzmbu6YV+cbPi6y6MF3QoccpTWqkMG4nJHuoI1uCK9/QxXVRLhCRzLG54L4kcOg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/i18n": "^3.6.0", "@wordpress/url": "^2.7.0" } - }, - "@wordpress/i18n": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.6.0.tgz", - "integrity": "sha512-/fkc5OoUCrIyHAaBEKIsXKl+UWj2kKjquhMSSHu3eVqLv/WKrKAzypPPAZC9UXfdSVBY8MrORYLh7vUy9Ic3Vw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "sprintf-js": "^1.1.1", - "tannin": "^1.1.0" - } - }, - "@wordpress/url": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-2.7.0.tgz", - "integrity": "sha512-W1KEyllal8YWbLMyqfbPw7pQzVsJh73RQyqElrPwZ84TPeH/1JilKVMgKb2RXgJw8q8I+gZIXi6GmVY0+WNAxg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "qs": "^6.5.2" - } } } }, "@wordpress/notices": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-1.6.0.tgz", - "integrity": "sha512-CXJUHye/qGJo3MF3YC/AwKrFz8X5zEuaD6I1pOoOVVxpLZNMDgA2QqEbxb7X66bedBrh9akFYoNdGwS11KSsKg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-1.7.0.tgz", + "integrity": "sha512-qX72CvX3Wjo1jS2/9il+Jtq7m4USVZPMqJY3CoL75F9zjEx9O3rM5wKJzADlUVZBxV8Iy5el0qzwIaWxxw982g==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/a11y": "^2.5.0", - "@wordpress/data": "^4.7.0", + "@wordpress/data": "^4.8.0", "lodash": "^4.17.14" - }, - "dependencies": { - "@wordpress/a11y": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-2.5.0.tgz", - "integrity": "sha512-KY+Z0NFQUH6cNbFnP9P58fTCLS93zBz+SIEDA633yG46u1NHOBfWDS4lIrx52fihFdaakSTS0f2OH6yeRb41HQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/dom-ready": "^2.5.0" - } - } } }, "@wordpress/npm-package-json-lint-config": { @@ -4146,58 +3650,46 @@ "dev": true }, "@wordpress/nux": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-3.5.0.tgz", - "integrity": "sha512-PJJweT8/cNQvaFlrf8+jgntHouSu3Gf/OH8ZlICuF73W5Om9M+1Or4eaCS5wGjV1G014dxQBR/S2ydEio37NOw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/nux/-/nux-3.6.0.tgz", + "integrity": "sha512-jfQGpEi7fll/DsR5ah/SumORJ96qe4qNDu2wNDal2v2R43UYuvhu2ZAdh2nyHaJKybQui6HSh7HteT7oCouwpg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/components": "^8.1.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/element": "^2.6.0", + "@wordpress/components": "^8.2.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/element": "^2.7.0", "@wordpress/i18n": "^3.6.0", "lodash": "^4.17.14", "rememo": "^3.0.0" }, "dependencies": { - "@wordpress/a11y": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-2.5.0.tgz", - "integrity": "sha512-KY+Z0NFQUH6cNbFnP9P58fTCLS93zBz+SIEDA633yG46u1NHOBfWDS4lIrx52fihFdaakSTS0f2OH6yeRb41HQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/dom-ready": "^2.5.0" - } - }, "@wordpress/components": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.1.0.tgz", - "integrity": "sha512-V35ZyDIVadVQQhKB6IyGULdMfi+44KLL6K0FL2gVihLxHq1P0g3sC6kE26DmYNcYXYfhyGMZT440nkUi1jEo3A==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-8.2.0.tgz", + "integrity": "sha512-fde8bKDNcn9fhq48Mj2QyaTjrluYBK8A77P+MGmiU/x72FtMvj8/HdBOoDpmuGMApTc5oDAfAzNiYyDHIHzNqQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@wordpress/a11y": "^2.5.0", - "@wordpress/compose": "^3.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/dom": "^2.5.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "@wordpress/i18n": "^3.6.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "@wordpress/rich-text": "^3.5.0", - "@wordpress/url": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", + "@wordpress/rich-text": "^3.6.0", "classnames": "^2.2.5", "clipboard": "^2.0.1", - "diff": "^3.5.0", "dom-scroll-into-view": "^1.2.1", "lodash": "^4.17.14", "memize": "^1.0.5", "moment": "^2.22.1", "mousetrap": "^1.6.2", - "re-resizable": "^5.0.1", - "react-click-outside": "^3.0.0", + "re-resizable": "^6.0.0", "react-dates": "^17.1.1", "react-spring": "^8.0.20", "rememo": "^3.0.0", @@ -4205,98 +3697,14 @@ "uuid": "^3.3.2" } }, - "@wordpress/dom": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-2.4.0.tgz", - "integrity": "sha512-8hcHi5iHgi1Z/1G6ti04bgsiYBDNlR05X7MiosjwP8U/iTmcRwKrmtA1X6qzsMlOgvJ3MetoLqGZb3lCjLtXmw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "lodash": "^4.17.14" - } - }, - "@wordpress/escape-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-1.5.0.tgz", - "integrity": "sha512-9jGwPbpdJ309EP4Acf6/zwHWeuYi0Bi5RAZx9q+BIYC7bjxLs3oFDS5QkEAi2mzrVAhIz+BbEWBGRg70U1RLlA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/hooks": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-2.5.0.tgz", - "integrity": "sha512-+nsYv5AdX7Oj9gVHvtDIQSE9gntrJwA5FpXSEVlZ2u2E5lhjGQS+a+IrRhxZL/7f2eKby5zvQV6vYCrqMtKxYg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/i18n": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.6.0.tgz", - "integrity": "sha512-/fkc5OoUCrIyHAaBEKIsXKl+UWj2kKjquhMSSHu3eVqLv/WKrKAzypPPAZC9UXfdSVBY8MrORYLh7vUy9Ic3Vw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "sprintf-js": "^1.1.1", - "tannin": "^1.1.0" - } - }, - "@wordpress/is-shallow-equal": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-1.5.0.tgz", - "integrity": "sha512-6GjIDZlwcgLmnt1uexUgnIj3zbzCPCtqe5vTqmsQeexC4zCIzgFJgzilOuuW/4kdwF/XB3jex91L9EImc5HTcw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@wordpress/keycodes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-2.5.0.tgz", - "integrity": "sha512-4SMN3pmJnNBexpd3/6JB6gJw+wcahBaVZaeMcHyF+Uw7bKcG6hDkzEAN6dWFJuifpdxmvilDE4H5JS/Ex9C6sA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/i18n": "^3.6.0", - "lodash": "^4.17.14" - } - }, - "@wordpress/rich-text": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-3.5.0.tgz", - "integrity": "sha512-2Pi56SGcao0M0OjZtpwdIyYIXganIDg054InPpdE7zeJRUxf8gKvTGSXA2bYLdDJC0RgCLTtWp+45ItV6byZDg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", - "@wordpress/escape-html": "^1.5.0", - "@wordpress/hooks": "^2.5.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", - "classnames": "^2.2.5", - "lodash": "^4.17.14", - "memize": "^1.0.5", - "rememo": "^3.0.0" - } - }, - "@wordpress/url": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-2.7.0.tgz", - "integrity": "sha512-W1KEyllal8YWbLMyqfbPw7pQzVsJh73RQyqElrPwZ84TPeH/1JilKVMgKb2RXgJw8q8I+gZIXi6GmVY0+WNAxg==", + "@wordpress/deprecated": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.6.0.tgz", + "integrity": "sha512-DLYEhsG04V8qfm+k2hrHPExiC31+dgUGZBhIUq8ScvCIkqYOiWAgP0zTOjRgSuNk8Yp0/6XqSWbkXMC4ZQX03w==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "qs": "^6.5.2" + "@wordpress/hooks": "^2.6.0" } }, "dom-scroll-into-view": { @@ -4306,9 +3714,9 @@ "dev": true }, "re-resizable": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-5.0.1.tgz", - "integrity": "sha512-Iy8v5li7bhNBDxCN1DbA4l6G2Hk8NCZtcExoI1D+5pfvKyQcH8LH2P5h3DGoEfHhs0uyyRC1Qx8bHBomfrmxgA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.0.0.tgz", + "integrity": "sha512-RTrnhbGgYyZ4hTc6db4JeMnRfmloEPWtuYaXZEa2PRaEC4mreWNFnZtMVsHil3z3iX+WchD+da8BLlTJBcstMA==", "dev": true, "requires": { "fast-memoize": "^2.5.1" @@ -4317,16 +3725,30 @@ } }, "@wordpress/plugins": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-2.5.0.tgz", - "integrity": "sha512-RnILA/bl7w3joov61/sliyODN1MFJIGYgfwv20hkmjirmM/q531T4Mzp7FOPiEBn6mqt+gGo4CuGAe8o+oP/Vw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-2.6.0.tgz", + "integrity": "sha512-/G+5jEhkki7nhUeShyab3G6qnvLsGjg4DU0uwk4CLWvRcMOKdUZoH+Io4kFAL8he6b3Il5zPFLQ1VM3bydMUUA==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/element": "^2.6.0", - "@wordpress/hooks": "^2.5.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/hooks": "^2.6.0", "lodash": "^4.17.14" + }, + "dependencies": { + "@wordpress/compose": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-3.6.0.tgz", + "integrity": "sha512-ixXGsj2aBizA4XiawR0n8+Ee2vmhmyGkd9Cy4LZs4aQFunDVXuVypxk74YQJstzJCUVMdvR8B5K8vrnh38QDFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@wordpress/element": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "lodash": "^4.17.14" + } + } } }, "@wordpress/postcss-themes": { @@ -4350,63 +3772,157 @@ } }, "@wordpress/redux-routine": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-3.5.0.tgz", - "integrity": "sha512-fssGjVcXlNFbAIjv6VhCWZYgsv51sugxxCgxAqgSIexsDVnOphDODo5V5bhcgwiZeL3/n5rzqvFQ7Dv4agvc/A==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-3.6.0.tgz", + "integrity": "sha512-uZE6vA3XISS42aR2lx/5dUSPDXYLo1ETFPNzW1JN19NbwwpF/n2S1uUxICskNHe/Ku/bB8tZ+QRrd7AquyqhQQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", "is-promise": "^2.1.0", + "lodash": "^4.17.14", "rungen": "^0.3.2" } }, "@wordpress/rich-text": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-3.5.0.tgz", - "integrity": "sha512-2Pi56SGcao0M0OjZtpwdIyYIXganIDg054InPpdE7zeJRUxf8gKvTGSXA2bYLdDJC0RgCLTtWp+45ItV6byZDg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-3.6.0.tgz", + "integrity": "sha512-DbiCo1Cypkz9EJ38eGvoNpM/tDTRZYrCNYSDRhNHAK6zODUqTB9L6+tGVdpUQSTjsgoFUBoVeqAAM3hIvcTjgQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", - "@wordpress/compose": "^3.5.0", - "@wordpress/data": "^4.7.0", - "@wordpress/deprecated": "^2.5.0", - "@wordpress/dom": "^2.4.0", - "@wordpress/element": "^2.6.0", + "@wordpress/compose": "^3.6.0", + "@wordpress/data": "^4.8.0", + "@wordpress/element": "^2.7.0", "@wordpress/escape-html": "^1.5.0", - "@wordpress/hooks": "^2.5.0", - "@wordpress/is-shallow-equal": "^1.5.0", - "@wordpress/keycodes": "^2.5.0", + "@wordpress/hooks": "^2.6.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/keycodes": "^2.6.0", "classnames": "^2.2.5", "lodash": "^4.17.14", "memize": "^1.0.5", "rememo": "^3.0.0" + }, + "dependencies": { + "@wordpress/compose": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-3.6.0.tgz", + "integrity": "sha512-ixXGsj2aBizA4XiawR0n8+Ee2vmhmyGkd9Cy4LZs4aQFunDVXuVypxk74YQJstzJCUVMdvR8B5K8vrnh38QDFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@wordpress/element": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "lodash": "^4.17.14" + } + }, + "@wordpress/data": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-4.8.0.tgz", + "integrity": "sha512-WUdE6C7CfG6gcQw2nZ+VQ3EAB5alga97BjqTdvuAAm6BLFLwd5LDn4maQYLPFrQp27CyzjDy6KzKARHDrUJBOg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@wordpress/compose": "^3.6.0", + "@wordpress/deprecated": "^2.6.0", + "@wordpress/element": "^2.7.0", + "@wordpress/is-shallow-equal": "^1.6.0", + "@wordpress/priority-queue": "^1.3.0", + "@wordpress/redux-routine": "^3.6.0", + "equivalent-key-map": "^0.2.2", + "is-promise": "^2.1.0", + "lodash": "^4.17.14", + "redux": "^4.0.0", + "turbo-combine-reducers": "^1.0.2" + } + }, + "@wordpress/deprecated": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-2.6.0.tgz", + "integrity": "sha512-DLYEhsG04V8qfm+k2hrHPExiC31+dgUGZBhIUq8ScvCIkqYOiWAgP0zTOjRgSuNk8Yp0/6XqSWbkXMC4ZQX03w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@wordpress/hooks": "^2.6.0" + } + }, + "@wordpress/element": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-2.7.0.tgz", + "integrity": "sha512-wyGOSFucslwndsSU4VlO7Z67C4NszsESM21fDwLF3z/JUcZDbcTZLmEId2QysgYUYtX5sBk6OvoTe8f4FY+SKQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@wordpress/escape-html": "^1.5.0", + "lodash": "^4.17.14", + "react": "^16.8.4", + "react-dom": "^16.8.4" + } + }, + "@wordpress/hooks": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-2.6.0.tgz", + "integrity": "sha512-93THIW9EklVkJLN3wr8PUdWqttRu/wGZgXUrM6fqqOGwm4uCL4S+jQe800kwZioRHvgW5moNLrvSdfanQ4QyEQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4" + } + }, + "@wordpress/keycodes": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-2.6.0.tgz", + "integrity": "sha512-wWCyom/dHMBb2hmNbuZym30/6QrvW2RvIbQNu1LHNZvVqehMOQLdVMUf525aLVJVQfp9wfer/fz5TjphW43txA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "@wordpress/i18n": "^3.6.0", + "lodash": "^4.17.14" + } + }, + "@wordpress/redux-routine": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/redux-routine/-/redux-routine-3.6.0.tgz", + "integrity": "sha512-uZE6vA3XISS42aR2lx/5dUSPDXYLo1ETFPNzW1JN19NbwwpF/n2S1uUxICskNHe/Ku/bB8tZ+QRrd7AquyqhQQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.4", + "is-promise": "^2.1.0", + "lodash": "^4.17.14", + "rungen": "^0.3.2" + } + } } }, "@wordpress/scripts": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-3.4.0.tgz", - "integrity": "sha512-PPOXYLLnqdxc/w0BU7YpJoa2G14WbukeWZGavjiYl98l5x4QO6Ddpo31D8Ev+kBMkmIWeyO7Pmgj0flrg8Vd/w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-4.1.0.tgz", + "integrity": "sha512-Cz+zhAQSzBw/ZC1XDX6xOgVqdqYKrWUgBlh2e5BvQztQgkpHv8iqgMhxbld+GjBsSWtAO0DkGD7vpqprWpu/0A==", "dev": true, "requires": { - "@wordpress/babel-preset-default": "^4.4.0", - "@wordpress/dependency-extraction-webpack-plugin": "^1.1.0", - "@wordpress/eslint-plugin": "^2.4.0", - "@wordpress/jest-preset-default": "^4.3.0", + "@wordpress/babel-preset-default": "^4.5.0", + "@wordpress/dependency-extraction-webpack-plugin": "^1.2.0", + "@wordpress/eslint-plugin": "^3.0.0", + "@wordpress/jest-preset-default": "^5.1.0", "@wordpress/npm-package-json-lint-config": "^2.1.0", "babel-jest": "^24.7.1", "babel-loader": "^8.0.5", "chalk": "^2.4.1", "check-node-version": "^3.1.1", + "command-exists": "1.2.8", "cross-spawn": "^5.1.0", - "eslint": "^5.16.0", + "decompress-zip": "0.2.2", + "eslint": "^6.1.0", "jest": "^24.7.1", - "jest-puppeteer": "^4.0.0", + "jest-puppeteer": "^4.3.0", + "js-yaml": "3.13.1", + "lodash": "^4.17.14", "minimist": "^1.2.0", "npm-package-json-lint": "^3.6.0", - "puppeteer": "1.6.1", + "puppeteer": "^1.19.0", "read-pkg-up": "^1.0.1", + "request": "2.88.0", "resolve-bin": "^0.4.0", "source-map-loader": "^0.2.4", + "sprintf-js": "^1.1.1", "stylelint": "^9.10.1", "stylelint-config-wordpress": "^13.1.0", "thread-loader": "^2.1.2", @@ -4426,17 +3942,6 @@ "@webassemblyjs/wast-parser": "1.4.3", "debug": "^3.1.0", "webassemblyjs": "1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } } }, "@webassemblyjs/floating-point-hex-parser": { @@ -4452,17 +3957,6 @@ "dev": true, "requires": { "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } } }, "@webassemblyjs/helper-code-frame": { @@ -4497,17 +3991,6 @@ "@webassemblyjs/helper-wasm-bytecode": "1.4.3", "@webassemblyjs/wasm-gen": "1.4.3", "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } } }, "@webassemblyjs/leb128": { @@ -4534,17 +4017,6 @@ "@webassemblyjs/wasm-parser": "1.4.3", "@webassemblyjs/wast-printer": "1.4.3", "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } } }, "@webassemblyjs/wasm-gen": { @@ -4569,17 +4041,6 @@ "@webassemblyjs/wasm-gen": "1.4.3", "@webassemblyjs/wasm-parser": "1.4.3", "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } } }, "@webassemblyjs/wasm-parser": { @@ -4620,12 +4081,6 @@ "long": "^3.2.0" } }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, "chrome-trace-event": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", @@ -4633,86 +4088,18 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -4769,18 +4156,6 @@ "uglifyjs-webpack-plugin": "^1.2.4", "watchpack": "^1.5.0", "webpack-sources": "^1.0.1" - }, - "dependencies": { - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - } } } } @@ -4967,9 +4342,9 @@ } }, "@wordpress/wordcount": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-2.5.0.tgz", - "integrity": "sha512-Du/O50ZBpl5Pq/MevUZHQg0FBpT6v/SRhSV8lF5ByjZfXelUcQGN+gQ6RmNdasQ33KVPmspdCQHnQ+sThm4/iA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-2.6.0.tgz", + "integrity": "sha512-WC7/+10EtwzxZYMPBhSKvchTVsPq/BLoJlmGm0z/1lQ1HhA7CjbZ1OMFDtaxoWBPg+XUTA2Eo75HHwHHzxmlyg==", "dev": true, "requires": { "@babel/runtime": "^7.4.4", @@ -4989,9 +4364,9 @@ "dev": true }, "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", + "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", "dev": true }, "abbrev": { @@ -5011,9 +4386,9 @@ } }, "acorn": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", - "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", "dev": true }, "acorn-dynamic-import": { @@ -5023,14 +4398,6 @@ "dev": true, "requires": { "acorn": "^5.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - } } }, "acorn-globals": { @@ -5041,12 +4408,20 @@ "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true + } } }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", "dev": true }, "acorn-walk": { @@ -5942,6 +5317,16 @@ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -6166,20 +5551,20 @@ } }, "browserslist": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", - "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000984", - "electron-to-chromium": "^1.3.191", - "node-releases": "^1.1.25" + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" }, "dependencies": { "caniuse-lite": { - "version": "1.0.30000984", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000984.tgz", - "integrity": "sha512-n5tKOjMaZ1fksIpQbjERuqCyfgec/m9pferkFQbLmWtqLUdmt12hNhjSwsmPdqeiG2NkITOQhr1VYIwWSAceiA==", + "version": "1.0.30000989", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", + "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", "dev": true } } @@ -6216,6 +5601,12 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -6385,6 +5776,23 @@ "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==", "dev": true }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + }, + "dependencies": { + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + } + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -6769,12 +6177,24 @@ "delayed-stream": "~1.0.0" } }, + "command-exists": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", + "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==", + "dev": true + }, "commander": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true }, + "comment-parser": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.6.2.tgz", + "integrity": "sha512-Wdms0Q8d4vvb2Yk72OwZjwNWtMklbC5Re7lD9cjCP/AG1fhocmc0TrxGBBAXPLy8fZQPrfHGgyygwI0lA7pbzA==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -6913,14 +6333,13 @@ "dev": true }, "core-js-compat": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.4.tgz", - "integrity": "sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", + "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", "dev": true, "requires": { - "browserslist": "^4.6.2", - "core-js-pure": "3.1.4", - "semver": "^6.1.1" + "browserslist": "^4.6.6", + "semver": "^6.3.0" }, "dependencies": { "semver": { @@ -6931,12 +6350,6 @@ } } }, - "core-js-pure": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz", - "integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -7011,13 +6424,12 @@ } }, "cross-env": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz", - "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", "dev": true, "requires": { - "cross-spawn": "^6.0.5", - "is-windows": "^1.0.0" + "cross-spawn": "^6.0.5" }, "dependencies": { "cross-spawn": { @@ -7574,6 +6986,47 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "decompress-zip": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.2.2.tgz", + "integrity": "sha512-v+Na3Ck86Px7s2ix+f77pMQC3GlkxHHN+YyvnkEW7+xX5F39pcDpIV/VFvGYk8MznTFcMoPjL3XNWEJLXWoSPw==", + "dev": true, + "requires": { + "binary": "^0.3.0", + "graceful-fs": "^4.1.3", + "mkpath": "^0.1.0", + "nopt": "^3.0.1", + "q": "^1.1.2", + "readable-stream": "^1.1.8", + "touch": "0.0.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -7689,9 +7142,9 @@ "dev": true }, "diff-sequences": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz", - "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", "dev": true }, "diffie-hellman": { @@ -7843,15 +7296,15 @@ "dev": true }, "ejs": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", - "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz", + "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ==", "dev": true }, "electron-to-chromium": { - "version": "1.3.191", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.191.tgz", - "integrity": "sha512-jasjtY5RUy/TOyiUYM2fb4BDaPZfm6CXRFeJDMfFsXYADGxUN49RBqtgB7EL2RmJXeIRUk9lM1U6A5yk2YJMPQ==", + "version": "1.3.248", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.248.tgz", + "integrity": "sha512-+hQe6xqpODLw9Nr80KoT0/S+YarjNbI9wgZchkOopJLBLPgAsniK184P0IGVs/0NsoZf4lBnQhOsjen9a47Hrg==", "dev": true }, "elliptic": { @@ -8077,9 +7530,9 @@ "dev": true }, "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", "dev": true, "requires": { "esprima": "^3.1.3", @@ -8105,9 +7558,9 @@ } }, "eslint": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.2.tgz", - "integrity": "sha512-mf0elOkxHbdyGX1IJEUsNBzCDdyoUgljF3rRlgfyYh0pwGnreLc0jjD6ZuleOibjmnUWZLY2eXwSooeOgGJ2jw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.3.0.tgz", + "integrity": "sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -8149,18 +7602,6 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "acorn": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", - "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", - "dev": true - }, - "acorn-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", - "dev": true - }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -8206,31 +7647,11 @@ "esutils": "^2.0.2" } }, - "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.0.0" - } - }, "eslint-visitor-keys": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - }, - "espree": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", - "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==", - "dev": true, - "requires": { - "acorn": "^7.0.0", - "acorn-jsx": "^5.0.2", - "eslint-visitor-keys": "^1.1.0" - } + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true }, "glob-parent": { "version": "5.0.0", @@ -8408,14 +7829,45 @@ } }, "eslint-plugin-jest": { - "version": "22.15.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.15.2.tgz", - "integrity": "sha512-p4NME9TgXIt+KgpxcXyNBvO30ZKxwFAO1dJZBc2OGfDnXVEtPwEyNs95GSr6RIE3xLHdjd8ngDdE2icRRXrbxg==", + "version": "22.16.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.16.0.tgz", + "integrity": "sha512-eBtSCDhO1k7g3sULX/fuRK+upFQ7s548rrBtxDyM1fSoY7dTWp/wICjrJcDZKVsW7tsFfH22SG+ZaxG5BZodIg==", "dev": true, "requires": { "@typescript-eslint/experimental-utils": "^1.13.0" } }, + "eslint-plugin-jsdoc": { + "version": "15.8.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-15.8.4.tgz", + "integrity": "sha512-KPYgMmZ6lrtCC93NIVp5O+yUE+bW3m3D8fztJylHw1d+VA2CQuq0BiNQZ7OXz+BK1SYF7TVAfsrHxWtIrE05GQ==", + "dev": true, + "requires": { + "comment-parser": "^0.6.2", + "debug": "^4.1.1", + "jsdoctypeparser": "5.0.1", + "lodash": "^4.17.15", + "object.entries-ponyfill": "^1.0.1", + "regextras": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "eslint-plugin-jsx-a11y": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", @@ -8451,9 +7903,9 @@ } }, "eslint-plugin-react-hooks": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.6.1.tgz", - "integrity": "sha512-wHhmGJyVuijnYIJXZJHDUF2WM+rJYTjulUTqF9k61d3BTk8etydz+M4dXUVH7M76ZRS85rqBTCx0Es/lLsrjnA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", "dev": true }, "eslint-scope": { @@ -8482,14 +7934,28 @@ "dev": true }, "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", + "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^7.0.0", + "acorn-jsx": "^5.0.2", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", + "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + } } }, "esprima": { @@ -8637,17 +8103,17 @@ } }, "expect": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz", - "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "ansi-styles": "^3.2.0", - "jest-get-type": "^24.8.0", - "jest-matcher-utils": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-regex-util": "^24.3.0" + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" } }, "expect-puppeteer": { @@ -11298,47 +10764,36 @@ } }, "jest": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", - "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", "dev": true, "requires": { "import-local": "^2.0.0", - "jest-cli": "^24.8.0" + "jest-cli": "^24.9.0" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, "find-up": { @@ -11350,49 +10805,31 @@ "locate-path": "^3.0.0" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "jest-cli": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.8.0.tgz", - "integrity": "sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", "dev": true, "requires": { - "@jest/core": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", "chalk": "^2.0.1", "exit": "^0.1.2", "import-local": "^2.0.0", "is-ci": "^2.0.0", - "jest-config": "^24.8.0", - "jest-util": "^24.8.0", - "jest-validate": "^24.8.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", "prompts": "^2.0.1", "realpath-native": "^1.1.0", - "yargs": "^12.0.2" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" + "yargs": "^13.3.0" } }, "locate-path": { @@ -11405,38 +10842,10 @@ "path-exists": "^3.0.0" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -11457,30 +10866,71 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -11490,12 +10940,12 @@ } }, "jest-changed-files": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.8.0.tgz", - "integrity": "sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "execa": "^1.0.0", "throat": "^4.0.0" }, @@ -11540,27 +10990,27 @@ } }, "jest-config": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz", - "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.8.0", - "@jest/types": "^24.8.0", - "babel-jest": "^24.8.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", "chalk": "^2.0.1", "glob": "^7.1.1", - "jest-environment-jsdom": "^24.8.0", - "jest-environment-node": "^24.8.0", - "jest-get-type": "^24.8.0", - "jest-jasmine2": "^24.8.0", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.8.0", - "jest-util": "^24.8.0", - "jest-validate": "^24.8.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", "micromatch": "^3.1.10", - "pretty-format": "^24.8.0", + "pretty-format": "^24.9.0", "realpath-native": "^1.1.0" } }, @@ -11580,64 +11030,64 @@ } }, "jest-diff": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz", - "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", "dev": true, "requires": { "chalk": "^2.0.1", - "diff-sequences": "^24.3.0", - "jest-get-type": "^24.8.0", - "pretty-format": "^24.8.0" + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" } }, "jest-docblock": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz", - "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", "dev": true, "requires": { "detect-newline": "^2.1.0" } }, "jest-each": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz", - "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "chalk": "^2.0.1", - "jest-get-type": "^24.8.0", - "jest-util": "^24.8.0", - "pretty-format": "^24.8.0" + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" } }, "jest-environment-jsdom": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz", - "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", "dev": true, "requires": { - "@jest/environment": "^24.8.0", - "@jest/fake-timers": "^24.8.0", - "@jest/types": "^24.8.0", - "jest-mock": "^24.8.0", - "jest-util": "^24.8.0", + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", "jsdom": "^11.5.1" } }, "jest-environment-node": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz", - "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", "dev": true, "requires": { - "@jest/environment": "^24.8.0", - "@jest/fake-timers": "^24.8.0", - "@jest/types": "^24.8.0", - "jest-mock": "^24.8.0", - "jest-util": "^24.8.0" + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" } }, "jest-environment-puppeteer": { @@ -11653,85 +11103,86 @@ } }, "jest-get-type": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz", - "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", "dev": true }, "jest-haste-map": { - "version": "24.8.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.8.1.tgz", - "integrity": "sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "anymatch": "^2.0.0", "fb-watchman": "^2.0.0", "fsevents": "^1.2.7", "graceful-fs": "^4.1.15", "invariant": "^2.2.4", - "jest-serializer": "^24.4.0", - "jest-util": "^24.8.0", - "jest-worker": "^24.6.0", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", "micromatch": "^3.1.10", "sane": "^4.0.3", "walker": "^1.0.7" } }, "jest-jasmine2": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz", - "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", "chalk": "^2.0.1", "co": "^4.6.0", - "expect": "^24.8.0", + "expect": "^24.9.0", "is-generator-fn": "^2.0.0", - "jest-each": "^24.8.0", - "jest-matcher-utils": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-runtime": "^24.8.0", - "jest-snapshot": "^24.8.0", - "jest-util": "^24.8.0", - "pretty-format": "^24.8.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", "throat": "^4.0.0" } }, "jest-leak-detector": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz", - "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", "dev": true, "requires": { - "pretty-format": "^24.8.0" + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" } }, "jest-matcher-utils": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz", - "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", "dev": true, "requires": { "chalk": "^2.0.1", - "jest-diff": "^24.8.0", - "jest-get-type": "^24.8.0", - "pretty-format": "^24.8.0" + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" } }, "jest-message-util": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz", - "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", "@types/stack-utils": "^1.0.1", "chalk": "^2.0.1", "micromatch": "^3.1.10", @@ -11740,12 +11191,12 @@ } }, "jest-mock": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz", - "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", "dev": true, "requires": { - "@jest/types": "^24.8.0" + "@jest/types": "^24.9.0" } }, "jest-pnp-resolver": { @@ -11765,18 +11216,18 @@ } }, "jest-regex-util": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", - "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", "dev": true }, "jest-resolve": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.8.0.tgz", - "integrity": "sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "browser-resolve": "^1.11.3", "chalk": "^2.0.1", "jest-pnp-resolver": "^1.2.1", @@ -11784,106 +11235,95 @@ } }, "jest-resolve-dependencies": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz", - "integrity": "sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.8.0" + "jest-snapshot": "^24.9.0" } }, "jest-runner": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz", - "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", "dev": true, "requires": { "@jest/console": "^24.7.1", - "@jest/environment": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", "chalk": "^2.4.2", "exit": "^0.1.2", "graceful-fs": "^4.1.15", - "jest-config": "^24.8.0", + "jest-config": "^24.9.0", "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.8.0", - "jest-jasmine2": "^24.8.0", - "jest-leak-detector": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-resolve": "^24.8.0", - "jest-runtime": "^24.8.0", - "jest-util": "^24.8.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", "jest-worker": "^24.6.0", "source-map-support": "^0.5.6", "throat": "^4.0.0" } }, "jest-runtime": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz", - "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", "dev": true, "requires": { "@jest/console": "^24.7.1", - "@jest/environment": "^24.8.0", + "@jest/environment": "^24.9.0", "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.8.0", - "@jest/types": "^24.8.0", - "@types/yargs": "^12.0.2", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", "chalk": "^2.0.1", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.1.15", - "jest-config": "^24.8.0", - "jest-haste-map": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-mock": "^24.8.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.8.0", - "jest-snapshot": "^24.8.0", - "jest-util": "^24.8.0", - "jest-validate": "^24.8.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", "realpath-native": "^1.1.0", "slash": "^2.0.0", "strip-bom": "^3.0.0", - "yargs": "^12.0.2" + "yargs": "^13.3.0" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, "find-up": { @@ -11895,30 +11335,12 @@ "locate-path": "^3.0.0" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -11929,38 +11351,10 @@ "path-exists": "^3.0.0" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -11981,30 +11375,71 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -12014,42 +11449,61 @@ } }, "jest-serializer": { - "version": "24.4.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz", - "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", "dev": true }, + "jest-silent-reporter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/jest-silent-reporter/-/jest-silent-reporter-0.1.2.tgz", + "integrity": "sha512-w/qc9NvWqdX0vZv6TUG4EE15d72+JxQJYh+3hqq8cTi3BnfBOtwNtL3T6TwkZSy/sfc3REW5niz0eSBPTIvWnA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "jest-util": "^24.0.0" + } + }, "jest-snapshot": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz", - "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", "dev": true, "requires": { "@babel/types": "^7.0.0", - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "chalk": "^2.0.1", - "expect": "^24.8.0", - "jest-diff": "^24.8.0", - "jest-matcher-utils": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-resolve": "^24.8.0", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^24.8.0", - "semver": "^5.5.0" + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "jest-util": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz", - "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/fake-timers": "^24.8.0", - "@jest/source-map": "^24.3.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", "callsites": "^3.0.0", "chalk": "^2.0.1", "graceful-fs": "^4.1.15", @@ -12068,17 +11522,17 @@ } }, "jest-validate": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz", - "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", "dev": true, "requires": { - "@jest/types": "^24.8.0", - "camelcase": "^5.0.0", + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", "chalk": "^2.0.1", - "jest-get-type": "^24.8.0", - "leven": "^2.1.0", - "pretty-format": "^24.8.0" + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" }, "dependencies": { "camelcase": { @@ -12090,27 +11544,27 @@ } }, "jest-watcher": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.8.0.tgz", - "integrity": "sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", "dev": true, "requires": { - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", - "@types/yargs": "^12.0.9", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", - "jest-util": "^24.8.0", + "jest-util": "^24.9.0", "string-length": "^2.0.0" } }, "jest-worker": { - "version": "24.6.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", - "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "^1.0.1", + "merge-stream": "^2.0.0", "supports-color": "^6.1.0" }, "dependencies": { @@ -12152,6 +11606,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "jsdoctypeparser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-5.0.1.tgz", + "integrity": "sha512-dYwcK6TKzvq+ZKtbp4sbQSW9JMo6s+4YFfUs5D/K7bZsn3s1NhEhZ+jmIPzby0HbkbECBe+hNPEa6a+E21o94w==", + "dev": true + }, "jsdom": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", @@ -12186,12 +11646,6 @@ "xml-name-validator": "^3.0.0" }, "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, "parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", @@ -12337,9 +11791,9 @@ "dev": true }, "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, "levn": { @@ -12767,13 +12221,10 @@ "dev": true }, "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { "version": "1.2.4", @@ -12974,6 +12425,12 @@ "minimist": "0.0.8" } }, + "mkpath": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", + "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=", + "dev": true + }, "moment": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", @@ -13144,9 +12601,9 @@ "dev": true }, "node-notifier": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.1.tgz", - "integrity": "sha512-p52B+onAEHKW1OF9MGO/S7k/ahGEHfhP5/tvwYzog/5XLYOd8ZuD6vdNZdUuWMONRnKPneXV43v3s6Snx1wsCQ==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", "dev": true, "requires": { "growly": "^1.3.0", @@ -13157,9 +12614,9 @@ } }, "node-releases": { - "version": "1.1.25", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.25.tgz", - "integrity": "sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ==", + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.29.tgz", + "integrity": "sha512-R5bDhzh6I+tpi/9i2hrrvGJ3yKPYzlVOORDkXhnZuwi5D3q1I5w4vYy24PJXTcLk9Q0kws9TO77T75bcK8/ysQ==", "dev": true, "requires": { "semver": "^5.3.0" @@ -13232,9 +12689,9 @@ }, "dependencies": { "ignore": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.2.tgz", - "integrity": "sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", "dev": true } } @@ -13416,6 +12873,12 @@ "has": "^1.0.3" } }, + "object.entries-ponyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.entries-ponyfill/-/object.entries-ponyfill-1.0.1.tgz", + "integrity": "sha1-Kavfd8v70mVm3RqiTp2I9lQz0lY=", + "dev": true + }, "object.fromentries": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", @@ -13800,12 +13263,6 @@ "sha.js": "^2.4.8" } }, - "pegjs": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", - "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", - "dev": true - }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -13924,9 +13381,9 @@ "dev": true }, "portfinder": { - "version": "1.0.21", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.21.tgz", - "integrity": "sha512-ESabpDCzmBS3ekHbmpAIiESq3udRsCBGiBZLsC+HgBKv2ezb0R4oG+7RnYEVZ/ZCfhel5Tx3UzdNWA0Lox2QCA==", + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.23.tgz", + "integrity": "sha512-B729mL/uLklxtxuiJKfQ84WPxNw5a7Yhx3geQZdcA4GjNjZSTSSMMWyoennMVnTWSmAR0lMdzWYN0JLnHrg1KQ==", "dev": true, "requires": { "async": "^1.5.2", @@ -15123,12 +14580,12 @@ "dev": true }, "pretty-format": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz", - "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "ansi-regex": "^4.0.0", "ansi-styles": "^3.2.0", "react-is": "^16.8.4" @@ -15247,9 +14704,9 @@ "dev": true }, "psl": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", - "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.1.tgz", + "integrity": "sha512-2KLd5fKOdAfShtY2d/8XDWVRnmp3zp40Qt6ge2zBPFARLXOGUf2fHD5eg+TV/5oxBtQKVhjUaKFsAaE4HnwfSA==", "dev": true }, "public-encrypt": { @@ -15306,25 +14763,25 @@ "dev": true }, "puppeteer": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.6.1.tgz", - "integrity": "sha512-qz6DLwK+PhlBMjJZOMOsgVCnweYLtmiqnmJYUDPT++ElMz+cQgbsCNKPw4YDVpg3RTbsRX/pqQqr20zrp0cuKw==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.19.0.tgz", + "integrity": "sha512-2S6E6ygpoqcECaagDbBopoSOPDv0pAZvTbnBgUY+6hq0/XDFDOLEMNlHF/SKJlzcaZ9ckiKjKDuueWI3FN/WXw==", "dev": true, "requires": { - "debug": "^3.1.0", + "debug": "^4.1.0", "extract-zip": "^1.6.6", "https-proxy-agent": "^2.2.1", "mime": "^2.0.3", - "progress": "^2.0.0", + "progress": "^2.0.1", "proxy-from-env": "^1.0.0", "rimraf": "^2.6.1", - "ws": "^5.1.1" + "ws": "^6.1.0" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -15335,6 +14792,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } } } }, @@ -15441,9 +14907,9 @@ } }, "re-resizable": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-5.0.1.tgz", - "integrity": "sha512-Iy8v5li7bhNBDxCN1DbA4l6G2Hk8NCZtcExoI1D+5pfvKyQcH8LH2P5h3DGoEfHhs0uyyRC1Qx8bHBomfrmxgA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.0.0.tgz", + "integrity": "sha512-RTrnhbGgYyZ4hTc6db4JeMnRfmloEPWtuYaXZEa2PRaEC4mreWNFnZtMVsHil3z3iX+WchD+da8BLlTJBcstMA==", "dev": true, "requires": { "fast-memoize": "^2.5.1" @@ -15571,15 +15037,33 @@ } }, "react-test-renderer": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.8.6.tgz", - "integrity": "sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw==", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.9.0.tgz", + "integrity": "sha512-R62stB73qZyhrJo7wmCW9jgl/07ai+YzvouvCXIJLBkRlRqLx4j9RqcLEAfNfU3OxTGucqR2Whmn3/Aad6L3hQ==", "dev": true, "requires": { "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "react-is": "^16.8.6", - "scheduler": "^0.13.6" + "react-is": "^16.9.0", + "scheduler": "^0.15.0" + }, + "dependencies": { + "react-is": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", + "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", + "dev": true + }, + "scheduler": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", + "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } } }, "react-with-direction": { @@ -15869,9 +15353,9 @@ } }, "regexp-tree": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz", - "integrity": "sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.12.tgz", + "integrity": "sha512-TsXZ8+cv2uxMEkLfgwO0E068gsNMLfuYwMMhiUxf0Kw2Vcgzq93vgl6wIlIYuPmfMqMjfQ9zAporiozqCnwLuQ==", "dev": true }, "regexpp": { @@ -15881,19 +15365,25 @@ "dev": true }, "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.5.tgz", + "integrity": "sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", + "regenerate-unicode-properties": "^8.1.0", "regjsgen": "^0.5.0", "regjsparser": "^0.6.0", "unicode-match-property-ecmascript": "^1.0.4", "unicode-match-property-value-ecmascript": "^1.1.0" } }, + "regextras": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.6.1.tgz", + "integrity": "sha512-EzIHww9xV2Kpqx+corS/I7OBmf2rZ0pKKJPsw5Dc+l6Zq1TslDmtRIP9maVn3UH+72MIXmn8zzDgP07ihQogUA==", + "dev": true + }, "regjsgen": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", @@ -17276,9 +16766,15 @@ } }, "ignore": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.2.tgz", - "integrity": "sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", "dev": true }, "ms": { @@ -17336,16 +16832,16 @@ } }, "stylelint-scss": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.9.3.tgz", - "integrity": "sha512-pLLpwSpUwiqpAga/C22ZuN/d5ql2zVWGzG8MO+P3DQYcDNue3eZGvda/bJdkx4mDcVy06jlDt+BgSvMYUrwleQ==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.10.0.tgz", + "integrity": "sha512-cz0CiJ/CEOY9arl1OA7Epb68F+L5iXBVZSOzTdK5AymoTM5dpll4QGeggMIsKN5Put8ZtQ3OwzYXexkPKs15PQ==", "dev": true, "requires": { - "lodash": "^4.17.11", + "lodash": "^4.17.15", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "postcss-value-parser": "^4.0.2" }, "dependencies": { "postcss-selector-parser": { @@ -17360,9 +16856,9 @@ } }, "postcss-value-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.0.tgz", - "integrity": "sha512-ESPktioptiSUchCKgggAkzdmkgzKfmp0EU8jXH+5kbIUB+unr0Y4CY9SRMvibuvYUBjNh1ACLbxqYNpdTQOteQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", "dev": true } } @@ -17668,9 +17164,9 @@ "dev": true }, "thread-loader": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.2.tgz", - "integrity": "sha512-7xpuc9Ifg6WU+QYw/8uUqNdRwMD+N5gjwHKMqETrs96Qn+7BHwECpt2Brzr4HFlf4IAkZsayNhmGdbkBsTJ//w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", "dev": true, "requires": { "loader-runner": "^2.3.1", @@ -17833,6 +17329,26 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, + "touch": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", + "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", + "dev": true, + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -18914,6 +18430,12 @@ "ws": "^6.0.0" }, "dependencies": { + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true + }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", diff --git a/package.json b/package.json index 60825a9e151..3bf966a8796 100644 --- a/package.json +++ b/package.json @@ -29,47 +29,47 @@ "@babel/core": "7.5.5", "@babel/plugin-proposal-object-rest-spread": "7.5.5", "@babel/plugin-transform-react-jsx": "7.3.0", - "@wordpress/babel-preset-default": "4.4.0", + "@wordpress/babel-preset-default": "4.5.0", "@wordpress/blob": "2.5.0", "@wordpress/block-editor": "3.0.0", - "@wordpress/blocks": "6.5.0", + "@wordpress/blocks": "6.6.0", "@wordpress/browserslist-config": "2.6.0", - "@wordpress/components": "8.1.0", - "@wordpress/compose": "3.5.0", - "@wordpress/data": "4.7.0", - "@wordpress/date": "3.4.0", + "@wordpress/components": "8.2.0", + "@wordpress/compose": "3.6.0", + "@wordpress/data": "4.8.0", + "@wordpress/date": "3.5.0", "@wordpress/dom-ready": "2.5.0", - "@wordpress/e2e-test-utils": "2.2.0", - "@wordpress/edit-post": "3.6.0", - "@wordpress/editor": "9.5.0", - "@wordpress/element": "2.6.0", - "@wordpress/eslint-plugin": "2.4.0", - "@wordpress/hooks": "2.5.0", + "@wordpress/e2e-test-utils": "2.3.0", + "@wordpress/edit-post": "3.7.0", + "@wordpress/editor": "9.6.0", + "@wordpress/element": "2.7.0", + "@wordpress/eslint-plugin": "3.0.0", + "@wordpress/hooks": "2.6.0", "@wordpress/i18n": "3.6.0", - "@wordpress/keycodes": "2.5.0", - "@wordpress/plugins": "2.5.0", + "@wordpress/keycodes": "2.6.0", + "@wordpress/plugins": "2.6.0", "@wordpress/postcss-themes": "2.2.0", - "@wordpress/rich-text": "3.5.0", - "@wordpress/scripts": "3.4.0", + "@wordpress/rich-text": "3.6.0", + "@wordpress/scripts": "4.1.0", "@wordpress/server-side-render": "1.1.0", "@wordpress/url": "2.7.0", - "@wordpress/wordcount": "2.5.0", + "@wordpress/wordcount": "2.6.0", "autoprefixer": "9.6.1", "babel-eslint": "10.0.3", "babel-jest": "24.9.0", "babel-loader": "8.0.6", "babel-plugin-inline-react-svg": "1.1.0", "babel-plugin-transform-react-remove-prop-types": "0.4.24", - "browserslist": "4.6.6", + "browserslist": "4.7.0", "core-js": "3.2.1", - "cross-env": "5.2.0", + "cross-env": "5.2.1", "css-loader": "3.2.0", "cssnano": "4.1.10", "enzyme": "3.10.0", - "eslint": "6.2.2", + "eslint": "6.3.0", "eslint-plugin-eslint-comments": "3.1.2", "eslint-plugin-import": "2.18.2", - "eslint-plugin-jest": "22.15.2", + "eslint-plugin-jest": "22.16.0", "eslint-plugin-react": "7.14.3", "eslint-utils": "1.4.2", "grunt": "1.0.4", @@ -77,6 +77,7 @@ "grunt-contrib-copy": "1.0.0", "grunt-shell": "3.0.1", "grunt-wp-deploy": "2.0.0", + "jest-silent-reporter": "0.1.2", "lodash": "4.17.15", "mini-css-extract-plugin": "0.8.0", "moment": "2.24.0", @@ -126,7 +127,7 @@ "lint:pkg-json": "wp-scripts lint-pkg-json --ignorePath .gitignore", "start": "wp-scripts start", "test": "npm-run-all --parallel test:*", - "test:e2e": "WP_BASE_URL=http://localhost:8890 wp-scripts test-e2e --config=tests/e2e/jest.config.js", + "test:e2e": "cross-env WP_BASE_URL=http://localhost:8890 wp-scripts test-e2e --config=tests/e2e/jest.config.js", "test:e2e:help": "npm run test:e2e -- --help", "test:e2e:watch": "npm run test:e2e -- --watch", "test:e2e:interactive": "npm run test:e2e -- --puppeteer-interactive", diff --git a/readme.md b/readme.md index 19ad9d8b2f3..412700aa40a 100644 --- a/readme.md +++ b/readme.md @@ -8,7 +8,7 @@ Enable AMP on your WordPress site, the WordPress way. **Tags:** [amp](https://wordpress.org/plugins/tags/amp), [framework](https://wordpress.org/plugins/tags/framework), [components](https://wordpress.org/plugins/tags/components), [performance](https://wordpress.org/plugins/tags/performance), [mobile](https://wordpress.org/plugins/tags/mobile), [stories](https://wordpress.org/plugins/tags/stories) **Requires at least:** 4.9 **Tested up to:** 5.2 -**Stable tag:** 1.2.1 +**Stable tag:** 1.2.2 **License:** [GPLv2 or later](http://www.gnu.org/licenses/gpl-2.0.html) **Requires PHP:** 5.4 diff --git a/readme.txt b/readme.txt index 76132ab8f44..733798dc355 100644 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,7 @@ Contributors: google, xwp, automattic, westonruter, swissspidy, miinasikk, ryank Tags: amp, framework, components, performance, mobile, stories Requires at least: 4.9 Tested up to: 5.2 -Stable tag: 1.2.1 +Stable tag: 1.2.2 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Requires PHP: 5.4 diff --git a/tests/e2e/config/bootstrap.js b/tests/e2e/config/bootstrap.js index 101dd2560d9..38dbc0b7ef2 100644 --- a/tests/e2e/config/bootstrap.js +++ b/tests/e2e/config/bootstrap.js @@ -122,9 +122,12 @@ function observeConsoleLogging() { } ); } -// Before every test suite run, delete all content created by the test. This ensures -// other posts/comments/etc. aren't dirtying tests and tests don't depend on -// each other's side-effects. +/* + Before every test suite run, delete all content created by the test. This ensures + other posts/comments/etc. aren't dirtying tests and tests don't depend on + each other's side-effects. +*/ +// eslint-disable-next-line jest/require-top-level-describe beforeAll( async () => { capturePageEventsForTearDown(); enablePageDialogAccept(); @@ -132,11 +135,13 @@ beforeAll( async () => { await setBrowserViewport( 'large' ); } ); +// eslint-disable-next-line jest/require-top-level-describe afterEach( async () => { await clearLocalStorage(); await setBrowserViewport( 'large' ); } ); +// eslint-disable-next-line jest/require-top-level-describe afterAll( () => { removePageEvents(); } ); diff --git a/tests/e2e/jest.config.js b/tests/e2e/jest.config.js index c094f15d2fb..67e8039b186 100644 --- a/tests/e2e/jest.config.js +++ b/tests/e2e/jest.config.js @@ -10,12 +10,9 @@ module.exports = { '/config/bootstrap.js', 'expect-puppeteer', ], - testMatch: [ - '**/specs/**/*.js', - '**/?(*.)spec.js', - ], testPathIgnorePatterns: [ '.git', 'node_modules', ], + reporters: [ [ 'jest-silent-reporter', { useDots: true } ] ], }; diff --git a/tests/e2e/specs/stories-editor/media-inserter.js b/tests/e2e/specs/stories-editor/media-inserter.js index c47b6201e42..00037903e03 100644 --- a/tests/e2e/specs/stories-editor/media-inserter.js +++ b/tests/e2e/specs/stories-editor/media-inserter.js @@ -3,7 +3,9 @@ */ import { createNewPost, + getAllBlocks, saveDraft, + selectBlockByClientId, } from '@wordpress/e2e-test-utils'; /** @@ -15,6 +17,7 @@ import { uploadMedia, openPreviewPage, clickButton, + openMediaInserter, } from '../../utils'; const LARGE_IMAGE = 'large-image-36521.jpg'; @@ -44,8 +47,7 @@ describe( 'Stories Editor Screen', () => { it( 'should be possible to add Background Image', async () => { // Click the media selection button. - await page.waitForSelector( '.amp-story-media-inserter-dropdown' ); - await page.click( '.amp-story-media-inserter-dropdown' ); + await openMediaInserter(); await clickButton( 'Insert Background Image' ); await uploadMedia( LARGE_IMAGE ); @@ -68,10 +70,29 @@ describe( 'Stories Editor Screen', () => { expect( src ).toContain( 'wp-content/uploads' ); } ); + it( 'should be possible to update Background Image', async () => { + // Click the media selection button. + await openMediaInserter(); + await clickButton( 'Insert Background Image' ); + await uploadMedia( LARGE_IMAGE ); + + // Insert the image. + await page.click( '.media-modal button.media-button-select' ); + + // Wait for media to be inserted. + await page.waitForSelector( '.components-focal-point-picker-wrapper' ); + + await openMediaInserter(); + + const nodes = await page.$x( + `//button[contains(text(), 'Update Background Image')]` + ); + expect( nodes ).toHaveLength( 1 ); + } ); + it( 'should be possible to add Background Video', async () => { // Click the media selection button. - await page.waitForSelector( '.amp-story-media-inserter-dropdown' ); - await page.click( '.amp-story-media-inserter-dropdown' ); + await openMediaInserter(); await clickButton( 'Insert Background Video' ); await uploadMedia( LARGE_VIDEO ); @@ -87,8 +108,7 @@ describe( 'Stories Editor Screen', () => { it( 'should be possible to add Image block', async () => { // Click the media selection button. - await page.waitForSelector( '.amp-story-media-inserter-dropdown' ); - await page.click( '.amp-story-media-inserter-dropdown' ); + await openMediaInserter(); await clickButton( 'Insert Image' ); // Click the media library button. await page.waitForSelector( MEDIA_LIBRARY_BUTTON ); @@ -106,8 +126,7 @@ describe( 'Stories Editor Screen', () => { it( 'should be possible to add Video block', async () => { // Click the media selection button. - await page.waitForSelector( '.amp-story-media-inserter-dropdown' ); - await page.click( '.amp-story-media-inserter-dropdown' ); + await openMediaInserter(); await clickButton( 'Insert Video' ); // Click the media library button. await page.waitForSelector( MEDIA_LIBRARY_BUTTON ); @@ -122,4 +141,26 @@ describe( 'Stories Editor Screen', () => { // Wait for image to appear in the block. await expect( page ).toMatchElement( '.wp-block-video video' ); } ); + + it( 'should dropdown title should change after sidebar upload', async () => { + await selectBlockByClientId( + ( await getAllBlocks() )[ 0 ].clientId + ); + // Click the media selection button. + await page.waitForSelector( '.editor-amp-story-page-background' ); + await page.click( '.editor-amp-story-page-background' ); + await uploadMedia( LARGE_IMAGE ); + + // Insert the image. + await page.click( '.media-modal button.media-button-select' ); + + // Wait for media to be inserted. + await page.waitForSelector( '.components-focal-point-picker-wrapper' ); + // Click the media selection button. + await openMediaInserter(); + const nodes = await page.$x( + `//button[contains(text(), 'Update Background Image')]` + ); + expect( nodes ).toHaveLength( 1 ); + } ); } ); diff --git a/tests/e2e/specs/stories-editor/resizing.js b/tests/e2e/specs/stories-editor/resizing.js index 01204dc56c2..a0097aaf4e8 100644 --- a/tests/e2e/specs/stories-editor/resizing.js +++ b/tests/e2e/specs/stories-editor/resizing.js @@ -40,7 +40,7 @@ async function getSelectedBlockPosition() { /** * Returns the selected block's width and height. * - * @returns {Promise<{width: number, height: number}>} Block dimensions. + * @return {Promise<{width: number, height: number}>} Block dimensions. */ // eslint-disable-next-line require-await async function getSelectedBlockDimensions() { @@ -112,13 +112,78 @@ describe( 'Resizing', () => { expect( positionLeftAfter ).toStrictEqual( positionLeft ); } ); - it( 'should change the width and height correctly when resizing from topLeft corner', async () => { + it( 'should change the width and height correctly when resizing: topLeft', async () => { const resizableHandleTopLeft = await page.$( '.wp-block.is-selected .components-resizable-box__handle-left.components-resizable-box__handle-top' ); await dragAndResize( resizableHandleTopLeft, { x: -100, y: -100 } ); const { width, height } = await getSelectedBlockDimensions(); expect( width ).toStrictEqual( 350 ); expect( height ).toStrictEqual( 160 ); } ); + + it( 'should change the top position correctly when resizing: topRight', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-right.components-resizable-box__handle-top' ); + await dragAndResize( handle, { x: -100, y: 100 } ); + + const { positionLeft, positionTop } = await getSelectedBlockPosition(); + expect( positionLeft ).toStrictEqual( '5%' ); + expect( positionTop ).toStrictEqual( '9.95%' ); + } ); + + it( 'should not change the top and left position when resizing: right', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-right' ); + await dragAndResize( handle, { x: -100, y: 0 } ); + + const { positionLeft, positionTop } = await getSelectedBlockPosition(); + expect( positionLeft ).toStrictEqual( '5%' ); + expect( positionTop ).toStrictEqual( '10%' ); + } ); + + it( 'should not change the top and left position when resizing: bottomRight', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-right.components-resizable-box__handle-bottom' ); + await dragAndResize( handle, { x: 100, y: 100 } ); + + const { positionLeft, positionTop } = await getSelectedBlockPosition(); + expect( positionLeft ).toStrictEqual( '5%' ); + expect( positionTop ).toStrictEqual( '10%' ); + } ); + + it( 'should not change the top and left position when resizing: bottom', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-bottom' ); + await dragAndResize( handle, { x: 0, y: -100 } ); + + const { positionLeft, positionTop } = await getSelectedBlockPosition(); + expect( positionLeft ).toStrictEqual( '5%' ); + expect( positionTop ).toStrictEqual( '10%' ); + } ); + + it( 'should change the left position correctly when resizing: bottomLeft', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-left.components-resizable-box__handle-bottom' ); + await dragAndResize( handle, { x: -100, y: -100 } ); + + const { positionLeft, positionTop } = await getSelectedBlockPosition(); + expect( positionLeft ).toStrictEqual( '-25.61%' ); + expect( positionTop ).toStrictEqual( '10%' ); + } ); } ); describe( 'Rotated Text block', () => { @@ -130,6 +195,10 @@ describe( 'Resizing', () => { } ); it( 'should change the top and left position correctly when resizing a rotated block: left', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-left' ); await dragAndResize( handle, { x: 100, y: 0 } ); @@ -139,6 +208,10 @@ describe( 'Resizing', () => { } ); it( 'should change the top and left position correctly when resizing a rotated block: topLeft', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-left.components-resizable-box__handle-top' ); await dragAndResize( handle, { x: 100, y: -100 } ); @@ -148,6 +221,10 @@ describe( 'Resizing', () => { } ); it( 'should change the top and left position correctly when resizing a rotated block: top', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-top' ); await dragAndResize( handle, { x: 0, y: -100 } ); @@ -157,33 +234,49 @@ describe( 'Resizing', () => { } ); it( 'should change the top and left position correctly when resizing a rotated block: topRight', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-right.components-resizable-box__handle-top' ); await dragAndResize( handle, { x: -100, y: 100 } ); const { positionLeft, positionTop } = await getSelectedBlockPosition(); - expect( positionLeft ).toStrictEqual( '5%' ); - expect( positionTop ).toStrictEqual( '10%' ); + expect( positionLeft ).toStrictEqual( '8.3%' ); + expect( positionTop ).toStrictEqual( '12.59%' ); } ); it( 'should change the top and left position correctly when resizing a rotated block: right', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-right' ); await dragAndResize( handle, { x: -100, y: 0 } ); const { positionLeft, positionTop } = await getSelectedBlockPosition(); - expect( positionLeft ).toStrictEqual( '5%' ); - expect( positionTop ).toStrictEqual( '10%' ); + expect( positionLeft ).toStrictEqual( '7.8%' ); + expect( positionTop ).toStrictEqual( '12.21%' ); } ); it( 'should change the top and left position correctly when resizing a rotated block: bottomRight', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-right.components-resizable-box__handle-bottom' ); await dragAndResize( handle, { x: 100, y: 100 } ); const { positionLeft, positionTop } = await getSelectedBlockPosition(); - expect( positionLeft ).toStrictEqual( '5%' ); - expect( positionTop ).toStrictEqual( '10%' ); + expect( positionLeft ).toStrictEqual( '30.9%' ); + expect( positionTop ).toStrictEqual( '7.91%' ); } ); it( 'should change the top and left position correctly when resizing a rotated block: bottom', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-bottom' ); await dragAndResize( handle, { x: 0, y: -100 } ); @@ -193,6 +286,10 @@ describe( 'Resizing', () => { } ); it( 'should change the top and left position correctly when resizing a rotated block: bottomLeft', async () => { + const { positionLeft: positionLeftBefore, positionTop: positionTopBefore } = await getSelectedBlockPosition(); + expect( positionLeftBefore ).toStrictEqual( '5%' ); + expect( positionTopBefore ).toStrictEqual( '10%' ); + const handle = await page.$( '.wp-block.is-selected .components-resizable-box__handle-left.components-resizable-box__handle-bottom' ); await dragAndResize( handle, { x: -100, y: -100 } ); diff --git a/tests/e2e/specs/stories-editor/story-templates.js b/tests/e2e/specs/stories-editor/story-templates.js index 0715779d0a8..e36bed5e11c 100644 --- a/tests/e2e/specs/stories-editor/story-templates.js +++ b/tests/e2e/specs/stories-editor/story-templates.js @@ -15,6 +15,54 @@ import { searchForBlock as searchForStoryBlock, } from '../../utils'; +/** + * Adds a reusable block. + */ +async function addReusableBlock() { + await createNewPost(); + + const isTopToolbarEnabled = await page.$eval( '.edit-post-layout', ( layout ) => { + return layout.classList.contains( 'has-fixed-toolbar' ); + } ); + if ( ! isTopToolbarEnabled ) { + await clickOnMoreMenuItem( 'Top Toolbar' ); + } + + // Remove all blocks from the post so that we're working with a clean slate. + await page.evaluate( () => { + const blocks = wp.data.select( 'core/block-editor' ).getBlocks(); + const clientIds = blocks.map( ( block ) => block.clientId ); + wp.data.dispatch( 'core/block-editor' ).removeBlocks( clientIds ); + } ); + + // Insert a paragraph block + await insertBlock( 'Paragraph' ); + await page.keyboard.type( 'Reusable block!' ); + + await clickButtonByLabel( 'More options' ); + + const convertButton = await page.waitForXPath( '//button[text()="Add to Reusable Blocks"]' ); + await convertButton.click(); + // Wait for the snackbar confirmation of the block creation result. + await page.waitForSelector( '.components-snackbar__content' ); +} + +/** + * Removes all reusable blocks visible on the wp_blocks edit screen. + */ +async function removeAllReusableBlocks() { + await visitAdminPage( 'edit.php', 'post_type=wp_block' ); + + // Delete all reusable blocks to restore clean state. + const selector = '#cb-select-all-1'; + const actionsSelector = '#bulk-action-selector-top'; + + await page.click( selector ); + await page.select( actionsSelector, 'trash' ); + await page.click( '#doaction' ); + await page.waitForNavigation(); +} + describe( 'Story Templates', () => { describe( 'Stories experience disabled', () => { it( 'should hide story templates from the reusable blocks management screen', async () => { @@ -31,53 +79,23 @@ describe( 'Story Templates', () => { } ); describe( 'With non-template Reusable block', () => { - // Add Reusable block. beforeAll( async () => { - await createNewPost(); - - const isTopToolbarEnabled = await page.$eval( '.edit-post-layout', ( layout ) => { - return layout.classList.contains( 'has-fixed-toolbar' ); - } ); - if ( ! isTopToolbarEnabled ) { - await clickOnMoreMenuItem( 'Top Toolbar' ); - } - - // Remove all blocks from the post so that we're working with a clean slate. - await page.evaluate( () => { - const blocks = wp.data.select( 'core/block-editor' ).getBlocks(); - const clientIds = blocks.map( ( block ) => block.clientId ); - wp.data.dispatch( 'core/block-editor' ).removeBlocks( clientIds ); - } ); - - // Insert a paragraph block - await insertBlock( 'Paragraph' ); - await page.keyboard.type( 'Reusable block!' ); - - await clickButtonByLabel( 'More options' ); - - const convertButton = await page.waitForXPath( '//button[text()="Add to Reusable Blocks"]' ); - await convertButton.click(); + await addReusableBlock(); } ); afterAll( async () => { - await visitAdminPage( 'edit.php', 'post_type=wp_block' ); - - // Delete all reusable blocks to restore clean state. - const selector = '#cb-select-all-1'; - const actionsSelector = '#bulk-action-selector-top'; - - await page.click( selector ); - await page.select( actionsSelector, 'trash' ); - await page.click( '#doaction' ); - await page.waitForNavigation(); + await removeAllReusableBlocks(); } ); it( 'should display non-template reusable blocks in the reusable blocks management screen', async () => { + const titleSelector = '.page-title .row-title'; + await visitAdminPage( 'edit.php', 'post_type=wp_block' ); + await page.waitForSelector( titleSelector ); // Check that it is untitled const title = await page.$eval( - '.page-title .row-title', + titleSelector, ( element ) => element.innerText ); expect( title ).toBe( 'Untitled Reusable Block' ); @@ -99,6 +117,7 @@ describe( 'Story Templates', () => { afterAll( async () => { await deactivateExperience( 'stories' ); + await removeAllReusableBlocks(); } ); it( 'should hide story templates from the reusable blocks management screen', async () => { @@ -130,6 +149,14 @@ describe( 'Story Templates', () => { expect( numberOfTemplates ).toStrictEqual( 11 ); // 10 default templates plus the empty page. } ); + it( 'should not load default reusable blocks in the stories editor', async () => { + await addReusableBlock(); + await createNewPost( { postType: 'amp_story' } ); + await searchForStoryBlock( 'Reusable' ); + + await expect( page ).toMatchElement( '.block-editor-inserter__no-results' ); + } ); + it( 'should insert the correct blocks and as skeletons when clicking on a template', async () => { await createNewPost( { postType: 'amp_story' } ); diff --git a/tests/e2e/utils/index.js b/tests/e2e/utils/index.js index 9cdfb59ec4b..6fb07a8c355 100644 --- a/tests/e2e/utils/index.js +++ b/tests/e2e/utils/index.js @@ -8,6 +8,7 @@ export { clickOnMoreMenuItem } from './click-on-more-menu-item'; export { getSidebarPanelToggleByTitle } from './get-sidebar-panel-toggle-by-title'; export { insertBlock } from './insert-block'; export { openGlobalBlockInserter } from './open-global-block-inserter'; +export { openMediaInserter } from './open-media-inserter'; export { openPreviewPage } from './open-preview-page'; export { openTemplateInserter } from './open-template-inserter'; export { searchForBlock } from './search-for-block'; diff --git a/tests/e2e/utils/open-media-inserter.js b/tests/e2e/utils/open-media-inserter.js new file mode 100644 index 00000000000..9c1fde663f6 --- /dev/null +++ b/tests/e2e/utils/open-media-inserter.js @@ -0,0 +1,8 @@ +/** + * Helper function to open media inserter dropdown. + * + */ +export async function openMediaInserter() { + await page.waitForSelector( '.amp-story-media-inserter-dropdown' ); + await page.click( '.amp-story-media-inserter-dropdown' ); +} diff --git a/tests/e2e/utils/wp-data-select.js b/tests/e2e/utils/wp-data-select.js index fac2bebcb3c..05b92b0a6db 100644 --- a/tests/e2e/utils/wp-data-select.js +++ b/tests/e2e/utils/wp-data-select.js @@ -1,5 +1,6 @@ /** * Queries the WordPress data module. + * * @param {string} store Store to query e.g: core/editor, core/blocks... * @param {string} selector Selector to exectute e.g: getBlocks. * @param {...Object} parameters Parameters to pass to the selector. diff --git a/tests/js/jest.config.js b/tests/js/jest.config.js index aa91451acae..a350f00e8a8 100644 --- a/tests/js/jest.config.js +++ b/tests/js/jest.config.js @@ -7,11 +7,6 @@ module.exports = { setupFiles: [ '/tests/js/setup-globals', ], - testMatch: [ - '**/__tests__/**/*.js', - '**/test/*.js', - '**/?(*.)test.js', - ], testPathIgnorePatterns: [ '/.git', '/node_modules', @@ -20,4 +15,5 @@ module.exports = { coveragePathIgnorePatterns: [ '/node_modules/', '/build/' ], coverageReporters: [ 'lcov' ], coverageDirectory: '/build/logs', + reporters: [ [ 'jest-silent-reporter', { useDots: true } ] ], }; diff --git a/tests/php/test-amp-analytics-options.php b/tests/php/test-amp-analytics-options.php index 36dfd3d367e..76bab7bac99 100644 --- a/tests/php/test-amp-analytics-options.php +++ b/tests/php/test-amp-analytics-options.php @@ -261,8 +261,19 @@ public function test_amp_print_analytics() { $analytics = amp_get_analytics(); + $trigger_count = 0; + add_action( + 'amp_print_analytics', + function ( $entries ) use ( $analytics, &$trigger_count ) { + $this->assertEquals( $analytics, $entries ); + $trigger_count++; + } + ); + $output = get_echo( 'amp_print_analytics', [ $analytics ] ); + $this->assertEquals( 1, $trigger_count ); + $this->assertStringStartsWith( 'assertContains( 'type="googleanalytics"> + + + + ', null, [ 'amp-form', 'amp-autocomplete' ], @@ -1705,6 +1757,63 @@ public function get_html_data() { [], [ 'duplicate_element' ], ], + 'meta_amp_script_src' => [ + '', + null, // No change. + ], + 'link_without_valid_mandatory_href' => [ + '', + '', + ], + ]; + + $bad_dev_mode_document = sprintf( + ' + + + + + + + + + + + + + + ', + 'button::before { content:"' . str_repeat( 'a', 50001 ) . '";"}', + '{"foo":"' . str_repeat( 'b', 100001 ) . '"}' + ); + + $data['dev_mode_test'] = [ + $bad_dev_mode_document, + null, + [ 'amp-bind' ], + [], // All validation errors suppressed. + ]; + + $data['bad_document_without_dev_mode'] = [ + str_replace( 'data-ampdevmode', '', $bad_dev_mode_document ), + ' + + + + + + + + + + ', + [ 'amp-bind' ], + [ + 'invalid_attribute', + 'invalid_element', + 'invalid_element', + 'invalid_element', + ], ]; // Also include the body tests. @@ -1793,7 +1902,7 @@ public function test_replace_node_with_children_validation_errors() { 'code' => 'invalid_element', 'node_attributes' => [ 'class' => 'baz-invalid' ], ]; - $content[] = 'Invalid a tag.'; + $content[] = 'Invalid a tag.'; $expected_errors[] = [ 'node_name' => 'amp-story-grid-layer', 'parent_name' => 'body', diff --git a/tests/php/validation/test-class-amp-validation-manager.php b/tests/php/validation/test-class-amp-validation-manager.php index c003916e7fd..62612ca5aeb 100644 --- a/tests/php/validation/test-class-amp-validation-manager.php +++ b/tests/php/validation/test-class-amp-validation-manager.php @@ -1469,6 +1469,7 @@ public function test_enqueue_block_validation() { $script = wp_scripts()->registered[ $slug ]; $expected_dependencies = [ 'lodash', + 'react', 'wp-block-editor', 'wp-components', 'wp-compose',