Skip to content

Commit

Permalink
Fix bad promise caching pattern
Browse files Browse the repository at this point in the history
  • Loading branch information
zachleat committed Jun 26, 2024
1 parent 65de3af commit 643da17
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions src/Template.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ class Template extends TemplateContent {

if (types.render) {
delete this._cacheRenderedPromise;
delete this._cacheFinalContent;
delete this._cacheRenderedTransformsAndLayoutsPromise;
}
}

Expand Down Expand Up @@ -744,12 +744,7 @@ class Template extends TemplateContent {
return ret;
}

async renderPageEntry(pageEntry) {
// cache with transforms output
if (pageEntry.template._cacheFinalContent) {
return pageEntry.template._cacheFinalContent;
}

async #renderPageEntryWithLayoutsAndTransforms(pageEntry) {
let content;
let layoutKey = pageEntry.data[this.config.keys.layout];
if (layoutKey) {
Expand All @@ -760,13 +755,22 @@ class Template extends TemplateContent {
}

await this.runLinters(content, pageEntry);
content = await this.runTransforms(content, pageEntry);

pageEntry.template._cacheFinalContent = content;
content = await this.runTransforms(content, pageEntry);

return content;
}

async renderPageEntry(pageEntry) {
// cache with transforms output
if (!pageEntry.template._cacheRenderedTransformsAndLayoutsPromise) {
pageEntry.template._cacheRenderedTransformsAndLayoutsPromise =
this.#renderPageEntryWithLayoutsAndTransforms(pageEntry);
}

return pageEntry.template._cacheRenderedTransformsAndLayoutsPromise;
}

retrieveDataForJsonOutput(data, selectors) {
let filtered = {};
for (let selector of selectors) {
Expand Down

0 comments on commit 643da17

Please sign in to comment.