fix(backend): parse5関係の型のimport方法を変更 (#14146)
This commit is contained in:
		| @@ -7,16 +7,18 @@ import { URL } from 'node:url'; | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import * as parse5 from 'parse5'; | ||||
| import { Window, XMLSerializer } from 'happy-dom'; | ||||
| import * as TreeAdapter from 'parse5/dist/tree-adapters/default.js'; | ||||
| import { DI } from '@/di-symbols.js'; | ||||
| import type { Config } from '@/config.js'; | ||||
| import { intersperse } from '@/misc/prelude/array.js'; | ||||
| import { normalizeForSearch } from '@/misc/normalize-for-search.js'; | ||||
| import type { IMentionedRemoteUsers } from '@/models/Note.js'; | ||||
| import { bindThis } from '@/decorators.js'; | ||||
| import type { DefaultTreeAdapterMap } from 'parse5'; | ||||
| import type * as mfm from 'mfm-js'; | ||||
|  | ||||
| const treeAdapter = TreeAdapter.defaultTreeAdapter; | ||||
| const treeAdapter = parse5.defaultTreeAdapter; | ||||
| type Node = DefaultTreeAdapterMap['node']; | ||||
| type ChildNode = DefaultTreeAdapterMap['childNode']; | ||||
|  | ||||
| const urlRegex = /^https?:\/\/[\w\/:%#@$&?!()\[\]~.,=+\-]+/; | ||||
| const urlRegexFull = /^https?:\/\/[\w\/:%#@$&?!()\[\]~.,=+\-]+$/; | ||||
| @@ -46,7 +48,7 @@ export class MfmService { | ||||
|  | ||||
| 		return text.trim(); | ||||
|  | ||||
| 		function getText(node: TreeAdapter.Node): string { | ||||
| 		function getText(node: Node): string { | ||||
| 			if (treeAdapter.isTextNode(node)) return node.value; | ||||
| 			if (!treeAdapter.isElementNode(node)) return ''; | ||||
| 			if (node.nodeName === 'br') return '\n'; | ||||
| @@ -58,7 +60,7 @@ export class MfmService { | ||||
| 			return ''; | ||||
| 		} | ||||
|  | ||||
| 		function appendChildren(childNodes: TreeAdapter.ChildNode[]): void { | ||||
| 		function appendChildren(childNodes: ChildNode[]): void { | ||||
| 			if (childNodes) { | ||||
| 				for (const n of childNodes) { | ||||
| 					analyze(n); | ||||
| @@ -66,14 +68,16 @@ export class MfmService { | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		function analyze(node: TreeAdapter.Node) { | ||||
| 		function analyze(node: Node) { | ||||
| 			if (treeAdapter.isTextNode(node)) { | ||||
| 				text += node.value; | ||||
| 				return; | ||||
| 			} | ||||
|  | ||||
| 			// Skip comment or document type node | ||||
| 			if (!treeAdapter.isElementNode(node)) return; | ||||
| 			if (!treeAdapter.isElementNode(node)) { | ||||
| 				return; | ||||
| 			} | ||||
|  | ||||
| 			switch (node.nodeName) { | ||||
| 				case 'br': { | ||||
| @@ -81,8 +85,7 @@ export class MfmService { | ||||
| 					break; | ||||
| 				} | ||||
|  | ||||
| 				case 'a': | ||||
| 				{ | ||||
| 				case 'a': { | ||||
| 					const txt = getText(node); | ||||
| 					const rel = node.attrs.find(x => x.name === 'rel'); | ||||
| 					const href = node.attrs.find(x => x.name === 'href'); | ||||
| @@ -90,7 +93,7 @@ export class MfmService { | ||||
| 					// ハッシュタグ | ||||
| 					if (normalizedHashtagNames && href && normalizedHashtagNames.has(normalizeForSearch(txt))) { | ||||
| 						text += txt; | ||||
| 					// メンション | ||||
| 						// メンション | ||||
| 					} else if (txt.startsWith('@') && !(rel && rel.value.startsWith('me '))) { | ||||
| 						const part = txt.split('@'); | ||||
|  | ||||
| @@ -102,7 +105,7 @@ export class MfmService { | ||||
| 						} else if (part.length === 3) { | ||||
| 							text += txt; | ||||
| 						} | ||||
| 					// その他 | ||||
| 						// その他 | ||||
| 					} else { | ||||
| 						const generateLink = () => { | ||||
| 							if (!href && !txt) { | ||||
| @@ -130,8 +133,7 @@ export class MfmService { | ||||
| 					break; | ||||
| 				} | ||||
|  | ||||
| 				case 'h1': | ||||
| 				{ | ||||
| 				case 'h1': { | ||||
| 					text += '【'; | ||||
| 					appendChildren(node.childNodes); | ||||
| 					text += '】\n'; | ||||
| @@ -139,16 +141,14 @@ export class MfmService { | ||||
| 				} | ||||
|  | ||||
| 				case 'b': | ||||
| 				case 'strong': | ||||
| 				{ | ||||
| 				case 'strong': { | ||||
| 					text += '**'; | ||||
| 					appendChildren(node.childNodes); | ||||
| 					text += '**'; | ||||
| 					break; | ||||
| 				} | ||||
|  | ||||
| 				case 'small': | ||||
| 				{ | ||||
| 				case 'small': { | ||||
| 					text += '<small>'; | ||||
| 					appendChildren(node.childNodes); | ||||
| 					text += '</small>'; | ||||
| @@ -156,8 +156,7 @@ export class MfmService { | ||||
| 				} | ||||
|  | ||||
| 				case 's': | ||||
| 				case 'del': | ||||
| 				{ | ||||
| 				case 'del': { | ||||
| 					text += '~~'; | ||||
| 					appendChildren(node.childNodes); | ||||
| 					text += '~~'; | ||||
| @@ -165,8 +164,7 @@ export class MfmService { | ||||
| 				} | ||||
|  | ||||
| 				case 'i': | ||||
| 				case 'em': | ||||
| 				{ | ||||
| 				case 'em': { | ||||
| 					text += '<i>'; | ||||
| 					appendChildren(node.childNodes); | ||||
| 					text += '</i>'; | ||||
| @@ -207,8 +205,7 @@ export class MfmService { | ||||
| 				case 'h3': | ||||
| 				case 'h4': | ||||
| 				case 'h5': | ||||
| 				case 'h6': | ||||
| 				{ | ||||
| 				case 'h6': { | ||||
| 					text += '\n\n'; | ||||
| 					appendChildren(node.childNodes); | ||||
| 					break; | ||||
| @@ -221,8 +218,7 @@ export class MfmService { | ||||
| 				case 'article': | ||||
| 				case 'li': | ||||
| 				case 'dt': | ||||
| 				case 'dd': | ||||
| 				{ | ||||
| 				case 'dd': { | ||||
| 					text += '\n'; | ||||
| 					appendChildren(node.childNodes); | ||||
| 					break; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 おさむのひと
					おさむのひと