@beignet/cli 0.0.24 → 0.0.25
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/CHANGELOG.md +13 -0
- package/README.md +45 -4
- package/dist/config.d.ts +21 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +51 -0
- package/dist/config.js.map +1 -1
- package/dist/db.d.ts +30 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +201 -1
- package/dist/db.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -1
- package/dist/inspect.d.ts.map +1 -1
- package/dist/inspect.js +157 -235
- package/dist/inspect.js.map +1 -1
- package/dist/provider-audit.d.ts +131 -0
- package/dist/provider-audit.d.ts.map +1 -0
- package/dist/provider-audit.js +1013 -0
- package/dist/provider-audit.js.map +1 -0
- package/package.json +2 -2
- package/skills/app-structure/SKILL.md +22 -4
- package/src/config.ts +99 -0
- package/src/db.ts +316 -1
- package/src/index.ts +180 -1
- package/src/inspect.ts +298 -369
- package/src/provider-audit.ts +1681 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-audit.js","sourceRoot":"","sources":["../src/provider-audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAEL,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,aAAa,GAEd,MAAM,aAAa,CAAC;AAmHrB,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAgC,EAAE;IAElC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7D,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,MAAM,eAAe,GAAG,MAAM,uBAAuB,CACnD,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,CACZ,CAAC;IACF,MAAM,WAAW,GAAG,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACpD,CAAC,CAAC,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC;QACpE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,kBAAkB,GAAG,aAAa,CACtC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAC/C,CAAC;IACF,MAAM,SAAS,GAAG,GAAG,kBAAkB,YAAY,CAAC;IAEpD,MAAM,SAAS,GAAyB,EAAE,CAAC;IAC3C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,iCAAiC,CACpD,SAAS,EACT,WAAW,CACZ,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,CAAC,IAAI,CACZ,oCAAoC,CAAC,WAAW,EAAE,WAAW,CAAC,CAC/D,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,SAAS,CAAC,IAAI,CACZ,oCAAoC,CAClC,WAAW,EACX,WAAW,EACX,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAC1C,MAAM,CAAC,MAAM,CACd,CACF,CAAC;YACF,SAAS;QACX,CAAC;QAED,SAAS,CAAC,IAAI,CACZ,MAAM,yBAAyB,CAAC;YAC9B,SAAS;YACT,KAAK;YACL,MAAM;YACN,WAAW;YACX,kBAAkB;YAClB,SAAS;YACT,WAAW;YACX,WAAW;YACX,eAAe;YACf,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,WAAW;YACX,IAAI,EAAE,8BAA8B,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;SACnE,CAAC,CACH,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC7B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAClD,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,SAAS;QACT,SAAS;QACT,OAAO,EAAE,sBAAsB,CAAC,SAAS,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,yCAAyC,MAAM,CAAC,SAAS,GAAG,CAAC;IACtE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/C,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAClC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7C,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC;QACnD,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;KACrE,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,sBAAsB,MAAM,CAAC,SAAS,EAAE;QACxC,EAAE;QACF,KAAK,CAAC;YACJ,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC;YACrE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;gBACnB,GAAG,CAAC,WAAW;gBACf,GAAG,CAAC,QAAQ;gBACZ,GAAG,CAAC,YAAY;gBAChB,GAAG,CAAC,GAAG;gBACP,GAAG,CAAC,MAAM;gBACV,GAAG,CAAC,QAAQ;aACb,CAAC;SACH,CAAC;QACF,EAAE;QACF,GAAG,IAAI;aACJ,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC;aAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;QACnD,EAAE;QACF,YAAY,MAAM,CAAC,OAAO,CAAC,KAAK,iBAAiB,MAAM,CAAC,OAAO,CAAC,mBAAmB,0BAA0B,MAAM,CAAC,OAAO,CAAC,UAAU,iBAAiB,MAAM,CAAC,OAAO,CAAC,aAAa,oBAAoB,MAAM,CAAC,OAAO,CAAC,eAAe,qBAAqB;KAC3P;SACE,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SACtE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uCAAuC,CAC3D,SAAiB,EACjB,WAA4C;IAE5C,MAAM,YAAY,GAAG,CAAC,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,MAAM,iCAAiC,CACpD,SAAS,EACT,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,MAAM,MAAM,GAAG,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QACtC,OAAO,8BAA8B,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAA8B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,SAAiB,EACjB,WAAmB;IAEnB,KAAK,MAAM,SAAS,IAAI,6BAA6B,CACnD,SAAS,EACT,WAAW,CACZ,EAAE,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAEvC,SAAS,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC;QAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,WAAmB,EACnB,QAAiC;IAEjC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;IAE3C,OAAO;QACL,WAAW;QACX,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,WAAW;QAChD,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,EAAE;QAClC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;QACjC,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,EAAE;QAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;QACjC,oBAAoB,EAAE,gCAAgC,CAAC,YAAY,CAAC;QACpE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC7C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI;YAChD,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,IAAI,EAAE;YAC1C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YACtC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;YAC5C,oBAAoB,EAAE,gCAAgC,CACpD,OAAO,CAAC,YAAY,CACrB;SACF,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,YAEa;IAEb,OAAO,CACL,YAAY,EAAE,QAAQ;QACtB,CAAC,YAAY,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAA8C,EAC9C,eAAkC;IAElC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CACjC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5B,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACvD,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,QAA8C;IAE9C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3E,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,KAAe,EACf,MAA6B,EAC7B,WAAgC;IAEhC,MAAM,aAAa,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,CACrB,MAAM,OAAO,CAAC,GAAG,CACf,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACzB,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAC/C,CACF,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACrE,OAAO,kBAAkB,KAAK,SAAS;QACrC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO,cAAc,CAAC;IAClC,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,IAAY;IAEZ,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/D,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACtD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAoD;IAEpD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,WAA4C;IAE5C,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,IAAI,EAAE,CAAC;QAC/C,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,IAAI,EAAE,CAAC;QAClD,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,IAAI,EAAE,CAAC;KACpD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAe,EACf,MAA6B;IAE7B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,cAAc;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,IAAI,KAAK,mBAAmB;YAAE,OAAO,IAAI,CAAC;QAC9C,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,oBAAoB;YAAE,OAAO,IAAI,CAAC;QACxE,IAAI,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB,EACjB,WAA8B,EAC9B,MAAc,EACd,WAAgC;IAEhC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,SAAiB,EACjB,KAAe,EACf,MAA6B,EAC7B,kBAA0B,EAC1B,SAAiB,EACjB,SAAiB,EACjB,WAAgC;IAEhC,OAAO,mBAAmB,CAAC;QACzB,SAAS;QACT,KAAK;QACL,MAAM;QACN,kBAAkB;QAClB,SAAS;QACT,SAAS;QACT,WAAW;KACZ,CAAC,CAAC;AACL,CAAC;AAkBD,MAAM,yBAAyB,GAAG,0CAA0C,CAAC;AAE7E,KAAK,UAAU,mBAAmB,CAChC,OAAmC;IAEnC,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE5B,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,OAAO,CAAC,SAAS,EACjB,IAAI,EACJ,OAAO,CAAC,WAAW,CACpB,CAAC;QACF,IACE,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;YAC7C,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;gBACrB,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EACvD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,OAAmC;IAEnC,OAAO;QACL,GAAG,+BAA+B,CAChC,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,kBAAkB,EAC1B,OAAO,CAAC,SAAS,CAClB;QACD,GAAG,CAAC,MAAM,mCAAmC,CAC3C,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,MAAM,CACf,CAAC;QACF,GAAG,CAAC,MAAM,mCAAmC,CAAC,OAAO,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,SAAiB,EACjB,KAAe,EACf,kBAA0B,EAC1B,SAAiB;IAEjB,MAAM,YAAY,GAAG,GAAG,SAAS,GAAG,CAAC;IAErC,OAAO,KAAK;SACT,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACvB,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,kBAAkB,MAAM,CAAC,CAAC,CAClD;SACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QACxC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;QACxD,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC,CAAC;AACR,CAAC;AAED,KAAK,UAAU,mCAAmC,CAChD,SAAiB,EACjB,MAA6B;IAE7B,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACnD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,2BAA2B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,mCAAmC,CAChD,OAAmC;IAEnC,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,KAAK,MAAM,IAAI,IAAI,kCAAkC,CACnD,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,kBAAkB,EAC1B,OAAO,CAAC,SAAS,CAClB,EAAE,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,OAAO,CAAC,SAAS,EACjB,IAAI,EACJ,OAAO,CAAC,WAAW,CACpB,CAAC;QACF,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC;gBAAE,SAAS;YACxD,WAAW,CAAC,IAAI,CACd,GAAG,CAAC,MAAM,2BAA2B,CACnC,OAAO,CAAC,SAAS,EACjB,SAAS,EACT,IAAI,CACL,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,kCAAkC,CACzC,KAAe,EACf,MAA6B,EAC7B,kBAA0B,EAC1B,SAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;QACzB,mBAAmB;QACnB,oBAAoB;QACpB,mBAAmB;QACnB,oBAAoB;QACpB,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC;KACtC,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IACE,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACvB,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,kBAAkB,MAAM,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,EACnC,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,SAAiB,EACjB,MAAc,EACd,YAAqB;IAErB,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,6BAA6B,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,CAAC;QAC7B,OAAO,6BAA6B,CAClC,SAAS,EACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,CAC1D,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,6BAA6B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC;IAC3C,CAAC;IAED,OAAO,sCAAsC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,SAAiB,EACjB,KAAa;IAEb,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CACnE,MAAM,EACN,EAAE,CACH,CAAC;IACF,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnE,OAAO,kCAAkC,CACvC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAChC,SAAS,CACV,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sCAAsC,CACnD,SAAiB,EACjB,SAAiB;IAEjB,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,cAAc,EACd,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CACjC,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,kCAAkC,CAC1D,UAAU,EACV,SAAS,CACV,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC;IAE/C,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAKvC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1E,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,aAAa,GAAG,MAAM,kCAAkC,CAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EACpD,SAAS,CACV,CAAC;QACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,aAAa,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,MAAM,UAAU,IAAI;YACvB,WAAW,CAAC,KAAK;YACjB,WAAW,CAAC,MAAM;YAClB,WAAW,CAAC,IAAI;SACjB,EAAE,CAAC;YACF,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC1B,MAAM,eAAe,GAAG,MAAM,kCAAkC,CAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EACjC,SAAS,CACV,CAAC;YACF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,eAAe,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,kCAAkC,CAC/C,YAAoB,EACpB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC3D,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC;aAC5D;SACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,KAAK,GAAyB,EAAE,CAAC;IAEvC,KAAK,UAAU,KAAK,CAAC,GAAW;QAC9B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IACE,KAAK,CAAC,IAAI,KAAK,cAAc;gBAC7B,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,IAAI,KAAK,QAAQ;gBACvB,KAAK,CAAC,IAAI,KAAK,UAAU,EACzB,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;iBAAM,IACL,KAAK,CAAC,MAAM,EAAE;gBACd,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC1C,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAC3C,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACT,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC;iBAC7D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,YAAoB;IAEpB,MAAM,UAAU,GAAG;QACjB,YAAY;QACZ,GAAG,YAAY,KAAK;QACpB,GAAG,YAAY,MAAM;QACrB,GAAG,YAAY,MAAM;QACrB,GAAG,YAAY,MAAM;QACrB,GAAG,YAAY,KAAK;QACpB,GAAG,YAAY,MAAM;QACrB,GAAG,YAAY,MAAM;QACrB,GAAG,YAAY,MAAM;QACrB,GAAG,YAAY,MAAM;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;KACrC,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACjE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,SAAiB,EACjB,IAAwB,EACxB,WAAgC;IAEhC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,OAAO,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACzD,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB,CAC/B,SAAiB,EACjB,YAAoB;IAEpB,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3E,IAAI,YAAY,KAAK,EAAE,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACzE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAAiB;IAEjB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO;YACL,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACtC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAAqB,EACrB,OAAe;IAEf,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QACrC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QAC/D,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvC,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;QACtE,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CACjC,+DAA+D,CAChE,EAAE,CAAC;QACF,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;QACpE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,6BAA6B,CAAC,SAAiB;IACtD,OAAO,iDAAiD,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gCAAgC,CACvC,UAA6B,EAC7B,MAA6B;IAE7B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAClC,+BAA+B,CAAC,SAAS,EAAE,MAAM,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,SAAiB,EACjB,MAA6B;IAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,OAAO,CAClD,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CACW,EAAE,CAAC;QAClD,IAAI,SAAS,KAAK,gBAAgB;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,SAAiB,EACjB,WAA4C;IAE5C,MAAM,KAAK,GAAG,CAAC,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAChC,WAAW;QACX,WAAW,EACT,CAAC,MAAM,iCAAiC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACjE,SAAS;KACZ,CAAC,CAAC,CACJ,CAAC;IAEF,OAAO,UAAU;SACd,MAAM,CACL,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAC/B,WAAW,IAAI,2BAA2B,CAAC,WAAW,CAAC,CAC1D;SACA,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,2BAA2B,CAAC,WAAmB;IACtD,OAAO,CACL,WAAW,KAAK,mBAAmB;QACnC,WAAW,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAC5C,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,SAAiB,EACjB,WAAmB;IAEnB,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CACP,SAAS,EACT,cAAc,EACd,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EACzB,cAAc,CACf;KACF,CAAC;IAEF,IAAI,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,OAAO,CACV,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,UAAU,EACV,UAAU,EACV,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EACrC,cAAc,CACf,CACF,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAI,IAAY;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAM,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK,YAAY,KAAK;YACtB,MAAM,IAAI,KAAK;YACd,KAA2B,CAAC,IAAI,KAAK,QAAQ,EAC9C,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,OAaxC;IACC,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ;QAC5C,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC;QAC1E,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAClD,oBAAoB,CAAC;QACnB,GAAG,OAAO;QACV,OAAO;QACP,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC/C,CAAC,CACH,CACF,CAAC;IAEF,MAAM,WAAW,GACf,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;QACjC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,EAAE,aAAa,CAAC;QACtD,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAChE,yBAAyB,CACvB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,WAAW,EACnB,MAAM,EACN,OAAO,CAAC,WAAW,CACpB,CACF,CAAC;IAER,MAAM,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;QACjC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QACzD,CAAC,CAAC,MAAM,gBAAgB,CACpB,gCAAgC,CAC9B,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,EACjC,OAAO,CAAC,MAAM,CACf,EACD,CAAC,SAAS,EAAE,EAAE,CACZ,2BAA2B,CACzB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,kBAAkB,EAC1B,OAAO,CAAC,SAAS,EACjB,SAAS,EACT,OAAO,CAAC,WAAW,CACpB,CACJ,CAAC;IAER,MAAM,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;QACjC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;QACnE,CAAC,CAAC,iBAAiB,CACf,OAAO,CAAC,IAAI,CAAC,MAAM,EACnB,OAAO,CAAC,IAAI,CAAC,oBAAoB,EACjC,OAAO,CAAC,eAAe,CACxB,CAAC;IACR,MAAM,QAAQ,GAAG,aAAa,CAC5B,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAC3B,OAAO,CAAC,WAAW,CACpB,CAAC;IACF,MAAM,KAAK,GAAG,kBAAkB,CAAC;QAC/B,cAAc,EAAE,OAAO;QACvB,YAAY;QACZ,WAAW;QACX,cAAc;QACd,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW;QACrC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW;QACrC,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CACtD,OAAO,CAAC,IAAI,CAAC,WAAW,CACzB;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC;YACjE,MAAM,EAAE,EAAE;SACX;QACD,YAAY;QACZ,WAAW;QACX,cAAc;QACd,QAAQ;QACR,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC5C,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,OAWnC;IACC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;YAC1B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;YACxC,YAAY,EAAE,UAAU;YACxB,WAAW,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;YAC7D,cAAc,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;SACpE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;QACxC,YAAY,EAAE,iBAAiB,CAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,EACtB,OAAO,CAAC,OAAO,CAAC,oBAAoB,EACpC,OAAO,CAAC,eAAe,CACxB;QACD,WAAW,EAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAC1E,yBAAyB,CACvB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,WAAW,EACnB,MAAM,EACN,OAAO,CAAC,WAAW,CACpB,CACF;QACD,cAAc,EAAE,MAAM,gBAAgB,CACpC,gCAAgC,CAC9B,OAAO,CAAC,OAAO,CAAC,cAAc,EAC9B,OAAO,CAAC,MAAM,CACf,EACD,CAAC,SAAS,EAAE,EAAE,CACZ,2BAA2B,CACzB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,kBAAkB,EAC1B,OAAO,CAAC,SAAS,EACjB,SAAS,EACT,OAAO,CAAC,WAAW,CACpB,CACJ;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,WAAmB,EACnB,WAA4C;IAE5C,OAAO;QACL,WAAW;QACX,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;QAC7D,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3C,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,gBAAgB,EAAE;QAC/B,cAAc,EAAE,gBAAgB,EAAE;QAClC,QAAQ,EAAE,aAAa,EAAE;QACzB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,CAAC,2BAA2B,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,WAAmB,EACnB,WAA4C,EAC5C,MAAc,EACd,MAAoD;IAEpD,OAAO;QACL,WAAW;QACX,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;QAC7D,QAAQ,EAAE;YACR,MAAM,EAAE,SAAS;YACjB,MAAM;YACN,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;SACpB;QACD,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,gBAAgB,EAAE;QAC/B,cAAc,EAAE,gBAAgB,EAAE;QAClC,QAAQ,EAAE,aAAa,EAAE;QACzB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,CAAC,qBAAqB,4BAA4B,CAAC,MAAM,CAAC,EAAE,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAyB,EACzB,QAAwC,EACxC,eAAkC;IAElC,IACE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACvD,EACD,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,kBAAkB,CAAC;IACnD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAA8C,EAC9C,gBAAsD;IAEtD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACrD,MAAM,QAAQ,GAAG,mCAAmC,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,kBAAkB,CAAC;IACnD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,QAA2B,EAC3B,MAAiD;IAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,gBAAgB,EAAE,CAAC;IAErD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE,CAAC;QACnC,IAAI,MAAM,MAAM,CAAC,WAAW,CAAC;YAAE,SAAS;QACxC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACpD,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;QACvB,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAA2B;IAE3B,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;QACvB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAyC,EACzC,GAAqC;IAErC,MAAM,MAAM,GAAG,QAAQ;SACpB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC9B,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE3D,MAAM,QAAQ,GAAG,MAAM,CACrB,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CACtD,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,gBAAgB,EAAE,CAAC;IAErD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACpD,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,QAAmD,EACnD,WAAmB;IAEnB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,aAAa,EAAE,CAAC;IAElD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CACjD,CAAC;IACF,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACpD,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;QACvB,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAM3B;IACC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CACR,sBAAsB,KAAK,CAAC,QAAQ,CAAC,OAAO;aACzC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAwC;IACtE,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,MAAM;QACvB,aAAa,EAAE,SAAS,CAAC,MAAM,CAC7B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CACnD,CAAC,MAAM;QACR,eAAe,EAAE,SAAS,CAAC,MAAM,CAC/B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CACrD,CAAC,MAAM;QACR,eAAe,EAAE,SAAS,CAAC,MAAM,CAC/B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CACrD,CAAC,MAAM;QACR,UAAU,EAAE,SAAS,CAAC,MAAM,CAC1B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,KAAK,YAAY,CACrD,CAAC,MAAM;QACR,mBAAmB,EAAE,SAAS,CAAC,MAAM,CACnC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAClD,CAAC,MAAM;QACR,UAAU,EAAE,SAAS,CAAC,MAAM,CAC1B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,CACxD,CAAC,MAAM;QACR,aAAa,EAAE,SAAS,CAAC,MAAM,CAC7B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,CAC3D,CAAC,MAAM;QACR,eAAe,EAAE,SAAS,CAAC,MAAM,CAC/B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CACrD,CAAC,MAAM;KACT,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,SAAiB,EACjB,KAAe;IAEf,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,SAAS,CAAC;IAEtD,OAAO,IAAI,CAAC,KAAK,CACf,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,SAAiB;IAC9C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,sBAAsB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxE,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,aAAa,SAAS,kBAAkB,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,SAAiB;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,UAAU,KAAK,CAAC,WAAmB;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IACE,KAAK,CAAC,IAAI,KAAK,cAAc;gBAC7B,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,QAAQ;gBACvB,KAAK,CAAC,IAAI,KAAK,UAAU;gBACzB,KAAK,CAAC,IAAI,KAAK,MAAM,EACrB,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,SAAiB,EACjB,IAAY,EACZ,WAAgC;IAEhC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAClE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAe,EACf,MAA6B;IAE7B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc;IAC/C,MAAM,WAAW,GAAG;QAClB,GAAG,MAAM,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QACxE,GAAG,MAAM,CAAC,QAAQ,CAAC,mCAAmC,CAAC;KACxD,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAkC,CAAC;IACvC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAE/B,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,WAAW,GAAG,KAAK,CAAC;gBACpB,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjC,YAAY,GAAG,KAAK,CAAC;gBACrB,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,IAAI,CAAC;YAChB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,GAAG,KAAK,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,GAAG,IAAI,CAAC;gBACf,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,WAAW,GAAG,IAAI,CAAC;YACnB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,YAAY,GAAG,IAAI,CAAC;YACpB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjD,KAAK,GAAG,IAAI,CAAC;YACb,OAAO,IAAI,IAAI,CAAC;YAChB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjD,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO,GAAG,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QAED,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB,EAAE,IAAY;IACzD,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAE7D,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;AAC5D,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAY,EACZ,MAA6B;IAE7B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,aAAa,CACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAC/C,CAAC;IAEF,OAAO,CACL,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC;QAChC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,mBAAmB;QACzC,IAAI,CAAC,UAAU,CAAC,GAAG,iBAAiB,GAAG,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,SAAiB;IAC3D,OAAO,IAAI,MAAM,CACf,uCAAuC,YAAY,CAAC,SAAS,CAAC,KAAK,EACnE,GAAG,CACJ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc,EAAE,SAAiB;IAClE,OAAO,CACL,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC;QAC7C,yCAAyC,CAAC,MAAM,EAAE,SAAS,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,MAAc,EACd,SAAiB;IAEjB,MAAM,eAAe,GAAG,SAAS,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;IACjE,MAAM,mBAAmB,GAAG;QAC1B,mDAAmD,eAAe,EAAE;QACpE,uCAAuC,eAAe,EAAE;QACxD,sBAAsB,eAAe,EAAE;KACxC,CAAC;IAEF,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,yCAAyC,CAChD,MAAc,EACd,SAAiB;IAEjB,MAAM,UAAU,GAAG,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAE9B,OAAO,IAAI,MAAM,CACf,qCAAqC,YAAY,CAC/C,UAAU,CACX,wGAAwG,CAC1G,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,+BAA+B,CACtC,SAAiB;IAEjB,IAAI,SAAS,KAAK,WAAW;QAAE,OAAO,UAAU,CAAC;IACjD,IAAI,SAAS,KAAK,qBAAqB;QAAE,OAAO,oBAAoB,CAAC;IACrE,IAAI,SAAS,KAAK,iBAAiB;QAAE,OAAO,gBAAgB,CAAC;IAC7D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAqC;IAC/D,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACjD,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IACzD,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,UAAU,CAAC;AAChF,CAAC;AAED,SAAS,eAAe,CAAC,QAA+B;IACtD,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;IAC3E,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,UAAU,CAAC;AAC1E,CAAC;AAED,SAAS,MAAM,CAAC,MAAyB;IACvC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,KAAK,CAAC,IAAgB;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CACxD,CAAC;IAEF,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACX,GAAG;SACA,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;SAC5D,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,EAAE,CACb;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beignet/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.25",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI for creating and maintaining Beignet apps.",
|
|
6
6
|
"main": "./dist/lib.js",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"typescript": "^5.3.0"
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@beignet/core": "^0.0.
|
|
71
|
+
"@beignet/core": "^0.0.25",
|
|
72
72
|
"@clack/prompts": "^1.5.1",
|
|
73
73
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
74
74
|
"@stricli/core": "^1.2.7",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: app-structure
|
|
3
|
-
description: "Maintain Beignet app structure with @beignet/cli: create starter output, make generators, beignet.config paths, routes inspection, lint dependency boundaries, doctor drift checks, MCP tools, generated AGENTS.md guidance, and generated-app validation. Use when scaffolding, generating, fixing, or reviewing a Beignet app's structure."
|
|
3
|
+
description: "Maintain Beignet app structure with @beignet/cli: create starter output, make generators, full-slice feature recipes, db schema generation, beignet.config paths, routes inspection, lint dependency boundaries, doctor drift checks and fixes, MCP tools, generated AGENTS.md guidance, Intent package skills, and generated-app validation. Use when scaffolding, generating, fixing, or reviewing a Beignet app's structure."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Beignet CLI App Structure
|
|
@@ -28,16 +28,30 @@ Use:
|
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
30
|
beignet make feature projects
|
|
31
|
+
beignet make feature projects --recipe full-slice
|
|
31
32
|
beignet make resource projects/project --auth --tenant
|
|
33
|
+
beignet make event posts/published
|
|
34
|
+
beignet make listener posts/enqueue-published-email --event posts/published
|
|
32
35
|
beignet make job billing/sync
|
|
33
36
|
beignet make schedule billing/nightly --cron "0 2 * * *"
|
|
34
37
|
beignet make task admin/backfill
|
|
38
|
+
beignet make seed demo/users
|
|
35
39
|
beignet make upload issues/attachment
|
|
36
40
|
```
|
|
37
41
|
|
|
38
42
|
Generators place files under the owning feature, update central registries
|
|
39
43
|
when possible, and keep `doctor` clean.
|
|
40
44
|
|
|
45
|
+
Use the `full-slice` recipe when you need a richer reference feature with
|
|
46
|
+
policy, client helpers, workflow artifacts, events, listener registration,
|
|
47
|
+
jobs, schedules, notifications, uploads, seeds, and outbox wiring. After
|
|
48
|
+
changing `infra/db/schema/`, run the app's db lifecycle commands:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
beignet db generate
|
|
52
|
+
beignet db migrate
|
|
53
|
+
```
|
|
54
|
+
|
|
41
55
|
## Explicit Registration
|
|
42
56
|
|
|
43
57
|
Hand-written files do not run until registered:
|
|
@@ -46,10 +60,12 @@ Hand-written files do not run until registered:
|
|
|
46
60
|
- schedules -> `server/schedules.ts`
|
|
47
61
|
- tasks -> `server/tasks.ts`
|
|
48
62
|
- outbox events/jobs -> `server/outbox.ts`
|
|
49
|
-
- listeners ->
|
|
63
|
+
- listeners -> `registerListeners(...)` in provider or infra wiring
|
|
64
|
+
- seeds -> the app-owned seed entrypoint, usually `infra/db/seed.ts`
|
|
50
65
|
|
|
51
66
|
Run `beignet doctor --strict` after hand edits. Use `beignet doctor --fix` for
|
|
52
|
-
low-risk registry repair; listener
|
|
67
|
+
low-risk route-group, schedule, task, and outbox registry repair; listener
|
|
68
|
+
drift remains manual.
|
|
53
69
|
|
|
54
70
|
## Path Config
|
|
55
71
|
|
|
@@ -91,6 +107,7 @@ root at `src/client/index.ts`.
|
|
|
91
107
|
- provider env drift
|
|
92
108
|
- route-owned error catalog drift
|
|
93
109
|
- misplaced workflow artifacts
|
|
110
|
+
- unregistered schedules, tasks, outbox events/jobs, and listeners
|
|
94
111
|
|
|
95
112
|
Fix structure or config instead of suppressing diagnostics.
|
|
96
113
|
|
|
@@ -110,7 +127,8 @@ Generated apps register:
|
|
|
110
127
|
```
|
|
111
128
|
|
|
112
129
|
The MCP server exposes `routes`, `doctor`, `doctor_fix`, `lint`, and `make`.
|
|
113
|
-
|
|
130
|
+
`doctor`, `lint`, and their JSON output match the CLI's `--json` shape.
|
|
131
|
+
Run MCP clients from the app root so the local CLI version is used.
|
|
114
132
|
|
|
115
133
|
## Validation Loop
|
|
116
134
|
|
package/src/config.ts
CHANGED
|
@@ -35,12 +35,31 @@ export type BeignetPaths = {
|
|
|
35
35
|
tests: string;
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Configurable database table names used by CLI doctor checks for Beignet's
|
|
40
|
+
* operational provider ports.
|
|
41
|
+
*/
|
|
42
|
+
export type BeignetDatabaseTables = {
|
|
43
|
+
audit: string;
|
|
44
|
+
idempotency: string;
|
|
45
|
+
outbox: string;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Database-related Beignet CLI config.
|
|
50
|
+
*/
|
|
51
|
+
export type BeignetDatabaseConfig = {
|
|
52
|
+
tables?: Partial<BeignetDatabaseTables>;
|
|
53
|
+
schemaSources?: string[];
|
|
54
|
+
};
|
|
55
|
+
|
|
38
56
|
/**
|
|
39
57
|
* User-authored Beignet CLI config.
|
|
40
58
|
*/
|
|
41
59
|
export type BeignetConfig = {
|
|
42
60
|
framework?: BeignetFramework;
|
|
43
61
|
paths?: Partial<BeignetPaths>;
|
|
62
|
+
database?: BeignetDatabaseConfig;
|
|
44
63
|
};
|
|
45
64
|
|
|
46
65
|
/**
|
|
@@ -49,6 +68,10 @@ export type BeignetConfig = {
|
|
|
49
68
|
export type ResolvedBeignetConfig = {
|
|
50
69
|
framework: BeignetFramework;
|
|
51
70
|
paths: BeignetPaths;
|
|
71
|
+
database: {
|
|
72
|
+
tables: BeignetDatabaseTables;
|
|
73
|
+
schemaSources: string[];
|
|
74
|
+
};
|
|
52
75
|
configFile?: string;
|
|
53
76
|
};
|
|
54
77
|
|
|
@@ -79,6 +102,14 @@ export const defaultBeignetConfig: ResolvedBeignetConfig = {
|
|
|
79
102
|
tasksBuilder: "lib/tasks.ts",
|
|
80
103
|
tests: "tests",
|
|
81
104
|
},
|
|
105
|
+
database: {
|
|
106
|
+
tables: {
|
|
107
|
+
audit: "audit_log",
|
|
108
|
+
idempotency: "idempotency_records",
|
|
109
|
+
outbox: "outbox_messages",
|
|
110
|
+
},
|
|
111
|
+
schemaSources: [],
|
|
112
|
+
},
|
|
82
113
|
};
|
|
83
114
|
|
|
84
115
|
/**
|
|
@@ -99,10 +130,20 @@ export function resolveConfig(
|
|
|
99
130
|
...defaultBeignetConfig.paths,
|
|
100
131
|
...config.paths,
|
|
101
132
|
};
|
|
133
|
+
const database = {
|
|
134
|
+
tables: {
|
|
135
|
+
...defaultBeignetConfig.database.tables,
|
|
136
|
+
...config.database?.tables,
|
|
137
|
+
},
|
|
138
|
+
schemaSources:
|
|
139
|
+
config.database?.schemaSources ??
|
|
140
|
+
defaultBeignetConfig.database.schemaSources,
|
|
141
|
+
};
|
|
102
142
|
|
|
103
143
|
return {
|
|
104
144
|
framework: config.framework ?? defaultBeignetConfig.framework,
|
|
105
145
|
paths: normalizeConfigPaths(paths),
|
|
146
|
+
database: normalizeDatabaseConfig(database),
|
|
106
147
|
configFile,
|
|
107
148
|
};
|
|
108
149
|
}
|
|
@@ -247,6 +288,26 @@ function assertConfigObject(
|
|
|
247
288
|
throw new Error(`${configFile} paths must be an object.`);
|
|
248
289
|
}
|
|
249
290
|
|
|
291
|
+
if (config.database !== undefined && !isRecord(config.database)) {
|
|
292
|
+
throw new Error(`${configFile} database must be an object.`);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
if (
|
|
296
|
+
config.database !== undefined &&
|
|
297
|
+
config.database.tables !== undefined &&
|
|
298
|
+
!isRecord(config.database.tables)
|
|
299
|
+
) {
|
|
300
|
+
throw new Error(`${configFile} database.tables must be an object.`);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
if (
|
|
304
|
+
config.database !== undefined &&
|
|
305
|
+
config.database.schemaSources !== undefined &&
|
|
306
|
+
!Array.isArray(config.database.schemaSources)
|
|
307
|
+
) {
|
|
308
|
+
throw new Error(`${configFile} database.schemaSources must be an array.`);
|
|
309
|
+
}
|
|
310
|
+
|
|
250
311
|
return config;
|
|
251
312
|
}
|
|
252
313
|
|
|
@@ -280,6 +341,44 @@ function normalizeConfigPath(key: string, value: string): string {
|
|
|
280
341
|
return directoryPath(normalized);
|
|
281
342
|
}
|
|
282
343
|
|
|
344
|
+
function normalizeDatabaseConfig(database: {
|
|
345
|
+
tables: BeignetDatabaseTables;
|
|
346
|
+
schemaSources: string[];
|
|
347
|
+
}): {
|
|
348
|
+
tables: BeignetDatabaseTables;
|
|
349
|
+
schemaSources: string[];
|
|
350
|
+
} {
|
|
351
|
+
return {
|
|
352
|
+
tables: Object.fromEntries(
|
|
353
|
+
Object.entries(database.tables).map(([key, value]) => [
|
|
354
|
+
key,
|
|
355
|
+
normalizeDatabaseTableName(key, value),
|
|
356
|
+
]),
|
|
357
|
+
) as BeignetDatabaseTables,
|
|
358
|
+
schemaSources: database.schemaSources.map((source, index) =>
|
|
359
|
+
normalizeDatabaseSchemaSource(index, source),
|
|
360
|
+
),
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
function normalizeDatabaseTableName(key: string, value: string): string {
|
|
365
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
366
|
+
throw new Error(`Beignet config database table "${key}" must be a string.`);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
return value.trim();
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
function normalizeDatabaseSchemaSource(index: number, value: string): string {
|
|
373
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
374
|
+
throw new Error(
|
|
375
|
+
`Beignet config database.schemaSources[${index}] must be a string.`,
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
return value.trim();
|
|
380
|
+
}
|
|
381
|
+
|
|
283
382
|
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
284
383
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
285
384
|
}
|
package/src/db.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import { access, readFile } from "node:fs/promises";
|
|
2
|
+
import { access, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -33,6 +33,31 @@ export type RunDatabaseCommandResult = {
|
|
|
33
33
|
exitCode: number;
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
+
export type DatabaseSchemaDialect = "sqlite" | "postgres" | "mysql";
|
|
37
|
+
export type DatabaseSchemaTable = "audit" | "idempotency" | "outbox";
|
|
38
|
+
|
|
39
|
+
export type GenerateDatabaseSchemaOptions = {
|
|
40
|
+
cwd?: string;
|
|
41
|
+
dialect?: DatabaseSchemaDialect;
|
|
42
|
+
tables?: readonly DatabaseSchemaTable[];
|
|
43
|
+
output?: string;
|
|
44
|
+
dryRun?: boolean;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export type GenerateDatabaseSchemaResult = {
|
|
48
|
+
schemaVersion: 1;
|
|
49
|
+
command: "schema:generate";
|
|
50
|
+
cwd: string;
|
|
51
|
+
dialect: DatabaseSchemaDialect;
|
|
52
|
+
tables: DatabaseSchemaTable[];
|
|
53
|
+
output: string;
|
|
54
|
+
indexFile: string;
|
|
55
|
+
createdFiles: string[];
|
|
56
|
+
updatedFiles: string[];
|
|
57
|
+
skippedFiles: string[];
|
|
58
|
+
dryRun: boolean;
|
|
59
|
+
};
|
|
60
|
+
|
|
36
61
|
type PackageJson = {
|
|
37
62
|
scripts?: Record<string, string>;
|
|
38
63
|
};
|
|
@@ -44,6 +69,12 @@ const databaseScripts: Record<DatabaseCommand, string> = {
|
|
|
44
69
|
reset: "db:reset",
|
|
45
70
|
};
|
|
46
71
|
|
|
72
|
+
const allDatabaseSchemaTables = [
|
|
73
|
+
"audit",
|
|
74
|
+
"idempotency",
|
|
75
|
+
"outbox",
|
|
76
|
+
] as const satisfies readonly DatabaseSchemaTable[];
|
|
77
|
+
|
|
47
78
|
/**
|
|
48
79
|
* Run an app-owned database lifecycle script.
|
|
49
80
|
*
|
|
@@ -100,6 +131,67 @@ export async function runDatabaseCommand(
|
|
|
100
131
|
};
|
|
101
132
|
}
|
|
102
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Generate the app-owned Drizzle schema entrypoint for Beignet provider tables.
|
|
136
|
+
*
|
|
137
|
+
* This only writes schema source. The app still owns SQL migration generation
|
|
138
|
+
* through `beignet db generate` and migration application through
|
|
139
|
+
* `beignet db migrate`.
|
|
140
|
+
*/
|
|
141
|
+
export async function generateDatabaseSchema(
|
|
142
|
+
options: GenerateDatabaseSchemaOptions = {},
|
|
143
|
+
): Promise<GenerateDatabaseSchemaResult> {
|
|
144
|
+
const cwd = path.resolve(options.cwd ?? process.cwd());
|
|
145
|
+
const dialect = await resolveDatabaseSchemaDialect(cwd, options.dialect);
|
|
146
|
+
const tables = uniqueSchemaTables(options.tables ?? allDatabaseSchemaTables);
|
|
147
|
+
const output = normalizeAppRelativePath(
|
|
148
|
+
cwd,
|
|
149
|
+
options.output ?? "infra/db/schema/beignet.ts",
|
|
150
|
+
"schema output",
|
|
151
|
+
);
|
|
152
|
+
const indexFile = normalizeAppRelativePath(
|
|
153
|
+
cwd,
|
|
154
|
+
path.join(path.dirname(output), "index.ts"),
|
|
155
|
+
"schema index",
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
if (output === indexFile) {
|
|
159
|
+
throw new Error("Schema output must not be the schema index file.");
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const result: GenerateDatabaseSchemaResult = {
|
|
163
|
+
schemaVersion: 1,
|
|
164
|
+
command: "schema:generate",
|
|
165
|
+
cwd,
|
|
166
|
+
dialect,
|
|
167
|
+
tables,
|
|
168
|
+
output,
|
|
169
|
+
indexFile,
|
|
170
|
+
createdFiles: [],
|
|
171
|
+
updatedFiles: [],
|
|
172
|
+
skippedFiles: [],
|
|
173
|
+
dryRun: Boolean(options.dryRun),
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const schemaStatus = await writeProjectFile(
|
|
177
|
+
cwd,
|
|
178
|
+
output,
|
|
179
|
+
renderDatabaseSchema(dialect, tables),
|
|
180
|
+
result.dryRun,
|
|
181
|
+
);
|
|
182
|
+
recordFileStatus(result, output, schemaStatus);
|
|
183
|
+
|
|
184
|
+
const indexStatus = await updateSchemaIndex(
|
|
185
|
+
cwd,
|
|
186
|
+
indexFile,
|
|
187
|
+
output,
|
|
188
|
+
result.dryRun,
|
|
189
|
+
);
|
|
190
|
+
recordFileStatus(result, indexFile, indexStatus);
|
|
191
|
+
|
|
192
|
+
return result;
|
|
193
|
+
}
|
|
194
|
+
|
|
103
195
|
async function assertDatabaseCommandPreflight(
|
|
104
196
|
cwd: string,
|
|
105
197
|
command: DatabaseCommand,
|
|
@@ -135,6 +227,229 @@ async function assertDatabaseCommandPreflight(
|
|
|
135
227
|
}
|
|
136
228
|
}
|
|
137
229
|
|
|
230
|
+
async function resolveDatabaseSchemaDialect(
|
|
231
|
+
cwd: string,
|
|
232
|
+
explicitDialect: DatabaseSchemaDialect | undefined,
|
|
233
|
+
): Promise<DatabaseSchemaDialect> {
|
|
234
|
+
if (explicitDialect !== undefined) return explicitDialect;
|
|
235
|
+
|
|
236
|
+
const providerDialect = await inferDialectFromProviders(cwd);
|
|
237
|
+
if (providerDialect !== undefined) return providerDialect;
|
|
238
|
+
|
|
239
|
+
const drizzleDialect = await inferDialectFromDrizzleConfig(cwd);
|
|
240
|
+
if (drizzleDialect !== undefined) return drizzleDialect;
|
|
241
|
+
|
|
242
|
+
throw new Error(
|
|
243
|
+
"Could not infer the Drizzle dialect. Pass --dialect sqlite, --dialect postgres, or --dialect mysql.",
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
async function inferDialectFromProviders(
|
|
248
|
+
cwd: string,
|
|
249
|
+
): Promise<DatabaseSchemaDialect | undefined> {
|
|
250
|
+
const sources = await Promise.all(
|
|
251
|
+
["server/providers.ts", "server/index.ts"].map(async (file) => {
|
|
252
|
+
try {
|
|
253
|
+
return await readFile(path.join(cwd, file), "utf8");
|
|
254
|
+
} catch (error) {
|
|
255
|
+
if ((error as NodeJS.ErrnoException).code === "ENOENT") return "";
|
|
256
|
+
throw error;
|
|
257
|
+
}
|
|
258
|
+
}),
|
|
259
|
+
);
|
|
260
|
+
const source = sources.join("\n");
|
|
261
|
+
const matches = new Set<DatabaseSchemaDialect>();
|
|
262
|
+
|
|
263
|
+
if (
|
|
264
|
+
/\b(?:drizzleSqliteProvider|createDrizzleSqliteProvider)\b/.test(source)
|
|
265
|
+
) {
|
|
266
|
+
matches.add("sqlite");
|
|
267
|
+
}
|
|
268
|
+
if (
|
|
269
|
+
/\b(?:drizzlePostgresProvider|createDrizzlePostgresProvider)\b/.test(source)
|
|
270
|
+
) {
|
|
271
|
+
matches.add("postgres");
|
|
272
|
+
}
|
|
273
|
+
if (/\b(?:drizzleMysqlProvider|createDrizzleMysqlProvider)\b/.test(source)) {
|
|
274
|
+
matches.add("mysql");
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return singleInferredDialect(matches, "registered Drizzle providers");
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
async function inferDialectFromDrizzleConfig(
|
|
281
|
+
cwd: string,
|
|
282
|
+
): Promise<DatabaseSchemaDialect | undefined> {
|
|
283
|
+
for (const file of [
|
|
284
|
+
"drizzle.config.ts",
|
|
285
|
+
"drizzle.config.mts",
|
|
286
|
+
"drizzle.config.js",
|
|
287
|
+
"drizzle.config.mjs",
|
|
288
|
+
]) {
|
|
289
|
+
let source: string;
|
|
290
|
+
try {
|
|
291
|
+
source = await readFile(path.join(cwd, file), "utf8");
|
|
292
|
+
} catch (error) {
|
|
293
|
+
if ((error as NodeJS.ErrnoException).code === "ENOENT") continue;
|
|
294
|
+
throw error;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
const matches = new Set<DatabaseSchemaDialect>();
|
|
298
|
+
if (/\bdialect\s*:\s*["'](?:sqlite|turso)["']/.test(source)) {
|
|
299
|
+
matches.add("sqlite");
|
|
300
|
+
}
|
|
301
|
+
if (/\bdialect\s*:\s*["']postgresql["']/.test(source)) {
|
|
302
|
+
matches.add("postgres");
|
|
303
|
+
}
|
|
304
|
+
if (/\bdialect\s*:\s*["']mysql["']/.test(source)) {
|
|
305
|
+
matches.add("mysql");
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
const inferred = singleInferredDialect(matches, file);
|
|
309
|
+
if (inferred !== undefined) return inferred;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
return undefined;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function singleInferredDialect(
|
|
316
|
+
matches: Set<DatabaseSchemaDialect>,
|
|
317
|
+
source: string,
|
|
318
|
+
): DatabaseSchemaDialect | undefined {
|
|
319
|
+
if (matches.size === 0) return undefined;
|
|
320
|
+
if (matches.size === 1) return [...matches][0];
|
|
321
|
+
|
|
322
|
+
throw new Error(
|
|
323
|
+
`Could not infer a single Drizzle dialect from ${source}. Pass --dialect sqlite, --dialect postgres, or --dialect mysql.`,
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
function normalizeAppRelativePath(
|
|
328
|
+
cwd: string,
|
|
329
|
+
input: string,
|
|
330
|
+
label: string,
|
|
331
|
+
): string {
|
|
332
|
+
const absolute = path.resolve(cwd, input);
|
|
333
|
+
const relative = path.relative(cwd, absolute);
|
|
334
|
+
if (relative.startsWith("..") || path.isAbsolute(relative)) {
|
|
335
|
+
throw new Error(`The ${label} path must be inside the app directory.`);
|
|
336
|
+
}
|
|
337
|
+
return relative.split(path.sep).join("/");
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
function renderDatabaseSchema(
|
|
341
|
+
dialect: DatabaseSchemaDialect,
|
|
342
|
+
tables: readonly DatabaseSchemaTable[],
|
|
343
|
+
): string {
|
|
344
|
+
const selectedTables = tables.map((table) => schemaTableDefinitions[table]);
|
|
345
|
+
const tableNames = selectedTables.map((table) => table.tableName);
|
|
346
|
+
const exportNames = selectedTables.map((table) => table.exportName).sort();
|
|
347
|
+
|
|
348
|
+
return `// Generated by beignet db schema generate.
|
|
349
|
+
// Required tables: ${tableNames.join(", ")}.
|
|
350
|
+
// Re-run this command after upgrading @beignet/provider-db-drizzle.
|
|
351
|
+
|
|
352
|
+
export {
|
|
353
|
+
${exportNames.map((name) => ` ${name},`).join("\n")}
|
|
354
|
+
} from "@beignet/provider-db-drizzle/${dialect}/schema";
|
|
355
|
+
`;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
const schemaTableDefinitions: Record<
|
|
359
|
+
DatabaseSchemaTable,
|
|
360
|
+
{ exportName: string; tableName: string }
|
|
361
|
+
> = {
|
|
362
|
+
audit: { exportName: "auditLog", tableName: "audit_log" },
|
|
363
|
+
idempotency: {
|
|
364
|
+
exportName: "idempotencyRecords",
|
|
365
|
+
tableName: "idempotency_records",
|
|
366
|
+
},
|
|
367
|
+
outbox: { exportName: "outboxMessages", tableName: "outbox_messages" },
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
function uniqueSchemaTables(
|
|
371
|
+
tables: readonly DatabaseSchemaTable[],
|
|
372
|
+
): DatabaseSchemaTable[] {
|
|
373
|
+
const unique = allDatabaseSchemaTables.filter((table) =>
|
|
374
|
+
tables.includes(table),
|
|
375
|
+
);
|
|
376
|
+
if (unique.length === 0) {
|
|
377
|
+
throw new Error("At least one schema table must be selected.");
|
|
378
|
+
}
|
|
379
|
+
return unique;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
type FileWriteStatus = "created" | "updated" | "unchanged";
|
|
383
|
+
|
|
384
|
+
async function writeProjectFile(
|
|
385
|
+
cwd: string,
|
|
386
|
+
relativePath: string,
|
|
387
|
+
contents: string,
|
|
388
|
+
dryRun: boolean,
|
|
389
|
+
): Promise<FileWriteStatus> {
|
|
390
|
+
const absolute = path.join(cwd, relativePath);
|
|
391
|
+
const existing = await readTextIfExists(absolute);
|
|
392
|
+
if (existing === contents) return "unchanged";
|
|
393
|
+
|
|
394
|
+
if (!dryRun) {
|
|
395
|
+
await mkdir(path.dirname(absolute), { recursive: true });
|
|
396
|
+
await writeFile(absolute, contents);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
return existing === undefined ? "created" : "updated";
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
async function updateSchemaIndex(
|
|
403
|
+
cwd: string,
|
|
404
|
+
indexFile: string,
|
|
405
|
+
output: string,
|
|
406
|
+
dryRun: boolean,
|
|
407
|
+
): Promise<FileWriteStatus> {
|
|
408
|
+
const indexAbsolute = path.join(cwd, indexFile);
|
|
409
|
+
const existing = await readTextIfExists(indexAbsolute);
|
|
410
|
+
const exportLine = `export * from "./${schemaIndexSpecifier(indexFile, output)}";`;
|
|
411
|
+
const contents =
|
|
412
|
+
existing === undefined
|
|
413
|
+
? `${exportLine}\n`
|
|
414
|
+
: existing.includes(exportLine)
|
|
415
|
+
? existing
|
|
416
|
+
: `${existing.trimEnd()}\n${exportLine}\n`;
|
|
417
|
+
|
|
418
|
+
return writeProjectFile(cwd, indexFile, contents, dryRun);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
function schemaIndexSpecifier(indexFile: string, output: string): string {
|
|
422
|
+
const relative = path.relative(path.dirname(indexFile), output);
|
|
423
|
+
return stripTsExtension(relative).split(path.sep).join("/");
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
function stripTsExtension(file: string): string {
|
|
427
|
+
return file.replace(/\.(?:ts|mts|cts)$/, "");
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
async function readTextIfExists(file: string): Promise<string | undefined> {
|
|
431
|
+
try {
|
|
432
|
+
return await readFile(file, "utf8");
|
|
433
|
+
} catch (error) {
|
|
434
|
+
if ((error as NodeJS.ErrnoException).code === "ENOENT") return undefined;
|
|
435
|
+
throw error;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
function recordFileStatus(
|
|
440
|
+
result: GenerateDatabaseSchemaResult,
|
|
441
|
+
file: string,
|
|
442
|
+
status: FileWriteStatus,
|
|
443
|
+
): void {
|
|
444
|
+
if (status === "created") {
|
|
445
|
+
result.createdFiles.push(file);
|
|
446
|
+
} else if (status === "updated") {
|
|
447
|
+
result.updatedFiles.push(file);
|
|
448
|
+
} else {
|
|
449
|
+
result.skippedFiles.push(file);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
138
453
|
function hasExplicitDrizzleConfigFlag(scriptCommand: string): boolean {
|
|
139
454
|
return /(?:^|\s)--config(?:=|\s)/.test(scriptCommand);
|
|
140
455
|
}
|