From 1be5baa60f7509bf0677c1454b1fc77d004e52d5 Mon Sep 17 00:00:00 2001 From: svemagie Date: Tue, 10 Mar 2026 08:16:12 +0100 Subject: [PATCH] feat: install and configure @rmdes/indiekit-endpoint-microsub Adds Microsub social reader endpoint at /microsub, enabling feed subscription and management via the Microsub protocol. Co-Authored-By: Claude Sonnet 4.6 --- indiekit.config.mjs | 4 ++++ package-lock.json | 51 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 3 files changed, 56 insertions(+) diff --git a/indiekit.config.mjs b/indiekit.config.mjs index 540b4da5..ff81892f 100644 --- a/indiekit.config.mjs +++ b/indiekit.config.mjs @@ -311,6 +311,7 @@ export default { "@rmdes/indiekit-endpoint-activitypub", "@rmdes/indiekit-endpoint-youtube", "@rmdes/indiekit-endpoint-blogroll", + "@rmdes/indiekit-endpoint-microsub", ], "@indiekit/store-github": { user: githubUsername, @@ -432,5 +433,8 @@ export default { maxItemAge: 7, fetchTimeout: 15000, }, + "@rmdes/indiekit-endpoint-microsub": { + mountPath: "/microsub", + }, }; diff --git a/package-lock.json b/package-lock.json index 3cda39f6..07b8b4a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "@rmdes/indiekit-endpoint-github": "^1.2.3", "@rmdes/indiekit-endpoint-homepage": "^1.0.22", "@rmdes/indiekit-endpoint-lastfm": "^1.0.12", + "@rmdes/indiekit-endpoint-microsub": "^1.0.43", "@rmdes/indiekit-endpoint-podroll": "^1.0.11", "@rmdes/indiekit-endpoint-posts": "^1.0.0-beta.25", "@rmdes/indiekit-endpoint-webmention-io": "^1.0.7", @@ -2467,6 +2468,47 @@ "@indiekit/indiekit": ">=1.0.0-beta.25" } }, + "node_modules/@rmdes/indiekit-endpoint-microsub": { + "version": "1.0.43", + "resolved": "https://registry.npmjs.org/@rmdes/indiekit-endpoint-microsub/-/indiekit-endpoint-microsub-1.0.43.tgz", + "integrity": "sha512-Af3Hd3eOvo/wZjENnWKFI+nQ/qGt5ixL3QJ7hMpqPf5nf45GYHGl8YtJf1i2XWQ2CRS62bp1mW1W39XUuAHuvA==", + "license": "MIT", + "dependencies": { + "@indiekit/error": "^1.0.0-beta.25", + "@indiekit/frontend": "^1.0.0-beta.25", + "@indiekit/util": "^1.0.0-beta.25", + "debug": "^4.3.2", + "express": "^5.0.0", + "feedparser": "^2.2.10", + "htmlparser2": "^9.0.0", + "ioredis": "^5.3.0", + "luxon": "^3.4.0", + "microformats-parser": "^2.0.0", + "sanitize-html": "^2.11.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@rmdes/indiekit-endpoint-microsub/node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, "node_modules/@rmdes/indiekit-endpoint-podroll": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@rmdes/indiekit-endpoint-podroll/-/indiekit-endpoint-podroll-1.0.11.tgz", @@ -6164,6 +6206,15 @@ "node": "20 || >=22" } }, + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/make-fetch-happen": { "version": "15.0.4", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.4.tgz", diff --git a/package.json b/package.json index fb972932..91fe656f 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "@rmdes/indiekit-endpoint-github": "^1.2.3", "@rmdes/indiekit-endpoint-homepage": "^1.0.22", "@rmdes/indiekit-endpoint-lastfm": "^1.0.12", + "@rmdes/indiekit-endpoint-microsub": "^1.0.43", "@rmdes/indiekit-endpoint-podroll": "^1.0.11", "@rmdes/indiekit-endpoint-posts": "^1.0.0-beta.25", "@rmdes/indiekit-endpoint-webmention-io": "^1.0.7",