pdfpipe-mcp-server 0.3.0 → 0.3.2
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/index.js +59 -84
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* MCP server for PDFPipe (https://pdfpipe.xyz).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* Exposes a single high-value tool, `pdfpipe_generate_pdf`, that turns HTML or
|
|
6
|
+
* a public URL into a PDF document via the PDFPipe REST API and writes it to a
|
|
7
|
+
* path the agent chooses. Built so an AI agent can produce an invoice, report,
|
|
8
|
+
* or certificate in one tool call.
|
|
9
9
|
*
|
|
10
10
|
* Auth: set PDFPIPE_API_KEY. Override the host with PDFPIPE_BASE_URL.
|
|
11
11
|
*/
|
|
@@ -13,8 +13,8 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
13
13
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
14
14
|
import { z } from "zod";
|
|
15
15
|
import axios from "axios";
|
|
16
|
-
import {
|
|
17
|
-
import { dirname, isAbsolute, resolve } from "node:path";
|
|
16
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
17
|
+
import { dirname, isAbsolute, resolve, sep } from "node:path";
|
|
18
18
|
const BASE_URL = (process.env.PDFPIPE_BASE_URL || "https://api.pdfpipe.xyz").replace(/\/$/, "");
|
|
19
19
|
const REQUEST_TIMEOUT_MS = 60_000;
|
|
20
20
|
const PAGE_FORMATS = ["A4", "A3", "A5", "Letter", "Legal", "Tabloid"];
|
|
@@ -50,9 +50,7 @@ const GeneratePdfInput = z
|
|
|
50
50
|
store: z
|
|
51
51
|
.boolean()
|
|
52
52
|
.default(false)
|
|
53
|
-
.describe("If true, persist the PDF for later retrieval via pdfpipe_get_document. "
|
|
54
|
-
"Returns document_id, document_url, and document_expires. " +
|
|
55
|
-
"Retention by plan: hobby 1 day, starter 30 days, growth 1 year, scale 2 years."),
|
|
53
|
+
.describe("If true, persist the PDF for later retrieval via pdfpipe_get_document. Returns document_id, document_url, and document_expires."),
|
|
56
54
|
filename: z
|
|
57
55
|
.string()
|
|
58
56
|
.max(200)
|
|
@@ -66,6 +64,10 @@ const GeneratePdfInput = z
|
|
|
66
64
|
.string()
|
|
67
65
|
.optional()
|
|
68
66
|
.describe("HTML rendered as a running page footer. Same class substitution as header_html."),
|
|
67
|
+
print_background: z
|
|
68
|
+
.boolean()
|
|
69
|
+
.default(true)
|
|
70
|
+
.describe("Print background graphics and colors. Default true."),
|
|
69
71
|
tabular_nums: z
|
|
70
72
|
.boolean()
|
|
71
73
|
.default(false)
|
|
@@ -73,7 +75,7 @@ const GeneratePdfInput = z
|
|
|
73
75
|
deduplicate_images: z
|
|
74
76
|
.boolean()
|
|
75
77
|
.default(false)
|
|
76
|
-
.describe("Merge identical image XObjects in the output PDF. Reduces file size when the same image
|
|
78
|
+
.describe("Merge identical image XObjects in the output PDF. Reduces file size when the same image appears on many pages. Default false."),
|
|
77
79
|
pdf_a: z
|
|
78
80
|
.boolean()
|
|
79
81
|
.default(false)
|
|
@@ -152,7 +154,7 @@ server.registerTool("pdfpipe_generate_pdf", {
|
|
|
152
154
|
|
|
153
155
|
Use this to produce invoices, receipts, reports, certificates, statements, or any document, from HTML you compose or a web page you point at. The rendering runs server-side in a sandboxed browser, so the calling agent does not need a browser.
|
|
154
156
|
|
|
155
|
-
Pass store: true to persist the PDF and receive a document_id for later retrieval
|
|
157
|
+
Pass store: true to persist the PDF and receive a document_id for later retrieval.
|
|
156
158
|
|
|
157
159
|
Args:
|
|
158
160
|
- html (string, optional): Raw HTML to render. Provide html OR url, not both.
|
|
@@ -169,7 +171,9 @@ Args:
|
|
|
169
171
|
- store (boolean, optional): Persist the PDF for later retrieval, default false.
|
|
170
172
|
- filename (string, optional): Filename for the stored document (used with store: true).
|
|
171
173
|
|
|
172
|
-
Returns JSON with output_path, size_bytes, plan, usage, limit, and optionally document_id/document_url/document_expires when store is true
|
|
174
|
+
Returns JSON with output_path, size_bytes, plan, usage, limit, and optionally document_id/document_url/document_expires when store is true.
|
|
175
|
+
|
|
176
|
+
Errors return a message starting with "Error:" explaining the cause (bad key, limit reached, render failure, unreachable API).`,
|
|
173
177
|
inputSchema: GeneratePdfInput.shape,
|
|
174
178
|
outputSchema: GeneratePdfOutput.shape,
|
|
175
179
|
annotations: {
|
|
@@ -192,13 +196,27 @@ Returns JSON with output_path, size_bytes, plan, usage, limit, and optionally do
|
|
|
192
196
|
content: [{ type: "text", text: "Error: Provide 'html' or 'url', not both." }],
|
|
193
197
|
};
|
|
194
198
|
}
|
|
199
|
+
// Validate and sandbox output_path before any network call (covers both relative and absolute).
|
|
200
|
+
const safeCwd = resolve(process.cwd());
|
|
201
|
+
const absPath = isAbsolute(params.output_path)
|
|
202
|
+
? resolve(params.output_path)
|
|
203
|
+
: resolve(safeCwd, params.output_path);
|
|
204
|
+
if (!absPath.startsWith(safeCwd + sep) && absPath !== safeCwd) {
|
|
205
|
+
return {
|
|
206
|
+
isError: true,
|
|
207
|
+
content: [{ type: "text", text: "Error: output_path must not escape the working directory." }],
|
|
208
|
+
};
|
|
209
|
+
}
|
|
195
210
|
try {
|
|
196
|
-
|
|
211
|
+
// When store: true the API returns JSON (not PDF bytes).
|
|
212
|
+
const responseType = params.store ? "json" : "arraybuffer";
|
|
213
|
+
const response = await axios.post(`${BASE_URL}/v1/pdf`, {
|
|
197
214
|
...(params.html ? { html: params.html } : { url: params.url }),
|
|
198
215
|
options: {
|
|
199
216
|
format: params.format,
|
|
200
217
|
landscape: params.landscape,
|
|
201
218
|
margin: params.margin,
|
|
219
|
+
print_background: params.print_background,
|
|
202
220
|
...(params.header_html ? { header_html: params.header_html } : {}),
|
|
203
221
|
...(params.footer_html ? { footer_html: params.footer_html } : {}),
|
|
204
222
|
...(params.tabular_nums ? { tabular_nums: true } : {}),
|
|
@@ -207,28 +225,41 @@ Returns JSON with output_path, size_bytes, plan, usage, limit, and optionally do
|
|
|
207
225
|
},
|
|
208
226
|
...(params.store ? { store: true } : {}),
|
|
209
227
|
...(params.filename ? { filename: params.filename } : {}),
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
responseType: "arraybuffer",
|
|
228
|
+
}, {
|
|
229
|
+
responseType,
|
|
213
230
|
timeout: REQUEST_TIMEOUT_MS,
|
|
214
231
|
headers: {
|
|
215
232
|
Authorization: `Bearer ${apiKey()}`,
|
|
216
233
|
"Content-Type": "application/json",
|
|
217
|
-
Accept: "application/pdf",
|
|
234
|
+
Accept: params.store ? "application/json" : "application/pdf",
|
|
218
235
|
},
|
|
219
236
|
});
|
|
220
|
-
const buffer = Buffer.from(response.data);
|
|
221
|
-
const absPath = isAbsolute(params.output_path)
|
|
222
|
-
? params.output_path
|
|
223
|
-
: resolve(process.cwd(), params.output_path);
|
|
224
|
-
mkdirSync(dirname(absPath), { recursive: true });
|
|
225
|
-
writeFileSync(absPath, buffer);
|
|
226
|
-
const h = response.headers;
|
|
227
237
|
const num = (v) => {
|
|
228
238
|
const n = Number(v);
|
|
229
239
|
return Number.isFinite(n) ? n : undefined;
|
|
230
240
|
};
|
|
231
|
-
const str = (v) =>
|
|
241
|
+
const str = (v) => typeof v === "string" && v ? v : undefined;
|
|
242
|
+
if (params.store) {
|
|
243
|
+
const data = response.data;
|
|
244
|
+
const output = {
|
|
245
|
+
output_path: absPath,
|
|
246
|
+
size_bytes: num(data["size_bytes"]) ?? 0,
|
|
247
|
+
plan: str(data["plan"]),
|
|
248
|
+
usage: num(data["used"]),
|
|
249
|
+
limit: num(data["limit"]),
|
|
250
|
+
document_id: str(data["document_id"]),
|
|
251
|
+
document_url: str(data["document_url"]),
|
|
252
|
+
document_expires: str(data["document_expires"]),
|
|
253
|
+
};
|
|
254
|
+
return {
|
|
255
|
+
content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
|
|
256
|
+
structuredContent: output,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
const buffer = Buffer.from(response.data);
|
|
260
|
+
await mkdir(dirname(absPath), { recursive: true });
|
|
261
|
+
await writeFile(absPath, buffer);
|
|
262
|
+
const h = response.headers;
|
|
232
263
|
const output = {
|
|
233
264
|
output_path: absPath,
|
|
234
265
|
size_bytes: buffer.length,
|
|
@@ -251,67 +282,10 @@ Returns JSON with output_path, size_bytes, plan, usage, limit, and optionally do
|
|
|
251
282
|
};
|
|
252
283
|
}
|
|
253
284
|
});
|
|
254
|
-
server.registerTool("pdfpipe_list_documents", {
|
|
255
|
-
title: "List archived PDFs",
|
|
256
|
-
description: "List PDFs previously stored with store: true. Returns up to 100 documents per page, newest first. Use the next_before cursor for pagination.",
|
|
257
|
-
inputSchema: z.object({
|
|
258
|
-
limit: z.number().int().min(1).max(100).default(100).describe("Max documents to return (1-100)."),
|
|
259
|
-
before: z.string().optional().describe("ISO 8601 cursor: return documents created before this timestamp. Use next_before from a previous response."),
|
|
260
|
-
}).shape,
|
|
261
|
-
annotations: { readOnlyHint: true },
|
|
262
|
-
}, async (params) => {
|
|
263
|
-
try {
|
|
264
|
-
const qs = new URLSearchParams({ limit: String(params.limit) });
|
|
265
|
-
if (params.before) qs.set("before", params.before);
|
|
266
|
-
const res = await axios.get(`${BASE_URL}/v1/documents?${qs}`, {
|
|
267
|
-
timeout: REQUEST_TIMEOUT_MS,
|
|
268
|
-
headers: { Authorization: `Bearer ${apiKey()}` },
|
|
269
|
-
});
|
|
270
|
-
return {
|
|
271
|
-
content: [{ type: "text", text: JSON.stringify(res.data, null, 2) }],
|
|
272
|
-
structuredContent: res.data,
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
catch (error) {
|
|
276
|
-
return { isError: true, content: [{ type: "text", text: describeError(error) }] };
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
server.registerTool("pdfpipe_get_document", {
|
|
280
|
-
title: "Retrieve an archived PDF",
|
|
281
|
-
description: "Download a previously archived PDF by its document_id and save it to disk.",
|
|
282
|
-
inputSchema: z.object({
|
|
283
|
-
document_id: z.string().min(1).describe("The document_id returned by pdfpipe_generate_pdf when store was true."),
|
|
284
|
-
output_path: z.string().min(1).describe("Filesystem path to write the PDF to. Parent dirs are created."),
|
|
285
|
-
}).shape,
|
|
286
|
-
annotations: { readOnlyHint: false },
|
|
287
|
-
}, async (params) => {
|
|
288
|
-
try {
|
|
289
|
-
const res = await axios.get(`${BASE_URL}/v1/documents/${encodeURIComponent(params.document_id)}`, {
|
|
290
|
-
responseType: "arraybuffer",
|
|
291
|
-
timeout: REQUEST_TIMEOUT_MS,
|
|
292
|
-
headers: { Authorization: `Bearer ${apiKey()}`, Accept: "application/pdf" },
|
|
293
|
-
});
|
|
294
|
-
const buffer = Buffer.from(res.data);
|
|
295
|
-
const absPath = isAbsolute(params.output_path)
|
|
296
|
-
? params.output_path
|
|
297
|
-
: resolve(process.cwd(), params.output_path);
|
|
298
|
-
mkdirSync(dirname(absPath), { recursive: true });
|
|
299
|
-
writeFileSync(absPath, buffer);
|
|
300
|
-
const output = { output_path: absPath, size_bytes: buffer.length };
|
|
301
|
-
return {
|
|
302
|
-
content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
|
|
303
|
-
structuredContent: output,
|
|
304
|
-
};
|
|
305
|
-
}
|
|
306
|
-
catch (error) {
|
|
307
|
-
return { isError: true, content: [{ type: "text", text: describeError(error) }] };
|
|
308
|
-
}
|
|
309
|
-
});
|
|
310
285
|
async function main() {
|
|
311
|
-
// Fail fast with a clear message if the key is missing.
|
|
312
286
|
if (!process.env.PDFPIPE_API_KEY) {
|
|
313
|
-
console.error("
|
|
314
|
-
|
|
287
|
+
console.error("Error: PDFPIPE_API_KEY is not set. Get a key at https://pdfpipe.xyz.");
|
|
288
|
+
process.exit(1);
|
|
315
289
|
}
|
|
316
290
|
const transport = new StdioServerTransport();
|
|
317
291
|
await server.connect(transport);
|
|
@@ -321,3 +295,4 @@ main().catch((error) => {
|
|
|
321
295
|
console.error("Fatal:", error);
|
|
322
296
|
process.exit(1);
|
|
323
297
|
});
|
|
298
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE9D,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,yBAAyB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChG,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AAE/E,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,0EAA0E,CAAC;IACvF,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,uEAAuE;QACrE,4CAA4C,CAC/C;IACH,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,YAAY,CAAC;SAClB,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,wBAAwB,CAAC;IACrC,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+EAA+E,CAAC;IAC5F,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,iIAAiI,CAAC;IAC9I,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+EAA+E,CAAC;IAC5F,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iJAAiJ,CAAC;IAC9J,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iFAAiF,CAAC;IAC9F,gBAAgB,EAAE,CAAC;SAChB,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,qDAAqD,CAAC;IAClE,YAAY,EAAE,CAAC;SACZ,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,wIAAwI,CAAC;IACrJ,kBAAkB,EAAE,CAAC;SAClB,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+HAA+H,CAAC;IAC5I,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,qFAAqF,CAAC;CACnG,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACpF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACxF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;CACzG,CAAC,CAAC;AAEH,SAAS,MAAM;IACb,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,0EAA0E;YACxE,gCAAgC,CACnC,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAmB,CAAC;QAC9B,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACf,mDAAmD;YACnD,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAe,CAAC;YACxC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACzD,MAAM,GAAG,MAAM,CAAE,IAA4B,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAClE,CAAC;gBAAC,MAAM,CAAC;oBACP,6BAA6B;gBAC/B,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC1B,KAAK,GAAG;oBACN,OAAO,uBAAuB,MAAM,IAAI,yCAAyC,EAAE,CAAC;gBACtF,KAAK,GAAG;oBACN,OAAO,2DAA2D,CAAC;gBACrE,KAAK,GAAG;oBACN,OAAO,0CAA0C,MAAM,IAAI,2CAA2C,EAAE,CAAC;gBAC3G,KAAK,GAAG;oBACN,OAAO,6BAA6B,MAAM,IAAI,uBAAuB,EAAE,CAAC;gBAC1E,KAAK,GAAG;oBACN,OAAO,yCAAyC,MAAM,IAAI,4CAA4C,EAAE,CAAC;gBAC3G,KAAK,GAAG;oBACN,OAAO,qDAAqD,CAAC;gBAC/D;oBACE,OAAO,+BAA+B,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAChF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC9B,OAAO,uFAAuF,CAAC;QACjG,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACxD,OAAO,6CAA6C,QAAQ,+CAA+C,CAAC;QAC9G,CAAC;IACH,CAAC;IACD,OAAO,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;IACE,KAAK,EAAE,6BAA6B;IACpC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;+HAuB8G;IAC3H,WAAW,EAAE,gBAAgB,CAAC,KAAK;IACnC,YAAY,EAAE,iBAAiB,CAAC,KAAK;IACrC,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;KACpB;CACF,EACD,KAAK,EAAE,MAAwB,EAAE,EAAE;IACjC,6BAA6B;IAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC;SACrF,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,2CAA2C,EAAE,CAAC;SACxF,CAAC;IACJ,CAAC;IAED,gGAAgG;IAChG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5C,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;QAC7B,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC9D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,2DAA2D,EAAE,CAAC;SACxG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAC/B,GAAG,QAAQ,SAAS,EACpB;YACE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YAC9D,OAAO,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzC;YACD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,EACD;YACE,YAAY;YACZ,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;gBACnC,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB;aAC9D;SACF,CACF,CAAC;QAEF,MAAM,GAAG,GAAG,CAAC,CAAU,EAAsB,EAAE;YAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,CAAC,CAAU,EAAsB,EAAE,CAC7C,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE7C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAA+B,CAAC;YACtD,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,OAAO;gBACpB,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;gBACxC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvB,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxB,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzB,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvC,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAChD,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC3E,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAmB,CAAC,CAAC;QACzD,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEjC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC3B,MAAM,MAAM,GAAG;YACb,WAAW,EAAE,OAAO;YACpB,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC9B,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAChC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAChC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;YAC5C,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;YAC9C,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;SACvD,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3E,iBAAiB,EAAE,MAAM;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;SACjE,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED