From c9cafa7ab7df04c4a1e3b669272c441b62c194d8 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 16 Apr 2020 15:50:07 -0700 Subject: [PATCH] BOD-35 Refactored email screen to use TinyMCE + added templates schema + base level email generation --- client/package.json | 4 +- .../src/components/_test/test.component.jsx | 662 +++--------- .../email-overlay/email-overlay.component.jsx | 35 +- .../email-overlay/email-overlay.container.jsx | 119 ++- .../parts-order-modal.container.jsx | 60 +- .../schedule-job-modal.container.jsx | 39 +- .../emails/components/grid/grid.component.jsx | 46 - client/src/graphql/bodyshop.queries.js | 1 + client/src/graphql/templates.queries.js | 13 + client/src/redux/email/email.reducer.js | 11 +- client/src/redux/email/email.selectors.js | 18 +- client/yarn.lock | 946 +----------------- .../down.yaml | 5 + .../up.yaml | 5 + .../down.yaml | 44 + .../up.yaml | 45 + .../down.yaml | 45 + .../up.yaml | 46 + .../down.yaml | 5 + .../up.yaml | 24 + .../down.yaml | 12 + .../up.yaml | 20 + .../down.yaml | 6 + .../up.yaml | 30 + .../down.yaml | 6 + .../up.yaml | 31 + server/render/renderHandlebars.js | 11 +- 27 files changed, 650 insertions(+), 1639 deletions(-) delete mode 100644 client/src/emails/components/grid/grid.component.jsx create mode 100644 client/src/graphql/templates.queries.js create mode 100644 hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/down.yaml create mode 100644 hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/up.yaml create mode 100644 hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/down.yaml create mode 100644 hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/up.yaml create mode 100644 hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/down.yaml create mode 100644 hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/up.yaml create mode 100644 hasura/migrations/1587062110920_create_table_public_templates/down.yaml create mode 100644 hasura/migrations/1587062110920_create_table_public_templates/up.yaml create mode 100644 hasura/migrations/1587062123352_track_all_relationships/down.yaml create mode 100644 hasura/migrations/1587062123352_track_all_relationships/up.yaml create mode 100644 hasura/migrations/1587062292554_update_permission_user_public_table_templates/down.yaml create mode 100644 hasura/migrations/1587062292554_update_permission_user_public_table_templates/up.yaml create mode 100644 hasura/migrations/1587062297744_update_permission_user_public_table_templates/down.yaml create mode 100644 hasura/migrations/1587062297744_update_permission_user_public_table_templates/up.yaml diff --git a/client/package.json b/client/package.json index cee863e46..aa7e414ee 100644 --- a/client/package.json +++ b/client/package.json @@ -4,10 +4,9 @@ "private": true, "proxy": "https://localhost:5000", "dependencies": { - "@ckeditor/ckeditor5-build-classic": "^18.0.0", - "@ckeditor/ckeditor5-react": "^2.1.0", "@nivo/pie": "^0.61.1", "@tanem/react-nprogress": "^3.0.20", + "@tinymce/tinymce-react": "^3.5.0", "aamva": "^1.2.0", "antd": "^4.1.0", "apollo-boost": "^0.4.4", @@ -19,7 +18,6 @@ "axios": "^0.19.2", "dotenv": "^8.2.0", "firebase": "^7.13.1", - "grapesjs-react": "^3.0.4", "graphql": "^14.6.0", "i18next": "^19.3.4", "node-sass": "^4.13.1", diff --git a/client/src/components/_test/test.component.jsx b/client/src/components/_test/test.component.jsx index b91c6513c..87ec8db4c 100644 --- a/client/src/components/_test/test.component.jsx +++ b/client/src/components/_test/test.component.jsx @@ -1,23 +1,19 @@ -import React, { useRef, useState } from "react"; +import { Editor } from "@tinymce/tinymce-react"; +import { Col, Row } from "antd"; +import axios from "axios"; +import React, { useState } from "react"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; +import { EmailSettings } from "../../emails/constants"; import { - startLoading, endLoading, + startLoading, } from "../../redux/application/application.actions"; import { setEmailOptions } from "../../redux/email/email.actions"; -import T, { - Subject, -} from "../../emails/templates/appointment-confirmation/appointment-confirmation.template"; -import { EMAIL_APPOINTMENT_CONFIRMATION } from "../../emails/templates/appointment-confirmation/appointment-confirmation.query"; -import axios from "axios"; -import CKEditor from "@ckeditor/ckeditor5-react"; -import ClassicEditor from "@ckeditor/ckeditor5-build-classic"; -import { Editor } from "grapesjs-react"; -import "grapesjs/dist/css/grapes.min.css"; - +import { selectBodyshop } from "../../redux/user/user.selectors"; const mapStateToProps = createStructuredSelector({ //currentUser: selectCurrentUser + bodyshop: selectBodyshop, }); const mapDispatchToProps = (dispatch) => ({ setEmailOptions: (e) => dispatch(setEmailOptions(e)), @@ -27,551 +23,133 @@ const mapDispatchToProps = (dispatch) => ({ export default connect( mapStateToProps, mapDispatchToProps -)(function Test({ setEmailOptions, load, endload }) { - const editorRef = useRef(null); - const [state, setState] = useState(""); +)(function Test({ setEmailOptions, load, endload, bodyshop }) { + const [state, setState] = useState(temp); + + const handleEditorChange = (content, editor) => { + setState(content); + }; + return (
+ + + + + + + - - { - // handleHtmlChange(editor.getData()); - //TODO Ensure that removing onchange never introduces a race condition - }} - onBlur={(event, editor) => { - setState(editor.getData()); - }} - /> - Section", // You can use HTML/SVG inside labels - attributes: { class: "gjs-block-section" }, - content: `
-

This is a simple title

-
This is just a Lorem text: Lorem ipsum dolor sit amet
-
`, - }, - { - id: "text2", - label: "Text2", - content: - '
Insert your text here222222222
', - }, - { - id: "image", - label: "Image", - // Select the component once it's dropped - select: true, - // You can pass components as a JSON instead of a simple HTML string, - // in this case we also use a defined component type `image` - content: { type: "image" }, - // This triggers `active` event on dropped components and the `image` - // reacts by opening the AssetManager - activate: true, - }, - ]} - onInit={(editor) => { - console.log("editor", editor); - editor.setComponents(view); - }} - storageManager={false} - ref={editorRef} - />
); }); -const testView2 = ` - - - - - - - - Landing Page - Start Bootstrap Theme - - - - - - - - - - - - - - - - - - - - -
-
-
-
-
-

Build a landing page for your business or project and generate more leads!

-
-
-
-
-
- -
-
- -
-
-
-
-
-
-
- - -
-
-
-
-
-
- -
-

Fully Responsive

-

This theme will look great on any device, no matter the size!

-
-
-
-
-
- -
-

Bootstrap 4 Ready

-

Featuring the latest build of the new Bootstrap 4 framework!

-
-
-
-
-
- -
-

Easy to Use

-

Ready to use with your own content, or customize the source files!

-
-
-
-
-
- - -
-
-
- -
-
-

Fully Responsive Design

-

When you use a theme created by Start Bootstrap, you know that the theme will look great on any device, whether it's a phone, tablet, or desktop the page will behave responsively!

-
-
-
-
-
-

Updated For Bootstrap 4

-

Newly improved, and full of great utility classes, Bootstrap 4 is leading the way in mobile responsive web development! All of the themes on Start Bootstrap are now using Bootstrap 4!

-
-
-
-
-
-

Easy to Use & Customize

-

Landing Page is just HTML and CSS with a splash of SCSS for users who demand some deeper customization options. Out of the box, just add your content and images, and your new landing page will be ready to go!

-
-
-
-
- - -
-
-

What people are saying...

-
-
-
- -
Margaret E.
-

"This is fantastic! Thanks so much guys!"

-
-
-
-
- -
Fred S.
-

"Bootstrap is amazing. I've been using it to create lots of super nice landing pages."

-
-
-
-
- -
Sarah W.
-

"Thanks so much for making these free resources available to us!"

-
-
-
-
-
- - -
-
-
-
-
-

Ready to get started? Sign up now!

-
-
-
-
-
- -
-
- -
-
-
-
-
-
-
- - - - - - - - - - - - -`; - -const view = ` - - - - +const temp = `
+

This is a full-featured editor demo. Please explore! ←

+

 

+

TinyMCE is the world's most customizable, and flexible, rich text editor.

+

A featherweight download, TinyMCE can handle any challenge you throw at it.

+

 

+

 

+
- - - - - - -
- - - - - - -
- View in browser - -
- - - - - - - -
- GrapesJS. - -
GrapesJS Newsletter Builder -
-
-
- - - - - - -
- Big image here - - - - - - -
-

Build your newsletters faster than ever -
-

-

Import, build, test and export responsive newsletter templates faster than ever using the GrapesJS Newsletter Builder. -

-
  {{#each people}} -
-
-
    {{this}} -
-
- Button -
  {{/each}} -
- - - - - - -
-
-
- - - - - - -
- - - - - - - -
- Image1 - -

Built-in Blocks -

-

Drag and drop built-in blocks from the right panel and style them in a matter of seconds -

-
-
- - - - - - -
- - - - - - - -
- Image2 - -

Toggle images -

-

Build a good looking newsletter even without images enabled by the email clients -

-
-
- - - - - - - -
- - - - - - -
- Image1 - - - - - - -
-

Test it -

-

You can send email tests directly from the editor and check how are looking on your email clients -

-
-
-
- - - - - - -
- Image2 - - - - - - -
-

Responsive -

-

Using the device manager you'll always send a fully responsive contents -

-
-
-
- - - - - - - -
-
+ + + + + + + + + + + + + + + + + + + -
🛠 50+ Plugins💡 Premium Support🖍 Custom Skins⚙ Full API Access
{{#each people}}
{{this}}{{this}}{{this}}{{this}}
{{/each}}
`; + +`; diff --git a/client/src/components/email-overlay/email-overlay.component.jsx b/client/src/components/email-overlay/email-overlay.component.jsx index 37f7cfa1a..7cf5f393a 100644 --- a/client/src/components/email-overlay/email-overlay.component.jsx +++ b/client/src/components/email-overlay/email-overlay.component.jsx @@ -1,12 +1,10 @@ -import React from "react"; +import { Editor } from "@tinymce/tinymce-react"; import { Input } from "antd"; -import CKEditor from "@ckeditor/ckeditor5-react"; -import ClassicEditor from "@ckeditor/ckeditor5-build-classic"; - +import React from "react"; export default function EmailOverlayComponent({ messageOptions, handleConfigChange, - handleHtmlChange + handleHtmlChange, }) { return (
@@ -27,17 +25,24 @@ export default function EmailOverlayComponent({ onChange={handleConfigChange} name="subject" /> - { - // handleHtmlChange(editor.getData()); - //TODO Ensure that removing onchange never introduces a race condition - }} - onBlur={(event, editor) => { - console.log("Blur."); - handleHtmlChange(editor.getData()); +
); diff --git a/client/src/components/email-overlay/email-overlay.container.jsx b/client/src/components/email-overlay/email-overlay.container.jsx index 77a9dd688..3048bcad4 100644 --- a/client/src/components/email-overlay/email-overlay.container.jsx +++ b/client/src/components/email-overlay/email-overlay.container.jsx @@ -1,104 +1,127 @@ +import { useApolloClient } from "@apollo/react-hooks"; import { Modal, notification } from "antd"; +import { gql } from "apollo-boost"; import axios from "axios"; import React, { useEffect, useState } from "react"; -import { useLazyQuery } from "@apollo/react-hooks"; -import ReactDOMServer from "react-dom/server"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; +import { QUERY_TEMPLATES_BY_NAME } from "../../graphql/templates.queries"; import { toggleEmailOverlayVisible } from "../../redux/email/email.actions"; import { selectEmailConfig, - selectEmailVisible + selectEmailVisible, } from "../../redux/email/email.selectors.js"; +import { selectBodyshop } from "../../redux/user/user.selectors"; import LoadingSpinner from "../loading-spinner/loading-spinner.component"; import EmailOverlayComponent from "./email-overlay.component"; const mapStateToProps = createStructuredSelector({ modalVisible: selectEmailVisible, - emailConfig: selectEmailConfig + emailConfig: selectEmailConfig, + bodyshop: selectBodyshop, }); -const mapDispatchToProps = dispatch => ({ - toggleEmailOverlayVisible: () => dispatch(toggleEmailOverlayVisible()) +const mapDispatchToProps = (dispatch) => ({ + toggleEmailOverlayVisible: () => dispatch(toggleEmailOverlayVisible()), }); -export default connect( - mapStateToProps, - mapDispatchToProps -)(function EmailOverlayContainer({ +export function EmailOverlayContainer({ emailConfig, modalVisible, - toggleEmailOverlayVisible + toggleEmailOverlayVisible, + bodyshop, }) { const { t } = useTranslation(); const [messageOptions, setMessageOptions] = useState( emailConfig.messageOptions ); + const client = useApolloClient(); - useEffect(() => { - setMessageOptions(emailConfig.messageOptions); - }, [setMessageOptions, emailConfig.messageOptions]); + const renderEmail = () => { + client + .query({ + query: QUERY_TEMPLATES_BY_NAME, + variables: { name: emailConfig.template.name }, + fetchPolicy: "network-only", + }) + .then(({ data: templateRecords }) => { + let templateToUse; + if (templateRecords.templates.length === 1) { + console.log("Only 1 Template found."); + templateToUse = templateRecords.templates[0]; + } else if (templateRecords.templates.length === 2) { + console.log("2 Templates found.."); + templateToUse = templateRecords.templates.filter( + (t) => !!t.bodyshopid + ); + } else { + //No template found.Uh oh. + alert("Templating Error!"); + } - const [executeQuery, { called, loading, data }] = useLazyQuery( - emailConfig.queryConfig[0], - { - ...emailConfig.queryConfig[1], - fetchPolicy: "network-only" - } - ); + client + .query({ + query: gql(templateToUse.query), + variables: { ...emailConfig.template.variables }, + fetchPolicy: "network-only", + }) + .then(({ data: contextData }) => { + handleRender(contextData, templateToUse.html); + }); + }); + }; - if ( - emailConfig.queryConfig[0] && - emailConfig.queryConfig[1] && - modalVisible && - !called - ) { - executeQuery(); - } - - if (data && !messageOptions.html && emailConfig.template) { - setMessageOptions({ - ...messageOptions, - html: ReactDOMServer.renderToStaticMarkup( - - ) - }); - } + const handleRender = (contextData, html) => { + axios + .post("/render", { + view: html, + context: { ...contextData, bodyshop: bodyshop }, + }) + .then((r) => { + setMessageOptions({ ...messageOptions, html: r.data }); + }); + }; const handleOk = () => { //sendEmail(messageOptions); axios .post("/sendemail", messageOptions) - .then(response => { + .then((response) => { console.log(JSON.stringify(response)); notification["success"]({ message: t("emails.successes.sent") }); toggleEmailOverlayVisible(); }) - .catch(error => { + .catch((error) => { console.log(JSON.stringify(error)); notification["error"]({ - message: t("emails.errors.notsent", { message: error.message }) + message: t("emails.errors.notsent", { message: error.message }), }); }); }; - const handleConfigChange = event => { + const handleConfigChange = (event) => { const { name, value } = event.target; setMessageOptions({ ...messageOptions, [name]: value }); }; - const handleHtmlChange = text => { + const handleHtmlChange = (text) => { setMessageOptions({ ...messageOptions, html: text }); }; + useEffect(() => { + if (modalVisible) renderEmail(); + }, [modalVisible]); // eslint-disable-line react-hooks/exhaustive-deps + return ( toggleEmailOverlayVisible()} + onCancel={() => { + toggleEmailOverlayVisible(); + }} > - + ); -}); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(EmailOverlayContainer); diff --git a/client/src/components/parts-order-modal/parts-order-modal.container.jsx b/client/src/components/parts-order-modal/parts-order-modal.container.jsx index 97fda0e37..c215518f8 100644 --- a/client/src/components/parts-order-modal/parts-order-modal.container.jsx +++ b/client/src/components/parts-order-modal/parts-order-modal.container.jsx @@ -14,7 +14,7 @@ import { toggleModalVisible } from "../../redux/modals/modals.actions"; import { selectPartsOrder } from "../../redux/modals/modals.selectors"; import { selectBodyshop, - selectCurrentUser + selectCurrentUser, } from "../../redux/user/user.selectors"; import AlertComponent from "../alert/alert.component"; import LoadingSpinner from "../loading-spinner/loading-spinner.component"; @@ -24,12 +24,12 @@ import { EmailSettings } from "../../emails/constants"; const mapStateToProps = createStructuredSelector({ currentUser: selectCurrentUser, bodyshop: selectBodyshop, - partsOrderModal: selectPartsOrder + partsOrderModal: selectPartsOrder, }); -const mapDispatchToProps = dispatch => ({ - setEmailOptions: e => dispatch(setEmailOptions(e)), - toggleModalVisible: () => dispatch(toggleModalVisible("partsOrder")) +const mapDispatchToProps = (dispatch) => ({ + setEmailOptions: (e) => dispatch(setEmailOptions(e)), + toggleModalVisible: () => dispatch(toggleModalVisible("partsOrder")), }); export function PartsOrderModalContainer({ @@ -37,7 +37,7 @@ export function PartsOrderModalContainer({ toggleModalVisible, currentUser, bodyshop, - setEmailOptions + setEmailOptions, }) { const { t } = useTranslation(); @@ -50,12 +50,12 @@ export function PartsOrderModalContainer({ const sendType = sendTypeState[0]; const { loading, error, data } = useQuery(QUERY_ALL_VENDORS_FOR_ORDER, { - skip: !visible + skip: !visible, }); const [insertPartOrder] = useMutation(INSERT_NEW_PARTS_ORDERS); const [updateJobLines] = useMutation(UPDATE_JOB_LINE_STATUS); - const handleFinish = values => { + const handleFinish = (values) => { insertPartOrder({ variables: { po: [ @@ -63,21 +63,21 @@ export function PartsOrderModalContainer({ ...values, jobid: jobId, user_email: currentUser.email, - status: bodyshop.md_order_statuses.default_ordered || "Ordered*" - } - ] - } + status: bodyshop.md_order_statuses.default_ordered || "Ordered*", + }, + ], + }, }) - .then(r => { + .then((r) => { updateJobLines({ variables: { - ids: values.parts_order_lines.data.map(item => item.job_line_id), - status: bodyshop.md_order_statuses.default_ordered || "Ordered*" - } + ids: values.parts_order_lines.data.map((item) => item.job_line_id), + status: bodyshop.md_order_statuses.default_ordered || "Ordered*", + }, }) - .then(response => { + .then((response) => { notification["success"]({ - message: t("parts_orders.successes.created") + message: t("parts_orders.successes.created"), }); if (refetch) refetch(); toggleModalVisible(); @@ -88,38 +88,38 @@ export function PartsOrderModalContainer({ messageOptions: { from: { name: bodyshop.shopname || EmailSettings.fromNameDefault, - address: EmailSettings.fromAddress + address: EmailSettings.fromAddress, }, to: - data.vendors.filter(item => item.id === values.id)[0] || + data.vendors.filter((item) => item.id === values.id)[0] || null, - replyTo: bodyshop.shopname || null + replyTo: bodyshop.email, }, template: PartsOrderEmailTemplate, queryConfig: [ REPORT_QUERY_PARTS_ORDER_BY_PK, { variables: { - id: r.data.insert_parts_orders.returning[0].id - } - } - ] + id: r.data.insert_parts_orders.returning[0].id, + }, + }, + ], }); } }) - .catch(error => { + .catch((error) => { notification["error"]({ message: t("parts_orders.errors.creating"), - description: error.message + description: error.message, }); }); //end no good }) - .catch(error => { + .catch((error) => { notification["error"]({ message: t("parts_orders.errors.creating"), - description: error.message + description: error.message, }); }); }; @@ -133,7 +133,7 @@ export function PartsOrderModalContainer({ db_price: value.db_price, act_price: value.act_price, job_line_id: value.id, - status: bodyshop.md_order_statuses.default_ordered || "Ordered*" + status: bodyshop.md_order_statuses.default_ordered || "Ordered*", }); return acc; }, []); diff --git a/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx b/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx index 3f5656f7c..0b8c008f1 100644 --- a/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx +++ b/client/src/components/schedule-job-modal/schedule-job-modal.container.jsx @@ -3,7 +3,7 @@ import ScheduleJobModalComponent from "./schedule-job-modal.component"; import { useMutation, useQuery } from "@apollo/react-hooks"; import { INSERT_APPOINTMENT, - QUERY_APPOINTMENTS_BY_JOBID + QUERY_APPOINTMENTS_BY_JOBID, } from "../../graphql/appointments.queries"; import moment from "moment"; import { notification, Modal } from "antd"; @@ -18,31 +18,29 @@ import { toggleModalVisible } from "../../redux/modals/modals.actions"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, - scheduleModal: selectSchedule + scheduleModal: selectSchedule, }); -const mapDispatchToProps = dispatch => ({ - toggleModalVisible: () => dispatch(toggleModalVisible("schedule")) +const mapDispatchToProps = (dispatch) => ({ + toggleModalVisible: () => dispatch(toggleModalVisible("schedule")), }); export function ScheduleJobModalContainer({ scheduleModal, bodyshop, - toggleModalVisible + toggleModalVisible, }) { const { visible, context, actions } = scheduleModal; const { jobId } = context; const { refetch } = actions; const [appData, setAppData] = useState({ - jobid: jobId, start: null, - bodyshopid: bodyshop.id }); const [insertAppointment] = useMutation(INSERT_APPOINTMENT); const [updateJobStatus] = useMutation(UPDATE_JOB_STATUS, { variables: { jobId: jobId, - status: bodyshop.md_ro_statuses.default_scheduled - } + status: bodyshop.md_ro_statuses.default_scheduled, + }, }); const [formData, setFormData] = useState({ notifyCustomer: false }); const { t } = useTranslation(); @@ -50,20 +48,25 @@ export function ScheduleJobModalContainer({ const existingAppointments = useQuery(QUERY_APPOINTMENTS_BY_JOBID, { variables: { jobid: jobId }, fetchPolicy: "network-only", - skip: !visible + skip: !visible, }); //TODO Customize the amount of minutes it will add. const handleOk = () => { insertAppointment({ variables: { - app: { ...appData, end: moment(appData.start).add(60, "minutes") } - } + app: { + ...appData, + jobid: jobId, + bodyshopid: bodyshop.id, + end: moment(appData.start).add(60, "minutes"), + }, + }, }) - .then(r => { - updateJobStatus().then(r => { + .then((r) => { + updateJobStatus().then((r) => { notification["success"]({ - message: t("appointments.successes.created") + message: t("appointments.successes.created"), }); if (formData.notifyCustomer) { @@ -74,11 +77,11 @@ export function ScheduleJobModalContainer({ if (refetch) refetch(); }); }) - .catch(error => { + .catch((error) => { notification["error"]({ message: t("appointments.errors.saving", { - message: error.message - }) + message: error.message, + }), }); }); }; diff --git a/client/src/emails/components/grid/grid.component.jsx b/client/src/emails/components/grid/grid.component.jsx deleted file mode 100644 index b21f70e54..000000000 --- a/client/src/emails/components/grid/grid.component.jsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from "react"; - -function Column({ children }) { - return {children}; -} - -function Row({ children }) { - return ( - - {React.Children.map(children, el => { - if (el.type === Column) return el; - - return {el}; - })} - - ); -} - -function Grid({ children }) { - return ( - - - {React.Children.map(children, el => { - if (!el) return; - - if (el.type === Row) return el; - - if (el.type === Column) { - return {el}; - } - - return ( - - - - ); - })} - -
{el}
- ); -} - -Grid.Row = Row; -Grid.Column = Column; - -export default Grid; diff --git a/client/src/graphql/bodyshop.queries.js b/client/src/graphql/bodyshop.queries.js index 7b5bc2a91..c8a8f5f16 100644 --- a/client/src/graphql/bodyshop.queries.js +++ b/client/src/graphql/bodyshop.queries.js @@ -24,6 +24,7 @@ export const QUERY_BODYSHOP = gql` region_config md_responsibility_centers messagingservicesid + template_header employees { id first_name diff --git a/client/src/graphql/templates.queries.js b/client/src/graphql/templates.queries.js new file mode 100644 index 000000000..c0f0be364 --- /dev/null +++ b/client/src/graphql/templates.queries.js @@ -0,0 +1,13 @@ +import { gql } from "apollo-boost"; + +export const QUERY_TEMPLATES_BY_NAME = gql` + query QUERY_TEMPLATES_BY_NAME($name: String!) { + templates(where: { name: { _eq: $name } }) { + id + html + name + query + bodyshopid + } + } +`; diff --git a/client/src/redux/email/email.reducer.js b/client/src/redux/email/email.reducer.js index bc6c08fff..df0a1d14e 100644 --- a/client/src/redux/email/email.reducer.js +++ b/client/src/redux/email/email.reducer.js @@ -5,14 +5,13 @@ const INITIAL_STATE = { messageOptions: { from: { name: "ShopName", address: "noreply@bodyshop.app" }, to: null, - replyTo: null + replyTo: null, }, - template: null, - queryConfig: [null, { variables: null }] + template: { name: null, variables: {} }, }, visible: false, - error: null + error: null, }; const emailReducer = (state = INITIAL_STATE, action) => { @@ -20,13 +19,13 @@ const emailReducer = (state = INITIAL_STATE, action) => { case EmailActionTypes.TOGGLE_EMAIL_OVERLAY_VISIBLE: return { ...state, - visible: !state.visible + visible: !state.visible, }; case EmailActionTypes.SET_EMAIL_OPTIONS: return { ...state, emailConfig: { ...action.payload }, - visible: true + visible: true, }; default: return state; diff --git a/client/src/redux/email/email.selectors.js b/client/src/redux/email/email.selectors.js index 3a0299aa4..d691f742e 100644 --- a/client/src/redux/email/email.selectors.js +++ b/client/src/redux/email/email.selectors.js @@ -1,25 +1,19 @@ import { createSelector } from "reselect"; -const selectEmail = state => state.email; -const selectEmailConfigMessageOptions = state => +const selectEmail = (state) => state.email; +const selectEmailConfigMessageOptions = (state) => state.email.emailConfig.messageOptions; -const selectEmailConfigTemplate = state => state.email.emailConfig.template; -const selectEmailConfigQuery = state => state.email.emailConfig.queryConfig; +const selectEmailConfigTemplate = (state) => state.email.emailConfig.template; export const selectEmailVisible = createSelector( [selectEmail], - email => email.visible + (email) => email.visible ); export const selectEmailConfig = createSelector( - [ - selectEmailConfigMessageOptions, - selectEmailConfigTemplate, - selectEmailConfigQuery - ], - (messageOptions, template, queryConfig) => ({ + [selectEmailConfigMessageOptions, selectEmailConfigTemplate], + (messageOptions, template) => ({ messageOptions, template, - queryConfig }) ); diff --git a/client/yarn.lock b/client/yarn.lock index 71d35d5d9..513c31565 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -1287,7 +1287,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.7.1", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.9.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== @@ -1351,18 +1351,6 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@ckeditor/ckeditor5-build-classic@^18.0.0": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-18.0.0.tgz#751a475bb14bcadcf6fc6285c979bccd1cb40883" - integrity sha512-7nyaDU5sUSl+7wXPwr0d5bOlO2e0LRQh2iJJCJfAjjuUESwtiBGoFC+Ql5dEht0xlfARoSWQMlkUvGuHOVja7A== - -"@ckeditor/ckeditor5-react@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-react/-/ckeditor5-react-2.1.0.tgz#f612546a5a328899a436d71b72ffd632600049e8" - integrity sha512-rlHjRKhwP9tNK0Yj2UJShL14mRfxLPgJ+Pv6zTv/Mvmd4wrwGnJf+5ybOAGK92S02hP1cXH+9km+PRO1b4V+ng== - dependencies: - prop-types "^15.6.1" - "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -2105,6 +2093,13 @@ prop-types "^15.7.2" react-use "^13.27.1" +"@tinymce/tinymce-react@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@tinymce/tinymce-react/-/tinymce-react-3.5.0.tgz#5017be56aeab1077f09d3f74a386883e5524a33f" + integrity sha512-sZPerYmSWQcdk7F9KEvCC3/kPNZ9Bb+dk8rS0RoYyYql/gqgNpLpycC+CC/KhgT0wDaYuRoCcdV1DVZGam+oOg== + dependencies: + prop-types "^15.6.2" + "@types/babel__core@^7.1.0": version "7.1.6" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610" @@ -3094,11 +3089,6 @@ async@^2.6.2: dependencies: lodash "^4.17.14" -async@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3309,28 +3299,6 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -backbone-undo@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/backbone-undo/-/backbone-undo-0.2.5.tgz#55b25230f90319ca622465e89a80248b893c2ce2" - integrity sha1-VbJSMPkDGcpiJGXomoAki4k8LOI= - dependencies: - backbone "1.0.0 - 1.2.1" - underscore "1.4.4 - 1.8.3" - -"backbone@1.0.0 - 1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.2.1.tgz#d7219c5ed49e5e131dbffaf25c96d6d2cc3ca03e" - integrity sha1-1yGcXtSeXhMdv/ryXJbW0sw8oD4= - dependencies: - underscore ">=1.7.0" - -backbone@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.3.3.tgz#4cc80ea7cb1631ac474889ce40f2f8bc683b2999" - integrity sha1-TMgOp8sWMaxHSInOQPL4vGg7KZk= - dependencies: - underscore ">=1.8.3" - backo2@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -3731,14 +3699,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - camel-case@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" @@ -3775,11 +3735,6 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -3822,11 +3777,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -cash-dom@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/cash-dom/-/cash-dom-1.3.7.tgz#4e09f98bc7b3339665b48a579b4bb93189ccc3f7" - integrity sha512-cWqx3b+8Vh5hvRd87voSW7hxHVhUekGiOUd7iix8fP29cl6TBIInkAqYVSKaL2xeVewS3/kfPnIIC+Xl3nVe/A== - chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -3865,28 +3815,6 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -cheerio@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" - integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash.assignin "^4.0.9" - lodash.bind "^4.1.4" - lodash.defaults "^4.0.1" - lodash.filter "^4.4.0" - lodash.flatten "^4.2.0" - lodash.foreach "^4.3.0" - lodash.map "^4.4.0" - lodash.merge "^4.4.0" - lodash.pick "^4.2.1" - lodash.reduce "^4.4.0" - lodash.reject "^4.4.0" - lodash.some "^4.4.0" - cheerio@^1.0.0-rc.3: version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" @@ -3918,7 +3846,7 @@ chokidar@^2.0.2, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.0.0, chokidar@^3.3.0: +chokidar@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== @@ -3973,7 +3901,7 @@ classnames@2.x, classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classna resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -clean-css@4.2.x, clean-css@^4.2.3: +clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== @@ -4077,16 +4005,6 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -codemirror-formatting@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/codemirror-formatting/-/codemirror-formatting-1.0.0.tgz#879cc1fdd9018343c1d5511769ce5360d705ebf2" - integrity sha1-h5zB/dkBg0PB1VEXac5TYNcF6/I= - -codemirror@^5.49.2: - version "5.52.2" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.52.2.tgz#c29e1f7179f85eb0dd17c0586fa810e4838ff584" - integrity sha512-WCGCixNUck2HGvY8/ZNI1jYfxPG5cRHv0VjmWuNzbtCLz8qYA5d+je4QhSSCtCaagyeOwMi/HmmPTjBgiTm2lQ== - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -4147,12 +4065,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.11.0, commander@^2.15.1, commander@^2.19.0, commander@^2.20.0: +commander@^2.11.0, commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4162,11 +4075,6 @@ commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -4241,14 +4149,6 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - confusing-browser-globals@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" @@ -4439,15 +4339,6 @@ cross-spawn@^3.0.0: lru-cache "^4.0.1" which "^1.2.9" -cross-spawn@^5.0.1, cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -4838,14 +4729,6 @@ data-urls@^1.0.0, data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -datauri@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/datauri/-/datauri-2.0.0.tgz#ff0ee23729935a6bcc81f301621bed3e692bf3c7" - integrity sha512-zS2HSf9pI5XPlNZgIqJg/wCJpecgU/HA6E/uv2EfaWnW1EiTGLfy/EexTIsC9c99yoCOTXlqeeWk4FkCSuO3/g== - dependencies: - image-size "^0.7.3" - mimer "^1.0.0" - date-arithmetic@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/date-arithmetic/-/date-arithmetic-4.1.0.tgz#e5d6434e9deb71f79760a37b729e4a515e730ddf" @@ -4906,11 +4789,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" - integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w== - deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -5118,7 +4996,7 @@ dom-helpers@^5.1.0: "@babel/runtime" "^7.6.3" csstype "^2.6.7" -dom-serializer@0, dom-serializer@^0.2.1: +dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== @@ -5126,7 +5004,7 @@ dom-serializer@0, dom-serializer@^0.2.1: domelementtype "^2.0.1" entities "^2.0.0" -dom-serializer@~0.1.0, dom-serializer@~0.1.1: +dom-serializer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== @@ -5168,13 +5046,6 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" - integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== - dependencies: - domelementtype "^2.0.1" - domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -5191,15 +5062,6 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -domutils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.0.0.tgz#15b8278e37bfa8468d157478c58c367718133c08" - integrity sha512-n5SelJ1axbO636c2yUtOGia/IcJtVtlhQbFiVDBZHKV5ReJO1ViX7sFEemtuyoAnBxk5meNSYgA8V4s0271efg== - dependencies: - dom-serializer "^0.2.1" - domelementtype "^2.0.1" - domhandler "^3.0.0" - dot-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" @@ -5248,16 +5110,6 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -editorconfig@^0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" - integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== - dependencies: - commander "^2.19.0" - lru-cache "^4.1.5" - semver "^5.6.0" - sigmund "^1.0.1" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -5758,19 +5610,6 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.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" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -6013,11 +5852,6 @@ file-loader@4.3.0: loader-utils "^1.2.3" schema-utils "^2.5.0" -file-saver@^1.3.2: - version "1.3.8" - resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.8.tgz#e68a30c7cb044e2fb362b428469feb291c2e09d8" - integrity sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg== - file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -6400,11 +6234,6 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -6522,98 +6351,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== -grapesjs-aviary@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/grapesjs-aviary/-/grapesjs-aviary-0.1.2.tgz#330e7de5ad8ba5fca4dea06adba94372a8d4b487" - integrity sha512-F7sYQWj5s9eyUqoOX6q1z2J06AqgXhQqdjQhM8b5BptxlbDsvDTCbqSRmLGkEQKaIF1ca5o9FFi9eKBeUAfLEw== - -grapesjs-blocks-basic@^0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/grapesjs-blocks-basic/-/grapesjs-blocks-basic-0.1.8.tgz#9eab7c8fd7bc30537143677320b07d85b9bd2e8f" - integrity sha512-Iy5M4qGkEE2llb5ZFxitDolRJ3CrQkcK1SQIjRRlkWIAC99On3T/09iFR7NkpTBfsgfdNwcwnSVOMOhSnVLDtw== - -grapesjs-component-countdown@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/grapesjs-component-countdown/-/grapesjs-component-countdown-0.1.3.tgz#7df54b2a6c0bdf3275370f974ac9bd732188aae3" - integrity sha512-TmxDETedUDv1jGqNLn6E768iyp+xAK/XcTId5WpLrmKPFB6aCuWqfTowhtSvyRJJs83OAFMiQIwIu+tEtSWOeA== - -grapesjs-mjml@^0.1.15: - version "0.1.15" - resolved "https://registry.yarnpkg.com/grapesjs-mjml/-/grapesjs-mjml-0.1.15.tgz#5bd56ad28af4e476cbe46b2ad0e7802888125791" - integrity sha512-ayLotiNSjI4dB21n3M5aLmfpBLvzKpr4j3AEJeQzuobxutG0DKvRQODD2LDm5bBotkfKb7+tw5AT/BT01kfyOA== - dependencies: - mjml "4.4.1" - -grapesjs-navbar@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/grapesjs-navbar/-/grapesjs-navbar-0.1.5.tgz#62e35eca0f391f94d455e96c206b74b5f495fa6e" - integrity sha512-tVKPtzlTUNCpzk3lHW69II2NsSzLNQd3K32CXssWCP3M1V8fvc9jG/MQECBkd/gMS+DjldD4/4b00ri9F3tKSg== - -grapesjs-plugin-export@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/grapesjs-plugin-export/-/grapesjs-plugin-export-0.1.5.tgz#968631d8d22abdd1d05f14fa30ad86105690ce23" - integrity sha512-BgvPY68vIDxVv0Z3v1TTikHseMxbfvUvhk5qUHq3a9kFmc2sFfNA6f5NHP9A4v3Tnd4kuwOd2aIn+QNutZrLRg== - dependencies: - file-saver "^1.3.2" - jszip "^3.0.0" - -grapesjs-plugin-filestack@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/grapesjs-plugin-filestack/-/grapesjs-plugin-filestack-0.1.1.tgz#690d8b532fab6e01d614d1ab288da0086b748972" - integrity sha512-zRwgHUZd7qDVk92dtizOHxnPiCjBBmsA2BHm0J86tz8uiXf6ou0OoQiB4x4UDewb9ipTkBI6X5nGh/0YET6WLw== - -grapesjs-plugin-forms@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/grapesjs-plugin-forms/-/grapesjs-plugin-forms-0.3.6.tgz#c55ee38ad74e2935e1e279deb0bca45ec0b1d301" - integrity sha512-JGIxky3if7FLlXBDuX2T2UoWQnvm55PcNp5P2qoX64zlA0+2npz9zbPcj9g1PUHXVPlTXwTr2qu5x3U/pb+xdw== - -grapesjs-preset-newsletter@^0.2.20: - version "0.2.20" - resolved "https://registry.yarnpkg.com/grapesjs-preset-newsletter/-/grapesjs-preset-newsletter-0.2.20.tgz#d6b83c1f13e0e95bd87dddcc01c6095a19852c65" - integrity sha512-rffUeuznf9Saig+kIUddmGfhWwbLjxdaqAYf6Hoge4b0sfT8knOS4mQXJBdRsSROfzuRhFe6ybRHm4yC32lHxA== - dependencies: - juice "^4.1.1" - -grapesjs-preset-webpage@^0.1.11: - version "0.1.11" - resolved "https://registry.yarnpkg.com/grapesjs-preset-webpage/-/grapesjs-preset-webpage-0.1.11.tgz#98dc9c0019683119b7bbb6d4f3b404aee286af6f" - integrity sha512-36SuSPwu3a09R6YR31Sklmowz/LvzxzGM74WcPd8KPwbs1mAQ4fFuqWKkX/wv8+GhY58Se9EO42yQVMwsZzELA== - dependencies: - grapesjs-aviary "^0.1.2" - grapesjs-blocks-basic "^0.1.7" - grapesjs-component-countdown "^0.1.2" - grapesjs-navbar "^0.1.5" - grapesjs-plugin-export "^0.1.5" - grapesjs-plugin-filestack "^0.1.1" - grapesjs-plugin-forms "^0.3.5" - -grapesjs-react@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/grapesjs-react/-/grapesjs-react-3.0.4.tgz#1d66183550395492b2ea6728dbd0de0ea69d8b44" - integrity sha512-8zOPI4HBFYqCcAiJpt6XPkP+nhQSaH5pfJJ7WgNd+ANN+bxy/LFdNM8t+5XUXqWF/pGeRACanHlmOaCdf+foBg== - dependencies: - grapesjs "^0.15.9" - grapesjs-mjml "^0.1.15" - grapesjs-preset-newsletter "^0.2.20" - grapesjs-preset-webpage "^0.1.11" - react "^16.12.0" - -grapesjs@^0.15.9: - version "0.15.10" - resolved "https://registry.yarnpkg.com/grapesjs/-/grapesjs-0.15.10.tgz#dd917b89f1a353d18824ed8712277a06234f9801" - integrity sha512-9m7OVgv0BZODMDZ8iOh7jYsPsfrPMXQcgjFYkJvPlkYpj/9kpZYorTSXooYLLoxBxLUdcfOqaHH1M23VP/W2ug== - dependencies: - "@babel/runtime" "^7.7.1" - backbone "1.3.3" - backbone-undo "^0.2.5" - cash-dom "^1.3.7" - codemirror "^5.49.2" - codemirror-formatting "^1.0.0" - keymaster "^1.6.2" - promise-polyfill "^8.1.3" - spectrum-colorpicker "^1.8.0" - underscore "^1.9.1" - graphql-tag@^2.4.2: version "2.10.3" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.3.tgz#ea1baba5eb8fc6339e4c4cf049dabe522b0edf03" @@ -6765,7 +6502,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.2.x, he@^1.2.0: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -6875,19 +6612,6 @@ html-minifier-terser@^5.0.1: relateurl "^0.2.7" terser "^4.6.3" -html-minifier@^3.5.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - html-parse-stringify2@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz#dc5670b7292ca158b7bc916c9a6735ac8872834a" @@ -6907,7 +6631,7 @@ html-webpack-plugin@4.0.0-beta.11: tapable "^1.1.3" util.promisify "1.0.0" -htmlparser2@^3.3.0, htmlparser2@^3.9.1, htmlparser2@^3.9.2: +htmlparser2@^3.3.0, htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -6919,16 +6643,6 @@ htmlparser2@^3.3.0, htmlparser2@^3.9.1, htmlparser2@^3.9.2: inherits "^2.0.1" readable-stream "^3.1.1" -htmlparser2@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" - http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -7069,16 +6783,6 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -image-size@^0.7.3: - version "0.7.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.7.5.tgz#269f357cf5797cb44683dfa99790e54c705ead04" - integrity sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g== - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - immer@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" @@ -7177,7 +6881,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -8084,17 +7788,6 @@ js-base64@^2.1.8: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== -js-beautify@^1.6.14: - version "1.11.0" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.11.0.tgz#afb873dc47d58986360093dcb69951e8bcd5ded2" - integrity sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A== - dependencies: - config-chain "^1.1.12" - editorconfig "^0.15.3" - glob "^7.1.3" - mkdirp "~1.0.3" - nopt "^4.0.3" - js-cookie@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" @@ -8297,47 +7990,6 @@ jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: array-includes "^3.0.3" object.assign "^4.1.0" -jszip@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.3.0.tgz#29d72c21a54990fa885b11fc843db320640d5271" - integrity sha512-EJ9k766htB1ZWnsV5ZMDkKLgA+201r/ouFF8R2OigVjVdcm2rurcBrrdXaeqBJbqnUVMko512PYmlncBKE1Huw== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - set-immediate-shim "~1.0.1" - -juice@^4.1.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/juice/-/juice-4.3.2.tgz#0a199e5f66f4f7f5cae4c079ebba81b0c2f4d1e0" - integrity sha512-3Qym/RnFoCGa9qrDz6xn4zRnohgI6G87xKWZV+/seF3dYpaVqNS1HijsDef+elGhytRY79RIboOzk0hucLtx6g== - dependencies: - cheerio "^0.22.0" - commander "^2.15.1" - cross-spawn "^5.1.0" - deep-extend "^0.5.1" - mensch "^0.3.3" - slick "^1.12.2" - web-resource-inliner "^4.2.1" - -juice@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/juice/-/juice-5.2.0.tgz#a40ea144bde2845fe2aade46a81f493f8ea677a0" - integrity sha512-0l6GZmT3efexyaaay3SchKT5kG311N59TEFP5lfvEy0nz9SNqjx311plJ3b4jze7arsmDsiHQLh/xnAuk0HFTQ== - dependencies: - cheerio "^0.22.0" - commander "^2.15.1" - cross-spawn "^6.0.5" - deep-extend "^0.6.0" - mensch "^0.3.3" - slick "^1.12.2" - web-resource-inliner "^4.3.1" - -keymaster@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/keymaster/-/keymaster-1.6.2.tgz#e1ae54d0ea9488f9f60b66b668f02e9a1946c6eb" - integrity sha1-4a5U0OqUiPn2C2a2aPAumhlGxus= - killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -8436,13 +8088,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -8543,16 +8188,6 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash.assignin@^4.0.9: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= - -lodash.bind@^4.1.4: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" - integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -8563,36 +8198,16 @@ lodash.clone@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= -lodash.defaults@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - lodash.escape@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= -lodash.filter@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" - integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= - -lodash.flatten@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.foreach@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" - integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= - lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -8608,46 +8223,16 @@ lodash.isplainobject@^4.0.6: resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= -lodash.map@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.merge@^4.4.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash.pick@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= - -lodash.reduce@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" - integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= - -lodash.reject@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" - integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= - -lodash.some@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -8668,17 +8253,12 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.unescape@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" - integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= - lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.12: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@~4.17.12: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -8713,11 +8293,6 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - lower-case@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" @@ -8725,7 +8300,7 @@ lower-case@^2.0.1: dependencies: tslib "^1.10.0" -lru-cache@^4.0.1, lru-cache@^4.1.5: +lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -8820,13 +8395,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -8857,11 +8425,6 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" -mensch@^0.3.3: - version "0.3.4" - resolved "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd" - integrity sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g== - meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -8966,16 +8529,6 @@ mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== -mimer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mimer/-/mimer-1.0.0.tgz#32251bef4dc7a63184db3a1082ed9be3abe0f3db" - integrity sha512-4ZJvCzfcwsBgPbkKXUzGoVZMWjv8IDIygkGzVc7uUYhgnK0t2LmGxxjdgH1i+pn0/KQfB5F/VKUJlfyTSOFQjg== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -9117,316 +8670,6 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mjml-accordion@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.4.1.tgz#44a2f25a19e348dabbb8c29d8d6162317b8188d9" - integrity sha512-zKAXZ9qeFsy+ftZ0iImUSqBux1z0NmRGUDbANqkZG1yo4QOOYhe9wHFr/Cjv2v/+m6Jpxt+De73Pvw5dXBnMbQ== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-body@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.4.1.tgz#33ffe7fad9ee4c4f328491524de63c0f714536b2" - integrity sha512-rf8k2kE0h7eJGA9NzVoqvUlSHXxypbZc0utQDVQuwaz1051Ny+fIUAR46jpksd93V2LYxobeUfjes2aJPFDTMA== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-button@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.4.1.tgz#ba98b33cbea54a7cc195f23f9e041299ed7306d4" - integrity sha512-c/jbtccOqgP8HL47Pmi1JBbgrUWjSUkiwh1hWLgAR6/oS9uDK+TYZZ2gK9IyCdFo0dl8na25WFLRQ1kUHQE09Q== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-carousel@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.4.1.tgz#a78209cd0a120437c8b9a7f285471b07e4d361a9" - integrity sha512-34iKJSJE8o4U+StX5gEgbLklQ8JxmVIqoQ/9T5JgvAGQ0G+REZL37BJZx4nq0lMI88Pjwkdu2pzRxPYe8go39g== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-cli@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.4.1.tgz#b4ed51fc479939a1aeadf05809d83ad67b2ccebb" - integrity sha512-h8+qWGKzRklCoVtEfv0+83JORkPaFM+oUrLnnYDI+AY+CnBdC4eiyjBkVR9kzVue0xv8JmyGP5RADSoeU99ULg== - dependencies: - babel-runtime "^6.26.0" - chokidar "^3.0.0" - glob "^7.1.1" - lodash "^4.17.4" - mjml-core "4.4.1" - mjml-migrate "4.4.1" - mjml-parser-xml "4.4.1" - mjml-validator "4.4.0" - yargs "^8.0.2" - -mjml-column@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.4.1.tgz#4f5967699c1ac42e5a1cc93846cc737f970409b7" - integrity sha512-VUTW5pvxLBUHa7xO4e3YWCmJqsDC0RhkjN6Rg7qgZE0TPPun3gUMFV1Geb8hM4OXyjp9xAc0TOOAU+umXiBPbA== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-core@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.4.1.tgz#61cd4e00a8e51f334bd2fb9c9d451e785dc493c0" - integrity sha512-7y0OYhi0HEeQJo47rkJvCh4PP52KrSbzINOhGwi1Dky3Gahl1v0U/Uza//DXHUQ49142tpuXsao1euijH1zgTA== - dependencies: - babel-runtime "^6.26.0" - html-minifier "^3.5.3" - js-beautify "^1.6.14" - juice "^5.2.0" - lodash "^4.17.2" - mjml-migrate "4.4.1" - mjml-parser-xml "4.4.1" - mjml-validator "4.4.0" - -mjml-divider@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.4.1.tgz#1833253fe4d946ff24a6bd3342586ccb0ff7b5a2" - integrity sha512-vZLjRpjt45mvY18FHZL3ilZyVpYDLvvyekpz15Mjp+f9NKNKJMSDHRN82nVD26gxoag8yNbmZgIe8zYpRUMWpA== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-group@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.4.1.tgz#4f8a09d7196f5c0778bc1935dec35e1f69bb8af1" - integrity sha512-Dzk/yVXgoQn5/OqJB6qUFy14Oy7RUuCKiLWa3BzcOFQgKc2/+n2JYdRR96WV9FP9AphZuliDxTHAnpnAFDAcpQ== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-head-attributes@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.4.1.tgz#b376bc155b32e20cce75e8281619d9011883f3b5" - integrity sha512-SSb+A4puaKNtr5fV/xn38aXC5ZE6XbEjNQPTRGRVi5NtAiS2Pfue+tOKftEkrwsPcJjZIRKmxOFE62sUv3bT8A== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-head-breakpoint@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.4.1.tgz#327e38300f14d4df2a23af320ca7bbe0e8ddd2bf" - integrity sha512-d9W5G8DhJW5SIPsu8JbblWnsr+ISyPCn6PrsLy+cRg2hIXBggX960sSol+rdcdnNFt1PuVIaRSpNgqbmyJfB0g== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-head-font@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.4.1.tgz#253b75c0bce1c66142cc78061544c5b9f5f82ed4" - integrity sha512-7MttVqLSAKxaaFrWxp7on3v0pm1futZ2qibPXEqFtf2+cQAq0fGp6e+FageN7abRHi1o4ZQ/1OzC5HA+giDL1Q== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-head-preview@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.4.1.tgz#44394a710e35a6a3454d8e1ee28517d84a426cc4" - integrity sha512-wFmxkMJxLM+VlBymKtkH8gbnqBqSDI6T/bIwPij26p+LjIpW9P6j53caVCuJpAyimRAp1PL/W9xl5AF4qZnYog== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-head-style@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.4.1.tgz#f54d460678b15f150ec62e2bd7fcd38ea80377ec" - integrity sha512-fV3Qvl/7rE5reNzZ1b5Iy63f/IlEYFj3tmqeZ6PNz8Jo5ZWngqDmQrx+lliMorVBTgwSg+Ym2LnQorilABk2kw== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-head-title@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.4.1.tgz#24ad16bfb5aa2184f549f7c457685151e05bfb8b" - integrity sha512-h0a2BmJMoBVYs9AlZyJkM1D6UW9F1lklGQ6L7c5mTuvgyCNP1NscRbRIQ0iW8Ckc94ielTEGJRvUiNuNCkMgbA== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-head@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.4.1.tgz#9dff94c4556e95dd2aad2f07e28c534b94f5f312" - integrity sha512-N1Yj+298eq4sA+F8n+jnprBlDx81dXq6QsA8bLdFTznKfgY3FaUY2FjCras6Ze3HtpNJztCaXfwEMcUvnjNbeA== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-hero@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.4.1.tgz#778b1ea3db1264e598ab72e8ccdb668c187d9464" - integrity sha512-8WL+JuasmBUNOph/btVR0cjz671V8Wkvn6Dt6hucmH51ikLuMYslw48SZWEC9yp1CsD6s1THyUogYcE/rB6RYw== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-image@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.4.1.tgz#26dd04ecbd8c3c8abfb0c7f355726ece37ff4cde" - integrity sha512-BPzw2cfXAsA2YihiR1RjHC56nTxNObdZ2A0A65jhsvRIcRhJyPPWRuzyxv/rejnKByGx6vuoRCkRE8IaiVrrzw== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-migrate@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.4.1.tgz#751165e967698e30bf2d77a8ab047e58459b477e" - integrity sha512-SzpR7fgnCPay9OtAEjo1mrEUoz9cTg5/nhRzvC/h+HpXFvyF+llGnUqsG4parnunGzzZ2kmZtd5cPc6ORa3dOA== - dependencies: - babel-runtime "^6.26.0" - commander "^2.11.0" - js-beautify "^1.6.14" - lodash "^4.17.2" - mjml-core "4.4.1" - mjml-parser-xml "4.4.1" - -mjml-navbar@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.4.1.tgz#3db23a3c3416477691622e60cf84e5ec52515a92" - integrity sha512-DI9mMTKiAvgVuFE3IO/NDIBah7OHvb8I8n1WMXLc/cMf7DZEJApfEy9MNRFz4EzCEgfBPf5dsYPGu4H/Nv36Fg== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-parser-xml@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.4.1.tgz#a0865aa87b7654965c8d13777cf7d0ea4ced5965" - integrity sha512-UFikH3kwnKGjJOH/UApNnYcLgCFvqC4D5zhI7/EpIAZGmCiyfsYxsjb9vi8zNTd3vxkB2REPdBs+TwIKUiVYLw== - dependencies: - babel-runtime "^6.26.0" - htmlparser2 "^3.9.2" - lodash "^4.17.2" - -mjml-raw@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.4.1.tgz#61855518fbedd49f77bdb3394bdc3b53faf853b3" - integrity sha512-6kMjtuiyc4+kbw+f9auiYb6eYVKBUA34CbFB2x+wS71sDNarCjvRedv30DJ2rp6M5IV79kOzv8wmb4+wN1Guig== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-section@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.4.1.tgz#e9580bfc74dc98a57ca4a9182b1fde63c925be54" - integrity sha512-QAdXVGrVw5ebECXmYj0l9D5hr1C5bpval9yx3yePEgZ+TMZwqtxKqUg4IjqTSdpZg+g0dxr6UzFILtfWg6n6rg== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-social@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.4.1.tgz#d262cc1b2679794ecf114a3d7290379f94573872" - integrity sha512-eO89CJhyCOdox3IVOJQmIZ+VOzoIp9kIC3eD9sY+K6CzZDD9LwapCoWUt5uQrDKn7dhhi8lN06u3SzGnRd8qmw== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-spacer@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.4.1.tgz#e098dcda1243aad69a6fe82580e16d723b8d1716" - integrity sha512-z3SOabP4THd/sKZBdC2jOQq4zGUdSZvjm3vGum3hM6ZS4jZkHJzL7qtd//u3WtaULdpjyeyaY9o0QDFcAKcrPQ== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-table@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.4.1.tgz#969878edc8b70cd72bf17973b300d080800ab966" - integrity sha512-bJzPnecXrEvkEAO5X9bIsFEhcObk4viArZVHzQW3wgfCLb7uSo9UHEF5lqueT+e00JThHVeP2SBcPuHgQC5JOg== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-text@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.4.1.tgz#04342875e742a82cafe3f492f8964a4fe0d244d4" - integrity sha512-kupHgeSb4Hc+HQtghhcK31p8q73u4mSjs/0HUUxXtmzbMxctSl9UNbFXApAVnbwAA03DL1LtVRymhGO2GdFowQ== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - -mjml-validator@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.4.0.tgz#290c469be4f15c714d859c50138bc380b5dd977b" - integrity sha512-htKvNAjfhLgPZHTVAQENRc/sMlOKYGCRn7pvSGi1N96VhDf2pB5/kgyLJMjT2u1yT0hXID+6P9/HKVNW2zlUQQ== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - warning "^3.0.0" - -mjml-wrapper@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.4.1.tgz#677a6704a3608b3937733c5858b54f71a2e9e5ad" - integrity sha512-/A6PTg0UOqk/3D7FEotPsnIcE4asHmlJdbCCU9XuvdThYMx70CE2JxurOo52OD1Hj41eLHrwXzybtYW9HZ56Bw== - dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.2" - mjml-core "4.4.1" - mjml-section "4.4.1" - -mjml@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/mjml/-/mjml-4.4.1.tgz#57dcfba52f8d6a90ed59759195eaa28a84d0da45" - integrity sha512-XFYAMJKvsY8Hu+GS8Bp2IjwawukQpW6nGWqK2kF+dd9se/cN4dnPGowDqF29GOgvZJJ/MckaJyiAl1KbJwGjtg== - dependencies: - mjml-accordion "4.4.1" - mjml-body "4.4.1" - mjml-button "4.4.1" - mjml-carousel "4.4.1" - mjml-cli "4.4.1" - mjml-column "4.4.1" - mjml-core "4.4.1" - mjml-divider "4.4.1" - mjml-group "4.4.1" - mjml-head "4.4.1" - mjml-head-attributes "4.4.1" - mjml-head-breakpoint "4.4.1" - mjml-head-font "4.4.1" - mjml-head-preview "4.4.1" - mjml-head-style "4.4.1" - mjml-head-title "4.4.1" - mjml-hero "4.4.1" - mjml-image "4.4.1" - mjml-migrate "4.4.1" - mjml-navbar "4.4.1" - mjml-raw "4.4.1" - mjml-section "4.4.1" - mjml-social "4.4.1" - mjml-spacer "4.4.1" - mjml-table "4.4.1" - mjml-text "4.4.1" - mjml-validator "4.4.0" - mjml-wrapper "4.4.1" - mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -9441,11 +8684,6 @@ mkdirp@^0.5.3: dependencies: minimist "^1.2.5" -mkdirp@~1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - moment@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" @@ -9582,13 +8820,6 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - no-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" @@ -9751,14 +8982,6 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -nopt@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -10084,15 +9307,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -10206,7 +9420,7 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.2, pako@~1.0.5: +pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -10220,13 +9434,6 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - param-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" @@ -11259,7 +10466,7 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-polyfill@8.1.3, promise-polyfill@^8.1.3: +promise-polyfill@8.1.3: version "8.1.3" resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g== @@ -11295,7 +10502,7 @@ prop-types-exact@^1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -11304,11 +10511,6 @@ prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.6, pr object-assign "^4.1.1" react-is "^16.8.1" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - protobufjs@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" @@ -12263,7 +11465,7 @@ react-use@^13.27.1: ts-easing "^0.2.0" tslib "^1.10.0" -react@^16.12.0, react@^16.13.1: +react@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== @@ -12550,7 +11752,7 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -relateurl@0.2.x, relateurl@^0.2.7: +relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= @@ -12831,6 +12033,8 @@ rxjs@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" @@ -12849,7 +12053,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -13065,11 +12269,6 @@ set-harmonic-interval@^1.0.1: resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g== -set-immediate-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -13167,11 +12366,6 @@ side-channel@^1.0.2: es-abstract "^1.17.0-next.1" object-inspect "^1.7.0" -sigmund@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= - signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -13213,11 +12407,6 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -slick@^1.12.2: - version "1.12.2" - resolved "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7" - integrity sha1-vQSN23TefRymkV+qSldXCzVQwtc= - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -13403,11 +12592,6 @@ spdy@^4.0.1: select-hose "^2.0.0" spdy-transport "^3.0.0" -spectrum-colorpicker@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/spectrum-colorpicker/-/spectrum-colorpicker-1.8.0.tgz#b926cf5002c0a77860b5f8351e1c093c65200107" - integrity sha1-uSbPUALAp3hgtfg1HhwJPGUgAQc= - split-on-first@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" @@ -14205,14 +13389,6 @@ ua-parser-js@^0.7.18: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - uncontrollable@^7.0.0: version "7.1.1" resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-7.1.1.tgz#f67fed3ef93637126571809746323a9db815d556" @@ -14223,16 +13399,6 @@ uncontrollable@^7.0.0: invariant "^2.2.4" react-lifecycles-compat "^3.0.4" -"underscore@1.4.4 - 1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" - integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= - -underscore@>=1.7.0, underscore@>=1.8.3, underscore@^1.9.1: - version "1.10.2" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" - integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -14323,11 +13489,6 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -14427,11 +13588,6 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -valid-data-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-2.0.0.tgz#2220fa9f8d4e761ebd3f3bb02770f1212b810537" - integrity sha512-dyCZnv3aCey7yfTgIqdZanKl7xWAEEKCbgmR7SKqyK6QT/Z07ROactrgD1eA37C69ODRj7rNOjzKWVPh0EUjBA== - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -14497,13 +13653,6 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= - dependencies: - loose-envify "^1.0.0" - warning@^4.0.1, warning@^4.0.3, warning@~4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" @@ -14527,21 +13676,6 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -web-resource-inliner@^4.2.1, web-resource-inliner@^4.3.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-4.3.4.tgz#07e1b4bcbcbee1021251b018e902bac5713f1be0" - integrity sha512-agVAgRhOOi4GVlvKK34oM23tDgH8390HfLnZY2HZl8OFBwKNvUJkH7t89AT2iluQP8w9VHAAKX6Z8EN7/9tqKA== - dependencies: - async "^3.1.0" - chalk "^2.4.2" - datauri "^2.0.0" - htmlparser2 "^4.0.0" - lodash.unescape "^4.0.1" - request "^2.88.0" - safer-buffer "^2.1.2" - valid-data-url "^2.0.0" - xtend "^4.0.2" - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -14987,7 +14121,7 @@ xregexp@^4.3.0: dependencies: "@babel/runtime-corejs3" "^7.8.3" -xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -15055,13 +14189,6 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= - dependencies: - camelcase "^4.1.0" - yargs@12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -15145,25 +14272,6 @@ yargs@^7.0.0: y18n "^3.2.1" yargs-parser "^5.0.0" -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - zen-observable-ts@^0.8.20: version "0.8.20" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.20.tgz#44091e335d3fcbc97f6497e63e7f57d5b516b163" diff --git a/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/down.yaml b/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/down.yaml new file mode 100644 index 000000000..e96404a91 --- /dev/null +++ b/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "template_header"; + type: run_sql diff --git a/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/up.yaml b/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/up.yaml new file mode 100644 index 000000000..99b37f336 --- /dev/null +++ b/hasura/migrations/1587060807479_alter_table_public_bodyshops_add_column_template_header/up.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "template_header" text NULL; + type: run_sql diff --git a/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..18a9c8a58 --- /dev/null +++ b/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,44 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - address1 + - address2 + - city + - country + - created_at + - email + - federal_tax_id + - id + - insurance_vendor_id + - logo_img_path + - md_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - state + - state_tax_id + - updated_at + - zip_post + computed_fields: [] + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..ffca2644f --- /dev/null +++ b/hasura/migrations/1587060816740_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,45 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - address1 + - address2 + - city + - country + - created_at + - email + - federal_tax_id + - id + - insurance_vendor_id + - logo_img_path + - md_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - state + - state_tax_id + - template_header + - updated_at + - zip_post + computed_fields: [] + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + role: user + table: + name: bodyshops + schema: public + type: create_select_permission diff --git a/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/down.yaml b/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/down.yaml new file mode 100644 index 000000000..297c7d9db --- /dev/null +++ b/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/down.yaml @@ -0,0 +1,45 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_update_permission +- args: + permission: + columns: + - address1 + - address2 + - city + - country + - created_at + - email + - federal_tax_id + - id + - insurance_vendor_id + - logo_img_path + - md_order_statuses + - md_responsibility_centers + - md_ro_statuses + - region_config + - shopname + - shoprates + - state + - state_tax_id + - updated_at + - zip_post + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: bodyshops + schema: public + type: create_update_permission diff --git a/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/up.yaml b/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/up.yaml new file mode 100644 index 000000000..fc6bba57f --- /dev/null +++ b/hasura/migrations/1587060828703_update_permission_user_public_table_bodyshops/up.yaml @@ -0,0 +1,46 @@ +- args: + role: user + table: + name: bodyshops + schema: public + type: drop_update_permission +- args: + permission: + columns: + - address1 + - address2 + - city + - country + - created_at + - email + - federal_tax_id + - id + - insurance_vendor_id + - logo_img_path + - md_order_statuses + - md_responsibility_centers + - md_ro_statuses + - messagingservicesid + - region_config + - shopname + - shoprates + - state + - state_tax_id + - updated_at + - zip_post + filter: + associations: + bodyshop: + associations: + user: + authid: + _eq: X-Hasura-User-Id + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: bodyshops + schema: public + type: create_update_permission diff --git a/hasura/migrations/1587062110920_create_table_public_templates/down.yaml b/hasura/migrations/1587062110920_create_table_public_templates/down.yaml new file mode 100644 index 000000000..fd0fffff3 --- /dev/null +++ b/hasura/migrations/1587062110920_create_table_public_templates/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: DROP TABLE "public"."templates"; + type: run_sql diff --git a/hasura/migrations/1587062110920_create_table_public_templates/up.yaml b/hasura/migrations/1587062110920_create_table_public_templates/up.yaml new file mode 100644 index 000000000..18fbf0bab --- /dev/null +++ b/hasura/migrations/1587062110920_create_table_public_templates/up.yaml @@ -0,0 +1,24 @@ +- args: + cascade: false + read_only: false + sql: CREATE EXTENSION IF NOT EXISTS pgcrypto; + type: run_sql +- args: + cascade: false + read_only: false + sql: "CREATE TABLE \"public\".\"templates\"(\"id\" uuid NOT NULL DEFAULT gen_random_uuid(), + \"created_at\" timestamptz NOT NULL DEFAULT now(), \"updated_at\" timestamptz + NOT NULL DEFAULT now(), \"bodyshopid\" uuid, \"name\" text NOT NULL, \"html\" + text NOT NULL, \"query\" text NOT NULL, PRIMARY KEY (\"id\") , FOREIGN KEY (\"bodyshopid\") + REFERENCES \"public\".\"bodyshops\"(\"id\") ON UPDATE restrict ON DELETE restrict);\nCREATE + OR REPLACE FUNCTION \"public\".\"set_current_timestamp_updated_at\"()\nRETURNS + TRIGGER AS $$\nDECLARE\n _new record;\nBEGIN\n _new := NEW;\n _new.\"updated_at\" + = NOW();\n RETURN _new;\nEND;\n$$ LANGUAGE plpgsql;\nCREATE TRIGGER \"set_public_templates_updated_at\"\nBEFORE + UPDATE ON \"public\".\"templates\"\nFOR EACH ROW\nEXECUTE PROCEDURE \"public\".\"set_current_timestamp_updated_at\"();\nCOMMENT + ON TRIGGER \"set_public_templates_updated_at\" ON \"public\".\"templates\" \nIS + 'trigger to set value of column \"updated_at\" to current timestamp on row update';" + type: run_sql +- args: + name: templates + schema: public + type: add_existing_table_or_view diff --git a/hasura/migrations/1587062123352_track_all_relationships/down.yaml b/hasura/migrations/1587062123352_track_all_relationships/down.yaml new file mode 100644 index 000000000..a170056fb --- /dev/null +++ b/hasura/migrations/1587062123352_track_all_relationships/down.yaml @@ -0,0 +1,12 @@ +- args: + relationship: templates + table: + name: bodyshops + schema: public + type: drop_relationship +- args: + relationship: bodyshop + table: + name: templates + schema: public + type: drop_relationship diff --git a/hasura/migrations/1587062123352_track_all_relationships/up.yaml b/hasura/migrations/1587062123352_track_all_relationships/up.yaml new file mode 100644 index 000000000..2c4ab676e --- /dev/null +++ b/hasura/migrations/1587062123352_track_all_relationships/up.yaml @@ -0,0 +1,20 @@ +- args: + name: templates + table: + name: bodyshops + schema: public + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: templates + schema: public + type: create_array_relationship +- args: + name: bodyshop + table: + name: templates + schema: public + using: + foreign_key_constraint_on: bodyshopid + type: create_object_relationship diff --git a/hasura/migrations/1587062292554_update_permission_user_public_table_templates/down.yaml b/hasura/migrations/1587062292554_update_permission_user_public_table_templates/down.yaml new file mode 100644 index 000000000..e02f50e10 --- /dev/null +++ b/hasura/migrations/1587062292554_update_permission_user_public_table_templates/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: templates + schema: public + type: drop_select_permission diff --git a/hasura/migrations/1587062292554_update_permission_user_public_table_templates/up.yaml b/hasura/migrations/1587062292554_update_permission_user_public_table_templates/up.yaml new file mode 100644 index 000000000..551467acc --- /dev/null +++ b/hasura/migrations/1587062292554_update_permission_user_public_table_templates/up.yaml @@ -0,0 +1,30 @@ +- args: + permission: + allow_aggregations: false + columns: + - html + - name + - query + - created_at + - updated_at + - bodyshopid + - id + computed_fields: [] + filter: + _or: + - bodyshopid: + _is_null: true + - bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + limit: null + role: user + table: + name: templates + schema: public + type: create_select_permission diff --git a/hasura/migrations/1587062297744_update_permission_user_public_table_templates/down.yaml b/hasura/migrations/1587062297744_update_permission_user_public_table_templates/down.yaml new file mode 100644 index 000000000..5820d3827 --- /dev/null +++ b/hasura/migrations/1587062297744_update_permission_user_public_table_templates/down.yaml @@ -0,0 +1,6 @@ +- args: + role: user + table: + name: templates + schema: public + type: drop_update_permission diff --git a/hasura/migrations/1587062297744_update_permission_user_public_table_templates/up.yaml b/hasura/migrations/1587062297744_update_permission_user_public_table_templates/up.yaml new file mode 100644 index 000000000..354ddfc4d --- /dev/null +++ b/hasura/migrations/1587062297744_update_permission_user_public_table_templates/up.yaml @@ -0,0 +1,31 @@ +- args: + permission: + columns: + - html + - name + - query + - created_at + - updated_at + - bodyshopid + - id + filter: + _or: + - bodyshopid: + _is_null: true + - bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: templates + schema: public + type: create_update_permission diff --git a/server/render/renderHandlebars.js b/server/render/renderHandlebars.js index 0b28149f3..d8b1eab59 100644 --- a/server/render/renderHandlebars.js +++ b/server/render/renderHandlebars.js @@ -3,7 +3,14 @@ const Handlebars = require("handlebars"); exports.render = (req, res) => { //Perform request validation - console.log("Got a render request."); - var template = Handlebars.compile(req.body.view); + let view; + if (req.body.context.bodyshop.template_header) { + console.log("[HJS Render] Including Header"); + view = `${req.body.context.bodyshop.template_header}${req.body.view}`; + } else { + console.log("[HJS Render] No header to include."); + view = req.body.view; + } + var template = Handlebars.compile(view); res.send(template(req.body.context)); };