mcp-ghost-optimized 1.0.1 → 1.1.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/dist/server.d.ts.map +1 -1
- package/dist/server.js +217 -0
- package/dist/server.js.map +1 -1
- package/dist/utils/sections.d.ts +65 -0
- package/dist/utils/sections.d.ts.map +1 -0
- package/dist/utils/sections.js +210 -0
- package/dist/utils/sections.js.map +1 -0
- package/package.json +2 -1
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6DpE,wBAAgB,YAAY,IAAI,SAAS,CAuvBxC"}
|
package/dist/server.js
CHANGED
|
@@ -8,6 +8,7 @@ import { z } from "zod";
|
|
|
8
8
|
import { GhostClient } from "./api/client.js";
|
|
9
9
|
import { POST_FIELDS, TAG_FIELDS } from "./utils/fields.js";
|
|
10
10
|
import { htmlToPlaintext } from "./utils/html.js";
|
|
11
|
+
import { extractStructure, findSection, appendToSection, replaceSection, generateDiffPreview, } from "./utils/sections.js";
|
|
11
12
|
export function createServer() {
|
|
12
13
|
const server = new McpServer({
|
|
13
14
|
name: "ghost-optimized",
|
|
@@ -270,6 +271,222 @@ export function createServer() {
|
|
|
270
271
|
};
|
|
271
272
|
});
|
|
272
273
|
// ============================================================
|
|
274
|
+
// POSTS SECTION TOOLS (Granular Editing)
|
|
275
|
+
// ============================================================
|
|
276
|
+
/**
|
|
277
|
+
* posts_get_structure - Get the structure of a post's sections
|
|
278
|
+
*/
|
|
279
|
+
server.tool("posts_get_structure", "Get the structure of a post showing all sections (headings) with word counts. Use this to understand the post layout before editing specific sections.", {
|
|
280
|
+
id: z.string().optional().describe("Post ID"),
|
|
281
|
+
slug: z.string().optional().describe("Post slug (alternative to ID)"),
|
|
282
|
+
}, async ({ id, slug }) => {
|
|
283
|
+
if (!id && !slug) {
|
|
284
|
+
throw new Error("Either id or slug must be provided");
|
|
285
|
+
}
|
|
286
|
+
const postId = id || `slug/${slug}`;
|
|
287
|
+
const result = await client.read("posts", postId, {
|
|
288
|
+
fields: ["id", "title", "slug", "html"],
|
|
289
|
+
formats: ["html"],
|
|
290
|
+
});
|
|
291
|
+
const post = result.posts?.[0];
|
|
292
|
+
if (!post?.html) {
|
|
293
|
+
throw new Error("Post not found or has no content");
|
|
294
|
+
}
|
|
295
|
+
const sections = extractStructure(post.html);
|
|
296
|
+
return {
|
|
297
|
+
content: [
|
|
298
|
+
{
|
|
299
|
+
type: "text",
|
|
300
|
+
text: JSON.stringify({
|
|
301
|
+
id: post.id,
|
|
302
|
+
title: post.title,
|
|
303
|
+
slug: post.slug,
|
|
304
|
+
sections: sections.map((s) => ({
|
|
305
|
+
level: s.level,
|
|
306
|
+
heading: s.text,
|
|
307
|
+
wordCount: s.wordCount,
|
|
308
|
+
hasCards: s.hasCards,
|
|
309
|
+
})),
|
|
310
|
+
}, null, 2),
|
|
311
|
+
},
|
|
312
|
+
],
|
|
313
|
+
};
|
|
314
|
+
});
|
|
315
|
+
/**
|
|
316
|
+
* posts_read_section - Read a specific section by heading
|
|
317
|
+
*/
|
|
318
|
+
server.tool("posts_read_section", "Read a specific section of a post by heading text. Uses fuzzy matching (ignores numbering like '2.' or 'II.'). Returns an error listing available headings if no match or multiple matches found.", {
|
|
319
|
+
id: z.string().optional().describe("Post ID"),
|
|
320
|
+
slug: z.string().optional().describe("Post slug (alternative to ID)"),
|
|
321
|
+
heading: z
|
|
322
|
+
.string()
|
|
323
|
+
.describe("Heading text to find (fuzzy match, e.g., 'Supabase' matches '2. Supabase')"),
|
|
324
|
+
}, async ({ id, slug, heading }) => {
|
|
325
|
+
if (!id && !slug) {
|
|
326
|
+
throw new Error("Either id or slug must be provided");
|
|
327
|
+
}
|
|
328
|
+
const postId = id || `slug/${slug}`;
|
|
329
|
+
const result = await client.read("posts", postId, {
|
|
330
|
+
fields: ["id", "title", "slug", "html"],
|
|
331
|
+
formats: ["html"],
|
|
332
|
+
});
|
|
333
|
+
const post = result.posts?.[0];
|
|
334
|
+
if (!post?.html) {
|
|
335
|
+
throw new Error("Post not found or has no content");
|
|
336
|
+
}
|
|
337
|
+
const { section, content } = findSection(post.html, heading);
|
|
338
|
+
return {
|
|
339
|
+
content: [
|
|
340
|
+
{
|
|
341
|
+
type: "text",
|
|
342
|
+
text: JSON.stringify({
|
|
343
|
+
postId: post.id,
|
|
344
|
+
postTitle: post.title,
|
|
345
|
+
section: {
|
|
346
|
+
heading: section.text,
|
|
347
|
+
level: section.level,
|
|
348
|
+
wordCount: section.wordCount,
|
|
349
|
+
hasCards: section.hasCards,
|
|
350
|
+
},
|
|
351
|
+
html: content,
|
|
352
|
+
}, null, 2),
|
|
353
|
+
},
|
|
354
|
+
],
|
|
355
|
+
};
|
|
356
|
+
});
|
|
357
|
+
/**
|
|
358
|
+
* posts_append_to_section - Append content to a section
|
|
359
|
+
*/
|
|
360
|
+
server.tool("posts_append_to_section", "Append HTML content to the end of a specific section (before the next heading). Non-destructive operation - only adds content.", {
|
|
361
|
+
id: z.string().optional().describe("Post ID"),
|
|
362
|
+
slug: z.string().optional().describe("Post slug (alternative to ID)"),
|
|
363
|
+
heading: z.string().describe("Heading text to find (fuzzy match)"),
|
|
364
|
+
html: z.string().describe("HTML content to append to the section"),
|
|
365
|
+
}, async ({ id, slug, heading, html: newHtml }) => {
|
|
366
|
+
if (!id && !slug) {
|
|
367
|
+
throw new Error("Either id or slug must be provided");
|
|
368
|
+
}
|
|
369
|
+
const postId = id || `slug/${slug}`;
|
|
370
|
+
// Get current post
|
|
371
|
+
const result = await client.read("posts", postId, {
|
|
372
|
+
fields: ["id", "title", "slug", "html", "updated_at"],
|
|
373
|
+
formats: ["html"],
|
|
374
|
+
});
|
|
375
|
+
const post = result.posts?.[0];
|
|
376
|
+
if (!post?.html) {
|
|
377
|
+
throw new Error("Post not found or has no content");
|
|
378
|
+
}
|
|
379
|
+
// Append content
|
|
380
|
+
const updatedHtml = appendToSection(post.html, heading, newHtml);
|
|
381
|
+
// Save
|
|
382
|
+
const editResult = await client.edit("posts", post.id, {
|
|
383
|
+
html: updatedHtml,
|
|
384
|
+
});
|
|
385
|
+
const updatedPost = editResult.posts[0];
|
|
386
|
+
return {
|
|
387
|
+
content: [
|
|
388
|
+
{
|
|
389
|
+
type: "text",
|
|
390
|
+
text: JSON.stringify({
|
|
391
|
+
success: true,
|
|
392
|
+
id: updatedPost.id,
|
|
393
|
+
title: updatedPost.title,
|
|
394
|
+
slug: updatedPost.slug,
|
|
395
|
+
updated_at: updatedPost.updated_at,
|
|
396
|
+
message: `Content appended to section "${heading}"`,
|
|
397
|
+
}, null, 2),
|
|
398
|
+
},
|
|
399
|
+
],
|
|
400
|
+
};
|
|
401
|
+
});
|
|
402
|
+
/**
|
|
403
|
+
* posts_replace_section - Replace a section's content
|
|
404
|
+
*/
|
|
405
|
+
server.tool("posts_replace_section", "Replace the content of a specific section (keeps the heading). By default returns a preview with word count diff. Set confirm=true to save changes.", {
|
|
406
|
+
id: z.string().optional().describe("Post ID"),
|
|
407
|
+
slug: z.string().optional().describe("Post slug (alternative to ID)"),
|
|
408
|
+
heading: z.string().describe("Heading text to find (fuzzy match)"),
|
|
409
|
+
html: z.string().describe("New HTML content for the section"),
|
|
410
|
+
preview: z
|
|
411
|
+
.boolean()
|
|
412
|
+
.default(true)
|
|
413
|
+
.describe("If true, returns diff preview without saving (default: true)"),
|
|
414
|
+
confirm: z
|
|
415
|
+
.boolean()
|
|
416
|
+
.default(false)
|
|
417
|
+
.describe("Set to true to actually save the changes"),
|
|
418
|
+
}, async ({ id, slug, heading, html: newHtml, preview, confirm }) => {
|
|
419
|
+
if (!id && !slug) {
|
|
420
|
+
throw new Error("Either id or slug must be provided");
|
|
421
|
+
}
|
|
422
|
+
const postId = id || `slug/${slug}`;
|
|
423
|
+
// Get current post
|
|
424
|
+
const result = await client.read("posts", postId, {
|
|
425
|
+
fields: ["id", "title", "slug", "html", "updated_at"],
|
|
426
|
+
formats: ["html"],
|
|
427
|
+
});
|
|
428
|
+
const post = result.posts?.[0];
|
|
429
|
+
if (!post?.html) {
|
|
430
|
+
throw new Error("Post not found or has no content");
|
|
431
|
+
}
|
|
432
|
+
// Find the section to get current content
|
|
433
|
+
const { section, content: oldContent } = findSection(post.html, heading);
|
|
434
|
+
// Generate new HTML
|
|
435
|
+
const updatedHtml = replaceSection(post.html, heading, newHtml);
|
|
436
|
+
// Generate diff preview
|
|
437
|
+
const diff = generateDiffPreview(oldContent, newHtml);
|
|
438
|
+
// Preview mode - return diff without saving
|
|
439
|
+
if (preview && !confirm) {
|
|
440
|
+
return {
|
|
441
|
+
content: [
|
|
442
|
+
{
|
|
443
|
+
type: "text",
|
|
444
|
+
text: JSON.stringify({
|
|
445
|
+
preview: true,
|
|
446
|
+
postId: post.id,
|
|
447
|
+
postTitle: post.title,
|
|
448
|
+
section: section.text,
|
|
449
|
+
diff: {
|
|
450
|
+
oldWordCount: diff.oldWordCount,
|
|
451
|
+
newWordCount: diff.newWordCount,
|
|
452
|
+
changePercent: `${diff.changePercent > 0 ? "+" : ""}${diff.changePercent}%`,
|
|
453
|
+
},
|
|
454
|
+
warning: diff.warning,
|
|
455
|
+
message: "Preview only - set confirm=true to save changes",
|
|
456
|
+
}, null, 2),
|
|
457
|
+
},
|
|
458
|
+
],
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
// Confirm mode - save changes
|
|
462
|
+
const editResult = await client.edit("posts", post.id, {
|
|
463
|
+
html: updatedHtml,
|
|
464
|
+
});
|
|
465
|
+
const updatedPost = editResult.posts[0];
|
|
466
|
+
return {
|
|
467
|
+
content: [
|
|
468
|
+
{
|
|
469
|
+
type: "text",
|
|
470
|
+
text: JSON.stringify({
|
|
471
|
+
success: true,
|
|
472
|
+
id: updatedPost.id,
|
|
473
|
+
title: updatedPost.title,
|
|
474
|
+
slug: updatedPost.slug,
|
|
475
|
+
updated_at: updatedPost.updated_at,
|
|
476
|
+
section: section.text,
|
|
477
|
+
diff: {
|
|
478
|
+
oldWordCount: diff.oldWordCount,
|
|
479
|
+
newWordCount: diff.newWordCount,
|
|
480
|
+
changePercent: `${diff.changePercent > 0 ? "+" : ""}${diff.changePercent}%`,
|
|
481
|
+
},
|
|
482
|
+
warning: diff.warning,
|
|
483
|
+
message: `Section "${heading}" replaced successfully`,
|
|
484
|
+
}, null, 2),
|
|
485
|
+
},
|
|
486
|
+
],
|
|
487
|
+
};
|
|
488
|
+
});
|
|
489
|
+
// ============================================================
|
|
273
490
|
// TAGS TOOLS
|
|
274
491
|
// ============================================================
|
|
275
492
|
/**
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAkD7B,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACjD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAE3D,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEpE,+DAA+D;IAC/D,cAAc;IACd,+DAA+D;IAE/D;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,cAAc,EACd,kFAAkF,EAClF;QACE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;aAChD,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,uBAAuB,CAAC;QACpC,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,2BAA2B,CAAC;QACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACzE,KAAK,EAAE,CAAC;aACL,IAAI,CAAC,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;aAC3D,OAAO,CAAC,iBAAiB,CAAC;aAC1B,QAAQ,CAAC,YAAY,CAAC;QACzB,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;aACxC,OAAO,CAAC,SAAS,CAAC;aAClB,QAAQ,CACP,kFAAkF,CACnF;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,+GAA+G,CAChH;KACJ,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;QAChE,4CAA4C;QAC5C,IAAI,MAAM,GAAuB,SAAS,CAAC;QAE3C,sCAAsC;QACtC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAChC,MAAM,GAAG,UAAU,MAAM,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAqB,OAAO,EAAE;YAC9D,MAAM;YACN,MAAM;YACN,KAAK;YACL,IAAI;YACJ,KAAK;YACL,OAAO,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACpD,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,sGAAsG,EACtG;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACrE,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;aACrC,OAAO,CAAC,SAAS,CAAC;aAClB,QAAQ,CACP,+FAA+F,CAChG;KACJ,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,EAAE,IAAI,QAAQ,IAAI,EAAE,CAAC;QAEpC,qDAAqD;QACrD,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,CAAC;QAExD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAqB,OAAO,EAAE,MAAM,EAAE;YACpE,MAAM;YACN,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SAC1C,CAAC,CAAC;QAEH,iDAAiD;QACjD,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,WAAW,EACX,8DAA8D,EAC9D;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAC5D,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;aACzC,OAAO,CAAC,OAAO,CAAC;aAChB,QAAQ,CAAC,aAAa,CAAC;QAC1B,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2CAA2C,CAAC;QACxD,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,sDAAsD,CAAC;QACnE,IAAI,EAAE,CAAC;aACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,8BAA8B,CAAC;QAC3C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACxE,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,iDAAiD,CAAC;KAC/D,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,QAAQ,GAA4B;YACxC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzC,IAAI,IAAI,CAAC,cAAc;YAAE,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACvE,yDAAyD;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC;QACzD,IAAI,QAAQ;YAAE,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC;QAClD,IAAI,IAAI,CAAC,aAAa;YAAE,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACpE,IAAI,IAAI,CAAC,YAAY;YAAE,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACjE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAqB,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEvE,0BAA0B;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;qBACd,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,yEAAyE,EACzE;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC3D,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;aACzC,QAAQ,EAAE;aACV,QAAQ,CAAC,YAAY,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACpD,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4CAA4C,CAAC;QACzD,IAAI,EAAE,CAAC;aACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,mDAAmD,CAAC;QAChE,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,wCAAwC,CAAC;KACtD,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACxB,MAAM,UAAU,GAA4B,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;YACnC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAClD,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YACpC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QACpD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;YAClC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,OAAO,EACP,EAAE,EACF,UAAU,CACX,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,cAAc,EACd,yLAAyL,EACzL;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACnE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KACtE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACtB,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEjC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;iBAC/D;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,+DAA+D;IAC/D,yCAAyC;IACzC,+DAA+D;IAE/D;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,wJAAwJ,EACxJ;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KACtE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,IAAI,QAAQ,IAAI,EAAE,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAqB,OAAO,EAAE,MAAM,EAAE;YACpE,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;YACvC,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC7B,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,OAAO,EAAE,CAAC,CAAC,IAAI;4BACf,SAAS,EAAE,CAAC,CAAC,SAAS;4BACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;yBACrB,CAAC,CAAC;qBACJ,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,mMAAmM,EACnM;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACrE,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,CACP,4EAA4E,CAC7E;KACJ,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9B,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,IAAI,QAAQ,IAAI,EAAE,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAqB,OAAO,EAAE,MAAM,EAAE;YACpE,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;YACvC,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE7D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,SAAS,EAAE,IAAI,CAAC,KAAK;wBACrB,OAAO,EAAE;4BACP,OAAO,EAAE,OAAO,CAAC,IAAI;4BACrB,KAAK,EAAE,OAAO,CAAC,KAAK;4BACpB,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;yBAC3B;wBACD,IAAI,EAAE,OAAO;qBACd,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,gIAAgI,EAChI;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAClE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KACnE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7C,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,IAAI,QAAQ,IAAI,EAAE,CAAC;QAEpC,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAqB,OAAO,EAAE,MAAM,EAAE;YACpE,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC;YACrD,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,iBAAiB;QACjB,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEjE,OAAO;QACP,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAClC,OAAO,EACP,IAAI,CAAC,EAAE,EACP;YACE,IAAI,EAAE,WAAW;SAClB,CACF,CAAC;QAEF,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAExC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,OAAO,EAAE,IAAI;wBACb,EAAE,EAAE,WAAW,CAAC,EAAE;wBAClB,KAAK,EAAE,WAAW,CAAC,KAAK;wBACxB,IAAI,EAAE,WAAW,CAAC,IAAI;wBACtB,UAAU,EAAE,WAAW,CAAC,UAAU;wBAClC,OAAO,EAAE,gCAAgC,OAAO,GAAG;qBACpD,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,qJAAqJ,EACrJ;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAClE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC7D,OAAO,EAAE,CAAC;aACP,OAAO,EAAE;aACT,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CACP,8DAA8D,CAC/D;QACH,OAAO,EAAE,CAAC;aACP,OAAO,EAAE;aACT,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,0CAA0C,CAAC;KACxD,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QAC/D,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,IAAI,QAAQ,IAAI,EAAE,CAAC;QAEpC,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAqB,OAAO,EAAE,MAAM,EAAE;YACpE,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC;YACrD,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,0CAA0C;QAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzE,oBAAoB;QACpB,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEhE,wBAAwB;QACxB,MAAM,IAAI,GAAG,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEtD,4CAA4C;QAC5C,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,OAAO,EAAE,IAAI;4BACb,MAAM,EAAE,IAAI,CAAC,EAAE;4BACf,SAAS,EAAE,IAAI,CAAC,KAAK;4BACrB,OAAO,EAAE,OAAO,CAAC,IAAI;4BACrB,IAAI,EAAE;gCACJ,YAAY,EAAE,IAAI,CAAC,YAAY;gCAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;gCAC/B,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG;6BAC5E;4BACD,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,OAAO,EAAE,iDAAiD;yBAC3D,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,8BAA8B;QAC9B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAClC,OAAO,EACP,IAAI,CAAC,EAAE,EACP;YACE,IAAI,EAAE,WAAW;SAClB,CACF,CAAC;QAEF,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAExC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,OAAO,EAAE,IAAI;wBACb,EAAE,EAAE,WAAW,CAAC,EAAE;wBAClB,KAAK,EAAE,WAAW,CAAC,KAAK;wBACxB,IAAI,EAAE,WAAW,CAAC,IAAI;wBACtB,UAAU,EAAE,WAAW,CAAC,UAAU;wBAClC,OAAO,EAAE,OAAO,CAAC,IAAI;wBACrB,IAAI,EAAE;4BACJ,YAAY,EAAE,IAAI,CAAC,YAAY;4BAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;4BAC/B,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG;yBAC5E;wBACD,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,OAAO,EAAE,YAAY,OAAO,yBAAyB;qBACtD,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,+DAA+D;IAC/D,aAAa;IACb,+DAA+D;IAE/D;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,aAAa,EACb,gDAAgD,EAChD;QACE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,0BAA0B,CAAC;QACvC,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;aAC7B,OAAO,CAAC,SAAS,CAAC;aAClB,QAAQ,CACP,iEAAiE,CAClE;KACJ,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAoB,MAAM,EAAE;YAC5D,MAAM;YACN,KAAK;SACN,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,WAAW,EACX,kCAAkC,EAClC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KACrE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,IAAI,QAAQ,IAAI,EAAE,CAAC;QAEnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAoB,MAAM,EAAE,KAAK,EAAE;YACjE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,+DAA+D;IAC/D,eAAe;IACf,+DAA+D;IAE/D;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,eAAe,EACf,mIAAmI,EACnI;QACE,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;QACzE,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CACP,oEAAoE,CACrE;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/C,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,SAAiB,CAAC;QAEtB,IAAI,SAAS,EAAE,CAAC;YACd,yBAAyB;YACzB,SAAS,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,yCAAyC;YACzC,MAAM,gBAAgB,GACpB,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC;YACvD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;YACJ,CAAC;YACD,SAAS,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAClD;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section parsing and manipulation utilities for Ghost posts
|
|
3
|
+
*
|
|
4
|
+
* Provides granular editing capabilities by extracting, reading, and modifying
|
|
5
|
+
* individual sections identified by their headings.
|
|
6
|
+
*/
|
|
7
|
+
export type Section = {
|
|
8
|
+
level: number;
|
|
9
|
+
text: string;
|
|
10
|
+
normalizedText: string;
|
|
11
|
+
wordCount: number;
|
|
12
|
+
startIndex: number;
|
|
13
|
+
endIndex: number;
|
|
14
|
+
hasCards: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type SectionMatch = {
|
|
17
|
+
section: Section;
|
|
18
|
+
content: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Normalize heading text for fuzzy matching
|
|
22
|
+
* "2. Supabase" → "supabase"
|
|
23
|
+
* "II. Introduction" → "introduction"
|
|
24
|
+
*/
|
|
25
|
+
export declare function normalizeHeadingText(text: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Count words in HTML content
|
|
28
|
+
* Ghost Cards (kg-* elements) are counted as 1 unit each
|
|
29
|
+
*/
|
|
30
|
+
export declare function countWords(html: string): number;
|
|
31
|
+
/**
|
|
32
|
+
* Extract structure of all sections from HTML
|
|
33
|
+
*/
|
|
34
|
+
export declare function extractStructure(html: string): Section[];
|
|
35
|
+
/**
|
|
36
|
+
* Find a section by heading text (fuzzy match)
|
|
37
|
+
*
|
|
38
|
+
* @throws Error if no match or multiple matches found (with helpful message)
|
|
39
|
+
*/
|
|
40
|
+
export declare function findSection(html: string, heading: string): SectionMatch;
|
|
41
|
+
/**
|
|
42
|
+
* Append content to the end of a section (before next heading)
|
|
43
|
+
*/
|
|
44
|
+
export declare function appendToSection(html: string, heading: string, newContent: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Replace the content of a section (keeping the heading)
|
|
47
|
+
*/
|
|
48
|
+
export declare function replaceSection(html: string, heading: string, newContent: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Validate HTML structure (basic checks)
|
|
51
|
+
*/
|
|
52
|
+
export declare function validateHtml(html: string): {
|
|
53
|
+
valid: boolean;
|
|
54
|
+
errors: string[];
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Generate a simple diff preview between old and new content
|
|
58
|
+
*/
|
|
59
|
+
export declare function generateDiffPreview(oldContent: string, newContent: string): {
|
|
60
|
+
oldWordCount: number;
|
|
61
|
+
newWordCount: number;
|
|
62
|
+
changePercent: number;
|
|
63
|
+
warning: string | null;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=sections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../src/utils/sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAMF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYzD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiB/C;AA8BD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAiCxD;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAkCvE;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA8BA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAoBA"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section parsing and manipulation utilities for Ghost posts
|
|
3
|
+
*
|
|
4
|
+
* Provides granular editing capabilities by extracting, reading, and modifying
|
|
5
|
+
* individual sections identified by their headings.
|
|
6
|
+
*/
|
|
7
|
+
import * as cheerio from "cheerio";
|
|
8
|
+
// ============================================================
|
|
9
|
+
// NORMALIZATION & UTILITIES
|
|
10
|
+
// ============================================================
|
|
11
|
+
/**
|
|
12
|
+
* Normalize heading text for fuzzy matching
|
|
13
|
+
* "2. Supabase" → "supabase"
|
|
14
|
+
* "II. Introduction" → "introduction"
|
|
15
|
+
*/
|
|
16
|
+
export function normalizeHeadingText(text) {
|
|
17
|
+
return (text
|
|
18
|
+
// Remove leading numbers: "2. Title" → "Title"
|
|
19
|
+
.replace(/^\d+\.\s*/, "")
|
|
20
|
+
// Remove Roman numerals: "II. Title" → "Title"
|
|
21
|
+
.replace(/^[IVXLCDM]+\.\s*/i, "")
|
|
22
|
+
// Remove leading/trailing whitespace
|
|
23
|
+
.trim()
|
|
24
|
+
// Lowercase for comparison
|
|
25
|
+
.toLowerCase());
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Count words in HTML content
|
|
29
|
+
* Ghost Cards (kg-* elements) are counted as 1 unit each
|
|
30
|
+
*/
|
|
31
|
+
export function countWords(html) {
|
|
32
|
+
const $ = cheerio.load(html);
|
|
33
|
+
// Count Ghost Cards as 1 word each
|
|
34
|
+
let cardCount = 0;
|
|
35
|
+
$("[class*='kg-']").each(() => {
|
|
36
|
+
cardCount++;
|
|
37
|
+
});
|
|
38
|
+
// Remove Ghost Cards from counting
|
|
39
|
+
$("[class*='kg-']").remove();
|
|
40
|
+
// Get text and count words
|
|
41
|
+
const text = $.text().trim();
|
|
42
|
+
const words = text.split(/\s+/).filter((w) => w.length > 0);
|
|
43
|
+
return words.length + cardCount;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get all heading elements in document order
|
|
47
|
+
*/
|
|
48
|
+
function getHeadingPositions(html) {
|
|
49
|
+
const headings = [];
|
|
50
|
+
const regex = /<h([1-6])[^>]*>([\s\S]*?)<\/h\1>/gi;
|
|
51
|
+
let match;
|
|
52
|
+
while ((match = regex.exec(html)) !== null) {
|
|
53
|
+
const level = parseInt(match[1], 10);
|
|
54
|
+
// Strip HTML tags from heading text
|
|
55
|
+
const text = match[2].replace(/<[^>]+>/g, "").trim();
|
|
56
|
+
headings.push({
|
|
57
|
+
level,
|
|
58
|
+
text,
|
|
59
|
+
index: match.index,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return headings;
|
|
63
|
+
}
|
|
64
|
+
// ============================================================
|
|
65
|
+
// STRUCTURE EXTRACTION
|
|
66
|
+
// ============================================================
|
|
67
|
+
/**
|
|
68
|
+
* Extract structure of all sections from HTML
|
|
69
|
+
*/
|
|
70
|
+
export function extractStructure(html) {
|
|
71
|
+
const headings = getHeadingPositions(html);
|
|
72
|
+
const sections = [];
|
|
73
|
+
for (let i = 0; i < headings.length; i++) {
|
|
74
|
+
const current = headings[i];
|
|
75
|
+
const next = headings[i + 1];
|
|
76
|
+
const startIndex = current.index;
|
|
77
|
+
const endIndex = next ? next.index : html.length;
|
|
78
|
+
const sectionHtml = html.slice(startIndex, endIndex);
|
|
79
|
+
// Check for Ghost Cards
|
|
80
|
+
const hasCards = /class="[^"]*kg-/.test(sectionHtml);
|
|
81
|
+
// Count words in section (excluding heading itself)
|
|
82
|
+
const $ = cheerio.load(sectionHtml);
|
|
83
|
+
$("h1, h2, h3, h4, h5, h6").first().remove();
|
|
84
|
+
const contentHtml = $.html();
|
|
85
|
+
const wordCount = countWords(contentHtml);
|
|
86
|
+
sections.push({
|
|
87
|
+
level: current.level,
|
|
88
|
+
text: current.text,
|
|
89
|
+
normalizedText: normalizeHeadingText(current.text),
|
|
90
|
+
wordCount,
|
|
91
|
+
startIndex,
|
|
92
|
+
endIndex,
|
|
93
|
+
hasCards,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return sections;
|
|
97
|
+
}
|
|
98
|
+
// ============================================================
|
|
99
|
+
// SECTION FINDING
|
|
100
|
+
// ============================================================
|
|
101
|
+
/**
|
|
102
|
+
* Find a section by heading text (fuzzy match)
|
|
103
|
+
*
|
|
104
|
+
* @throws Error if no match or multiple matches found (with helpful message)
|
|
105
|
+
*/
|
|
106
|
+
export function findSection(html, heading) {
|
|
107
|
+
const sections = extractStructure(html);
|
|
108
|
+
const normalizedSearch = normalizeHeadingText(heading);
|
|
109
|
+
// Find matches
|
|
110
|
+
const matches = sections.filter((s) => s.normalizedText === normalizedSearch ||
|
|
111
|
+
s.normalizedText.includes(normalizedSearch) ||
|
|
112
|
+
normalizedSearch.includes(s.normalizedText));
|
|
113
|
+
if (matches.length === 0) {
|
|
114
|
+
const available = sections
|
|
115
|
+
.map((s) => ` - "${s.text}" (h${s.level})`)
|
|
116
|
+
.join("\n");
|
|
117
|
+
throw new Error(`No section found matching "${heading}".\nAvailable headings:\n${available}`);
|
|
118
|
+
}
|
|
119
|
+
if (matches.length > 1) {
|
|
120
|
+
const matchList = matches
|
|
121
|
+
.map((s) => ` - "${s.text}" (h${s.level}, ${s.wordCount} words)`)
|
|
122
|
+
.join("\n");
|
|
123
|
+
throw new Error(`Multiple sections match "${heading}" (${matches.length} found).\nPlease be more specific:\n${matchList}`);
|
|
124
|
+
}
|
|
125
|
+
const section = matches[0];
|
|
126
|
+
const content = html.slice(section.startIndex, section.endIndex);
|
|
127
|
+
return { section, content };
|
|
128
|
+
}
|
|
129
|
+
// ============================================================
|
|
130
|
+
// SECTION MANIPULATION
|
|
131
|
+
// ============================================================
|
|
132
|
+
/**
|
|
133
|
+
* Append content to the end of a section (before next heading)
|
|
134
|
+
*/
|
|
135
|
+
export function appendToSection(html, heading, newContent) {
|
|
136
|
+
const { section } = findSection(html, heading);
|
|
137
|
+
// Insert new content just before the end of the section
|
|
138
|
+
const before = html.slice(0, section.endIndex);
|
|
139
|
+
const after = html.slice(section.endIndex);
|
|
140
|
+
// Ensure newline separation
|
|
141
|
+
const separator = before.endsWith("\n") ? "" : "\n";
|
|
142
|
+
return before + separator + newContent + after;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Replace the content of a section (keeping the heading)
|
|
146
|
+
*/
|
|
147
|
+
export function replaceSection(html, heading, newContent) {
|
|
148
|
+
const { section } = findSection(html, heading);
|
|
149
|
+
// Find end of heading tag
|
|
150
|
+
const sectionHtml = html.slice(section.startIndex, section.endIndex);
|
|
151
|
+
const headingEndMatch = sectionHtml.match(/<\/h[1-6]>/i);
|
|
152
|
+
if (!headingEndMatch || headingEndMatch.index === undefined) {
|
|
153
|
+
throw new Error(`Could not find heading end tag in section "${heading}"`);
|
|
154
|
+
}
|
|
155
|
+
const headingEndIndex = section.startIndex + headingEndMatch.index + headingEndMatch[0].length;
|
|
156
|
+
// Build new HTML
|
|
157
|
+
const before = html.slice(0, headingEndIndex);
|
|
158
|
+
const after = html.slice(section.endIndex);
|
|
159
|
+
// Ensure proper spacing
|
|
160
|
+
const prefix = newContent.startsWith("\n") ? "" : "\n";
|
|
161
|
+
const suffix = newContent.endsWith("\n") ? "" : "\n";
|
|
162
|
+
return before + prefix + newContent + suffix + after;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Validate HTML structure (basic checks)
|
|
166
|
+
*/
|
|
167
|
+
export function validateHtml(html) {
|
|
168
|
+
const errors = [];
|
|
169
|
+
try {
|
|
170
|
+
const $ = cheerio.load(html);
|
|
171
|
+
// Check for unclosed tags (basic)
|
|
172
|
+
const openTags = (html.match(/<[a-z][^/>]*>/gi) || []).length;
|
|
173
|
+
const closeTags = (html.match(/<\/[a-z]+>/gi) || []).length;
|
|
174
|
+
if (Math.abs(openTags - closeTags) > 5) {
|
|
175
|
+
errors.push(`Potential unclosed tags: ${openTags} open, ${closeTags} close`);
|
|
176
|
+
}
|
|
177
|
+
// Check for empty paragraphs
|
|
178
|
+
$("p:empty").each(() => {
|
|
179
|
+
errors.push("Empty paragraph found");
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
errors.push(`HTML parsing error: ${err instanceof Error ? err.message : String(err)}`);
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
valid: errors.length === 0,
|
|
187
|
+
errors,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Generate a simple diff preview between old and new content
|
|
192
|
+
*/
|
|
193
|
+
export function generateDiffPreview(oldContent, newContent) {
|
|
194
|
+
const oldWordCount = countWords(oldContent);
|
|
195
|
+
const newWordCount = countWords(newContent);
|
|
196
|
+
const changePercent = oldWordCount > 0
|
|
197
|
+
? Math.round(((newWordCount - oldWordCount) / oldWordCount) * 100)
|
|
198
|
+
: 100;
|
|
199
|
+
let warning = null;
|
|
200
|
+
if (changePercent < -30) {
|
|
201
|
+
warning = `Content reduction of ${Math.abs(changePercent)}% detected. Please confirm this is intentional.`;
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
oldWordCount,
|
|
205
|
+
newWordCount,
|
|
206
|
+
changePercent,
|
|
207
|
+
warning,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sections.js","sourceRoot":"","sources":["../../src/utils/sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAqBnC,+DAA+D;AAC/D,4BAA4B;AAC5B,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,CACL,IAAI;QACF,+CAA+C;SAC9C,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,+CAA+C;SAC9C,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACjC,qCAAqC;SACpC,IAAI,EAAE;QACP,2BAA2B;SAC1B,WAAW,EAAE,CACjB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,mCAAmC;IACnC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,mCAAmC;IACnC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;IAE7B,2BAA2B;IAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE5D,OAAO,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,IAAY;IAEZ,MAAM,QAAQ,GAA0D,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,oCAAoC,CAAC;IACnD,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,oCAAoC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK;YACL,IAAI;YACJ,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7B,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAErD,wBAAwB;QACxB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAErD,oDAAoD;QACpD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;QAE1C,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,cAAc,EAAE,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;YAClD,SAAS;YACT,UAAU;YACV,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAe;IACvD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEvD,eAAe;IACf,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,cAAc,KAAK,gBAAgB;QACrC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC3C,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAC9C,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,QAAQ;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC;aAC3C,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CACb,8BAA8B,OAAO,4BAA4B,SAAS,EAAE,CAC7E,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,OAAO;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC;aACjE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,MAAM,OAAO,CAAC,MAAM,uCAAuC,SAAS,EAAE,CAC1G,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,OAAe,EACf,UAAkB;IAElB,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE/C,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3C,4BAA4B;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpD,OAAO,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,OAAe,EACf,UAAkB;IAElB,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE/C,0BAA0B;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEzD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,eAAe,GACnB,OAAO,CAAC,UAAU,GAAG,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzE,iBAAiB;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3C,wBAAwB;IACxB,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAErD,OAAO,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IAIvC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,kCAAkC;QAClC,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAE5D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CACT,4BAA4B,QAAQ,UAAU,SAAS,QAAQ,CAChE,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CACT,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC1E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,UAAkB;IAOlB,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE5C,MAAM,aAAa,GACjB,YAAY,GAAG,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC;QAClE,CAAC,CAAC,GAAG,CAAC;IAEV,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,aAAa,GAAG,CAAC,EAAE,EAAE,CAAC;QACxB,OAAO,GAAG,wBAAwB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,iDAAiD,CAAC;IAC7G,CAAC;IAED,OAAO;QACL,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-ghost-optimized",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "MCP server for Ghost CMS with optimized field projection - reduces token usage by 90-98%",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
44
|
+
"cheerio": "^1.0.0",
|
|
44
45
|
"zod": "^3.25.0"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|