@macroforge/mcp-server 0.1.24 → 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
@@ -6,6 +6,9 @@ export interface Section {
6
6
  path: string;
7
7
  use_cases: string;
8
8
  content?: string;
9
+ is_chunked?: boolean;
10
+ parent_id?: string;
11
+ chunk_ids?: string[];
9
12
  }
10
13
  /**
11
14
  * Load all documentation sections from the docs directory
@@ -1 +1 @@
1
- {"version":3,"file":"docs-loader.d.ts","sourceRoot":"","sources":["../../src/tools/docs-loader.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAqBxC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAoBlF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAW7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CA0C5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CAOtF"}
1
+ {"version":3,"file":"docs-loader.d.ts","sourceRoot":"","sources":["../../src/tools/docs-loader.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,EAAE,CA0BxC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAoBlF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAW7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CA0C5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CAOtF"}
@@ -16,6 +16,10 @@ export function loadSections() {
16
16
  const sectionsData = JSON.parse(readFileSync(sectionsPath, 'utf-8'));
17
17
  // Load content for each section
18
18
  for (const section of sectionsData) {
19
+ // For chunked parent sections, we don't load content - it will be handled specially
20
+ if (section.is_chunked) {
21
+ continue;
22
+ }
19
23
  const contentPath = join(docsDir, section.path);
20
24
  if (existsSync(contentPath)) {
21
25
  section.content = readFileSync(contentPath, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"docs-loader.js","sourceRoot":"","sources":["../../src/tools/docs-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs-loader.js","sourceRoot":"","sources":["../../src/tools/docs-loader.ts"],"names":[],"mappings":"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"}
@@ -166,9 +166,12 @@ Use with a name parameter to get info for a specific macro or decorator.`,
166
166
  }
167
167
  /**
168
168
  * Handle list-sections tool call
169
+ * Filters out sub-chunks to show only top-level sections
169
170
  */
