atlas-pipeline-mcp 1.0.23 → 1.0.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.
- package/README.md +117 -4
- package/dist/common/error-handling.d.ts +86 -0
- package/dist/common/error-handling.d.ts.map +1 -0
- package/dist/common/error-handling.js +226 -0
- package/dist/common/error-handling.js.map +1 -0
- package/dist/mcp.js +232 -0
- package/dist/mcp.js.map +1 -1
- package/dist/tools/animation-studio.d.ts +83 -0
- package/dist/tools/animation-studio.d.ts.map +1 -0
- package/dist/tools/animation-studio.js +1064 -0
- package/dist/tools/animation-studio.js.map +1 -0
- package/dist/tools/api-design-consultant.d.ts +92 -0
- package/dist/tools/api-design-consultant.d.ts.map +1 -0
- package/dist/tools/api-design-consultant.js +374 -0
- package/dist/tools/api-design-consultant.js.map +1 -0
- package/dist/tools/api-integration-helper.d.ts +141 -0
- package/dist/tools/api-integration-helper.d.ts.map +1 -0
- package/dist/tools/api-integration-helper.js +907 -0
- package/dist/tools/api-integration-helper.js.map +1 -0
- package/dist/tools/css-architecture-wizard.d.ts +86 -0
- package/dist/tools/css-architecture-wizard.d.ts.map +1 -0
- package/dist/tools/css-architecture-wizard.js +790 -0
- package/dist/tools/css-architecture-wizard.js.map +1 -0
- package/dist/tools/debug/error-classifier.d.ts +14 -0
- package/dist/tools/debug/error-classifier.d.ts.map +1 -0
- package/dist/tools/debug/error-classifier.js +40 -0
- package/dist/tools/debug/error-classifier.js.map +1 -0
- package/dist/tools/debug/language-detector.d.ts +16 -0
- package/dist/tools/debug/language-detector.d.ts.map +1 -0
- package/dist/tools/debug/language-detector.js +67 -0
- package/dist/tools/debug/language-detector.js.map +1 -0
- package/dist/tools/debug/stack-parser.d.ts +25 -0
- package/dist/tools/debug/stack-parser.d.ts.map +1 -0
- package/dist/tools/debug/stack-parser.js +122 -0
- package/dist/tools/debug/stack-parser.js.map +1 -0
- package/dist/tools/dependencies.d.ts.map +1 -1
- package/dist/tools/dependencies.js +50 -25
- package/dist/tools/dependencies.js.map +1 -1
- package/dist/tools/frontend-performance-doctor.d.ts +108 -0
- package/dist/tools/frontend-performance-doctor.d.ts.map +1 -0
- package/dist/tools/frontend-performance-doctor.js +731 -0
- package/dist/tools/frontend-performance-doctor.js.map +1 -0
- package/dist/tools/performance-optimizer.d.ts +97 -0
- package/dist/tools/performance-optimizer.d.ts.map +1 -0
- package/dist/tools/performance-optimizer.js +295 -0
- package/dist/tools/performance-optimizer.js.map +1 -0
- package/dist/tools/security-scanner.d.ts +74 -0
- package/dist/tools/security-scanner.d.ts.map +1 -0
- package/dist/tools/security-scanner.js +290 -0
- package/dist/tools/security-scanner.js.map +1 -0
- package/dist/tools/senior-mentor.d.ts +81 -0
- package/dist/tools/senior-mentor.d.ts.map +1 -0
- package/dist/tools/senior-mentor.js +308 -0
- package/dist/tools/senior-mentor.js.map +1 -0
- package/dist/tools/state-management-architect.d.ts +77 -0
- package/dist/tools/state-management-architect.d.ts.map +1 -0
- package/dist/tools/state-management-architect.js +323 -0
- package/dist/tools/state-management-architect.js.map +1 -0
- package/dist/tools/test-utils.d.ts.map +1 -1
- package/dist/tools/test-utils.js +109 -56
- package/dist/tools/test-utils.js.map +1 -1
- package/dist/tools/ui-ux-designer.d.ts +91 -0
- package/dist/tools/ui-ux-designer.d.ts.map +1 -0
- package/dist/tools/ui-ux-designer.js +907 -0
- package/dist/tools/ui-ux-designer.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animation-studio.js","sourceRoot":"","sources":["../../src/tools/animation-studio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA2CrC,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAC9G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC1G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IAC7E,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACpF,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1D,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG;IACvB,MAAM,EAAE,8BAA8B;IACtC,MAAM,EAAE,wCAAwC;IAChD,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,8BAA8B;IACrC,OAAO,EAAE,kCAAkC;IAC3C,OAAO,EAAE,qCAAqC;CAC/C,CAAC;AAEF,oCAAoC;AACpC,MAAM,wBAAwB,GAAoB;IAChD,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,wBAAwB;IACrC,OAAO,EAAE,2BAA2B;IACpC,GAAG,EAAE;;;;;;;EAOL;IACA,YAAY,EAAE;;;;GAIb;IACD,IAAI,EAAE;;;;IAIJ;CACH,CAAC;AAEF,MAAM,mBAAmB,GAAoC;IAC3D,MAAM,EAAE;QACN,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,2BAA2B;QACpC,GAAG,EAAE;;;;;;;EAOP;QACE,YAAY,EAAE;;;;;;uDAMqC;QACnD,IAAI,EAAE;;;;IAIN;KACD;IACD,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,mCAAmC;QAC5C,GAAG,EAAE;;;;;;;;;;;;;EAaP;QACE,YAAY,EAAE;;;;GAIf;QACC,IAAI,EAAE;;;;;IAKN;KACD;IACD,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,4BAA4B;QACrC,GAAG,EAAE;;;;;;;;;;;;;EAaP;QACE,YAAY,EAAE;;;;GAIf;QACC,IAAI,EAAE;;;;;IAKN;KACD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,6BAA6B;QACtC,GAAG,EAAE;;;;;;;;;;;;;;;;;;;EAmBP;QACE,YAAY,EAAE;;;;;;;;GAQf;QACC,IAAI,EAAE;;;;;IAKN;KACD;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAoC;IACxD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,uCAAuC;QAChD,GAAG,EAAE;;;;;;;EAOP;QACE,YAAY,EAAE;;;;;;GAMf;QACC,IAAI,EAAE;;;;;;;;;;;;;IAaN;KACD;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,2BAA2B;QACpC,GAAG,EAAE;;;;;;;EAOP;QACE,YAAY,EAAE;;;;;;;;GAQf;KACA;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,gBAAgB;QACzB,GAAG,EAAE;;;;;;EAMP;QACE,YAAY,EAAE;;;;GAIf;QACC,IAAI,EAAE;;;;;IAKN;KACD;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAoC;IAC1D,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,mBAAmB;QAC5B,GAAG,EAAE;;;;;;;;;;;EAWP;QACE,YAAY,EAAE;;;;;;;;;;;;GAYf;KACA;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,qBAAqB;QAC9B,GAAG,EAAE;;;;;;;EAOP;QACE,YAAY,EAAE;;;;;;;;;GASf;KACA;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,yBAAyB;QAClC,GAAG,EAAE;;;;;;;;;;;;;;;EAeP;QACE,YAAY,EAAE;;;;;;;;;;;;GAYf;KACA;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,yBAAyB;QAClC,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;oDAoB2C;QAChD,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;GAqBf;KACA;CACF,CAAC;AAEF,MAAM,iBAAiB,GAAoC;IACzD,cAAc,EAAE;QACd,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,+BAA+B;QACxC,GAAG,EAAE;;;;;;;;;;;kDAWyC;QAC9C,YAAY,EAAE;;;;;;;;;;;;;;;;;GAiBf;QACC,IAAI,EAAE;;;;;;;;;;;;;;;IAeN;KACD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,yBAAyB;QAClC,GAAG,EAAE;;;;;;;;;;;;;;;;;;;EAmBP;QACE,YAAY,EAAE;;;;;;;;;;;GAWf;QACC,IAAI,EAAE;;;;;;;;;;;;;;IAcN;KACD;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAoC;IAC1D,WAAW,EAAE;QACX,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,qBAAqB;QAC9B,GAAG,EAAE;;;;;;EAMP;QACE,YAAY,EAAE;;;;GAIf;KACA;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,oBAAoB;QAC7B,GAAG,EAAE;;;;;;;;;;;;EAYP;QACE,YAAY,EAAE;;;;;;;;;;;;GAYf;KACA;IACD,MAAM,EAAE;QACN,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,gCAAgC;QACzC,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BP;QACE,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0Bf;KACA;IACD,MAAM,EAAE;QACN,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,mCAAmC;QAC5C,GAAG,EAAE;;;;;;;;;;;;;;;;;;;EAmBP;QACE,YAAY,EAAE;;;;;;;;;;;;;;;;;;;GAmBf;KACA;CACF,CAAC;AAEF,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAyB;IAC/D,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,cAAc,SAAS,CAAC,IAAI,kBAAkB,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAE/E,0CAA0C;IAC1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAExD,0CAA0C;IAC1C,MAAM,IAAI,GAAG,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE3D,wBAAwB;IACxB,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEjE,mBAAmB;IACnB,MAAM,eAAe,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAE3D,gBAAgB;IAChB,MAAM,iBAAiB,GAAG,SAAS,CAAC,oBAAoB;QACtD,CAAC,CAAC,yBAAyB,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,gDAAgD,CAAC;IAErD,OAAO;QACL,IAAI,EAAE,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,YAAY;QACxD,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,kBAAkB,SAAS,CAAC,OAAO,EAAE;QACtF,IAAI;QACJ,YAAY;QACZ,YAAY;QACZ,eAAe;QACf,iBAAiB;QACjB,cAAc,EAAE,qEAAqE;QACrF,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,mBAAmB,CAAC;QAC7B,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,kBAAkB,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC;QAC3B,KAAK,mBAAmB,CAAC;QACzB,KAAK,SAAS;YACZ,OAAO,kBAAkB,CAAC;QAC5B;YACE,OAAO,mBAAmB,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAwC,EACxC,OAAyB;IAEzB,wDAAwD;IACxD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,QAAQ,GAAoB,wBAAwB,CAAC;IACzD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9D,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;QAC9C,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC;QAC1C,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC;QAC5C,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAyB,EAAE,MAAuB;IAC7E,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;IAEzC,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,eAAe;YAClB,OAAO,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrE,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7D,KAAK,cAAc;YACjB,OAAO,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5D,KAAK,UAAU;YACb,OAAO,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChE;YACE,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAAyB,EACzB,MAAuB,EACvB,MAAc,EACd,QAAgB;IAEhB,MAAM,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;IAEpC,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO;;QAEH,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;gBAKrB,WAAW;;;;;uBAKJ,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;gBAKpC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;GAI1C,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO;;wBAEa,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;;GASlD,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;;sBAEW,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;GAkBhD,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAyB,EACzB,MAAuB,EACvB,MAAc,EACd,QAAgB;IAEhB,MAAM,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;IAEpC,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO;;;uBAGY,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;oBAQhC,WAAW;;;;;;;;;GAS5B,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;;;;;;6BAMkB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;oBAQtC,WAAW;;;;;;;;;;;;;;GAc5B,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC;AACnC,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAyB,EACzB,MAAuB,EACvB,QAAgB;IAEhB,OAAO;;uBAEc,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;;;;;GAYjD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAyB,EACzB,MAAuB,EACvB,MAAc,EACd,QAAgB;IAEhB,OAAO;;;uBAGc,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;;;;kBAQlC,QAAQ;;;;;;GAMvB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,OAAyB,EACzB,MAAuB,EACvB,MAAc,EACd,QAAgB;IAEhB,OAAO,MAAM,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI;;aAEjC,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;;;;;;;;;;;GAWtD,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI;eACnB,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,MAAM,MAAM;;;;;KAK9E,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI;;;;;EAKlC,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAyB,EAAE,MAAuB;IAC9E,OAAO,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAyB,EAAE,IAAY;IACnE,IAAI,OAAO,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;QACxC,OAAO;mBACQ,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;;;;eAKjC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;wBACpB,OAAO,CAAC,OAAO;;;gBAGvB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;;EAE3C,CAAC;IACD,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC9B,OAAO;cACG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI;;;;;;2BAMlB,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI;UAChD,CAAC;IACT,CAAC;IAED,OAAO,2CAA2C,CAAC;AACrD,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAyB,EACzB,MAAuB;IAEvB,MAAM,YAAY,GAAoC,EAAE,CAAC;IAEzD,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QAC5C,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,eAAe,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC/D,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9C,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAyB;IACxD,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACnE,IAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IAErE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAE1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAyB;IAC1D,IAAI,OAAO,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;QACxC,OAAO;;;;6EAIkE,CAAC;IAC5E,CAAC;IAED,OAAO;KACJ,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI;;;;EAIlC,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG;SACP,KAAK,CAAC,SAAS,CAAC;SAChB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,MAAM,GAAG,GAAG;QACV,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;QACrC,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAClC,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACpC,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACnC,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;KACrC,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Server - API Design Consultant
|
|
3
|
+
*
|
|
4
|
+
* Advanced API design analysis and optimization
|
|
5
|
+
* - RESTful design review
|
|
6
|
+
* - GraphQL vs REST analysis
|
|
7
|
+
* - Error handling patterns
|
|
8
|
+
* - Versioning strategies
|
|
9
|
+
* - Rate limiting and throttling
|
|
10
|
+
* - API documentation generation
|
|
11
|
+
* - Pagination and filtering strategies
|
|
12
|
+
*
|
|
13
|
+
* @module api-design-consultant
|
|
14
|
+
* @author Nishant Unavane
|
|
15
|
+
* @version 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
export interface ApiDesignRequest {
|
|
18
|
+
apiType?: 'rest' | 'graphql' | 'grpc' | 'webhook';
|
|
19
|
+
endpoints?: ApiEndpoint[];
|
|
20
|
+
schema?: string;
|
|
21
|
+
errorHandling?: string;
|
|
22
|
+
authentication?: string;
|
|
23
|
+
documentation?: string;
|
|
24
|
+
currentIssues?: string[];
|
|
25
|
+
scalability?: 'low' | 'medium' | 'high' | 'enterprise';
|
|
26
|
+
clientTypes?: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface ApiEndpoint {
|
|
29
|
+
method: string;
|
|
30
|
+
path: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
requestBody?: string;
|
|
33
|
+
responseBody?: string;
|
|
34
|
+
statusCodes?: Record<number, string>;
|
|
35
|
+
rateLimit?: string;
|
|
36
|
+
authentication?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ApiDesignAnalysis {
|
|
39
|
+
currentDesign: string;
|
|
40
|
+
issues: DesignIssue[];
|
|
41
|
+
recommendations: DesignRecommendation[];
|
|
42
|
+
patterns: RecommendedPattern[];
|
|
43
|
+
errorHandling: ErrorHandlingGuide;
|
|
44
|
+
documentationTemplate: string;
|
|
45
|
+
bestPractices: BestPractice[];
|
|
46
|
+
}
|
|
47
|
+
export interface DesignIssue {
|
|
48
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
49
|
+
category: string;
|
|
50
|
+
issue: string;
|
|
51
|
+
impact: string;
|
|
52
|
+
affectedEndpoints: string[];
|
|
53
|
+
}
|
|
54
|
+
export interface DesignRecommendation {
|
|
55
|
+
area: string;
|
|
56
|
+
currentPractice: string;
|
|
57
|
+
recommendation: string;
|
|
58
|
+
implementation: string;
|
|
59
|
+
benefit: string;
|
|
60
|
+
effort: string;
|
|
61
|
+
}
|
|
62
|
+
export interface RecommendedPattern {
|
|
63
|
+
pattern: string;
|
|
64
|
+
description: string;
|
|
65
|
+
implementation: string;
|
|
66
|
+
example: string;
|
|
67
|
+
suitability: number;
|
|
68
|
+
}
|
|
69
|
+
export interface ErrorHandlingGuide {
|
|
70
|
+
standardErrorFormat: string;
|
|
71
|
+
statusCodeMapping: Record<number, string>;
|
|
72
|
+
errorResponses: ErrorResponse[];
|
|
73
|
+
retryStrategy: string;
|
|
74
|
+
}
|
|
75
|
+
export interface ErrorResponse {
|
|
76
|
+
status: number;
|
|
77
|
+
type: string;
|
|
78
|
+
meaning: string;
|
|
79
|
+
clientAction: string;
|
|
80
|
+
}
|
|
81
|
+
export interface BestPractice {
|
|
82
|
+
title: string;
|
|
83
|
+
description: string;
|
|
84
|
+
reasoning: string;
|
|
85
|
+
example: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Analyze and design API
|
|
89
|
+
*/
|
|
90
|
+
export declare function designApi(request: ApiDesignRequest): Promise<ApiDesignAnalysis>;
|
|
91
|
+
export default designApi;
|
|
92
|
+
//# sourceMappingURL=api-design-consultant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-design-consultant.d.ts","sourceRoot":"","sources":["../../src/tools/api-design-consultant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAClD,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC;IACvD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,aAAa,EAAE,kBAAkB,CAAC;IAClC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AA+BD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CA4B5B;AAsUD,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Server - API Design Consultant
|
|
3
|
+
*
|
|
4
|
+
* Advanced API design analysis and optimization
|
|
5
|
+
* - RESTful design review
|
|
6
|
+
* - GraphQL vs REST analysis
|
|
7
|
+
* - Error handling patterns
|
|
8
|
+
* - Versioning strategies
|
|
9
|
+
* - Rate limiting and throttling
|
|
10
|
+
* - API documentation generation
|
|
11
|
+
* - Pagination and filtering strategies
|
|
12
|
+
*
|
|
13
|
+
* @module api-design-consultant
|
|
14
|
+
* @author Nishant Unavane
|
|
15
|
+
* @version 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
import { logger, createTimer } from '../utils.js';
|
|
18
|
+
import { z } from 'zod';
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Validation Schema
|
|
21
|
+
// ============================================================================
|
|
22
|
+
const ApiDesignRequestSchema = z.object({
|
|
23
|
+
apiType: z.enum(['rest', 'graphql', 'grpc', 'webhook']).optional(),
|
|
24
|
+
endpoints: z.array(z.object({
|
|
25
|
+
method: z.string(),
|
|
26
|
+
path: z.string(),
|
|
27
|
+
description: z.string().optional(),
|
|
28
|
+
requestBody: z.string().optional(),
|
|
29
|
+
responseBody: z.string().optional(),
|
|
30
|
+
statusCodes: z.record(z.number(), z.string()).optional(),
|
|
31
|
+
rateLimit: z.string().optional(),
|
|
32
|
+
authentication: z.string().optional(),
|
|
33
|
+
})).optional(),
|
|
34
|
+
schema: z.string().optional(),
|
|
35
|
+
errorHandling: z.string().optional(),
|
|
36
|
+
authentication: z.string().optional(),
|
|
37
|
+
documentation: z.string().optional(),
|
|
38
|
+
currentIssues: z.array(z.string()).optional(),
|
|
39
|
+
scalability: z.enum(['low', 'medium', 'high', 'enterprise']).optional(),
|
|
40
|
+
clientTypes: z.array(z.string()).optional(),
|
|
41
|
+
});
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Analysis
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* Analyze and design API
|
|
47
|
+
*/
|
|
48
|
+
export async function designApi(request) {
|
|
49
|
+
const timer = createTimer();
|
|
50
|
+
ApiDesignRequestSchema.parse(request);
|
|
51
|
+
logger.info({ apiType: request.apiType, endpointCount: request.endpoints?.length }, 'Starting API design analysis');
|
|
52
|
+
const issues = identifyDesignIssues(request);
|
|
53
|
+
const recommendations = generateDesignRecommendations(request);
|
|
54
|
+
const patterns = getRecommendedPatterns(request);
|
|
55
|
+
const errorGuide = createErrorHandlingGuide(request);
|
|
56
|
+
const docTemplate = generateDocumentationTemplate(request);
|
|
57
|
+
const bestPractices = getBestPractices(request);
|
|
58
|
+
logger.info({ timeMs: timer.elapsed() }, 'API design analysis complete');
|
|
59
|
+
return {
|
|
60
|
+
currentDesign: request.apiType || 'Not specified',
|
|
61
|
+
issues,
|
|
62
|
+
recommendations,
|
|
63
|
+
patterns,
|
|
64
|
+
errorHandling: errorGuide,
|
|
65
|
+
documentationTemplate: docTemplate,
|
|
66
|
+
bestPractices,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Identify API design issues
|
|
71
|
+
*/
|
|
72
|
+
function identifyDesignIssues(request) {
|
|
73
|
+
const issues = [];
|
|
74
|
+
if (request.endpoints) {
|
|
75
|
+
for (const endpoint of request.endpoints) {
|
|
76
|
+
if (!endpoint.authentication) {
|
|
77
|
+
issues.push({
|
|
78
|
+
severity: 'critical',
|
|
79
|
+
category: 'Security',
|
|
80
|
+
issue: `Endpoint ${endpoint.path} has no authentication`,
|
|
81
|
+
impact: 'Unauthorized access, data exposure',
|
|
82
|
+
affectedEndpoints: [endpoint.path],
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (endpoint.method === 'GET' && endpoint.path.includes('delete')) {
|
|
86
|
+
issues.push({
|
|
87
|
+
severity: 'high',
|
|
88
|
+
category: 'RESTful Design',
|
|
89
|
+
issue: `GET method used for delete operation (${endpoint.path})`,
|
|
90
|
+
impact: 'Violates REST principles, can cause accidental deletions',
|
|
91
|
+
affectedEndpoints: [endpoint.path],
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (!endpoint.statusCodes || Object.keys(endpoint.statusCodes).length === 0) {
|
|
95
|
+
issues.push({
|
|
96
|
+
severity: 'medium',
|
|
97
|
+
category: 'Documentation',
|
|
98
|
+
issue: `No status codes documented for ${endpoint.path}`,
|
|
99
|
+
impact: 'Clients unclear on possible responses',
|
|
100
|
+
affectedEndpoints: [endpoint.path],
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (request.errorHandling?.toLowerCase().includes('generic error')) {
|
|
106
|
+
issues.push({
|
|
107
|
+
severity: 'high',
|
|
108
|
+
category: 'Error Handling',
|
|
109
|
+
issue: 'Generic error messages without context',
|
|
110
|
+
impact: 'Difficult for clients to handle errors appropriately',
|
|
111
|
+
affectedEndpoints: ['All'],
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
if (!request.documentation) {
|
|
115
|
+
issues.push({
|
|
116
|
+
severity: 'medium',
|
|
117
|
+
category: 'Documentation',
|
|
118
|
+
issue: 'No API documentation',
|
|
119
|
+
impact: 'Slow onboarding, inconsistent client implementations',
|
|
120
|
+
affectedEndpoints: ['All'],
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return issues;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Generate API design recommendations
|
|
127
|
+
*/
|
|
128
|
+
function generateDesignRecommendations(request) {
|
|
129
|
+
return [
|
|
130
|
+
{
|
|
131
|
+
area: 'Consistency',
|
|
132
|
+
currentPractice: 'Inconsistent endpoint naming',
|
|
133
|
+
recommendation: 'Use consistent kebab-case for all endpoints',
|
|
134
|
+
implementation: '/api/v1/user-profiles instead of /api/v1/userprofiles',
|
|
135
|
+
benefit: 'Easy to predict endpoints, better DX',
|
|
136
|
+
effort: '2-4 hours',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
area: 'Pagination',
|
|
140
|
+
currentPractice: 'No pagination strategy',
|
|
141
|
+
recommendation: 'Implement cursor or offset-based pagination',
|
|
142
|
+
implementation: 'Use ?page=1&limit=20 or ?cursor=abc&limit=20',
|
|
143
|
+
benefit: 'Scalability, reduced server load',
|
|
144
|
+
effort: '4-8 hours',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
area: 'Versioning',
|
|
148
|
+
currentPractice: 'No versioning strategy',
|
|
149
|
+
recommendation: 'Use URL-based versioning: /api/v1/, /api/v2/',
|
|
150
|
+
implementation: 'Include major version in URL path',
|
|
151
|
+
benefit: 'Backward compatibility, smooth transitions',
|
|
152
|
+
effort: '1-2 weeks',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
area: 'Error Handling',
|
|
156
|
+
currentPractice: 'Inconsistent error formats',
|
|
157
|
+
recommendation: 'Standardize error response format',
|
|
158
|
+
implementation: '{ "error": { "code": "INVALID_INPUT", "message": "..." } }',
|
|
159
|
+
benefit: 'Predictable client error handling',
|
|
160
|
+
effort: '4-6 hours',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
area: 'Rate Limiting',
|
|
164
|
+
currentPractice: 'No rate limiting',
|
|
165
|
+
recommendation: 'Implement rate limiting per IP/user',
|
|
166
|
+
implementation: 'Add RateLimit-Limit, RateLimit-Remaining headers',
|
|
167
|
+
benefit: 'Prevent abuse, fair usage',
|
|
168
|
+
effort: '4-8 hours',
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
area: 'Caching',
|
|
172
|
+
currentPractice: 'No caching headers',
|
|
173
|
+
recommendation: 'Add cache-control headers',
|
|
174
|
+
implementation: 'Cache-Control: max-age=3600, public',
|
|
175
|
+
benefit: '40-60% reduction in server load',
|
|
176
|
+
effort: '2-4 hours',
|
|
177
|
+
},
|
|
178
|
+
];
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get recommended patterns
|
|
182
|
+
*/
|
|
183
|
+
function getRecommendedPatterns(request) {
|
|
184
|
+
const patterns = [];
|
|
185
|
+
// REST patterns
|
|
186
|
+
if (request.apiType === 'rest' || !request.apiType) {
|
|
187
|
+
patterns.push({
|
|
188
|
+
pattern: 'Resource-Oriented Design',
|
|
189
|
+
description: 'Design endpoints around resources, not actions',
|
|
190
|
+
implementation: 'POST /api/v1/users (create), GET /api/v1/users/:id (read)',
|
|
191
|
+
example: 'POST /api/v1/orders, GET /api/v1/orders/:id, DELETE /api/v1/orders/:id',
|
|
192
|
+
suitability: 9,
|
|
193
|
+
});
|
|
194
|
+
patterns.push({
|
|
195
|
+
pattern: 'HATEOAS',
|
|
196
|
+
description: 'Include links to related resources in responses',
|
|
197
|
+
implementation: 'Response includes _links with next, prev, self',
|
|
198
|
+
example: '{ "data": {...}, "_links": { "self": "/api/v1/users/1", "posts": "/api/v1/users/1/posts" } }',
|
|
199
|
+
suitability: 7,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
// GraphQL patterns
|
|
203
|
+
if (request.apiType === 'graphql') {
|
|
204
|
+
patterns.push({
|
|
205
|
+
pattern: 'Efficient Data Fetching',
|
|
206
|
+
description: 'Clients request only needed fields',
|
|
207
|
+
implementation: 'Query { user { name email } }',
|
|
208
|
+
example: 'Reduces payload by 30-50% compared to REST',
|
|
209
|
+
suitability: 10,
|
|
210
|
+
});
|
|
211
|
+
patterns.push({
|
|
212
|
+
pattern: 'Batch Loading',
|
|
213
|
+
description: 'Prevent N+1 query problems with DataLoaders',
|
|
214
|
+
implementation: 'Use facebook/dataloader or similar',
|
|
215
|
+
example: 'Single query resolves multiple related objects efficiently',
|
|
216
|
+
suitability: 9,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
// General patterns
|
|
220
|
+
patterns.push({
|
|
221
|
+
pattern: 'API Key & OAuth2',
|
|
222
|
+
description: 'Secure authentication for different client types',
|
|
223
|
+
implementation: 'API Key for simple auth, OAuth2 for delegation',
|
|
224
|
+
example: 'Authorization: Bearer eyJhbGciOiJIUzI1NiIs...',
|
|
225
|
+
suitability: 10,
|
|
226
|
+
});
|
|
227
|
+
patterns.push({
|
|
228
|
+
pattern: 'Async Operations',
|
|
229
|
+
description: 'Handle long-running operations with polling or webhooks',
|
|
230
|
+
implementation: 'Return 202 Accepted, provide status endpoint',
|
|
231
|
+
example: 'POST /api/v1/exports returns location to check status',
|
|
232
|
+
suitability: 8,
|
|
233
|
+
});
|
|
234
|
+
return patterns;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Create error handling guide
|
|
238
|
+
*/
|
|
239
|
+
function createErrorHandlingGuide(request) {
|
|
240
|
+
return {
|
|
241
|
+
standardErrorFormat: `{
|
|
242
|
+
"error": {
|
|
243
|
+
"code": "ERROR_CODE",
|
|
244
|
+
"message": "Human readable message",
|
|
245
|
+
"details": "Additional context",
|
|
246
|
+
"timestamp": "2024-01-15T10:30:00Z",
|
|
247
|
+
"request_id": "req-123"
|
|
248
|
+
}
|
|
249
|
+
}`,
|
|
250
|
+
statusCodeMapping: {
|
|
251
|
+
200: 'OK - Request succeeded',
|
|
252
|
+
201: 'Created - Resource created',
|
|
253
|
+
204: 'No Content - Success, no body',
|
|
254
|
+
400: 'Bad Request - Client error',
|
|
255
|
+
401: 'Unauthorized - Authentication required',
|
|
256
|
+
403: 'Forbidden - Insufficient permissions',
|
|
257
|
+
404: 'Not Found - Resource not found',
|
|
258
|
+
429: 'Too Many Requests - Rate limited',
|
|
259
|
+
500: 'Internal Server Error - Server error',
|
|
260
|
+
503: 'Service Unavailable - Maintenance',
|
|
261
|
+
},
|
|
262
|
+
errorResponses: [
|
|
263
|
+
{
|
|
264
|
+
status: 400,
|
|
265
|
+
type: 'INVALID_INPUT',
|
|
266
|
+
meaning: 'Request body or parameters invalid',
|
|
267
|
+
clientAction: 'Validate input and retry',
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
status: 401,
|
|
271
|
+
type: 'UNAUTHORIZED',
|
|
272
|
+
meaning: 'Authentication failed or missing',
|
|
273
|
+
clientAction: 'Prompt user to login',
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
status: 429,
|
|
277
|
+
type: 'RATE_LIMITED',
|
|
278
|
+
meaning: 'Too many requests',
|
|
279
|
+
clientAction: 'Wait and retry with exponential backoff',
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
status: 500,
|
|
283
|
+
type: 'SERVER_ERROR',
|
|
284
|
+
meaning: 'Unexpected server error',
|
|
285
|
+
clientAction: 'Retry later or contact support',
|
|
286
|
+
},
|
|
287
|
+
],
|
|
288
|
+
retryStrategy: `Implement exponential backoff:
|
|
289
|
+
1st attempt: immediately
|
|
290
|
+
2nd attempt: after 1 second
|
|
291
|
+
3rd attempt: after 2 seconds
|
|
292
|
+
4th attempt: after 4 seconds
|
|
293
|
+
Max retries: 5`,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Generate documentation template
|
|
298
|
+
*/
|
|
299
|
+
function generateDocumentationTemplate(request) {
|
|
300
|
+
return `# API Documentation
|
|
301
|
+
|
|
302
|
+
## Overview
|
|
303
|
+
Brief description of the API and its purpose.
|
|
304
|
+
|
|
305
|
+
## Authentication
|
|
306
|
+
Explain authentication method (API Key, OAuth2, JWT, etc.)
|
|
307
|
+
|
|
308
|
+
## Base URL
|
|
309
|
+
\`https://api.example.com/v1\`
|
|
310
|
+
|
|
311
|
+
## Rate Limiting
|
|
312
|
+
- Requests per minute: 60
|
|
313
|
+
- Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining
|
|
314
|
+
|
|
315
|
+
## Endpoints
|
|
316
|
+
|
|
317
|
+
### Users
|
|
318
|
+
- POST /users - Create user
|
|
319
|
+
- GET /users - List users
|
|
320
|
+
- GET /users/:id - Get user
|
|
321
|
+
- PATCH /users/:id - Update user
|
|
322
|
+
- DELETE /users/:id - Delete user
|
|
323
|
+
|
|
324
|
+
## Error Handling
|
|
325
|
+
Standard error format and common status codes.
|
|
326
|
+
|
|
327
|
+
## Best Practices
|
|
328
|
+
- Always include request ID for debugging
|
|
329
|
+
- Use pagination for large datasets
|
|
330
|
+
- Implement retry logic with exponential backoff
|
|
331
|
+
- Cache responses where appropriate`;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Get API best practices
|
|
335
|
+
*/
|
|
336
|
+
function getBestPractices(request) {
|
|
337
|
+
return [
|
|
338
|
+
{
|
|
339
|
+
title: 'Use Semantic HTTP Status Codes',
|
|
340
|
+
description: 'Use appropriate 2xx, 4xx, and 5xx status codes',
|
|
341
|
+
reasoning: 'Clients can handle responses appropriately without parsing body',
|
|
342
|
+
example: '201 Created for successful POST, 400 Bad Request for validation errors',
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
title: 'Include Request IDs',
|
|
346
|
+
description: 'Return unique request ID in response headers',
|
|
347
|
+
reasoning: 'Essential for debugging and tracing requests across systems',
|
|
348
|
+
example: 'X-Request-ID: req-abc123-xyz789',
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
title: 'Implement Pagination',
|
|
352
|
+
description: 'Always paginate large datasets',
|
|
353
|
+
reasoning: 'Prevents server overload and improves response times',
|
|
354
|
+
example: '?page=2&limit=50 or ?cursor=abc&limit=50',
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
title: 'Version Your API',
|
|
358
|
+
description: 'Include version in URL path',
|
|
359
|
+
reasoning: 'Allows breaking changes without disrupting existing clients',
|
|
360
|
+
example: '/api/v1/, /api/v2/',
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
title: 'Provide Clear Error Messages',
|
|
364
|
+
description: 'Include error code and actionable message',
|
|
365
|
+
reasoning: 'Helps developers fix issues quickly',
|
|
366
|
+
example: '{ "error": { "code": "INVALID_EMAIL", "message": "Email format invalid" } }',
|
|
367
|
+
},
|
|
368
|
+
];
|
|
369
|
+
}
|
|
370
|
+
// ============================================================================
|
|
371
|
+
// Export
|
|
372
|
+
// ============================================================================
|
|
373
|
+
export default designApi;
|
|
374
|
+
//# sourceMappingURL=api-design-consultant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-design-consultant.js","sourceRoot":"","sources":["../../src/tools/api-design-consultant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Integration Helper
|
|
3
|
+
*
|
|
4
|
+
* Helps frontend developers integrate with backend APIs:
|
|
5
|
+
* - Generates TypeScript types from API responses
|
|
6
|
+
* - Creates React Query / SWR / TanStack Query hooks
|
|
7
|
+
* - Generates mock data for testing
|
|
8
|
+
* - Creates error handling wrappers
|
|
9
|
+
* - Builds API client with interceptors
|
|
10
|
+
* - Generates OpenAPI types
|
|
11
|
+
* - Creates Zod validation schemas
|
|
12
|
+
*/
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
export interface APIEndpoint {
|
|
15
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
16
|
+
path: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
requestBody?: Record<string, any>;
|
|
19
|
+
responseBody: Record<string, any>;
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
queryParams?: Record<string, string>;
|
|
22
|
+
}
|
|
23
|
+
export interface APIIntegrationRequest {
|
|
24
|
+
endpoints: APIEndpoint[];
|
|
25
|
+
baseUrl: string;
|
|
26
|
+
library: 'react-query' | 'swr' | 'axios' | 'fetch' | 'tanstack-query';
|
|
27
|
+
generateTypes?: boolean;
|
|
28
|
+
generateMocks?: boolean;
|
|
29
|
+
generateZodSchemas?: boolean;
|
|
30
|
+
authType?: 'bearer' | 'api-key' | 'basic' | 'oauth2' | 'none';
|
|
31
|
+
framework?: 'react' | 'vue' | 'svelte' | 'next';
|
|
32
|
+
}
|
|
33
|
+
export interface GeneratedIntegration {
|
|
34
|
+
types: string;
|
|
35
|
+
hooks: string;
|
|
36
|
+
apiClient: string;
|
|
37
|
+
mocks?: string;
|
|
38
|
+
zodSchemas?: string;
|
|
39
|
+
errorHandling: string;
|
|
40
|
+
usageExamples: string;
|
|
41
|
+
testingGuide: string;
|
|
42
|
+
}
|
|
43
|
+
export declare const APIEndpointSchema: z.ZodObject<{
|
|
44
|
+
method: z.ZodEnum<["GET", "POST", "PUT", "PATCH", "DELETE"]>;
|
|
45
|
+
path: z.ZodString;
|
|
46
|
+
description: z.ZodOptional<z.ZodString>;
|
|
47
|
+
requestBody: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
48
|
+
responseBody: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
49
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
50
|
+
queryParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
path: string;
|
|
53
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
54
|
+
responseBody: Record<string, any>;
|
|
55
|
+
headers?: Record<string, string> | undefined;
|
|
56
|
+
description?: string | undefined;
|
|
57
|
+
requestBody?: Record<string, any> | undefined;
|
|
58
|
+
queryParams?: Record<string, string> | undefined;
|
|
59
|
+
}, {
|
|
60
|
+
path: string;
|
|
61
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
62
|
+
responseBody: Record<string, any>;
|
|
63
|
+
headers?: Record<string, string> | undefined;
|
|
64
|
+
description?: string | undefined;
|
|
65
|
+
requestBody?: Record<string, any> | undefined;
|
|
66
|
+
queryParams?: Record<string, string> | undefined;
|
|
67
|
+
}>;
|
|
68
|
+
export declare const APIIntegrationRequestSchema: z.ZodObject<{
|
|
69
|
+
endpoints: z.ZodArray<z.ZodObject<{
|
|
70
|
+
method: z.ZodEnum<["GET", "POST", "PUT", "PATCH", "DELETE"]>;
|
|
71
|
+
path: z.ZodString;
|
|
72
|
+
description: z.ZodOptional<z.ZodString>;
|
|
73
|
+
requestBody: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
74
|
+
responseBody: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
75
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
76
|
+
queryParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
77
|
+
}, "strip", z.ZodTypeAny, {
|
|
78
|
+
path: string;
|
|
79
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
80
|
+
responseBody: Record<string, any>;
|
|
81
|
+
headers?: Record<string, string> | undefined;
|
|
82
|
+
description?: string | undefined;
|
|
83
|
+
requestBody?: Record<string, any> | undefined;
|
|
84
|
+
queryParams?: Record<string, string> | undefined;
|
|
85
|
+
}, {
|
|
86
|
+
path: string;
|
|
87
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
88
|
+
responseBody: Record<string, any>;
|
|
89
|
+
headers?: Record<string, string> | undefined;
|
|
90
|
+
description?: string | undefined;
|
|
91
|
+
requestBody?: Record<string, any> | undefined;
|
|
92
|
+
queryParams?: Record<string, string> | undefined;
|
|
93
|
+
}>, "many">;
|
|
94
|
+
baseUrl: z.ZodString;
|
|
95
|
+
library: z.ZodEnum<["react-query", "swr", "axios", "fetch", "tanstack-query"]>;
|
|
96
|
+
generateTypes: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
97
|
+
generateMocks: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
98
|
+
generateZodSchemas: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
99
|
+
authType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["bearer", "api-key", "basic", "oauth2", "none"]>>>;
|
|
100
|
+
framework: z.ZodDefault<z.ZodOptional<z.ZodEnum<["react", "vue", "svelte", "next"]>>>;
|
|
101
|
+
}, "strip", z.ZodTypeAny, {
|
|
102
|
+
framework: "next" | "react" | "vue" | "svelte";
|
|
103
|
+
library: "fetch" | "react-query" | "swr" | "axios" | "tanstack-query";
|
|
104
|
+
baseUrl: string;
|
|
105
|
+
endpoints: {
|
|
106
|
+
path: string;
|
|
107
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
108
|
+
responseBody: Record<string, any>;
|
|
109
|
+
headers?: Record<string, string> | undefined;
|
|
110
|
+
description?: string | undefined;
|
|
111
|
+
requestBody?: Record<string, any> | undefined;
|
|
112
|
+
queryParams?: Record<string, string> | undefined;
|
|
113
|
+
}[];
|
|
114
|
+
generateTypes: boolean;
|
|
115
|
+
generateMocks: boolean;
|
|
116
|
+
generateZodSchemas: boolean;
|
|
117
|
+
authType: "none" | "bearer" | "api-key" | "basic" | "oauth2";
|
|
118
|
+
}, {
|
|
119
|
+
library: "fetch" | "react-query" | "swr" | "axios" | "tanstack-query";
|
|
120
|
+
baseUrl: string;
|
|
121
|
+
endpoints: {
|
|
122
|
+
path: string;
|
|
123
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
124
|
+
responseBody: Record<string, any>;
|
|
125
|
+
headers?: Record<string, string> | undefined;
|
|
126
|
+
description?: string | undefined;
|
|
127
|
+
requestBody?: Record<string, any> | undefined;
|
|
128
|
+
queryParams?: Record<string, string> | undefined;
|
|
129
|
+
}[];
|
|
130
|
+
framework?: "next" | "react" | "vue" | "svelte" | undefined;
|
|
131
|
+
generateTypes?: boolean | undefined;
|
|
132
|
+
generateMocks?: boolean | undefined;
|
|
133
|
+
generateZodSchemas?: boolean | undefined;
|
|
134
|
+
authType?: "none" | "bearer" | "api-key" | "basic" | "oauth2" | undefined;
|
|
135
|
+
}>;
|
|
136
|
+
export declare function generateAPIIntegration(request: APIIntegrationRequest): Promise<GeneratedIntegration>;
|
|
137
|
+
declare const _default: {
|
|
138
|
+
generateAPIIntegration: typeof generateAPIIntegration;
|
|
139
|
+
};
|
|
140
|
+
export default _default;
|
|
141
|
+
//# sourceMappingURL=api-integration-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-integration-helper.d.ts","sourceRoot":"","sources":["../../src/tools/api-integration-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,gBAAgB,CAAC;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9D,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACjD;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EAQ5B,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAStC,CAAC;AAqFH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAsC1G;;;;AAgzBD,wBAA0C"}
|