From b89d46a8e1cc0f1684aa7b878130d1e1c7096c9d Mon Sep 17 00:00:00 2001 From: Kaito Date: Mon, 6 Jan 2025 02:25:03 +0800 Subject: [PATCH] feat:add tsup.config.ts file --- packages/plugin-twitter-search/src/index.ts | 44 +++++++++++++------ packages/plugin-twitter-search/tsconfig.json | 5 ++- packages/plugin-twitter-search/tsup.config.ts | 9 ++++ 3 files changed, 44 insertions(+), 14 deletions(-) create mode 100644 packages/plugin-twitter-search/tsup.config.ts diff --git a/packages/plugin-twitter-search/src/index.ts b/packages/plugin-twitter-search/src/index.ts index 8d8c4fc9d4..d86bcf5d10 100644 --- a/packages/plugin-twitter-search/src/index.ts +++ b/packages/plugin-twitter-search/src/index.ts @@ -1,4 +1,4 @@ -import { Plugin, IAgentRuntime, elizaLogger } from "@elizaos/core"; +import { Plugin, IAgentRuntime, elizaLogger, Service, ServiceType } from "@elizaos/core"; import { TwitterApiClient } from "./client"; import { validateTwitterApiConfig } from "./environment"; @@ -6,22 +6,40 @@ export * from "./types"; export { TwitterApiClient } from "./client"; export { validateTwitterApiConfig } from "./environment"; -export const TwitterApiPlugin: Plugin = { +class TwitterApiService extends Service { + static serviceType = "TWITTER_SEARCH_API" as ServiceType; + public client!: TwitterApiClient; + + async initialize(runtime: IAgentRuntime) { + const config = await validateTwitterApiConfig(runtime); + this.client = new TwitterApiClient(config); + elizaLogger.info("Twitter API Service: Initialized successfully"); + } + + async cleanup() { + // 清理资源的逻辑 + elizaLogger.info("Twitter API Service: Cleaning up..."); + } + + getClient() { + return this.client; + } +} + +export const TwitterApiPlugin = { name: "twitter-api", - + description: "Twitter API integration using twitterapi.io service", + async init(runtime: IAgentRuntime) { try { - const config = await validateTwitterApiConfig(runtime); - const apiClient = new TwitterApiClient(config); - - // Register the client to be available for other components - runtime.registerService("twitterApi", apiClient); - - elizaLogger.info("Twitter API Plugin: Initialized successfully"); - + // 使用标准的 Service 类注册方式 + const twitterService = new TwitterApiService(); + await twitterService.initialize(runtime); + runtime.registerService(twitterService); + return { async cleanup() { - elizaLogger.info("Twitter API Plugin: Cleaning up..."); + await twitterService.cleanup(); } }; } catch (error) { @@ -29,6 +47,6 @@ export const TwitterApiPlugin: Plugin = { throw error; } } -} +} as Plugin; export default TwitterApiPlugin; diff --git a/packages/plugin-twitter-search/tsconfig.json b/packages/plugin-twitter-search/tsconfig.json index 6aec94e81f..a7221e0376 100644 --- a/packages/plugin-twitter-search/tsconfig.json +++ b/packages/plugin-twitter-search/tsconfig.json @@ -6,7 +6,10 @@ "ES2021", "DOM" ], - "types": ["jest", "@jest/globals"], + "types": [ + "jest", + "@types/jest" + ], "declaration": true, "outDir": "./dist", "strict": true, diff --git a/packages/plugin-twitter-search/tsup.config.ts b/packages/plugin-twitter-search/tsup.config.ts new file mode 100644 index 0000000000..d0feddf74a --- /dev/null +++ b/packages/plugin-twitter-search/tsup.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entry: ['src/index.ts'], + format: ['cjs', 'esm'], + dts: true, + clean: true, + sourcemap: true +}); \ No newline at end of file