From ec4bd6659a551c32ee5fdd9101ce0d8f4add1b02 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 19 Feb 2024 21:59:40 +0200 Subject: [PATCH] server-ts: Port services/export/md --- package-lock.json | 13 +++++++++++++ package.json | 1 + src/services/export/{md.js => md.ts} | 10 +++++----- src/services/export/single.js | 2 +- src/services/export/zip.js | 2 +- src/types.d.ts | 8 ++++++++ 6 files changed, 29 insertions(+), 7 deletions(-) rename src/services/export/{md.js => md.ts} (52%) diff --git a/package-lock.json b/package-lock.json index 0a8e99442..a200cce0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -97,6 +97,7 @@ "@types/mime-types": "^2.1.4", "@types/node": "^20.11.19", "@types/sanitize-html": "^2.11.0", + "@types/turndown": "^5.0.4", "@types/ws": "^8.5.10", "cross-env": "7.0.3", "electron": "25.9.8", @@ -1757,6 +1758,12 @@ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", "dev": true }, + "node_modules/@types/turndown": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/turndown/-/turndown-5.0.4.tgz", + "integrity": "sha512-28GI33lCCkU4SGH1GvjDhFgOVr+Tym4PXGBIU1buJUa6xQolniPArtUT+kv42RR2N9MsMLInkr904Aq+ESHBJg==", + "dev": true + }, "node_modules/@types/unist": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", @@ -16466,6 +16473,12 @@ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", "dev": true }, + "@types/turndown": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/turndown/-/turndown-5.0.4.tgz", + "integrity": "sha512-28GI33lCCkU4SGH1GvjDhFgOVr+Tym4PXGBIU1buJUa6xQolniPArtUT+kv42RR2N9MsMLInkr904Aq+ESHBJg==", + "dev": true + }, "@types/unist": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", diff --git a/package.json b/package.json index 9c962217e..c150cb460 100644 --- a/package.json +++ b/package.json @@ -120,6 +120,7 @@ "@types/mime-types": "^2.1.4", "@types/node": "^20.11.19", "@types/sanitize-html": "^2.11.0", + "@types/turndown": "^5.0.4", "@types/ws": "^8.5.10", "cross-env": "7.0.3", "electron": "25.9.8", diff --git a/src/services/export/md.js b/src/services/export/md.ts similarity index 52% rename from src/services/export/md.js rename to src/services/export/md.ts index 32022bee0..3e6754c1c 100644 --- a/src/services/export/md.js +++ b/src/services/export/md.ts @@ -1,11 +1,11 @@ "use strict"; -const TurndownService = require('turndown'); -const turndownPluginGfm = require('joplin-turndown-plugin-gfm'); +import TurndownService = require('turndown'); +import turndownPluginGfm = require('joplin-turndown-plugin-gfm'); -let instance = null; +let instance: TurndownService | null = null; -function toMarkdown(content) { +function toMarkdown(content: string) { if (instance === null) { instance = new TurndownService({ codeBlockStyle: 'fenced' }); instance.use(turndownPluginGfm.gfm); @@ -14,6 +14,6 @@ function toMarkdown(content) { return instance.turndown(content); } -module.exports = { +export = { toMarkdown }; diff --git a/src/services/export/single.js b/src/services/export/single.js index 5021ef3a3..07fc96403 100644 --- a/src/services/export/single.js +++ b/src/services/export/single.js @@ -3,7 +3,7 @@ const mimeTypes = require('mime-types'); const html = require('html'); const utils = require('../utils'); -const mdService = require('./md.js'); +const mdService = require('./md'); const becca = require('../../becca/becca'); function exportSingleNote(taskContext, branch, format, res) { diff --git a/src/services/export/zip.js b/src/services/export/zip.js index e0204891d..01b30a55e 100644 --- a/src/services/export/zip.js +++ b/src/services/export/zip.js @@ -4,7 +4,7 @@ const html = require('html'); const dateUtils = require('../date_utils'); const path = require('path'); const mimeTypes = require('mime-types'); -const mdService = require('./md.js'); +const mdService = require('./md'); const packageInfo = require('../../../package.json'); const utils = require('../utils'); const protectedSessionService = require('../protected_session'); diff --git a/src/types.d.ts b/src/types.d.ts index 602d291c4..166372891 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -16,4 +16,12 @@ declare module 'html2plaintext' { declare module 'normalize-strings' { function normalizeString(string: string): string; export = normalizeString; +} + +declare module 'joplin-turndown-plugin-gfm' { + import TurndownService = require("turndown"); + namespace gfm { + function gfm(service: TurndownService): void; + } + export = gfm; } \ No newline at end of file