From 3ff34a5c829bb18af9a956198f82afceba9b6064 Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Mon, 17 Apr 2023 18:09:29 +0500 Subject: [PATCH] core: use official `html-to-text` lib instead of fork --- packages/core/content-types/tiptap.js | 53 ++++- packages/core/package-lock.json | 268 +++++++++----------------- packages/core/package.json | 7 +- 3 files changed, 148 insertions(+), 180 deletions(-) diff --git a/packages/core/content-types/tiptap.js b/packages/core/content-types/tiptap.js index ed4693e28..32364e7f0 100644 --- a/packages/core/content-types/tiptap.js +++ b/packages/core/content-types/tiptap.js @@ -22,7 +22,6 @@ import dataurl from "../utils/dataurl"; import { extractFirstParagraph, getDummyDocument } from "../utils/html-parser"; import { HTMLParser, HTMLRewriter } from "../utils/html-rewriter"; import { convert } from "html-to-text"; -import { list } from "html-to-text/lib/formatter"; const ATTRIBUTES = { hash: "data-hash", @@ -55,7 +54,7 @@ export class Tiptap { ], formatters: { taskList: (elem, walk, builder, formatOptions) => { - return list(elem, walk, builder, formatOptions, (elem) => { + return formatList(elem, walk, builder, formatOptions, (elem) => { return elem.attribs.class.includes("checked") ? " ✅ " : " ☐ "; }); }, @@ -225,3 +224,53 @@ export class Tiptap { }; } } + +/** + * @param { import("html-to-text").DomNode } elem List items with their prefixes. + * @param { import("html-to-text").RecursiveCallback } walk Recursive callback to process child nodes. + * @param { import("html-to-text/lib/block-text-builder").BlockTextBuilder } builder Passed around to accumulate output text. + * @param { import("html-to-text").FormatOptions } formatOptions Options specific to a formatter. + * @param { (elem: import("html-to-text").DomNode) => string } nextPrefixCallback Function that returns increasing index each time it is called. + */ +function formatList(elem, walk, builder, formatOptions, nextPrefixCallback) { + const isNestedList = elem?.parent?.name === "li"; + + // With Roman numbers, index length is not as straightforward as with Arabic numbers or letters, + // so the dumb length comparison is the most robust way to get the correct value. + let maxPrefixLength = 0; + const listItems = (elem.children || []) + // it might be more accurate to check only for html spaces here, but no significant benefit + .filter((child) => child.type !== "text" || !/^\s*$/.test(child.data)) + .map(function (child) { + if (child.name !== "li") { + return { node: child, prefix: "" }; + } + const prefix = isNestedList + ? nextPrefixCallback(child).trimStart() + : nextPrefixCallback(child); + if (prefix.length > maxPrefixLength) { + maxPrefixLength = prefix.length; + } + return { node: child, prefix: prefix }; + }); + if (!listItems.length) { + return; + } + + builder.openList({ + interRowLineBreaks: 1, + leadingLineBreaks: isNestedList ? 1 : formatOptions.leadingLineBreaks || 2, + maxPrefixLength: maxPrefixLength, + prefixAlign: "left" + }); + + for (const { node, prefix } of listItems) { + builder.openListItem({ prefix: prefix }); + walk([node], builder); + builder.closeListItem(); + } + + builder.closeList({ + trailingLineBreaks: isNestedList ? 1 : formatOptions.trailingLineBreaks || 2 + }); +} diff --git a/packages/core/package-lock.json b/packages/core/package-lock.json index 6b931bec1..2dc2156b5 100644 --- a/packages/core/package-lock.json +++ b/packages/core/package-lock.json @@ -15,7 +15,7 @@ "async-mutex": "^0.3.2", "dayjs": "^1.11.3", "entities": "^4.3.1", - "html-to-text": "github:thecodrr/node-html-to-text", + "html-to-text": "^9.0.5", "htmlparser2": "^8.0.1", "linkedom": "^0.14.17", "liqe": "^1.13.0", @@ -28,6 +28,7 @@ "@babel/plugin-transform-runtime": "^7.18.9", "@babel/preset-env": "^7.18.9", "@babel/runtime": "^7.18.9", + "@types/html-to-text": "^9.0.0", "@types/jest": "^28.1.6", "@types/showdown": "^2.0.0", "abortcontroller-polyfill": "^1.7.3", @@ -2570,12 +2571,12 @@ } }, "node_modules/@selderee/plugin-htmlparser2": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.9.0.tgz", - "integrity": "sha512-d4zFHnTLNEjLRJxSxjsRSmLUIT5+EEG42rEs/F/LF6EoIE+KLTMqeyfJa+N3ngmehCyZj3cUA53kZda9c8dILw==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz", + "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==", "dependencies": { - "domhandler": "^4.2.2", - "selderee": "^0.9.0" + "domhandler": "^5.0.3", + "selderee": "^0.11.0" }, "funding": { "url": "https://ko-fi.com/killymxi" @@ -2676,6 +2677,12 @@ "@types/node": "*" } }, + "node_modules/@types/html-to-text": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@types/html-to-text/-/html-to-text-9.0.0.tgz", + "integrity": "sha512-FnF3p2FJZ1kJT/0C/lmBzw7HSlH3RhtACVYyrwUsJoCmFNuiLpusWT2FWWB7P9A48CaYpvD6Q2fprn7sZeffpw==", + "dev": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -5120,20 +5127,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-select/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, "node_modules/css-what": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", @@ -5223,9 +5216,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { "node": ">=0.10.0" } @@ -5287,20 +5280,6 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-serializer/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -5325,11 +5304,11 @@ } }, "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dependencies": { - "domelementtype": "^2.2.0" + "domelementtype": "^2.3.0" }, "engines": { "node": ">= 4" @@ -5351,20 +5330,6 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/domutils/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, "node_modules/dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", @@ -5830,22 +5795,18 @@ "dev": true }, "node_modules/html-to-text": { - "version": "8.2.1", - "resolved": "git+ssh://git@github.com/thecodrr/node-html-to-text.git#8acb9b2fccceacbf5c01664fc15f9bc5f0e82762", - "license": "MIT", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz", + "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==", "dependencies": { - "@selderee/plugin-htmlparser2": "^0.9.0", - "deepmerge": "^4.2.2", - "entities": "^4.4.0", - "htmlparser2": "github:thecodrr/htmlparser2", - "minimist": "^1.2.7", - "selderee": "^0.9.0" - }, - "bin": { - "html-to-text": "bin/cli.js" + "@selderee/plugin-htmlparser2": "^0.11.0", + "deepmerge": "^4.3.1", + "dom-serializer": "^2.0.0", + "htmlparser2": "^8.0.2", + "selderee": "^0.11.0" }, "engines": { - "node": ">=10.23.2" + "node": ">=14" } }, "node_modules/htmlparser2": { @@ -5866,20 +5827,6 @@ "entities": "^4.3.0" } }, - "node_modules/htmlparser2/node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -7980,9 +7927,9 @@ } }, "node_modules/leac": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/leac/-/leac-0.5.1.tgz", - "integrity": "sha512-ItrUZwFdQSJT5sHceYI8qQif98Sc1XV0kLhn0aWpE4f82B+FICsF4egayLMS1iCHxNKWLbvK6DQNaRSTAbjnYA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", + "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==", "funding": { "url": "https://ko-fi.com/killymxi" } @@ -8181,6 +8128,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8486,12 +8434,12 @@ } }, "node_modules/parseley": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.10.0.tgz", - "integrity": "sha512-8r4sZD2bNjTxACVk9Sqkzc0pXO9G0KznjPnd+UbHs+ZkvFr5irw4P5HwMVoixanPFP5ZlZKsuf1QP+e47SYZAQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.0.tgz", + "integrity": "sha512-uLqDm6IQVb6m50a3dIxF66hI8VWr7wFDYUULtHa1ITRh9mwYIXzFpPTkPM66Cm5V0t+bMyeSHgUCGzoXTV96LQ==", "dependencies": { - "leac": "^0.5.1", - "peberminta": "^0.6.0" + "leac": "^0.6.0", + "peberminta": "^0.9.0" }, "funding": { "url": "https://ko-fi.com/killymxi" @@ -8531,9 +8479,9 @@ "dev": true }, "node_modules/peberminta": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.6.0.tgz", - "integrity": "sha512-qeJGsC0f6dIWtpIN6t9MhpbIviMJ7wNosu+RtzXCyoxlEUlFJWVaMd3KvYO6ciNPi5XF6TvsVpSVq+a8iBtUBw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz", + "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==", "funding": { "url": "https://ko-fi.com/killymxi" } @@ -8911,11 +8859,11 @@ } }, "node_modules/selderee": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.9.0.tgz", - "integrity": "sha512-Zsg9YrMit8Z2u4L/f4oGuVjreT3KRml2Ak2aUKr4S+an3vy6ntGv7MLUs4i2hN6bz9b9DcDMl2fS4r1obhDMJA==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz", + "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==", "dependencies": { - "parseley": "^0.10.0" + "parseley": "^0.12.0" }, "funding": { "url": "https://ko-fi.com/killymxi" @@ -11514,12 +11462,12 @@ } }, "@selderee/plugin-htmlparser2": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.9.0.tgz", - "integrity": "sha512-d4zFHnTLNEjLRJxSxjsRSmLUIT5+EEG42rEs/F/LF6EoIE+KLTMqeyfJa+N3ngmehCyZj3cUA53kZda9c8dILw==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz", + "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==", "requires": { - "domhandler": "^4.2.2", - "selderee": "^0.9.0" + "domhandler": "^5.0.3", + "selderee": "^0.11.0" } }, "@sinclair/typebox": { @@ -11607,6 +11555,12 @@ "@types/node": "*" } }, + "@types/html-to-text": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@types/html-to-text/-/html-to-text-9.0.0.tgz", + "integrity": "sha512-FnF3p2FJZ1kJT/0C/lmBzw7HSlH3RhtACVYyrwUsJoCmFNuiLpusWT2FWWB7P9A48CaYpvD6Q2fprn7sZeffpw==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -13950,16 +13904,6 @@ "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" - }, - "dependencies": { - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "requires": { - "domelementtype": "^2.3.0" - } - } } }, "css-what": { @@ -14033,9 +13977,9 @@ "dev": true }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" }, "delayed-stream": { "version": "1.0.0", @@ -14077,16 +14021,6 @@ "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" - }, - "dependencies": { - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "requires": { - "domelementtype": "^2.3.0" - } - } } }, "domelementtype": { @@ -14104,11 +14038,11 @@ } }, "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "requires": { - "domelementtype": "^2.2.0" + "domelementtype": "^2.3.0" } }, "domutils": { @@ -14119,16 +14053,6 @@ "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.1" - }, - "dependencies": { - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "requires": { - "domelementtype": "^2.3.0" - } - } } }, "dotenv": { @@ -14471,15 +14395,15 @@ "dev": true }, "html-to-text": { - "version": "git+ssh://git@github.com/thecodrr/node-html-to-text.git#8acb9b2fccceacbf5c01664fc15f9bc5f0e82762", - "from": "html-to-text@github:thecodrr/node-html-to-text", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz", + "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==", "requires": { - "@selderee/plugin-htmlparser2": "^0.9.0", - "deepmerge": "^4.2.2", - "entities": "^4.4.0", + "@selderee/plugin-htmlparser2": "^0.11.0", + "deepmerge": "^4.3.1", + "dom-serializer": "^2.0.0", "htmlparser2": "^8.0.1", - "minimist": "^1.2.7", - "selderee": "^0.9.0" + "selderee": "^0.11.0" } }, "htmlparser2": { @@ -14491,16 +14415,6 @@ "domhandler": "^5.0.2", "domutils": "^3.0.1", "entities": "^4.3.0" - }, - "dependencies": { - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "requires": { - "domelementtype": "^2.3.0" - } - } } }, "http-proxy-agent": { @@ -15347,7 +15261,8 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true + "dev": true, + "requires": {} }, "jest-regex-util": { "version": "28.0.2", @@ -16021,7 +15936,8 @@ "version": "8.11.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -16050,9 +15966,9 @@ "dev": true }, "leac": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/leac/-/leac-0.5.1.tgz", - "integrity": "sha512-ItrUZwFdQSJT5sHceYI8qQif98Sc1XV0kLhn0aWpE4f82B+FICsF4egayLMS1iCHxNKWLbvK6DQNaRSTAbjnYA==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", + "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==" }, "leven": { "version": "3.1.0", @@ -16209,7 +16125,8 @@ "minimist": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true }, "mkdirp": { "version": "0.5.6", @@ -16443,12 +16360,12 @@ } }, "parseley": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.10.0.tgz", - "integrity": "sha512-8r4sZD2bNjTxACVk9Sqkzc0pXO9G0KznjPnd+UbHs+ZkvFr5irw4P5HwMVoixanPFP5ZlZKsuf1QP+e47SYZAQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.0.tgz", + "integrity": "sha512-uLqDm6IQVb6m50a3dIxF66hI8VWr7wFDYUULtHa1ITRh9mwYIXzFpPTkPM66Cm5V0t+bMyeSHgUCGzoXTV96LQ==", "requires": { - "leac": "^0.5.1", - "peberminta": "^0.6.0" + "leac": "^0.6.0", + "peberminta": "^0.9.0" } }, "path-exists": { @@ -16476,9 +16393,9 @@ "dev": true }, "peberminta": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.6.0.tgz", - "integrity": "sha512-qeJGsC0f6dIWtpIN6t9MhpbIviMJ7wNosu+RtzXCyoxlEUlFJWVaMd3KvYO6ciNPi5XF6TvsVpSVq+a8iBtUBw==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz", + "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==" }, "picocolors": { "version": "1.0.0", @@ -16769,11 +16686,11 @@ } }, "selderee": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.9.0.tgz", - "integrity": "sha512-Zsg9YrMit8Z2u4L/f4oGuVjreT3KRml2Ak2aUKr4S+an3vy6ntGv7MLUs4i2hN6bz9b9DcDMl2fS4r1obhDMJA==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz", + "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==", "requires": { - "parseley": "^0.10.0" + "parseley": "^0.12.0" } }, "semver": { @@ -17280,7 +17197,8 @@ "ws": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} }, "xml-name-validator": { "version": "4.0.0", diff --git a/packages/core/package.json b/packages/core/package.json index ac1c5be30..b7a9f09c2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -13,6 +13,7 @@ "@babel/preset-env": "^7.18.9", "@babel/runtime": "^7.18.9", "@notesnook/crypto": "^1.0.1", + "@types/html-to-text": "^9.0.0", "@types/jest": "^28.1.6", "@types/showdown": "^2.0.0", "abortcontroller-polyfill": "^1.7.3", @@ -42,13 +43,13 @@ "async-mutex": "^0.3.2", "dayjs": "^1.11.3", "entities": "^4.3.1", - "html-to-text": "github:thecodrr/node-html-to-text", + "html-to-text": "^9.0.5", "htmlparser2": "^8.0.1", "linkedom": "^0.14.17", "liqe": "^1.13.0", + "mime-db": "1.52.0", "qclone": "^1.2.0", - "spark-md5": "^3.0.2", - "mime-db": "1.52.0" + "spark-md5": "^3.0.2" }, "overrides": { "htmlparser2": "^8.0.1"