From 59b64f57db59ee5c2ecea2e76c8cb47cb6b4027d Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Tue, 19 Mar 2024 19:35:14 -0600 Subject: [PATCH] Fix the instanceof operators on the proxy to include the default class --- module/documents/Actor/_proxy.mjs | 15 +++++++++------ module/documents/Item/_proxy.mjs | 13 ++++++++----- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/module/documents/Actor/_proxy.mjs b/module/documents/Actor/_proxy.mjs index ac765db..dd6cf6c 100644 --- a/module/documents/Actor/_proxy.mjs +++ b/module/documents/Actor/_proxy.mjs @@ -9,12 +9,14 @@ const classes = { sync: Sync, }; +const defaultClass = DotDungeonActor; + export const ActorProxy = new Proxy(function () {}, { construct(target, args) { const [data] = args; if (!classes.hasOwnProperty(data.type)) { - return new DotDungeonActor(...args); + return new defaultClass(...args); } return new classes[data.type](...args); @@ -24,23 +26,24 @@ export const ActorProxy = new Proxy(function () {}, { if (["create", "createDocuments"].includes(prop)) { return function (data, options) { if (data.constructor === Array) { - return data.map(i => ItemProxy.create(i, options)) + return data.map(i => ActorProxy.create(i, options)) } if (!classes.hasOwnProperty(data.type)) { - return DotDungeonActor.create(data, options); + return defaultClass.create(data, options); } - return classes[data.type].create(data, options) + return classes[data.type].create(data, options); }; }; if (prop == Symbol.hasInstance) { return function (instance) { - return Object.values(classes).some(i => instance instanceof i) + if (instance instanceof defaultClass) return true; + return Object.values(classes).some(i => instance instanceof i); }; }; - return DotDungeonActor[prop]; + return defaultClass[prop]; }, }); diff --git a/module/documents/Item/_proxy.mjs b/module/documents/Item/_proxy.mjs index caca081..2ab6d4f 100644 --- a/module/documents/Item/_proxy.mjs +++ b/module/documents/Item/_proxy.mjs @@ -5,12 +5,14 @@ const classes = { aspect: Aspect, }; +const defaultClass = DotDungeonItem; + export const ItemProxy = new Proxy(function () {}, { construct(target, args) { const [data] = args; if (!classes.hasOwnProperty(data.type)) { - return new DotDungeonItem(...args); + return new defaultClass(...args); } return new classes[data.type](...args); @@ -24,19 +26,20 @@ export const ItemProxy = new Proxy(function () {}, { } if (!classes.hasOwnProperty(data.type)) { - return DotDungeonItem.create(data, options); + return defaultClass.create(data, options); } - return classes[data.type].create(data, options) + return classes[data.type].create(data, options); }; }; if (prop == Symbol.hasInstance) { return function (instance) { - return Object.values(classes).some(i => instance instanceof i) + if (instance instanceof defaultClass) return true; + return Object.values(classes).some(i => instance instanceof i); }; }; - return DotDungeonItem[prop]; + return defaultClass[prop]; }, });