@macroforge/mcp-server 0.1.25 → 0.1.26

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.
Files changed (40) hide show
  1. package/dist/tools/docs-loader.d.ts +3 -0
  2. package/dist/tools/docs-loader.d.ts.map +1 -1
  3. package/dist/tools/docs-loader.js +4 -0
  4. package/dist/tools/docs-loader.js.map +1 -1
  5. package/dist/tools/index.js +60 -3
  6. package/dist/tools/index.js.map +1 -1
  7. package/docs/builtin-macros/deserialize/all-options.md +33 -0
  8. package/docs/builtin-macros/deserialize/combining-with-serialize.md +27 -0
  9. package/docs/builtin-macros/deserialize/enum-support.md +31 -0
  10. package/docs/builtin-macros/deserialize/error-handling.md +24 -0
  11. package/docs/builtin-macros/deserialize/interface-support.md +18 -0
  12. package/docs/builtin-macros/deserialize/overview.md +16 -0
  13. package/docs/builtin-macros/deserialize/runtime-validation.md +51 -0
  14. package/docs/builtin-macros/deserialize/serde-options.md +83 -0
  15. package/docs/builtin-macros/deserialize/type-alias-support.md +26 -0
  16. package/docs/custom-macros/rust-setup.md +6 -6
  17. package/docs/custom-macros/ts-macro-derive/accessing-field-data.md +53 -0
  18. package/docs/custom-macros/ts-macro-derive/adding-imports.md +21 -0
  19. package/docs/custom-macros/ts-macro-derive/attribute-options.md +50 -0
  20. package/docs/custom-macros/ts-macro-derive/complete-example.md +51 -0
  21. package/docs/custom-macros/ts-macro-derive/deriveinput-structure.md +61 -0
  22. package/docs/custom-macros/ts-macro-derive/overview.md +15 -0
  23. package/docs/custom-macros/ts-macro-derive/parsing-input.md +27 -0
  24. package/docs/custom-macros/ts-macro-derive/returning-errors.md +21 -0
  25. package/docs/custom-macros/ts-quote/backtick-template-literals.md +29 -0
  26. package/docs/custom-macros/ts-quote/comments-and.md +66 -0
  27. package/docs/custom-macros/ts-quote/complete-example-json-derive-macro.md +131 -0
  28. package/docs/custom-macros/ts-quote/conditionals-ifif.md +46 -0
  29. package/docs/custom-macros/ts-quote/identifier-concatenation-content.md +42 -0
  30. package/docs/custom-macros/ts-quote/iteration-for.md +60 -0
  31. package/docs/custom-macros/ts-quote/match-expressions-match.md +58 -0
  32. package/docs/custom-macros/ts-quote/overview.md +13 -0
  33. package/docs/custom-macros/ts-quote/pattern-matching-if-let.md +33 -0
  34. package/docs/custom-macros/ts-quote/quick-reference.md +83 -0
  35. package/docs/custom-macros/ts-quote/side-effects-do.md +23 -0
  36. package/docs/custom-macros/ts-quote/string-interpolation-text-expr.md +30 -0
  37. package/docs/custom-macros/ts-quote/tsstream-injection-typescript.md +61 -0
  38. package/docs/custom-macros/ts-quote/while-loops-while.md +81 -0
  39. package/docs/sections.json +322 -3
  40. package/package.json +2 -2
