From 49dd75dace073c00658ab48b3ad75a8999694ff7 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 31 May 2019 09:12:04 +0000 Subject: [PATCH 01/25] chore(package): update rollup to version 1.13.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..b85ad4e 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "jest": "24.8.0", "prettier": "1.17.1", "pretty-quick": "1.11.0", - "rollup": "1.12.5", + "rollup": "1.13.0", "rollup-plugin-babel": "4.3.2", "rollup-plugin-commonjs": "10.0.0", "rollup-plugin-uglify": "6.0.2" From 9c2d77634749bf657abf526c5fdf745f77885d23 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 31 May 2019 09:12:09 +0000 Subject: [PATCH 02/25] chore(package): update lockfile package-lock.json --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..2d3f793 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1070,9 +1070,9 @@ } }, "@types/node": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.3.tgz", - "integrity": "sha512-zkOxCS/fA+3SsdA+9Yun0iANxzhQRiNwTvJSr6N95JhuJ/x27z9G2URx1Jpt3zYFfCGUXZGL5UDxt5eyLE7wgw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.4.tgz", + "integrity": "sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw==", "dev": true }, "@types/normalize-package-data": { @@ -5834,9 +5834,9 @@ } }, "rollup": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.12.5.tgz", - "integrity": "sha512-XF5YdpeKX4ueGpBCW07AxPJJHu7SHaobYzu2lZnMPX908Ely2LZF0a0EQPgb+iVy5kP4cb4QT3nXIAnyAxpL3A==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.13.0.tgz", + "integrity": "sha512-pW4G4cQmtEmbg4/CoFYc2AYeKiGpMAVak7kFpch1UJnYkXMn/34L8cD0kxkmjJNpJ/NagOHVdCwdkbtCEuDEww==", "dev": true, "requires": { "@types/estree": "0.0.39", From d5c6be05a7b3e661b56afa36ff8b89c22dfadfac Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sat, 1 Jun 2019 11:09:06 +0000 Subject: [PATCH 03/25] chore(package): update rollup to version 1.13.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..98fde5b 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "jest": "24.8.0", "prettier": "1.17.1", "pretty-quick": "1.11.0", - "rollup": "1.12.5", + "rollup": "1.13.1", "rollup-plugin-babel": "4.3.2", "rollup-plugin-commonjs": "10.0.0", "rollup-plugin-uglify": "6.0.2" From b5d793f3b52c163ec5ff6a1d7b4c8f75e8e12e87 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sat, 1 Jun 2019 11:09:11 +0000 Subject: [PATCH 04/25] chore(package): update lockfile package-lock.json --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..7bba85f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1070,9 +1070,9 @@ } }, "@types/node": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.3.tgz", - "integrity": "sha512-zkOxCS/fA+3SsdA+9Yun0iANxzhQRiNwTvJSr6N95JhuJ/x27z9G2URx1Jpt3zYFfCGUXZGL5UDxt5eyLE7wgw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.4.tgz", + "integrity": "sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw==", "dev": true }, "@types/normalize-package-data": { @@ -5834,9 +5834,9 @@ } }, "rollup": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.12.5.tgz", - "integrity": "sha512-XF5YdpeKX4ueGpBCW07AxPJJHu7SHaobYzu2lZnMPX908Ely2LZF0a0EQPgb+iVy5kP4cb4QT3nXIAnyAxpL3A==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.13.1.tgz", + "integrity": "sha512-TWBmVU5WS4wOy5Ij2qxrJYRUn/keECvStcXDpJSwgr95JZ6VFf1PDewiAk4VPf5vxr7drRJlxh9kYpxHveYOOg==", "dev": true, "requires": { "@types/estree": "0.0.39", From 75a4faf441d63b57953fd126feed841144975749 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 5 Jun 2019 07:35:52 +0000 Subject: [PATCH 05/25] chore(package): update rollup to version 1.14.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..3f2ed31 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "jest": "24.8.0", "prettier": "1.17.1", "pretty-quick": "1.11.0", - "rollup": "1.12.5", + "rollup": "1.14.0", "rollup-plugin-babel": "4.3.2", "rollup-plugin-commonjs": "10.0.0", "rollup-plugin-uglify": "6.0.2" From cc1afa2b389d01259eda44f83fcf8555abf7c10d Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 5 Jun 2019 07:35:57 +0000 Subject: [PATCH 06/25] chore(package): update lockfile package-lock.json --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..073d605 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1070,9 +1070,9 @@ } }, "@types/node": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.3.tgz", - "integrity": "sha512-zkOxCS/fA+3SsdA+9Yun0iANxzhQRiNwTvJSr6N95JhuJ/x27z9G2URx1Jpt3zYFfCGUXZGL5UDxt5eyLE7wgw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.4.tgz", + "integrity": "sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw==", "dev": true }, "@types/normalize-package-data": { @@ -5834,9 +5834,9 @@ } }, "rollup": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.12.5.tgz", - "integrity": "sha512-XF5YdpeKX4ueGpBCW07AxPJJHu7SHaobYzu2lZnMPX908Ely2LZF0a0EQPgb+iVy5kP4cb4QT3nXIAnyAxpL3A==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.14.0.tgz", + "integrity": "sha512-NDW4GZevPFmbGwgcxufIOqWbHMJTyLxRyuLk3m3cPNkq8dQSaPEgK7s0SCiDlCITA5X1c3GOJkDAeWULI429xg==", "dev": true, "requires": { "@types/estree": "0.0.39", From 159fcba3057e836389eeafd9c22bbd0f9474bfc8 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 5 Jun 2019 15:33:15 +0000 Subject: [PATCH 07/25] chore(package): update rollup to version 1.14.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..e131fd5 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "jest": "24.8.0", "prettier": "1.17.1", "pretty-quick": "1.11.0", - "rollup": "1.12.5", + "rollup": "1.14.2", "rollup-plugin-babel": "4.3.2", "rollup-plugin-commonjs": "10.0.0", "rollup-plugin-uglify": "6.0.2" From 35009bb679fb6ebb9b947877bf7d1304904b78b3 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 5 Jun 2019 15:33:20 +0000 Subject: [PATCH 08/25] chore(package): update lockfile package-lock.json --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..5e4d534 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1070,9 +1070,9 @@ } }, "@types/node": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.3.tgz", - "integrity": "sha512-zkOxCS/fA+3SsdA+9Yun0iANxzhQRiNwTvJSr6N95JhuJ/x27z9G2URx1Jpt3zYFfCGUXZGL5UDxt5eyLE7wgw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.4.tgz", + "integrity": "sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw==", "dev": true }, "@types/normalize-package-data": { @@ -5834,9 +5834,9 @@ } }, "rollup": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.12.5.tgz", - "integrity": "sha512-XF5YdpeKX4ueGpBCW07AxPJJHu7SHaobYzu2lZnMPX908Ely2LZF0a0EQPgb+iVy5kP4cb4QT3nXIAnyAxpL3A==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.14.2.tgz", + "integrity": "sha512-rFFIbi8UqFdZMRwYj+wVGQFTPBu++CDfbdlM10OZIpxrsRIgafos3cbGhXWxXo5jyRBB98u+0lEkdsvdE0IiyQ==", "dev": true, "requires": { "@types/estree": "0.0.39", From 10ecc40197100a972cd2de8cedea3a9c40e107cd Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 5 Jun 2019 16:42:49 +0000 Subject: [PATCH 09/25] chore(package): update husky to version 2.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..99486f7 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "eslint-config-prettier": "4.3.0", "eslint-plugin-import": "2.17.3", "eslint-plugin-prettier": "3.1.0", - "husky": "2.3.0", + "husky": "2.4.0", "jest": "24.8.0", "prettier": "1.17.1", "pretty-quick": "1.11.0", From 22e984d4b7e061a306d539957bc543301c7ae62e Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Wed, 5 Jun 2019 16:42:54 +0000 Subject: [PATCH 10/25] chore(package): update lockfile package-lock.json --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..b75390b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3457,9 +3457,9 @@ } }, "husky": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/husky/-/husky-2.3.0.tgz", - "integrity": "sha512-A/ZQSEILoq+mQM3yC3RIBSaw1bYXdkKnyyKVSUiJl+iBjVZc5LQEXdGY1ZjrDxC4IzfRPiJ0IqzEQGCN5TQa/A==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-2.4.0.tgz", + "integrity": "sha512-3k1wuZU20gFkphNWMjh2ISCFaqfbaLY7R9FST2Mj9HeRhUK9ydj9qQR8qfXlog3EctVGsyeilcZkIT7uBZDDVA==", "dev": true, "requires": { "cosmiconfig": "^5.2.0", From d81f73429a223338042854561d92a9828c5c4123 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 6 Jun 2019 12:50:55 +0000 Subject: [PATCH 11/25] chore(package): update rollup to version 1.14.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..52db59f 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "jest": "24.8.0", "prettier": "1.17.1", "pretty-quick": "1.11.0", - "rollup": "1.12.5", + "rollup": "1.14.3", "rollup-plugin-babel": "4.3.2", "rollup-plugin-commonjs": "10.0.0", "rollup-plugin-uglify": "6.0.2" From 8190c97c8a7adb0d528df11d42d90ff68b9f4132 Mon Sep 17 00:00:00 2001 From: Loris Bettazza Date: Thu, 6 Jun 2019 16:59:39 +0200 Subject: [PATCH 12/25] chore(package): update lockfile package-lock.json --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..88d9489 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5834,9 +5834,9 @@ } }, "rollup": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.12.5.tgz", - "integrity": "sha512-XF5YdpeKX4ueGpBCW07AxPJJHu7SHaobYzu2lZnMPX908Ely2LZF0a0EQPgb+iVy5kP4cb4QT3nXIAnyAxpL3A==", + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.14.3.tgz", + "integrity": "sha512-UZhB6FmipHnSJfjulvM3lrOKuCKTYYkd1pYXzvMsxTbw1eC3SRhPzS1kJU96DT3RZUCOYiFAQYrgcBPRm4E+jw==", "dev": true, "requires": { "@types/estree": "0.0.39", From a057d411c278a2f21543b9bb47249a0852e435fc Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 6 Jun 2019 23:00:06 +0000 Subject: [PATCH 13/25] chore(package): update prettier to version 1.18.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..2b6361c 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "eslint-plugin-prettier": "3.1.0", "husky": "2.3.0", "jest": "24.8.0", - "prettier": "1.17.1", + "prettier": "1.18.0", "pretty-quick": "1.11.0", "rollup": "1.12.5", "rollup-plugin-babel": "4.3.2", From f99e17993ce3be0985aa4c8d345cd75fc7fdec30 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 6 Jun 2019 23:00:11 +0000 Subject: [PATCH 14/25] chore(package): update lockfile package-lock.json --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..672fb25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5390,9 +5390,9 @@ "dev": true }, "prettier": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.1.tgz", - "integrity": "sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.0.tgz", + "integrity": "sha512-YsdAD29M0+WY2xXZk3i0PA16olY9qZss+AuODxglXcJ+2ZBwFv+6k5tE8GS8/HKAthaajlS/WqhdgcjumOrPlg==", "dev": true }, "prettier-linter-helpers": { From 727f8dc53cd4125ce3c3019a0ab61f23f3881492 Mon Sep 17 00:00:00 2001 From: Loris Bettazza Date: Thu, 6 Jun 2019 18:17:41 +0200 Subject: [PATCH 15/25] :recycle: Avoid repeating regexes Store them in a variable and use that instead --- src/parser.js | 10 ++++++---- src/time.js | 13 ++++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/parser.js b/src/parser.js index 3bd7b1b..5ec3c74 100644 --- a/src/parser.js +++ b/src/parser.js @@ -1,5 +1,6 @@ const { daysBeforeMonths, normalizeDate } = require('./date.js'); const { + regexSplitTime, convertTime12to24, normalizeAMPM, normalizeTime, @@ -8,6 +9,7 @@ const { const regexParser = /\[?(\d{1,2}[-/.]\d{1,2}[-/.]\d{2,4}),? (\d{1,2}[.:]\d{1,2}(?:[.:]\d{1,2})?)(?: ([ap]\.?m\.?))?\]?(?: -|:)? (.+?): ([^]*)/i; const regexParserSystem = /\[?(\d{1,2}[-/.]\d{1,2}[-/.]\d{2,4}),? (\d{1,2}[.:]\d{1,2}(?:[.:]\d{1,2})?)(?: ([ap]\.?m\.?))?\]?(?: -|:)? ([^]+)/i; const regexStartsWithDateTime = /\[?(\d{1,2}[-/.]\d{1,2}[-/.]\d{2,4}),? (\d{1,2}[.:]\d{1,2}(?:[.:]\d{1,2})?)(?: ([ap]\.?m\.?))?\]?/i; +const regexSplitDate = /[-/.]/; /** * Given an array of lines, detects the lines that are part of a previous @@ -74,7 +76,7 @@ function parseMessages(messages, options = { daysFirst: undefined }) { if (typeof daysFirst !== 'boolean') { const numericDates = Array.from( new Set(parsed.map(({ date }) => date)), - date => date.split(/[-/.]/).map(Number), + date => date.split(regexSplitDate).map(Number), ); daysFirst = daysBeforeMonths(numericDates); @@ -87,16 +89,16 @@ function parseMessages(messages, options = { daysFirst: undefined }) { let year; if (daysFirst === false) { - [month, day, year] = date.split(/[-/.]/); + [month, day, year] = date.split(regexSplitDate); } else { - [day, month, year] = date.split(/[-/.]/); + [day, month, year] = date.split(regexSplitDate); } [year, month, day] = normalizeDate(year, month, day); const [hours, minutes, seconds] = normalizeTime( ampm ? convertTime12to24(time, normalizeAMPM(ampm)) : time, - ).split(/[:.]/); + ).split(regexSplitTime); return { date: new Date(year, month - 1, day, hours, minutes, seconds), diff --git a/src/time.js b/src/time.js index 861e7e0..22298cd 100644 --- a/src/time.js +++ b/src/time.js @@ -1,10 +1,12 @@ +const regexSplitTime = /[:.]/; + /** * Converts time from 12 hour format to 24 hour format * From: https://stackoverflow.com/a/40197728/5303634 */ function convertTime12to24(time, ampm) { // eslint-disable-next-line prefer-const - let [hours, minutes, seconds] = time.split(/[:.]/); + let [hours, minutes, seconds] = time.split(regexSplitTime); if (hours === '12') { hours = '00'; @@ -21,7 +23,7 @@ function convertTime12to24(time, ampm) { * Normalizes a time string to have the following format: hh:mm:ss */ function normalizeTime(time) { - const [hours, minutes, seconds] = time.split(/[:.]/); + const [hours, minutes, seconds] = time.split(regexSplitTime); return `${hours.length === 1 ? `0${hours}` : hours}:${minutes}:${seconds || '00'}`; @@ -34,4 +36,9 @@ function normalizeAMPM(ampm) { return ampm.replace(/[^apm]/gi, '').toUpperCase(); } -module.exports = { convertTime12to24, normalizeTime, normalizeAMPM }; +module.exports = { + regexSplitTime, + convertTime12to24, + normalizeTime, + normalizeAMPM, +}; From 42caf1b572c02b3c0bb129e0067e3a8cba9ed049 Mon Sep 17 00:00:00 2001 From: Loris Bettazza Date: Thu, 6 Jun 2019 18:31:13 +0200 Subject: [PATCH 16/25] :white_check_mark: Updated parser tests to check for full date Before we checked only the year, but it wasn't enough. Now the tests check for the full string given by `toISOString()`. This is great but it means that running the tests in machines with different timezones will fail. Because of this I had to add a fixed timezone to run the tests with. (See package.json) --- package.json | 6 +++--- src/parser.test.js | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index a83f44d..b5fad19 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,9 @@ "scripts": { "build": "rm -rf dist/ && rollup -c", "pretest": "npm run build", - "test": "jest --passWithNoTests", - "test:watch": "jest --watchAll", - "test:coverage": "jest --coverage", + "test": "TZ=UTC jest --passWithNoTests", + "test:watch": "TZ=UTC jest --watchAll", + "test:coverage": "TZ=UTC jest --coverage", "lint": "eslint src/**/*.js", "format": "pretty-quick", "format:staged": "pretty-quick --staged", diff --git a/src/parser.test.js b/src/parser.test.js index 698046d..4282540 100644 --- a/src/parser.test.js +++ b/src/parser.test.js @@ -131,22 +131,22 @@ describe('parser.js', () => { const format1 = [{ system: false, msg: '3/6/18, 1:55 p.m. - a: m' }]; const format2 = [{ system: false, msg: '03-06-2018, 01.55 PM - a: m' }]; const format3 = [{ system: false, msg: '13.06.18 21.25.15: a: m' }]; - const format4 = [{ system: false, msg: '[03.13.18 21:25:15] a: m' }]; + const format4 = [{ system: false, msg: '[06.13.18 21:25:15] a: m' }]; + const parsed1 = parseMessages(format1); const parsed2 = parseMessages(format2); const parsed3 = parseMessages(format3); const parsed4 = parseMessages(format4); + const expected1 = '2018-06-03T13:55:00.000Z'; + const expected2 = '2018-06-13T21:25:15.000Z'; + describe('the date', () => { it('should be parsed correctly in various formats', () => { - /** - * Checking for the year should be enough to know there were no errors - * in parsing a specific format - */ - expect(parsed1[0].date.getFullYear()).toBe(2018); - expect(parsed2[0].date.getFullYear()).toBe(2018); - expect(parsed3[0].date.getFullYear()).toBe(2018); - expect(parsed4[0].date.getFullYear()).toBe(2018); + expect(parsed1[0].date.toISOString()).toBe(expected1); + expect(parsed2[0].date.toISOString()).toBe(expected1); + expect(parsed3[0].date.toISOString()).toBe(expected2); + expect(parsed4[0].date.toISOString()).toBe(expected2); }); }); }); From 13c4981f4de7871a332a5c95e0fdc1e93a8258e5 Mon Sep 17 00:00:00 2001 From: Loris Bettazza Date: Thu, 6 Jun 2019 23:58:07 +0200 Subject: [PATCH 17/25] :sparkles: Improve regex to allow more formats This allows to parse logs that have a word between the date and the time :white_check_mark: Added tests for 2 more formats --- src/parser.js | 8 ++++---- src/parser.test.js | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/parser.js b/src/parser.js index 5ec3c74..69592ed 100644 --- a/src/parser.js +++ b/src/parser.js @@ -6,10 +6,10 @@ const { normalizeTime, } = require('./time.js'); -const regexParser = /\[?(\d{1,2}[-/.]\d{1,2}[-/.]\d{2,4}),? (\d{1,2}[.:]\d{1,2}(?:[.:]\d{1,2})?)(?: ([ap]\.?m\.?))?\]?(?: -|:)? (.+?): ([^]*)/i; -const regexParserSystem = /\[?(\d{1,2}[-/.]\d{1,2}[-/.]\d{2,4}),? (\d{1,2}[.:]\d{1,2}(?:[.:]\d{1,2})?)(?: ([ap]\.?m\.?))?\]?(?: -|:)? ([^]+)/i; -const regexStartsWithDateTime = /\[?(\d{1,2}[-/.]\d{1,2}[-/.]\d{2,4}),? (\d{1,2}[.:]\d{1,2}(?:[.:]\d{1,2})?)(?: ([ap]\.?m\.?))?\]?/i; -const regexSplitDate = /[-/.]/; +const regexParser = /\[?(\d{1,2}[-/.] ?\d{1,2}[-/.] ?\d{2,4})[,.]? \D*?(\d{1,2}[.:]\d{1,2}(?:[.:]\d{1,2})?)(?: ([ap]\.?m\.?))?\]?(?: -|:)? (.+?): ([^]*)/i; +const regexParserSystem = /\[?(\d{1,2}[-/.] ?\d{1,2}[-/.] ?\d{2,4})[,.]? \D*?(\d{1,2}[.:]\d{1,2}(?:[.:]\d{1,2})?)(?: ([ap]\.?m\.?))?\]?(?: -|:)? ([^]+)/i; +const regexStartsWithDateTime = /\[?(\d{1,2}[-/.] ?\d{1,2}[-/.] ?\d{2,4})[,.]? \D*?(\d{1,2}[.:]\d{1,2}(?:[.:]\d{1,2})?)(?: ([ap]\.?m\.?))?\]?/i; +const regexSplitDate = /[-/.] ?/; /** * Given an array of lines, detects the lines that are part of a previous diff --git a/src/parser.test.js b/src/parser.test.js index 4282540..ab2f8de 100644 --- a/src/parser.test.js +++ b/src/parser.test.js @@ -132,11 +132,15 @@ describe('parser.js', () => { const format2 = [{ system: false, msg: '03-06-2018, 01.55 PM - a: m' }]; const format3 = [{ system: false, msg: '13.06.18 21.25.15: a: m' }]; const format4 = [{ system: false, msg: '[06.13.18 21:25:15] a: m' }]; + const format5 = [{ system: false, msg: '13.6.2018 klo 21.25.15 - a: m' }]; + const format6 = [{ system: false, msg: '13. 6. 2018. 21:25:15 a: m' }]; const parsed1 = parseMessages(format1); const parsed2 = parseMessages(format2); const parsed3 = parseMessages(format3); const parsed4 = parseMessages(format4); + const parsed5 = parseMessages(format5); + const parsed6 = parseMessages(format6); const expected1 = '2018-06-03T13:55:00.000Z'; const expected2 = '2018-06-13T21:25:15.000Z'; @@ -147,6 +151,8 @@ describe('parser.js', () => { expect(parsed2[0].date.toISOString()).toBe(expected1); expect(parsed3[0].date.toISOString()).toBe(expected2); expect(parsed4[0].date.toISOString()).toBe(expected2); + expect(parsed5[0].date.toISOString()).toBe(expected2); + expect(parsed6[0].date.toISOString()).toBe(expected2); }); }); }); From eb2756d06a036f2a3f335738203ab51b85b7dac9 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 7 Jun 2019 15:25:46 +0000 Subject: [PATCH 18/25] chore(package): update prettier to version 1.18.2 Closes #20 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..de7b02b 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "eslint-plugin-prettier": "3.1.0", "husky": "2.3.0", "jest": "24.8.0", - "prettier": "1.17.1", + "prettier": "1.18.2", "pretty-quick": "1.11.0", "rollup": "1.12.5", "rollup-plugin-babel": "4.3.2", From b3a6141a325531908b27e52f78eb25fb330f4466 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 7 Jun 2019 15:25:51 +0000 Subject: [PATCH 19/25] chore(package): update lockfile package-lock.json --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..3b84c05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5390,9 +5390,9 @@ "dev": true }, "prettier": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.1.tgz", - "integrity": "sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg==", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", "dev": true }, "prettier-linter-helpers": { From e8ea6356ed8f234ef0fb7d2056b1f7d079cab688 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 7 Jun 2019 18:56:42 +0000 Subject: [PATCH 20/25] chore(package): update rollup to version 1.14.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..c65bd9f 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "jest": "24.8.0", "prettier": "1.17.1", "pretty-quick": "1.11.0", - "rollup": "1.12.5", + "rollup": "1.14.4", "rollup-plugin-babel": "4.3.2", "rollup-plugin-commonjs": "10.0.0", "rollup-plugin-uglify": "6.0.2" From 4eae233b8eb20de65d1f421455ed670dbe65f7b2 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 7 Jun 2019 18:56:46 +0000 Subject: [PATCH 21/25] chore(package): update lockfile package-lock.json --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..9ff1e8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1070,9 +1070,9 @@ } }, "@types/node": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.3.tgz", - "integrity": "sha512-zkOxCS/fA+3SsdA+9Yun0iANxzhQRiNwTvJSr6N95JhuJ/x27z9G2URx1Jpt3zYFfCGUXZGL5UDxt5eyLE7wgw==", + "version": "12.0.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.7.tgz", + "integrity": "sha512-1YKeT4JitGgE4SOzyB9eMwO0nGVNkNEsm9qlIt1Lqm/tG2QEiSMTD4kS3aO6L+w5SClLVxALmIBESK6Mk5wX0A==", "dev": true }, "@types/normalize-package-data": { @@ -5834,9 +5834,9 @@ } }, "rollup": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.12.5.tgz", - "integrity": "sha512-XF5YdpeKX4ueGpBCW07AxPJJHu7SHaobYzu2lZnMPX908Ely2LZF0a0EQPgb+iVy5kP4cb4QT3nXIAnyAxpL3A==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.14.4.tgz", + "integrity": "sha512-sR5/cqbQUg72Lm2TZgjzI3/Q1V7osP/PXlqNpSLCMSTnSg8xQ9ECFQSNEG1OOjKzPMqboEqeayRyYzi+IfkDgQ==", "dev": true, "requires": { "@types/estree": "0.0.39", From c6f1e673074fdb2f254402691047dbc104add122 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sun, 9 Jun 2019 15:36:42 +0000 Subject: [PATCH 22/25] chore(package): update rollup to version 1.14.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bf90cc1..6963d9d 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "jest": "24.8.0", "prettier": "1.17.1", "pretty-quick": "1.11.0", - "rollup": "1.12.5", + "rollup": "1.14.5", "rollup-plugin-babel": "4.3.2", "rollup-plugin-commonjs": "10.0.0", "rollup-plugin-uglify": "6.0.2" From 042f5efaa902ef0b0753ed71aff0145d3742b85e Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Sun, 9 Jun 2019 15:36:47 +0000 Subject: [PATCH 23/25] chore(package): update lockfile package-lock.json --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 62e199e..02b4942 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1070,9 +1070,9 @@ } }, "@types/node": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.3.tgz", - "integrity": "sha512-zkOxCS/fA+3SsdA+9Yun0iANxzhQRiNwTvJSr6N95JhuJ/x27z9G2URx1Jpt3zYFfCGUXZGL5UDxt5eyLE7wgw==", + "version": "12.0.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.7.tgz", + "integrity": "sha512-1YKeT4JitGgE4SOzyB9eMwO0nGVNkNEsm9qlIt1Lqm/tG2QEiSMTD4kS3aO6L+w5SClLVxALmIBESK6Mk5wX0A==", "dev": true }, "@types/normalize-package-data": { @@ -5834,13 +5834,13 @@ } }, "rollup": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.12.5.tgz", - "integrity": "sha512-XF5YdpeKX4ueGpBCW07AxPJJHu7SHaobYzu2lZnMPX908Ely2LZF0a0EQPgb+iVy5kP4cb4QT3nXIAnyAxpL3A==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.14.5.tgz", + "integrity": "sha512-XKegaT6NhrKuBvFQCeLfDJ7bNpfnWIMQfLx9+Qe34rrKaVOtNGVIf5vyIKuwS4JlF2l/nA7RvEsItXqyF0ZFZg==", "dev": true, "requires": { "@types/estree": "0.0.39", - "@types/node": "^12.0.3", + "@types/node": "^12.0.7", "acorn": "^6.1.1" } }, From 80095307c5d7d673dd3c2f77319f7c803b0a9a92 Mon Sep 17 00:00:00 2001 From: Loris Bettazza Date: Sun, 9 Jun 2019 19:46:59 +0200 Subject: [PATCH 24/25] :memo: Updated changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9aaf31b..b0383e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [2.0.2] - 2019-06-09 + +### Added + +- Ability to parse more date formats, including Finnish, that look something like this: `31.5.2019 klo 16.58 - : ` + ## [2.0.1] - 2019-05-31 ### Changed From 6812cab37a835b83b1a25e3c0f493d4a4c7ad00e Mon Sep 17 00:00:00 2001 From: Loris Bettazza Date: Sun, 9 Jun 2019 19:47:35 +0200 Subject: [PATCH 25/25] :bookmark: Bump version to 2.0.2 --- README.md | 2 +- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c0d77cb..d709642 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ You can also use the [jsDelivr CDN](https://www.jsdelivr.com/package/npm/whatsap ```html - + ```   diff --git a/package-lock.json b/package-lock.json index 27d6d8a..b70f570 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "whatsapp-chat-parser", - "version": "2.0.1", + "version": "2.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8e9f78a..e2d10b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "whatsapp-chat-parser", - "version": "2.0.1", + "version": "2.0.2", "description": "A package to parse WhatsApp chats", "main": "dist/whatsapp-chat-parser.js", "files": [