From 6afd00f9568ec44c9e7948c29ed18dbee651ede5 Mon Sep 17 00:00:00 2001 From: Dylan Piercey Date: Mon, 14 Aug 2023 10:23:49 -0700 Subject: [PATCH] fix: ensure .marko files resolved for renderer config --- .changeset/plenty-poems-attack.md | 7 +++++++ .../src/taglib/loader/loadTagFromProps.js | 18 +++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .changeset/plenty-poems-attack.md diff --git a/.changeset/plenty-poems-attack.md b/.changeset/plenty-poems-attack.md new file mode 100644 index 0000000000..e0b4d49e71 --- /dev/null +++ b/.changeset/plenty-poems-attack.md @@ -0,0 +1,7 @@ +--- +"@marko/compiler": patch +"marko": patch +"@marko/translator-default": patch +--- + +Ensure .marko files are resolved for legacy renderer taglib configs. diff --git a/packages/compiler/src/taglib/loader/loadTagFromProps.js b/packages/compiler/src/taglib/loader/loadTagFromProps.js index 1ff38495af..d7e429f4b3 100644 --- a/packages/compiler/src/taglib/loader/loadTagFromProps.js +++ b/packages/compiler/src/taglib/loader/loadTagFromProps.js @@ -16,6 +16,22 @@ function resolveRelative(dirname, value) { return value[0] === "." ? resolveFrom(dirname, value) : value; } +function resolveWithMarkoExt(dirname, value) { + if ( + markoModules.require.extensions && + !(".marko" in markoModules.require.extensions) + ) { + markoModules.require.extensions[".marko"] = undefined; + try { + return resolveFrom(dirname, value); + } finally { + delete markoModules.require.extensions[".marko"]; + } + } + + return resolveFrom(dirname, value); +} + function removeDashes(str) { return str.replace(/-([a-z])/g, function (match, lower) { return lower.toUpperCase(); @@ -300,7 +316,7 @@ class TagLoader { * @param {String} value The renderer path */ renderer(value) { - this.tag.renderer = resolveRelative(this.dirname, value); + this.tag.renderer = resolveWithMarkoExt(this.dirname, value); } /**