From d3f8585d5a5fd11424eb0b09afd151ade1520e68 Mon Sep 17 00:00:00 2001 From: gcfeng Date: Thu, 6 Feb 2025 10:22:29 +0800 Subject: [PATCH] feat: enhance multiple platform (#64) * fix: remove multiplatform * docs: example * fix: modify api * test: weapp * feat: expose response error * chore: Publish feat/taro-multi * test: fix testcase * chore: update version * chore: Publish feat/taro-multi * chore: fix version * chore: Publish feat/taro-multi --- .../api/feat-taro-multi_2025-02-06-01-53.json | 11 ++ .../feat-taro-multi_2024-12-23-08-11.json | 11 ++ .../feat-taro-multi_2024-12-23-13-09.json | 11 ++ .../feat-taro-multi_2024-12-30-11-19.json | 11 ++ .../feat-taro-multi_2024-12-31-02-23.json | 11 ++ .../feat-taro-multi_2025-01-22-10-14.json | 11 ++ .../feat-taro-multi_2025-02-05-03-02.json | 11 ++ .../feat-taro-multi_2025-02-05-07-16.json | 11 ++ .../feat-taro-multi_2025-02-06-01-53.json | 11 ++ .../coze-js-taro/src/pages/index/index.tsx | 68 +++++++++-- examples/coze-js-taro3/config/index.ts | 18 +-- .../coze-js-taro3/src/pages/index/index.vue | 70 ++++++++++-- packages/coze-js/package.json | 2 +- packages/coze-taro/README.md | 36 ------ packages/coze-taro/package.json | 5 +- packages/coze-taro/src/api.ts | 106 ++++++++++++++++++ packages/coze-taro/src/api/index.h5.ts | 26 ----- packages/coze-taro/src/api/index.ts | 39 ------- packages/coze-taro/src/api/types.ts | 8 -- packages/coze-taro/src/event-source/base.ts | 20 +++- .../coze-taro/src/event-source/index.tt.ts | 6 +- .../coze-taro/src/event-source/index.weapp.ts | 33 +++++- .../coze-taro/src/event-source/request.ts | 27 ++++- packages/coze-taro/src/index.ts | 3 +- packages/coze-taro/src/mixins/mixins.ts | 96 +++++++--------- packages/coze-taro/src/mixins/platform.ts | 11 +- packages/coze-taro/test/api.h5.spec.ts | 34 ------ packages/coze-taro/test/api.spec.ts | 20 +--- packages/coze-taro/test/request.spec.ts | 18 ++- packages/coze-taro/test/setup.ts | 9 +- packages/coze-taro/test/stubs.ts | 21 +++- 31 files changed, 495 insertions(+), 280 deletions(-) create mode 100644 common/changes/@coze/api/feat-taro-multi_2025-02-06-01-53.json create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-08-11.json create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-13-09.json create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2024-12-30-11-19.json create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2024-12-31-02-23.json create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2025-01-22-10-14.json create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2025-02-05-03-02.json create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2025-02-05-07-16.json create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2025-02-06-01-53.json create mode 100644 packages/coze-taro/src/api.ts delete mode 100644 packages/coze-taro/src/api/index.h5.ts delete mode 100644 packages/coze-taro/src/api/index.ts delete mode 100644 packages/coze-taro/src/api/types.ts delete mode 100644 packages/coze-taro/test/api.h5.spec.ts diff --git a/common/changes/@coze/api/feat-taro-multi_2025-02-06-01-53.json b/common/changes/@coze/api/feat-taro-multi_2025-02-06-01-53.json new file mode 100644 index 00000000..8ec89d1b --- /dev/null +++ b/common/changes/@coze/api/feat-taro-multi_2025-02-06-01-53.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze/api", + "comment": "fix version", + "type": "patch" + } + ], + "packageName": "@coze/api", + "email": "yjfengwen@foxmail.com" +} diff --git a/common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-08-11.json b/common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-08-11.json new file mode 100644 index 00000000..8ab30b1f --- /dev/null +++ b/common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-08-11.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze/taro-api", + "comment": "remove multiplatform", + "type": "patch" + } + ], + "packageName": "@coze/taro-api", + "email": "yjfengwen@foxmail.com" +} diff --git a/common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-13-09.json b/common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-13-09.json new file mode 100644 index 00000000..e37ae364 --- /dev/null +++ b/common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-13-09.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze/taro-api", + "comment": "example", + "type": "patch" + } + ], + "packageName": "@coze/taro-api", + "email": "yjfengwen@foxmail.com" +} diff --git a/common/changes/@coze/taro-api/feat-taro-multi_2024-12-30-11-19.json b/common/changes/@coze/taro-api/feat-taro-multi_2024-12-30-11-19.json new file mode 100644 index 00000000..b2be1c5d --- /dev/null +++ b/common/changes/@coze/taro-api/feat-taro-multi_2024-12-30-11-19.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze/taro-api", + "comment": "modify api", + "type": "patch" + } + ], + "packageName": "@coze/taro-api", + "email": "yjfengwen@foxmail.com" +} diff --git a/common/changes/@coze/taro-api/feat-taro-multi_2024-12-31-02-23.json b/common/changes/@coze/taro-api/feat-taro-multi_2024-12-31-02-23.json new file mode 100644 index 00000000..90a9ddb0 --- /dev/null +++ b/common/changes/@coze/taro-api/feat-taro-multi_2024-12-31-02-23.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze/taro-api", + "comment": "weapp", + "type": "patch" + } + ], + "packageName": "@coze/taro-api", + "email": "yjfengwen@foxmail.com" +} diff --git a/common/changes/@coze/taro-api/feat-taro-multi_2025-01-22-10-14.json b/common/changes/@coze/taro-api/feat-taro-multi_2025-01-22-10-14.json new file mode 100644 index 00000000..f6314af7 --- /dev/null +++ b/common/changes/@coze/taro-api/feat-taro-multi_2025-01-22-10-14.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze/taro-api", + "comment": "expose response error", + "type": "minor" + } + ], + "packageName": "@coze/taro-api", + "email": "yjfengwen@foxmail.com" +} diff --git a/common/changes/@coze/taro-api/feat-taro-multi_2025-02-05-03-02.json b/common/changes/@coze/taro-api/feat-taro-multi_2025-02-05-03-02.json new file mode 100644 index 00000000..2fdedb42 --- /dev/null +++ b/common/changes/@coze/taro-api/feat-taro-multi_2025-02-05-03-02.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze/taro-api", + "comment": "fix testcase", + "type": "patch" + } + ], + "packageName": "@coze/taro-api", + "email": "yjfengwen@foxmail.com" +} diff --git a/common/changes/@coze/taro-api/feat-taro-multi_2025-02-05-07-16.json b/common/changes/@coze/taro-api/feat-taro-multi_2025-02-05-07-16.json new file mode 100644 index 00000000..2db4f32f --- /dev/null +++ b/common/changes/@coze/taro-api/feat-taro-multi_2025-02-05-07-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze/taro-api", + "comment": "update version", + "type": "patch" + } + ], + "packageName": "@coze/taro-api", + "email": "yjfengwen@foxmail.com" +} diff --git a/common/changes/@coze/taro-api/feat-taro-multi_2025-02-06-01-53.json b/common/changes/@coze/taro-api/feat-taro-multi_2025-02-06-01-53.json new file mode 100644 index 00000000..1ee0dd81 --- /dev/null +++ b/common/changes/@coze/taro-api/feat-taro-multi_2025-02-06-01-53.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@coze/taro-api", + "comment": "fix version", + "type": "patch" + } + ], + "packageName": "@coze/taro-api", + "email": "yjfengwen@foxmail.com" +} diff --git a/examples/coze-js-taro/src/pages/index/index.tsx b/examples/coze-js-taro/src/pages/index/index.tsx index b9171ad6..fa601721 100644 --- a/examples/coze-js-taro/src/pages/index/index.tsx +++ b/examples/coze-js-taro/src/pages/index/index.tsx @@ -1,13 +1,15 @@ import { useState, useRef } from 'react'; import { useLoad } from '@tarojs/taro'; -import { View, Text, Button } from '@tarojs/components'; +import { View, Text, Button, Switch } from '@tarojs/components'; import { CozeAPI, AbortController } from '@coze/taro-api'; import { RoleType, ChatEventType } from '@coze/api'; import './index.css'; export default function Index() { - const [message, setMessage] = useState(''); + const [streaming, setStreaming] = useState(true); + const [streamingMessage, setStreamingMessage] = useState(''); + const [pollingMessage, setPollingMessage] = useState(''); const clientRef = useRef(null); useLoad(() => { @@ -18,9 +20,9 @@ export default function Index() { }); }); - const handleClick = async () => { + const handleStreamingChat = async () => { if (clientRef.current) { - setMessage(''); + setStreamingMessage(''); try { const controller = new AbortController(); // setTimeout(() => { @@ -41,7 +43,7 @@ export default function Index() { ); for await (const chunk of res) { if (chunk.event === ChatEventType.CONVERSATION_MESSAGE_DELTA) { - setMessage(msg => msg + chunk.data.content); + setStreamingMessage(msg => msg + chunk.data.content); } console.log(chunk); } @@ -51,10 +53,62 @@ export default function Index() { } }; + const handlePollingChat = async () => { + if (clientRef.current) { + setPollingMessage(''); + try { + const controller = new AbortController(); + // setTimeout(() => { + // controller.abort(); + // }, 10); + + const { messages = [] } = await clientRef.current.chat.createAndPoll( + { + bot_id: process.env.TARO_APP_COZE_BOT_ID ?? '', + user_id: 'abc', + additional_messages: [ + { role: RoleType.User, content: 'hello', content_type: 'text' }, + ], + }, + { + signal: controller.signal, + }, + ); + setPollingMessage( + (messages || []).reduce((acc, cur) => { + if (cur.type === 'answer') { + acc += cur.content; + } + return acc; + }, ''), + ); + console.log('messages: ', messages); + } catch (e) { + console.log('failed: ', e); + } + } + }; + return ( - - {message} + + setStreaming(evt.detail.value)} + /> + {streaming ? 'streaming' : 'polling'} + + {streaming ? ( + <> + + {streamingMessage} + + ) : ( + <> + + {pollingMessage} + + )} ); } diff --git a/examples/coze-js-taro3/config/index.ts b/examples/coze-js-taro3/config/index.ts index c260c125..33c3cb64 100644 --- a/examples/coze-js-taro3/config/index.ts +++ b/examples/coze-js-taro3/config/index.ts @@ -25,13 +25,7 @@ export default defineConfig(async merge => { options: {}, }, framework: 'vue3', - compiler: { - type: 'webpack5', - prebundle: { - // 1. Don‘t prebundle '@coze/taro-api' - exclude: ['@coze/taro-api'], - }, - }, + compiler: 'webpack5', cache: { enable: false, }, @@ -56,11 +50,6 @@ export default defineConfig(async merge => { }, }, webpackChain(chain) { - // 2. Enable multi-platform support for '@coze/taro-api' - chain.resolve.plugin('MultiPlatformPlugin').tap(args => { - args[2]['include'] = ['@coze/taro-api']; - return args; - }); chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin); chain.module .rule('taroApiBabel') @@ -100,11 +89,6 @@ export default defineConfig(async merge => { }, }, webpackChain(chain) { - // 2. Enable multi-platform support for '@coze/taro-api' - chain.resolve.plugin('MultiPlatformPlugin').tap(args => { - args[2]['include'] = ['@coze/taro-api']; - return args; - }); chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin); chain.module .rule('taroApiBabel') diff --git a/examples/coze-js-taro3/src/pages/index/index.vue b/examples/coze-js-taro3/src/pages/index/index.vue index 2cdd2eec..2cad9030 100644 --- a/examples/coze-js-taro3/src/pages/index/index.vue +++ b/examples/coze-js-taro3/src/pages/index/index.vue @@ -1,12 +1,21 @@