From dd9d83cdab3795687ce89dc2a30431e023a3ad34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Mon, 15 Jun 2020 16:08:30 +0200 Subject: [PATCH] :tada: Introduce mjml to format email messages --- backend/package-lock.json | 1832 +++++++++++++++++ backend/package.json | 18 + .../emails-mjml/password-recovery/en.mjml | 68 + .../emails/password-recovery/en.html | 481 ++++- backend/scripts/build-email-templates.sh | 4 + .../resources/images/email/logo-github.png | Bin 0 -> 4457 bytes .../resources/images/email/logo-instagram.png | Bin 0 -> 4595 bytes .../resources/images/email/logo-taiga.png | Bin 0 -> 3105 bytes .../resources/images/email/logo-twitter.png | Bin 0 -> 3815 bytes .../resources/images/email/logo-uxbox.png | Bin 0 -> 4123 bytes .../resources/images/email/uxbox-title.png | Bin 0 -> 2506 bytes 11 files changed, 2388 insertions(+), 15 deletions(-) create mode 100644 backend/package-lock.json create mode 100644 backend/package.json create mode 100644 backend/resources/emails-mjml/password-recovery/en.mjml create mode 100755 backend/scripts/build-email-templates.sh create mode 100644 frontend/resources/images/email/logo-github.png create mode 100644 frontend/resources/images/email/logo-instagram.png create mode 100644 frontend/resources/images/email/logo-taiga.png create mode 100644 frontend/resources/images/email/logo-twitter.png create mode 100644 frontend/resources/images/email/logo-uxbox.png create mode 100644 frontend/resources/images/email/uxbox-title.png diff --git a/backend/package-lock.json b/backend/package-lock.json new file mode 100644 index 000000000..8a8a09d91 --- /dev/null +++ b/backend/package-lock.json @@ -0,0 +1,1832 @@ +{ + "name": "uxbox-back", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/runtime": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "requires": { + "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" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "requires": { + "source-map": "~0.6.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "datauri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/datauri/-/datauri-2.0.0.tgz", + "integrity": "sha512-zS2HSf9pI5XPlNZgIqJg/wCJpecgU/HA6E/uv2EfaWnW1EiTGLfy/EexTIsC9c99yoCOTXlqeeWk4FkCSuO3/g==", + "requires": { + "image-size": "^0.7.3", + "mimer": "^1.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "requires": { + "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" + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "image-size": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz", + "integrity": "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "js-beautify": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz", + "integrity": "sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==", + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "~1.0.3", + "nopt": "^4.0.3" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "juice": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/juice/-/juice-5.2.0.tgz", + "integrity": "sha512-0l6GZmT3efexyaaay3SchKT5kG311N59TEFP5lfvEy0nz9SNqjx311plJ3b4jze7arsmDsiHQLh/xnAuk0HFTQ==", + "requires": { + "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" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" + }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "mensch": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/mensch/-/mensch-0.3.4.tgz", + "integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimer/-/mimer-1.1.0.tgz", + "integrity": "sha512-y9dVfy2uiycQvDNiAYW6zp49ZhFlXDMr5wfdOiMbdzGM/0N5LNR6HTUn3un+WUQcM0koaw8FMTG1bt5EnHJdvQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mjml": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml/-/mjml-4.6.3.tgz", + "integrity": "sha512-nkkdB5lqDi2qHDOnAWCHXk5RmQ2phK6XB2eokpCW5KzK1A5Cbu61/Zw37VJU5gDvoab/ZD3FHBUj8O6alu4c4g==", + "dev": true, + "requires": { + "mjml-accordion": "4.6.3", + "mjml-body": "4.6.3", + "mjml-button": "4.6.3", + "mjml-carousel": "4.6.3", + "mjml-cli": "4.6.3", + "mjml-column": "4.6.3", + "mjml-core": "4.6.3", + "mjml-divider": "4.6.3", + "mjml-group": "4.6.3", + "mjml-head": "4.6.3", + "mjml-head-attributes": "4.6.3", + "mjml-head-breakpoint": "4.6.3", + "mjml-head-font": "4.6.3", + "mjml-head-preview": "4.6.3", + "mjml-head-style": "4.6.3", + "mjml-head-title": "4.6.3", + "mjml-hero": "4.6.3", + "mjml-image": "4.6.3", + "mjml-migrate": "4.6.3", + "mjml-navbar": "4.6.3", + "mjml-raw": "4.6.3", + "mjml-section": "4.6.3", + "mjml-social": "4.6.3", + "mjml-spacer": "4.6.3", + "mjml-table": "4.6.3", + "mjml-text": "4.6.3", + "mjml-validator": "4.6.3", + "mjml-wrapper": "4.6.3" + } + }, + "mjml-accordion": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-accordion/-/mjml-accordion-4.6.3.tgz", + "integrity": "sha512-fpX6Xc2xH++2xsixUv9EzIMz48wsxpEaRohh9IfUPo+q2OoA2eBwnIQFNmBLV3hvkQ5p/ESFP1kUDoC/Ey4diw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-body": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-body/-/mjml-body-4.6.3.tgz", + "integrity": "sha512-nnYc2e/vjCzHNQ9h8FFYMyxM6QoJJL27AHUMghiUS1Hi4Pje65Ehisy5hWn9BF7kHyTb2PWg8kDM0qtBUpOfAA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-button": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-button/-/mjml-button-4.6.3.tgz", + "integrity": "sha512-P8C3xo1kkB96pP3ajsw/AHzorpN5xaA57CKm/A0mjyqGG43VZZS6NVW4cGEcOx7YNMT3DXTqsT6IlWBhNaFesQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-carousel": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-carousel/-/mjml-carousel-4.6.3.tgz", + "integrity": "sha512-ITWVOdWAcBpKuMKiv1fcHwIhM7AM2b96l5+fbV8+NU7CD5YQutwgiWLvP4N6NVqr+WeH6fTajWD8//zr73B0Ew==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-cli": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-cli/-/mjml-cli-4.6.3.tgz", + "integrity": "sha512-dmjkuPi3iK340gM6m1ruIrIB50R54MJbpZJ9JIJHrgQwzumSEJGqCVxQIqlChteBzYJ4vTnZFZiBR6ak8x8YSg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "chokidar": "^3.0.0", + "glob": "^7.1.1", + "lodash": "^4.17.15", + "mjml-core": "4.6.3", + "mjml-migrate": "4.6.3", + "mjml-parser-xml": "4.6.3", + "mjml-validator": "4.6.3", + "yargs": "^13.3.0" + } + }, + "mjml-column": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-column/-/mjml-column-4.6.3.tgz", + "integrity": "sha512-LySMYdqMhEE49a6d7M0KOFmH6VYIQDLi8eReW7jozBU1v2mD1Leudm8VHXLc6wLJrUpHD5vNkjQ7ZTErUSwDWg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-core": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-core/-/mjml-core-4.6.3.tgz", + "integrity": "sha512-DWKh3wwO6y3nPkX29LmHuIynamwb3iDGk/WPu03yfDLYJAeJdVPJ35YCNV2Ap0WFmbSEihXjsGjMmz/g8OTRIg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "html-minifier": "^3.5.3", + "js-beautify": "^1.6.14", + "juice": "^5.2.0", + "lodash": "^4.17.15", + "mjml-migrate": "4.6.3", + "mjml-parser-xml": "4.6.3", + "mjml-validator": "4.6.3" + } + }, + "mjml-divider": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-divider/-/mjml-divider-4.6.3.tgz", + "integrity": "sha512-yzErPHvnGRr+3Sc3i0AWBMfBLVXPGW6X6WjpntD8uFTDWzR70VHRV54CqnZv0pv7M4PUuMKT/AsJsFsXc1iw3A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-group": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-group/-/mjml-group-4.6.3.tgz", + "integrity": "sha512-GI3SFDEY00xYXvYyjYHgTpmWnBKq2VKRxaOjybhZTmmHlIqWuJw/U5In2IhIJqjMEvbIaZBxcfUREIelogfRRQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-head": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-head/-/mjml-head-4.6.3.tgz", + "integrity": "sha512-db8d0/f8Li8JYIDvkrCzY23KH2lTQ5AqjTUwrOoG15eeSzlx8ugg5f/UaJvNkQsIXUDeVvGpwAz8gXG5x+1YNw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-head-attributes": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-head-attributes/-/mjml-head-attributes-4.6.3.tgz", + "integrity": "sha512-7AS92bKSo664DQ26b0l8D/yAJ6yNsMbf2wX3rwH9S+hS3+Gyoi29LGtxjk+jlwWOjAsDo/VTZMhMHMquFEUn8w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-head-breakpoint": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-head-breakpoint/-/mjml-head-breakpoint-4.6.3.tgz", + "integrity": "sha512-La/H4pVyfjwbnq4r/JEBK+3ZMkjJYJGiGuDvdLHBP/cOBRfrtxEGEfMHiJzWAxCayrAd+kw/WlJyI34iLnB0kg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-head-font": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-head-font/-/mjml-head-font-4.6.3.tgz", + "integrity": "sha512-H0TlnHrN+erBCwHw7BO57BquxLjj+/YleCzRWZIOmwjmtlq0ZfnzCyrH0cAOfxdM/VHBQcRGchQsiZfuACbtPA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-head-preview": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-head-preview/-/mjml-head-preview-4.6.3.tgz", + "integrity": "sha512-pdSYu7T5dSeAVSQlafN9939hza3C4vy617xIyNGqTJEByvFJGCbo7lPEG0okJIua8+zVRQTzuOOqG2nhWqmrSw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-head-style": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-head-style/-/mjml-head-style-4.6.3.tgz", + "integrity": "sha512-hnEyVeoYGNyme5maqJaeIkhrcj5j5pzOhUB3p2Ul3ENZfwhdUKyQyvqNAlqo5pVjn7c9otE4NLMOM6uv5lozqg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-head-title": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-head-title/-/mjml-head-title-4.6.3.tgz", + "integrity": "sha512-PU4lrT7Ci1O0CgKGE3nnQka0k3uuy8BR+O+qip1euHVev5C/UOr1RsMvOpwaVzVUwDfJkY07VafJIooN0/Ubpw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-hero": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-hero/-/mjml-hero-4.6.3.tgz", + "integrity": "sha512-Q74Hnwb8OtoghIZWzR1jrsmN6SfrBGoNH0f865SccrXqzZFnWyBygoHi2Cszi7OiF9LXF1NvOb8Q2bUmUsyIIw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-image": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-image/-/mjml-image-4.6.3.tgz", + "integrity": "sha512-/CXBAuqRQ+JJEcIp7SNxnjVSLOmqAnnVsIypMJbENV7hS8o9OnaBPIgjAGB7x+8OVadXfR3RAO5b/XWOrO0CMw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-migrate": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-migrate/-/mjml-migrate-4.6.3.tgz", + "integrity": "sha512-5vbL2n6Dx9M3vRItgPXm4E0LZw89b4YB4HtoxMquueAIgOkVIMja0FY48wPpIwow2wdKh+b31B6ise3Vmduczg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "commander": "^2.11.0", + "js-beautify": "^1.6.14", + "lodash": "^4.17.15", + "mjml-core": "4.5.0", + "mjml-parser-xml": "4.5.0" + }, + "dependencies": { + "mjml-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/mjml-core/-/mjml-core-4.5.0.tgz", + "integrity": "sha512-/9M4Dt0f7zaVzP7OJZlqaVWS1ijkoEoF6dKKeiXqRQ3oTvyiTEATHGA5xeifsU4dOzDFhdfFbu54LJOmHdPlVw==", + "requires": { + "babel-runtime": "^6.26.0", + "html-minifier": "^3.5.3", + "js-beautify": "^1.6.14", + "juice": "^5.2.0", + "lodash": "^4.17.15", + "mjml-parser-xml": "4.5.0", + "mjml-validator": "4.5.0" + } + }, + "mjml-migrate": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/mjml-migrate/-/mjml-migrate-4.5.0.tgz", + "integrity": "sha512-zzAKSrGpF+OVoa3GHVS7O2A4WZPLBV/Nrc80MGaLS4hhBbuj2WeUdaugVlIMXRRuhQ+nP+k0fZSM8tonDDjd2w==", + "requires": { + "babel-runtime": "^6.26.0", + "commander": "^2.11.0", + "js-beautify": "^1.6.14", + "lodash": "^4.17.15", + "mjml-core": "4.5.0", + "mjml-parser-xml": "4.5.0" + } + }, + "mjml-parser-xml": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/mjml-parser-xml/-/mjml-parser-xml-4.5.0.tgz", + "integrity": "sha512-9NK9TnkDSJ0M7lMv1vuGjZumi1rqdv4Iwr9rBDpBPUvfv9ay7MoJrQjK28cu6PKcamOK6CHAFXihlV9Q6fbYaA==", + "requires": { + "babel-runtime": "^6.26.0", + "htmlparser2": "^3.9.2", + "lodash": "^4.17.15" + } + }, + "mjml-validator": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/mjml-validator/-/mjml-validator-4.5.0.tgz", + "integrity": "sha512-Qbyf/VCk3U8ViLCu+VCwGYZVQaJAw5brKW/aXeRRHb10LdhaCF1S0JNIiNyutfnqn92QWdzYt6W+cbcEZIKa9A==", + "requires": { + "babel-runtime": "^6.26.0", + "lodash": "^4.17.15", + "warning": "^3.0.0" + } + } + } + }, + "mjml-navbar": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-navbar/-/mjml-navbar-4.6.3.tgz", + "integrity": "sha512-Kqalb/YTicBuCwpUdMPQ+U/Sc6pOe35QWpixcEpIKK204+0+B/zx5vxo9EDDwOBaz4P9PbjSrH+8qHNKp7/i5w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-parser-xml": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-parser-xml/-/mjml-parser-xml-4.6.3.tgz", + "integrity": "sha512-f4eptqzxAPM3YWvKg16QxiAlcR13jr5RX7x/JCSrV37Vx/Lr9tFe2utI2qEgsXvr2MQPud/fZ69XBCBgxPUvqQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "htmlparser2": "^3.9.2", + "lodash": "^4.17.15" + } + }, + "mjml-raw": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-raw/-/mjml-raw-4.6.3.tgz", + "integrity": "sha512-Q3mU1VFg1iXM8088AAkmQa4I8yHBVjd3nd5ZyLq/s/Ye08NMlu1tgkxnbk8GH8lcVYOFha4BWAo+OhloLOQsYQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-section": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-section/-/mjml-section-4.6.3.tgz", + "integrity": "sha512-pZqj7ZmCrpEkAwfGPAF+z6LqWuK3L+3vbCQP7DCeHfvinDufY7M2LE3ususXh9EGJ/RSuFd9q8lxHAtoUZ6OSg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-social": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-social/-/mjml-social-4.6.3.tgz", + "integrity": "sha512-9RHSmjbIc0F4ps4mcKinFu0T08ECx6o7yzxyG2t2mBiI4DyKEhdR/5iaudTYifAt4a49jv8s/RVXFqjWLPP7RQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-spacer": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-spacer/-/mjml-spacer-4.6.3.tgz", + "integrity": "sha512-UhrzNFrK5QJ3AuO3lDzDlf7pTU07PVbwL2qMN8aqS81+wvoWPG3EvFj9JT8KBtAP1FXk+JsqdEqvinOJEQ9Z9Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-table": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-table/-/mjml-table-4.6.3.tgz", + "integrity": "sha512-4Og9PJISmbNTU/lFXfWiCFm2bCbVCAEC+7EYyAt/S90KxJci8UikQOfFMupKUabR6DDooIT9X9NFLomOLGsJNQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-text": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-text/-/mjml-text-4.6.3.tgz", + "integrity": "sha512-G8P8KgY1rQeABc0+4EOJPo0riHQHFv4pWJnwxHZmK9eHFUMbnD7z5Qh/oSmvNXp5Vsf07l6QdGQN6NF7L0yU0Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3" + } + }, + "mjml-validator": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-validator/-/mjml-validator-4.6.3.tgz", + "integrity": "sha512-cLAP7UpI6pXNHjvFYkyDDEc01stNX8rhtDFXTkZ+WDAzE0xUiFrIkiKqiHmYNl9Z5/FCak9+1H65eDYejW2igQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "warning": "^3.0.0" + } + }, + "mjml-wrapper": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/mjml-wrapper/-/mjml-wrapper-4.6.3.tgz", + "integrity": "sha512-+TseKSGEzKXlx/E3T41WJg4YlL4qFp/kO/cZ6jau1cBYIxdxnR2f8RLh4wd8b39cnVGQJIYC2MO9H8S/uq+M1A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7", + "lodash": "^4.17.15", + "mjml-core": "4.6.3", + "mjml-section": "4.6.3" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "requires": { + "no-case": "^2.2.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "slick": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/slick/-/slick-1.12.2.tgz", + "integrity": "sha1-vQSN23TefRymkV+qSldXCzVQwtc=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "valid-data-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-2.0.0.tgz", + "integrity": "sha512-dyCZnv3aCey7yfTgIqdZanKl7xWAEEKCbgmR7SKqyK6QT/Z07ROactrgD1eA37C69ODRj7rNOjzKWVPh0EUjBA==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "web-resource-inliner": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-4.3.4.tgz", + "integrity": "sha512-agVAgRhOOi4GVlvKK34oM23tDgH8390HfLnZY2HZl8OFBwKNvUJkH7t89AT2iluQP8w9VHAAKX6Z8EN7/9tqKA==", + "requires": { + "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" + }, + "dependencies": { + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + }, + "domhandler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz", + "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==", + "requires": { + "domelementtype": "^2.0.1" + } + }, + "domutils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.1.0.tgz", + "integrity": "sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg==", + "requires": { + "dom-serializer": "^0.2.1", + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0" + } + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + }, + "htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 000000000..8d9dab0dd --- /dev/null +++ b/backend/package.json @@ -0,0 +1,18 @@ +{ + "name": "uxbox-back", + "version": "0.1.0", + "description": "The Open-Source prototyping tool", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build-emails": "npx mjml" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/uxbox/uxbox.git" + }, + "author": "Uxbox", + "license": "SEE LICENSE IN ", + "devDependencies": { + "mjml": "^4.6.3" + } +} diff --git a/backend/resources/emails-mjml/password-recovery/en.mjml b/backend/resources/emails-mjml/password-recovery/en.mjml new file mode 100644 index 000000000..d19a7bc12 --- /dev/null +++ b/backend/resources/emails-mjml/password-recovery/en.mjml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + Hello {{name}}! + + We have received a request to reset your password. Click the link + below to choose a new one: + + + Reset password + + + If you received this email by mistake, you can safely ignore + it. Your password won't be changed. + + Enjoy! + The UXBOX team. + + + + + + + UXBOX is the first Open Source prototyping platform that will be embraced by multidisciplinary teams. + + + + + + + + + + + + + + + + + + + + UXBOX © 2020 | Made with <3 and Open Source + + + + + + diff --git a/backend/resources/emails/password-recovery/en.html b/backend/resources/emails/password-recovery/en.html index c0e0767ed..99b57f493 100644 --- a/backend/resources/emails/password-recovery/en.html +++ b/backend/resources/emails/password-recovery/en.html @@ -1,22 +1,473 @@ -{% extends "emails/base.html" %} + + -{% block content %} -

