mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 05:10:44 +00:00
refactor(matrix): avoid jiti on packaged runtime path
This commit is contained in:
@@ -7,7 +7,6 @@
|
||||
"@matrix-org/matrix-sdk-crypto-nodejs": "^0.5.1",
|
||||
"@matrix-org/matrix-sdk-crypto-wasm": "18.2.0",
|
||||
"fake-indexeddb": "^6.2.5",
|
||||
"jiti": "^2.6.1",
|
||||
"markdown-it": "14.1.1",
|
||||
"matrix-js-sdk": "41.4.0",
|
||||
"music-metadata": "^11.12.3",
|
||||
|
||||
@@ -4,10 +4,9 @@
|
||||
import fs from "node:fs";
|
||||
import { createRequire } from "node:module";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { fileURLToPath, pathToFileURL } from "node:url";
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
const { createJiti } = require("jiti");
|
||||
|
||||
const PLUGIN_ID = "matrix";
|
||||
const OPENCLAW_PLUGIN_SDK_PACKAGE_NAMES = [
|
||||
@@ -17,6 +16,7 @@ const OPENCLAW_PLUGIN_SDK_PACKAGE_NAMES = [
|
||||
const PLUGIN_SDK_EXPORT_PREFIX = "./plugin-sdk/";
|
||||
const PLUGIN_SDK_SOURCE_EXTENSIONS = [".ts", ".mts", ".js", ".mjs", ".cts", ".cjs"];
|
||||
const PLUGIN_ENTRY_RUNTIME_BASENAME = "plugin-entry.handlers.runtime";
|
||||
const NATIVE_RUNTIME_EXTENSIONS = [".js", ".mjs", ".cjs"];
|
||||
const JITI_EXTENSIONS = [
|
||||
".ts",
|
||||
".tsx",
|
||||
@@ -169,14 +169,21 @@ function resolveBundledPluginRuntimeModulePath(moduleUrl, params) {
|
||||
);
|
||||
}
|
||||
|
||||
const jiti = createJiti(import.meta.url, {
|
||||
alias: buildPluginSdkAliasMap(import.meta.url),
|
||||
interopDefault: true,
|
||||
tryNative: false,
|
||||
extensions: JITI_EXTENSIONS,
|
||||
});
|
||||
async function loadRuntimeModule(modulePath) {
|
||||
if (NATIVE_RUNTIME_EXTENSIONS.includes(path.extname(modulePath))) {
|
||||
return import(pathToFileURL(modulePath).href);
|
||||
}
|
||||
const { createJiti } = require("jiti");
|
||||
const jiti = createJiti(import.meta.url, {
|
||||
alias: buildPluginSdkAliasMap(import.meta.url),
|
||||
interopDefault: true,
|
||||
tryNative: false,
|
||||
extensions: JITI_EXTENSIONS,
|
||||
});
|
||||
return jiti(modulePath);
|
||||
}
|
||||
|
||||
const mod = jiti(
|
||||
const mod = await loadRuntimeModule(
|
||||
resolveBundledPluginRuntimeModulePath(import.meta.url, {
|
||||
pluginId: PLUGIN_ID,
|
||||
runtimeBasename: PLUGIN_ENTRY_RUNTIME_BASENAME,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import fs from "node:fs";
|
||||
import { createRequire } from "node:module";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { pathToFileURL } from "node:url";
|
||||
@@ -7,8 +6,6 @@ import { afterEach, expect, it } from "vitest";
|
||||
|
||||
const tempDirs: string[] = [];
|
||||
const REPO_ROOT = process.cwd();
|
||||
const require = createRequire(import.meta.url);
|
||||
const JITI_ENTRY_PATH = require.resolve("jiti");
|
||||
const matrixWrapperGlobal = globalThis as typeof globalThis & {
|
||||
__openclawMatrixWrapperJitiOptions?: unknown;
|
||||
};
|
||||
@@ -40,14 +37,6 @@ function writeFixtureFile(fixtureRoot: string, relativePath: string, value: stri
|
||||
fs.writeFileSync(fullPath, value, "utf8");
|
||||
}
|
||||
|
||||
function writeJitiFixture(fixtureRoot: string) {
|
||||
writeFixtureFile(
|
||||
fixtureRoot,
|
||||
"node_modules/jiti/index.js",
|
||||
`module.exports = require(${JSON.stringify(JITI_ENTRY_PATH)});\n`,
|
||||
);
|
||||
}
|
||||
|
||||
function writeCapturingJitiFixture(fixtureRoot: string) {
|
||||
writeFixtureFile(
|
||||
fixtureRoot,
|
||||
@@ -143,7 +132,11 @@ function writeTrustedOpenClawBinFixture(
|
||||
writeFixtureFile(fixtureRoot, "dist/plugin-sdk/group-access.js", "export {};\n");
|
||||
}
|
||||
|
||||
function writeSourceRuntimeWrapperFixture(fixtureRoot: string) {
|
||||
function writeSourceRuntimeWrapperFixture(
|
||||
fixtureRoot: string,
|
||||
options: { runtimeExtension?: ".js" | ".ts" } = {},
|
||||
) {
|
||||
const runtimeExtension = options.runtimeExtension ?? ".js";
|
||||
writeFixtureFile(
|
||||
fixtureRoot,
|
||||
"extensions/matrix/src/plugin-entry.runtime.js",
|
||||
@@ -151,7 +144,7 @@ function writeSourceRuntimeWrapperFixture(fixtureRoot: string) {
|
||||
);
|
||||
writeFixtureFile(
|
||||
fixtureRoot,
|
||||
"extensions/matrix/plugin-entry.handlers.runtime.js",
|
||||
`extensions/matrix/plugin-entry.handlers.runtime${runtimeExtension}`,
|
||||
PACKAGED_RUNTIME_STUB,
|
||||
);
|
||||
}
|
||||
@@ -174,7 +167,7 @@ function writeCapturingSourceRuntimeWrapperFixture(fixtureRoot: string) {
|
||||
delete matrixWrapperGlobal.__openclawMatrixWrapperJitiOptions;
|
||||
writeOpenClawAliasFixture(fixtureRoot);
|
||||
writeCapturingJitiFixture(fixtureRoot);
|
||||
writeSourceRuntimeWrapperFixture(fixtureRoot);
|
||||
writeSourceRuntimeWrapperFixture(fixtureRoot, { runtimeExtension: ".ts" });
|
||||
}
|
||||
|
||||
function expectSourcePluginSdkAliases(fixtureRoot: string) {
|
||||
@@ -198,7 +191,6 @@ it("loads the source-checkout runtime wrapper through native ESM import", async
|
||||
const fixtureRoot = makeFixtureRoot(".tmp-matrix-source-runtime-");
|
||||
|
||||
writeOpenClawPackageFixture(fixtureRoot);
|
||||
writeJitiFixture(fixtureRoot);
|
||||
writeSourceRuntimeWrapperFixture(fixtureRoot);
|
||||
|
||||
expectRuntimeWrapperExports(
|
||||
@@ -210,7 +202,6 @@ it("loads the packaged runtime wrapper without recursing through the stable root
|
||||
const fixtureRoot = makeFixtureRoot(".tmp-matrix-runtime-");
|
||||
|
||||
writeOpenClawPackageFixture(fixtureRoot);
|
||||
writeJitiFixture(fixtureRoot);
|
||||
writeFixtureFile(
|
||||
fixtureRoot,
|
||||
"dist/plugin-entry.runtime-C88YIa_v.js",
|
||||
@@ -267,7 +258,7 @@ it("keeps wrapper plugin-sdk aliases deterministic and ignores unsafe subpaths",
|
||||
writeFixtureFile(fixtureRoot, "src/plugin-sdk/alpha.ts", "export {};\n");
|
||||
writeFixtureFile(fixtureRoot, "src/plugin-sdk/zeta.ts", "export {};\n");
|
||||
writeCapturingJitiFixture(fixtureRoot);
|
||||
writeSourceRuntimeWrapperFixture(fixtureRoot);
|
||||
writeSourceRuntimeWrapperFixture(fixtureRoot, { runtimeExtension: ".ts" });
|
||||
await importFixtureModule(fixtureRoot, "extensions/matrix/src/plugin-entry.runtime.js");
|
||||
|
||||
const aliasKeys = Object.keys(
|
||||
@@ -317,7 +308,7 @@ it("ignores nearby untrusted openclaw package stubs when resolving the wrapper r
|
||||
);
|
||||
writeFixtureFile(fixtureRoot, "extensions/src/plugin-sdk/group-access.ts", "export {};\n");
|
||||
writeCapturingJitiFixture(fixtureRoot);
|
||||
writeSourceRuntimeWrapperFixture(fixtureRoot);
|
||||
writeSourceRuntimeWrapperFixture(fixtureRoot, { runtimeExtension: ".ts" });
|
||||
await importFixtureModule(fixtureRoot, "extensions/matrix/src/plugin-entry.runtime.js");
|
||||
|
||||
expectSourcePluginSdkAliases(fixtureRoot);
|
||||
@@ -329,7 +320,7 @@ it("treats string bin hints case-insensitively when trusting wrapper package roo
|
||||
delete matrixWrapperGlobal.__openclawMatrixWrapperJitiOptions;
|
||||
writeTrustedOpenClawBinFixture(fixtureRoot, "OpenClaw.MJS");
|
||||
writeCapturingJitiFixture(fixtureRoot);
|
||||
writeSourceRuntimeWrapperFixture(fixtureRoot);
|
||||
writeSourceRuntimeWrapperFixture(fixtureRoot, { runtimeExtension: ".ts" });
|
||||
await importFixtureModule(fixtureRoot, "extensions/matrix/src/plugin-entry.runtime.js");
|
||||
|
||||
expect(matrixWrapperGlobal.__openclawMatrixWrapperJitiOptions).toMatchObject({
|
||||
|
||||
3
pnpm-lock.yaml
generated
3
pnpm-lock.yaml
generated
@@ -802,9 +802,6 @@ importers:
|
||||
fake-indexeddb:
|
||||
specifier: ^6.2.5
|
||||
version: 6.2.5
|
||||
jiti:
|
||||
specifier: ^2.6.1
|
||||
version: 2.6.1
|
||||
markdown-it:
|
||||
specifier: 14.1.1
|
||||
version: 14.1.1
|
||||
|
||||
Reference in New Issue
Block a user