oasis-chat 0.1.1 → 0.1.3
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 +21 -0
- package/dist/index.cjs.js +1 -29
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +77 -105
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1 -29
- package/dist/index.umd.js.map +1 -1
- package/dist/react/index.cjs.js +1 -29
- package/dist/react/index.cjs.js.map +1 -1
- package/dist/react/index.es.js +64 -92
- package/dist/react/index.es.js.map +1 -1
- package/dist/sw.js +52 -0
- package/dist/vue/index.cjs.js +1 -29
- package/dist/vue/index.cjs.js.map +1 -1
- package/dist/vue/index.es.js +78 -106
- package/dist/vue/index.es.js.map +1 -1
- package/package.json +4 -3
package/dist/react/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
|
2
2
|
import './oasis-chat.css';
|
|
3
3
|
|
|
4
4
|
import { useRef as A, useEffect as T } from "react";
|
|
@@ -94,7 +94,7 @@ function h(n = {}) {
|
|
|
94
94
|
e && (e.isAuthenticated !== void 0 && (r.isAuthenticated = e.isAuthenticated), e.isTempPwLogin !== void 0 && (r.isTempPwLogin = e.isTempPwLogin), e.accountId !== void 0 && (r.accountId = e.accountId), e.currentWorkspace !== void 0 && (r.currentWorkspace = e.currentWorkspace), r.isHydrated = !0, u({ isHydrated: !0 }));
|
|
95
95
|
}
|
|
96
96
|
s();
|
|
97
|
-
function
|
|
97
|
+
function i(e) {
|
|
98
98
|
t = e;
|
|
99
99
|
}
|
|
100
100
|
function H(e) {
|
|
@@ -199,7 +199,7 @@ function h(n = {}) {
|
|
|
199
199
|
if (f)
|
|
200
200
|
c = await f.refresh();
|
|
201
201
|
else if (t) {
|
|
202
|
-
const v = await t.post("/
|
|
202
|
+
const v = await t.post("/oasis/auth/user/refresh");
|
|
203
203
|
c = ((e = v.data) == null ? void 0 : e.data) || v.data;
|
|
204
204
|
}
|
|
205
205
|
return c != null && c.exp ? (u({ exp: c.exp }), !0) : !1;
|
|
@@ -245,7 +245,7 @@ function h(n = {}) {
|
|
|
245
245
|
}
|
|
246
246
|
return {
|
|
247
247
|
getState: w,
|
|
248
|
-
setHttpClient:
|
|
248
|
+
setHttpClient: i,
|
|
249
249
|
setPortalClient: H,
|
|
250
250
|
clearAuth: a
|
|
251
251
|
};
|
|
@@ -300,9 +300,9 @@ function q(n) {
|
|
|
300
300
|
...e.headers || {}
|
|
301
301
|
};
|
|
302
302
|
P != null && P.workspaceId && (x["current-workspace-id"] = P.workspaceId.toString()), P != null && P.workspaceUuid && (x["current-workspace-uuid"] = P.workspaceUuid);
|
|
303
|
-
const D = (e.method || "GET").toUpperCase(),
|
|
303
|
+
const D = (e.method || "GET").toUpperCase(), G = D === "GET" || D === "POST" || D === "PUT" ? 6e5 : void 0;
|
|
304
304
|
try {
|
|
305
|
-
const z = await (
|
|
305
|
+
const z = await (G ? (o, j) => V(o, j, G) : fetch)(c, {
|
|
306
306
|
...e,
|
|
307
307
|
method: D,
|
|
308
308
|
headers: x,
|
|
@@ -312,22 +312,22 @@ function q(n) {
|
|
|
312
312
|
});
|
|
313
313
|
if (!z.ok) {
|
|
314
314
|
if (e.errorHandle !== void 0 && e.errorHandle === !1) {
|
|
315
|
-
const
|
|
316
|
-
throw
|
|
315
|
+
const j = new Error(`HTTP error! status: ${z.status}`);
|
|
316
|
+
throw j.response = {
|
|
317
317
|
status: z.status,
|
|
318
318
|
data: await z.json().catch(() => null)
|
|
319
|
-
},
|
|
319
|
+
}, j;
|
|
320
320
|
}
|
|
321
321
|
if (z.status === 401 || z.status === 403) {
|
|
322
|
-
const { logout:
|
|
323
|
-
|
|
322
|
+
const { logout: j } = n.getState();
|
|
323
|
+
j();
|
|
324
324
|
}
|
|
325
325
|
if (z.status === 400 || z.status === 402 || z.status === 412 || z.status === 500 || z.status === 503) {
|
|
326
|
-
const
|
|
327
|
-
throw
|
|
326
|
+
const j = new Error(`HTTP error! status: ${z.status}`);
|
|
327
|
+
throw j.response = {
|
|
328
328
|
status: z.status,
|
|
329
329
|
data: await z.json().catch(() => null)
|
|
330
|
-
},
|
|
330
|
+
}, j;
|
|
331
331
|
}
|
|
332
332
|
const o = new Error(`HTTP error! status: ${z.status}`);
|
|
333
333
|
throw o.response = {
|
|
@@ -351,7 +351,7 @@ function q(n) {
|
|
|
351
351
|
headers: c.headers
|
|
352
352
|
};
|
|
353
353
|
}
|
|
354
|
-
async function
|
|
354
|
+
async function i(a, e, c = {}) {
|
|
355
355
|
const v = await u(a, {
|
|
356
356
|
...c,
|
|
357
357
|
method: "POST",
|
|
@@ -394,7 +394,7 @@ function q(n) {
|
|
|
394
394
|
}
|
|
395
395
|
return {
|
|
396
396
|
get: s,
|
|
397
|
-
post:
|
|
397
|
+
post: i,
|
|
398
398
|
put: H,
|
|
399
399
|
delete: w,
|
|
400
400
|
defaults: {
|
|
@@ -417,28 +417,28 @@ class Z {
|
|
|
417
417
|
* @returns {Promise<Object>} LoginResponseDto
|
|
418
418
|
*/
|
|
419
419
|
async login(t) {
|
|
420
|
-
return (await this.httpClient.post("/
|
|
420
|
+
return (await this.httpClient.post("/oasis/auth/user/login", t)).data.data;
|
|
421
421
|
}
|
|
422
422
|
/**
|
|
423
423
|
* 내 정보 조회
|
|
424
424
|
* @returns {Promise<Object>} MyResponseDto
|
|
425
425
|
*/
|
|
426
426
|
async my() {
|
|
427
|
-
return (await this.httpClient.get("/
|
|
427
|
+
return (await this.httpClient.get("/oasis/auth/user/info")).data.data;
|
|
428
428
|
}
|
|
429
429
|
/**
|
|
430
430
|
* 로그아웃
|
|
431
431
|
* @returns {Promise<void>}
|
|
432
432
|
*/
|
|
433
433
|
async logout() {
|
|
434
|
-
await this.httpClient.post("/
|
|
434
|
+
await this.httpClient.post("/oasis/auth/user/logout");
|
|
435
435
|
}
|
|
436
436
|
/**
|
|
437
437
|
* 토큰 갱신
|
|
438
438
|
* @returns {Promise<Object>} LoginResponseDto
|
|
439
439
|
*/
|
|
440
440
|
async refresh() {
|
|
441
|
-
return (await this.httpClient.post("/
|
|
441
|
+
return (await this.httpClient.post("/oasis/auth/user/refresh")).data.data;
|
|
442
442
|
}
|
|
443
443
|
/** Assistant */
|
|
444
444
|
/**
|
|
@@ -446,7 +446,7 @@ class Z {
|
|
|
446
446
|
* @returns {Promise<Object>} AssistantUserResponseDto
|
|
447
447
|
*/
|
|
448
448
|
async assistantUser() {
|
|
449
|
-
return (await this.httpClient.get("/
|
|
449
|
+
return (await this.httpClient.get("/oasis/portal/assistant/user")).data.data;
|
|
450
450
|
}
|
|
451
451
|
/**
|
|
452
452
|
* 특정 비서 상세 조회
|
|
@@ -454,7 +454,7 @@ class Z {
|
|
|
454
454
|
* @returns {Promise<Object>} AssistantInfoResponseDto
|
|
455
455
|
*/
|
|
456
456
|
async assistantInfo(t) {
|
|
457
|
-
return (await this.httpClient.get("/
|
|
457
|
+
return (await this.httpClient.get("/oasis/portal/assistant?uuid=" + t)).data.data;
|
|
458
458
|
}
|
|
459
459
|
/**
|
|
460
460
|
* 채팅용 비서 정보 조회
|
|
@@ -462,7 +462,9 @@ class Z {
|
|
|
462
462
|
* @returns {Promise<Object>} AssistantChatInfoResponseDto
|
|
463
463
|
*/
|
|
464
464
|
async assistantChatInfo(t) {
|
|
465
|
-
return (await this.httpClient.get(
|
|
465
|
+
return (await this.httpClient.get(
|
|
466
|
+
"/oasis/portal/assistant/" + t + "/chat-info"
|
|
467
|
+
)).data.data;
|
|
466
468
|
}
|
|
467
469
|
/**
|
|
468
470
|
* 비서 생성
|
|
@@ -470,7 +472,7 @@ class Z {
|
|
|
470
472
|
* @returns {Promise<Object>} AssistantInfoResponseDto
|
|
471
473
|
*/
|
|
472
474
|
async createAssistant(t) {
|
|
473
|
-
return (await this.httpClient.post("/
|
|
475
|
+
return (await this.httpClient.post("/oasis/portal/assistant", t)).data.data;
|
|
474
476
|
}
|
|
475
477
|
/**
|
|
476
478
|
* 비서 수정
|
|
@@ -479,7 +481,7 @@ class Z {
|
|
|
479
481
|
* @returns {Promise<Object>} AssistantInfoResponseDto
|
|
480
482
|
*/
|
|
481
483
|
async updateAssistant(t, f) {
|
|
482
|
-
return (await this.httpClient.post("/
|
|
484
|
+
return (await this.httpClient.post("/oasis/portal/assistant/" + t, f)).data.data;
|
|
483
485
|
}
|
|
484
486
|
/**
|
|
485
487
|
* 비서 삭제
|
|
@@ -487,7 +489,7 @@ class Z {
|
|
|
487
489
|
* @returns {Promise<boolean>}
|
|
488
490
|
*/
|
|
489
491
|
async deleteAssistant(t) {
|
|
490
|
-
return (await this.httpClient.delete("/
|
|
492
|
+
return (await this.httpClient.delete("/oasis/portal/assistant/" + t)).data.data;
|
|
491
493
|
}
|
|
492
494
|
/**
|
|
493
495
|
* 비서 사용자 목록 조회
|
|
@@ -495,7 +497,7 @@ class Z {
|
|
|
495
497
|
* @returns {Promise<Object>} AssistantVisibilityResponseDto
|
|
496
498
|
*/
|
|
497
499
|
async getAssistantVisibility(t) {
|
|
498
|
-
return (await this.httpClient.get("/
|
|
500
|
+
return (await this.httpClient.get("/oasis/portal/assistant/" + t + "/users")).data.data;
|
|
499
501
|
}
|
|
500
502
|
/**
|
|
501
503
|
* 비서 사용자 등록
|
|
@@ -505,7 +507,7 @@ class Z {
|
|
|
505
507
|
*/
|
|
506
508
|
async saveAssistantVisibility(t, f) {
|
|
507
509
|
return (await this.httpClient.post(
|
|
508
|
-
"/
|
|
510
|
+
"/oasis/portal/assistant/" + t + "/users",
|
|
509
511
|
f
|
|
510
512
|
)).data.data;
|
|
511
513
|
}
|
|
@@ -514,14 +516,14 @@ class Z {
|
|
|
514
516
|
* @returns {Promise<Array>} ModelInfoResponseDto[]
|
|
515
517
|
*/
|
|
516
518
|
async modelInfos() {
|
|
517
|
-
return (await this.httpClient.get("/
|
|
519
|
+
return (await this.httpClient.get("/oasis/portal/assistant/models")).data.data;
|
|
518
520
|
}
|
|
519
521
|
/**
|
|
520
522
|
* 비서 mcp 서버 목록 조회
|
|
521
523
|
* @returns {Promise<Array>} McpServerResponseDto[]
|
|
522
524
|
*/
|
|
523
525
|
async mcpServers() {
|
|
524
|
-
return (await this.httpClient.get("/
|
|
526
|
+
return (await this.httpClient.get("/oasis/portal/assistant/mcp-servers")).data.data;
|
|
525
527
|
}
|
|
526
528
|
/**
|
|
527
529
|
* 워크스페이스 내 사용자 실시간 검색
|
|
@@ -529,45 +531,16 @@ class Z {
|
|
|
529
531
|
* @returns {Promise<Array>} SearchUserResponseDto[]
|
|
530
532
|
*/
|
|
531
533
|
async searchUsers(t) {
|
|
532
|
-
return (await this.httpClient.get("/
|
|
534
|
+
return (await this.httpClient.get("/oasis/portal/user/search?keyword=" + t)).data.data;
|
|
533
535
|
}
|
|
534
536
|
}
|
|
535
537
|
function k(n) {
|
|
536
538
|
return new Z(n);
|
|
537
539
|
}
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
return `
|
|
541
|
-
// Oasis Chat Service Worker - 프록시 처리
|
|
542
|
-
const TARGET_API = '${R}';
|
|
543
|
-
|
|
544
|
-
self.addEventListener('install', () => {
|
|
545
|
-
self.skipWaiting();
|
|
546
|
-
});
|
|
547
|
-
|
|
548
|
-
self.addEventListener('activate', (event) => {
|
|
549
|
-
event.waitUntil(self.clients.claim());
|
|
550
|
-
});
|
|
551
|
-
|
|
552
|
-
self.addEventListener('fetch', (event) => {
|
|
553
|
-
const url = new URL(event.request.url);
|
|
554
|
-
|
|
555
|
-
// /api 경로만 프록시 처리
|
|
556
|
-
if (url.pathname.startsWith('/api')) {
|
|
557
|
-
event.respondWith(
|
|
558
|
-
fetch(\`\${TARGET_API}\${url.pathname}\${url.search}\`, {
|
|
559
|
-
method: event.request.method,
|
|
560
|
-
headers: event.request.headers,
|
|
561
|
-
body: event.request.body,
|
|
562
|
-
credentials: 'include',
|
|
563
|
-
mode: 'cors',
|
|
564
|
-
})
|
|
565
|
-
);
|
|
566
|
-
}
|
|
567
|
-
});
|
|
568
|
-
`;
|
|
540
|
+
function R(n) {
|
|
541
|
+
return "/sw.js";
|
|
569
542
|
}
|
|
570
|
-
async function
|
|
543
|
+
async function C(n, t = 5e3) {
|
|
571
544
|
return new Promise((f) => {
|
|
572
545
|
const r = Date.now();
|
|
573
546
|
if (n.active && n.active.state === "activated") {
|
|
@@ -585,70 +558,69 @@ async function J(n, t = 5e3) {
|
|
|
585
558
|
});
|
|
586
559
|
});
|
|
587
560
|
}
|
|
588
|
-
async function
|
|
561
|
+
async function J(n) {
|
|
589
562
|
if (!("serviceWorker" in navigator))
|
|
590
563
|
return !1;
|
|
591
564
|
try {
|
|
592
|
-
|
|
593
|
-
|
|
565
|
+
const t = R(n);
|
|
566
|
+
let r = (await navigator.serviceWorker.getRegistrations()).find(
|
|
567
|
+
(s) => s.scope === window.location.origin + "/"
|
|
594
568
|
);
|
|
595
|
-
if (
|
|
569
|
+
if (r)
|
|
596
570
|
console.log("Oasis Chat Service Worker가 이미 등록되어 있습니다.");
|
|
597
|
-
else
|
|
598
|
-
const r = C(), u = new Blob([r], { type: "application/javascript" }), s = URL.createObjectURL(u);
|
|
571
|
+
else
|
|
599
572
|
try {
|
|
600
|
-
|
|
573
|
+
r = await navigator.serviceWorker.register(t, {
|
|
601
574
|
scope: "/"
|
|
602
575
|
}), console.log("Oasis Chat Service Worker가 등록되었습니다.");
|
|
603
|
-
}
|
|
604
|
-
|
|
576
|
+
} catch (s) {
|
|
577
|
+
return console.error("Service Worker 등록 실패:", s), console.warn(`Service Worker 파일을 다음 경로에서 찾을 수 없습니다: ${t}`), console.warn("Service Worker 파일이 프로젝트의 public 폴더나 루트에 있는지 확인해주세요."), !1;
|
|
605
578
|
}
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
return console.error("Service Worker 등록 실패:", n), !1;
|
|
579
|
+
return await C(r) ? (console.log("Oasis Chat Service Worker가 활성화되었습니다."), !0) : (console.warn("Oasis Chat Service Worker 활성화 시간 초과"), !1);
|
|
580
|
+
} catch (t) {
|
|
581
|
+
return console.error("Service Worker 등록 실패:", t), !1;
|
|
610
582
|
}
|
|
611
583
|
}
|
|
612
|
-
let
|
|
613
|
-
async function
|
|
614
|
-
return
|
|
584
|
+
let l = !1, b = !1;
|
|
585
|
+
async function I() {
|
|
586
|
+
return l || (l = !0, b = await J()), b;
|
|
615
587
|
}
|
|
616
588
|
let N = null, Y = null, W = null;
|
|
617
|
-
function
|
|
589
|
+
function U() {
|
|
618
590
|
return N || (N = h(), Y = q(N), W = k(Y), N.setPortalClient(W)), {
|
|
619
591
|
authStore: N,
|
|
620
592
|
httpClient: Y,
|
|
621
593
|
portalClient: W
|
|
622
594
|
};
|
|
623
595
|
}
|
|
624
|
-
async function
|
|
596
|
+
async function K(n, t, f) {
|
|
625
597
|
try {
|
|
626
598
|
const { authStore: r, portalClient: u } = f, s = await u.login({
|
|
627
599
|
account_id: n,
|
|
628
600
|
password: t
|
|
629
|
-
}), { login:
|
|
630
|
-
|
|
601
|
+
}), { login: i, authMe: H } = r.getState();
|
|
602
|
+
i(s);
|
|
631
603
|
const w = await u.my();
|
|
632
604
|
return H(w), !0;
|
|
633
605
|
} catch (r) {
|
|
634
606
|
return console.error("로그인 실패:", r), !1;
|
|
635
607
|
}
|
|
636
608
|
}
|
|
637
|
-
function
|
|
609
|
+
function Q({ account_id: n, password: t, assistant_uuid: f } = {}) {
|
|
638
610
|
const r = document.createElement("button");
|
|
639
611
|
r.type = "button", r.className = L("w-12 h-12", "rounded-full");
|
|
640
612
|
const u = document.createElement("img");
|
|
641
613
|
return u.src = y, u.alt = "Button", r.appendChild(u), r.addEventListener("click", (s) => {
|
|
642
614
|
s.preventDefault(), f && alert(`비서 UUID: ${f}`);
|
|
643
615
|
}), n && t && (async () => {
|
|
644
|
-
if (r.disabled = !0, r.style.opacity = "0.5", r.style.cursor = "wait", !await
|
|
616
|
+
if (r.disabled = !0, r.style.opacity = "0.5", r.style.cursor = "wait", !await I()) {
|
|
645
617
|
r.disabled = !0, r.style.opacity = "0.3", r.title = "Service Worker 활성화 실패", console.error("Service Worker 활성화 실패 - 라이브러리를 사용할 수 없습니다.");
|
|
646
618
|
return;
|
|
647
619
|
}
|
|
648
|
-
const
|
|
649
|
-
|
|
620
|
+
const i = U();
|
|
621
|
+
K(n, t, i).then((H) => {
|
|
650
622
|
if (H) {
|
|
651
|
-
const { authStore: w } =
|
|
623
|
+
const { authStore: w } = i, a = w.getState();
|
|
652
624
|
console.log("로그인 성공:", a.userName || a.accountId), r.disabled = !1, r.style.opacity = "", r.style.cursor = "";
|
|
653
625
|
} else
|
|
654
626
|
console.error("로그인 실패"), r.disabled = !0, r.style.opacity = "0.3", r.title = "로그인 실패";
|
|
@@ -657,20 +629,20 @@ function S({ account_id: n, password: t, assistant_uuid: f } = {}) {
|
|
|
657
629
|
});
|
|
658
630
|
})(), r;
|
|
659
631
|
}
|
|
660
|
-
function
|
|
632
|
+
function $({ ...n }) {
|
|
661
633
|
const t = A(null);
|
|
662
634
|
return T(() => {
|
|
663
635
|
if (!t.current) return;
|
|
664
636
|
t.current.innerHTML = "";
|
|
665
|
-
const f =
|
|
637
|
+
const f = Q({
|
|
666
638
|
...n
|
|
667
639
|
});
|
|
668
640
|
return t.current.appendChild(f), () => {
|
|
669
641
|
t.current && (t.current.innerHTML = "");
|
|
670
642
|
};
|
|
671
|
-
}, [n.account_id, n.password, n.assistant_uuid]), /* @__PURE__ */
|
|
643
|
+
}, [n.account_id, n.password, n.assistant_uuid]), /* @__PURE__ */ m("div", { ref: t });
|
|
672
644
|
}
|
|
673
645
|
export {
|
|
674
|
-
|
|
646
|
+
$ as OasisButton
|
|
675
647
|
};
|
|
676
648
|
//# sourceMappingURL=index.es.js.map
|