@@ -0,0 +1,33 @@
1
+ ## Pattern Matching: `{#if let}`
2
+
3
+ Use `if let` for pattern matching on `Option`, `Result`, or other Rust enums:
4
+
5
+ ```rust
6
+ let maybe_name: Option<&str> = Some("Alice");
7
+
8
+ let code = ts_template! {
9
+ {#if let Some(name) = maybe_name}
10
+ console.log("Hello, @{name}!");
11
+ {:else}
12
+ console.log("Hello, anonymous!");
13
+ {/if}
14
+ };
15
+ ```
16
+
17
+ **Generates:**
18
+
19
+ ```typescript
20
+ console.log("Hello, Alice!");
21
+ ```
22
+
23
+ This is useful when working with optional values from your IR:
24
+
25
+ ```rust
26
+ let code = ts_template! {
27
+ {#if let Some(default_val) = field.default_value}
28
+ this.@{field.name} = @{default_val};
29
+ {:else}
30
+ this.@{field.name} = undefined;
31
+ {/if}
32
+ };
33
+ ```
@@ -0,0 +1,83 @@
1
+ ## Quick Reference
2
+
3
+ | `@&#123;expr&#125;`
4
+ | Interpolate a Rust expression (adds space after)
5
+
6
+ | `&#123;| content |&#125;`
7
+ | Ident block: concatenates without spaces (e.g., `&#123;|get@&#123;name&#125;|&#125;` → `getUser`)
8
+
9
+ | `&#123;> comment <&#125;`
10
+ | Block comment: outputs `/* comment */`
11
+
12
+ | `&#123;>> doc <<&#125;`
13
+ | Doc comment: outputs `/** doc */` (for JSDoc)
14
+
15
+ | `@@&#123;`
16
+ | Escape for literal `@&#123;` (e.g., `"@@&#123;foo&#125;"` → `@&#123;foo&#125;`)
17
+
18
+ | `"text @&#123;expr&#125;"`
19
+ | String interpolation (auto-detected)
20
+
21
+ | `"'^template $&#123;js&#125;^'"`
22
+ | JS backtick template literal (outputs ``template $&#123;js&#125;``)
23
+
24
+ | `&#123;#if cond&#125;...&#123;/if&#125;`
25
+ | Conditional block
26
+
27
+ | `&#123;#if cond&#125;...&#123;:else&#125;...&#123;/if&#125;`
28
+ | Conditional with else
29
+
30
+ | `&#123;#if a&#125;...&#123;:else if b&#125;...&#123;:else&#125;...&#123;/if&#125;`
31
+ | Full if/else-if/else chain
32
+
33
+ | `&#123;#if let pattern = expr&#125;...&#123;/if&#125;`
34
+ | Pattern matching if-let
35
+
36
+ | `&#123;#match expr&#125;&#123;:case pattern&#125;...&#123;/match&#125;`
37
+ | Match expression with case arms
38
+
39
+ | `&#123;#for item in list&#125;...&#123;/for&#125;`
40
+ | Iterate over a collection
41
+
42
+ | `&#123;#while cond&#125;...&#123;/while&#125;`
43
+ | While loop
44
+
45
+ | `&#123;#while let pattern = expr&#125;...&#123;/while&#125;`
46
+ | While-let pattern matching loop
47
+
48
+ | `&#123;$let name = expr&#125;`
49
+ | Define a local constant
50
+
51
+ | `&#123;$let mut name = expr&#125;`
52
+ | Define a mutable local variable
53
+
54
+ | `&#123;$do expr&#125;`
55
+ | Execute a side-effectful expression
56
+
57
+ | `&#123;$typescript stream&#125;`
58
+ | Inject a TsStream, preserving its source and runtime_patches (imports)
59
+
60
+ **Note:** A single `@` not followed by `&#123;` passes through unchanged (e.g., `email@domain.com` works as expected).
61
+
62
+ ## Interpolation: `@&#123;expr&#125;`
63
+
64
+ Insert Rust expressions into the generated TypeScript:
65
+
66
+ ```rust
67
+ let class_name = "User";
68
+ let method = "toString";
69
+
70
+ let code = ts_template! {
71
+ @{class_name}.prototype.@{method} = function() {
72
+ return "User instance";
73
+ };
74
+ };
75
+ ```
76
+
77
+ **Generates:**
78
+
79
+ ```typescript
80
+ User.prototype.toString = function () {
81
+ return "User instance";
82
+ };
83
+ ```
@@ -0,0 +1,23 @@
1
+ ## Side Effects: `&#123;$do&#125;`
2
+
3
+ Execute an expression for its side effects without producing output. This is commonly used with mutable variables:
4
+
5
+ ```rust
6
+ let code = ts_template! {
7
+ {$let mut results: Vec<String> = Vec::new()}
8
+ {#for field in fields}
9
+ {$do results.push(format!("this.{}", field))}
10
+ {/for}
11
+ return [@{results.join(", ")}];
12
+ };
13
+ ```
14
+
15
+ Common uses for `&#123;$do&#125;`:
16
+
17
+ - Incrementing counters: `&#123;$do i += 1&#125;`
18
+
19
+ - Building collections: `&#123;$do vec.push(item)&#125;`
20
+
21
+ - Setting flags: `&#123;$do found = true&#125;`
22
+
23
+ - Any mutating operation
@@ -0,0 +1,30 @@
1
+ ## String Interpolation: `"text @&#123;expr&#125;"`
2
+
3
+ Interpolation works automatically inside string literals - no `format!()` needed:
4
+
5
+ ```rust
6
+ let name = "World";
7
+ let count = 42;
8
+
9
+ let code = ts_template! {
10
+ console.log("Hello @{name}!");
11
+ console.log("Count: @{count}, doubled: @{count * 2}");
12
+ };
13
+ ```
14
+
15
+ **Generates:**
16
+
17
+ ```typescript
18
+ console.log("Hello World!");
19
+ console.log("Count: 42, doubled: 84");
20
+ ```
21
+
22
+ This also works with method calls and complex expressions:
23
+
24
+ ```rust
25
+ let field = "username";
26
+
27
+ let code = ts_template! {
28
+ throw new Error("Invalid @{field.to_uppercase()}");
29
+ };
30
+ ```
@@ -0,0 +1,61 @@
1
+ ## TsStream Injection: `&#123;$typescript&#125;`
2
+
3
+ Inject another TsStream into your template, preserving both its source code and runtime patches (like imports added via `add_import()`):
4
+
5
+ ```rust
6
+ // Create a helper method with its own import
7
+ let mut helper = body! {
8
+ validateEmail(email: string): boolean {
9
+ return Result.ok(true);
10
+ }
11
+ };
12
+ helper.add_import("Result", "macroforge/result");
13
+
14
+ // Inject the helper into the main template
15
+ let result = body! {
16
+ {$typescript helper}
17
+
18
+ process(data: Record<string, unknown>): void {
19
+ // ...
20
+ }
21
+ };
22
+ // result now includes helper's source AND its Result import
23
+ ```
24
+
25
+ This is essential for composing multiple macro outputs while preserving imports and patches:
26
+
27
+ ```rust
28
+ let extra_methods = if include_validation {
29
+ Some(body! {
30
+ validate(): boolean { return true; }
31
+ })
32
+ } else {
33
+ None
34
+ };
35
+
36
+ body! {
37
+ mainMethod(): void {}
38
+
39
+ {#if let Some(methods) = extra_methods}
40
+ {$typescript methods}
41
+ {/if}
42
+ }
43
+ ```
44
+
45
+ ## Escape Syntax
46
+
47
+ If you need a literal `@&#123;` in your output (not interpolation), use `@@&#123;`:
48
+
49
+ ```rust
50
+ ts_template! {
51
+ // This outputs a literal @{foo}
52
+ const example = "Use @@{foo} for templates";
53
+ }
54
+ ```
55
+
56
+ **Generates:**
57
+
58
+ ```typescript
59
+ // This outputs a literal @{foo}
60
+ const example = "Use @{foo} for templates";
61
+ ```
@@ -0,0 +1,81 @@
1
+ ## While Loops: `&#123;#while&#125;`
2
+
3
+ Use `while` for loops that need to continue until a condition is false:
4
+
5
+ ```rust
6
+ let items = get_items();
7
+ let mut idx = 0;
8
+
9
+ let code = ts_template! {
10
+ {$let mut i = 0}
11
+ {#while i < items.len()}
12
+ console.log("Item @{i}");
13
+ {$do i += 1}
14
+ {/while}
15
+ };
16
+ ```
17
+
18
+ ### While-Let Pattern Matching
19
+
20
+ Use `while let` for iterating with pattern matching, similar to `if let`:
21
+
22
+ ```rust
23
+ let mut items = vec!["a", "b", "c"].into_iter();
24
+
25
+ let code = ts_template! {
26
+ {#while let Some(item) = items.next()}
27
+ console.log("@{item}");
28
+ {/while}
29
+ };
30
+ ```
31
+
32
+ **Generates:**
33
+
34
+ ```typescript
35
+ console.log("a");
36
+ console.log("b");
37
+ console.log("c");
38
+ ```
39
+
40
+ This is especially useful when working with iterators or consuming optional values:
41
+
42
+ ```rust
43
+ let code = ts_template! {
44
+ {#while let Some(next_field) = remaining_fields.pop()}
45
+ result.@{next_field.name} = this.@{next_field.name};
46
+ {/while}
47
+ };
48
+ ```
49
+
50
+ ## Local Constants: `&#123;$let&#125;`
51
+
52
+ Define local variables within the template scope:
53
+
54
+ ```rust
55
+ let items = vec![("user", "User"), ("post", "Post")];
56
+
57
+ let code = ts_template! {
58
+ {#for (key, class_name) in items}
59
+ {$let upper = class_name.to_uppercase()}
60
+ console.log("Processing @{upper}");
61
+ const @{key} = new @{class_name}();
62
+ {/for}
63
+ };
64
+ ```
65
+
66
+ This is useful for computing derived values inside loops without cluttering the Rust code.
67
+
68
+ ## Mutable Variables: `&#123;$let mut&#125;`
69
+
70
+ When you need to modify a variable within the template (e.g., in a `while` loop), use `&#123;$let mut&#125;`:
71
+
72
+ ```rust
73
+ let code = ts_template! {
74
+ {$let mut count = 0}
75
+ {#for item in items}
76
+ console.log("Item @{count}: @{item}");
77
+ {$do count += 1}
78
+ {/for}
79
+ console.log("Total: @{count}");
80
+ };
81
+ ```
@@ -111,13 +111,106 @@
111
111
  "path": "builtin-macros/serialize.md",
112
112
  "use_cases": "toJSON, serialization, json, api, data transfer"
113
113
  },
