├── .prettierignore ├── typings ├── regx │ └── index.d.ts └── planer │ └── index.d.ts ├── .eslintignore ├── .npmignore ├── .gitignore ├── jest.config.js ├── src ├── tests │ ├── prepareMessage │ │ ├── broken-links.input.html │ │ ├── email_11.input.html │ │ ├── empty-divs.input.html │ │ ├── tempo-signature.input.html │ │ ├── quote-string-before-blockquote.output-message.html │ │ ├── email_19.output-message.html │ │ ├── email_11.output-message.html │ │ ├── empty-divs.output-message.html │ │ ├── empty-divs.output-complete.html │ │ ├── email_11.output-complete.html │ │ ├── prepareMessageTestOptions.ts │ │ ├── quote-string-before-blockquote.input.html │ │ ├── broken-links.output-complete.html │ │ ├── broken-links.output-message.html │ │ ├── tempo-signature.output-complete.html │ │ ├── tempo-signature.output-message.html │ │ ├── attached-image.input.html │ │ ├── trimmed-reply-bug.output-message.html │ │ ├── no-empty-message.input.html │ │ ├── attached-image.output-complete.html │ │ ├── attached-image.output-message.html │ │ ├── github-emoji.input.html │ │ ├── prepareMessage.test.ts │ │ ├── github-emoji.output-complete.html │ │ ├── github-emoji.output-message.html │ │ ├── generateFixtureOutputs.ts │ │ ├── no-empty-message.output-complete.html │ │ ├── no-empty-message.output-message.html │ │ ├── fixtures.ts │ │ ├── all-in-one.output-message.html │ │ ├── all-in-one.input.html │ │ ├── all-in-one.output-complete.html │ │ ├── email_19.input.html │ │ ├── trimmed-reply-bug.input.html │ │ └── trimmed-reply-bug.output-complete.html │ ├── utils.ts │ ├── appendStyle.test.ts │ ├── walkBackwards.test.ts │ ├── linkify.test.ts │ ├── enforceViewport.test.ts │ ├── removeTrailingWhitespaces.test.ts │ ├── remoteContent │ │ ├── email-privacy-tester.html │ │ ├── blockRemoteContent.test.ts │ │ └── email-privacy-tester.eml │ └── removeQuotations.test.ts ├── index.ts ├── appendStyle.ts ├── walkBackwards.ts ├── enforceViewport.ts ├── enhanceLinks.ts ├── linkify.ts ├── fixBrokenHtml.ts ├── removeTrailingWhitespaces.ts ├── blockRemoteContent │ ├── index.ts │ ├── blockRemoteContentInStyle.ts │ └── blockRemoteContentInAttributes.ts ├── cheerio-utils.ts ├── findQuoteString.ts ├── removeQuotations.ts └── prepareMessage.ts ├── .prettierrc ├── tsconfig.json ├── scripts └── decode-quoted-printable.sh ├── benchmarks ├── emails │ ├── index.ts │ ├── basic-lorem-gmail.html │ ├── basic-lorem-gmail.eml │ ├── basic-lorem-gmail-replied-x1.html │ ├── basic-lorem-gmail-replied-x2.html │ ├── basic-lorem-gmail-replied-x1.eml │ └── basic-lorem-gmail-replied-x2.eml ├── message-splitter-output.txt ├── README.md ├── message-splitter.ts ├── libraries-output.txt ├── libraries.ts └── utils.ts ├── LICENSE.md ├── .circleci └── config.yml ├── .eslintrc.js ├── package.json ├── README.md └── CHANGELOG.md /.prettierignore: -------------------------------------------------------------------------------- 1 | src/tests/prepareMessage/ -------------------------------------------------------------------------------- /typings/regx/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'regx'; 2 | -------------------------------------------------------------------------------- /typings/planer/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'planer'; 2 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | lib/ 2 | 3 | # Node 4 | node_modules 5 | 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | tsconfig.json 2 | tsconfig.tsbuildinfo 3 | src/ 4 | benchmarks/ 5 | old/ 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lib/ 2 | tsconfig.tsbuildinfo 3 | 4 | # Node 5 | node_modules 6 | yarn-error.log 7 | 8 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: 'ts-jest', 3 | modulePathIgnorePatterns: ['old/'], 4 | testEnvironment: 'node', 5 | }; 6 | -------------------------------------------------------------------------------- /src/tests/prepareMessage/broken-links.input.html: -------------------------------------------------------------------------------- 1 | GitHub 2 | Some email 3 | Invalid link -------------------------------------------------------------------------------- /src/tests/prepareMessage/email_11.input.html: -------------------------------------------------------------------------------- 1 |
this is a quote
okokd sa d
2 |dsa
3 | 4 | 5 | 6 |--
I use Tempo to improve my focus
Hello
12 | 13 | 14 | -------------------------------------------------------------------------------- /src/tests/prepareMessage/email_19.output-message.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | and again 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/tests/prepareMessage/email_11.output-message.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 |this is a quote14 |
this is a quote14 |
Hello
4 |9 |15 | 16 | 17 | -------------------------------------------------------------------------------- /src/tests/prepareMessage/broken-links.output-complete.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | GitHub 12 | Some email 13 | Invalid link 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/tests/prepareMessage/broken-links.output-message.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | GitHub 12 | Some email 13 | Invalid link 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/tests/prepareMessage/tempo-signature.output-complete.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 |10 |14 |11 | This is the replied message 12 |
13 |
okokd sa d
12 |dsa
13 | 14 |
15 | --
I use Tempo to improve my focus
16 |
okokd sa d
12 |dsa
13 | 14 |
15 | --
I use Tempo to improve my focus
16 |
8 | Hello 9 |
10 |Hi Mette,
12 |13 | I have attached our contracts for the USD 500.000 investment regarding BoostVC. Please let me know if thats what 14 | is needed. 15 |
16 |Kind Regards
17 |Henrique
18 |--
I use Tempo to improve my focus
13 |21 |14 |20 |15 |19 |16 | Replied message 17 |
18 |
14 | Hello 15 |
16 |14 | Hello 15 |
16 |@alexandersandberg approved this pull request.
4 | 5 |Nice job!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.![]()
@alexandersandberg approved this pull request.
14 | 15 |
16 | Nice job!
17 |
27 | —
You are receiving this because you authored the thread.
Reply to this email directly,
28 | view it on GitHub, or
29 | unsubscribe.
30 |
@alexandersandberg approved this pull request.
14 | 15 |
16 | Nice job!
17 |
27 | —
You are receiving this because you authored the thread.
Reply to this email directly,
28 | view it on GitHub, or
29 | unsubscribe.
30 |
25 |33 |26 |32 |27 |31 |28 | Replied message 29 |
30 |
25 |33 |26 |32 |27 |31 |28 | Replied message 29 |
30 |
23 | Here is the body of the message, with a text
24 | link.com
25 |
26 |
29 |
30 | An hoc usque quaque, aliter in vita? Terram, mihi crede, ea lanx et maria deprimet. Duo Reges:
31 | constructio interrete. Id est enim, de quo quaerimus. Parvi enim primo ortu sic iacent, tamquam omnino
32 | sine animo sint. Quis est tam dissimile homini. Claudii libidini, qui tum erat summo ne imperio, dederetur.
33 | Beatus sibi videtur esse moriens.
36 |
4 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. 5 | An hoc usque quaque, aliter in vita? Terram, mihi crede, ea 6 | lanx et maria deprimet. Duo Reges: constructio interrete. 7 | Id est enim, de quo quaerimus. Parvi enim primo ortu sic 8 | iacent, tamquam omnino sine animo sint. Quis est tam dissimile 9 | homini. Claudii libidini, qui tum erat summo ne imperio, dederetur. 10 | Beatus sibi videtur esse moriens. 13 |
14 | 15 |16 | Hoc dixerit potius Ennius: Nimium boni est, cui nihil est mali. 17 | Egone quaeris, inquit, quid sentiam? Si mala non sunt, iacet omnis 18 | ratio Peripateticorum. Itaque rursus eadem ratione, qua sum paulo 19 | ante usus, haerebitis. Paulum, cum regem Persem captum adduceret, 20 | eodem flumine invectio? Mihi enim erit isdem istis fortasse iam 21 | utendum. Ab hoc autem quaedam non melius quam veteres, quaedam 22 | omnino relicta. Tamen a proposito, inquam, aberramus. 23 |
24 | 25 |26 | Sic, et quidem diligentius saepiusque ista loquemur inter nos 27 | agemusque communiter. 28 | Quid sequatur, quid repugnet, vident. 31 | Serpere anguiculos, nare anaticulas, evolare merulas, cornibus uti 32 | videmus boves, nepas aculeis. Ego vero volo in virtute vim esse quam 33 | maximam; Aufert enim sensus actionemque tollit omnem. Qua tu etiam 34 | inprudens utebare non numquam. Apud ceteros autem philosophos, qui 35 | quaesivit aliquid, tacet; Totum autem id externum est, et quod 36 | externum, id in casu est. 37 |
38 |
30 | Here is the body of the message, with a text link.com
31 |
32 |
33 |
34 | An hoc usque quaque, aliter in vita? Terram, mihi crede, ea lanx et maria deprimet. Duo
35 | Reges: constructio interrete. Id est enim, de quo quaerimus. Parvi enim primo ortu sic
36 | iacent, tamquam omnino sine animo sint. Quis est tam dissimile homini. Claudii libidini, qui tum
37 | erat summo ne imperio, dederetur.
38 | Beatus sibi videtur esse moriens.
39 |
42 |
43 |
44 |
57 |65 |58 |64 |59 |63 |60 | This is the replied message 61 |
62 |