From ec357a01302891bf2b16219627d7172ec0c71b4b Mon Sep 17 00:00:00 2001 From: gcfeng Date: Mon, 23 Dec 2024 16:10:52 +0800 Subject: [PATCH 01/11] fix: remove multiplatform --- .../taro-api/feat-taro-multi_2024-12-23-08-11.json | 11 +++++++++++ packages/coze-taro/src/event-source/request.ts | 13 ++++++++++++- packages/coze-taro/src/mixins/platform.ts | 11 ++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-08-11.json 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/packages/coze-taro/src/event-source/request.ts b/packages/coze-taro/src/event-source/request.ts index de9b31b3..6214e442 100644 --- a/packages/coze-taro/src/event-source/request.ts +++ b/packages/coze-taro/src/event-source/request.ts @@ -1,7 +1,18 @@ +import { getEnv } from '@tarojs/taro'; + import { Deferred } from '../helpers/async'; import { type RequestConfig, EventName } from './types'; +import { EventSource as EventSourceWeapp } from './index.weapp'; +import { EventSource as EventSourceTT } from './index.tt'; import { EventSource } from './index'; +const ES = + getEnv() === 'TT' + ? EventSourceTT + : getEnv() === 'WEAPP' + ? EventSourceWeapp + : EventSource; + export function sendRequest( config: RequestConfig, result: { @@ -14,7 +25,7 @@ export function sendRequest( result.deferred = new Deferred(); result.done = false; - const eventSource = new EventSource(config) + const eventSource = new ES(config) .on(EventName.Chunk, msg => { result.messages.push(msg.data as Message); result.deferred?.resolve(msg.data); diff --git a/packages/coze-taro/src/mixins/platform.ts b/packages/coze-taro/src/mixins/platform.ts index c0954596..faeb1a00 100644 --- a/packages/coze-taro/src/mixins/platform.ts +++ b/packages/coze-taro/src/mixins/platform.ts @@ -1,8 +1,17 @@ +import { getEnv } from '@tarojs/taro'; + import { type CozeAPI } from '../api'; +import { platformMixins as platformMixinsWeapp } from './platform.weapp'; +import { platformMixins as platformMixinsTT } from './platform.tt'; /** * Default implementation for multiple platforms, used only for type compatibility. */ -export function platformMixins(_: CozeAPI) { +export function platformMixins(api: CozeAPI) { + if (getEnv() === 'TT') { + return platformMixinsTT(api); + } else if (getEnv() === 'WEAPP') { + return platformMixinsWeapp(api); + } // donothing } From 2efe8d0d48a6a85d042c62df54d798e872e51965 Mon Sep 17 00:00:00 2001 From: gcfeng Date: Mon, 23 Dec 2024 21:08:42 +0800 Subject: [PATCH 02/11] docs: example --- .../feat-taro-multi_2024-12-23-13-09.json | 11 ++++++ examples/coze-js-taro3/config/index.ts | 18 +--------- packages/coze-taro/README.md | 36 ------------------- packages/coze-taro/test/setup.ts | 1 + 4 files changed, 13 insertions(+), 53 deletions(-) create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2024-12-23-13-09.json 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/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/packages/coze-taro/README.md b/packages/coze-taro/README.md index e29661fc..8071df90 100644 --- a/packages/coze-taro/README.md +++ b/packages/coze-taro/README.md @@ -144,42 +144,6 @@ cp .env.development .env.local # Edit .env.local with your credentials npm run dev:weapp ``` -## Notes -### Taro@3 + React -The following configuration is required: - -```javascript -export default defineConfig(() => { - compiler: { - type: 'webpack5', - prebundle: { - // 1. Don‘t prebundle '@coze/taro-api' - exclude: ['@coze/taro-api'], - }, - }, - - mini: { - 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; - }); - }, - }, - - h5: { - 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; - }); - }, - } -}); -``` - ## Documentation For detailed API documentation and guides, visit: diff --git a/packages/coze-taro/test/setup.ts b/packages/coze-taro/test/setup.ts index 05606af3..268d0c7b 100644 --- a/packages/coze-taro/test/setup.ts +++ b/packages/coze-taro/test/setup.ts @@ -7,4 +7,5 @@ vi.doMock('@tarojs/taro', () => ({ uploadFile: taroUploadFile, }, Events, + getEnv: () => 'TT', })); From 2c364253476658a15760e42009adafe1200ffbc1 Mon Sep 17 00:00:00 2001 From: gcfeng Date: Mon, 30 Dec 2024 19:18:24 +0800 Subject: [PATCH 03/11] fix: modify api --- .../feat-taro-multi_2024-12-30-11-19.json | 11 +++ .../coze-js-taro/src/pages/index/index.tsx | 68 +++++++++++++-- .../coze-js-taro3/src/pages/index/index.vue | 70 +++++++++++++-- packages/coze-taro/src/api.ts | 85 +++++++++++++++++++ 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/index.ts | 3 +- packages/coze-taro/test/api.h5.spec.ts | 34 -------- packages/coze-taro/test/setup.ts | 3 + 10 files changed, 222 insertions(+), 125 deletions(-) create mode 100644 common/changes/@coze/taro-api/feat-taro-multi_2024-12-30-11-19.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/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/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/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 @@