mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-21 03:44:05 -06:00
6babcea029
2 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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> |