114
+ {
115
+ "id": "deserialize/overview",
116
+ "title": "Deserialize: Overview",
117
+ "category": "builtin-macros",
118
+ "category_title": "Built-in Macros",
119
+ "path": "builtin-macros/deserialize/overview.md",
120
+ "use_cases": "fromJSON, deserialization, deserialize, fromjson()",
121
+ "parent_id": "deserialize"
122
+ },
123
+ {
124
+ "id": "deserialize/runtime-validation",
125
+ "title": "Deserialize: Runtime Validation",
126
+ "category": "builtin-macros",
127
+ "category_title": "Built-in Macros",
128
+ "path": "builtin-macros/deserialize/runtime-validation.md",
129
+ "use_cases": "fromJSON, deserialization",
130
+ "parent_id": "deserialize"
131
+ },
132
+ {
133
+ "id": "deserialize/serde-options",
134
+ "title": "Deserialize: Serde Options",
135
+ "category": "builtin-macros",
136
+ "category_title": "Built-in Macros",
137
+ "path": "builtin-macros/deserialize/serde-options.md",
138
+ "use_cases": "fromJSON, deserialization, @serde",
139
+ "parent_id": "deserialize"
140
+ },
141
+ {
142
+ "id": "deserialize/all-options",
143
+ "title": "Deserialize: All Options",
144
+ "category": "builtin-macros",
145
+ "category_title": "Built-in Macros",
146
+ "path": "builtin-macros/deserialize/all-options.md",
147
+ "use_cases": "fromJSON, deserialization, rename_all, string, deny_unknown_fields, boolean",
148
+ "parent_id": "deserialize"
149
+ },
150
+ {
151
+ "id": "deserialize/interface-support",
152
+ "title": "Deserialize: Interface Support",
153
+ "category": "builtin-macros",
154
+ "category_title": "Built-in Macros",
155
+ "path": "builtin-macros/deserialize/interface-support.md",
156
+ "use_cases": "fromJSON, deserialization, fromjson",
157
+ "parent_id": "deserialize"
158
+ },
159
+ {
160
+ "id": "deserialize/enum-support",
161
+ "title": "Deserialize: Enum Support",
162
+ "category": "builtin-macros",
163
+ "category_title": "Built-in Macros",
164
+ "path": "builtin-macros/deserialize/enum-support.md",
165
+ "use_cases": "fromJSON, deserialization, fromjson",
166
+ "parent_id": "deserialize"
167
+ },
168
+ {
169
+ "id": "deserialize/type-alias-support",
170
+ "title": "Deserialize: Type Alias Support",
171
+ "category": "builtin-macros",
172
+ "category_title": "Built-in Macros",
173
+ "path": "builtin-macros/deserialize/type-alias-support.md",
174
+ "use_cases": "fromJSON, deserialization",
175
+ "parent_id": "deserialize"
176
+ },
177
+ {
178
+ "id": "deserialize/combining-with-serialize",
179
+ "title": "Deserialize: Combining with Serialize",
180
+ "category": "builtin-macros",
181
+ "category_title": "Built-in Macros",
182
+ "path": "builtin-macros/deserialize/combining-with-serialize.md",
183
+ "use_cases": "fromJSON, deserialization",
184
+ "parent_id": "deserialize"
185
+ },
186
+ {
187
+ "id": "deserialize/error-handling",
188
+ "title": "Deserialize: Error Handling",
189
+ "category": "builtin-macros",
190
+ "category_title": "Built-in Macros",
191
+ "path": "builtin-macros/deserialize/error-handling.md",
192
+ "use_cases": "fromJSON, deserialization",
193
+ "parent_id": "deserialize"
194
+ },
114
195
  {
115
196
  "id": "deserialize",
116
197
  "title": "Deserialize",
117
198
  "category": "builtin-macros",
118
199
  "category_title": "Built-in Macros",
119
200
  "path": "builtin-macros/deserialize.md",
120
- "use_cases": "fromJSON, deserialization, parsing, validation, json"
201
+ "use_cases": "fromJSON, deserialization, parsing, validation, json",
202
+ "is_chunked": true,
203
+ "chunk_ids": [
204
+ "deserialize/overview",
205
+ "deserialize/runtime-validation",
206
+ "deserialize/serde-options",
207
+ "deserialize/all-options",
208
+ "deserialize/interface-support",
209
+ "deserialize/enum-support",
210
+ "deserialize/type-alias-support",
211
+ "deserialize/combining-with-serialize",
212
+ "deserialize/error-handling"
213
+ ]
121
214
  },
