diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-11-29 19:16:05 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-29 19:16:05 +0900 |
| commit | 27320344470f7c2457216ab64eecb5e513417ac4 (patch) | |
| tree | 8eec493ed429d63de1c089f6e1fcdb0aeca18de8 /packages/backend/src/server/api | |
| parent | [skip ci] Update CHANGELOG.md (prepend template) (diff) | |
| download | misskey-27320344470f7c2457216ab64eecb5e513417ac4.tar.gz misskey-27320344470f7c2457216ab64eecb5e513417ac4.tar.bz2 misskey-27320344470f7c2457216ab64eecb5e513417ac4.zip | |
perf(backend): jsdom、happy-domをやめて軽量な実装にし、メモリ削減・高速化 (#16885)
* wip
* Update packages/backend/src/server/api/endpoints/i/update.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update packages/backend/src/core/FetchInstanceMetadataService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* remove some packages
* コミット漏れ
* clean up
* fix
* Update MfmService.ts
* fix
* fix
* Update MfmService.ts
* wip
* rename
* Update packages/backend/src/core/MfmService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update packages/backend/src/core/MfmService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update packages/backend/src/core/MfmService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update packages/backend/src/core/MfmService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update packages/backend/src/core/activitypub/ApRendererService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update packages/backend/src/core/MfmService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update packages/backend/src/core/MfmService.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update MfmService.ts
* Update CHANGELOG.md
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Diffstat (limited to 'packages/backend/src/server/api')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/i/update.ts | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index 113a09cb14..9971a1ea4d 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -7,7 +7,7 @@ import RE2 from 're2'; import * as mfm from 'mfm-js'; import { Inject, Injectable } from '@nestjs/common'; import ms from 'ms'; -import { JSDOM } from 'jsdom'; +import * as htmlParser from 'node-html-parser'; import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm.js'; import { extractHashtags } from '@/misc/extract-hashtags.js'; import * as Acct from '@/misc/acct.js'; @@ -569,16 +569,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- try { const html = await this.httpRequestService.getHtml(url); - const { window } = new JSDOM(html); - const doc: Document = window.document; + const doc = htmlParser.parse(html); const myLink = `${this.config.url}/@${user.username}`; const aEls = Array.from(doc.getElementsByTagName('a')); const linkEls = Array.from(doc.getElementsByTagName('link')); - const includesMyLink = aEls.some(a => a.href === myLink); - const includesRelMeLinks = [...aEls, ...linkEls].some(link => link.rel === 'me' && link.href === myLink); + const includesMyLink = aEls.some(a => a.attributes.href === myLink); + const includesRelMeLinks = [...aEls, ...linkEls].some(link => link.attributes.rel?.split(/\s+/).includes('me') && link.attributes.href === myLink); if (includesMyLink || includesRelMeLinks) { await this.userProfilesRepository.createQueryBuilder('profile').update() @@ -588,8 +587,6 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- }) .execute(); } - - window.close(); } catch (err) { // なにもしない } |