diff --git a/.changeset/red-rice-fly.md b/.changeset/red-rice-fly.md new file mode 100644 index 0000000..b1265ab --- /dev/null +++ b/.changeset/red-rice-fly.md @@ -0,0 +1,5 @@ +--- +"obsidian-modules": patch +--- + +Fix importing from external links not working with custom require name. diff --git a/sources/require/resolve.ts b/sources/require/resolve.ts index 5b1d738..1b106ff 100644 --- a/sources/require/resolve.ts +++ b/sources/require/resolve.ts @@ -9,6 +9,7 @@ import { codePoint, dynamicRequire, dynamicRequireSync, + escapeJavaScriptString as escJSStr, isNonNil, } from "@polyipseity/obsidian-plugin-library" import type { Context, Resolve, Resolved } from "obsidian-modules" @@ -696,7 +697,7 @@ export class ExternalLinkResolve readonly [string, ExternalLinkResolve.Identity]> { const href = await this.anormalizeURL(id, cwd) if (href === null) { return [null, null] } - const { tsTranspile } = this + const { context: { settings }, tsTranspile } = this let identity = this.identities.get(href) if (identity === void 0 || identity === "await") { const awaiting = identity === "await" @@ -750,7 +751,14 @@ export class ExternalLinkResolve const { code, requires } = await (await this.workerPool).exec( "parseAndRewriteRequire", - [{ code: ret.code, href }], + [ + { + code: ret.code, + href, + requireExpression: + `self[${escJSStr(settings.value.requireName)}]`, + }, + ], ) // eslint-disable-next-line require-atomic-updates ret.code = code diff --git a/sources/worker.ts b/sources/worker.ts index 7c73cae..1ab5af2 100644 --- a/sources/worker.ts +++ b/sources/worker.ts @@ -57,7 +57,8 @@ export async function parseAndRewriteRequire( input: parseAndRewriteRequire.Input, ): Promise { const { importable, escapeJavaScriptString } = await library, - { OPTIONS, SELF_REQUIRE_EXPRESSION } = parseAndRewriteRequire, + { OPTIONS } = parseAndRewriteRequire, + reqExpr = parseExpressionAt(input.requireExpression, 0, OPTIONS), requires: string[] = [], tree = parse(input.code, OPTIONS) simple(tree, { @@ -86,7 +87,7 @@ export async function parseAndRewriteRequire( } const value2 = normalizeURL(`${prefix}${value}`, input.href) if (value2 === null) { return } - node2.callee = SELF_REQUIRE_EXPRESSION + node2.callee = reqExpr arg0.raw = escapeJavaScriptString(value2) requires.push(arg0.value = value2) }, @@ -110,11 +111,10 @@ export namespace parseAndRewriteRequire { ranges: false, sourceType: "script", } - export const SELF_REQUIRE_EXPRESSION = - parseExpressionAt("self.require", 0, OPTIONS) export interface Input { readonly code: string readonly href: string + readonly requireExpression: string } export interface Output { readonly code: string