mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { createRequire } from "node:module";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
const require = createRequire(import.meta.url);
|
|
const rootSdk = require("./root-alias.cjs") as Record<string, unknown>;
|
|
|
|
type EmptySchema = {
|
|
safeParse: (value: unknown) =>
|
|
| { success: true; data?: unknown }
|
|
| {
|
|
success: false;
|
|
error: { issues: Array<{ path: Array<string | number>; message: string }> };
|
|
};
|
|
};
|
|
|
|
describe("plugin-sdk root alias", () => {
|
|
it("exposes the fast empty config schema helper", () => {
|
|
const factory = rootSdk.emptyPluginConfigSchema as (() => EmptySchema) | undefined;
|
|
expect(typeof factory).toBe("function");
|
|
if (!factory) {
|
|
return;
|
|
}
|
|
const schema = factory();
|
|
expect(schema.safeParse(undefined)).toEqual({ success: true, data: undefined });
|
|
expect(schema.safeParse({})).toEqual({ success: true, data: {} });
|
|
const parsed = schema.safeParse({ invalid: true });
|
|
expect(parsed.success).toBe(false);
|
|
});
|
|
|
|
it("loads legacy root exports lazily through the proxy", () => {
|
|
expect(typeof rootSdk.resolveControlCommandGate).toBe("function");
|
|
expect(typeof rootSdk.default).toBe("object");
|
|
expect(rootSdk.default).toBe(rootSdk);
|
|
expect(rootSdk.__esModule).toBe(true);
|
|
});
|
|
|
|
it("preserves reflection semantics for lazily resolved exports", () => {
|
|
expect("resolveControlCommandGate" in rootSdk).toBe(true);
|
|
const keys = Object.keys(rootSdk);
|
|
expect(keys).toContain("resolveControlCommandGate");
|
|
const descriptor = Object.getOwnPropertyDescriptor(rootSdk, "resolveControlCommandGate");
|
|
expect(descriptor).toBeDefined();
|
|
});
|
|
});
|