feat(script/jsx): support import syntax for api

This commit is contained in:
Elian Doran 2025-12-20 22:23:25 +02:00
parent 6c1b327f5f
commit e0416097e1
No known key found for this signature in database
2 changed files with 19 additions and 1 deletions

View File

@ -146,7 +146,7 @@ describe("JSX building", () => {
expect(buildJsx(script).code).toStrictEqual(expected);
});
it("rewrite React API imports", () => {
it("rewrites React API imports", () => {
const script = trimIndentation`\
import { defineWidget, RightPanelWidget} from "trilium:preact";
defineWidget({
@ -163,6 +163,18 @@ describe("JSX building", () => {
}
});
`;
expect(buildJsx(script).code).toStrictEqual(expected);
});
it("rewrites internal API imports", () => {
const script = trimIndentation`\
import { log } from "trilium:api";
log("Hi");
`;
const expected = trimIndentation`\
"use strict";const _triliumapi = api;
_triliumapi.log.call(void 0, "Hi");
`;
console.log(buildJsx(script).code);
expect(buildJsx(script).code).toStrictEqual(expected);
});

View File

@ -240,6 +240,12 @@ export function buildJsx(contentRaw: string | Buffer) {
'const $1 = api.preact;'
);
// Rewrite ESM-like imports to internal API, to `const { foo } = api.preact`
code = code.replaceAll(
/var\s+(\w+)\s*=\s*require\(['"]trilium:api['"]\);?/g,
'const $1 = api;'
);
output.code = code;
return output;
}