122
215
  {
123
216
  "id": "custom-overview",
@@ -135,13 +228,222 @@
135
228
  "path": "custom-macros/rust-setup.md",
136
229
  "use_cases": "rust, cargo, napi, compilation, building"
137
230
  },
231
+ {
232
+ "id": "ts-macro-derive/overview",
233
+ "title": "#[ts_macro_derive]: Overview",
234
+ "category": "custom-macros",
235
+ "category_title": "Custom Macros",
236
+ "path": "custom-macros/ts-macro-derive/overview.md",
237
+ "use_cases": "attribute, proc macro, #[ts_macro_derive]",
238
+ "parent_id": "ts-macro-derive"
239
+ },
240
+ {
241
+ "id": "ts-macro-derive/attribute-options",
242
+ "title": "#[ts_macro_derive]: Attribute Options",
243
+ "category": "custom-macros",
244
+ "category_title": "Custom Macros",
245
+ "path": "custom-macros/ts-macro-derive/attribute-options.md",
246
+ "use_cases": "attribute, proc macro, @derive()",
247
+ "parent_id": "ts-macro-derive"
248
+ },
249
+ {
250
+ "id": "ts-macro-derive/parsing-input",
251
+ "title": "#[ts_macro_derive]: Parsing Input",
252
+ "category": "custom-macros",
253
+ "category_title": "Custom Macros",
254
+ "path": "custom-macros/ts-macro-derive/parsing-input.md",
255
+ "use_cases": "attribute, proc macro, parse_ts_macro_input!",
256
+ "parent_id": "ts-macro-derive"
257
+ },
258
+ {
259
+ "id": "ts-macro-derive/deriveinput-structure",
260
+ "title": "#[ts_macro_derive]: DeriveInput Structure",
261
+ "category": "custom-macros",
262
+ "category_title": "Custom Macros",
263
+ "path": "custom-macros/ts-macro-derive/deriveinput-structure.md",
264
+ "use_cases": "attribute, proc macro",
265
+ "parent_id": "ts-macro-derive"
266
+ },
267
+ {
268
+ "id": "ts-macro-derive/accessing-field-data",
269
+ "title": "#[ts_macro_derive]: Accessing Field Data",
270
+ "category": "custom-macros",
271
+ "category_title": "Custom Macros",
272
+ "path": "custom-macros/ts-macro-derive/accessing-field-data.md",
273
+ "use_cases": "attribute, proc macro",
274
+ "parent_id": "ts-macro-derive"
275
+ },
276
+ {
277
+ "id": "ts-macro-derive/adding-imports",
278
+ "title": "#[ts_macro_derive]: Adding Imports",
279
+ "category": "custom-macros",
280
+ "category_title": "Custom Macros",
281
+ "path": "custom-macros/ts-macro-derive/adding-imports.md",
282
+ "use_cases": "attribute, proc macro, add_import, tsstream",
283
+ "parent_id": "ts-macro-derive"
284
+ },
285
+ {
286
+ "id": "ts-macro-derive/returning-errors",
287
+ "title": "#[ts_macro_derive]: Returning Errors",
288
+ "category": "custom-macros",
289
+ "category_title": "Custom Macros",
290
+ "path": "custom-macros/ts-macro-derive/returning-errors.md",
291
+ "use_cases": "attribute, proc macro, macroforgeerror",
292
+ "parent_id": "ts-macro-derive"
293
+ },
294
+ {
295
+ "id": "ts-macro-derive/complete-example",
296
+ "title": "#[ts_macro_derive]: Complete Example",
297
+ "category": "custom-macros",
298
+ "category_title": "Custom Macros",
299
+ "path": "custom-macros/ts-macro-derive/complete-example.md",
300
+ "use_cases": "attribute, proc macro",
301
+ "parent_id": "ts-macro-derive"
302
+ },
138
303
  {
139
304
  "id": "ts-macro-derive",
140
305
  "title": "#[ts_macro_derive]",
141
306
  "category": "custom-macros",
142
307
  "category_title": "Custom Macros",
143
308
  "path": "custom-macros/ts-macro-derive.md",
144
- "use_cases": "attribute, proc macro, derive attribute, rust macro"
309
+ "use_cases": "attribute, proc macro, derive attribute, rust macro",
310
+ "is_chunked": true,
311
+ "chunk_ids": [
312
+ "ts-macro-derive/overview",
313
+ "ts-macro-derive/attribute-options",
314
+ "ts-macro-derive/parsing-input",
315
+ "ts-macro-derive/deriveinput-structure",
316
+ "ts-macro-derive/accessing-field-data",
317
+ "ts-macro-derive/adding-imports",
318
+ "ts-macro-derive/returning-errors",
319
+ "ts-macro-derive/complete-example"
320
+ ]
321
+ },
322
+ {
323
+ "id": "ts-quote/overview",
324
+ "title": "Template Syntax: Overview",
325
+ "category": "custom-macros",
326
+ "category_title": "Custom Macros",
327
+ "path": "custom-macros/ts-quote/overview.md",
328
+ "use_cases": "ts_quote, template, macroforge_ts_quote, ts_template!, body!",
329
+ "parent_id": "ts-quote"
330
+ },
331
+ {
332
+ "id": "ts-quote/quick-reference",
333
+ "title": "Template Syntax: Quick Reference",
334
+ "category": "custom-macros",
335
+ "category_title": "Custom Macros",
336
+ "path": "custom-macros/ts-quote/quick-reference.md",
337
+ "use_cases": "ts_quote, template, @&#123;expr&#125;, getuser",
338
+ "parent_id": "ts-quote"
339
+ },
340
+ {
341
+ "id": "ts-quote/identifier-concatenation-content",
342
+ "title": "Template Syntax: Identifier Concatenation: `&#123;| content |&#125;`",
343
+ "category": "custom-macros",
344
+ "category_title": "Custom Macros",
345
+ "path": "custom-macros/ts-quote/identifier-concatenation-content.md",
346
+ "use_cases": "ts_quote, template, getuser, setname",
347
+ "parent_id": "ts-quote"
348
+ },
349
+ {
350
+ "id": "ts-quote/comments-and",
351
+ "title": "Template Syntax: Comments: `&#123;> ... <&#125;` and `&#123;>> ... <<&#125;`",
352
+ "category": "custom-macros",
353
+ "category_title": "Custom Macros",
354
+ "path": "custom-macros/ts-quote/comments-and.md",
355
+ "use_cases": "ts_quote, template, \n\n**generates:**\n\n",
356
+ "parent_id": "ts-quote"
357
+ },
358
+ {
359
+ "id": "ts-quote/string-interpolation-text-expr",
360
+ "title": "Template Syntax: String Interpolation: `\"text @&#123;expr&#125;\"`",
361
+ "category": "custom-macros",
362
+ "category_title": "Custom Macros",
363
+ "path": "custom-macros/ts-quote/string-interpolation-text-expr.md",
364
+ "use_cases": "ts_quote, template, format!(), \n\n**generates:**\n\n",
365
+ "parent_id": "ts-quote"
366
+ },
367
+ {
368
+ "id": "ts-quote/backtick-template-literals",
369
+ "title": "Template Syntax: Backtick Template Literals: `\"'^...^'\"`",
370
+ "category": "custom-macros",
371
+ "category_title": "Custom Macros",
372
+ "path": "custom-macros/ts-quote/backtick-template-literals.md",
373
+ "use_cases": "ts_quote, template, \"'^...^'\", '^...^', ${\"${}\"}",
374
+ "parent_id": "ts-quote"
375
+ },
376
+ {
377
+ "id": "ts-quote/conditionals-ifif",
378
+ "title": "Template Syntax: Conditionals: `&#123;#if&#125;...&#123;/if&#125;`",
379
+ "category": "custom-macros",
380
+ "category_title": "Custom Macros",
381
+ "path": "custom-macros/ts-quote/conditionals-ifif.md",
382
+ "use_cases": "ts_quote, template",
383
+ "parent_id": "ts-quote"
384
+ },
385
+ {
386
+ "id": "ts-quote/pattern-matching-if-let",
387
+ "title": "Template Syntax: Pattern Matching: `&#123;#if let&#125;`",
388
+ "category": "custom-macros",
389
+ "category_title": "Custom Macros",
390
+ "path": "custom-macros/ts-quote/pattern-matching-if-let.md",
391
+ "use_cases": "ts_quote, template, option, result",
392
+ "parent_id": "ts-quote"
393
+ },
394
+ {
395
+ "id": "ts-quote/match-expressions-match",
396
+ "title": "Template Syntax: Match Expressions: `&#123;#match&#125;`",
397
+ "category": "custom-macros",
398
+ "category_title": "Custom Macros",
399
+ "path": "custom-macros/ts-quote/match-expressions-match.md",
400
+ "use_cases": "ts_quote, template, &#123;#match&#125;, match, \n\n**generates:**\n\n",
401
+ "parent_id": "ts-quote"
402
+ },
403
+ {
404
+ "id": "ts-quote/iteration-for",
405
+ "title": "Template Syntax: Iteration: `&#123;#for&#125;`",
406
+ "category": "custom-macros",
407
+ "category_title": "Custom Macros",
408
+ "path": "custom-macros/ts-quote/iteration-for.md",
409
+ "use_cases": "ts_quote, template, &#123;#for&#125;, \n\n**generates:**\n\n",
410
+ "parent_id": "ts-quote"
411
+ },
412
+ {
413
+ "id": "ts-quote/while-loops-while",
414
+ "title": "Template Syntax: While Loops: `&#123;#while&#125;`",
415
+ "category": "custom-macros",
416
+ "category_title": "Custom Macros",
417
+ "path": "custom-macros/ts-quote/while-loops-while.md",
418
+ "use_cases": "ts_quote, template, &#123;#while&#125;, while",
419
+ "parent_id": "ts-quote"
420
+ },
421
+ {
422
+ "id": "ts-quote/side-effects-do",
423
+ "title": "Template Syntax: Side Effects: `&#123;$do&#125;`",
424
+ "category": "custom-macros",
425
+ "category_title": "Custom Macros",
426
+ "path": "custom-macros/ts-quote/side-effects-do.md",
427
+ "use_cases": "ts_quote, template, &#123;$do&#125;",
428
+ "parent_id": "ts-quote"
429
+ },
430
+ {
431
+ "id": "ts-quote/tsstream-injection-typescript",
432
+ "title": "Template Syntax: TsStream Injection: `&#123;$typescript&#125;`",
433
+ "category": "custom-macros",
434
+ "category_title": "Custom Macros",
435
+ "path": "custom-macros/ts-quote/tsstream-injection-typescript.md",
436
+ "use_cases": "ts_quote, template, &#123;$typescript&#125;, add_import()",
437
+ "parent_id": "ts-quote"
438
+ },
439
+ {
440
+ "id": "ts-quote/complete-example-json-derive-macro",
441
+ "title": "Template Syntax: Complete Example: JSON Derive Macro",
442
+ "category": "custom-macros",
443
+ "category_title": "Custom Macros",
444
+ "path": "custom-macros/ts-quote/complete-example-json-derive-macro.md",
445
+ "use_cases": "ts_quote, template, ts_template!",
446
+ "parent_id": "ts-quote"
145
447
  },
