@theyahia/megaplan-mcp 3.0.0 → 4.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/LICENSE +21 -21
- package/README.md +119 -157
- package/dist/client.d.ts +3 -13
- package/dist/client.js +224 -82
- package/dist/client.js.map +1 -1
- package/dist/format.d.ts +12 -0
- package/dist/format.js +148 -0
- package/dist/format.js.map +1 -0
- package/dist/http.d.ts +3 -0
- package/dist/http.js +152 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +2 -13
- package/dist/index.js +97 -23
- package/dist/index.js.map +1 -1
- package/dist/meta.d.ts +2 -0
- package/dist/meta.js +5 -0
- package/dist/meta.js.map +1 -0
- package/dist/prompts.d.ts +7 -0
- package/dist/prompts.js +22 -0
- package/dist/prompts.js.map +1 -0
- package/dist/query.d.ts +32 -0
- package/dist/query.js +61 -0
- package/dist/query.js.map +1 -0
- package/dist/tools/comments.d.ts +9 -7
- package/dist/tools/comments.js +18 -21
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/contractors.d.ts +35 -0
- package/dist/tools/contractors.js +39 -0
- package/dist/tools/contractors.js.map +1 -0
- package/dist/tools/deals.d.ts +53 -8
- package/dist/tools/deals.js +71 -23
- package/dist/tools/deals.js.map +1 -1
- package/dist/tools/employees.d.ts +7 -5
- package/dist/tools/employees.js +16 -12
- package/dist/tools/employees.js.map +1 -1
- package/dist/tools/me.d.ts +9 -0
- package/dist/tools/me.js +26 -0
- package/dist/tools/me.js.map +1 -0
- package/dist/tools/programs.d.ts +26 -0
- package/dist/tools/programs.js +25 -0
- package/dist/tools/programs.js.map +1 -0
- package/dist/tools/projects.d.ts +21 -8
- package/dist/tools/projects.js +26 -13
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/tasks.d.ts +49 -10
- package/dist/tools/tasks.js +62 -20
- package/dist/tools/tasks.js.map +1 -1
- package/dist/types.d.ts +44 -53
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/package.json +69 -63
- package/dist/client.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/server.d.ts +0 -9
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -73
- package/dist/server.js.map +0 -1
- package/dist/tools/comments.d.ts.map +0 -1
- package/dist/tools/deals.d.ts.map +0 -1
- package/dist/tools/employees.d.ts.map +0 -1
- package/dist/tools/projects.d.ts.map +0 -1
- package/dist/tools/tasks.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/smithery.yaml +0 -33
package/dist/client.js
CHANGED
|
@@ -1,103 +1,245 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
const TIMEOUT = 15_000;
|
|
2
|
+
const MAX_RETRIES = 3;
|
|
3
|
+
// Show full upstream response bodies in logs/errors only when explicitly enabled.
|
|
4
|
+
// Deliberately scoped to MEGAPLAN_DEBUG so a generic DEBUG=* doesn't log bodies.
|
|
5
|
+
const DEBUG = Boolean(process.env.MEGAPLAN_DEBUG);
|
|
6
|
+
let cachedToken = null;
|
|
7
|
+
// Single in-flight auth, shared by concurrent callers (avoids a thundering herd
|
|
8
|
+
// of password grants on cold start / after a 401 invalidation).
|
|
9
|
+
let authPromise = null;
|
|
10
|
+
/** Test helper: reset cached auth state between cases. */
|
|
11
|
+
export function __resetAuth() {
|
|
12
|
+
cachedToken = null;
|
|
13
|
+
authPromise = null;
|
|
14
|
+
}
|
|
15
|
+
function isStaticToken() {
|
|
16
|
+
return Boolean(process.env.MEGAPLAN_TOKEN);
|
|
17
|
+
}
|
|
13
18
|
function getDomain() {
|
|
14
|
-
const
|
|
15
|
-
if (!
|
|
16
|
-
throw new Error("MEGAPLAN_DOMAIN is
|
|
19
|
+
const raw = process.env.MEGAPLAN_DOMAIN;
|
|
20
|
+
if (!raw)
|
|
21
|
+
throw new Error("MEGAPLAN_DOMAIN is not set");
|
|
22
|
+
let domain = raw.replace(/^https?:\/\//i, "").replace(/\/+$/, "").trim();
|
|
23
|
+
// Config-time SSRF guard: a bare host[:port] only — no path, credentials, or spaces.
|
|
24
|
+
if (!/^[a-zA-Z0-9.\-]+(:[0-9]+)?$/.test(domain)) {
|
|
25
|
+
throw new Error(`MEGAPLAN_DOMAIN is invalid: "${raw}". Provide a bare host like "yourcompany" or "yourcompany.megaplan.ru".`);
|
|
17
26
|
}
|
|
18
|
-
|
|
27
|
+
// A bare subdomain ("yourcompany") is expanded to "yourcompany.megaplan.ru".
|
|
28
|
+
if (!domain.includes("."))
|
|
29
|
+
domain = `${domain}.megaplan.ru`;
|
|
30
|
+
return domain;
|
|
19
31
|
}
|
|
20
32
|
function getBaseUrl() {
|
|
21
33
|
return `https://${getDomain()}/api/v3`;
|
|
22
34
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
*/
|
|
29
|
-
class MegaplanAuthStrategy {
|
|
30
|
-
type = "megaplan_password_grant";
|
|
31
|
-
cachedToken = null;
|
|
32
|
-
invalidate() {
|
|
33
|
-
this.cachedToken = null;
|
|
35
|
+
async function authenticate() {
|
|
36
|
+
const login = process.env.MEGAPLAN_LOGIN;
|
|
37
|
+
const password = process.env.MEGAPLAN_PASSWORD;
|
|
38
|
+
if (!login || !password) {
|
|
39
|
+
throw new Error("Either MEGAPLAN_TOKEN or (MEGAPLAN_LOGIN + MEGAPLAN_PASSWORD) must be set");
|
|
34
40
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
// The v3 access_token endpoint expects form fields, not a JSON body. We send
|
|
42
|
+
// application/x-www-form-urlencoded (the OAuth2 password-grant standard).
|
|
43
|
+
// TODO(live-verify): if an account rejects urlencoded, switch to multipart
|
|
44
|
+
// FormData (the form the official curl example shows) or JSON.
|
|
45
|
+
const body = new URLSearchParams({
|
|
46
|
+
username: login,
|
|
47
|
+
password,
|
|
48
|
+
grant_type: "password",
|
|
49
|
+
});
|
|
50
|
+
const controller = new AbortController();
|
|
51
|
+
const timer = setTimeout(() => controller.abort(), TIMEOUT);
|
|
52
|
+
let response;
|
|
53
|
+
try {
|
|
54
|
+
response = await fetch(`https://${getDomain()}/api/v3/auth/access_token`, {
|
|
42
55
|
method: "POST",
|
|
43
|
-
headers: {
|
|
44
|
-
body
|
|
45
|
-
|
|
46
|
-
password,
|
|
47
|
-
grant_type: "password",
|
|
48
|
-
}),
|
|
56
|
+
headers: { Accept: "application/json" },
|
|
57
|
+
body,
|
|
58
|
+
signal: controller.signal,
|
|
49
59
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
63
|
+
throw new Error("Megaplan auth timed out");
|
|
53
64
|
}
|
|
54
|
-
|
|
55
|
-
const token = data.access_token ?? data.data?.access_token;
|
|
56
|
-
if (!token)
|
|
57
|
-
throw new Error("Megaplan auth: no access_token in response.");
|
|
58
|
-
return token;
|
|
65
|
+
throw error;
|
|
59
66
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (envToken)
|
|
63
|
-
return envToken;
|
|
64
|
-
if (this.cachedToken)
|
|
65
|
-
return this.cachedToken;
|
|
66
|
-
this.cachedToken = await this.fetchTokenViaPasswordGrant();
|
|
67
|
-
return this.cachedToken;
|
|
67
|
+
finally {
|
|
68
|
+
clearTimeout(timer);
|
|
68
69
|
}
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
headers.set("Authorization", `Bearer ${token}`);
|
|
73
|
-
return { ...req, headers };
|
|
70
|
+
if (!response.ok) {
|
|
71
|
+
const text = await safeText(response);
|
|
72
|
+
throw new Error(`Megaplan auth failed (${response.status})${errorDetail(text)}`);
|
|
74
73
|
}
|
|
74
|
+
const data = (await response.json());
|
|
75
|
+
const token = data.access_token ?? data.data?.access_token;
|
|
76
|
+
if (!token)
|
|
77
|
+
throw new Error("Megaplan auth: no access_token in response");
|
|
78
|
+
return token;
|
|
75
79
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
async function getToken() {
|
|
81
|
+
const envToken = process.env.MEGAPLAN_TOKEN;
|
|
82
|
+
if (envToken)
|
|
83
|
+
return envToken;
|
|
84
|
+
if (cachedToken)
|
|
85
|
+
return cachedToken;
|
|
86
|
+
if (authPromise)
|
|
87
|
+
return authPromise;
|
|
88
|
+
authPromise = authenticate()
|
|
89
|
+
.then((token) => {
|
|
90
|
+
cachedToken = token;
|
|
91
|
+
return token;
|
|
92
|
+
})
|
|
93
|
+
.finally(() => {
|
|
94
|
+
authPromise = null;
|
|
85
95
|
});
|
|
86
|
-
|
|
87
|
-
let _client = null;
|
|
88
|
-
function getClient() {
|
|
89
|
-
if (!_client)
|
|
90
|
-
_client = buildClient();
|
|
91
|
-
return _client;
|
|
92
|
-
}
|
|
93
|
-
export function resetClient() {
|
|
94
|
-
_client = null;
|
|
95
|
-
authStrategy.invalidate();
|
|
96
|
+
return authPromise;
|
|
96
97
|
}
|
|
97
98
|
export async function megaplanGet(path, params) {
|
|
98
|
-
|
|
99
|
+
// v3 collection endpoints take a single JSON object (limit, filter, pageAfter,
|
|
100
|
+
// …) URL-encoded into the query string — not flat query params.
|
|
101
|
+
// TODO(live-verify): some accounts accept the raw `?{json}` form; percent-
|
|
102
|
+
// encoding is the safe default.
|
|
103
|
+
let query = "";
|
|
104
|
+
if (params && Object.keys(params).length > 0) {
|
|
105
|
+
query = `?${encodeURIComponent(JSON.stringify(params))}`;
|
|
106
|
+
}
|
|
107
|
+
return megaplanRequest("GET", `${path}${query}`);
|
|
99
108
|
}
|
|
100
109
|
export async function megaplanPost(path, body) {
|
|
101
|
-
return
|
|
110
|
+
return megaplanRequest("POST", path, body);
|
|
111
|
+
}
|
|
112
|
+
async function megaplanRequest(method, path, body) {
|
|
113
|
+
for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
|
|
114
|
+
const token = await getToken();
|
|
115
|
+
const controller = new AbortController();
|
|
116
|
+
const timer = setTimeout(() => controller.abort(), TIMEOUT);
|
|
117
|
+
let response;
|
|
118
|
+
try {
|
|
119
|
+
response = await fetch(`${getBaseUrl()}${path}`, {
|
|
120
|
+
method,
|
|
121
|
+
headers: {
|
|
122
|
+
Authorization: `Bearer ${token}`,
|
|
123
|
+
"Content-Type": "application/json",
|
|
124
|
+
Accept: "application/json",
|
|
125
|
+
},
|
|
126
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
127
|
+
signal: controller.signal,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
clearTimeout(timer);
|
|
132
|
+
if (isRetriableNetworkError(error) && attempt < MAX_RETRIES) {
|
|
133
|
+
if (DEBUG)
|
|
134
|
+
console.error(`[megaplan-mcp] network error, retry (${attempt}/${MAX_RETRIES})`);
|
|
135
|
+
await sleep(backoff(attempt));
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
throw normalizeNetworkError(error);
|
|
139
|
+
}
|
|
140
|
+
clearTimeout(timer);
|
|
141
|
+
if (response.status === 401) {
|
|
142
|
+
if (isStaticToken()) {
|
|
143
|
+
throw new Error("Megaplan HTTP 401: access token rejected (check MEGAPLAN_TOKEN).");
|
|
144
|
+
}
|
|
145
|
+
// login/password mode: invalidate only the token we actually used, then retry.
|
|
146
|
+
// We deliberately do NOT null authPromise here: leaving it intact lets
|
|
147
|
+
// concurrent 401s (e.g. a token expiring under load) share getToken's single
|
|
148
|
+
// in-flight re-auth instead of each kicking off its own auth request. The
|
|
149
|
+
// `=== token` guard avoids wiping a fresh token a peer already obtained.
|
|
150
|
+
if (cachedToken === token) {
|
|
151
|
+
cachedToken = null;
|
|
152
|
+
}
|
|
153
|
+
if (attempt < MAX_RETRIES) {
|
|
154
|
+
if (DEBUG)
|
|
155
|
+
console.error(`[megaplan-mcp] 401, re-authenticating (${attempt}/${MAX_RETRIES})`);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
const text = await safeText(response);
|
|
159
|
+
throw new Error(`Megaplan HTTP 401${errorDetail(text)}`);
|
|
160
|
+
}
|
|
161
|
+
if (response.ok)
|
|
162
|
+
return parseBody(response);
|
|
163
|
+
if ((response.status === 429 || response.status >= 500) && attempt < MAX_RETRIES) {
|
|
164
|
+
const delay = retryAfterDelay(response, attempt);
|
|
165
|
+
if (DEBUG) {
|
|
166
|
+
console.error(`[megaplan-mcp] ${response.status}, retry in ${delay}ms (${attempt}/${MAX_RETRIES})`);
|
|
167
|
+
}
|
|
168
|
+
await sleep(delay);
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
const text = await safeText(response);
|
|
172
|
+
throw new Error(`Megaplan HTTP ${response.status}${errorDetail(text)}`);
|
|
173
|
+
}
|
|
174
|
+
throw new Error("Megaplan: all retries exhausted");
|
|
175
|
+
}
|
|
176
|
+
// ── helpers ──
|
|
177
|
+
function sleep(ms) {
|
|
178
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
179
|
+
}
|
|
180
|
+
function backoff(attempt) {
|
|
181
|
+
return Math.min(1000 * 2 ** (attempt - 1), 8000);
|
|
182
|
+
}
|
|
183
|
+
function retryAfterDelay(response, attempt) {
|
|
184
|
+
const header = response.headers.get("retry-after");
|
|
185
|
+
if (header) {
|
|
186
|
+
const seconds = Number(header);
|
|
187
|
+
if (Number.isFinite(seconds))
|
|
188
|
+
return clampDelay(seconds * 1000);
|
|
189
|
+
const date = Date.parse(header);
|
|
190
|
+
if (!Number.isNaN(date))
|
|
191
|
+
return clampDelay(date - Date.now());
|
|
192
|
+
}
|
|
193
|
+
return backoff(attempt);
|
|
194
|
+
}
|
|
195
|
+
function clampDelay(ms) {
|
|
196
|
+
return Math.min(Math.max(ms, 0), 60_000);
|
|
197
|
+
}
|
|
198
|
+
function isRetriableNetworkError(error) {
|
|
199
|
+
// AbortError = our timeout fired; TypeError = undici "fetch failed"
|
|
200
|
+
// (ECONNRESET/ENOTFOUND/ECONNREFUSED/TLS hiccups).
|
|
201
|
+
if (error instanceof DOMException && error.name === "AbortError")
|
|
202
|
+
return true;
|
|
203
|
+
if (error instanceof TypeError)
|
|
204
|
+
return true;
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
function normalizeNetworkError(error) {
|
|
208
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
209
|
+
return new Error("Megaplan request timed out");
|
|
210
|
+
}
|
|
211
|
+
if (error instanceof Error)
|
|
212
|
+
return error;
|
|
213
|
+
return new Error(String(error));
|
|
214
|
+
}
|
|
215
|
+
async function parseBody(response) {
|
|
216
|
+
if (response.status === 204)
|
|
217
|
+
return null;
|
|
218
|
+
const text = await response.text();
|
|
219
|
+
if (!text)
|
|
220
|
+
return null;
|
|
221
|
+
try {
|
|
222
|
+
return JSON.parse(text);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
throw new Error(`Megaplan: expected JSON but got a non-JSON response (${response.status})${errorDetail(text)}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
async function safeText(response) {
|
|
229
|
+
try {
|
|
230
|
+
return await response.text();
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
return "";
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/** A short, sanitized snippet of an upstream error body for the thrown message. */
|
|
237
|
+
function errorDetail(text) {
|
|
238
|
+
if (!text)
|
|
239
|
+
return "";
|
|
240
|
+
if (DEBUG)
|
|
241
|
+
return `: ${text}`;
|
|
242
|
+
const snippet = text.replace(/\s+/g, " ").trim().slice(0, 200);
|
|
243
|
+
return snippet ? `: ${snippet}` : "";
|
|
102
244
|
}
|
|
103
245
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/format.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MegaplanTask, MegaplanDeal, MegaplanProject, MegaplanEmployee, MegaplanComment, MegaplanProgram, MegaplanClient } from "./types.js";
|
|
2
|
+
export declare function formatTask(e: unknown): MegaplanTask;
|
|
3
|
+
export declare function formatDeal(e: unknown): MegaplanDeal;
|
|
4
|
+
export declare function formatProject(e: unknown): MegaplanProject;
|
|
5
|
+
export declare function formatEmployee(e: unknown): MegaplanEmployee;
|
|
6
|
+
export declare function formatComment(e: unknown): MegaplanComment;
|
|
7
|
+
export declare function formatProgram(e: unknown): MegaplanProgram;
|
|
8
|
+
export declare function formatClient(e: unknown): MegaplanClient;
|
|
9
|
+
/** Unwrap a v3 `{meta, data}` list envelope into a compact summary string. */
|
|
10
|
+
export declare function formatList<T>(result: unknown, formatter: (e: unknown) => T, raw?: boolean): string;
|
|
11
|
+
/** Unwrap a v3 `{data: {...}}` single-entity envelope and format it. */
|
|
12
|
+
export declare function formatEntity<T>(result: unknown, formatter: (e: unknown) => T, raw?: boolean): string;
|
package/dist/format.js
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// Maps raw, verbose Megaplan v3 entities into the compact shapes in types.ts.
|
|
2
|
+
//
|
|
3
|
+
// All accessors are defensive (optional chaining + fallbacks): the exact v3
|
|
4
|
+
// field set varies by account, so an unknown/renamed field yields null rather
|
|
5
|
+
// than throwing. Every tool also exposes a `raw` escape hatch to bypass this.
|
|
6
|
+
function rec(v) {
|
|
7
|
+
return v && typeof v === "object" ? v : {};
|
|
8
|
+
}
|
|
9
|
+
function str(v) {
|
|
10
|
+
return v == null ? undefined : String(v);
|
|
11
|
+
}
|
|
12
|
+
/** A Megaplan reference object {id, contentType, name?} -> display string. */
|
|
13
|
+
function refName(v) {
|
|
14
|
+
if (v == null)
|
|
15
|
+
return null;
|
|
16
|
+
if (typeof v === "string" || typeof v === "number")
|
|
17
|
+
return String(v);
|
|
18
|
+
const r = rec(v);
|
|
19
|
+
return r.name ?? (r.id != null ? String(r.id) : null);
|
|
20
|
+
}
|
|
21
|
+
/** An enum/status value (string code or {name|value|code}) -> display string. */
|
|
22
|
+
function enumName(v) {
|
|
23
|
+
if (v == null)
|
|
24
|
+
return null;
|
|
25
|
+
if (typeof v === "string" || typeof v === "number")
|
|
26
|
+
return String(v);
|
|
27
|
+
const r = rec(v);
|
|
28
|
+
return r.name ?? r.value ?? r.code ?? null;
|
|
29
|
+
}
|
|
30
|
+
/** A DateTime/DateOnly object {value} (or a bare string) -> string. */
|
|
31
|
+
function dateVal(v) {
|
|
32
|
+
if (v == null)
|
|
33
|
+
return null;
|
|
34
|
+
if (typeof v === "string")
|
|
35
|
+
return v;
|
|
36
|
+
const r = rec(v);
|
|
37
|
+
return r.value ?? null;
|
|
38
|
+
}
|
|
39
|
+
/** A Money object {value, currency} (or a bare number) -> display string. */
|
|
40
|
+
function money(v) {
|
|
41
|
+
if (v == null)
|
|
42
|
+
return null;
|
|
43
|
+
if (typeof v === "number")
|
|
44
|
+
return String(v);
|
|
45
|
+
const r = rec(v);
|
|
46
|
+
if (r.value == null)
|
|
47
|
+
return null;
|
|
48
|
+
return r.currency ? `${r.value} ${r.currency}` : String(r.value);
|
|
49
|
+
}
|
|
50
|
+
export function formatTask(e) {
|
|
51
|
+
const t = rec(e);
|
|
52
|
+
return {
|
|
53
|
+
id: str(t.id) ?? "",
|
|
54
|
+
name: t.name,
|
|
55
|
+
status: enumName(t.status),
|
|
56
|
+
responsible: refName(t.responsible),
|
|
57
|
+
deadline: dateVal(t.deadline),
|
|
58
|
+
priority: enumName(t.priority),
|
|
59
|
+
created: dateVal(t.timeCreated ?? t.created),
|
|
60
|
+
modified: dateVal(t.timeUpdated ?? t.modified),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function formatDeal(e) {
|
|
64
|
+
const d = rec(e);
|
|
65
|
+
return {
|
|
66
|
+
id: str(d.id) ?? "",
|
|
67
|
+
name: d.name,
|
|
68
|
+
status: enumName(d.status ?? d.state),
|
|
69
|
+
price: money(d.price),
|
|
70
|
+
cost: money(d.cost),
|
|
71
|
+
responsible: refName(d.responsible),
|
|
72
|
+
contact: refName(d.contact),
|
|
73
|
+
contractor: refName(d.contractor),
|
|
74
|
+
created: dateVal(d.timeCreated ?? d.created),
|
|
75
|
+
modified: dateVal(d.timeUpdated ?? d.modified),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function formatProject(e) {
|
|
79
|
+
const p = rec(e);
|
|
80
|
+
return {
|
|
81
|
+
id: str(p.id) ?? "",
|
|
82
|
+
name: p.name,
|
|
83
|
+
status: enumName(p.status),
|
|
84
|
+
responsible: refName(p.responsible),
|
|
85
|
+
created: dateVal(p.timeCreated ?? p.created),
|
|
86
|
+
modified: dateVal(p.timeUpdated ?? p.modified),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export function formatEmployee(e) {
|
|
90
|
+
const m = rec(e);
|
|
91
|
+
return {
|
|
92
|
+
id: str(m.id) ?? "",
|
|
93
|
+
name: m.name ?? refName(m),
|
|
94
|
+
email: m.email ?? null,
|
|
95
|
+
department: refName(m.department),
|
|
96
|
+
position: enumName(m.position),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export function formatComment(e) {
|
|
100
|
+
const c = rec(e);
|
|
101
|
+
return {
|
|
102
|
+
id: str(c.id) ?? "",
|
|
103
|
+
content: c.content ?? c.text ?? null,
|
|
104
|
+
author: refName(c.author),
|
|
105
|
+
created: dateVal(c.timeCreated ?? c.created),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export function formatProgram(e) {
|
|
109
|
+
const p = rec(e);
|
|
110
|
+
return { id: str(p.id) ?? "", name: p.name };
|
|
111
|
+
}
|
|
112
|
+
export function formatClient(e) {
|
|
113
|
+
const c = rec(e);
|
|
114
|
+
return {
|
|
115
|
+
id: str(c.id) ?? "",
|
|
116
|
+
name: c.name ?? refName(c),
|
|
117
|
+
email: c.email ?? null,
|
|
118
|
+
phone: enumName(c.phone) ?? null,
|
|
119
|
+
type: c.contentType ?? null,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/** Unwrap a v3 `{meta, data}` list envelope into a compact summary string. */
|
|
123
|
+
export function formatList(result, formatter, raw) {
|
|
124
|
+
if (raw)
|
|
125
|
+
return JSON.stringify(result, null, 2);
|
|
126
|
+
const r = rec(result);
|
|
127
|
+
const data = Array.isArray(r.data) ? r.data : [];
|
|
128
|
+
const meta = rec(r.meta);
|
|
129
|
+
const pagination = rec(meta.pagination);
|
|
130
|
+
const items = data.map(formatter);
|
|
131
|
+
const last = rec(data[data.length - 1]);
|
|
132
|
+
const summary = {
|
|
133
|
+
total: meta.totalCount ?? pagination.count ?? items.length,
|
|
134
|
+
count: items.length,
|
|
135
|
+
items,
|
|
136
|
+
nextPageAfter: last.id != null ? String(last.id) : null,
|
|
137
|
+
};
|
|
138
|
+
return JSON.stringify(summary, null, 2);
|
|
139
|
+
}
|
|
140
|
+
/** Unwrap a v3 `{data: {...}}` single-entity envelope and format it. */
|
|
141
|
+
export function formatEntity(result, formatter, raw) {
|
|
142
|
+
if (raw)
|
|
143
|
+
return JSON.stringify(result, null, 2);
|
|
144
|
+
const r = rec(result);
|
|
145
|
+
const data = r.data !== undefined ? r.data : r;
|
|
146
|
+
return JSON.stringify(formatter(data), null, 2);
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
ADDED