Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is the purpose of this pull request? (put "X" next to an item, remove the rest)
• [x] Other, please explain: plugin scalability (performance)
Resolves #1188 as a first, there's still much room for polish in the plugin api
What is the rationale for this request?
What changes did you make? (Give an overview)
preRenderNode
andpostRenderNode
. These tap into the same processes aspre/postRender
at their respective stages, but directly through the recursive dom handling process.~10%
) in three separate commits<span heading>
shorthand plugin for panels ( converts to<div slot="header">
)Provide some example code that this change will affect:
Hence instead of reparsing the content for every plugin (
cheerio.load
), one can write a simple plugin through the following (shorthand plugin)Is there anything you'd like reviewers to focus on?
na, I'm leaving this undocumented for now pending #1151, would also be good if anything needs to be changed in the immediate future
Testing instructions:
npm run test
should passProposed commit message: (wrap lines at 72 characters)
Add more plugin hooks
There are only 2 interfaces for plugins to modify a page's content,
preRender and postRender. These plugin hooks do so by passing the
processed page content thus far to the plugin, requiring the plugin to
reparse the entire page content, often only to perform simple
operations.
Let's add 2 more plugin hooks to allow plugins to tap into the
recursive dom handling processes at these respective stages.
In the following commits, we adapt some of the plugins to use these new
hooks, and observe a significant performance improvement of ~10%, which
should likely scale as we add and adapt more plugins.