Hello {{name}}!

+ + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ +
+ + + + +
+ + + + + + +
+ +
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+
Hello {{name}}!
+
+
We have received a request to reset your password. Click the link below to choose a new one:
+
+ + + + +
+ Reset password +
+
+
If you received this email by mistake, you can safely ignore it. Your password won't be changed.
+
+
Enjoy!
+
+
The UXBOX team.
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ + + + +
+
UXBOX is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ + + + +
+ + + + + +
+ + + + +
+ + + +
+
+ + + + + +
+ + + + +
+ + + +
+
+ + + + + +
+ + + + +
+ + + +
+
+ + + + + +
+ + + + +
+ + + +
+
+ + + + + +
+ + + + +
+ + + +
+
+ +
+
+ +
+
+ +
+ + + + + + +
+ +
+ + + + +
+
UXBOX © 2020 | Made with <3 and Open Source
+
+
+ +
+
+ +
+ + + \ No newline at end of file diff --git a/backend/scripts/build-email-templates.sh b/backend/scripts/build-email-templates.sh new file mode 100755 index 000000000..0c10a7a69 --- /dev/null +++ b/backend/scripts/build-email-templates.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +npx mjml resources/emails-mjml/password-recovery/en.mjml -o resources/emails/password-recovery/en.html + diff --git a/frontend/resources/images/email/logo-github.png b/frontend/resources/images/email/logo-github.png new file mode 100644 index 0000000000000000000000000000000000000000..9c65f71a4a7e1c4be7e5fdfb1df6546d921f5658 GIT binary patch literal 4457 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 vF@+z(AAkM4bS}}~ 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 literal 0 HcmV?d00001 diff --git a/frontend/resources/images/email/logo-taiga.png b/frontend/resources/images/email/logo-taiga.png new file mode 100644 index 0000000000000000000000000000000000000000..6e29f6bcea2666003ecc3362f4da2eb6dc3ddd6b GIT binary patch literal 3105 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%0A2>t^ z4NNYRMDXa zap56BR?Z|-;%eBecDUbt8G!luxv*pB%U_~}=Q}D~v3-!%D_56h&=Ju_ypBJf0Q?tG z_~y}#!XxXOxPnbjKyWy%R@!|D(pmyBzE~mnvF2iHws&)h?B_4dwRXL-b*9x^^BwNt zB@}aj|3sKL(Ww5}>nQw9g7=5IDt;AD=Kw#4y=kqo*mvNR%JH_WYliV0-oT4FfZO;O z(`hYf{?kXrY#L2t>R+_ySxkrEa-*IsKQhbZ_q4T#@K$zZY{O=(%Py`vxQ-w2RTTNP dUQPTz>@W8ks2?Hh7GeMZ002ovPDHLkV1g5~HTnPm literal 0 HcmV?d00001 diff --git a/frontend/resources/images/email/logo-uxbox.png b/frontend/resources/images/email/logo-uxbox.png new file mode 100644 index 0000000000000000000000000000000000000000..0bde659689d0ad9a7e1edf1bf3d8de17f716ae18 GIT binary patch literal 4123 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 ZKLJdN#bZ1hUY`H}002ovPDHLkV1nhs(4GJQ literal 0 HcmV?d00001 diff --git a/frontend/resources/images/email/uxbox-title.png b/frontend/resources/images/email/uxbox-title.png new file mode 100644 index 0000000000000000000000000000000000000000..4e9cb501f6dac472b3a1adbddaf6410668d58437 GIT binary patch literal 2506 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 UA$~*i`2YX_07*qoM6N<$f+K&kZ2$lO literal 0 HcmV?d00001