170
171
  function handleListSections() {
171
- const formatted = sections
172
+ // Filter out sub-chunks (sections with parent_id) - only show top-level sections
173
+ const topLevelSections = sections.filter((s) => !s.parent_id);
174
+ const formatted = topLevelSections
172
175
  .map((s) => `* title: [${s.title}], use_cases: [${s.use_cases}], path: [${s.path}], category: [${s.category_title}]`)
173
176
  .join('\n');
174
177
  return {
@@ -182,6 +185,7 @@ function handleListSections() {
182
185
  }
183
186
  /**
184
187
  * Handle get-documentation tool call
188
+ * For chunked sections, returns the first chunk with a list of available sub-chunks
185
189
  */
186
190
  function handleGetDocumentation(args) {
187
191
  const sectionNames = Array.isArray(args.section) ? args.section : [args.section];
@@ -189,13 +193,66 @@ function handleGetDocumentation(args) {
189
193
  for (const name of sectionNames) {
190
194
  const section = getSection(sections, name);
191
195
  if (section) {
192
- results.push(`# ${section.title}\n\n${section.content}`);
196
+ // Check if this is a chunked section
197
+ if (section.is_chunked && section.chunk_ids && section.chunk_ids.length > 0) {
198
+ // Get the first chunk
199
+ const firstChunkId = section.chunk_ids[0];
200
+ const firstChunk = sections.find((s) => s.id === firstChunkId);
201
+ if (firstChunk) {
202
+ let result = `# ${section.title}\n\n${firstChunk.content}`;
203
+ // Add list of other available chunks
204
+ if (section.chunk_ids.length > 1) {
205
+ const otherChunks = section.chunk_ids.slice(1);
206
+ const chunkList = otherChunks
207
+ .map((id) => {
208
+ const chunk = sections.find((s) => s.id === id);
209
+ return chunk ? `- \`${id}\`: ${chunk.title.replace(`${section.title}: `, '')}` : null;
210
+ })
211
+ .filter(Boolean)
212
+ .join('\n');
213
+ result += `\n\n---\n\n**This section has additional chunks available:**\n${chunkList}\n\nRequest specific chunks with \`get-documentation\` for more details.`;
214
+ }
215
+ results.push(result);
216
+ }
217
+ else {
218
+ results.push(`# ${section.title}\n\nChunked content not found.`);
219
+ }
220
+ }
221
+ else {
222
+ // Regular section - return content directly
223
+ results.push(`# ${section.title}\n\n${section.content}`);
224
+ }
193
225
  }
194
226
  else {
195
227
  // Try fuzzy search
196
228
  const matches = searchSections(sections, name);
197
229
  if (matches.length > 0) {
198
- results.push(`# ${matches[0].title}\n\n${matches[0].content}`);
230
+ const match = matches[0];
231
+ // Handle chunked sections in fuzzy match too
232
+ if (match.is_chunked && match.chunk_ids && match.chunk_ids.length > 0) {
233
+ const firstChunk = sections.find((s) => s.id === match.chunk_ids[0]);
234
+ if (firstChunk) {
235
+ let result = `# ${match.title}\n\n${firstChunk.content}`;
236
+ if (match.chunk_ids.length > 1) {
237
+ const otherChunks = match.chunk_ids.slice(1);
238
+ const chunkList = otherChunks
239
+ .map((id) => {
240
+ const chunk = sections.find((s) => s.id === id);
241
+ return chunk ? `- \`${id}\`: ${chunk.title.replace(`${match.title}: `, '')}` : null;
242
+ })
243
+ .filter(Boolean)
244
+ .join('\n');
245
+ result += `\n\n---\n\n**This section has additional chunks available:**\n${chunkList}\n\nRequest specific chunks with \`get-documentation\` for more details.`;
246
+ }
247
+ results.push(result);
248
+ }
249
+ else {
250
+ results.push(`# ${match.title}\n\n${match.content}`);
251
+ }
252
+ }
253
+ else {
254
+ results.push(`# ${match.title}\n\n${match.content}`);
255
+ }
199
256
  }
200
257
  else {
201
258
  results.push(`Documentation for "${name}" not found.`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,SAAS,EACT,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAE1F,IAAI,QAAQ,GAAc,EAAE,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,8BAA8B;IAC9B,QAAQ,GAAG,YAAY,EAAE,CAAC;IAE1B,wBAAwB;IACxB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,eAAe;oBACrB,WAAW,EAAE;;;;;;;;;;;;;gFAayD;oBACtE,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,EAAE;qBACf;iBACF;gBACD;oBACE,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE;;;;;;;;4FAQqE;oBAClF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,OAAO,EAAE;gCACP,KAAK,EAAE;oCACL,EAAE,IAAI,EAAE,QAAQ,EAAE;oCAClB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;iCAC7C;gCACD,WAAW,EACT,0EAA0E;6BAC7E;yBACF;wBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;qBACtB;iBACF;gBACD;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EAAE;;;;;;;;;;;;;;;;;;kCAkBW;oBACxB,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qDAAqD;6BACnE;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,2CAA2C;6BACzD;yBACF;wBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;qBACnB;iBACF;gBACD;oBACE,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE;;;;;;;;;;mCAUY;oBACzB,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,mDAAmD;6BACjE;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,2CAA2C;6BACzD;yBACF;wBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;qBACnB;iBACF;gBACD;oBACE,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE;;;;;;;;yEAQkD;oBAC/D,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,uDAAuD;6BACrE;yBACF;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,eAAe;gBAClB,OAAO,kBAAkB,EAAE,CAAC;YAE9B,KAAK,mBAAmB;gBACtB,OAAO,sBAAsB,CAAC,IAAsC,CAAC,CAAC;YAExE,KAAK,sBAAsB;gBACzB,OAAO,eAAe,CAAC,IAA2C,CAAC,CAAC;YAEtE,KAAK,aAAa;gBAChB,OAAO,gBAAgB,CAAC,IAA2C,CAAC,CAAC;YAEvE,KAAK,gBAAgB;gBACnB,OAAO,kBAAkB,CAAC,IAAyB,CAAC,CAAC;YAEvD;gBACE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,MAAM,SAAS,GAAG,QAAQ;SACvB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,aAAa,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,cAAc,GAAG,CAC3G;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,mDAAmD,SAAS,EAAE;aACrE;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAoC;IAClE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,sBAAsB,IAAI,cAAc,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;aAClC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAAC,IAAyC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,WAAW,EAAE,CAAC;oCACZ,KAAK,EAAE,OAAO;oCACd,OAAO,EAAE,qEAAqE;iCAC/E,CAAC;4BACF,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;4BAC5C,sCAAsC,EAAE,KAAK;yBAC9C,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAoB;YAC9B,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;gBACvF,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;gBACzB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAC3D,CAAC,CAAC;YACH,OAAO,EAAE;gBACP,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,MAAM;gBAC7D,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM;gBACjE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,MAAM;aAC3D;YACD,sCAAsC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;SACrF,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,WAAW,EAAE,CAAC;gCACZ,KAAK,EAAE,OAAO;gCACd,OAAO,EAAE,0BAA0B,OAAO,EAAE;6BAC7C,CAAC;wBACF,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;wBAC5C,sCAAsC,EAAE,KAAK;qBAC9C,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAyC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,8FAA8F;qBACrG;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAE7C,0BAA0B;QAC1B,MAAM,MAAM,GAAiB;YAC3B,YAAY,EAAE,MAAM,CAAC,IAAI;YACzB,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK;gBACvB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;aAC1B,CAAC,CAAC;YACH,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;SACxD,CAAC;QAEF,6BAA6B;QAC7B,IAAI,IAAI,GAAG,yCAAyC,MAAM,CAAC,IAAI,UAAU,CAAC;QAE1E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,IAAI,wBAAwB,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrF,IAAI,IAAI,QAAQ,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC;gBAClE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACX,IAAI,IAAI,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC;gBAClC,CAAC;gBACD,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;wBAC3B,IAAI,IAAI,aAAa,IAAI,IAAI,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,yBAAyB,OAAO,EAAE;iBACzC;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,IAAuB;IACvD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE5C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,mGAAmG;qBAC1G;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,uBAAuB,EAAE,CAAC;QAEtD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,sCAAsC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC;YAEtF,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,0CAA0C,IAAI,CAAC,IAAI;;oBAEnD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;wBACvC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBAC9D;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,qBAAqB,KAAK,CAAC,IAAI,OAAO,CAAC;gBACjD,MAAM,IAAI,oBAAoB,KAAK,CAAC,WAAW,IAAI,0BAA0B,IAAI,CAAC;gBAClF,MAAM,IAAI,aAAa,KAAK,CAAC,IAAI,IAAI,CAAC;gBACtC,MAAM,IAAI,gBAAgB,KAAK,CAAC,OAAO,IAAI,CAAC;YAC9C,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,MAAM;oBAAE,MAAM,IAAI,WAAW,CAAC;gBAClC,MAAM,IAAI,kBAAkB,SAAS,CAAC,MAAM,MAAM,CAAC;gBACnD,MAAM,IAAI,sBAAsB,SAAS,CAAC,IAAI,IAAI,4BAA4B,IAAI,CAAC;gBACnF,MAAM,IAAI,aAAa,SAAS,CAAC,IAAI,IAAI,CAAC;gBAC1C,MAAM,IAAI,eAAe,SAAS,CAAC,MAAM,IAAI,CAAC;YAChD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aACnD,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,IAAI,MAAM,GAAG,iCAAiC,CAAC;QAE/C,MAAM,IAAI,yBAAyB,CAAC;QACpC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,eAAe,KAAK,CAAC,IAAI,KAAK,CAAC;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,gBAAgB,MAAM,CAAC;QAC3D,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,mCAAmC,CAAC;YAC9C,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC5C,MAAM,IAAI,QAAQ,SAAS,CAAC,MAAM,IAAI,CAAC;gBACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,kBAAkB,MAAM,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,6BAA6B,OAAO,EAAE;iBAC7C;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AA8ED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC;QACH,4CAA4C;QAC5C,2DAA2D;QAC3D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7C,OAAO,GAAuB,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,SAAS,EACT,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAE1F,IAAI,QAAQ,GAAc,EAAE,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,8BAA8B;IAC9B,QAAQ,GAAG,YAAY,EAAE,CAAC;IAE1B,wBAAwB;IACxB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,eAAe;oBACrB,WAAW,EAAE;;;;;;;;;;;;;gFAayD;oBACtE,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,EAAE;qBACf;iBACF;gBACD;oBACE,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE;;;;;;;;4FAQqE;oBAClF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,OAAO,EAAE;gCACP,KAAK,EAAE;oCACL,EAAE,IAAI,EAAE,QAAQ,EAAE;oCAClB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;iCAC7C;gCACD,WAAW,EACT,0EAA0E;6BAC7E;yBACF;wBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;qBACtB;iBACF;gBACD;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EAAE;;;;;;;;;;;;;;;;;;kCAkBW;oBACxB,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qDAAqD;6BACnE;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,2CAA2C;6BACzD;yBACF;wBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;qBACnB;iBACF;gBACD;oBACE,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE;;;;;;;;;;mCAUY;oBACzB,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,mDAAmD;6BACjE;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,2CAA2C;6BACzD;yBACF;wBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;qBACnB;iBACF;gBACD;oBACE,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE;;;;;;;;yEAQkD;oBAC/D,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,uDAAuD;6BACrE;yBACF;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,eAAe;gBAClB,OAAO,kBAAkB,EAAE,CAAC;YAE9B,KAAK,mBAAmB;gBACtB,OAAO,sBAAsB,CAAC,IAAsC,CAAC,CAAC;YAExE,KAAK,sBAAsB;gBACzB,OAAO,eAAe,CAAC,IAA2C,CAAC,CAAC;YAEtE,KAAK,aAAa;gBAChB,OAAO,gBAAgB,CAAC,IAA2C,CAAC,CAAC;YAEvE,KAAK,gBAAgB;gBACnB,OAAO,kBAAkB,CAAC,IAAyB,CAAC,CAAC;YAEvD;gBACE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB;IACzB,iFAAiF;IACjF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB;SAC/B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,aAAa,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,cAAc,GAAG,CAC3G;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,mDAAmD,SAAS,EAAE;aACrE;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,IAAoC;IAClE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,qCAAqC;YACrC,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5E,sBAAsB;gBACtB,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;gBAE/D,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,MAAM,GAAG,KAAK,OAAO,CAAC,KAAK,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;oBAE3D,qCAAqC;oBACrC,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACjC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,MAAM,SAAS,GAAG,WAAW;6BAC1B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;4BACV,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;4BAChD,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;wBACxF,CAAC,CAAC;6BACD,MAAM,CAAC,OAAO,CAAC;6BACf,IAAI,CAAC,IAAI,CAAC,CAAC;wBAEd,MAAM,IAAI,iEAAiE,SAAS,0EAA0E,CAAC;oBACjK,CAAC;oBAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,gCAAgC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzB,6CAA6C;gBAC7C,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,SAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtE,IAAI,UAAU,EAAE,CAAC;wBACf,IAAI,MAAM,GAAG,KAAK,KAAK,CAAC,KAAK,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;wBACzD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4BAC7C,MAAM,SAAS,GAAG,WAAW;iCAC1B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gCACV,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gCAChD,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;4BACtF,CAAC,CAAC;iCACD,MAAM,CAAC,OAAO,CAAC;iCACf,IAAI,CAAC,IAAI,CAAC,CAAC;4BACd,MAAM,IAAI,iEAAiE,SAAS,0EAA0E,CAAC;wBACjK,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvB,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,sBAAsB,IAAI,cAAc,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;aAClC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAAC,IAAyC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,WAAW,EAAE,CAAC;oCACZ,KAAK,EAAE,OAAO;oCACd,OAAO,EAAE,qEAAqE;iCAC/E,CAAC;4BACF,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;4BAC5C,sCAAsC,EAAE,KAAK;yBAC9C,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAoB;YAC9B,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;gBACvF,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;gBACzB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAC3D,CAAC,CAAC;YACH,OAAO,EAAE;gBACP,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,MAAM;gBAC7D,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM;gBACjE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,MAAM;aAC3D;YACD,sCAAsC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;SACrF,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,WAAW,EAAE,CAAC;gCACZ,KAAK,EAAE,OAAO;gCACd,OAAO,EAAE,0BAA0B,OAAO,EAAE;6BAC7C,CAAC;wBACF,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;wBAC5C,sCAAsC,EAAE,KAAK;qBAC9C,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAyC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,8FAA8F;qBACrG;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAE7C,0BAA0B;QAC1B,MAAM,MAAM,GAAiB;YAC3B,YAAY,EAAE,MAAM,CAAC,IAAI;YACzB,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK;gBACvB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;aAC1B,CAAC,CAAC;YACH,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;SACxD,CAAC;QAEF,6BAA6B;QAC7B,IAAI,IAAI,GAAG,yCAAyC,MAAM,CAAC,IAAI,UAAU,CAAC;QAE1E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,IAAI,wBAAwB,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrF,IAAI,IAAI,QAAQ,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC;gBAClE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACX,IAAI,IAAI,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC;gBAClC,CAAC;gBACD,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;wBAC3B,IAAI,IAAI,aAAa,IAAI,IAAI,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,yBAAyB,OAAO,EAAE;iBACzC;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,IAAuB;IACvD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE5C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,mGAAmG;qBAC1G;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,uBAAuB,EAAE,CAAC;QAEtD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,sCAAsC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC;YAEtF,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,0CAA0C,IAAI,CAAC,IAAI;;oBAEnD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;wBACvC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBAC9D;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,qBAAqB,KAAK,CAAC,IAAI,OAAO,CAAC;gBACjD,MAAM,IAAI,oBAAoB,KAAK,CAAC,WAAW,IAAI,0BAA0B,IAAI,CAAC;gBAClF,MAAM,IAAI,aAAa,KAAK,CAAC,IAAI,IAAI,CAAC;gBACtC,MAAM,IAAI,gBAAgB,KAAK,CAAC,OAAO,IAAI,CAAC;YAC9C,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,MAAM;oBAAE,MAAM,IAAI,WAAW,CAAC;gBAClC,MAAM,IAAI,kBAAkB,SAAS,CAAC,MAAM,MAAM,CAAC;gBACnD,MAAM,IAAI,sBAAsB,SAAS,CAAC,IAAI,IAAI,4BAA4B,IAAI,CAAC;gBACnF,MAAM,IAAI,aAAa,SAAS,CAAC,IAAI,IAAI,CAAC;gBAC1C,MAAM,IAAI,eAAe,SAAS,CAAC,MAAM,IAAI,CAAC;YAChD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aACnD,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,IAAI,MAAM,GAAG,iCAAiC,CAAC;QAE/C,MAAM,IAAI,yBAAyB,CAAC;QACpC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,eAAe,KAAK,CAAC,IAAI,KAAK,CAAC;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,gBAAgB,MAAM,CAAC;QAC3D,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,mCAAmC,CAAC;YAC9C,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC5C,MAAM,IAAI,QAAQ,SAAS,CAAC,MAAM,IAAI,CAAC;gBACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,kBAAkB,MAAM,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,6BAA6B,OAAO,EAAE;iBAC7C;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AA8ED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC;QACH,4CAA4C;QAC5C,2DAA2D;QAC3D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7C,OAAO,GAAuB,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,33 @@
1
+ ## All Options
2
+
3
+ ### Container Options (on class/interface)
4
+
5
+ | `rename_all`
6
+ | `string`
7
+ | Apply naming convention to all fields
8
+
9
+ | `deny_unknown_fields`
10
+ | `boolean`
11
+ | Throw error if JSON has unknown keys
12
+
13
+ ### Field Options (on properties)
14
+
15
+ | `rename`
16
+ | `string`
17
+ | Use a different JSON key
18
+
19
+ | `skip`
20
+ | `boolean`
21
+ | Exclude from serialization and deserialization
22
+
23
+ | `skip_deserializing`
24
+ | `boolean`
25
+ | Exclude from deserialization only
26
+
27
+ | `default`
28
+ | `boolean | string`
29
+ | Use TypeScript default or custom expression if missing
30
+
31
+ | `flatten`
32
+ | `boolean`
33
+ | Merge nested object fields from parent
@@ -0,0 +1,27 @@
1
+ ## Combining with Serialize
2
+
3
+ Use both Serialize and Deserialize for complete JSON round-trip support:
4
+
5
+ <InteractiveMacro code={`/** @derive(Serialize, Deserialize) */
6
+ /** @serde({ rename_all: "camelCase" }) */
7
+ class UserProfile {
8
+ user_name: string;
9
+ created_at: Date;
10
+ is_active: boolean;
11
+ }`} />
12
+
13
+ ```typescript
14
+ // Create and serialize
15
+ const profile = new UserProfile();
16
+ profile.user_name = "Alice";
17
+ profile.created_at = new Date();
18
+ profile.is_active = true;
19
+
20
+ const json = JSON.stringify(profile);
21
+ // {"userName":"Alice","createdAt":"2024-...","isActive":true}
22
+
23
+ // Deserialize back
24
+ const restored = UserProfile.fromJSON(JSON.parse(json));
25
+ console.log(restored.user_name); // "Alice"
26
+ console.log(restored.created_at instanceof Date); // true
27
+ ```
@@ -0,0 +1,31 @@
1
+ ## Enum Support
2
+
3
+ Deserialize also works with enums. The `fromJSON` function validates that the input matches one of the enum values:
4
+
5
+ <MacroExample before={data.examples.enum.before} after={data.examples.enum.after} />
6
+
7
+ ```typescript
8
+ const status = Status.fromJSON("active");
9
+ console.log(status); // Status.Active
10
+
11
+ // Invalid values throw an error
12
+ try {
13
+ Status.fromJSON("invalid");
14
+ } catch (e) {
15
+ console.log(e.message); // "Invalid Status value: invalid"
16
+ }
17
+ ```
18
+
19
+ Works with numeric enums too:
20
+
21
+ <InteractiveMacro code={`/** @derive(Deserialize) */
22
+ enum Priority {
23
+ Low = 1,
24
+ Medium = 2,
25
+ High = 3,
26
+ }`} />
27
+
28
+ ```typescript
29
+ const priority = Priority.fromJSON(3);
30
+ console.log(priority); // Priority.High
31
+ ```
@@ -0,0 +1,24 @@
1
+ ## Error Handling
2
+
3
+ Handle deserialization errors gracefully:
4
+
5
+ <InteractiveMacro code={`/** @derive(Deserialize) */
6
+ class User {
7
+ name: string;
8
+ email: string;
9
+ }`} />
10
+
11
+ ```typescript
12
+ function parseUser(json: unknown): User | null {
13
+ try {
14
+ return User.fromJSON(json);
15
+ } catch (error) {
16
+ console.error("Failed to parse user:", error.message);
17
+ return null;
18
+ }
19
+ }
20
+
21
+ const user = parseUser({ name: "Alice" });
22
+ // Logs: Failed to parse user: User.fromJSON: missing required field "email"
23
+ // Returns: null
24
+ ```
@@ -0,0 +1,18 @@
1
+ ## Interface Support
2
+
3
+ Deserialize also works with interfaces. For interfaces, a namespace is generated with `is` (type guard) and `fromJSON` functions:
4
+
5
+ <MacroExample before={data.examples.interface.before} after={data.examples.interface.after} />
6
+
7
+ ```typescript
8
+ const json = { status: 200, message: "OK", timestamp: "2024-01-15T10:30:00.000Z" };
9
+
10
+ // Type guard
11
+ if (ApiResponse.is(json)) {
12
+ console.log(json.status); // TypeScript knows this is ApiResponse
13
+ }
14
+
15
+ // Deserialize with validation
16
+ const response = ApiResponse.fromJSON(json);
17
+ console.log(response.timestamp instanceof Date); // true
18
+ ```
@@ -0,0 +1,16 @@
1
+ # Deserialize
2
+
3
+ *The `Deserialize` macro generates a static `fromJSON()` method that parses JSON data into your class with runtime validation and automatic type conversion.*
4
+
5
+ ## Basic Usage
6
+
7
+ <MacroExample before={data.examples.basic.before} after={data.examples.basic.after} />
8
+
9
+ ```typescript
10
+ const json = '{"name":"Alice","age":30,"createdAt":"2024-01-15T10:30:00.000Z"}';
11
+ const user = User.fromJSON(JSON.parse(json));
12
+
13
+ console.log(user.name); // "Alice"
14
+ console.log(user.age); // 30
15
+ console.log(user.createdAt instanceof Date); // true
16
+ ```
@@ -0,0 +1,51 @@
1
+ ## Runtime Validation
2
+
3
+ Deserialize validates the input data and throws descriptive errors:
4
+
5
+ <InteractiveMacro code={`/** @derive(Deserialize) */
6
+ class User {
7
+ name: string;
8
+ email: string;
9
+ }`} />
10
+
11
+ ```typescript
12
+ // Missing required field
13
+ User.fromJSON({ name: "Alice" });
14
+ // Error: User.fromJSON: missing required field "email"
15
+
16
+ // Wrong type
17
+ User.fromJSON("not an object");
18
+ // Error: User.fromJSON: expected an object, got string
19
+
20
+ // Array instead of object
21
+ User.fromJSON([1, 2, 3]);
22
+ // Error: User.fromJSON: expected an object, got array
23
+ ```
24
+
25
+ ## Automatic Type Conversion
26
+
27
+ Deserialize automatically converts JSON types to their TypeScript equivalents:
28
+
29
+ | string/number/boolean
30
+ | `string`/`number`/`boolean`
31
+ | Direct assignment
32
+
33
+ | ISO string
34
+ | `Date`
35
+ | `new Date(string)`
36
+
37
+ | array
38
+ | `T[]`
39
+ | Maps items with auto-detection
40
+
41
+ | object
42
+ | `Map<K, V>`
43
+ | `new Map(Object.entries())`
44
+
45
+ | array
46
+ | `Set<T>`
47
+ | `new Set(array)`
48
+
49
+ | object
50
+ | Nested class
51
+ | Calls `fromJSON()` if available
@@ -0,0 +1,83 @@
1
+ ## Serde Options
2
+
3
+ Use the `@serde` decorator to customize deserialization:
4
+
5
+ ### Renaming Fields
6
+
7
+ <MacroExample before={data.examples.rename.before} after={data.examples.rename.after} />
8
+
9
+ ```typescript
10
+ const user = User.fromJSON({ user_id: "123", full_name: "Alice" });
11
+ console.log(user.id); // "123"
12
+ console.log(user.name); // "Alice"
13
+ ```
14
+
15
+ ### Default Values
16
+
17
+ <MacroExample before={data.examples.default.before} after={data.examples.default.after} />
18
+
19
+ ```typescript
20
+ const config = Config.fromJSON({ host: "localhost" });
21
+ console.log(config.port); // "3000"
22
+ console.log(config.debug); // false
23
+ ```
24
+
25
+ ### Skipping Fields
26
+
27
+ <InteractiveMacro code={`/** @derive(Deserialize) */
28
+ class User {
29
+ name: string;
30
+ email: string;
31
+
32
+ /** @serde({ skip: true }) */
33
+ cachedData: unknown;
34
+
35
+ /** @serde({ skip_deserializing: true }) */
36
+ computedField: string;
37
+ }`} />
38
+
39
+ <Alert type="tip" title="skip vs skip_deserializing">
40
+ Use `skip: true` to exclude from both serialization and deserialization.
41
+ Use `skip_deserializing: true` to only skip during deserialization.
42
+ </Alert>
43
+
44
+ ### Deny Unknown Fields
45
+
46
+ <InteractiveMacro code={`/** @derive(Deserialize) */
47
+ /** @serde({ deny_unknown_fields: true }) */
48
+ class StrictUser {
49
+ name: string;
50
+ email: string;
51
+ }`} />
52
+
53
+ ```typescript
54
+ // This will throw an error
55
+ StrictUser.fromJSON({ name: "Alice", email: "a@b.com", extra: "field" });
56
+ // Error: StrictUser.fromJSON: unknown field "extra"
57
+ ```
58
+
59
+ ### Flatten Nested Objects
60
+
61
+ <InteractiveMacro code={`/** @derive(Deserialize) */
62
+ class Address {
63
+ city: string;
64
+ zip: string;
65
+ }
66
+
67
+ /** @derive(Deserialize) */
68
+ class User {
69
+ name: string;
70
+
71
+ /** @serde({ flatten: true }) */
72
+ address: Address;
73
+ }`} />
74
+
75
+ ```typescript
76
+ // Flat JSON structure
77
+ const user = User.fromJSON({
78
+ name: "Alice",
79
+ city: "NYC",
80
+ zip: "10001"
81
+ });
82
+ console.log(user.address.city); // "NYC"
83
+ ```
@@ -0,0 +1,26 @@
1
+ ## Type Alias Support
2
+
3
+ Deserialize works with type aliases. For object types, validation and type conversion is applied:
4
+
5
+ <MacroExample before={data.examples.typeAlias.before} after={data.examples.typeAlias.after} />
6
+
7
+ ```typescript
8
+ const json = {
9
+ id: "123",
10
+ name: "Alice",
11
+ createdAt: "2024-01-15T00:00:00.000Z"
12
+ };
13
+
14
+ const profile = UserProfile.fromJSON(json);
15
+ console.log(profile.createdAt instanceof Date); // true
16
+ ```
17
+
18
+ For union types, basic validation is applied:
19
+
20
+ <InteractiveMacro code={`/** @derive(Deserialize) */
21
+ type ApiStatus = "loading" | "success" | "error";`} />
22
+
23
+ ```typescript
24
+ const status = ApiStatus.fromJSON("success");
25
+ console.log(status); // "success"
26
+ ```
@@ -4,11 +4,11 @@
4
4
 
5
5
  ## Prerequisites
6
6
 
7
- - Rust toolchain (1.70 or later)
7
+ - Rust toolchain (1.88 or later)
8
8
 
9
- - Node.js 18 or later
9
+ - Node.js 24 or later
10
10
 
11
- - NAPI-RS CLI: `npm install -g @napi-rs/cli`
11
+ - NAPI-RS CLI: `cargo install macroforge_ts`
12
12
 
13
13
  ## Create the Project
14
14
 
@@ -30,7 +30,7 @@ Update your `Cargo.toml` with the required dependencies:
30
30
  [package]
31
31
  name = "my-macros"
32
32
  version = "0.1.0"
33
- edition = "2021"
33
+ edition = "2024"
34
34
 
35
35
  [lib]
36
36
  crate-type = ["cdylib"]
@@ -140,6 +140,6 @@ npm run build
140
140
 
141
141
  ## Next Steps
142
142
 
143
- - [Learn the #[ts_macro_derive] attribute]({base}/docs/custom-macros/ts-macro-derive)
143
+ - <a href="{base}/docs/custom-macros/ts-macro-derive" >Learn the #[ts_macro_derive] attribute</a >
144
144
 
145
- - [Master the template syntax]({base}/docs/custom-macros/ts-quote)
145
+ - <a href="{base}/docs/custom-macros/ts-quote" >Master the template syntax</a >
@@ -0,0 +1,53 @@
1
+ ## Accessing Field Data
2
+
3
+ ### Class Fields (FieldIR)
4
+
5
+ ```rust
6
+ struct FieldIR {
7
+ pub name: String, // Field name
8
+ pub span: SpanIR, // Field span
9
+ pub ts_type: String, // TypeScript type annotation
10
+ pub optional: bool, // Whether field has ?
11
+ pub readonly: bool, // Whether field is readonly
12
+ pub visibility: Visibility, // Public, Protected, Private
13
+ pub decorators: Vec<DecoratorIR>, // Field decorators
14
+ }
15
+ ```
16
+
17
+ ### Interface Fields (InterfaceFieldIR)
18
+
19
+ ```rust
20
+ struct InterfaceFieldIR {
21
+ pub name: String,
22
+ pub span: SpanIR,
23
+ pub ts_type: String,
24
+ pub optional: bool,
25
+ pub readonly: bool,
26
+ pub decorators: Vec<DecoratorIR>,
27
+ // Note: No visibility field (interfaces are always public)
28
+ }
29
+ ```
30
+
31
+ ### Enum Variants (EnumVariantIR)
32
+
33
+ ```rust
34
+ struct EnumVariantIR {
35
+ pub name: String,
36
+ pub span: SpanIR,
37
+ pub value: EnumValue, // Auto, String(String), or Number(f64)
38
+ pub decorators: Vec<DecoratorIR>,
39
+ }
40
+ ```
41
+
42
+ ### Decorator Structure
43
+
44
+ ```rust
45
+ struct DecoratorIR {
46
+ pub name: String, // e.g., "serde"
47
+ pub args_src: String, // Raw args text, e.g., "skip, rename: 'id'"
48
+ pub span: SpanIR,
49
+ }
50
+ ```
51
+
52
+ >
53
+ > To check for decorators, iterate through `field.decorators` and check `decorator.name`. For parsing options, you can write helper functions like the built-in macros do.
@@ -0,0 +1,21 @@
1
+ ## Adding Imports
2
+
3
+ If your macro generates code that requires imports, use the `add_import` method on `TsStream`:
4
+
5
+ ```rust
6
+ // Add an import to be inserted at the top of the file
7
+ let mut output = body! {
8
+ validate(): ValidationResult {
9
+ return validateFields(this);
10
+ }
11
+ };
12
+
13
+ // This will add: import { validateFields, ValidationResult } from "my-validation-lib";
14
+ output.add_import("validateFields", "my-validation-lib");
15
+ output.add_import("ValidationResult", "my-validation-lib");
16
+
17
+ Ok(output)
18
+ ```
19
+
20
+ >
21
+ > Imports are automatically deduplicated. If the same import already exists in the file, it won't be added again.