Browse Source

Chore: Add type files and unit test ci for Node.js SDK (#2268)

Co-authored-by: xieweicheng <xieweicheng@bytedance.com>
TseIan 1 year ago
parent
commit
0b8dcaba8f

+ 34 - 0
.github/workflows/tool-test-sdks.yaml

@@ -0,0 +1,34 @@
+name: Run Unit Test For SDKs
+
+on:
+  pull_request:
+    branches:
+      - main
+jobs:
+  build:
+    name: unit test for Node.js SDK
+    runs-on: ubuntu-latest
+
+    strategy:
+      matrix:
+        node-version: [16, 18, 20]
+
+    defaults:
+      run:
+        working-directory: sdks/nodejs-client
+
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Use Node.js ${{ matrix.node-version }}
+        uses: actions/setup-node@v4
+        with:
+          node-version: ${{ matrix.node-version }}
+          cache: ''
+          cache-dependency-path: 'yarn.lock'
+
+      - name: Install Dependencies
+        run: yarn install
+
+      - name: Test
+        run: yarn test

+ 71 - 0
sdks/nodejs-client/index.d.ts

@@ -0,0 +1,71 @@
+// Types.d.ts
+export const BASE_URL: string;
+
+export type RequestMethods = 'GET' | 'POST' | 'PATCH' | 'DELETE';
+
+interface Params {
+  [key: string]: any;
+}
+
+interface HeaderParams {
+  [key: string]: string;
+}
+
+interface User {
+}
+
+interface ChatMessageConfig {
+  inputs: any;
+  query: string;
+  user: User;
+  stream?: boolean;
+  conversation_id?: string | null;
+  files?: File[] | null;
+}
+
+export declare class DifyClient {
+  constructor(apiKey: string, baseUrl?: string);
+
+  updateApiKey(apiKey: string): void;
+
+  sendRequest(
+    method: RequestMethods,
+    endpoint: string,
+    data?: any,
+    params?: Params,
+    stream?: boolean,
+    headerParams?: HeaderParams
+  ): Promise<any>;  
+
+  messageFeedback(message_id: string, rating: number, user: User): Promise<any>;
+
+  getApplicationParameters(user: User): Promise<any>;
+
+  fileUpload(data: FormData): Promise<any>;
+}
+
+export declare class CompletionClient extends DifyClient {
+  createCompletionMessage(
+    inputs: any,
+    user: User,
+    stream?: boolean,
+    files?: File[] | null
+  ): Promise<any>;
+}
+
+export declare class ChatClient extends DifyClient {
+  createChatMessage(config: ChatMessageConfig): Promise<any>;
+
+  getConversationMessages(
+    user: User,
+    conversation_id?: string,
+    first_id?: string | null,
+    limit?: number | null
+  ): Promise<any>;
+
+  getConversations(user: User, first_id?: string | null, limit?: number | null, pinned?: boolean | null): Promise<any>;
+
+  renameConversation(conversation_id: string, name: string, user: User): Promise<any>;
+
+  deleteConversation(conversation_id: string, user: User): Promise<any>;
+}

+ 2 - 1
sdks/nodejs-client/package.json

@@ -1,9 +1,10 @@
 {
   "name": "dify-client",
-  "version": "2.2.0",
+  "version": "2.2.1",
   "description": "This is the Node.js SDK for the Dify.AI API, which allows you to easily integrate Dify.AI into your Node.js applications.",
   "main": "index.js",
   "type": "module",
+  "types":"index.d.ts",
   "keywords": [
     "Dify",
     "Dify.AI",