@cjkihl/mcp-image 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # 🖼️ @cjkihl/sharp-mcp
2
+
3
+ > Sharp-based MCP server for AI-powered image processing
4
+
5
+ Let your AI assistant handle image conversions, resizing, and favicon/PWA icon generation. Built on Sharp and libvips—no ImageMagick required.
6
+
7
+ ## Features
8
+
9
+ - **Zero configuration** - Works out of the box
10
+ - **Fast processing** - Powered by Sharp and libvips
11
+ - **Format conversion** - WebP, AVIF, PNG, JPEG, and more
12
+ - **Smart resizing** - Batch resize or create thumbnails
13
+ - **Icon generation** - Complete favicon and PWA icon sets in one command
14
+
15
+ ## Installation
16
+
17
+ Add to your Cursor MCP settings:
18
+
19
+ ```json
20
+ {
21
+ "mcpServers": {
22
+ "sharp": {
23
+ "command": "npx",
24
+ "args": ["@cjkihl/sharp-mcp"],
25
+ "transport": "stdio"
26
+ }
27
+ }
28
+ }
29
+ ```
30
+
31
+ Or run directly:
32
+
33
+ ```bash
34
+ npx @cjkihl/sharp-mcp
35
+
36
+ bunx @cjkihl/sharp-mcp
37
+ ```
38
+
39
+ ## Available Tools
40
+
41
+ ### `sharp.convert`
42
+ Convert images between formats: PNG, WebP, JPEG, AVIF, and more.
43
+
44
+ ### `sharp.resize`
45
+ Resize images to specific dimensions or create thumbnails with quality presets.
46
+
47
+ ### `sharp.iconSet`
48
+ Generate complete favicon and PWA icon sets from a single image. Outputs all standard sizes (16px, 32px, 180px, 192px, 512px, etc.) for web, iOS, and Android.
49
+
50
+ ## Requirements
51
+
52
+ - Node.js >= 18
53
+ - Sharp (automatically installs platform-specific libvips binaries)
54
+
55
+ ## Resources
56
+
57
+ Built with the [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk).
@@ -0,0 +1,189 @@
1
+ #!/usr/bin/env node
2
+ import { promises as fs } from "node:fs";
3
+ import path from "node:path";
4
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
+ import { z } from "zod";
7
+ import { convertImage, generateIconSet, resizeWithFit } from "./sharp-tools.js";
8
+ const convertShape = {
9
+ background: z
10
+ .string()
11
+ .optional()
12
+ .describe("Background color for images with transparency when flattening. Use CSS color names (e.g., 'white', 'black') or hex codes (e.g., '#ffffff')"),
13
+ colorspace: z
14
+ .enum(["srgb"])
15
+ .optional()
16
+ .describe("Convert image to specified colorspace. Currently only 'srgb' is supported"),
17
+ flatten: z
18
+ .boolean()
19
+ .optional()
20
+ .describe("Remove alpha channel and replace with background color. Requires background to be set"),
21
+ format: z
22
+ .enum(["png", "jpeg", "jpg", "webp", "avif", "tiff"])
23
+ .optional()
24
+ .describe("Output image format. If not specified, format is inferred from outputPath extension"),
25
+ inputPath: z
26
+ .string()
27
+ .describe("Path to the input image file (absolute or relative to current directory)"),
28
+ outputPath: z
29
+ .string()
30
+ .describe("Path where the converted image will be saved (absolute or relative to current directory)"),
31
+ quality: z
32
+ .number()
33
+ .int()
34
+ .min(1)
35
+ .max(100)
36
+ .optional()
37
+ .describe("Image quality (1-100). Higher values = better quality but larger file size. Only applies to lossy formats (jpeg, webp, avif)"),
38
+ };
39
+ const resizeShape = {
40
+ background: z
41
+ .string()
42
+ .optional()
43
+ .describe("Background color for letterboxing/pillarboxing. Use CSS color names or hex codes"),
44
+ fit: z
45
+ .enum(["contain", "cover", "fill", "inside", "outside"])
46
+ .optional()
47
+ .describe("How the image should fit the target dimensions:\n- 'contain': Preserve aspect ratio, ensure image fits within dimensions\n- 'cover': Preserve aspect ratio, ensure image covers dimensions (may crop)\n- 'fill': Ignore aspect ratio, stretch to exact dimensions\n- 'inside': Resize only if larger than dimensions\n- 'outside': Resize only if smaller than dimensions\nDefaults to 'inside'"),
48
+ format: z
49
+ .enum(["png", "jpeg", "jpg", "webp", "avif", "tiff"])
50
+ .optional()
51
+ .describe("Output format. If not specified, uses input format"),
52
+ height: z
53
+ .number()
54
+ .int()
55
+ .positive()
56
+ .optional()
57
+ .describe("Target height in pixels. Either width or height must be specified. Both can be provided"),
58
+ inputPath: z
59
+ .string()
60
+ .describe("Path to the input image file (absolute or relative to current directory)"),
61
+ outputPath: z
62
+ .string()
63
+ .describe("Path where the resized image will be saved (absolute or relative to current directory)"),
64
+ position: z
65
+ .union([z.string(), z.number()])
66
+ .optional()
67
+ .describe("Position for cropping when using 'cover' fit. Can be: 'center', 'top', 'right top', 'right', 'right bottom', 'bottom', 'left bottom', 'left', 'left top', or a number for entropy-based cropping"),
68
+ quality: z
69
+ .number()
70
+ .int()
71
+ .min(1)
72
+ .max(100)
73
+ .optional()
74
+ .describe("Image quality (1-100) for lossy formats"),
75
+ width: z
76
+ .number()
77
+ .int()
78
+ .positive()
79
+ .optional()
80
+ .describe("Target width in pixels. Either width or height must be specified. Both can be provided"),
81
+ };
82
+ const iconSetShape = {
83
+ androidSizes: z
84
+ .array(z.number().int().positive())
85
+ .optional()
86
+ .describe("Array of sizes for Android Chrome icons (e.g., [192, 512]). Generates android-chrome-{size}x{size}.png files. Defaults to [192, 512]"),
87
+ appleSizes: z
88
+ .array(z.number().int().positive())
89
+ .optional()
90
+ .describe("Array of sizes for Apple touch icons (e.g., [180]). Generates apple-touch-icon-{size}x{size}.png files. Defaults to [180]"),
91
+ background: z
92
+ .string()
93
+ .optional()
94
+ .describe("Background color for padding/letterboxing when using 'contain' fit. Defaults to 'white'"),
95
+ ico: z
96
+ .boolean()
97
+ .optional()
98
+ .describe("Generate a favicon.ico file from PNG versions. Defaults to true"),
99
+ icoSizes: z
100
+ .array(z.number().int().positive())
101
+ .optional()
102
+ .describe("Sizes to include in the .ico file (e.g., [16, 32, 48]). Defaults to [16, 32, 48]"),
103
+ maskable: z
104
+ .boolean()
105
+ .optional()
106
+ .describe("Generate maskable icons for Android (adds '-maskable' suffix to filenames). Defaults to false"),
107
+ outDir: z
108
+ .string()
109
+ .describe("Directory where generated icons will be saved (will be created if it doesn't exist)"),
110
+ quality: z
111
+ .number()
112
+ .int()
113
+ .min(1)
114
+ .max(100)
115
+ .optional()
116
+ .describe("PNG quality (1-100). Defaults to 90"),
117
+ sizesPng: z
118
+ .array(z.number().int().positive())
119
+ .optional()
120
+ .describe("Array of sizes for standard favicons (e.g., [16, 32, 48]). Generates favicon-{size}x{size}.png files. Defaults to [16, 32, 48]"),
121
+ sourcePath: z
122
+ .string()
123
+ .describe("Path to source image (should be square, ideally 512x512 or larger for best results)"),
124
+ };
125
+ async function main() {
126
+ const server = new McpServer({ name: "sharp", version: "0.1.0" });
127
+ server.tool("convertImage", "Convert an image from one format to another (png, jpeg, webp, avif, tiff). Useful for format conversion, quality optimization, or processing images with transparency. Can optionally flatten transparent images to a solid background color and convert colorspaces.", convertShape, async (args) => {
128
+ const out = await convertImage({
129
+ background: args.background,
130
+ colorspace: args.colorspace,
131
+ flatten: args.flatten,
132
+ format: args.format,
133
+ inputPath: args.inputPath,
134
+ outputPath: args.outputPath,
135
+ quality: args.quality,
136
+ });
137
+ return {
138
+ content: [
139
+ { text: JSON.stringify({ files: [out] }, null, 2), type: "text" },
140
+ ],
141
+ };
142
+ });
143
+ server.tool("resizeImage", "Resize an image to specified dimensions with various fit modes. Supports aspect-ratio preserving resizing, cropping, stretching, and conditional resizing. Perfect for creating thumbnails, optimizing images for web, or generating responsive image variants. At least one dimension (width or height) must be specified.", resizeShape, async (args) => {
144
+ if (args.width == null && args.height == null)
145
+ throw new Error("width or height is required");
146
+ const out = await resizeWithFit({
147
+ background: args.background,
148
+ fit: args.fit,
149
+ format: args.format,
150
+ height: args.height,
151
+ inputPath: args.inputPath,
152
+ outputPath: args.outputPath,
153
+ position: args.position,
154
+ quality: args.quality,
155
+ width: args.width,
156
+ });
157
+ return {
158
+ content: [
159
+ { text: JSON.stringify({ files: [out] }, null, 2), type: "text" },
160
+ ],
161
+ };
162
+ });
163
+ server.tool("generateIconSet", "Generate a complete set of web icons and favicons from a single source image. Creates standard favicons, Apple touch icons, Android Chrome icons, and a multi-size .ico file. The source should be a square image, ideally 512x512px or larger. Outputs all required icon files for modern web apps and PWAs.", iconSetShape, async (args) => {
164
+ const outDir = path.resolve(args.outDir);
165
+ await fs.mkdir(outDir, { recursive: true });
166
+ const files = await generateIconSet({
167
+ androidSizes: args.androidSizes,
168
+ appleSizes: args.appleSizes,
169
+ background: args.background,
170
+ ico: args.ico,
171
+ icoSizes: args.icoSizes,
172
+ maskable: args.maskable,
173
+ outDir,
174
+ quality: args.quality,
175
+ sizesPng: args.sizesPng,
176
+ sourcePath: args.sourcePath,
177
+ });
178
+ return {
179
+ content: [{ text: JSON.stringify({ files }, null, 2), type: "text" }],
180
+ };
181
+ });
182
+ await server.connect(new StdioServerTransport());
183
+ }
184
+ main().catch((err) => {
185
+ // eslint-disable-next-line no-console
186
+ console.error(String(err?.stack || err));
187
+ process.exit(1);
188
+ });
189
+ //# sourceMappingURL=mcp-image.bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-image.bin.js","sourceRoot":"","sources":["../../mcp-image.bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import pngToIco from "png-to-ico";
4
+ import sharp, {} from "sharp";
5
+ async function ensureDirForFile(filePath) {
6
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
7
+ }
8
+ function mapFit(fit) {
9
+ switch (fit) {
10
+ case "contain":
11
+ return "contain";
12
+ case "cover":
13
+ return "cover";
14
+ case "fill":
15
+ return "fill";
16
+ case "inside":
17
+ return "inside";
18
+ case "outside":
19
+ return "outside";
20
+ default:
21
+ return undefined;
22
+ }
23
+ }
24
+ export async function convertImage(input) {
25
+ let image = sharp(input.inputPath, { failOn: "none" });
26
+ if (input.colorspace === "srgb")
27
+ image = image.toColorspace("srgb");
28
+ if (input.flatten && input.background)
29
+ image = image.flatten({ background: input.background });
30
+ const format = (input.format ?? path.extname(input.outputPath).slice(1)).toLowerCase();
31
+ switch (format) {
32
+ case "png":
33
+ image = image.png({ quality: input.quality });
34
+ break;
35
+ case "jpg":
36
+ case "jpeg":
37
+ image = image.jpeg({ quality: input.quality });
38
+ break;
39
+ case "webp":
40
+ image = image.webp({ quality: input.quality });
41
+ break;
42
+ case "avif":
43
+ image = image.avif({ quality: input.quality });
44
+ break;
45
+ case "tiff":
46
+ image = image.tiff({ quality: input.quality });
47
+ break;
48
+ default:
49
+ // Default to png
50
+ image = image.png({ quality: input.quality });
51
+ }
52
+ await ensureDirForFile(input.outputPath);
53
+ await image.toFile(input.outputPath);
54
+ return input.outputPath;
55
+ }
56
+ export async function resizeWithFit(opts) {
57
+ const { inputPath, outputPath, width, height, background, position } = opts;
58
+ const fit = mapFit(opts.fit) ?? "inside";
59
+ let image = sharp(inputPath, { failOn: "none" });
60
+ image = image.resize({ background, fit, height, position, width });
61
+ if (opts.format) {
62
+ const fmt = opts.format.toLowerCase();
63
+ if (fmt === "png")
64
+ image = image.png({ quality: opts.quality });
65
+ else if (fmt === "jpeg" || fmt === "jpg")
66
+ image = image.jpeg({ quality: opts.quality });
67
+ else if (fmt === "webp")
68
+ image = image.webp({ quality: opts.quality });
69
+ else if (fmt === "avif")
70
+ image = image.avif({ quality: opts.quality });
71
+ else if (fmt === "tiff")
72
+ image = image.tiff({ quality: opts.quality });
73
+ }
74
+ await ensureDirForFile(outputPath);
75
+ await image.toFile(outputPath);
76
+ return outputPath;
77
+ }
78
+ export async function generateIconSet(input) {
79
+ const outputs = [];
80
+ await fs.mkdir(input.outDir, { recursive: true });
81
+ const sizes = input.sizesPng ?? [16, 32, 48];
82
+ const apple = input.appleSizes ?? [180];
83
+ const android = input.androidSizes ?? [192, 512];
84
+ for (const n of sizes) {
85
+ const out = path.join(input.outDir, `favicon-${n}x${n}.png`);
86
+ await sharp(input.sourcePath)
87
+ .resize({
88
+ background: input.background ?? "white",
89
+ fit: "contain",
90
+ height: n,
91
+ width: n,
92
+ })
93
+ .png({ quality: input.quality ?? 90 })
94
+ .toFile(out);
95
+ outputs.push(out);
96
+ }
97
+ for (const n of apple) {
98
+ const out = path.join(input.outDir, `apple-touch-icon-${n}x${n}.png`);
99
+ await sharp(input.sourcePath)
100
+ .resize({
101
+ background: input.background ?? "white",
102
+ fit: "contain",
103
+ height: n,
104
+ width: n,
105
+ })
106
+ .png({ quality: input.quality ?? 90 })
107
+ .toFile(out);
108
+ outputs.push(out);
109
+ }
110
+ for (const n of android) {
111
+ const name = input.maskable
112
+ ? `android-chrome-${n}x${n}-maskable.png`
113
+ : `android-chrome-${n}x${n}.png`;
114
+ const out = path.join(input.outDir, name);
115
+ await sharp(input.sourcePath)
116
+ .resize({
117
+ background: input.background ?? "white",
118
+ fit: "contain",
119
+ height: n,
120
+ width: n,
121
+ })
122
+ .png({ quality: input.quality ?? 90 })
123
+ .toFile(out);
124
+ outputs.push(out);
125
+ }
126
+ if (input.ico ?? true) {
127
+ const icoSizes = input.icoSizes ?? [16, 32, 48];
128
+ const pngPaths = [];
129
+ for (const n of icoSizes) {
130
+ const p = path.join(input.outDir, `favicon-${n}x${n}.png`);
131
+ try {
132
+ await fs.stat(p);
133
+ }
134
+ catch {
135
+ await sharp(input.sourcePath)
136
+ .resize({
137
+ background: input.background ?? "white",
138
+ fit: "contain",
139
+ height: n,
140
+ width: n,
141
+ })
142
+ .png({ quality: input.quality ?? 90 })
143
+ .toFile(p);
144
+ }
145
+ pngPaths.push(p);
146
+ }
147
+ const ico = await pngToIco(pngPaths);
148
+ const icoOut = path.join(input.outDir, "favicon.ico");
149
+ await fs.writeFile(icoOut, ico);
150
+ outputs.push(icoOut);
151
+ }
152
+ return outputs;
153
+ }
154
+ //# sourceMappingURL=sharp-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharp-tools.js","sourceRoot":"","sources":["../../sharp-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/typeAliases.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/index.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/enumUtil.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/partialUtil.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/standard-schema.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.d.cts","../../../node_modules/.bun/zod@3.25.76/node_modules/zod/index.d.cts","../../../node_modules/.bun/@modelcontextprotocol+sdk@1.20.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../node_modules/.bun/@modelcontextprotocol+sdk@1.20.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../node_modules/.bun/@modelcontextprotocol+sdk@1.20.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../../../node_modules/.bun/@modelcontextprotocol+sdk@1.20.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../../../node_modules/.bun/@modelcontextprotocol+sdk@1.20.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.d.ts","../../../node_modules/.bun/@modelcontextprotocol+sdk@1.20.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/uriTemplate.d.ts","../../../node_modules/.bun/@modelcontextprotocol+sdk@1.20.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.d.ts","../../../node_modules/.bun/@modelcontextprotocol+sdk@1.20.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/globals.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/utility.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/header.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/client.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/api.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/util.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.bun/undici-types@7.14.0/node_modules/undici-types/index.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/assert.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/buffer.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/child_process.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/cluster.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/console.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/constants.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/crypto.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/dgram.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/dns.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/domain.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/events.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/fs.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/http.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/http2.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/https.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/inspector.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/module.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/net.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/os.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/path.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/process.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/punycode.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/querystring.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/readline.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/repl.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/sea.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/stream.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/test.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/timers.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/tls.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/tty.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/url.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/util.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/v8.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/vm.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/wasi.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/zlib.d.ts","../../../node_modules/.bun/@types+node@24.7.2/node_modules/@types/node/index.d.ts","../../../node_modules/.bun/png-to-ico@3.0.1/node_modules/png-to-ico/index.d.ts","../../../node_modules/.bun/sharp@0.34.4/node_modules/sharp/lib/index.d.ts","../sharp-tools.ts","../mcp-image.bin.ts"],"fileIdsList":[[84,138,155,156],[73,75,77,84,138,155,156],[73,75,76,77,78,79,84,138,155,156],[75,76,84,138,155,156,170],[73,74,75,76,84,138,155,156],[75,84,138,155,156],[73,74,84,138,155,156],[84,135,136,138,155,156],[84,137,138,155,156],[138,155,156],[84,138,143,155,156,173],[84,138,139,144,149,155,156,158,170,181],[84,138,139,140,149,155,156,158],[84,138,141,155,156,182],[84,138,142,143,150,155,156,159],[84,138,143,155,156,170,178],[84,138,144,146,149,155,156,158],[84,137,138,145,155,156],[84,138,146,147,155,156],[84,138,148,149,155,156],[84,137,138,149,155,156],[84,138,149,150,151,155,156,170,181],[84,138,149,150,151,155,156,165,170,173],[84,130,138,146,149,152,155,156,158,170,181],[84,138,149,150,152,153,155,156,158,170,178,181],[84,138,152,154,155,156,170,178,181],[82,83,84,85,86,87,88,89,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187],[84,138,149,155,156],[84,138,155,156,157,181],[84,138,146,149,155,156,158,170],[84,138,155,156,159],[84,138,155,156,160],[84,137,138,155,156,161],[84,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187],[84,138,155,156,163],[84,138,155,156,164],[84,138,149,155,156,165,166],[84,138,155,156,165,167,182,184],[84,138,149,155,156,170,171,173],[84,138,155,156,172,173],[84,138,155,156,170,171],[84,138,155,156,173],[84,138,155,156,174],[84,135,138,155,156,170,175],[84,138,149,155,156,176,177],[84,138,155,156,176,177],[84,138,143,155,156,158,170,178],[84,138,155,156,179],[84,138,155,156,158,180],[84,138,152,155,156,164,181],[84,138,143,155,156,182],[84,138,155,156,170,183],[84,138,155,156,157,184],[84,138,155,156,185],[84,138,143,155,156],[84,130,138,155,156],[84,138,155,156,186],[84,130,138,149,151,155,156,161,170,173,181,183,184,186],[84,138,155,156,170,187],[84,138,155,156,188],[84,138,155,156,170,188],[84,96,99,102,103,138,155,156,181],[84,99,138,155,156,170,181],[84,99,103,138,155,156,181],[84,138,155,156,170],[84,93,138,155,156],[84,97,138,155,156],[84,95,96,99,138,155,156,181],[84,138,155,156,158,178],[84,93,138,155,156,188],[84,95,99,138,155,156,158,181],[84,90,91,92,94,98,138,149,155,156,170,181],[84,99,107,115,138,155,156],[84,91,97,138,155,156],[84,99,124,125,138,155,156],[84,91,94,99,138,155,156,173,181,188],[84,99,138,155,156],[84,95,99,138,155,156,181],[84,90,138,155,156],[84,93,94,95,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,125,126,127,128,129,138,155,156],[84,99,117,120,138,146,155,156],[84,99,107,108,109,138,155,156],[84,97,99,108,110,138,155,156],[84,98,138,155,156],[84,91,93,99,138,155,156],[84,99,103,108,110,138,155,156],[84,103,138,155,156],[84,97,99,102,138,155,156,181],[84,91,95,99,107,138,155,156],[84,99,117,138,155,156],[84,110,138,155,156],[84,93,99,124,138,155,156,173,186,188],[72,84,138,155,156],[60,61,62,84,138,155,156],[63,64,84,138,155,156],[60,61,63,65,66,71,84,138,155,156],[61,63,84,138,155,156],[71,84,138,155,156],[63,84,138,155,156],[60,61,63,66,67,68,69,70,84,138,155,156],[73,80,81,84,138,150,155,156,160,191],[84,138,150,155,156,160,189,190]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"f17ed72d1b1882ab6dc66d45e699f757d15bba0807af2fc9c3ec98fe367611c1","impliedFormat":99},{"version":"3f4248944c380b995618847b254e64c4fad48e31650c692bb01424df48618a86","impliedFormat":99},{"version":"6ca0b2845c6e95e75e42fe99026c7545c8b4cfd9bc1750bb5421b0699ef89c35","impliedFormat":99},{"version":"b03cab886d1ea68398cec813d86857b97f7100fcc17ad8eabdb033dd6251953f","impliedFormat":99},{"version":"337a6cd986dceb55f190c2a01858f0a60a5b3029162c4b013d138652db54a3de","impliedFormat":99},{"version":"d691e546590145171d00d78b341bd3ca4844c96eb34f870be84058a1cab585c3","impliedFormat":99},{"version":"8bc1dbdd3e321b5d229e8318476dd47fdad09bd65895db488b651e11867da7ca","impliedFormat":99},{"version":"4c2065243522316b3b2a0730768865473f9760647acbba6639bc6ff4052ea959","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0671b50bb99cc7ad46e9c68fa0e7f15ba4bc898b59c31a17ea4611fab5095da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"00b21ef538da5a2bbe419e2144f3be50661768e1e039ef2b57bb89f96aff9b18","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"e843e840f484f7e59b2ef9488501a301e3300a8e3e56aa84a02ddf915c7ce07d","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"830171b27c5fdf9bcbe4cf7d428fcf3ae2c67780fb7fbdccdf70d1623d938bc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa3cdd2c004d79ae3b6bca7b793bce0597734f8d38df2273690ed358a65c1543","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"18334defc3d0a0e1966f5f3c23c7c83b62c77811e51045c5a7ff3883b446f81f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dbcce74b6c46d12dce913fe42bc29d116102b591b53f457d279d5db7316d454","impliedFormat":1},{"version":"37b72d73361a3797bcc7e88d9e4f3ba37728f778fc5ce26c3b73e81de09ba2b3","impliedFormat":1},{"version":"2c91d8366ff2506296191c26fd97cc1990bab3ee22576275d28b654a21261a44","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"0b1866fb3c7f6860eff15df08824c22453136358465b30ecbcbb1b786dc62ac2","impliedFormat":1},{"version":"289e9894a4668c61b5ffed09e196c1f0c2f87ca81efcaebdf6357cfb198dac14","impliedFormat":1},{"version":"25a1105595236f09f5bce42398be9f9ededc8d538c258579ab662d509aa3b98e","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"94d45097aa2cac91ed0da476249a69dccb1d3dd132626ad18eb6002a3e733f3f","impliedFormat":1},{"version":"c6176c7b9f3769ba7f076c7a791588562c653cc0ba08fb2184f87bf78db2a87c","impliedFormat":1},{"version":"8d3f079f853fdcafc015a80c0d7c805965b9bbf594498c9c8a68b2228c4f518d","impliedFormat":1},{"version":"790183a686a857c251597b81d846ddcb2f48291b1660c688db1f71995af2bff2","impliedFormat":1},{"version":"19c56ac845f92bff8e28f9c0c96a23e663b07c0da35f33b904ab86c8ac151bfd","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"c0bb1b65757c72bbf8ddf7eaa532223bacf58041ff16c883e76f45506596e925","impliedFormat":1},{"version":"c8b85f7aed29f8f52b813f800611406b0bfe5cf3224d20a4bdda7c7f73ce368e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae55dfb60af917b1b63665200466b8fd7e20d2b01d1b0336b2ce770637cd553e","impliedFormat":1},{"version":"6145728071f93b5d65e85617dbee550ac9fb9943b82b79fc4b5944f80cc2baab","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"9043daec15206650fa119bad6b8d70136021ea7d52673a71f79a87a42ee38d44","affectsGlobalScope":true,"impliedFormat":1},{"version":"856fb28989bc204dbb69db6b32092b4f31eae13468e85a6561d260cec6ef509d","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"1013eb2e2547ad8c100aca52ef9df8c3f209edee32bb387121bb3227f7c00088","impliedFormat":1},{"version":"b827f8800f42858f0a751a605c003b7ab571ff7af184436f36cef9bdfebae808","impliedFormat":1},{"version":"81dd6cd15d79d60f6597dba94328178b87ad3100c9f422cd44b26d087e073ca7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"6b306cd4282bbb54d4a6bb23cfb7a271160983dfc38c67b5a132504cfcc34896","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea713aa14a670b1ea0fbaaca4fd204e645f71ca7653a834a8ec07ee889c45de6","impliedFormat":1},{"version":"450172a56b944c2d83f45cc11c9a388ea967cd301a21202aa0a23c34c7506a18","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"360a81d6186f9afa88d2bf48d4b3cd900d9592b7aaec1041f2289979ee6b762c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"7dfa742c23851808a77ec27062fbbd381c8c36bb3cfdff46cb8af6c6c233bfc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb078cfcd14dc0b1700a48272958f803f30f13f99111c5978c75c3a0aa07e40e","affectsGlobalScope":true,"impliedFormat":1},{"version":"815b8748ccac6343abab8fc5ec0a716049ba023f7eaa3b0aa28f354270662f53","impliedFormat":1},{"version":"781089a6bb37f5c2413897ca0c024e3b21350bae105075829c4de4e9b981d8ea","impliedFormat":1},{"version":"73b0bff83ee76e3a9320e93c7fc15596e858b33c687c39a57567e75c43f2a324","impliedFormat":1},{"version":"3c947600f6f5664cca690c07fcf8567ca58d029872b52c31c2f51d06fbdb581b","affectsGlobalScope":true,"impliedFormat":1},{"version":"493c64d062139b1849b0e9c4c3a6465e1227d2b42be9e26ec577ca728984c041","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"0d8c8fa5ffedc1066c39b0cc1a8ab1375a07d8939a943b8c8d712bc8bbfd0c45","impliedFormat":99},{"version":"5b2323ca2d1bd97e1f32f09452908e015b012e0e4f958f649cbe0c8989a3fb4f","impliedFormat":1},{"version":"88d67621651b88c9d9c28bf229be63b4a4b8f5fe98184489f4daaaeba6d063d5","signature":"bf11b60469a350e39ed22dec6868b254870b5a46e9065ab3044835583c4b9cb0","impliedFormat":99},{"version":"f4f1d06eba85459564c0a8bec2156cf1128d89a8aba77263a0680ba7b9b961d3","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99}],"root":[191,192],"options":{"allowJs":true,"checkJs":true,"composite":true,"declaration":true,"declarationDir":"./types","declarationMap":true,"esModuleInterop":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./output","rewriteRelativeImportExtensions":true,"skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./tsbuildinfo.json","verbatimModuleSyntax":true},"referencedMap":[[74,1],[78,2],[80,3],[81,4],[77,5],[76,6],[79,1],[75,7],[135,8],[136,8],[137,9],[84,10],[138,11],[139,12],[140,13],[82,1],[141,14],[142,15],[143,16],[144,17],[145,18],[146,19],[147,19],[148,20],[149,21],[150,22],[151,23],[85,1],[83,1],[152,24],[153,25],[154,26],[188,27],[155,28],[156,1],[157,29],[158,30],[159,31],[160,32],[161,33],[162,34],[163,35],[164,36],[165,37],[166,37],[167,38],[168,1],[169,1],[170,39],[172,40],[171,41],[173,42],[174,43],[175,44],[176,45],[177,46],[178,47],[179,48],[180,49],[181,50],[182,51],[183,52],[184,53],[185,54],[86,1],[87,55],[88,1],[89,1],[131,56],[132,57],[133,1],[134,42],[186,58],[187,59],[189,60],[190,61],[58,1],[59,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[20,1],[21,1],[4,1],[22,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[8,1],[49,1],[46,1],[47,1],[48,1],[50,1],[9,1],[51,1],[52,1],[53,1],[55,1],[54,1],[1,1],[56,1],[57,1],[107,62],[119,63],[105,64],[120,65],[129,66],[96,67],[97,68],[95,69],[128,60],[123,70],[127,71],[99,72],[116,73],[98,74],[126,75],[93,76],[94,70],[100,77],[101,1],[106,78],[104,77],[91,79],[130,80],[121,81],[110,82],[109,77],[111,83],[114,84],[108,85],[112,86],[124,60],[102,87],[103,88],[115,89],[92,65],[118,90],[117,77],[113,91],[122,1],[90,1],[125,92],[73,93],[63,94],[65,95],[72,96],[67,1],[68,1],[66,97],[69,98],[60,1],[61,1],[62,93],[64,99],[70,1],[71,100],[192,101],[191,102]],"latestChangedDtsFile":"./types/mcp-image.bin.d.ts","version":"5.9.3"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=mcp-image.bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-image.bin.d.ts","sourceRoot":"","sources":["../../mcp-image.bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { type Gravity } from "sharp";
2
+ type FitMode = "contain" | "cover" | "fill" | "inside" | "outside";
3
+ interface ResizeOptions {
4
+ inputPath: string;
5
+ outputPath: string;
6
+ width?: number;
7
+ height?: number;
8
+ fit?: FitMode;
9
+ position?: Gravity | number;
10
+ background?: string;
11
+ format?: string;
12
+ quality?: number;
13
+ }
14
+ export declare function convertImage(input: {
15
+ inputPath: string;
16
+ outputPath: string;
17
+ format?: "png" | "jpeg" | "jpg" | "webp" | "avif" | "tiff";
18
+ quality?: number;
19
+ background?: string;
20
+ colorspace?: "srgb";
21
+ flatten?: boolean;
22
+ }): Promise<string>;
23
+ export declare function resizeWithFit(opts: ResizeOptions): Promise<string>;
24
+ export declare function generateIconSet(input: {
25
+ sourcePath: string;
26
+ outDir: string;
27
+ sizesPng?: number[];
28
+ appleSizes?: number[];
29
+ androidSizes?: number[];
30
+ ico?: boolean;
31
+ icoSizes?: number[];
32
+ background?: string;
33
+ quality?: number;
34
+ maskable?: boolean;
35
+ }): Promise<string[]>;
36
+ export {};
37
+ //# sourceMappingURL=sharp-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharp-tools.d.ts","sourceRoot":"","sources":["../../sharp-tools.ts"],"names":[],"mappings":"AAGA,OAAc,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AAE5C,KAAK,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnE,UAAU,aAAa;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAuBD,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmClB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBxE;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgFpB"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@cjkihl/mcp-image",
3
+ "version": "0.0.3",
4
+ "description": "A TypeScript/JavaScript MCP Server for Image Processing. Resize, convert, and more.",
5
+ "keywords": [
6
+ "mcp",
7
+ "model context protocol",
8
+ "image",
9
+ "convert",
10
+ "resize",
11
+ "image processing",
12
+ "icon generation",
13
+ "image conversion",
14
+ "image resizing",
15
+ "sharp"
16
+ ],
17
+ "homepage": "https://github.com/cjkihl/cjkihl#readme",
18
+ "bugs": {
19
+ "url": "https://github.com/cjkihl/cjkihl/issues"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/cjkihl/cjkihl.git"
24
+ },
25
+ "funding": {
26
+ "type": "github",
27
+ "url": "https://github.com/sponsors/cjkihl"
28
+ },
29
+ "license": "MIT",
30
+ "author": "@cjkihl",
31
+ "type": "module",
32
+ "exports": {},
33
+ "bin": {
34
+ "mcp-image": "./dist/output/mcp-image.bin.js"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "README.md"
39
+ ],
40
+ "scripts": {
41
+ "build": "tsc && bun ../create-exports/create-exports.bin.ts",
42
+ "type-check": "tsc --noEmit"
43
+ },
44
+ "dependencies": {
45
+ "@modelcontextprotocol/sdk": "^1.20.0",
46
+ "png-to-ico": "^3.0.1",
47
+ "sharp": "^0.34.4",
48
+ "zod": "^3.23.8"
49
+ },
50
+ "devDependencies": {
51
+ "@types/node": "^24.7.2"
52
+ },
53
+ "engines": {
54
+ "node": ">=18.0.0"
55
+ },
56
+ "publishConfig": {
57
+ "access": "public"
58
+ }
59
+ }