@onereach/idw-sdk 0.1.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 +53 -0
- package/dist/cjs/ApiBase.js +130 -0
- package/dist/cjs/ApiBase.js.map +1 -0
- package/dist/cjs/IdwSdk.js +34 -0
- package/dist/cjs/IdwSdk.js.map +1 -0
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/modules/ChatApi.js +85 -0
- package/dist/cjs/modules/ChatApi.js.map +1 -0
- package/dist/cjs/modules/DatasourcesApi.js +33 -0
- package/dist/cjs/modules/DatasourcesApi.js.map +1 -0
- package/dist/cjs/modules/IdwInfoApi.js +25 -0
- package/dist/cjs/modules/IdwInfoApi.js.map +1 -0
- package/dist/cjs/modules/KnowledgeApi.js +38 -0
- package/dist/cjs/modules/KnowledgeApi.js.map +1 -0
- package/dist/cjs/modules/ModelsApi.js +24 -0
- package/dist/cjs/modules/ModelsApi.js.map +1 -0
- package/dist/cjs/modules/SkillsApi.js +30 -0
- package/dist/cjs/modules/SkillsApi.js.map +1 -0
- package/dist/esm/ApiBase.js +123 -0
- package/dist/esm/ApiBase.js.map +1 -0
- package/dist/esm/IdwSdk.js +29 -0
- package/dist/esm/IdwSdk.js.map +1 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/modules/ChatApi.js +81 -0
- package/dist/esm/modules/ChatApi.js.map +1 -0
- package/dist/esm/modules/DatasourcesApi.js +29 -0
- package/dist/esm/modules/DatasourcesApi.js.map +1 -0
- package/dist/esm/modules/IdwInfoApi.js +21 -0
- package/dist/esm/modules/IdwInfoApi.js.map +1 -0
- package/dist/esm/modules/KnowledgeApi.js +34 -0
- package/dist/esm/modules/KnowledgeApi.js.map +1 -0
- package/dist/esm/modules/ModelsApi.js +20 -0
- package/dist/esm/modules/ModelsApi.js.map +1 -0
- package/dist/esm/modules/SkillsApi.js +26 -0
- package/dist/esm/modules/SkillsApi.js.map +1 -0
- package/dist/types/ApiBase.d.ts +32 -0
- package/dist/types/ApiBase.d.ts.map +1 -0
- package/dist/types/IdwSdk.d.ts +28 -0
- package/dist/types/IdwSdk.d.ts.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/modules/ChatApi.d.ts +37 -0
- package/dist/types/modules/ChatApi.d.ts.map +1 -0
- package/dist/types/modules/DatasourcesApi.d.ts +15 -0
- package/dist/types/modules/DatasourcesApi.d.ts.map +1 -0
- package/dist/types/modules/IdwInfoApi.d.ts +12 -0
- package/dist/types/modules/IdwInfoApi.d.ts.map +1 -0
- package/dist/types/modules/KnowledgeApi.d.ts +22 -0
- package/dist/types/modules/KnowledgeApi.d.ts.map +1 -0
- package/dist/types/modules/ModelsApi.d.ts +11 -0
- package/dist/types/modules/ModelsApi.d.ts.map +1 -0
- package/dist/types/modules/SkillsApi.d.ts +14 -0
- package/dist/types/modules/SkillsApi.d.ts.map +1 -0
- package/package.json +41 -0
package/README.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# @onereach/idw-sdk
|
|
2
|
+
|
|
3
|
+
Typed HTTP client for the **IDW API**. Framework-agnostic (no Vue/Pinia) — port of idw-ui `src/shared/api/*` with types from `@onereach/idw-contracts`.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @onereach/idw-sdk @onereach/idw-contracts axios
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick start
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { createIdwSdk } from '@onereach/idw-sdk';
|
|
15
|
+
|
|
16
|
+
const sdk = createIdwSdk({
|
|
17
|
+
baseUrl: 'https://idw-api.example.com',
|
|
18
|
+
token: () => getAuthToken(),
|
|
19
|
+
idwId: () => getCurrentIdwId(),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const chats = await sdk.chat.getChatsList({ limit: 20, offset: 0 });
|
|
23
|
+
const settings = await sdk.idwInfo.getIdwInfo();
|
|
24
|
+
const skills = await sdk.skills.listSkills();
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## API surface (core domains)
|
|
28
|
+
|
|
29
|
+
| Property | Base path | idw-ui source |
|
|
30
|
+
|----------|-----------|---------------|
|
|
31
|
+
| `sdk.chat` | `chat/` | `Chat.api.ts` |
|
|
32
|
+
| `sdk.datasources` | `datasources/` (+ `admin/datasources/`) | `Datasources.api.ts` |
|
|
33
|
+
| `sdk.idwInfo` | `idw/{idwId}/` | `IdwInfo.api.ts` |
|
|
34
|
+
| `sdk.models` | `models/` | `Models.ts` |
|
|
35
|
+
| `sdk.skills` | `skills/` (+ `admin/skills/`) | `Skills.api.ts` |
|
|
36
|
+
| `sdk.knowledge` | `knowledge/` | `Knowledge.api.ts` |
|
|
37
|
+
|
|
38
|
+
## Advanced: use modules directly
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
import { ApiBase, ChatApi } from '@onereach/idw-sdk';
|
|
42
|
+
|
|
43
|
+
const http = new ApiBase({ baseUrl, token, idwId }).withBasePath('chat');
|
|
44
|
+
const chat = new ChatApi(http);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Not included (yet)
|
|
48
|
+
|
|
49
|
+
Domains from idw-ui not ported in this pass: onboarding, domains, feeds, lookup, reporting, users, access-groups, RAG, and `external-sdk/*` wrappers around `@or-sdk/*`. These can be added incrementally using the same `ApiBase` + module pattern.
|
|
50
|
+
|
|
51
|
+
## Differences from `@or-sdk/idw`
|
|
52
|
+
|
|
53
|
+
The legacy `@or-sdk/idw` package uses `@or-sdk/base` (service discovery + `callApiV2`). This SDK uses direct axios against the IDW API URL, matching how idw-ui works today.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ApiBase = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
/**
|
|
9
|
+
* Axios HTTP base for IDW API modules.
|
|
10
|
+
*
|
|
11
|
+
* Ported from idw-ui `ApiBase` without Vue/Pinia wiring. Injects auth token and
|
|
12
|
+
* optional `idw/{idwId}/` path prefix on every request.
|
|
13
|
+
*/
|
|
14
|
+
class ApiBase {
|
|
15
|
+
constructor({ baseUrl, token, idwId }, basePath = '') {
|
|
16
|
+
this.BASE_URL = '';
|
|
17
|
+
this.TOKEN = '';
|
|
18
|
+
this.baseUrl = baseUrl;
|
|
19
|
+
this.token = token;
|
|
20
|
+
this.idwId = idwId;
|
|
21
|
+
this.http = this.createHttpInstance(basePath);
|
|
22
|
+
}
|
|
23
|
+
set baseUrl(url) {
|
|
24
|
+
this.BASE_URL = url.at(-1) === '/' ? url.slice(0, -1) : url;
|
|
25
|
+
}
|
|
26
|
+
get baseUrl() {
|
|
27
|
+
return this.BASE_URL;
|
|
28
|
+
}
|
|
29
|
+
set token(token) {
|
|
30
|
+
this.TOKEN = token;
|
|
31
|
+
}
|
|
32
|
+
get token() {
|
|
33
|
+
return typeof this.TOKEN === 'function' ? this.TOKEN() : this.TOKEN;
|
|
34
|
+
}
|
|
35
|
+
set idwId(idwId) {
|
|
36
|
+
this.IDW_ID = idwId;
|
|
37
|
+
}
|
|
38
|
+
get idwId() {
|
|
39
|
+
return typeof this.IDW_ID === 'function' ? this.IDW_ID() : this.IDW_ID;
|
|
40
|
+
}
|
|
41
|
+
withBasePath(basePath, config = {}) {
|
|
42
|
+
const next = new ApiBase({
|
|
43
|
+
baseUrl: this.BASE_URL,
|
|
44
|
+
token: this.TOKEN,
|
|
45
|
+
idwId: this.IDW_ID,
|
|
46
|
+
}, basePath);
|
|
47
|
+
next.http = next.createHttpInstance(basePath, config);
|
|
48
|
+
return next;
|
|
49
|
+
}
|
|
50
|
+
createHttpInstance(basePath, config = {}) {
|
|
51
|
+
const instance = axios_1.default.create({
|
|
52
|
+
baseURL: this.BASE_URL,
|
|
53
|
+
timeout: 30_000,
|
|
54
|
+
headers: { 'Content-Type': 'application/json' },
|
|
55
|
+
...config,
|
|
56
|
+
});
|
|
57
|
+
instance.interceptors.request.use((requestConfig) => {
|
|
58
|
+
const token = this.token;
|
|
59
|
+
if (token) {
|
|
60
|
+
requestConfig.headers = requestConfig.headers ?? {};
|
|
61
|
+
requestConfig.headers.Authorization = token;
|
|
62
|
+
}
|
|
63
|
+
const pathPrefix = this.idwId === undefined
|
|
64
|
+
? basePath
|
|
65
|
+
: this.joinUrl(`idw/${this.idwId}`, basePath);
|
|
66
|
+
requestConfig.url = this.joinUrl(pathPrefix, requestConfig.url || '');
|
|
67
|
+
return requestConfig;
|
|
68
|
+
});
|
|
69
|
+
return instance;
|
|
70
|
+
}
|
|
71
|
+
async makeRequest(options) {
|
|
72
|
+
const route = options.route
|
|
73
|
+
? (options.route.startsWith('/') ? options.route : `/${options.route}`)
|
|
74
|
+
: '';
|
|
75
|
+
const response = await this.http.request({
|
|
76
|
+
url: route,
|
|
77
|
+
method: options.method ?? 'GET',
|
|
78
|
+
params: options.params,
|
|
79
|
+
data: options.data,
|
|
80
|
+
headers: options.headers,
|
|
81
|
+
signal: options.signal,
|
|
82
|
+
});
|
|
83
|
+
return response.data;
|
|
84
|
+
}
|
|
85
|
+
get(route, params) {
|
|
86
|
+
return this.makeRequest({
|
|
87
|
+
route,
|
|
88
|
+
method: 'GET',
|
|
89
|
+
params,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
post(route, data, params) {
|
|
93
|
+
return this.makeRequest({
|
|
94
|
+
route,
|
|
95
|
+
method: 'POST',
|
|
96
|
+
data,
|
|
97
|
+
params,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
put(route, data) {
|
|
101
|
+
return this.makeRequest({
|
|
102
|
+
route,
|
|
103
|
+
method: 'PUT',
|
|
104
|
+
data,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
patch(route, data) {
|
|
108
|
+
return this.makeRequest({
|
|
109
|
+
route,
|
|
110
|
+
method: 'PATCH',
|
|
111
|
+
data,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
delete(route) {
|
|
115
|
+
return this.makeRequest({
|
|
116
|
+
route,
|
|
117
|
+
method: 'DELETE',
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
joinUrl(base, ...paths) {
|
|
121
|
+
const trimmedBase = base.endsWith('/') ? base.slice(0, -1) : base;
|
|
122
|
+
const joinedPaths = paths
|
|
123
|
+
.map((path) => path.replace(/^\/+|\/+$/g, ''))
|
|
124
|
+
.filter((path) => path.length > 0)
|
|
125
|
+
.join('/');
|
|
126
|
+
return joinedPaths ? `${trimmedBase}/${joinedPaths}` : trimmedBase;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.ApiBase = ApiBase;
|
|
130
|
+
//# sourceMappingURL=ApiBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiBase.js","sourceRoot":"","sources":["../../src/ApiBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdwSdk = void 0;
|
|
4
|
+
exports.createIdwSdk = createIdwSdk;
|
|
5
|
+
const ApiBase_1 = require("./ApiBase");
|
|
6
|
+
const ChatApi_1 = require("./modules/ChatApi");
|
|
7
|
+
const DatasourcesApi_1 = require("./modules/DatasourcesApi");
|
|
8
|
+
const IdwInfoApi_1 = require("./modules/IdwInfoApi");
|
|
9
|
+
const KnowledgeApi_1 = require("./modules/KnowledgeApi");
|
|
10
|
+
const ModelsApi_1 = require("./modules/ModelsApi");
|
|
11
|
+
const SkillsApi_1 = require("./modules/SkillsApi");
|
|
12
|
+
/**
|
|
13
|
+
* Composed IDW HTTP client.
|
|
14
|
+
*
|
|
15
|
+
* Mirrors the module layout from idw-ui `src/shared/api/*` and the facade shape
|
|
16
|
+
* from `@or-sdk/idw` `IdwClient`, but uses axios `ApiBase` instead of discovery.
|
|
17
|
+
*/
|
|
18
|
+
class IdwSdk {
|
|
19
|
+
constructor(config) {
|
|
20
|
+
this.http = new ApiBase_1.ApiBase(config);
|
|
21
|
+
this.chat = new ChatApi_1.ChatApi(this.http.withBasePath('chat'));
|
|
22
|
+
this.datasources = new DatasourcesApi_1.DatasourcesApi(this.http.withBasePath('datasources'), this.http.withBasePath('admin/datasources'));
|
|
23
|
+
this.idwInfo = new IdwInfoApi_1.IdwInfoApi(this.http);
|
|
24
|
+
this.models = new ModelsApi_1.ModelsApi(this.http.withBasePath('models'), this.http);
|
|
25
|
+
this.skills = new SkillsApi_1.SkillsApi(this.http.withBasePath('skills'), this.http.withBasePath('admin/skills'));
|
|
26
|
+
this.knowledge = new KnowledgeApi_1.KnowledgeApi(this.http.withBasePath('knowledge'));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.IdwSdk = IdwSdk;
|
|
30
|
+
/** Create a composed IDW SDK client. */
|
|
31
|
+
function createIdwSdk(config) {
|
|
32
|
+
return new IdwSdk(config);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=IdwSdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdwSdk.js","sourceRoot":"","sources":["../../src/IdwSdk.ts"],"names":[],"mappings":";;;AAiDA,oCAEC;AAjDD,uCAAoC;AACpC,+CAA4C;AAC5C,6DAA0D;AAC1D,qDAAkD;AAClD,yDAAsD;AACtD,mDAAgD;AAChD,mDAAgD;AAEhD;;;;;GAKG;AACH,MAAa,MAAM;IAWjB,YAAY,MAAiB;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAO,CAAC,MAAM,CAAC,CAAC;QAEhC,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,IAAI,+BAAc,CACnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EACrC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAC5C,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAChC,IAAI,CAAC,IAAI,CACV,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAChC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CACvC,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;IACzE,CAAC;CACF;AA9BD,wBA8BC;AAED,wCAAwC;AACxC,SAAgB,YAAY,CAAC,MAAiB;IAC5C,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SkillsApi = exports.ModelsApi = exports.KnowledgeApi = exports.IdwInfoApi = exports.DatasourcesApi = exports.ChatApi = exports.createIdwSdk = exports.IdwSdk = exports.ApiBase = void 0;
|
|
4
|
+
var ApiBase_1 = require("./ApiBase");
|
|
5
|
+
Object.defineProperty(exports, "ApiBase", { enumerable: true, get: function () { return ApiBase_1.ApiBase; } });
|
|
6
|
+
var IdwSdk_1 = require("./IdwSdk");
|
|
7
|
+
Object.defineProperty(exports, "IdwSdk", { enumerable: true, get: function () { return IdwSdk_1.IdwSdk; } });
|
|
8
|
+
Object.defineProperty(exports, "createIdwSdk", { enumerable: true, get: function () { return IdwSdk_1.createIdwSdk; } });
|
|
9
|
+
var ChatApi_1 = require("./modules/ChatApi");
|
|
10
|
+
Object.defineProperty(exports, "ChatApi", { enumerable: true, get: function () { return ChatApi_1.ChatApi; } });
|
|
11
|
+
var DatasourcesApi_1 = require("./modules/DatasourcesApi");
|
|
12
|
+
Object.defineProperty(exports, "DatasourcesApi", { enumerable: true, get: function () { return DatasourcesApi_1.DatasourcesApi; } });
|
|
13
|
+
var IdwInfoApi_1 = require("./modules/IdwInfoApi");
|
|
14
|
+
Object.defineProperty(exports, "IdwInfoApi", { enumerable: true, get: function () { return IdwInfoApi_1.IdwInfoApi; } });
|
|
15
|
+
var KnowledgeApi_1 = require("./modules/KnowledgeApi");
|
|
16
|
+
Object.defineProperty(exports, "KnowledgeApi", { enumerable: true, get: function () { return KnowledgeApi_1.KnowledgeApi; } });
|
|
17
|
+
var ModelsApi_1 = require("./modules/ModelsApi");
|
|
18
|
+
Object.defineProperty(exports, "ModelsApi", { enumerable: true, get: function () { return ModelsApi_1.ModelsApi; } });
|
|
19
|
+
var SkillsApi_1 = require("./modules/SkillsApi");
|
|
20
|
+
Object.defineProperty(exports, "SkillsApi", { enumerable: true, get: function () { return SkillsApi_1.SkillsApi; } });
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAGhB,mCAAgD;AAAvC,gGAAA,MAAM,OAAA;AAAE,sGAAA,YAAY,OAAA;AAE7B,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,2DAA0D;AAAjD,gHAAA,cAAc,OAAA;AACvB,mDAAkD;AAAzC,wGAAA,UAAU,OAAA;AACnB,uDAAsD;AAA7C,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,sGAAA,SAAS,OAAA;AAClB,iDAAgD;AAAvC,sGAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChatApi = void 0;
|
|
4
|
+
class ChatApi {
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
createChat(chat) {
|
|
9
|
+
return this.http.post('new', chat);
|
|
10
|
+
}
|
|
11
|
+
getChat(chatId) {
|
|
12
|
+
return this.http.get(chatId);
|
|
13
|
+
}
|
|
14
|
+
getChatMessages(chatId, paginationParams) {
|
|
15
|
+
return this.http.get(`${chatId}/messages`, paginationParams);
|
|
16
|
+
}
|
|
17
|
+
getChatsList(paginationParams) {
|
|
18
|
+
return this.http.get('list', paginationParams);
|
|
19
|
+
}
|
|
20
|
+
renameChat(chatId, title) {
|
|
21
|
+
return this.http.patch(chatId, { title });
|
|
22
|
+
}
|
|
23
|
+
updateUpdatedAt(chatId, updatedAt) {
|
|
24
|
+
return this.http.patch(chatId, { updated_at: updatedAt });
|
|
25
|
+
}
|
|
26
|
+
attachHITL(chatId, hitlID) {
|
|
27
|
+
return this.http.patch(chatId, { hitl_id: hitlID });
|
|
28
|
+
}
|
|
29
|
+
attachSkill(chatId, skill) {
|
|
30
|
+
return this.http.makeRequest({
|
|
31
|
+
route: `${chatId}/skills`,
|
|
32
|
+
method: 'POST',
|
|
33
|
+
data: JSON.stringify(skill),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
detachSkill(chatId, skillId) {
|
|
37
|
+
return this.http.delete(`${chatId}/skills/${skillId}`);
|
|
38
|
+
}
|
|
39
|
+
touchSkill(chatId, skillId) {
|
|
40
|
+
return this.http.patch(`${chatId}/skills/${skillId}/touch`, {});
|
|
41
|
+
}
|
|
42
|
+
deleteChat(chatId) {
|
|
43
|
+
return this.http.delete(chatId);
|
|
44
|
+
}
|
|
45
|
+
generateSkillInputParams(chatId, data) {
|
|
46
|
+
return this.http.makeRequest({
|
|
47
|
+
route: `${chatId}/generate-skill-params`,
|
|
48
|
+
method: 'POST',
|
|
49
|
+
data,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
sendSkillResult(chatId, data) {
|
|
53
|
+
return this.http.makeRequest({
|
|
54
|
+
route: `${chatId}/skill-result`,
|
|
55
|
+
method: 'POST',
|
|
56
|
+
data,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
callMcpAppTool(chatId, artifactId, data) {
|
|
60
|
+
return this.http.makeRequest({
|
|
61
|
+
route: `${chatId}/mcp-app/${artifactId}/tool-call`,
|
|
62
|
+
method: 'POST',
|
|
63
|
+
data,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
readMcpAppResource(chatId, artifactId, params) {
|
|
67
|
+
return this.http.makeRequest({
|
|
68
|
+
route: `${chatId}/mcp-app/${artifactId}/resource`,
|
|
69
|
+
method: 'GET',
|
|
70
|
+
params,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
openIdwApp(chatId, data) {
|
|
74
|
+
return this.http.makeRequest({
|
|
75
|
+
route: `${chatId}/open-idw-app`,
|
|
76
|
+
method: 'POST',
|
|
77
|
+
data,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
updateChatModels(chatId, modelsData) {
|
|
81
|
+
return this.http.patch(`${chatId}/models`, modelsData);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.ChatApi = ChatApi;
|
|
85
|
+
//# sourceMappingURL=ChatApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatApi.js","sourceRoot":"","sources":["../../../src/modules/ChatApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatasourcesApi = void 0;
|
|
4
|
+
class DatasourcesApi {
|
|
5
|
+
constructor(http, adminHttp) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
this.adminHttp = adminHttp;
|
|
8
|
+
}
|
|
9
|
+
listDatasources(filter) {
|
|
10
|
+
return this.http.get('/', filter);
|
|
11
|
+
}
|
|
12
|
+
/** Full datasource list for IDW admin (no per-user access filter). */
|
|
13
|
+
listDatasourcesForAdmin() {
|
|
14
|
+
if (!this.adminHttp) {
|
|
15
|
+
throw new Error('DatasourcesApi: admin client is not configured');
|
|
16
|
+
}
|
|
17
|
+
return this.adminHttp.get('/');
|
|
18
|
+
}
|
|
19
|
+
createDatasourceWithModel(data) {
|
|
20
|
+
return this.http.post('/', data);
|
|
21
|
+
}
|
|
22
|
+
editDatasourceWithModel(id, data) {
|
|
23
|
+
return this.http.patch(`/${id}`, data);
|
|
24
|
+
}
|
|
25
|
+
deleteDatasourceWithModel(id) {
|
|
26
|
+
return this.http.delete(`/${id}`);
|
|
27
|
+
}
|
|
28
|
+
setDatasourceStatus(id, status) {
|
|
29
|
+
return this.http.patch(`/${id}/status`, { enabled: status });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.DatasourcesApi = DatasourcesApi;
|
|
33
|
+
//# sourceMappingURL=DatasourcesApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatasourcesApi.js","sourceRoot":"","sources":["../../../src/modules/DatasourcesApi.ts"],"names":[],"mappings":";;;AAIA,MAAa,cAAc;IACzB,YACmB,IAAa,EACb,SAAmB;QADnB,SAAI,GAAJ,IAAI,CAAS;QACb,cAAS,GAAT,SAAS,CAAU;IACnC,CAAC;IAEJ,eAAe,CAAC,MAAgC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,sEAAsE;IACtE,uBAAuB;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,yBAAyB,CAAC,IAAuB;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,uBAAuB,CAAC,EAAU,EAAE,IAAuB;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,yBAAyB,CAAC,EAAU;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,mBAAmB,CAAC,EAAU,EAAE,MAAe;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF;AAjCD,wCAiCC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdwInfoApi = void 0;
|
|
4
|
+
class IdwInfoApi {
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
getIdwInfo() {
|
|
9
|
+
return this.http.get('/info');
|
|
10
|
+
}
|
|
11
|
+
async setCoreBody(data) {
|
|
12
|
+
await this.http.post('/settings/core', data);
|
|
13
|
+
}
|
|
14
|
+
async setAccessBody(data) {
|
|
15
|
+
await this.http.post('/settings/access', data);
|
|
16
|
+
}
|
|
17
|
+
async setSignupBody(data) {
|
|
18
|
+
await this.http.post('/settings/signup', data);
|
|
19
|
+
}
|
|
20
|
+
async setWelcomeScreenBody(data) {
|
|
21
|
+
await this.http.post('/settings/welcome-screen', data);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.IdwInfoApi = IdwInfoApi;
|
|
25
|
+
//# sourceMappingURL=IdwInfoApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdwInfoApi.js","sourceRoot":"","sources":["../../../src/modules/IdwInfoApi.ts"],"names":[],"mappings":";;;AAUA,MAAa,UAAU;IACrB,YAA6B,IAAa;QAAb,SAAI,GAAJ,IAAI,CAAS;IAAG,CAAC;IAE9C,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAc;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAgB;QAClC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAgB;QAClC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAuB;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;CACF;AAtBD,gCAsBC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KnowledgeApi = void 0;
|
|
4
|
+
class KnowledgeApi {
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
async getAll(params = {}) {
|
|
9
|
+
const query = { ...params };
|
|
10
|
+
if (query.status && Array.isArray(query.status)) {
|
|
11
|
+
query.status = query.status.join(',');
|
|
12
|
+
}
|
|
13
|
+
return this.http.get('', query);
|
|
14
|
+
}
|
|
15
|
+
getAllAuthors(domainId) {
|
|
16
|
+
return this.http.get('authors', { domainId });
|
|
17
|
+
}
|
|
18
|
+
getById(id) {
|
|
19
|
+
return this.http.get(id);
|
|
20
|
+
}
|
|
21
|
+
create(knowledgeData) {
|
|
22
|
+
return this.http.post('', knowledgeData);
|
|
23
|
+
}
|
|
24
|
+
update(knowledgeData) {
|
|
25
|
+
return this.http.put(knowledgeData.knowledge_id, knowledgeData);
|
|
26
|
+
}
|
|
27
|
+
async delete(knowledgeId) {
|
|
28
|
+
await this.http.delete(knowledgeId);
|
|
29
|
+
}
|
|
30
|
+
improveContentByAI(content) {
|
|
31
|
+
return this.http.post('enhance-content', { content });
|
|
32
|
+
}
|
|
33
|
+
improveTitleByAI(knowledgeBodyContent) {
|
|
34
|
+
return this.http.post('enhance-title', { content: knowledgeBodyContent });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.KnowledgeApi = KnowledgeApi;
|
|
38
|
+
//# sourceMappingURL=KnowledgeApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KnowledgeApi.js","sourceRoot":"","sources":["../../../src/modules/KnowledgeApi.ts"],"names":[],"mappings":";;;AAWA,MAAa,YAAY;IACvB,YAA6B,IAAa;QAAb,SAAI,GAAJ,IAAI,CAAS;IAAG,CAAC;IAE9C,KAAK,CAAC,MAAM,CACV,SAAkD,EAAE;QAEpD,MAAM,KAAK,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,QAAiB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,aAAgC;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,aAAyC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,YAAa,EAAE,aAAa,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,kBAAkB,CAAC,OAAe;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,gBAAgB,CAAC,oBAA4B;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC5E,CAAC;CACF;AAxCD,oCAwCC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModelsApi = void 0;
|
|
4
|
+
class ModelsApi {
|
|
5
|
+
constructor(http, scopedHttp) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
this.scopedHttp = scopedHttp;
|
|
8
|
+
}
|
|
9
|
+
listModels(accountId) {
|
|
10
|
+
return this.http.get('', { accountId });
|
|
11
|
+
}
|
|
12
|
+
updateUserSelection(data) {
|
|
13
|
+
return this.http.post('user-selections', data);
|
|
14
|
+
}
|
|
15
|
+
updateChatModels(chatId, data) {
|
|
16
|
+
return this.scopedHttp.makeRequest({
|
|
17
|
+
route: `chat/${chatId}/models`,
|
|
18
|
+
method: 'PATCH',
|
|
19
|
+
data,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.ModelsApi = ModelsApi;
|
|
24
|
+
//# sourceMappingURL=ModelsApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelsApi.js","sourceRoot":"","sources":["../../../src/modules/ModelsApi.ts"],"names":[],"mappings":";;;AAQA,MAAa,SAAS;IACpB,YACmB,IAAa,EACb,UAAmB;QADnB,SAAI,GAAJ,IAAI,CAAS;QACb,eAAU,GAAV,UAAU,CAAS;IACnC,CAAC;IAEJ,UAAU,CAAC,SAAkB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,mBAAmB,CAAC,IAAgC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,gBAAgB,CAAC,MAAc,EAAE,IAA6B;QAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YACjC,KAAK,EAAE,QAAQ,MAAM,SAAS;YAC9B,MAAM,EAAE,OAAO;YACf,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF;AArBD,8BAqBC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SkillsApi = void 0;
|
|
4
|
+
class SkillsApi {
|
|
5
|
+
constructor(http, adminHttp) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
this.adminHttp = adminHttp;
|
|
8
|
+
}
|
|
9
|
+
listSkills(accountId) {
|
|
10
|
+
return this.http.get('', { accountId });
|
|
11
|
+
}
|
|
12
|
+
/** Full skill list for IDW admin (no per-user access filter). */
|
|
13
|
+
listSkillsAdmin(accountId) {
|
|
14
|
+
if (!this.adminHttp) {
|
|
15
|
+
throw new Error('SkillsApi: admin client is not configured');
|
|
16
|
+
}
|
|
17
|
+
return this.adminHttp.get('', accountId ? { accountId } : undefined);
|
|
18
|
+
}
|
|
19
|
+
createSkill(data) {
|
|
20
|
+
return this.http.post('', data);
|
|
21
|
+
}
|
|
22
|
+
editSkill(data) {
|
|
23
|
+
return this.http.patch(data.skill.id, data);
|
|
24
|
+
}
|
|
25
|
+
deleteSkill(id) {
|
|
26
|
+
return this.http.delete(id);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.SkillsApi = SkillsApi;
|
|
30
|
+
//# sourceMappingURL=SkillsApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsApi.js","sourceRoot":"","sources":["../../../src/modules/SkillsApi.ts"],"names":[],"mappings":";;;AAIA,MAAa,SAAS;IACpB,YACmB,IAAa,EACb,SAAmB;QADnB,SAAI,GAAJ,IAAI,CAAS;QACb,cAAS,GAAT,SAAS,CAAU;IACnC,CAAC;IAEJ,UAAU,CAAC,SAAkB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,iEAAiE;IACjE,eAAe,CAAC,SAAkB;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,WAAW,CAAC,IAAuB;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,IAAqB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF;AA7BD,8BA6BC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
/**
|
|
3
|
+
* Axios HTTP base for IDW API modules.
|
|
4
|
+
*
|
|
5
|
+
* Ported from idw-ui `ApiBase` without Vue/Pinia wiring. Injects auth token and
|
|
6
|
+
* optional `idw/{idwId}/` path prefix on every request.
|
|
7
|
+
*/
|
|
8
|
+
export class ApiBase {
|
|
9
|
+
constructor({ baseUrl, token, idwId }, basePath = '') {
|
|
10
|
+
this.BASE_URL = '';
|
|
11
|
+
this.TOKEN = '';
|
|
12
|
+
this.baseUrl = baseUrl;
|
|
13
|
+
this.token = token;
|
|
14
|
+
this.idwId = idwId;
|
|
15
|
+
this.http = this.createHttpInstance(basePath);
|
|
16
|
+
}
|
|
17
|
+
set baseUrl(url) {
|
|
18
|
+
this.BASE_URL = url.at(-1) === '/' ? url.slice(0, -1) : url;
|
|
19
|
+
}
|
|
20
|
+
get baseUrl() {
|
|
21
|
+
return this.BASE_URL;
|
|
22
|
+
}
|
|
23
|
+
set token(token) {
|
|
24
|
+
this.TOKEN = token;
|
|
25
|
+
}
|
|
26
|
+
get token() {
|
|
27
|
+
return typeof this.TOKEN === 'function' ? this.TOKEN() : this.TOKEN;
|
|
28
|
+
}
|
|
29
|
+
set idwId(idwId) {
|
|
30
|
+
this.IDW_ID = idwId;
|
|
31
|
+
}
|
|
32
|
+
get idwId() {
|
|
33
|
+
return typeof this.IDW_ID === 'function' ? this.IDW_ID() : this.IDW_ID;
|
|
34
|
+
}
|
|
35
|
+
withBasePath(basePath, config = {}) {
|
|
36
|
+
const next = new ApiBase({
|
|
37
|
+
baseUrl: this.BASE_URL,
|
|
38
|
+
token: this.TOKEN,
|
|
39
|
+
idwId: this.IDW_ID,
|
|
40
|
+
}, basePath);
|
|
41
|
+
next.http = next.createHttpInstance(basePath, config);
|
|
42
|
+
return next;
|
|
43
|
+
}
|
|
44
|
+
createHttpInstance(basePath, config = {}) {
|
|
45
|
+
const instance = axios.create({
|
|
46
|
+
baseURL: this.BASE_URL,
|
|
47
|
+
timeout: 30000,
|
|
48
|
+
headers: { 'Content-Type': 'application/json' },
|
|
49
|
+
...config,
|
|
50
|
+
});
|
|
51
|
+
instance.interceptors.request.use((requestConfig) => {
|
|
52
|
+
const token = this.token;
|
|
53
|
+
if (token) {
|
|
54
|
+
requestConfig.headers = requestConfig.headers ?? {};
|
|
55
|
+
requestConfig.headers.Authorization = token;
|
|
56
|
+
}
|
|
57
|
+
const pathPrefix = this.idwId === undefined
|
|
58
|
+
? basePath
|
|
59
|
+
: this.joinUrl(`idw/${this.idwId}`, basePath);
|
|
60
|
+
requestConfig.url = this.joinUrl(pathPrefix, requestConfig.url || '');
|
|
61
|
+
return requestConfig;
|
|
62
|
+
});
|
|
63
|
+
return instance;
|
|
64
|
+
}
|
|
65
|
+
async makeRequest(options) {
|
|
66
|
+
const route = options.route
|
|
67
|
+
? (options.route.startsWith('/') ? options.route : `/${options.route}`)
|
|
68
|
+
: '';
|
|
69
|
+
const response = await this.http.request({
|
|
70
|
+
url: route,
|
|
71
|
+
method: options.method ?? 'GET',
|
|
72
|
+
params: options.params,
|
|
73
|
+
data: options.data,
|
|
74
|
+
headers: options.headers,
|
|
75
|
+
signal: options.signal,
|
|
76
|
+
});
|
|
77
|
+
return response.data;
|
|
78
|
+
}
|
|
79
|
+
get(route, params) {
|
|
80
|
+
return this.makeRequest({
|
|
81
|
+
route,
|
|
82
|
+
method: 'GET',
|
|
83
|
+
params,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
post(route, data, params) {
|
|
87
|
+
return this.makeRequest({
|
|
88
|
+
route,
|
|
89
|
+
method: 'POST',
|
|
90
|
+
data,
|
|
91
|
+
params,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
put(route, data) {
|
|
95
|
+
return this.makeRequest({
|
|
96
|
+
route,
|
|
97
|
+
method: 'PUT',
|
|
98
|
+
data,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
patch(route, data) {
|
|
102
|
+
return this.makeRequest({
|
|
103
|
+
route,
|
|
104
|
+
method: 'PATCH',
|
|
105
|
+
data,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
delete(route) {
|
|
109
|
+
return this.makeRequest({
|
|
110
|
+
route,
|
|
111
|
+
method: 'DELETE',
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
joinUrl(base, ...paths) {
|
|
115
|
+
const trimmedBase = base.endsWith('/') ? base.slice(0, -1) : base;
|
|
116
|
+
const joinedPaths = paths
|
|
117
|
+
.map((path) => path.replace(/^\/+|\/+$/g, ''))
|
|
118
|
+
.filter((path) => path.length > 0)
|
|
119
|
+
.join('/');
|
|
120
|
+
return joinedPaths ? `${trimmedBase}/${joinedPaths}` : trimmedBase;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=ApiBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiBase.js","sourceRoot":"","sources":["../../src/ApiBase.ts"],"names":[],"mappings":"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"}
|