Commit Graph

280 Commits

Author SHA1 Message Date
Tony a98de2effd refactor: use arrow function 2026-05-11 02:16:04 +08:00
github-actions[bot] ebfe021b50 style: auto format 2026-04-14 15:15:05 +00:00
Tony 1fe4e8a4ae
feat(core): add honeybadger support (#21574)
* feat(core): add honeybadger support

* feat(honeybadger): configure Honeybadger to disable uncaught error tracking

* feat(tests): add info logger mock to app-bootstrap tests

* test: fix mock value

* test: mock honeybadger as well
2026-04-01 01:10:12 +08:00
Tony 8043a5a819 style: update oxlint to use simple-import-sort 2026-03-04 03:13:57 +08:00
Tony 1acb805799
style: migrate eslint to oxlint (#21224)
* chore: add oxlint support

* style: apply autofix

* style: apply autofix for toSorted

* style: use alternative api for nsfw-flag jsPlugins

* fix: git diff

* fix: codeql

* test: console.log

* style: update lint workflow to use Checkstyle SARIF converter

* style: remove debug log from extractDateFromURL function

* chore: use oxlint-json-to-sarif

* test: console.log

* test: remove console.log

* test: update cookie data expectation in getCookies test

https://github.com/mccutchen/go-httpbin/pull/235 breaks this

* style: type-aware linting

* style: enable type-aware linting for oxlint
2026-02-28 21:23:11 +08:00
Tony da15d11d1d
chore: replace postlight/parser with jocmp/mercury-parser (#21152) 2026-02-15 01:27:25 +08:00
DIYgod 81ff849337
feat(tests): add comprehensive unit tests for various utility functions and views (#20779)
* feat(tests): add comprehensive unit tests for various utility functions and views

- Implement tests for cache utility to ensure proper behavior with no cache and TTL keys.
- Add tests for common utilities including string manipulation and path handling.
- Introduce tests for directory import functionality to validate file imports and pattern matching.
- Create tests for git hash retrieval to handle fallback scenarios.
- Develop tests for deprecated got utility to verify response handling and retry logic.
- Enhance got utility tests to include request hooks and search parameter handling.
- Mock header generator tests to validate user agent handling.
- Expand helpers tests to cover current path retrieval and duration parsing.
- Implement tests for ofetch utility to ensure proper proxy handling and logging.
- Add OpenTelemetry metric tests to validate metric serialization.
- Create proxy tests to verify multi-proxy selection and failure handling.
- Introduce request rewriter tests to validate fetch and get wrapper functionality.
- Add timezone utility tests to handle various input types.
- Implement view tests for Atom and RSS rendering to ensure correct output.
- Create index view tests to validate debug information display based on configuration.

* refactor: remove deprecated got implementation and associated tests

* test: expand coverage for api, middleware, and utils
2025-12-29 17:34:48 +08:00
DIYgod cf4e772de8
refactor: replace art template with jsx (#20777)
* refactor: replace art template with jsx

* fix: tsx files

* fix: renderToString import

* fix: hono html raw import

* feat: remove art
2025-12-29 12:27:32 +08:00
Tony 14757b8d5e test(header): add wait after each test to prevent race conditions 2025-12-20 23:54:41 +08:00
github-actions[bot] edfac9f24c style: auto format 2025-11-27 05:54:33 +00:00
github-actions[bot] 838eb3c7ff style: auto format 2025-11-27 05:49:33 +00:00
github-actions[bot] a28890a135 style: auto format 2025-11-27 02:55:46 +00:00
Tony e6cef5ad4c
fix(middleware): ensure referrerpolicy is set only if not already defined (#20394) 2025-10-30 04:40:05 +08:00
Stephen Zhou a0c5b08936
fix(route/bilibili): only get subtitle for jsonfeed (#20377)
* fix(route/bilibili): only get subtitle for jsonfeed

* Update lib/middleware/cache.ts

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/middleware/cache.ts

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

---------
2025-10-29 15:32:20 +08:00
Aleksandr Bogdanov 9d2fc7a676
feat(route/telegram): Fix tglib (#18268)
* refactor telegram/tglib for Hono

* linter fix

* add CSP for channel media

* don't cut feed item title prematurely

* implement shared Geo position attachment

* don't start TG client unless routes are requested

* resolve typescript; fix private chats and groups; fix stickers and no-thumbnail document attachments; fix media-by-link attachments

* fix empty text and message grouping; add GeoLive media type; add Poll/Quiz media type

* add script-src none to CSP

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* add unwrap media for stories support

* fix fwdFrom access

* remove unnecessary core patches, add media route docs

* remove tglib fallback, as it's already preferred if configured

* implement stories endpoint

* improve text representation of channel content

* serve channel media under /channel/entityName/msgId

* improve stories endpoint

* restore original post links to avoid feed duplicates on upgrade

* appease eslint

* fix lint

* improve stories config route definition

* fix poll handling

* lint fix

* format poll results nicely

* fix node compat

* remove duplicate ignore

---------
2025-09-16 21:41:05 +08:00
dependabot[bot] 802cbf95d2
chore(deps-dev): bump eslint-plugin-unicorn from 60.0.0 to 61.0.2 (#19998)
* chore(deps-dev): bump eslint-plugin-unicorn from 60.0.0 to 61.0.1

Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 60.0.0 to 61.0.1.
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v60.0.0...v61.0.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-unicorn
  dependency-version: 61.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* refactor: replace `replace(/regex/g)` with replaceAll

* refactor: replace sort() with toSorted() for immutability in various routes and utilities

* refactor: fix unicorn/prefer-array-find

* refactor: fix unicorn/prefer-at

* refactor: add unicorn/no-array-sort rule to ESLint configuration

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-08 23:03:48 +08:00
dependabot[bot] 72466f0ea7
chore(deps): bump hono from 4.7.11 to 4.8.0 (#19404) 2025-06-19 11:28:16 +08:00
DIYgod 8520db3e13
feat: api route (#19209)
* feat: api route

* test: api route
2025-05-27 13:21:27 +08:00
DIYgod 68aed429c5
feat(core): filter out null route 2025-05-14 20:25:45 +08:00
DIYgod d2743c9d4f
feat(core): add routePath in response header 2025-05-14 17:21:22 +08:00
Tony 8faec7fbfd refactor: fix Element type import 2025-05-07 04:18:23 +08:00
Tony 03969f3867
refactor: fix lint issue (#18963)
* fix: unicorn/no-empty-file

* fix: unicorn/prefer-node-protocol

* fix: unicorn/prefer-number-properties

* fix: unicorn/consistent-destructuring

* fix: unicorn/no-array-callback-reference

* fix: unicorn/new-for-builtins

* fix: set checkNaN to false in unicorn/prefer-number-properties

* fix: unicorn/prefer-string-slice

* fix: update eslint ignore
2025-04-29 03:00:16 +08:00
Tony d78a47ec7b
fix(core/cache): update cache key generation to include query limit (#17674) 2024-11-22 01:41:11 +08:00
DIYgod 91d9acc68b
fix: redirection in router handler 2024-11-12 20:14:04 +08:00
Tsuyumi 40bab08529
feat: better error message display (#17477) 2024-11-07 01:55:12 +08:00
Tsuyumi abed9a058c
fix(middleware): use URL pathname to maintain exact user access path for access control (#17327) 2024-10-27 23:06:44 +08:00
lzk 7a74a131d5
feat: HOTLINK_TEMPLATE environment variable applied to audio and video link (#17287)
Co-authored-by: linzhikang <linzhikang@bytedance.com>
2024-10-25 02:01:02 +08:00
Stephen Zhou a4daf28ca5
fix: catch Invalid Date (#17081) 2024-10-10 21:21:35 -07:00
Tony 25d53e8053 chore: fix typo 2024-09-24 23:56:06 +08:00
incubator4 be3ba61788
chore: otel fix and enhancement (#16754)
* feat(otel): use routePath insteadof path

* feat(otel): add otel bucket boundary env

* chore: move otel to debug block with alphabetical sort
2024-09-15 19:42:21 +08:00
Tony 9d7e1943f0
test: fix tests (#16697)
* test: fix tests

* revert "fix: fill image from itunes_item_image (#16694)"

This reverts commit 879772a97f.

* fix: fill image from jsonfeed template

* chore: bump msw to 2.4.3
2024-09-11 01:05:37 +08:00
Stephen Zhou 879772a97f
fix: fill image from itunes_item_image (#16694) 2024-09-10 23:24:43 +08:00
CaoMeiYouRen ed8b868432
feat(middleware): 优化 多媒体处理增加 data.image/item.enclosure_url/item.image… (#16610)
* feat(middleware): 优化 多媒体处理增加 data.image/item.enclosure_url/item.image/item.itunes_item_image 等字段

* test(middleware): 补充 anti-hotlink 缺失的测试用例
2024-09-05 20:47:53 +08:00
COxDE 2962c6f64f
feat(middleware): process feed title and description using LLM (#16464)
* feat(middleware): add title translation using LLM

* refactor: combine title and description

* fix: camelCase for variables

* refactor: try to update the test case

---------
2024-08-22 02:15:00 +08:00
DIYgod 59e19001e6
feat: update descriptions 2024-07-23 16:30:41 +08:00
DIYgod 55c6f859a5
fix: 304 response error 2024-07-14 15:37:45 +08:00
Nya Candy 68c7430fbb
feat(core): opentelementry support (update of #14668) (#16087)
* chore: squash commit

* fix: tweak some mentioned issues

---------

Co-authored-by: incubator4 <aries0robin@gmail.com>
2024-07-05 19:22:33 +08:00
DIYgod d1dd8a53ca
feat: retry requesting control (#15717)
* feat: retry requesting control

* test: fix error handling test
2024-05-26 21:48:29 +08:00
DIYgod 0839e555bb
feat: bypass cache for non rss routes 2024-05-26 20:46:12 +08:00
TonyRL 3a58d90698 fix(template): remove undefined character and 0 width space
fix #8760
2024-05-24 08:12:02 +00:00
Tony b0b7adf382
fix(template): redis-backed instances always show ttl 1 (#15536) 2024-05-10 03:47:21 +08:00
Henry Wang 5c3711cbcc
feat: support .rss3 output type (#15258)
Co-authored-by: pull[bot] <39814207+pull[bot]@users.noreply.github.com>
2024-04-18 02:10:33 +08:00
Tony 0456ca9541
fix(core): remove unicode control characters in item description (#15263) 2024-04-17 02:51:05 +08:00
DIYgod cef1ed1eb6
refactor: error types 2024-04-07 16:37:54 +08:00
DIYgod efc2b2f5a4
test: fix parameter test text 2024-04-07 14:06:32 +08:00
Tony 0893debb07
style(eslint): lint tsx (#15098) 2024-04-04 20:28:45 +08:00
Rongrong 045eaf664c
fix(core): misc fixes of disabling cache (#15036)
* fix(core): CACHE_TYPE='' does not disable cache

The documentation of config always states that CACHE_TYPE being empty
will disable the cache.

The regression was introduced in 847724ca. The corresponding test case
was mistakenly "fixed" in 719af907.

Signed-off-by: Rongrong <i@rong.moe>

* fix(core): false RSS <ttl> when cache unavailable

Some RSS readers may probe <ttl> to determine the minimum interval of
polling. However, it is always set to `config.cache.routeExpire / 60`
even when cache is unavailable. This may not be expected when the cache
is explicitly disabled.

Set it to 1 (minute) under such a circumstance. The minimum <ttl> (when
cache is available) is also limited to 1 to avoid potential misuse.

The Cache-Control header remains untouched as caching can be done by a
reverse proxy.

Signed-off-by: Rongrong <i@rong.moe>

---------

Signed-off-by: Rongrong <i@rong.moe>
2024-04-02 01:21:38 +08:00
DIYgod 50d194ef3d
Merge remote-tracking branch 'origin/master' into feature/ofetch 2024-03-31 23:37:37 +08:00
DIYgod bf4e5dd78f
test: fix caces 2024-03-31 23:13:22 +08:00
wudifeixue c086c62acd
fix(core): fix documentation link path and error message links (#15023)
* fix: all broken sponsor links

* fix: all broken deployment links

* fix: other broken links
2024-03-30 08:12:12 +00:00