mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-21 03:44:05 -06:00
c3de4a8c11
3 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c3de4a8c11
|
refactor: complete BuildCtx immutability and update decoupling roadmap (#6)
* Initial plan * refactor: remove BuildCtx mutation from FrontMatter plugin - Remove temporary cast to mutable allSlugs array - Move alias collection to build orchestration layer - Update ctx.allSlugs immutably after parsing - Apply same pattern to incremental rebuild - Verified alias functionality works correctly Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * fix: ensure alias collection happens before filtering in rebuild flow Move alias collection before filterContent() in rebuild flow to match initial build flow. This ensures consistent behavior where aliases from all markdown files (including those that will be filtered out) are included in ctx.allSlugs in both build scenarios. Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * refactor: simplify collectAliases using functional array methods Replace imperative for-loop with declarative filter/flatMap chain for better readability and conciseness. Functionally equivalent but more idiomatic TypeScript. Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * docs: update roadmap with completion status for decoupling phases Mark phases 1-5 as completed with detailed status notes: - Phase 1 (Foundation): vfile-schema, plugin-context, test-helpers - Phase 2 (Utility Abstraction): ctx.utils migration complete - Phase 3 (Component Decoupling): component registry created - Phase 4 (Immutability): BuildCtx readonly, alias collection refactored - Phase 5 (Full Migration): all plugins migrated to new pattern Add implementation status summary showing all objectives achieved. 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> |
||
|
|
06c8ff10f1
|
refactor: implement plugin decoupling foundation (Phases 1-5) (#3)
* Initial plan * docs: format design document for decoupling strategy Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * feat: implement Phase 1-4 of plugin decoupling strategy - Created centralized vfile-schema.ts with all VFile data type definitions - Created plugin-context.ts with PluginUtilities abstraction layer - Created test-helpers.ts for plugin testing utilities - Made BuildCtx readonly to prevent plugin mutations - Added MutableBuildCtx for build orchestration layer - Updated components to not mutate ctx.trie - Updated FrontMatter plugin with temporary cast for backward compatibility - Updated TransformOptions to accept ReadonlyArray Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * feat: add plugin utilities to BuildCtx and document plugin decoupling - Added utils property to BuildCtx with createPluginUtilities() - Documented plugin data dependencies with JSDoc comments on transformers and filters - Created comprehensive plugin migration guide in docs/PLUGIN_MIGRATION.md - Updated plugin types.ts with guidance on using PluginContext - All plugins now have access to ctx.utils for path, resource, and escape utilities Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * docs: add implementation and security summaries - Created IMPLEMENTATION_SUMMARY.md documenting all phases completed - Created SECURITY_SUMMARY.md with CodeQL scan results - All security checks passed with 0 vulnerabilities - Complete documentation of changes, decisions, and impact Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * docs: add guidance for custom plugins extending vfile data - Added section "Adding Custom VFile Fields" to PLUGIN_MIGRATION.md - Demonstrates TypeScript module augmentation for custom fields - Shows best practices for extending vfile data in third-party plugins - Clarifies that centralized schema doesn't prevent custom extensions Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * refactor: address code review feedback - Remove `any` type annotations from component map callbacks (Breadcrumbs, FolderContent) - Fix test-helpers: change `config` to `cfg` to match BuildCtx interface - Add `trie: undefined` to mock context for completeness - Add missing vfile fields to schema: text, blocks, htmlAst, hasMermaidDiagram - Make Argv properties truly readonly with ReadonlyArgv type - Add documentation explaining module augmentation pattern is intentional - Document FrontMatter mutation as known technical debt with timeline 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> |
||
|
|
ad55761811
|
docs: add plugin decoupling design document (#2)
* Initial plan * Add comprehensive plugin decoupling design document Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * Address code review feedback: fix incomplete types and missing files - Add missing transformer files to Appendix A (gfm, linebreaks, oxhugofm, roam) - Complete emit/partialEmit return types in QuartzEmitterPluginInstance - Export TocEntry interface in vfile-schema to fix reference issue - Add missing externalResources method to QuartzTransformerPluginInstance Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * Address code review: add imports, fix component example, clarify interfaces, update file count - Add missing import statements to all code examples (vfile-schema, plugin-context, registry, emitter types, test helpers) - Fix component example to properly use QuartzComponentConstructor pattern - Remove redundant externalResources from init() return type to avoid ambiguity - Add placeholder implementations for helper functions in test example - Update total file count from ~65 to ~71 to match breakdown (3+13+2+14+30+5+4) Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * Address code review: fix type references, add missing properties, improve examples - Fix JSResourceOptions/CSSResourceOptions to use actual JSResource/CSSResource types - Add missing externalResources property to QuartzEmitterPluginInstance - Clarify that requiredComponents is only for emitters, not transformers - Fix TOC slug comment to indicate no "#" prefix (e.g., "some-heading") - Expand frontmatter interface to include all fields from actual implementation - Improve migration guide with complete example showing type import pattern - Add skeleton implementations for test helper mock functions with realistic return types Co-authored-by: saberzero1 <8161064+saberzero1@users.noreply.github.com> * Address code review: fix imports, add required fields, simplify types - Fix QuartzVFileData import from "./vfile-schema" instead of "./plugin-context" - Add all missing import statements for types used in test helpers - Add required config fields (enableSPA, enablePopovers, analytics, ignorePatterns, defaultDateType, theme) - Import TocEntry type alongside QuartzVFileData in migration guide - Simplify resource creation to separate createExternalJS/createInlineJS functions - Remove circular import of ChangeEvent from "./types" (already defined in that file) - Fix enableToc type to boolean | string for consistency with other frontmatter fields - Update mock utilities to match new resource creation pattern 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> |