oasis-chat 0.2.11 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -19
- package/dist/index.cjs.js +1 -134
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.es.js +13 -2756
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1 -134
- package/dist/index.umd.js.map +1 -1
- package/dist/oasis-chat.css +1 -1
- package/dist/react/index.cjs.js +1 -134
- package/dist/react/index.cjs.js.map +1 -1
- package/dist/react/index.d.ts +5 -4
- package/dist/react/index.es.js +24 -2767
- package/dist/react/index.es.js.map +1 -1
- package/dist/react/oasis-chat.css +1 -1
- package/dist/vue/index.cjs.js +1 -136
- package/dist/vue/index.cjs.js.map +1 -1
- package/dist/vue/index.d.ts +7 -6
- package/dist/vue/index.es.js +28 -2774
- package/dist/vue/index.es.js.map +1 -1
- package/dist/vue/oasis-chat.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
`createButton`을 제공하는 가벼운 바닐라 JS 채팅 버튼 컴포넌트입니다. React와 Vue를 위한 wrapper 컴포넌트도 제공됩니다.
|
|
4
4
|
|
|
5
|
+
**현재 버전:** `0.3.0`
|
|
6
|
+
|
|
7
|
+
## 주요 기능
|
|
8
|
+
|
|
9
|
+
- 💬 **실시간 스트리밍 채팅**: SSE(Server-Sent Events)를 통한 실시간 응답 스트리밍
|
|
10
|
+
- 🔐 **자동 로그인**: 계정 정보 제공 시 버튼 생성과 동시에 자동 로그인
|
|
11
|
+
- 🎨 **반응형 UI**: 모던하고 세련된 사용자 인터페이스
|
|
12
|
+
- 🔄 **토글 패널**: 버튼 클릭으로 채팅 패널 열기/닫기
|
|
13
|
+
- 📱 **외부 클릭 감지**: 패널 외부 클릭 시 자동으로 패널 닫기
|
|
14
|
+
- 📝 **메시지 히스토리**: 이전 대화 기록 관리
|
|
15
|
+
- 🚀 **다중 프레임워크 지원**: Vanilla JS, React, Vue 지원
|
|
16
|
+
- 📦 **TypeScript 지원**: 완전한 TypeScript 타입 정의 제공
|
|
17
|
+
- 🎯 **경량화**: 최소한의 의존성으로 가벼운 번들 사이즈
|
|
18
|
+
|
|
5
19
|
## 설치
|
|
6
20
|
|
|
7
21
|
```bash
|
|
@@ -12,6 +26,13 @@ npm install oasis-chat
|
|
|
12
26
|
|
|
13
27
|
이 라이브러리는 내부적으로 [axios](https://axios-http.com/)를 사용합니다. axios는 자동으로 설치됩니다.
|
|
14
28
|
|
|
29
|
+
### Peer Dependencies
|
|
30
|
+
|
|
31
|
+
React 또는 Vue를 사용하는 경우, 해당 프레임워크가 프로젝트에 설치되어 있어야 합니다:
|
|
32
|
+
|
|
33
|
+
- **React**: `^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || >=20.0.0`
|
|
34
|
+
- **Vue**: `^3.0.0`
|
|
35
|
+
|
|
15
36
|
## 프록시 설정
|
|
16
37
|
|
|
17
38
|
이 라이브러리는 `/oasis` 경로로 API 요청을 보냅니다. CORS 문제를 해결하기 위해 프로젝트의 개발 서버나 프록시에서 `/oasis` 경로를 프록시하도록 설정해야 합니다.
|
|
@@ -29,11 +50,11 @@ export default {
|
|
|
29
50
|
target: 'https://oasis-dev.haiqv.ai',
|
|
30
51
|
changeOrigin: true,
|
|
31
52
|
secure: true,
|
|
32
|
-
rewrite:
|
|
53
|
+
rewrite: path => path.replace(/^\/oasis/, '/api'),
|
|
33
54
|
},
|
|
34
55
|
},
|
|
35
56
|
},
|
|
36
|
-
}
|
|
57
|
+
}
|
|
37
58
|
```
|
|
38
59
|
|
|
39
60
|
#### Next.js
|
|
@@ -47,16 +68,16 @@ module.exports = {
|
|
|
47
68
|
source: '/oasis/:path*',
|
|
48
69
|
destination: 'https://oasis-dev.haiqv.ai/api/:path*',
|
|
49
70
|
},
|
|
50
|
-
]
|
|
71
|
+
]
|
|
51
72
|
},
|
|
52
|
-
}
|
|
73
|
+
}
|
|
53
74
|
```
|
|
54
75
|
|
|
55
76
|
#### Create React App
|
|
56
77
|
|
|
57
78
|
```javascript
|
|
58
79
|
// src/setupProxy.js (또는 package.json에 "proxy" 설정)
|
|
59
|
-
const { createProxyMiddleware } = require('http-proxy-middleware')
|
|
80
|
+
const { createProxyMiddleware } = require('http-proxy-middleware')
|
|
60
81
|
|
|
61
82
|
module.exports = function (app) {
|
|
62
83
|
app.use(
|
|
@@ -67,9 +88,9 @@ module.exports = function (app) {
|
|
|
67
88
|
pathRewrite: {
|
|
68
89
|
'^/oasis': '/api',
|
|
69
90
|
},
|
|
70
|
-
})
|
|
71
|
-
)
|
|
72
|
-
}
|
|
91
|
+
}),
|
|
92
|
+
)
|
|
93
|
+
}
|
|
73
94
|
```
|
|
74
95
|
|
|
75
96
|
## 사용 예시
|
|
@@ -79,7 +100,7 @@ module.exports = function (app) {
|
|
|
79
100
|
React 프로젝트에서 사용할 때는 wrapper 컴포넌트를 사용하면 CSS를 별도로 import할 필요가 없습니다.
|
|
80
101
|
|
|
81
102
|
```tsx
|
|
82
|
-
import { OasisButton } from 'oasis-chat/react'
|
|
103
|
+
import { OasisButton } from 'oasis-chat/react'
|
|
83
104
|
|
|
84
105
|
function App() {
|
|
85
106
|
return (
|
|
@@ -88,7 +109,7 @@ function App() {
|
|
|
88
109
|
password="your-password"
|
|
89
110
|
assistant_uuid="your-assistant-uuid"
|
|
90
111
|
/>
|
|
91
|
-
)
|
|
112
|
+
)
|
|
92
113
|
}
|
|
93
114
|
```
|
|
94
115
|
|
|
@@ -98,7 +119,7 @@ Vue 프로젝트에서 사용할 때도 wrapper 컴포넌트를 사용하면 CSS
|
|
|
98
119
|
|
|
99
120
|
```vue
|
|
100
121
|
<script setup>
|
|
101
|
-
import { OasisButton } from 'oasis-chat/vue'
|
|
122
|
+
import { OasisButton } from 'oasis-chat/vue'
|
|
102
123
|
</script>
|
|
103
124
|
|
|
104
125
|
<template>
|
|
@@ -115,25 +136,65 @@ import { OasisButton } from 'oasis-chat/vue';
|
|
|
115
136
|
바닐라 JavaScript나 다른 프레임워크에서 사용할 때는 CSS를 수동으로 import해야 합니다.
|
|
116
137
|
|
|
117
138
|
```js
|
|
118
|
-
import { createButton } from 'oasis-chat'
|
|
119
|
-
import 'oasis-chat/style.css'
|
|
139
|
+
import { createButton } from 'oasis-chat'
|
|
140
|
+
import 'oasis-chat/style.css' // CSS 파일 import 필요
|
|
120
141
|
|
|
121
142
|
const btn = createButton({
|
|
122
143
|
account_id: 'your-account-id',
|
|
123
144
|
password: 'your-password',
|
|
124
145
|
assistant_uuid: 'your-assistant-uuid',
|
|
125
|
-
})
|
|
146
|
+
})
|
|
126
147
|
|
|
127
|
-
document.body.appendChild(btn)
|
|
148
|
+
document.body.appendChild(btn)
|
|
128
149
|
```
|
|
129
150
|
|
|
130
151
|
**참고**: React나 Vue wrapper를 사용할 때는 CSS를 별도로 import할 필요가 없습니다. wrapper 컴포넌트 내부에서 자동으로 CSS가 포함됩니다.
|
|
131
152
|
|
|
132
|
-
##
|
|
153
|
+
## API
|
|
154
|
+
|
|
155
|
+
### `createButton(options)`
|
|
156
|
+
|
|
157
|
+
채팅 버튼을 생성하고 반환합니다.
|
|
158
|
+
|
|
159
|
+
#### Parameters
|
|
160
|
+
|
|
161
|
+
- `options.account_id` (string, 선택): 로그인에 사용할 계정 ID. 제공된 경우 버튼 생성 시 자동으로 로그인을 시도합니다.
|
|
162
|
+
- `options.password` (string, 선택): 로그인에 사용할 비밀번호. `account_id`와 함께 제공되어야 합니다.
|
|
163
|
+
- `options.assistant_uuid` (string, 필수): 채팅에 사용할 어시스턴트 UUID
|
|
133
164
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
- `
|
|
165
|
+
#### Returns
|
|
166
|
+
|
|
167
|
+
- `HTMLElement`: 생성된 버튼 컨테이너 요소
|
|
168
|
+
|
|
169
|
+
#### Notes
|
|
170
|
+
|
|
171
|
+
- `account_id`와 `password`를 제공하지 않으면 버튼이 생성되지만 로그인은 수행되지 않습니다.
|
|
172
|
+
- 버튼은 싱글톤 패턴으로 관리되며, 여러 번 호출해도 하나의 인스턴스만 존재합니다.
|
|
173
|
+
- 버튼 클릭 시 채팅 패널이 토글됩니다.
|
|
174
|
+
|
|
175
|
+
### React 컴포넌트: `OasisButton`
|
|
176
|
+
|
|
177
|
+
#### Props
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
interface OasisButtonProps {
|
|
181
|
+
account_id: string
|
|
182
|
+
password: string
|
|
183
|
+
assistant_uuid: string
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Vue 컴포넌트: `OasisButton`
|
|
188
|
+
|
|
189
|
+
#### Props
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
{
|
|
193
|
+
account_id: string
|
|
194
|
+
password: string
|
|
195
|
+
assistant_uuid: string
|
|
196
|
+
}
|
|
197
|
+
```
|
|
137
198
|
|
|
138
199
|
## 개발/빌드
|
|
139
200
|
|
|
@@ -149,6 +210,61 @@ npm run build:lib # 라이브러리 빌드 (Vanilla JS, React, Vue 모두
|
|
|
149
210
|
- `vue/index.*.js` - Vue wrapper 버전
|
|
150
211
|
- `oasis-chat.css` - 스타일시트
|
|
151
212
|
|
|
213
|
+
## 브라우저 호환성
|
|
214
|
+
|
|
215
|
+
이 라이브러리는 다음 브라우저를 지원합니다:
|
|
216
|
+
|
|
217
|
+
- Chrome (최신 2 버전)
|
|
218
|
+
- Firefox (최신 2 버전)
|
|
219
|
+
- Safari (최신 2 버전)
|
|
220
|
+
- Edge (최신 2 버전)
|
|
221
|
+
|
|
222
|
+
**최소 요구사항:**
|
|
223
|
+
|
|
224
|
+
- ES2015+ 지원
|
|
225
|
+
- Fetch API 또는 axios를 통한 HTTP 요청 지원
|
|
226
|
+
- Server-Sent Events (SSE) 지원
|
|
227
|
+
|
|
228
|
+
## 문제 해결
|
|
229
|
+
|
|
230
|
+
### CORS 오류
|
|
231
|
+
|
|
232
|
+
CORS 오류가 발생하는 경우, 프록시 설정 섹션을 참고하여 개발 서버에 프록시를 설정하세요.
|
|
233
|
+
|
|
234
|
+
### CSS가 적용되지 않음
|
|
235
|
+
|
|
236
|
+
Vanilla JS를 사용하는 경우 CSS를 명시적으로 import해야 합니다:
|
|
237
|
+
|
|
238
|
+
```js
|
|
239
|
+
import 'oasis-chat/style.css'
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
React나 Vue wrapper를 사용하는 경우 자동으로 CSS가 포함되므로 별도 import가 필요 없습니다.
|
|
243
|
+
|
|
244
|
+
### 로그인 실패
|
|
245
|
+
|
|
246
|
+
`account_id`와 `password`가 올바르게 제공되었는지 확인하세요. 네트워크 탭에서 API 요청이 제대로 전송되는지 확인할 수 있습니다.
|
|
247
|
+
|
|
248
|
+
### 스트리밍 응답이 작동하지 않음
|
|
249
|
+
|
|
250
|
+
브라우저가 Server-Sent Events (SSE)를 지원하는지 확인하세요. 최신 브라우저는 모두 SSE를 지원합니다.
|
|
251
|
+
|
|
252
|
+
### React/Vue 컴포넌트가 렌더링되지 않음
|
|
253
|
+
|
|
254
|
+
필수 peer dependencies가 설치되어 있는지 확인하세요:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# React 사용 시
|
|
258
|
+
npm install react react-dom
|
|
259
|
+
|
|
260
|
+
# Vue 사용 시
|
|
261
|
+
npm install vue
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## 기여하기
|
|
265
|
+
|
|
266
|
+
버그 리포트나 기능 제안은 GitHub Issues를 통해 제출해주세요.
|
|
267
|
+
|
|
152
268
|
## 라이선스
|
|
153
269
|
|
|
154
270
|
MIT
|