@newgameplusinc/odyssey-organization-sdk 1.0.0
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 +0 -0
- package/dist/index.d.mts +341 -0
- package/dist/index.d.ts +341 -0
- package/dist/index.js +406 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +396 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +75 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var axios = require('axios');
|
|
6
|
+
|
|
7
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
|
|
9
|
+
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
10
|
+
|
|
11
|
+
// src/core/http.ts
|
|
12
|
+
|
|
13
|
+
// src/errors.ts
|
|
14
|
+
function makeError(name, code, message, cause) {
|
|
15
|
+
const err = new Error(message);
|
|
16
|
+
err.name = name;
|
|
17
|
+
err.code = code;
|
|
18
|
+
if (cause !== void 0) err.cause = cause;
|
|
19
|
+
return err;
|
|
20
|
+
}
|
|
21
|
+
function createAuthError(message, cause) {
|
|
22
|
+
return makeError("OdysseyAuthError", "AUTH_ERROR", message, cause);
|
|
23
|
+
}
|
|
24
|
+
function createRequestError(message, cause) {
|
|
25
|
+
return makeError("OdysseyRequestError", "REQUEST_ERROR", message, cause);
|
|
26
|
+
}
|
|
27
|
+
function createValidationError(message, cause) {
|
|
28
|
+
return makeError(
|
|
29
|
+
"OdysseyValidationError",
|
|
30
|
+
"VALIDATION_ERROR",
|
|
31
|
+
message,
|
|
32
|
+
cause
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
function createConfigError(message, cause) {
|
|
36
|
+
return makeError("OdysseyConfigError", "INVALID_CONFIG", message, cause);
|
|
37
|
+
}
|
|
38
|
+
function isOdysseyError(err) {
|
|
39
|
+
return err instanceof Error && "code" in err;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// src/utils/debug.ts
|
|
43
|
+
var isDebugEnabled = () => {
|
|
44
|
+
if (typeof process !== "undefined" && process.env?.ODYSSEY_DEBUG === "true") {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
if (typeof window !== "undefined" && window.ODYSSEY_DEBUG === true) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
};
|
|
52
|
+
var debugLog = (category, message, data) => {
|
|
53
|
+
if (!isDebugEnabled()) return;
|
|
54
|
+
(/* @__PURE__ */ new Date()).toISOString().slice(11, 23);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// src/core/http.ts
|
|
58
|
+
var BASE_URL = process.env.ASSET_MANAGER_BASE_URL;
|
|
59
|
+
function createHttpClient(config) {
|
|
60
|
+
if (!BASE_URL) {
|
|
61
|
+
throw createConfigError(
|
|
62
|
+
"[SDK] Base URL not configured. This SDK build is missing ORGANIZATION_BASE_URL."
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
if (!config.apiKey || typeof config.apiKey !== "string" || !config.apiKey.trim()) {
|
|
66
|
+
throw createConfigError("[SDK] A valid apiKey is required.");
|
|
67
|
+
}
|
|
68
|
+
const client = axios__default.default.create({
|
|
69
|
+
baseURL: BASE_URL,
|
|
70
|
+
timeout: config.timeout ?? 3e4,
|
|
71
|
+
headers: {
|
|
72
|
+
"Content-Type": "application/json",
|
|
73
|
+
"x-sdk-key": config.apiKey.trim()
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
client.interceptors.request.use((req) => {
|
|
77
|
+
debugLog(
|
|
78
|
+
"HTTP",
|
|
79
|
+
`\u2192 ${req.method?.toUpperCase()} ${req.url}`,
|
|
80
|
+
req.params ?? req.data
|
|
81
|
+
);
|
|
82
|
+
return req;
|
|
83
|
+
});
|
|
84
|
+
client.interceptors.response.use(
|
|
85
|
+
(res) => {
|
|
86
|
+
debugLog("HTTP", `\u2190 ${res.status} ${res.config.url}`);
|
|
87
|
+
return res;
|
|
88
|
+
},
|
|
89
|
+
(err) => {
|
|
90
|
+
const status = err.response?.status;
|
|
91
|
+
const message = err.response?.data?.message ?? err.message ?? "Unknown error";
|
|
92
|
+
const url = err.config?.url ?? "";
|
|
93
|
+
debugLog();
|
|
94
|
+
if (!status) {
|
|
95
|
+
throw createRequestError(
|
|
96
|
+
`[SDK] Network error reaching ${url}: ${message}`,
|
|
97
|
+
err
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
if (status === 401 || status === 403) {
|
|
101
|
+
throw createAuthError(
|
|
102
|
+
`[SDK] Authentication failed (${status}): ${message}`,
|
|
103
|
+
err
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
if (status === 422 || status === 400) {
|
|
107
|
+
throw createValidationError(
|
|
108
|
+
`[SDK] Validation error (${status}): ${message}`,
|
|
109
|
+
err
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
throw createRequestError(
|
|
113
|
+
`[SDK] Request failed (${status}): ${message}`,
|
|
114
|
+
err
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
return client;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// src/modules/health.ts
|
|
122
|
+
function createHealthModule(http) {
|
|
123
|
+
async function getHealth() {
|
|
124
|
+
const res = await http.get("/health");
|
|
125
|
+
debugLog("Health", "getHealth", res.data.data);
|
|
126
|
+
return res.data.data;
|
|
127
|
+
}
|
|
128
|
+
async function getRedisHealth() {
|
|
129
|
+
const res = await http.get("/health/redis");
|
|
130
|
+
debugLog("Health", "getRedisHealth", res.data.data);
|
|
131
|
+
return res.data.data;
|
|
132
|
+
}
|
|
133
|
+
async function testRedis() {
|
|
134
|
+
await http.post("/health/redis/test");
|
|
135
|
+
debugLog();
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
getHealth,
|
|
139
|
+
getRedisHealth,
|
|
140
|
+
testRedis
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// src/modules/organizationInvites.ts
|
|
145
|
+
function createOrganizationInvitesModule(http) {
|
|
146
|
+
async function create(data) {
|
|
147
|
+
const res = await http.post("/organizations-invite", data);
|
|
148
|
+
debugLog("OrganizationInvites", "create", res.data.data);
|
|
149
|
+
return res.data.data;
|
|
150
|
+
}
|
|
151
|
+
async function accept(inviteId) {
|
|
152
|
+
const res = await http.put(`/organizations-invite/accept-invite/${inviteId}`);
|
|
153
|
+
debugLog("OrganizationInvites", `accept:${inviteId}`, res.data.data);
|
|
154
|
+
return res.data.data;
|
|
155
|
+
}
|
|
156
|
+
async function reject(inviteId) {
|
|
157
|
+
const res = await http.put(`/organizations-invite/reject-invite/${inviteId}`);
|
|
158
|
+
debugLog("OrganizationInvites", `reject:${inviteId}`, res.data.data);
|
|
159
|
+
return res.data.data;
|
|
160
|
+
}
|
|
161
|
+
async function getPendingUsers(orgId) {
|
|
162
|
+
const res = await http.get(`/organizations-invite/pending-user/${orgId}`);
|
|
163
|
+
debugLog("OrganizationInvites", `getPendingUsers:${orgId}`, res.data.data);
|
|
164
|
+
return res.data.data;
|
|
165
|
+
}
|
|
166
|
+
async function getPendingUserByInviteId(inviteId) {
|
|
167
|
+
const res = await http.get(
|
|
168
|
+
`/organizations-invite/pending-user-by-invite/${inviteId}`
|
|
169
|
+
);
|
|
170
|
+
debugLog(
|
|
171
|
+
"OrganizationInvites",
|
|
172
|
+
`getPendingUserByInviteId:${inviteId}`,
|
|
173
|
+
res.data.data
|
|
174
|
+
);
|
|
175
|
+
return res.data.data;
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
create,
|
|
179
|
+
accept,
|
|
180
|
+
reject,
|
|
181
|
+
getPendingUsers,
|
|
182
|
+
getPendingUserByInviteId
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// src/modules/organization.ts
|
|
187
|
+
function createOrganizationModule(http) {
|
|
188
|
+
async function create(data) {
|
|
189
|
+
const res = await http.post("/organizations", data);
|
|
190
|
+
debugLog("Organization", "create", res.data.data);
|
|
191
|
+
return res.data.data;
|
|
192
|
+
}
|
|
193
|
+
async function getAll(query) {
|
|
194
|
+
const res = await http.get("/organizations", { params: query });
|
|
195
|
+
debugLog("Organization", "getAll", res.data.data);
|
|
196
|
+
return res.data.data;
|
|
197
|
+
}
|
|
198
|
+
async function getById(id) {
|
|
199
|
+
const res = await http.get(`/organizations/${id}`);
|
|
200
|
+
debugLog("Organization", `getById:${id}`, res.data.data);
|
|
201
|
+
return res.data.data;
|
|
202
|
+
}
|
|
203
|
+
async function getByUser() {
|
|
204
|
+
const res = await http.get("/organizations/user-org");
|
|
205
|
+
debugLog("Organization", "getByUser", res.data.data);
|
|
206
|
+
return res.data.data;
|
|
207
|
+
}
|
|
208
|
+
async function getUsers(orgId) {
|
|
209
|
+
const res = await http.get(`/organizations/org-user/${orgId}`);
|
|
210
|
+
debugLog("Organization", `getUsers:${orgId}`, res.data.data);
|
|
211
|
+
return res.data.data;
|
|
212
|
+
}
|
|
213
|
+
async function update(id, data) {
|
|
214
|
+
const res = await http.patch(`/organizations/${id}`, data);
|
|
215
|
+
debugLog("Organization", `update:${id}`, res.data.data);
|
|
216
|
+
return res.data.data;
|
|
217
|
+
}
|
|
218
|
+
async function updateUser(userId, data) {
|
|
219
|
+
const res = await http.patch(`/organizations/org-user/${userId}`, data);
|
|
220
|
+
debugLog("Organization", `updateUser:${userId}`, res.data.data);
|
|
221
|
+
return res.data.data;
|
|
222
|
+
}
|
|
223
|
+
async function deleteOrganization(id) {
|
|
224
|
+
const res = await http.delete(`/organizations/${id}`);
|
|
225
|
+
debugLog("Organization", `delete:${id}`, res.data.data);
|
|
226
|
+
return res.data.data;
|
|
227
|
+
}
|
|
228
|
+
async function deleteUser(userId) {
|
|
229
|
+
const res = await http.delete(`/organizations/org-user/${userId}`);
|
|
230
|
+
debugLog("Organization", `deleteUser:${userId}`, res.data.data);
|
|
231
|
+
return res.data.data;
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
create,
|
|
235
|
+
getAll,
|
|
236
|
+
getById,
|
|
237
|
+
getByUser,
|
|
238
|
+
getUsers,
|
|
239
|
+
update,
|
|
240
|
+
updateUser,
|
|
241
|
+
delete: deleteOrganization,
|
|
242
|
+
deleteUser
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// src/modules/projects.ts
|
|
247
|
+
function createProjectsModule(http) {
|
|
248
|
+
async function create(data) {
|
|
249
|
+
const res = await http.post("/projects", data);
|
|
250
|
+
debugLog("Projects", "create", res.data.data);
|
|
251
|
+
return res.data.data;
|
|
252
|
+
}
|
|
253
|
+
async function getByOrg(orgId, query) {
|
|
254
|
+
const res = await http.get(`/projects/organization/${orgId}`, {
|
|
255
|
+
params: query
|
|
256
|
+
});
|
|
257
|
+
debugLog("Projects", `getByOrg:${orgId}`, res.data.data);
|
|
258
|
+
return res.data.data;
|
|
259
|
+
}
|
|
260
|
+
async function getById(projectId) {
|
|
261
|
+
const res = await http.get(`/projects/${projectId}`);
|
|
262
|
+
debugLog("Projects", `getById:${projectId}`, res.data.data);
|
|
263
|
+
return res.data.data;
|
|
264
|
+
}
|
|
265
|
+
async function update(projectId, data) {
|
|
266
|
+
const res = await http.patch(`/projects/${projectId}`, data);
|
|
267
|
+
debugLog("Projects", `update:${projectId}`, res.data.data);
|
|
268
|
+
return res.data.data;
|
|
269
|
+
}
|
|
270
|
+
async function deleteProject(projectId) {
|
|
271
|
+
const res = await http.delete(`/projects/${projectId}`);
|
|
272
|
+
debugLog("Projects", `delete:${projectId}`, res.data.data);
|
|
273
|
+
return res.data.data;
|
|
274
|
+
}
|
|
275
|
+
return {
|
|
276
|
+
create,
|
|
277
|
+
getByOrg,
|
|
278
|
+
getById,
|
|
279
|
+
update,
|
|
280
|
+
delete: deleteProject
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// src/modules/spaceInvites.ts
|
|
285
|
+
function createSpaceInvitesModule(http) {
|
|
286
|
+
async function create(data) {
|
|
287
|
+
const res = await http.post("/space-invite", data);
|
|
288
|
+
debugLog("SpaceInvites", "create", res.data.data);
|
|
289
|
+
return res.data.data;
|
|
290
|
+
}
|
|
291
|
+
async function accept(inviteId) {
|
|
292
|
+
const res = await http.put(`/space-invite/accept-invite/${inviteId}`);
|
|
293
|
+
debugLog("SpaceInvites", `accept:${inviteId}`, res.data.data);
|
|
294
|
+
return res.data.data;
|
|
295
|
+
}
|
|
296
|
+
async function reject(inviteId) {
|
|
297
|
+
const res = await http.put(`/space-invite/reject-invite/${inviteId}`);
|
|
298
|
+
debugLog("SpaceInvites", `reject:${inviteId}`, res.data.data);
|
|
299
|
+
return res.data.data;
|
|
300
|
+
}
|
|
301
|
+
async function getPendingUsers(spaceId) {
|
|
302
|
+
const res = await http.get(`/space-invite/pending-user/${spaceId}`);
|
|
303
|
+
debugLog("SpaceInvites", `getPendingUsers:${spaceId}`, res.data.data);
|
|
304
|
+
return res.data.data;
|
|
305
|
+
}
|
|
306
|
+
async function getPendingUserByInviteId(inviteId) {
|
|
307
|
+
const res = await http.get(`/space-invite/pending-user-by-invite/${inviteId}`);
|
|
308
|
+
debugLog("SpaceInvites", `getPendingUserByInviteId:${inviteId}`, res.data.data);
|
|
309
|
+
return res.data.data;
|
|
310
|
+
}
|
|
311
|
+
return {
|
|
312
|
+
create,
|
|
313
|
+
accept,
|
|
314
|
+
reject,
|
|
315
|
+
getPendingUsers,
|
|
316
|
+
getPendingUserByInviteId
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// src/modules/spaces.ts
|
|
321
|
+
function createSpacesModule(http) {
|
|
322
|
+
async function create(data) {
|
|
323
|
+
const res = await http.post("/spaces", data);
|
|
324
|
+
debugLog("Spaces", "create", res.data.data);
|
|
325
|
+
return res.data.data;
|
|
326
|
+
}
|
|
327
|
+
async function getByOrg(orgId) {
|
|
328
|
+
const res = await http.get(`/spaces/space-by-org/${orgId}`);
|
|
329
|
+
debugLog("Spaces", `getByOrg:${orgId}`, res.data.data);
|
|
330
|
+
return res.data.data;
|
|
331
|
+
}
|
|
332
|
+
async function getByProject(projectId) {
|
|
333
|
+
const res = await http.get(`/spaces/space-by-project/${projectId}`);
|
|
334
|
+
debugLog("Spaces", `getByProject:${projectId}`, res.data.data);
|
|
335
|
+
return res.data.data;
|
|
336
|
+
}
|
|
337
|
+
async function getUsers(spaceId) {
|
|
338
|
+
const res = await http.get(`/spaces/space-user/${spaceId}`);
|
|
339
|
+
debugLog("Spaces", `getUsers:${spaceId}`, res.data.data);
|
|
340
|
+
return res.data.data;
|
|
341
|
+
}
|
|
342
|
+
async function update(spaceId, data) {
|
|
343
|
+
const res = await http.patch(`/spaces/${spaceId}`, data);
|
|
344
|
+
debugLog("Spaces", `update:${spaceId}`, res.data.data);
|
|
345
|
+
return res.data.data;
|
|
346
|
+
}
|
|
347
|
+
async function updateSetting(spaceId, data) {
|
|
348
|
+
const res = await http.patch(`/spaces/setting/${spaceId}`, data);
|
|
349
|
+
debugLog("Spaces", `updateSetting:${spaceId}`, res.data.data);
|
|
350
|
+
return res.data.data;
|
|
351
|
+
}
|
|
352
|
+
async function updateUser(userId, data) {
|
|
353
|
+
const res = await http.patch(`/spaces/space-user/${userId}`, data);
|
|
354
|
+
debugLog("Spaces", `updateUser:${userId}`, res.data.data);
|
|
355
|
+
return res.data.data;
|
|
356
|
+
}
|
|
357
|
+
async function deleteSpace(spaceId) {
|
|
358
|
+
const res = await http.delete(`/spaces/${spaceId}`);
|
|
359
|
+
debugLog("Spaces", `delete:${spaceId}`, res.data.data);
|
|
360
|
+
return res.data.data;
|
|
361
|
+
}
|
|
362
|
+
async function deleteUser(userId) {
|
|
363
|
+
const res = await http.delete(`/spaces/space-user/${userId}`);
|
|
364
|
+
debugLog("Spaces", `deleteUser:${userId}`, res.data.data);
|
|
365
|
+
return res.data.data;
|
|
366
|
+
}
|
|
367
|
+
return {
|
|
368
|
+
create,
|
|
369
|
+
getByOrg,
|
|
370
|
+
getByProject,
|
|
371
|
+
getUsers,
|
|
372
|
+
update,
|
|
373
|
+
updateSetting,
|
|
374
|
+
updateUser,
|
|
375
|
+
delete: deleteSpace,
|
|
376
|
+
deleteUser
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
// src/index.ts
|
|
381
|
+
function createOrganizationSDK(config) {
|
|
382
|
+
const http = createHttpClient(config);
|
|
383
|
+
debugLog("SDK", "Initialized", {
|
|
384
|
+
timeout: config.timeout ?? 3e4
|
|
385
|
+
});
|
|
386
|
+
return {
|
|
387
|
+
health: createHealthModule(http),
|
|
388
|
+
organization: createOrganizationModule(http),
|
|
389
|
+
organizationInvites: createOrganizationInvitesModule(http),
|
|
390
|
+
projects: createProjectsModule(http),
|
|
391
|
+
spaces: createSpacesModule(http),
|
|
392
|
+
spaceInvites: createSpaceInvitesModule(http)
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
var OrganizationSDK = {
|
|
396
|
+
create(config) {
|
|
397
|
+
return createOrganizationSDK(config);
|
|
398
|
+
}
|
|
399
|
+
};
|
|
400
|
+
var index_default = OrganizationSDK;
|
|
401
|
+
|
|
402
|
+
exports.createOrganizationSDK = createOrganizationSDK;
|
|
403
|
+
exports.default = index_default;
|
|
404
|
+
exports.isOdysseyError = isOdysseyError;
|
|
405
|
+
//# sourceMappingURL=index.js.map
|
|
406
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/utils/debug.ts","../src/core/http.ts","../src/modules/health.ts","../src/modules/organizationInvites.ts","../src/modules/organization.ts","../src/modules/projects.ts","../src/modules/spaceInvites.ts","../src/modules/spaces.ts","../src/index.ts"],"names":["axios"],"mappings":";;;;;;;;;;;;;AAQA,SAAS,SAAA,CACP,IAAA,EACA,IAAA,EACA,OAAA,EACA,KAAA,EACc;AACd,EAAA,MAAM,GAAA,GAAM,IAAI,KAAA,CAAM,OAAO,CAAA;AAC7B,EAAA,GAAA,CAAI,IAAA,GAAO,IAAA;AACX,EAAC,IAAY,IAAA,GAAO,IAAA;AACpB,EAAA,IAAI,KAAA,KAAU,MAAA,EAAY,GAAA,CAAY,KAAA,GAAQ,KAAA;AAC9C,EAAA,OAAO,GAAA;AACT;AAYO,SAAS,eAAA,CACd,SACA,KAAA,EACc;AACd,EAAA,OAAO,SAAA,CAAU,kBAAA,EAAoB,YAAA,EAAc,OAAA,EAAS,KAAK,CAAA;AACnE;AAGO,SAAS,kBAAA,CACd,SACA,KAAA,EACc;AACd,EAAA,OAAO,SAAA,CAAU,qBAAA,EAAuB,eAAA,EAAiB,OAAA,EAAS,KAAK,CAAA;AACzE;AAGO,SAAS,qBAAA,CACd,SACA,KAAA,EACc;AACd,EAAA,OAAO,SAAA;AAAA,IACL,wBAAA;AAAA,IACA,kBAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAWO,SAAS,iBAAA,CACd,SACA,KAAA,EACc;AACd,EAAA,OAAO,SAAA,CAAU,oBAAA,EAAsB,gBAAA,EAAkB,OAAA,EAAS,KAAK,CAAA;AACzE;AAGO,SAAS,eAAe,GAAA,EAAmC;AAChE,EAAA,OAAO,GAAA,YAAe,SAAS,MAAA,IAAU,GAAA;AAC3C;;;ACpEO,IAAM,iBAAiB,MAAe;AAE3C,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,EAAK,kBAAkB,MAAA,EAAQ;AAC3E,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,MAAA,CAAO,kBAAkB,IAAA,EAAM;AAClE,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT,CAAA;AAEO,IAAM,QAAA,GAAW,CACtB,QAAA,EACA,OAAA,EACA,IAAA,KACS;AACT,EAAA,IAAI,CAAC,gBAAe,EAAG;AACvB,EAAM,qBAAgB,IAAA,EAAK,EAAE,aAAY,CAAE,KAAA,CAAM,IAAI,EAAE;AAIzD,CAAA;;;ACNA,IAAM,QAAA,GAAmB,QAAQ,GAAA,CAAI,sBAAA;AAI9B,SAAS,iBAAiB,MAAA,EAA8C;AAC7E,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,MAAM,iBAAA;AAAA,MACJ;AAAA,KACF;AAAA,EACF;AAEA,EAAA,IACE,CAAC,MAAA,CAAO,MAAA,IACR,OAAO,MAAA,CAAO,MAAA,KAAW,QAAA,IACzB,CAAC,MAAA,CAAO,MAAA,CAAO,IAAA,EAAK,EACpB;AACA,IAAA,MAAM,kBAAkB,mCAAmC,CAAA;AAAA,EAC7D;AAEA,EAAA,MAAM,MAAA,GAASA,uBAAM,MAAA,CAAO;AAAA,IAC1B,OAAA,EAAS,QAAA;AAAA,IACT,OAAA,EAAS,OAAO,OAAA,IAAW,GAAA;AAAA,IAC3B,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,kBAAA;AAAA,MAChB,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,IAAA;AAAK;AAClC,GACD,CAAA;AAGD,EAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ;AACvC,IAAA,QAAA;AAAA,MACE,MAAA;AAAA,MACA,UAAK,GAAA,CAAI,MAAA,EAAQ,aAAa,CAAA,CAAA,EAAI,IAAI,GAAG,CAAA,CAAA;AAAA,MACzC,GAAA,CAAI,UAAU,GAAA,CAAI;AAAA,KACpB;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAC,CAAA;AAGD,EAAA,MAAA,CAAO,aAAa,QAAA,CAAS,GAAA;AAAA,IAC3B,CAAC,GAAA,KAAQ;AACP,MAAA,QAAA,CAAS,MAAA,EAAQ,UAAK,GAAA,CAAI,MAAM,IAAI,GAAA,CAAI,MAAA,CAAO,GAAG,CAAA,CAAE,CAAA;AACpD,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,GAAA,KAAoB;AACnB,MAAA,MAAM,MAAA,GAAS,IAAI,QAAA,EAAU,MAAA;AAC7B,MAAA,MAAM,UACH,GAAA,CAAI,QAAA,EAAU,IAAA,EAAc,OAAA,IAAW,IAAI,OAAA,IAAW,eAAA;AACzD,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,MAAA,EAAQ,GAAA,IAAO,EAAA;AAE/B,MAAA,QAAA,CAAiE,CAAA;AAEjE,MAAA,IAAI,CAAC,MAAA,EAAQ;AAEX,QAAA,MAAM,kBAAA;AAAA,UACJ,CAAA,6BAAA,EAAgC,GAAG,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA;AAAA,UAC/C;AAAA,SACF;AAAA,MACF;AAEA,MAAA,IAAI,MAAA,KAAW,GAAA,IAAO,MAAA,KAAW,GAAA,EAAK;AACpC,QAAA,MAAM,eAAA;AAAA,UACJ,CAAA,6BAAA,EAAgC,MAAM,CAAA,GAAA,EAAM,OAAO,CAAA,CAAA;AAAA,UACnD;AAAA,SACF;AAAA,MACF;AAEA,MAAA,IAAI,MAAA,KAAW,GAAA,IAAO,MAAA,KAAW,GAAA,EAAK;AACpC,QAAA,MAAM,qBAAA;AAAA,UACJ,CAAA,wBAAA,EAA2B,MAAM,CAAA,GAAA,EAAM,OAAO,CAAA,CAAA;AAAA,UAC9C;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,kBAAA;AAAA,QACJ,CAAA,sBAAA,EAAyB,MAAM,CAAA,GAAA,EAAM,OAAO,CAAA,CAAA;AAAA,QAC5C;AAAA,OACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,OAAO,MAAA;AACT;;;AC9FO,SAAS,mBAAmB,IAAA,EAAmC;AACpE,EAAA,eAAe,SAAA,GAAqC;AAClD,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA;AACpC,IAAA,QAAA,CAAS,QAAA,EAAU,WAAA,EAAa,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAC7C,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,cAAA,GAA+C;AAC5D,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA,CAAI,eAAe,CAAA;AAC1C,IAAA,QAAA,CAAS,QAAA,EAAU,gBAAA,EAAkB,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAClD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,SAAA,GAA2B;AACxC,IAAA,MAAM,IAAA,CAAK,KAAK,oBAAoB,CAAA;AACpC,IAAA,QAAA,CAAmC,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACpBO,SAAS,gCACd,IAAA,EAC2B;AAC3B,EAAA,eAAe,OACb,IAAA,EAC6B;AAC7B,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,IAAA,CAAK,yBAAyB,IAAI,CAAA;AACzD,IAAA,QAAA,CAAS,qBAAA,EAAuB,QAAA,EAAU,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AACvD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,OAAO,QAAA,EAA+C;AACnE,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,oCAAA,EAAuC,QAAQ,CAAA,CAAE,CAAA;AAC5E,IAAA,QAAA,CAAS,uBAAuB,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACnE,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,OAAO,QAAA,EAA+C;AACnE,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,oCAAA,EAAuC,QAAQ,CAAA,CAAE,CAAA;AAC5E,IAAA,QAAA,CAAS,uBAAuB,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACnE,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,gBAAgB,KAAA,EAA8C;AAC3E,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,mCAAA,EAAsC,KAAK,CAAA,CAAE,CAAA;AACxE,IAAA,QAAA,CAAS,uBAAuB,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACzE,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,yBACb,QAAA,EACoC;AACpC,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA;AAAA,MACrB,gDAAgD,QAAQ,CAAA;AAAA,KAC1D;AACA,IAAA,QAAA;AAAA,MACE,qBAAA;AAAA,MACA,4BAA4B,QAAQ,CAAA,CAAA;AAAA,MACpC,IAAI,IAAA,CAAK;AAAA,KACX;AACA,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACrCO,SAAS,yBAAyB,IAAA,EAAyC;AAChF,EAAA,eAAe,OAAO,IAAA,EAAsD;AAC1E,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,IAAA,CAAK,kBAAkB,IAAI,CAAA;AAClD,IAAA,QAAA,CAAS,cAAA,EAAgB,QAAA,EAAU,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAChD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,OAAO,KAAA,EAA0D;AAC9E,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA,CAAI,kBAAkB,EAAE,MAAA,EAAQ,OAAO,CAAA;AAC9D,IAAA,QAAA,CAAS,cAAA,EAAgB,QAAA,EAAU,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAChD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,QAAQ,EAAA,EAAmC;AACxD,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAE,CAAA;AACjD,IAAA,QAAA,CAAS,gBAAgB,CAAA,QAAA,EAAW,EAAE,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACvD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,SAAA,GAAiD;AAC9D,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA,CAAI,yBAAyB,CAAA;AACpD,IAAA,QAAA,CAAS,cAAA,EAAgB,WAAA,EAAa,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AACnD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,SAAS,KAAA,EAA4C;AAClE,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,wBAAA,EAA2B,KAAK,CAAA,CAAE,CAAA;AAC7D,IAAA,QAAA,CAAS,gBAAgB,CAAA,SAAA,EAAY,KAAK,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAC3D,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,MAAA,CACb,IACA,IAAA,EACuB;AACvB,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,CAAA,eAAA,EAAkB,EAAE,IAAI,IAAI,CAAA;AACzD,IAAA,QAAA,CAAS,gBAAgB,CAAA,OAAA,EAAU,EAAE,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACtD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,UAAA,CACb,QACA,IAAA,EAC2B;AAC3B,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,CAAA,wBAAA,EAA2B,MAAM,IAAI,IAAI,CAAA;AACtE,IAAA,QAAA,CAAS,gBAAgB,CAAA,WAAA,EAAc,MAAM,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAC9D,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,mBAAmB,EAAA,EAAmC;AACnE,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAA,CAAO,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAE,CAAA;AACpD,IAAA,QAAA,CAAS,gBAAgB,CAAA,OAAA,EAAU,EAAE,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACtD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,WAAW,MAAA,EAA2C;AACnE,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAA,CAAO,CAAA,wBAAA,EAA2B,MAAM,CAAA,CAAE,CAAA;AACjE,IAAA,QAAA,CAAS,gBAAgB,CAAA,WAAA,EAAc,MAAM,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAC9D,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA,EAAQ,kBAAA;AAAA,IACR;AAAA,GACF;AACF;;;AChFO,SAAS,qBAAqB,IAAA,EAAqC;AACxE,EAAA,eAAe,OAAO,IAAA,EAA4C;AAChE,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,IAAA,CAAK,aAAa,IAAI,CAAA;AAC7C,IAAA,QAAA,CAAS,UAAA,EAAY,QAAA,EAAU,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAC5C,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,QAAA,CACb,OACA,KAAA,EAC4B;AAC5B,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,uBAAA,EAA0B,KAAK,CAAA,CAAA,EAAI;AAAA,MAC5D,MAAA,EAAQ;AAAA,KACT,CAAA;AACD,IAAA,QAAA,CAAS,YAAY,CAAA,SAAA,EAAY,KAAK,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACvD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,QAAQ,SAAA,EAAqC;AAC1D,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,UAAA,EAAa,SAAS,CAAA,CAAE,CAAA;AACnD,IAAA,QAAA,CAAS,YAAY,CAAA,QAAA,EAAW,SAAS,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAC1D,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,MAAA,CACb,WACA,IAAA,EACkB;AAClB,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,CAAA,UAAA,EAAa,SAAS,IAAI,IAAI,CAAA;AAC3D,IAAA,QAAA,CAAS,YAAY,CAAA,OAAA,EAAU,SAAS,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACzD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,cAAc,SAAA,EAAqC;AAChE,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAA,CAAO,CAAA,UAAA,EAAa,SAAS,CAAA,CAAE,CAAA;AACtD,IAAA,QAAA,CAAS,YAAY,CAAA,OAAA,EAAU,SAAS,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACzD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA,EAAQ;AAAA,GACV;AACF;;;ACpDO,SAAS,yBAAyB,IAAA,EAAyC;AAChF,EAAA,eAAe,OAAO,IAAA,EAAoD;AACxE,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,IAAA,CAAK,iBAAiB,IAAI,CAAA;AACjD,IAAA,QAAA,CAAS,cAAA,EAAgB,QAAA,EAAU,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAChD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,OAAO,QAAA,EAAwC;AAC5D,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,4BAAA,EAA+B,QAAQ,CAAA,CAAE,CAAA;AACpE,IAAA,QAAA,CAAS,gBAAgB,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAC5D,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,OAAO,QAAA,EAAwC;AAC5D,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,4BAAA,EAA+B,QAAQ,CAAA,CAAE,CAAA;AACpE,IAAA,QAAA,CAAS,gBAAgB,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAC5D,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,gBAAgB,OAAA,EAAyC;AACtE,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,2BAAA,EAA8B,OAAO,CAAA,CAAE,CAAA;AAClE,IAAA,QAAA,CAAS,gBAAgB,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACpE,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,yBACb,QAAA,EAC6B;AAC7B,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,qCAAA,EAAwC,QAAQ,CAAA,CAAE,CAAA;AAC7E,IAAA,QAAA,CAAS,gBAAgB,CAAA,yBAAA,EAA4B,QAAQ,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAC9E,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACzBO,SAAS,mBAAmB,IAAA,EAAmC;AACpE,EAAA,eAAe,OAAO,IAAA,EAAwC;AAC5D,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,IAAA,CAAK,WAAW,IAAI,CAAA;AAC3C,IAAA,QAAA,CAAS,QAAA,EAAU,QAAA,EAAU,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAC1C,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,SAAS,KAAA,EAAiC;AACvD,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,qBAAA,EAAwB,KAAK,CAAA,CAAE,CAAA;AAC1D,IAAA,QAAA,CAAS,UAAU,CAAA,SAAA,EAAY,KAAK,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACrD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,aAAa,SAAA,EAAqC;AAC/D,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,yBAAA,EAA4B,SAAS,CAAA,CAAE,CAAA;AAClE,IAAA,QAAA,CAAS,UAAU,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAC7D,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,SAAS,OAAA,EAAuC;AAC7D,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,mBAAA,EAAsB,OAAO,CAAA,CAAE,CAAA;AAC1D,IAAA,QAAA,CAAS,UAAU,CAAA,SAAA,EAAY,OAAO,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACvD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,MAAA,CAAO,SAAiB,IAAA,EAAwC;AAC7E,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,CAAA,QAAA,EAAW,OAAO,IAAI,IAAI,CAAA;AACvD,IAAA,QAAA,CAAS,UAAU,CAAA,OAAA,EAAU,OAAO,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACrD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,aAAA,CACb,SACA,IAAA,EACuB;AACvB,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,CAAA,gBAAA,EAAmB,OAAO,IAAI,IAAI,CAAA;AAC/D,IAAA,QAAA,CAAS,UAAU,CAAA,cAAA,EAAiB,OAAO,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AAC5D,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,UAAA,CACb,QACA,IAAA,EACoB;AACpB,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,CAAA,mBAAA,EAAsB,MAAM,IAAI,IAAI,CAAA;AACjE,IAAA,QAAA,CAAS,UAAU,CAAA,WAAA,EAAc,MAAM,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACxD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,YAAY,OAAA,EAAiC;AAC1D,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAA,CAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AAClD,IAAA,QAAA,CAAS,UAAU,CAAA,OAAA,EAAU,OAAO,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACrD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,eAAe,WAAW,MAAA,EAAoC;AAC5D,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAA,CAAO,CAAA,mBAAA,EAAsB,MAAM,CAAA,CAAE,CAAA;AAC5D,IAAA,QAAA,CAAS,UAAU,CAAA,WAAA,EAAc,MAAM,CAAA,CAAA,EAAI,GAAA,CAAI,KAAK,IAAI,CAAA;AACxD,IAAA,OAAO,IAAI,IAAA,CAAK,IAAA;AAAA,EAClB;AAEA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA,EAAQ,WAAA;AAAA,IACR;AAAA,GACF;AACF;;;ACjFO,SAAS,sBACd,MAAA,EACuB;AACvB,EAAA,MAAM,IAAA,GAAO,iBAAiB,MAAM,CAAA;AAEpC,EAAA,QAAA,CAAS,OAAO,aAAA,EAAe;AAAA,IAC7B,OAAA,EAAS,OAAO,OAAA,IAAW;AAAA,GAC5B,CAAA;AAED,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,mBAAmB,IAAI,CAAA;AAAA,IAC/B,YAAA,EAAc,yBAAyB,IAAI,CAAA;AAAA,IAC3C,mBAAA,EAAqB,gCAAgC,IAAI,CAAA;AAAA,IACzD,QAAA,EAAU,qBAAqB,IAAI,CAAA;AAAA,IACnC,MAAA,EAAQ,mBAAmB,IAAI,CAAA;AAAA,IAC/B,YAAA,EAAc,yBAAyB,IAAI;AAAA,GAC7C;AACF;AAEA,IAAM,eAAA,GAAkB;AAAA,EACtB,OAAO,MAAA,EAAsD;AAC3D,IAAA,OAAO,sBAAsB,MAAM,CAAA;AAAA,EACrC;AACF,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"index.js","sourcesContent":["/**\r\n * SDK Error factories.\r\n */\r\n\r\nexport interface OdysseyError extends Error {\r\n readonly code: string;\r\n}\r\n\r\nfunction makeError(\r\n name: string,\r\n code: string,\r\n message: string,\r\n cause?: unknown,\r\n): OdysseyError {\r\n const err = new Error(message) as OdysseyError;\r\n err.name = name;\r\n (err as any).code = code;\r\n if (cause !== undefined) (err as any).cause = cause;\r\n return err;\r\n}\r\n\r\n/** Generic SDK error — use when no specific category fits */\r\nexport function createSDKError(\r\n message: string,\r\n code = \"SDK_ERROR\",\r\n cause?: unknown,\r\n): OdysseyError {\r\n return makeError(\"OdysseySDKError\", code, message, cause);\r\n}\r\n\r\n/** Thrown when the API key is missing, invalid, or rejected by the server */\r\nexport function createAuthError(\r\n message: string,\r\n cause?: unknown,\r\n): OdysseyError {\r\n return makeError(\"OdysseyAuthError\", \"AUTH_ERROR\", message, cause);\r\n}\r\n\r\n/** Thrown when the HTTP request itself fails (network, timeout, 5xx) */\r\nexport function createRequestError(\r\n message: string,\r\n cause?: unknown,\r\n): OdysseyError {\r\n return makeError(\"OdysseyRequestError\", \"REQUEST_ERROR\", message, cause);\r\n}\r\n\r\n/** Thrown when the server returns a 4xx for bad input data */\r\nexport function createValidationError(\r\n message: string,\r\n cause?: unknown,\r\n): OdysseyError {\r\n return makeError(\r\n \"OdysseyValidationError\",\r\n \"VALIDATION_ERROR\",\r\n message,\r\n cause,\r\n );\r\n}\r\n\r\n/** Thrown for upload-specific failures (initiate, complete, abort) */\r\nexport function createUploadError(\r\n message: string,\r\n cause?: unknown,\r\n): OdysseyError {\r\n return makeError(\"OdysseyUploadError\", \"UPLOAD_ERROR\", message, cause);\r\n}\r\n\r\n/** Thrown when SDK_BASE_URL or apiKey is not configured correctly */\r\nexport function createConfigError(\r\n message: string,\r\n cause?: unknown,\r\n): OdysseyError {\r\n return makeError(\"OdysseyConfigError\", \"INVALID_CONFIG\", message, cause);\r\n}\r\n\r\n/** Type guard — works for all Odyssey error factories */\r\nexport function isOdysseyError(err: unknown): err is OdysseyError {\r\n return err instanceof Error && \"code\" in err;\r\n}\r\n","/**\r\n * Centralised debug logging utility.\r\n */\r\n\r\ndeclare global {\r\n interface Window {\r\n ODYSSEY_DEBUG?: boolean;\r\n }\r\n}\r\n\r\nexport const isDebugEnabled = (): boolean => {\r\n // Node.js environment\r\n if (typeof process !== \"undefined\" && process.env?.ODYSSEY_DEBUG === \"true\") {\r\n return true;\r\n }\r\n // Browser environment\r\n if (typeof window !== \"undefined\" && window.ODYSSEY_DEBUG === true) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const debugLog = (\r\n category: string,\r\n message: string,\r\n data?: unknown,\r\n): void => {\r\n if (!isDebugEnabled()) return;\r\n const timestamp = new Date().toISOString().slice(11, 23);\r\n if (data !== undefined) {\r\n } else {\r\n }\r\n};\r\n","/**\r\n * HTTP client factory.\r\n *\r\n * Creates and configures the axios instance used by all modules.\r\n * Handles:\r\n * - Base URL (baked in at build time)\r\n * - API key injection on every request via header\r\n * - Timeout\r\n * - Response unwrapping (your backend wraps all responses in { data: ... })\r\n * - Error normalization into OdysseyError types\r\n */\r\n\r\nimport axios, { AxiosInstance, AxiosError } from \"axios\";\r\nimport { OrganizationSDKConfig } from \"../types\";\r\nimport {\r\n createAuthError,\r\n createConfigError,\r\n createRequestError,\r\n createValidationError,\r\n createUploadError,\r\n} from \"../errors\";\r\nimport { debugLog } from \"../utils\";\r\n\r\n// ─── Build-time URL ───────────────────────────────────────────────────────────\r\n\r\ndeclare const process: { env: { ASSET_MANAGER_BASE_URL: string } };\r\nconst BASE_URL: string = process.env.ASSET_MANAGER_BASE_URL;\r\n\r\n// ─── Factory ──────────────────────────────────────────────────────────────────\r\n\r\nexport function createHttpClient(config: OrganizationSDKConfig): AxiosInstance {\r\n if (!BASE_URL) {\r\n throw createConfigError(\r\n \"[SDK] Base URL not configured. This SDK build is missing ORGANIZATION_BASE_URL.\",\r\n );\r\n }\r\n\r\n if (\r\n !config.apiKey ||\r\n typeof config.apiKey !== \"string\" ||\r\n !config.apiKey.trim()\r\n ) {\r\n throw createConfigError(\"[SDK] A valid apiKey is required.\");\r\n }\r\n\r\n const client = axios.create({\r\n baseURL: BASE_URL,\r\n timeout: config.timeout ?? 30_000,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"x-sdk-key\": config.apiKey.trim(),\r\n },\r\n });\r\n\r\n // ── Request interceptor — debug logging ───────────────────────────────────\r\n client.interceptors.request.use((req) => {\r\n debugLog(\r\n \"HTTP\",\r\n `→ ${req.method?.toUpperCase()} ${req.url}`,\r\n req.params ?? req.data,\r\n );\r\n return req;\r\n });\r\n\r\n // ── Response interceptor — unwrap + normalize errors ──────────────────────\r\n client.interceptors.response.use(\r\n (res) => {\r\n debugLog(\"HTTP\", `← ${res.status} ${res.config.url}`);\r\n return res;\r\n },\r\n (err: AxiosError) => {\r\n const status = err.response?.status;\r\n const message =\r\n (err.response?.data as any)?.message ?? err.message ?? \"Unknown error\";\r\n const url = err.config?.url ?? \"\";\r\n\r\n debugLog(\"HTTP\", `← ERROR ${status ?? \"network\"} ${url}`, message);\r\n\r\n if (!status) {\r\n // Network error — no response received at all\r\n throw createRequestError(\r\n `[SDK] Network error reaching ${url}: ${message}`,\r\n err,\r\n );\r\n }\r\n\r\n if (status === 401 || status === 403) {\r\n throw createAuthError(\r\n `[SDK] Authentication failed (${status}): ${message}`,\r\n err,\r\n );\r\n }\r\n\r\n if (status === 422 || status === 400) {\r\n throw createValidationError(\r\n `[SDK] Validation error (${status}): ${message}`,\r\n err,\r\n );\r\n }\r\n\r\n throw createRequestError(\r\n `[SDK] Request failed (${status}): ${message}`,\r\n err,\r\n );\r\n },\r\n );\r\n\r\n return client;\r\n}\r\n","/**\r\n * Health module — server and Redis health checks.\r\n */\r\n\r\nimport { AxiosInstance } from \"axios\";\r\nimport { HealthResponse, RedisHealthResponse } from \"../types\";\r\nimport { debugLog } from \"../utils\";\r\n\r\nexport interface HealthHandle {\r\n getHealth(): Promise<HealthResponse>;\r\n getRedisHealth(): Promise<RedisHealthResponse>;\r\n testRedis(): Promise<void>;\r\n}\r\n\r\nexport function createHealthModule(http: AxiosInstance): HealthHandle {\r\n async function getHealth(): Promise<HealthResponse> {\r\n const res = await http.get(\"/health\");\r\n debugLog(\"Health\", \"getHealth\", res.data.data);\r\n return res.data.data;\r\n }\r\n\r\n async function getRedisHealth(): Promise<RedisHealthResponse> {\r\n const res = await http.get(\"/health/redis\");\r\n debugLog(\"Health\", \"getRedisHealth\", res.data.data);\r\n return res.data.data;\r\n }\r\n\r\n async function testRedis(): Promise<void> {\r\n await http.post(\"/health/redis/test\");\r\n debugLog(\"Health\", \"testRedis — OK\");\r\n }\r\n\r\n return {\r\n getHealth,\r\n getRedisHealth,\r\n testRedis,\r\n };\r\n}\r\n","/**\n * Organization invites module — operations for managing organization invitations.\n */\n\nimport { AxiosInstance } from \"axios\";\n\nimport { debugLog } from \"../utils\";\nimport { CreateOrganizationInviteInput, OrganizationInvite } from \"../types/organization.invite.types\";\n\nexport interface OrganizationInvitesHandle {\n create(data: CreateOrganizationInviteInput): Promise<OrganizationInvite>;\n accept(inviteId: string): Promise<OrganizationInvite>;\n reject(inviteId: string): Promise<OrganizationInvite>;\n getPendingUsers(orgId: string): Promise<OrganizationInvite[]>;\n getPendingUserByInviteId(inviteId: string): Promise<OrganizationInvite | null>;\n}\n\nexport function createOrganizationInvitesModule(\n http: AxiosInstance,\n): OrganizationInvitesHandle {\n async function create(\n data: CreateOrganizationInviteInput,\n ): Promise<OrganizationInvite> {\n const res = await http.post(\"/organizations-invite\", data);\n debugLog(\"OrganizationInvites\", \"create\", res.data.data);\n return res.data.data;\n }\n\n async function accept(inviteId: string): Promise<OrganizationInvite> {\n const res = await http.put(`/organizations-invite/accept-invite/${inviteId}`);\n debugLog(\"OrganizationInvites\", `accept:${inviteId}`, res.data.data);\n return res.data.data;\n }\n\n async function reject(inviteId: string): Promise<OrganizationInvite> {\n const res = await http.put(`/organizations-invite/reject-invite/${inviteId}`);\n debugLog(\"OrganizationInvites\", `reject:${inviteId}`, res.data.data);\n return res.data.data;\n }\n\n async function getPendingUsers(orgId: string): Promise<OrganizationInvite[]> {\n const res = await http.get(`/organizations-invite/pending-user/${orgId}`);\n debugLog(\"OrganizationInvites\", `getPendingUsers:${orgId}`, res.data.data);\n return res.data.data;\n }\n\n async function getPendingUserByInviteId(\n inviteId: string,\n ): Promise<OrganizationInvite | null> {\n const res = await http.get(\n `/organizations-invite/pending-user-by-invite/${inviteId}`,\n );\n debugLog(\n \"OrganizationInvites\",\n `getPendingUserByInviteId:${inviteId}`,\n res.data.data,\n );\n return res.data.data;\n }\n\n return {\n create,\n accept,\n reject,\n getPendingUsers,\n getPendingUserByInviteId,\n };\n}\n","/**\n * Organization module — CRUD operations for organizations and organization users.\n */\n\nimport { AxiosInstance } from \"axios\";\nimport {\n \n \n PaginationQuery,\n \n} from \"../types\";\nimport { debugLog } from \"../utils\";\nimport { OrganizationListResult, CreateOrganizationInput, Organization, OrganizationUser, UpdateOrganizationInput } from \"../types/organization.types\";\nimport { OrganizationByUserResult, UpdateOrganizationUserInput } from \"../types/organization.user.types\";\n\nexport interface OrganizationHandle {\n create(data: CreateOrganizationInput): Promise<Organization>;\n getAll(query?: PaginationQuery): Promise<OrganizationListResult>;\n getById(id: string): Promise<Organization>;\n getByUser(): Promise<OrganizationByUserResult[]>;\n getUsers(orgId: string): Promise<OrganizationUser[]>;\n update(id: string, data: UpdateOrganizationInput): Promise<Organization>;\n updateUser(\n userId: string,\n data: UpdateOrganizationUserInput,\n ): Promise<OrganizationUser>;\n delete(id: string): Promise<Organization>;\n deleteUser(userId: string): Promise<OrganizationUser>;\n}\n\nexport function createOrganizationModule(http: AxiosInstance): OrganizationHandle {\n async function create(data: CreateOrganizationInput): Promise<Organization> {\n const res = await http.post(\"/organizations\", data);\n debugLog(\"Organization\", \"create\", res.data.data);\n return res.data.data;\n }\n\n async function getAll(query?: PaginationQuery): Promise<OrganizationListResult> {\n const res = await http.get(\"/organizations\", { params: query });\n debugLog(\"Organization\", \"getAll\", res.data.data);\n return res.data.data;\n }\n\n async function getById(id: string): Promise<Organization> {\n const res = await http.get(`/organizations/${id}`);\n debugLog(\"Organization\", `getById:${id}`, res.data.data);\n return res.data.data;\n }\n\n async function getByUser(): Promise<OrganizationByUserResult[]> {\n const res = await http.get(\"/organizations/user-org\");\n debugLog(\"Organization\", \"getByUser\", res.data.data);\n return res.data.data;\n }\n\n async function getUsers(orgId: string): Promise<OrganizationUser[]> {\n const res = await http.get(`/organizations/org-user/${orgId}`);\n debugLog(\"Organization\", `getUsers:${orgId}`, res.data.data);\n return res.data.data;\n }\n\n async function update(\n id: string,\n data: UpdateOrganizationInput,\n ): Promise<Organization> {\n const res = await http.patch(`/organizations/${id}`, data);\n debugLog(\"Organization\", `update:${id}`, res.data.data);\n return res.data.data;\n }\n\n async function updateUser(\n userId: string,\n data: UpdateOrganizationUserInput,\n ): Promise<OrganizationUser> {\n const res = await http.patch(`/organizations/org-user/${userId}`, data);\n debugLog(\"Organization\", `updateUser:${userId}`, res.data.data);\n return res.data.data;\n }\n\n async function deleteOrganization(id: string): Promise<Organization> {\n const res = await http.delete(`/organizations/${id}`);\n debugLog(\"Organization\", `delete:${id}`, res.data.data);\n return res.data.data;\n }\n\n async function deleteUser(userId: string): Promise<OrganizationUser> {\n const res = await http.delete(`/organizations/org-user/${userId}`);\n debugLog(\"Organization\", `deleteUser:${userId}`, res.data.data);\n return res.data.data;\n }\n\n return {\n create,\n getAll,\n getById,\n getByUser,\n getUsers,\n update,\n updateUser,\n delete: deleteOrganization,\n deleteUser,\n };\n}\n","/**\n * Projects module — CRUD operations for projects.\n */\n\nimport { AxiosInstance } from \"axios\";\nimport {\n CreateProjectInput,\n PaginationQuery,\n Project,\n ProjectListResult,\n UpdateProjectInput,\n} from \"../types\";\nimport { debugLog } from \"../utils\";\n\nexport interface ProjectsHandle {\n create(data: CreateProjectInput): Promise<Project>;\n getByOrg(orgId: string, query?: PaginationQuery): Promise<ProjectListResult>;\n getById(projectId: string): Promise<Project>;\n update(projectId: string, data: UpdateProjectInput): Promise<Project>;\n delete(projectId: string): Promise<Project>;\n}\n\nexport function createProjectsModule(http: AxiosInstance): ProjectsHandle {\n async function create(data: CreateProjectInput): Promise<Project> {\n const res = await http.post(\"/projects\", data);\n debugLog(\"Projects\", \"create\", res.data.data);\n return res.data.data;\n }\n\n async function getByOrg(\n orgId: string,\n query?: PaginationQuery,\n ): Promise<ProjectListResult> {\n const res = await http.get(`/projects/organization/${orgId}`, {\n params: query,\n });\n debugLog(\"Projects\", `getByOrg:${orgId}`, res.data.data);\n return res.data.data;\n }\n\n async function getById(projectId: string): Promise<Project> {\n const res = await http.get(`/projects/${projectId}`);\n debugLog(\"Projects\", `getById:${projectId}`, res.data.data);\n return res.data.data;\n }\n\n async function update(\n projectId: string,\n data: UpdateProjectInput,\n ): Promise<Project> {\n const res = await http.patch(`/projects/${projectId}`, data);\n debugLog(\"Projects\", `update:${projectId}`, res.data.data);\n return res.data.data;\n }\n\n async function deleteProject(projectId: string): Promise<Project> {\n const res = await http.delete(`/projects/${projectId}`);\n debugLog(\"Projects\", `delete:${projectId}`, res.data.data);\n return res.data.data;\n }\n\n return {\n create,\n getByOrg,\n getById,\n update,\n delete: deleteProject,\n };\n}\n","/**\n * Space invites module — operations for managing space invitations.\n */\n\nimport { AxiosInstance } from \"axios\";\nimport { CreateSpaceInviteInput, SpaceInvite } from \"../types\";\nimport { debugLog } from \"../utils\";\n\nexport interface SpaceInvitesHandle {\n create(data: CreateSpaceInviteInput): Promise<SpaceInvite>;\n accept(inviteId: string): Promise<SpaceInvite>;\n reject(inviteId: string): Promise<SpaceInvite>;\n getPendingUsers(spaceId: string): Promise<SpaceInvite[]>;\n getPendingUserByInviteId(inviteId: string): Promise<SpaceInvite | null>;\n}\n\nexport function createSpaceInvitesModule(http: AxiosInstance): SpaceInvitesHandle {\n async function create(data: CreateSpaceInviteInput): Promise<SpaceInvite> {\n const res = await http.post(\"/space-invite\", data);\n debugLog(\"SpaceInvites\", \"create\", res.data.data);\n return res.data.data;\n }\n\n async function accept(inviteId: string): Promise<SpaceInvite> {\n const res = await http.put(`/space-invite/accept-invite/${inviteId}`);\n debugLog(\"SpaceInvites\", `accept:${inviteId}`, res.data.data);\n return res.data.data;\n }\n\n async function reject(inviteId: string): Promise<SpaceInvite> {\n const res = await http.put(`/space-invite/reject-invite/${inviteId}`);\n debugLog(\"SpaceInvites\", `reject:${inviteId}`, res.data.data);\n return res.data.data;\n }\n\n async function getPendingUsers(spaceId: string): Promise<SpaceInvite[]> {\n const res = await http.get(`/space-invite/pending-user/${spaceId}`);\n debugLog(\"SpaceInvites\", `getPendingUsers:${spaceId}`, res.data.data);\n return res.data.data;\n }\n\n async function getPendingUserByInviteId(\n inviteId: string,\n ): Promise<SpaceInvite | null> {\n const res = await http.get(`/space-invite/pending-user-by-invite/${inviteId}`);\n debugLog(\"SpaceInvites\", `getPendingUserByInviteId:${inviteId}`, res.data.data);\n return res.data.data;\n }\n\n return {\n create,\n accept,\n reject,\n getPendingUsers,\n getPendingUserByInviteId,\n };\n}\n","/**\n * Spaces module — CRUD operations for spaces, settings, and space users.\n */\n\nimport { AxiosInstance } from \"axios\";\nimport {\n CreateSpaceInput,\n Space,\n SpaceSetting,\n SpaceUser,\n UpdateSpaceInput,\n UpdateSpaceSettingInput,\n UpdateSpaceUserInput,\n} from \"../types\";\nimport { debugLog } from \"../utils\";\n\nexport interface SpacesHandle {\n create(data: CreateSpaceInput): Promise<Space>;\n getByOrg(orgId: string): Promise<Space[]>;\n getByProject(projectId: string): Promise<Space[]>;\n getUsers(spaceId: string): Promise<SpaceUser[]>;\n update(spaceId: string, data: UpdateSpaceInput): Promise<Space>;\n updateSetting(\n spaceId: string,\n data: UpdateSpaceSettingInput,\n ): Promise<SpaceSetting>;\n updateUser(userId: string, data: UpdateSpaceUserInput): Promise<SpaceUser>;\n delete(spaceId: string): Promise<Space>;\n deleteUser(userId: string): Promise<SpaceUser>;\n}\n\nexport function createSpacesModule(http: AxiosInstance): SpacesHandle {\n async function create(data: CreateSpaceInput): Promise<Space> {\n const res = await http.post(\"/spaces\", data);\n debugLog(\"Spaces\", \"create\", res.data.data);\n return res.data.data;\n }\n\n async function getByOrg(orgId: string): Promise<Space[]> {\n const res = await http.get(`/spaces/space-by-org/${orgId}`);\n debugLog(\"Spaces\", `getByOrg:${orgId}`, res.data.data);\n return res.data.data;\n }\n\n async function getByProject(projectId: string): Promise<Space[]> {\n const res = await http.get(`/spaces/space-by-project/${projectId}`);\n debugLog(\"Spaces\", `getByProject:${projectId}`, res.data.data);\n return res.data.data;\n }\n\n async function getUsers(spaceId: string): Promise<SpaceUser[]> {\n const res = await http.get(`/spaces/space-user/${spaceId}`);\n debugLog(\"Spaces\", `getUsers:${spaceId}`, res.data.data);\n return res.data.data;\n }\n\n async function update(spaceId: string, data: UpdateSpaceInput): Promise<Space> {\n const res = await http.patch(`/spaces/${spaceId}`, data);\n debugLog(\"Spaces\", `update:${spaceId}`, res.data.data);\n return res.data.data;\n }\n\n async function updateSetting(\n spaceId: string,\n data: UpdateSpaceSettingInput,\n ): Promise<SpaceSetting> {\n const res = await http.patch(`/spaces/setting/${spaceId}`, data);\n debugLog(\"Spaces\", `updateSetting:${spaceId}`, res.data.data);\n return res.data.data;\n }\n\n async function updateUser(\n userId: string,\n data: UpdateSpaceUserInput,\n ): Promise<SpaceUser> {\n const res = await http.patch(`/spaces/space-user/${userId}`, data);\n debugLog(\"Spaces\", `updateUser:${userId}`, res.data.data);\n return res.data.data;\n }\n\n async function deleteSpace(spaceId: string): Promise<Space> {\n const res = await http.delete(`/spaces/${spaceId}`);\n debugLog(\"Spaces\", `delete:${spaceId}`, res.data.data);\n return res.data.data;\n }\n\n async function deleteUser(userId: string): Promise<SpaceUser> {\n const res = await http.delete(`/spaces/space-user/${userId}`);\n debugLog(\"Spaces\", `deleteUser:${userId}`, res.data.data);\n return res.data.data;\n }\n\n return {\n create,\n getByOrg,\n getByProject,\n getUsers,\n update,\n updateSetting,\n updateUser,\n delete: deleteSpace,\n deleteUser,\n };\n}\n","import { createHttpClient } from \"./core/http\";\nimport { createHealthModule, HealthHandle } from \"./modules/health\";\nimport {\n createOrganizationInvitesModule,\n OrganizationInvitesHandle,\n} from \"./modules/organizationInvites\";\nimport { createOrganizationModule, OrganizationHandle } from \"./modules/organization\";\nimport { createProjectsModule, ProjectsHandle } from \"./modules/projects\";\nimport { createSpaceInvitesModule, SpaceInvitesHandle } from \"./modules/spaceInvites\";\nimport { createSpacesModule, SpacesHandle } from \"./modules/spaces\";\nimport { OrganizationSDKConfig } from \"./types\";\nimport { debugLog } from \"./utils\";\n\nexport interface OrganizationSDKHandle {\n health: HealthHandle;\n organization: OrganizationHandle;\n organizationInvites: OrganizationInvitesHandle;\n projects: ProjectsHandle;\n spaces: SpacesHandle;\n spaceInvites: SpaceInvitesHandle;\n}\n\nexport function createOrganizationSDK(\n config: OrganizationSDKConfig,\n): OrganizationSDKHandle {\n const http = createHttpClient(config);\n\n debugLog(\"SDK\", \"Initialized\", {\n timeout: config.timeout ?? 30_000,\n });\n\n return {\n health: createHealthModule(http),\n organization: createOrganizationModule(http),\n organizationInvites: createOrganizationInvitesModule(http),\n projects: createProjectsModule(http),\n spaces: createSpacesModule(http),\n spaceInvites: createSpaceInvitesModule(http),\n };\n}\n\nconst OrganizationSDK = {\n create(config: OrganizationSDKConfig): OrganizationSDKHandle {\n return createOrganizationSDK(config);\n },\n} as const;\n\nexport default OrganizationSDK;\n\nexport type {\n CreateOrganizationInput,\n CreateOrganizationInviteInput,\n CreateProjectInput,\n CreateSpaceInput,\n CreateSpaceInviteInput,\n HealthResponse,\n AvatarControlSystem,\n AvatarType,\n InviteStatus,\n InviteType,\n OdysseyMobileControls,\n Organization,\n OrganizationByUserResult,\n OrganizationConfiguration,\n OrganizationInvite,\n OrganizationListResult,\n OrganizationSDKConfig,\n OrganizationUser,\n PaginationMeta,\n PaginationQuery,\n Project,\n ProjectListResult,\n RedisHealthResponse,\n Space,\n SpaceInvite,\n SpaceSetting,\n SpaceUser,\n UpdateOrganizationInput,\n UpdateOrganizationUserInput,\n UpdateProjectInput,\n UpdateSpaceInput,\n UpdateSpaceSettingInput,\n UpdateSpaceUserInput,\n} from \"./types\";\n\nexport { isOdysseyError } from \"./errors\";\nexport type { OdysseyError } from \"./errors\";\n"]}
|