UNPKG

@coze/uniapp-api

Version:

Official Coze UniApp SDK for seamless AI integration into your applications | 扣子官方 UniApp SDK,助您轻松集成 AI 能力到应用中

125 lines (124 loc) 5.53 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CozeAPI = void 0; /* eslint-disable @typescript-eslint/no-magic-numbers -- ignore */ /* eslint-disable @typescript-eslint/no-invalid-void-type -- ignore */ /* eslint-disable @typescript-eslint/no-explicit-any -- ignore */ const axios_1 = __importDefault(require("axios")); const api_1 = require("@coze/api"); const integrator_1 = require("./ws-tool/websocket/integrator"); const shared_1 = require("./mixins/shared"); const platform_1 = require("./mixins/platform"); /** * Coze API for UniApp * 针对UniApp环境的Coze API实现 */ class CozeAPI extends api_1.CozeAPI { constructor(options) { super(Object.assign({}, options)); Object.defineProperty(this, "options", { enumerable: true, configurable: true, writable: true, value: options }); // 注册 WebSocket 适配器 // 这确保了 client.websockets.chat.create() 等高级 API 可以正常工作 (0, integrator_1.registerUniAppWebSocket)(); this.axiosInstance = axios_1.default.create({ adapter: this.getAdapter(), }); this.axiosInstance.interceptors.request.use((config) => __awaiter(this, void 0, void 0, function* () { var _a; if (this.options.onBeforeAPICall) { const res = (_a = (yield this.options.onBeforeAPICall(config))) !== null && _a !== void 0 ? _a : {}; if (res === null || res === void 0 ? void 0 : res.token) { this.token = res.token; config.headers.Authorization = `Bearer ${res.token}`; } } return config; })); this.applyMixins(); } /** * 获取适配器 * 根据环境返回对应的适配器,web环境使用默认适配器,非web环境使用UniApp适配器 */ getAdapter() { // 使用uni-app的方式检测环境 if (typeof uni === 'undefined' || uni.getSystemInfoSync().uniPlatform === 'web') { return undefined; } // UniApp适配器,将axios请求适配到uni.request const uniAdapter = config => { const { url, method, data, headers, timeout } = config; const header = typeof headers.toJSON === 'function' ? headers.toJSON() : headers; header['Content-Type'] = header['Content-Type'] || 'application/json'; return new Promise((resolve, reject) => { uni.request({ url: url, method: (method !== null && method !== void 0 ? method : 'GET').toUpperCase(), data, header, timeout, success: (res) => { var _a, _b; // 请求失败处理 if (res.statusCode !== 200 || ((_a = res.data) === null || _a === void 0 ? void 0 : _a.code)) { const resData = res.data || {}; resData.error = resData.error || resData.detail || {}; const resHeader = res.header || {}; resHeader['x-tt-logid'] = resHeader['X-Tt-Logid'] || resHeader['x-tt-logid'] || resData.error.logid; const error = api_1.APIError.generate(res.statusCode, resData, res.errMsg, resHeader); reject(error); } else { // 请求成功处理 resolve({ data: res.data, status: res.statusCode, statusText: (_b = res.errMsg) !== null && _b !== void 0 ? _b : '', headers: res.header, config, }); } }, fail: (err) => { reject(err); }, }); }); }; return uniAdapter; } /** * 应用混入 * 非web环境下应用混入 */ applyMixins() { // 使用uni-app的方式检测环境 if (typeof uni !== 'undefined' && uni.getSystemInfoSync().uniPlatform !== 'web') { (0, shared_1.sharedMixins)(this); (0, platform_1.platformMixins)(this); } } } exports.CozeAPI = CozeAPI;