Skip to content

Commit

Permalink
Fixes #3262
Browse files Browse the repository at this point in the history
  • Loading branch information
zachleat committed Apr 24, 2024
1 parent 4500cdc commit 09e9dda
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/Util/ProxyWrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ import { isPlainObject } from "@11ty/eleventy-utils";
const debug = debugUtil("Dev:Eleventy:Proxy");

function wrapObject(target, fallback) {
if (Object.isFrozen(target)) {
return target;
}

return new Proxy(target, {
getOwnPropertyDescriptor(target, prop) {
let ret;
Expand Down Expand Up @@ -48,6 +52,10 @@ function wrapObject(target, fallback) {
}

if (isPlainObject(value) && Reflect.has(fallback, prop)) {
if (Object.isFrozen(value)) {
return value;
}

let ret = wrapObject(value, Reflect.get(fallback, prop));
debug("handler:get (primary, object)", prop);
return ret;
Expand All @@ -68,6 +76,10 @@ function wrapObject(target, fallback) {
let emptyObject = {};
Reflect.set(target, prop, emptyObject);

if (Object.isFrozen(fallbackValue)) {
return fallbackValue;
}

return wrapObject(emptyObject, fallbackValue);
}

Expand Down
21 changes: 21 additions & 0 deletions test/EleventyTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -987,6 +987,27 @@ pkg:
t.is(e.originalError.toString(), "TypeError: Cannot add property myOwn, object is not extensible");
});

test("Eleventy pagination works okay with reserved data throws (eleventy) Issue #3262", async (t) => {
let elev = new Eleventy("./test/stubs-virtual/", undefined, {
config: eleventyConfig => {
eleventyConfig.addTemplate("index.html", `---
pagination:
data: "test"
size: 1
test:
- a
- b
- c
---
{{ eleventy.generator }}`);
}
});
elev.disableLogger();

let result = await elev.toJSON();
t.is(result.length, 3);
});

test("Eleventy setting reserved data throws error (page)", async (t) => {
let elev = new Eleventy("./test/stubs-virtual/", undefined, {
config: eleventyConfig => {
Expand Down

0 comments on commit 09e9dda

Please sign in to comment.