@macroforge/mcp-server 0.1.17 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +108 -0
- package/dist/tools/index.js.map +1 -1
- package/docs/builtin-macros/clone.md +18 -77
- package/docs/builtin-macros/debug.md +19 -118
- package/docs/builtin-macros/default.md +13 -98
- package/docs/builtin-macros/deserialize.md +38 -383
- package/docs/builtin-macros/hash.md +16 -98
- package/docs/builtin-macros/macros-overview.md +33 -9
- package/docs/builtin-macros/ord.md +16 -115
- package/docs/builtin-macros/partial-eq.md +26 -128
- package/docs/builtin-macros/partial-ord.md +19 -99
- package/docs/builtin-macros/serialize.md +28 -126
- package/docs/concepts/architecture.md +27 -58
- package/docs/concepts/derive-system.md +17 -45
- package/docs/concepts/how-macros-work.md +11 -50
- package/docs/custom-macros/custom-overview.md +4 -5
- package/docs/custom-macros/rust-setup.md +3 -4
- package/docs/custom-macros/ts-macro-derive.md +4 -5
- package/docs/custom-macros/ts-quote.md +2 -2
- package/docs/getting-started/first-macro.md +6 -72
- package/docs/getting-started/installation.md +2 -2
- package/docs/integration/integration-overview.md +21 -14
- package/docs/integration/mcp-server.md +84 -0
- package/docs/integration/svelte-preprocessor.md +152 -0
- package/docs/language-servers/svelte.md +80 -0
- package/docs/language-servers/zed.md +84 -0
- package/docs/roadmap/roadmap.md +131 -0
- package/docs/sections.json +29 -5
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAWnE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAWnE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAwKlD"}
|
package/dist/tools/index.js
CHANGED
|
@@ -121,6 +121,27 @@ Useful for:
|
|
|
121
121
|
required: ['code'],
|
|
122
122
|
},
|
|
123
123
|
},
|
|
124
|
+
{
|
|
125
|
+
name: 'get-macro-info',
|
|
126
|
+
description: `Get documentation for Macroforge macros and decorators.
|
|
127
|
+
|
|
128
|
+
Returns information about:
|
|
129
|
+
- Macro descriptions (e.g., Debug, Serialize, Clone)
|
|
130
|
+
- Decorator documentation (e.g., @serde, @debug field decorators)
|
|
131
|
+
- Available macro options and configuration
|
|
132
|
+
|
|
133
|
+
Use without parameters to get the full manifest of all available macros and decorators.
|
|
134
|
+
Use with a name parameter to get info for a specific macro or decorator.`,
|
|
135
|
+
inputSchema: {
|
|
136
|
+
type: 'object',
|
|
137
|
+
properties: {
|
|
138
|
+
name: {
|
|
139
|
+
type: 'string',
|
|
140
|
+
description: 'Optional: specific macro or decorator name to look up',
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
},
|
|
124
145
|
],
|
|
125
146
|
};
|
|
126
147
|
});
|
|
@@ -136,6 +157,8 @@ Useful for:
|
|
|
136
157
|
return handleAutofixer(args);
|
|
137
158
|
case 'expand-code':
|
|
138
159
|
return handleExpandCode(args);
|
|
160
|
+
case 'get-macro-info':
|
|
161
|
+
return handleGetMacroInfo(args);
|
|
139
162
|
default:
|
|
140
163
|
throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
|
|
141
164
|
}
|
|
@@ -322,6 +345,91 @@ async function handleExpandCode(args) {
|
|
|
322
345
|
};
|
|
323
346
|
}
|
|
324
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* Handle get-macro-info tool call
|
|
350
|
+
* Returns documentation for macros and decorators from the manifest
|
|
351
|
+
*/
|
|
352
|
+
async function handleGetMacroInfo(args) {
|
|
353
|
+
try {
|
|
354
|
+
const macroforge = await importMacroforge();
|
|
355
|
+
if (!macroforge || !macroforge.__macroforgeGetManifest) {
|
|
356
|
+
return {
|
|
357
|
+
content: [
|
|
358
|
+
{
|
|
359
|
+
type: 'text',
|
|
360
|
+
text: 'Native Macroforge bindings not available. Install @macroforge/core to access macro documentation.',
|
|
361
|
+
},
|
|
362
|
+
],
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
const manifest = macroforge.__macroforgeGetManifest();
|
|
366
|
+
if (args.name) {
|
|
367
|
+
// Look up specific macro or decorator
|
|
368
|
+
const nameLower = args.name.toLowerCase();
|
|
369
|
+
const macro = manifest.macros.find(m => m.name.toLowerCase() === nameLower);
|
|
370
|
+
const decorator = manifest.decorators.find(d => d.export.toLowerCase() === nameLower);
|
|
371
|
+
if (!macro && !decorator) {
|
|
372
|
+
return {
|
|
373
|
+
content: [
|
|
374
|
+
{
|
|
375
|
+
type: 'text',
|
|
376
|
+
text: `No macro or decorator found with name "${args.name}".
|
|
377
|
+
|
|
378
|
+
Available macros: ${manifest.macros.map(m => m.name).join(', ')}
|
|
379
|
+
Available decorators: ${manifest.decorators.map(d => d.export).join(', ')}`,
|
|
380
|
+
},
|
|
381
|
+
],
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
let result = '';
|
|
385
|
+
if (macro) {
|
|
386
|
+
result += `## Macro: @derive(${macro.name})\n\n`;
|
|
387
|
+
result += `**Description:** ${macro.description || 'No description available'}\n`;
|
|
388
|
+
result += `**Kind:** ${macro.kind}\n`;
|
|
389
|
+
result += `**Package:** ${macro.package}\n`;
|
|
390
|
+
}
|
|
391
|
+
if (decorator) {
|
|
392
|
+
if (result)
|
|
393
|
+
result += '\n---\n\n';
|
|
394
|
+
result += `## Decorator: @${decorator.export}\n\n`;
|
|
395
|
+
result += `**Documentation:** ${decorator.docs || 'No documentation available'}\n`;
|
|
396
|
+
result += `**Kind:** ${decorator.kind}\n`;
|
|
397
|
+
result += `**Module:** ${decorator.module}\n`;
|
|
398
|
+
}
|
|
399
|
+
return {
|
|
400
|
+
content: [{ type: 'text', text: result }],
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
// Return full manifest
|
|
404
|
+
let result = '# Macroforge Macro Manifest\n\n';
|
|
405
|
+
result += '## Available Macros\n\n';
|
|
406
|
+
for (const macro of manifest.macros) {
|
|
407
|
+
result += `### @derive(${macro.name})\n`;
|
|
408
|
+
result += `${macro.description || 'No description'}\n\n`;
|
|
409
|
+
}
|
|
410
|
+
if (manifest.decorators.length > 0) {
|
|
411
|
+
result += '## Available Field Decorators\n\n';
|
|
412
|
+
for (const decorator of manifest.decorators) {
|
|
413
|
+
result += `### @${decorator.export}\n`;
|
|
414
|
+
result += `${decorator.docs || 'No documentation'}\n\n`;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return {
|
|
418
|
+
content: [{ type: 'text', text: result }],
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
catch (error) {
|
|
422
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
423
|
+
return {
|
|
424
|
+
content: [
|
|
425
|
+
{
|
|
426
|
+
type: 'text',
|
|
427
|
+
text: `Error getting macro info: ${message}`,
|
|
428
|
+
},
|
|
429
|
+
],
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
}
|
|
325
433
|
// ============================================================================
|
|
326
434
|
// Helper functions
|
|
327
435
|
// ============================================================================
|
package/dist/tools/index.js.map
CHANGED
|
@@ -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;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;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;AAyDD,+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;;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"}
|
|
@@ -4,18 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
## Basic Usage
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
/** @derive(Clone) */
|
|
9
|
-
class Point {
|
|
10
|
-
x: number;
|
|
11
|
-
y: number;
|
|
12
|
-
|
|
13
|
-
constructor(x: number, y: number) {
|
|
14
|
-
this.x = x;
|
|
15
|
-
this.y = y;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
7
|
+
<MacroExample before={data.examples.basic.before} after={data.examples.basic.after} />
|
|
18
8
|
|
|
9
|
+
```typescript
|
|
19
10
|
const original = new Point(10, 20);
|
|
20
11
|
const copy = original.clone();
|
|
21
12
|
|
|
@@ -23,14 +14,6 @@ console.log(copy.x, copy.y); // 10, 20
|
|
|
23
14
|
console.log(original === copy); // false (different instances)
|
|
24
15
|
```
|
|
25
16
|
|
|
26
|
-
## Generated Code
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
clone(): Point {
|
|
30
|
-
return new Point(this.x, this.y);
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
17
|
## How It Works
|
|
35
18
|
|
|
36
19
|
The Clone macro:
|
|
@@ -45,18 +28,9 @@ This creates a **shallow clone** - primitive values are copied, but object refer
|
|
|
45
28
|
|
|
46
29
|
## With Nested Objects
|
|
47
30
|
|
|
48
|
-
|
|
49
|
-
/** @derive(Clone) */
|
|
50
|
-
class User {
|
|
51
|
-
name: string;
|
|
52
|
-
address: { city: string; zip: string };
|
|
53
|
-
|
|
54
|
-
constructor(name: string, address: { city: string; zip: string }) {
|
|
55
|
-
this.name = name;
|
|
56
|
-
this.address = address;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
31
|
+
<MacroExample before={data.examples.nested.before} after={data.examples.nested.after} />
|
|
59
32
|
|
|
33
|
+
```typescript
|
|
60
34
|
const original = new User("Alice", { city: "NYC", zip: "10001" });
|
|
61
35
|
const copy = original.clone();
|
|
62
36
|
|
|
@@ -70,12 +44,11 @@ console.log(original.address.city); // "LA"
|
|
|
70
44
|
|
|
71
45
|
For deep cloning of nested objects, you would need to implement custom clone methods or use a deep clone utility.
|
|
72
46
|
|
|
73
|
-
## Combining with
|
|
47
|
+
## Combining with PartialEq
|
|
74
48
|
|
|
75
|
-
Clone works well with
|
|
49
|
+
Clone works well with PartialEq for creating independent copies that compare as equal:
|
|
76
50
|
|
|
77
|
-
|
|
78
|
-
/** @derive(Clone, Eq) */
|
|
51
|
+
<InteractiveMacro code={`/** @derive(Clone, PartialEq) */
|
|
79
52
|
class Point {
|
|
80
53
|
x: number;
|
|
81
54
|
y: number;
|
|
@@ -84,8 +57,9 @@ class Point {
|
|
|
84
57
|
this.x = x;
|
|
85
58
|
this.y = y;
|
|
86
59
|
}
|
|
87
|
-
}
|
|
60
|
+
}`} />
|
|
88
61
|
|
|
62
|
+
```typescript
|
|
89
63
|
const original = new Point(10, 20);
|
|
90
64
|
const copy = original.clone();
|
|
91
65
|
|
|
@@ -97,20 +71,9 @@ console.log(original.equals(copy)); // true (same values)
|
|
|
97
71
|
|
|
98
72
|
Clone also works with interfaces. For interfaces, a namespace is generated with a `clone` function:
|
|
99
73
|
|
|
100
|
-
|
|
101
|
-
/** @derive(Clone) */
|
|
102
|
-
interface Point {
|
|
103
|
-
x: number;
|
|
104
|
-
y: number;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Generated:
|
|
108
|
-
// export namespace Point {
|
|
109
|
-
// export function clone(self: Point): Point {
|
|
110
|
-
// return { x: self.x, y: self.y };
|
|
111
|
-
// }
|
|
112
|
-
// }
|
|
74
|
+
<MacroExample before={data.examples.interface.before} after={data.examples.interface.after} />
|
|
113
75
|
|
|
76
|
+
```typescript
|
|
114
77
|
const original: Point = { x: 10, y: 20 };
|
|
115
78
|
const copy = Point.clone(original);
|
|
116
79
|
|
|
@@ -122,20 +85,9 @@ console.log(original === copy); // false (different objects)
|
|
|
122
85
|
|
|
123
86
|
Clone also works with enums. For enums, the clone function simply returns the value as-is, since enum values are primitives and don't need cloning:
|
|
124
87
|
|
|
125
|
-
|
|
126
|
-
/** @derive(Clone) */
|
|
127
|
-
enum Status {
|
|
128
|
-
Active = "active",
|
|
129
|
-
Inactive = "inactive",
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// Generated:
|
|
133
|
-
// export namespace Status {
|
|
134
|
-
// export function clone(value: Status): Status {
|
|
135
|
-
// return value;
|
|
136
|
-
// }
|
|
137
|
-
// }
|
|
88
|
+
<MacroExample before={data.examples.enum.before} after={data.examples.enum.after} />
|
|
138
89
|
|
|
90
|
+
```typescript
|
|
139
91
|
const original = Status.Active;
|
|
140
92
|
const copy = Status.clone(original);
|
|
141
93
|
|
|
@@ -147,20 +99,9 @@ console.log(original === copy); // true (same primitive value)
|
|
|
147
99
|
|
|
148
100
|
Clone works with type aliases. For object types, a shallow copy is created using spread:
|
|
149
101
|
|
|
150
|
-
|
|
151
|
-
/** @derive(Clone) */
|
|
152
|
-
type Point = {
|
|
153
|
-
x: number;
|
|
154
|
-
y: number;
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
// Generated:
|
|
158
|
-
// export namespace Point {
|
|
159
|
-
// export function clone(value: Point): Point {
|
|
160
|
-
// return { ...value };
|
|
161
|
-
// }
|
|
162
|
-
// }
|
|
102
|
+
<MacroExample before={data.examples.typeAlias.before} after={data.examples.typeAlias.after} />
|
|
163
103
|
|
|
104
|
+
```typescript
|
|
164
105
|
const original: Point = { x: 10, y: 20 };
|
|
165
106
|
const copy = Point.clone(original);
|
|
166
107
|
|
|
@@ -170,10 +111,10 @@ console.log(original === copy); // false (different objects)
|
|
|
170
111
|
|
|
171
112
|
For union types, the value is returned as-is (unions of primitives don't need cloning):
|
|
172
113
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
type ApiStatus = "loading" | "success" | "error";
|
|
114
|
+
<InteractiveMacro code={`/** @derive(Clone) */
|
|
115
|
+
type ApiStatus = "loading" | "success" | "error";`} />
|
|
176
116
|
|
|
117
|
+
```typescript
|
|
177
118
|
const status: ApiStatus = "success";
|
|
178
119
|
const copy = ApiStatus.clone(status);
|
|
179
120
|
console.log(copy); // "success"
|
|
@@ -4,54 +4,23 @@
|
|
|
4
4
|
|
|
5
5
|
## Basic Usage
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
/** @derive(Debug) */
|
|
9
|
-
class User {
|
|
10
|
-
name: string;
|
|
11
|
-
age: number;
|
|
12
|
-
|
|
13
|
-
constructor(name: string, age: number) {
|
|
14
|
-
this.name = name;
|
|
15
|
-
this.age = age;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
7
|
+
<MacroExample before={data.examples.basic.before} after={data.examples.basic.after} />
|
|
18
8
|
|
|
9
|
+
```typescript
|
|
19
10
|
const user = new User("Alice", 30);
|
|
20
11
|
console.log(user.toString());
|
|
21
12
|
// Output: User { name: Alice, age: 30 }
|
|
22
13
|
```
|
|
23
14
|
|
|
24
|
-
## Generated Code
|
|
25
|
-
|
|
26
|
-
```typescript
|
|
27
|
-
toString(): string {
|
|
28
|
-
const parts: string[] = [];
|
|
29
|
-
parts.push("name: " + this.name);
|
|
30
|
-
parts.push("age: " + this.age);
|
|
31
|
-
return "User { " + parts.join(", ") + " }";
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
15
|
## Field Options
|
|
36
16
|
|
|
37
17
|
Use the `@debug` field decorator to customize behavior:
|
|
38
18
|
|
|
39
19
|
### Renaming Fields
|
|
40
20
|
|
|
41
|
-
|
|
42
|
-
/** @derive(Debug) */
|
|
43
|
-
class User {
|
|
44
|
-
/** @debug({ rename: "userId" }) */
|
|
45
|
-
id: number;
|
|
46
|
-
|
|
47
|
-
name: string;
|
|
48
|
-
|
|
49
|
-
constructor(id: number, name: string) {
|
|
50
|
-
this.id = id;
|
|
51
|
-
this.name = name;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
21
|
+
<MacroExample before={data.examples.rename.before} after={data.examples.rename.after} />
|
|
54
22
|
|
|
23
|
+
```typescript
|
|
55
24
|
const user = new User(42, "Alice");
|
|
56
25
|
console.log(user.toString());
|
|
57
26
|
// Output: User { userId: 42, name: Alice }
|
|
@@ -61,26 +30,9 @@ console.log(user.toString());
|
|
|
61
30
|
|
|
62
31
|
Use `skip: true` to exclude sensitive fields from the output:
|
|
63
32
|
|
|
64
|
-
|
|
65
|
-
/** @derive(Debug) */
|
|
66
|
-
class User {
|
|
67
|
-
name: string;
|
|
68
|
-
email: string;
|
|
69
|
-
|
|
70
|
-
/** @debug({ skip: true }) */
|
|
71
|
-
password: string;
|
|
72
|
-
|
|
73
|
-
/** @debug({ skip: true }) */
|
|
74
|
-
authToken: string;
|
|
75
|
-
|
|
76
|
-
constructor(name: string, email: string, password: string, authToken: string) {
|
|
77
|
-
this.name = name;
|
|
78
|
-
this.email = email;
|
|
79
|
-
this.password = password;
|
|
80
|
-
this.authToken = authToken;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
33
|
+
<MacroExample before={data.examples.skip.before} after={data.examples.skip.after} />
|
|
83
34
|
|
|
35
|
+
```typescript
|
|
84
36
|
const user = new User("Alice", "alice@example.com", "secret", "tok_xxx");
|
|
85
37
|
console.log(user.toString());
|
|
86
38
|
// Output: User { name: Alice, email: alice@example.com }
|
|
@@ -93,8 +45,7 @@ Always skip sensitive fields like passwords, tokens, and API keys to prevent acc
|
|
|
93
45
|
|
|
94
46
|
## Combining Options
|
|
95
47
|
|
|
96
|
-
|
|
97
|
-
/** @derive(Debug) */
|
|
48
|
+
<InteractiveMacro code={`/** @derive(Debug) */
|
|
98
49
|
class ApiResponse {
|
|
99
50
|
/** @debug({ rename: "statusCode" }) */
|
|
100
51
|
status: number;
|
|
@@ -103,8 +54,7 @@ class ApiResponse {
|
|
|
103
54
|
|
|
104
55
|
/** @debug({ skip: true }) */
|
|
105
56
|
internalMetadata: Record<string, unknown>;
|
|
106
|
-
}
|
|
107
|
-
```
|
|
57
|
+
}`} />
|
|
108
58
|
|
|
109
59
|
## All Options
|
|
110
60
|
|
|
@@ -120,23 +70,9 @@ class ApiResponse {
|
|
|
120
70
|
|
|
121
71
|
Debug also works with interfaces. For interfaces, a namespace is generated with a `toString` function:
|
|
122
72
|
|
|
123
|
-
|
|
124
|
-
/** @derive(Debug) */
|
|
125
|
-
interface Status {
|
|
126
|
-
active: boolean;
|
|
127
|
-
message: string;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// Generated:
|
|
131
|
-
// export namespace Status {
|
|
132
|
-
// export function toString(self: Status): string {
|
|
133
|
-
// const parts: string[] = [];
|
|
134
|
-
// parts.push("active: " + self.active);
|
|
135
|
-
// parts.push("message: " + self.message);
|
|
136
|
-
// return "Status { " + parts.join(", ") + " }";
|
|
137
|
-
// }
|
|
138
|
-
// }
|
|
73
|
+
<MacroExample before={data.examples.interface.before} after={data.examples.interface.after} />
|
|
139
74
|
|
|
75
|
+
```typescript
|
|
140
76
|
const status: Status = { active: true, message: "OK" };
|
|
141
77
|
console.log(Status.toString(status));
|
|
142
78
|
// Output: Status { active: true, message: OK }
|
|
@@ -146,25 +82,9 @@ console.log(Status.toString(status));
|
|
|
146
82
|
|
|
147
83
|
Debug also works with enums. For enums, a namespace is generated with a `toString` function that displays the enum name and variant:
|
|
148
84
|
|
|
149
|
-
|
|
150
|
-
/** @derive(Debug) */
|
|
151
|
-
enum Priority {
|
|
152
|
-
Low = 1,
|
|
153
|
-
Medium = 2,
|
|
154
|
-
High = 3,
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Generated:
|
|
158
|
-
// export namespace Priority {
|
|
159
|
-
// export function toString(value: Priority): string {
|
|
160
|
-
// const key = Priority[value as unknown as keyof typeof Priority];
|
|
161
|
-
// if (key !== undefined) {
|
|
162
|
-
// return "Priority." + key;
|
|
163
|
-
// }
|
|
164
|
-
// return "Priority(" + String(value) + ")";
|
|
165
|
-
// }
|
|
166
|
-
// }
|
|
85
|
+
<MacroExample before={data.examples.enum.before} after={data.examples.enum.after} />
|
|
167
86
|
|
|
87
|
+
```typescript
|
|
168
88
|
console.log(Priority.toString(Priority.High));
|
|
169
89
|
// Output: Priority.High
|
|
170
90
|
|
|
@@ -174,38 +94,19 @@ console.log(Priority.toString(Priority.Low));
|
|
|
174
94
|
|
|
175
95
|
Works with both numeric and string enums:
|
|
176
96
|
|
|
177
|
-
|
|
178
|
-
/** @derive(Debug) */
|
|
97
|
+
<InteractiveMacro code={`/** @derive(Debug) */
|
|
179
98
|
enum Status {
|
|
180
99
|
Active = "active",
|
|
181
100
|
Inactive = "inactive",
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
console.log(Status.toString(Status.Active));
|
|
185
|
-
// Output: Status.Active
|
|
186
|
-
```
|
|
101
|
+
}`} />
|
|
187
102
|
|
|
188
103
|
## Type Alias Support
|
|
189
104
|
|
|
190
105
|
Debug works with type aliases. For object types, fields are displayed similar to interfaces:
|
|
191
106
|
|
|
192
|
-
|
|
193
|
-
/** @derive(Debug) */
|
|
194
|
-
type Point = {
|
|
195
|
-
x: number;
|
|
196
|
-
y: number;
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
// Generated:
|
|
200
|
-
// export namespace Point {
|
|
201
|
-
// export function toString(value: Point): string {
|
|
202
|
-
// const parts: string[] = [];
|
|
203
|
-
// parts.push("x: " + value.x);
|
|
204
|
-
// parts.push("y: " + value.y);
|
|
205
|
-
// return "Point { " + parts.join(", ") + " }";
|
|
206
|
-
// }
|
|
207
|
-
// }
|
|
107
|
+
<MacroExample before={data.examples.typeAlias.before} after={data.examples.typeAlias.after} />
|
|
208
108
|
|
|
109
|
+
```typescript
|
|
209
110
|
const point: Point = { x: 10, y: 20 };
|
|
210
111
|
console.log(Point.toString(point));
|
|
211
112
|
// Output: Point { x: 10, y: 20 }
|
|
@@ -213,10 +114,10 @@ console.log(Point.toString(point));
|
|
|
213
114
|
|
|
214
115
|
For union types, the value is displayed using JSON.stringify:
|
|
215
116
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
type ApiStatus = "loading" | "success" | "error";
|
|
117
|
+
<InteractiveMacro code={`/** @derive(Debug) */
|
|
118
|
+
type ApiStatus = "loading" | "success" | "error";`} />
|
|
219
119
|
|
|
120
|
+
```typescript
|
|
220
121
|
console.log(ApiStatus.toString("success"));
|
|
221
122
|
// Output: ApiStatus("success")
|
|
222
123
|
```
|