@web-marketing-hr/azure-devops-mcp 2.3.15 → 2.3.17
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/dist/tools/7pace.js +324 -0
- package/dist/tools/7pace.js.map +1 -0
- package/dist/tools.js +2 -0
- package/dist/tools.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
// ─── Konstante ────────────────────────────────────────────────────────────────
|
|
5
|
+
const SEVENP_TOOLS = {
|
|
6
|
+
log_time: "7pace_log_time",
|
|
7
|
+
log_time_distributed: "7pace_log_time_distributed",
|
|
8
|
+
get_logged_time: "7pace_get_logged_time",
|
|
9
|
+
delete_time_log: "7pace_delete_time_log",
|
|
10
|
+
};
|
|
11
|
+
const SEVENP_API_VERSION = "3.2";
|
|
12
|
+
// Activity types konfigurirani u 7pace Timetrackeru
|
|
13
|
+
const ACTIVITY_TYPES = [
|
|
14
|
+
"[Not Set]",
|
|
15
|
+
"Administration",
|
|
16
|
+
"Billable Development",
|
|
17
|
+
"Billable Requirements",
|
|
18
|
+
"Billable Slicing",
|
|
19
|
+
"Billable Support",
|
|
20
|
+
"Design",
|
|
21
|
+
"Development",
|
|
22
|
+
"Process",
|
|
23
|
+
"Requirements",
|
|
24
|
+
"Sales",
|
|
25
|
+
"Sales requirements",
|
|
26
|
+
"Slicing",
|
|
27
|
+
"Support",
|
|
28
|
+
"Testing",
|
|
29
|
+
];
|
|
30
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
31
|
+
function hoursToSeconds(hours) {
|
|
32
|
+
return Math.round(hours * 3600);
|
|
33
|
+
}
|
|
34
|
+
// Lokalni ISO datetime bez timezone — 7pace on-prem očekuje "2024-03-15T00:00:00"
|
|
35
|
+
function toTimestamp(dateStr) {
|
|
36
|
+
const d = dateStr ? new Date(dateStr) : new Date();
|
|
37
|
+
if (isNaN(d.getTime())) {
|
|
38
|
+
throw new Error(`Neispravan datum: "${dateStr}". Koristi format YYYY-MM-DD.`);
|
|
39
|
+
}
|
|
40
|
+
d.setHours(0, 0, 0, 0);
|
|
41
|
+
const pad = (n) => String(n).padStart(2, "0");
|
|
42
|
+
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T00:00:00`;
|
|
43
|
+
}
|
|
44
|
+
// Isti auth header pattern kao u workitems.ts
|
|
45
|
+
function buildAuthHeader(accessToken) {
|
|
46
|
+
const isBasicAuth = process.env["ADO_MCP_AUTH_TYPE"] === "basic";
|
|
47
|
+
return isBasicAuth ? `Basic ${Buffer.from(":" + accessToken).toString("base64")}` : `Bearer ${accessToken}`;
|
|
48
|
+
}
|
|
49
|
+
// Izvuci 7pace API base URL iz postojeće ADO konekcije — bez dodatnih parametara.
|
|
50
|
+
// serverUrl je npr. "http://tfsmoon.wem.local:8080/tfs/New"
|
|
51
|
+
// Collection name je zadnji segment patha (npr. "New").
|
|
52
|
+
// 7pace je na portu 8090 istog hosta: "http://tfsmoon.wem.local:8090/api/New/rest"
|
|
53
|
+
// Override moguć kroz ADO_7PACE_URL env varijablu (samo host+port, bez patha).
|
|
54
|
+
function get7paceApiBase(connection) {
|
|
55
|
+
const serverUrl = connection.serverUrl.replace(/\/$/, "");
|
|
56
|
+
const collection = serverUrl.split("/").pop() ?? "DefaultCollection";
|
|
57
|
+
if (process.env["ADO_7PACE_URL"]) {
|
|
58
|
+
return `${process.env["ADO_7PACE_URL"].replace(/\/$/, "")}/api/${collection}/rest`;
|
|
59
|
+
}
|
|
60
|
+
const url = new URL(serverUrl);
|
|
61
|
+
url.port = "8090";
|
|
62
|
+
url.pathname = "";
|
|
63
|
+
return `${url.origin}/api/${collection}/rest`;
|
|
64
|
+
}
|
|
65
|
+
async function sevenPaceFetch(method, apiBase, path, authHeader, userAgent, body) {
|
|
66
|
+
const url = `${apiBase}/${path}?api-version=${SEVENP_API_VERSION}`;
|
|
67
|
+
const response = await fetch(url, {
|
|
68
|
+
method,
|
|
69
|
+
headers: {
|
|
70
|
+
"Authorization": authHeader,
|
|
71
|
+
"Content-Type": "application/json",
|
|
72
|
+
"Accept": "application/json",
|
|
73
|
+
"User-Agent": userAgent,
|
|
74
|
+
},
|
|
75
|
+
...(body !== undefined ? { body: JSON.stringify(body) } : {}),
|
|
76
|
+
});
|
|
77
|
+
let data;
|
|
78
|
+
try {
|
|
79
|
+
const text = await response.text();
|
|
80
|
+
data = text ? JSON.parse(text) : null;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
data = null;
|
|
84
|
+
}
|
|
85
|
+
return { ok: response.ok, status: response.status, statusText: response.statusText, data };
|
|
86
|
+
}
|
|
87
|
+
// Dohvati ID activity typea po imenu — 7pace API prima ID, ne ime
|
|
88
|
+
async function resolveActivityTypeId(activityType, apiBase, authHeader, userAgent) {
|
|
89
|
+
if (!activityType || activityType === "[Not Set]")
|
|
90
|
+
return undefined;
|
|
91
|
+
const res = await sevenPaceFetch("GET", apiBase, "activityTypes", authHeader, userAgent);
|
|
92
|
+
if (!res.ok) {
|
|
93
|
+
throw new Error(`Ne mogu dohvatiti activity types: HTTP ${res.status} ${res.statusText}`);
|
|
94
|
+
}
|
|
95
|
+
const body = res.data;
|
|
96
|
+
const match = body.data?.find((at) => at.name.toLowerCase() === activityType.toLowerCase());
|
|
97
|
+
if (!match) {
|
|
98
|
+
throw new Error(`Activity type "${activityType}" nije pronađen. Dostupni: ${body.data?.map((a) => a.name).join(", ")}`);
|
|
99
|
+
}
|
|
100
|
+
return match.id;
|
|
101
|
+
}
|
|
102
|
+
// ─── Tool konfiguracija ───────────────────────────────────────────────────────
|
|
103
|
+
function configure7paceTools(server, tokenProvider, connectionProvider, userAgentProvider) {
|
|
104
|
+
// ── 1. log_time ──────────────────────────────────────────────────────────────
|
|
105
|
+
server.tool(SEVENP_TOOLS.log_time, "Upiši sate rada na određeni ADO task u 7pace Timetracker. " + "Primjer: 'zapiši na task 12345 3 sata developmenta'.", {
|
|
106
|
+
workItemId: z.number().describe("ID work itema (taska) na koji se upisuju sati."),
|
|
107
|
+
hours: z.number().positive().describe("Broj sati za upisati. Decimalni unos podržan (npr. 1.5 = sat i pol)."),
|
|
108
|
+
activityType: z
|
|
109
|
+
.enum(ACTIVITY_TYPES)
|
|
110
|
+
.optional()
|
|
111
|
+
.describe("Vrsta aktivnosti. Ako nije navedeno, koristi se '[Not Set]'. " + "Dostupne vrijednosti: " + ACTIVITY_TYPES.filter((a) => a !== "[Not Set]").join(", ") + "."),
|
|
112
|
+
date: z.string().optional().describe("Datum rada u formatu YYYY-MM-DD. Defaultno: danas."),
|
|
113
|
+
comment: z.string().optional().describe("Opcionalni komentar / opis obavljenog rada."),
|
|
114
|
+
}, async ({ workItemId, hours, activityType, date, comment }) => {
|
|
115
|
+
try {
|
|
116
|
+
const [connection, accessToken] = await Promise.all([connectionProvider(), tokenProvider()]);
|
|
117
|
+
const apiBase = get7paceApiBase(connection);
|
|
118
|
+
const authHeader = buildAuthHeader(accessToken);
|
|
119
|
+
const activityTypeId = await resolveActivityTypeId(activityType, apiBase, authHeader, userAgentProvider());
|
|
120
|
+
const body = {
|
|
121
|
+
workItemId,
|
|
122
|
+
length: hoursToSeconds(hours),
|
|
123
|
+
timestamp: toTimestamp(date),
|
|
124
|
+
};
|
|
125
|
+
if (activityTypeId)
|
|
126
|
+
body.activityTypeId = activityTypeId;
|
|
127
|
+
if (comment)
|
|
128
|
+
body.comment = comment;
|
|
129
|
+
const res = await sevenPaceFetch("POST", apiBase, "workLogs", authHeader, userAgentProvider(), body);
|
|
130
|
+
if (!res.ok) {
|
|
131
|
+
return {
|
|
132
|
+
content: [{ type: "text", text: `Greška pri upisivanju sati: HTTP ${res.status} ${res.statusText}\n${JSON.stringify(res.data, null, 2)}` }],
|
|
133
|
+
isError: true,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const logData = res.data;
|
|
137
|
+
return {
|
|
138
|
+
content: [
|
|
139
|
+
{
|
|
140
|
+
type: "text",
|
|
141
|
+
text: JSON.stringify({
|
|
142
|
+
success: true,
|
|
143
|
+
workItemId,
|
|
144
|
+
hours,
|
|
145
|
+
activityType: activityType ?? "[Not Set]",
|
|
146
|
+
date: toTimestamp(date),
|
|
147
|
+
logId: logData?.data?.id ?? null,
|
|
148
|
+
comment: comment ?? null,
|
|
149
|
+
}, null, 2),
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
return {
|
|
156
|
+
content: [{ type: "text", text: `Greška pri upisivanju sati: ${error instanceof Error ? error.message : "Nepoznata greška"}` }],
|
|
157
|
+
isError: true,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
// ── 2. log_time_distributed ──────────────────────────────────────────────────
|
|
162
|
+
server.tool(SEVENP_TOOLS.log_time_distributed, "Rasporedi ukupan broj sati ravnomjerno na više ADO taskova i upiši ih u 7pace Timetracker. " +
|
|
163
|
+
"Primjer: 'danas sam radio na taskovima 12340, 12341, 12342, ukupno 6 sati developmenta, rasporedi ravnomjerno'.", {
|
|
164
|
+
workItemIds: z.array(z.number()).min(1).describe("Lista ID-eva work itema na koje se raspoređuju sati."),
|
|
165
|
+
totalHours: z.number().positive().describe("Ukupan broj sati koji se dijeli ravnomjerno na sve taskove."),
|
|
166
|
+
activityType: z
|
|
167
|
+
.enum(ACTIVITY_TYPES)
|
|
168
|
+
.optional()
|
|
169
|
+
.describe("Vrsta aktivnosti koja se primjenjuje na sve upisane stavke. " + "Dostupne vrijednosti: " + ACTIVITY_TYPES.filter((a) => a !== "[Not Set]").join(", ") + "."),
|
|
170
|
+
date: z.string().optional().describe("Datum rada u formatu YYYY-MM-DD. Defaultno: danas."),
|
|
171
|
+
comment: z.string().optional().describe("Opcionalni komentar koji se dodaje na sve stavke."),
|
|
172
|
+
}, async ({ workItemIds, totalHours, activityType, date, comment }) => {
|
|
173
|
+
try {
|
|
174
|
+
const [connection, accessToken] = await Promise.all([connectionProvider(), tokenProvider()]);
|
|
175
|
+
const apiBase = get7paceApiBase(connection);
|
|
176
|
+
const authHeader = buildAuthHeader(accessToken);
|
|
177
|
+
const activityTypeId = await resolveActivityTypeId(activityType, apiBase, authHeader, userAgentProvider());
|
|
178
|
+
const hoursPerTask = totalHours / workItemIds.length;
|
|
179
|
+
const secondsPerTask = hoursToSeconds(hoursPerTask);
|
|
180
|
+
const timestamp = toTimestamp(date);
|
|
181
|
+
const results = [];
|
|
182
|
+
for (const workItemId of workItemIds) {
|
|
183
|
+
try {
|
|
184
|
+
const body = { workItemId, length: secondsPerTask, timestamp };
|
|
185
|
+
if (activityTypeId)
|
|
186
|
+
body.activityTypeId = activityTypeId;
|
|
187
|
+
if (comment)
|
|
188
|
+
body.comment = comment;
|
|
189
|
+
const res = await sevenPaceFetch("POST", apiBase, "workLogs", authHeader, userAgentProvider(), body);
|
|
190
|
+
if (!res.ok) {
|
|
191
|
+
results.push({ workItemId, hours: hoursPerTask, success: false, error: `HTTP ${res.status} ${res.statusText}` });
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
const logData = res.data;
|
|
195
|
+
results.push({ workItemId, hours: hoursPerTask, success: true, logId: logData?.data?.id ?? undefined });
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
results.push({
|
|
200
|
+
workItemId,
|
|
201
|
+
hours: hoursPerTask,
|
|
202
|
+
success: false,
|
|
203
|
+
error: error instanceof Error ? error.message : "Nepoznata greška",
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const successCount = results.filter((r) => r.success).length;
|
|
208
|
+
const failCount = results.length - successCount;
|
|
209
|
+
return {
|
|
210
|
+
content: [
|
|
211
|
+
{
|
|
212
|
+
type: "text",
|
|
213
|
+
text: JSON.stringify({
|
|
214
|
+
summary: {
|
|
215
|
+
totalHours,
|
|
216
|
+
hoursPerTask: Math.round(hoursPerTask * 100) / 100,
|
|
217
|
+
activityType: activityType ?? "[Not Set]",
|
|
218
|
+
tasksTotal: workItemIds.length,
|
|
219
|
+
tasksSuccess: successCount,
|
|
220
|
+
tasksFailed: failCount,
|
|
221
|
+
date: timestamp,
|
|
222
|
+
},
|
|
223
|
+
results,
|
|
224
|
+
}, null, 2),
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
isError: failCount > 0 && successCount === 0,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
return {
|
|
232
|
+
content: [{ type: "text", text: `Greška pri raspoređivanju sati: ${error instanceof Error ? error.message : "Nepoznata greška"}` }],
|
|
233
|
+
isError: true,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
// ── 3. get_logged_time ───────────────────────────────────────────────────────
|
|
238
|
+
server.tool(SEVENP_TOOLS.get_logged_time, "Dohvati upisane sate iz 7pace Timetrackera. Može filtrirati po work itemu i/ili datumu.", {
|
|
239
|
+
workItemId: z.number().optional().describe("Opcionalni ID work itema. Ako nije naveden, vraća logove trenutnog korisnika."),
|
|
240
|
+
date: z.string().optional().describe("Točan datum u formatu YYYY-MM-DD."),
|
|
241
|
+
dateFrom: z.string().optional().describe("Početni datum raspona (YYYY-MM-DD)."),
|
|
242
|
+
dateTo: z.string().optional().describe("Završni datum raspona (YYYY-MM-DD)."),
|
|
243
|
+
top: z.number().optional().default(50).describe("Maksimalni broj rezultata. Defaultno 50."),
|
|
244
|
+
}, async ({ workItemId, date, dateFrom, dateTo, top }) => {
|
|
245
|
+
try {
|
|
246
|
+
const [connection, accessToken] = await Promise.all([connectionProvider(), tokenProvider()]);
|
|
247
|
+
const apiBase = get7paceApiBase(connection);
|
|
248
|
+
const authHeader = buildAuthHeader(accessToken);
|
|
249
|
+
const params = [`api-version=${SEVENP_API_VERSION}`, `$count=${top}`];
|
|
250
|
+
if (workItemId)
|
|
251
|
+
params.push(`$workItemIds=${workItemId}`);
|
|
252
|
+
if (date && !dateFrom && !dateTo) {
|
|
253
|
+
const d = new Date(toTimestamp(date));
|
|
254
|
+
const next = new Date(d);
|
|
255
|
+
next.setDate(next.getDate() + 1);
|
|
256
|
+
const pad = (n) => String(n).padStart(2, "0");
|
|
257
|
+
params.push(`$fromTimestamp=${toTimestamp(date)}`);
|
|
258
|
+
params.push(`$toTimestamp=${next.getFullYear()}-${pad(next.getMonth() + 1)}-${pad(next.getDate())}T00:00:00`);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
if (dateFrom)
|
|
262
|
+
params.push(`$fromTimestamp=${toTimestamp(dateFrom)}`);
|
|
263
|
+
if (dateTo)
|
|
264
|
+
params.push(`$toTimestamp=${toTimestamp(dateTo)}`);
|
|
265
|
+
}
|
|
266
|
+
const url = `${apiBase}/workLogs?${params.join("&")}`;
|
|
267
|
+
const response = await fetch(url, {
|
|
268
|
+
headers: {
|
|
269
|
+
"Authorization": authHeader,
|
|
270
|
+
"Accept": "application/json",
|
|
271
|
+
"User-Agent": userAgentProvider(),
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
let data;
|
|
275
|
+
try {
|
|
276
|
+
data = response.ok ? await response.json() : await response.text();
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
data = null;
|
|
280
|
+
}
|
|
281
|
+
if (!response.ok) {
|
|
282
|
+
return {
|
|
283
|
+
content: [{ type: "text", text: `Greška pri dohvatu logova: HTTP ${response.status} ${response.statusText}\n${JSON.stringify(data, null, 2)}` }],
|
|
284
|
+
isError: true,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
return {
|
|
291
|
+
content: [{ type: "text", text: `Greška pri dohvatu logova: ${error instanceof Error ? error.message : "Nepoznata greška"}` }],
|
|
292
|
+
isError: true,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
// ── 4. delete_time_log ───────────────────────────────────────────────────────
|
|
297
|
+
server.tool(SEVENP_TOOLS.delete_time_log, "Obriši postojeći unos sati iz 7pace Timetrackera po ID-u loga.", {
|
|
298
|
+
logId: z.string().describe("ID unosa sati koji se briše (GUID, dohvatljiv iz get_logged_time)."),
|
|
299
|
+
}, async ({ logId }) => {
|
|
300
|
+
try {
|
|
301
|
+
const [connection, accessToken] = await Promise.all([connectionProvider(), tokenProvider()]);
|
|
302
|
+
const apiBase = get7paceApiBase(connection);
|
|
303
|
+
const authHeader = buildAuthHeader(accessToken);
|
|
304
|
+
const res = await sevenPaceFetch("DELETE", apiBase, `workLogs/${logId}`, authHeader, userAgentProvider());
|
|
305
|
+
if (!res.ok) {
|
|
306
|
+
return {
|
|
307
|
+
content: [{ type: "text", text: `Greška pri brisanju loga: HTTP ${res.status} ${res.statusText}\n${JSON.stringify(res.data, null, 2)}` }],
|
|
308
|
+
isError: true,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
return {
|
|
312
|
+
content: [{ type: "text", text: JSON.stringify({ success: true, deletedLogId: logId }, null, 2) }],
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
return {
|
|
317
|
+
content: [{ type: "text", text: `Greška pri brisanju loga: ${error instanceof Error ? error.message : "Nepoznata greška"}` }],
|
|
318
|
+
isError: true,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
export { SEVENP_TOOLS, configure7paceTools };
|
|
324
|
+
//# sourceMappingURL=7pace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"7pace.js","sourceRoot":"","sources":["../../src/tools/7pace.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.js
CHANGED
|
@@ -11,6 +11,7 @@ import { configureWikiTools } from "./tools/wiki.js";
|
|
|
11
11
|
import { configureWorkTools } from "./tools/work.js";
|
|
12
12
|
import { configureWorkItemTools } from "./tools/work-items.js";
|
|
13
13
|
import { configureArchitectureTools } from "./tools/architecture.js";
|
|
14
|
+
import { configure7paceTools } from "./tools/7pace.js";
|
|
14
15
|
function configureAllTools(server, tokenProvider, connectionProvider, userAgentProvider, enabledDomains) {
|
|
15
16
|
const configureIfDomainEnabled = (domain, configureFn) => {
|
|
16
17
|
if (enabledDomains.has(domain)) {
|
|
@@ -27,6 +28,7 @@ function configureAllTools(server, tokenProvider, connectionProvider, userAgentP
|
|
|
27
28
|
configureIfDomainEnabled(Domain.SEARCH, () => configureSearchTools(server, tokenProvider, connectionProvider, userAgentProvider));
|
|
28
29
|
configureIfDomainEnabled(Domain.ADVANCED_SECURITY, () => configureAdvSecTools(server, tokenProvider, connectionProvider));
|
|
29
30
|
configureArchitectureTools(server);
|
|
31
|
+
configure7paceTools(server, tokenProvider, connectionProvider, userAgentProvider);
|
|
30
32
|
}
|
|
31
33
|
export { configureAllTools };
|
|
32
34
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,SAAS,iBAAiB,CAAC,MAAiB,EAAE,aAAoC,EAAE,kBAAyC,EAAE,iBAA+B,EAAE,cAA2B;IACzL,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAAE,WAAuB,EAAE,EAAE;QAC3E,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9H,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC3G,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACvI,wBAAwB,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACtI,wBAAwB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACxI,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9H,wBAAwB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACrH,wBAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAClI,wBAAwB,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC1H,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;AACpF,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const packageVersion = "2.3.
|
|
1
|
+
export const packageVersion = "2.3.17";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED