* 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 ' to ' 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>
* checkpoint
* make emitters async generators
* fix
* custom font spec
* replace spinner, use disk cache for fonts
* use readline instead
* make og images look nice