Skip to content

feat(docgen): deep-merge user-supplied JSON-LD frame with built-in default#366

Merged
ddeboer merged 1 commit intomainfrom
worktree-fix-313-merge-jsonld-frame
Apr 28, 2026
Merged

feat(docgen): deep-merge user-supplied JSON-LD frame with built-in default#366
ddeboer merged 1 commit intomainfrom
worktree-fix-313-merge-jsonld-frame

Conversation

@ddeboer
Copy link
Copy Markdown
Member

@ddeboer ddeboer commented Apr 28, 2026

Closes #313.

Summary

  • A user-supplied JSON-LD frame is now deep-merged on top of docgen’s built-in default, so consumers only need to specify their additions (e.g. extra @context entries) instead of duplicating all of docgen’s defaults.
  • Plain objects merge key-by-key with user values winning; arrays and primitives in the user frame replace the default. Built-in coercions can still be overridden by redefining the same key.
  • The default frame path is now resolved internally by frame(), so generateDocumentation() and the CLI’s -f option both treat the user frame as optional.

A consumer’s frame can now be as small as:

{
  "@context": {
    "nde": "https://def.nde.nl#",
    "nde:futureChange": {},
    "nde:version": {}
  }
}

Test plan

  • npx nx run @lde/docgen:test – existing integration test now exercises the no-frame default path; new frame.test.ts covers default-only, partial merge (preserves default coercions while adding user keys), and override (user coercion replaces default)
  • npx nx run @lde/docgen:typecheck and :build pass
  • 100% line/branch coverage on frame.ts

…fault

Closes #313

A user-supplied frame is now merged on top of the built-in default frame,
so consumers only need to specify their additions (e.g. extra @context
entries) instead of duplicating all of docgen's defaults. Plain objects
merge key-by-key; arrays and primitives in the user frame replace the
default.
@ddeboer ddeboer merged commit 52bf7a3 into main Apr 28, 2026
2 checks passed
@ddeboer ddeboer deleted the worktree-fix-313-merge-jsonld-frame branch April 28, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support merging user-provided JSON-LD frame with built-in default

1 participant