Commit Graph

3 Commits

Author SHA1 Message Date
Copilot
6babcea029
refactor: decouple plugins from direct utility imports (#4)
* Initial plan

* Extend PluginUtilities with missing path and escape utilities

Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com>

* Migrate transformers to use ctx.utils instead of direct imports

Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com>

* Migrate emitters to use ctx.utils - part 1 (helpers, aliases, assets, contentIndex, contentPage, tagPage, static, favicon)

Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com>

* Complete emitter migration to ctx.utils - all emitters decoupled

Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com>

* Add comment explaining double-unescaping in test helper mock

This mirrors the production implementation in util/escape.ts which has the same pattern. The CodeQL alert is a known limitation of simple HTML unescaping that exists in the production code as well.

Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com>

* Fix type safety: change join() return type to string and simplify casts

- Changed PluginUtilities.path.join() return type from FilePath to string to allow proper single-cast at call sites
- Removed unsafe double-casts (as unknown as FullSlug) in favor of single casts (as FullSlug)
- Fixed ogImage.tsx to use consistent destructuring pattern (ctx.cfg.configuration instead of cfg.configuration)
- Updated implementation in plugin-context.ts and test-helpers.ts

This addresses all code review feedback about type safety issues.

Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com>

* Fix test mock implementations to match production code behavior

- Fixed getAllSegmentPrefixes to return cumulative prefixes (e.g., ["a", "a/b", "a/b/c"])
- Fixed isRelativeURL to include all three validation conditions
- Fixed stripSlashes to use substring(1) instead of replace(/^\/+/)
- Fixed slugTag to properly handle hierarchical tags with sluggify logic
- Fixed split to handle PDF files and anchor normalization
- Fixed HTML entity &#39; to &#039; for consistency
- Changed QUARTZ imports to use utils.path.QUARTZ for consistency
- Fixed favicon.ts to pass full ctx instead of reconstructing partial object

All mocks now accurately reflect production code behavior for reliable testing.

Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com>
2025-11-16 19:24:30 +01:00
dralagen
6ba9c7c02a
doc(favicon): add documentation of favicon plugin (#1948)
Some checks are pending
Build and Test / build-and-test (macos-latest) (push) Waiting to run
Build and Test / build-and-test (ubuntu-latest) (push) Waiting to run
Build and Test / build-and-test (windows-latest) (push) Waiting to run
Build and Test / publish-tag (push) Waiting to run
Docker build & push image / build (push) Waiting to run
* doc(favicon): add documentation of favicon plugin

* doc(favicon): add missing link to configuration page

* fix(favicon): build on public folder don't created
2025-04-28 22:00:28 -07:00
dralagen
9e58857746
feat(favicon): add plugin to expose favicon from icon.png (#1942)
* feat(favicon): add plugin to expose favicon from icon.png

* chore(favicon): clean up formatting and remove unnecessary line breaks
2025-04-26 11:06:59 -07:00