146
448
  {
147
449
  "id": "ts-quote",
@@ -149,7 +451,24 @@
149
451
  "category": "custom-macros",
150
452
  "category_title": "Custom Macros",
151
453
  "path": "custom-macros/ts-quote.md",
152
- "use_cases": "ts_quote, template, code generation, interpolation"
454
+ "use_cases": "ts_quote, template, code generation, interpolation",
455
+ "is_chunked": true,
456
+ "chunk_ids": [
457
+ "ts-quote/overview",
458
+ "ts-quote/quick-reference",
459
+ "ts-quote/identifier-concatenation-content",
460
+ "ts-quote/comments-and",
461
+ "ts-quote/string-interpolation-text-expr",
462
+ "ts-quote/backtick-template-literals",
463
+ "ts-quote/conditionals-ifif",
464
+ "ts-quote/pattern-matching-if-let",
465
+ "ts-quote/match-expressions-match",
466
+ "ts-quote/iteration-for",
467
+ "ts-quote/while-loops-while",
468
+ "ts-quote/side-effects-do",
469
+ "ts-quote/tsstream-injection-typescript",
470
+ "ts-quote/complete-example-json-derive-macro"
471
+ ]
153
472
  },
154
473
  {
155
474
  "id": "integration-overview",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@macroforge/mcp-server",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "description": "MCP server for Macroforge documentation and code analysis",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,7 +27,7 @@
27
27
  "typescript": "^5.7.0"
28
28
  },
29
29
  "peerDependencies": {
30
- "macroforge": "^0.1.25"
30
+ "macroforge": "^0.1.26"
31
31
  },
32
32
  "peerDependenciesMeta": {
33
33
  "macroforge": {