@tscomfy/codegen 0.0.0-stage → 0.1.0
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/LICENSE +21 -0
- package/README.md +25 -2
- package/dist/doc.d.ts +78 -0
- package/dist/doc.d.ts.map +1 -0
- package/dist/doc.js +335 -0
- package/dist/doc.js.map +1 -0
- package/dist/emit-schema-module.d.ts +11 -0
- package/dist/emit-schema-module.d.ts.map +1 -0
- package/dist/emit-schema-module.js +39 -0
- package/dist/emit-schema-module.js.map +1 -0
- package/dist/emit-types.d.ts +15 -0
- package/dist/emit-types.d.ts.map +1 -0
- package/dist/emit-types.js +718 -0
- package/dist/emit-types.js.map +1 -0
- package/dist/export-name.d.ts +16 -0
- package/dist/export-name.d.ts.map +1 -0
- package/dist/export-name.js +43 -0
- package/dist/export-name.js.map +1 -0
- package/dist/expressions.d.ts +51 -0
- package/dist/expressions.d.ts.map +1 -0
- package/dist/expressions.js +147 -0
- package/dist/expressions.js.map +1 -0
- package/dist/generate.d.ts +35 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +30 -0
- package/dist/generate.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/names.d.ts +36 -0
- package/dist/names.d.ts.map +1 -0
- package/dist/names.js +81 -0
- package/dist/names.js.map +1 -0
- package/dist/rules.d.ts +23 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +82 -0
- package/dist/rules.js.map +1 -0
- package/dist/transpile.d.ts +40 -0
- package/dist/transpile.d.ts.map +1 -0
- package/dist/transpile.js +531 -0
- package/dist/transpile.js.map +1 -0
- package/dist/typing.d.ts +18 -0
- package/dist/typing.d.ts.map +1 -0
- package/dist/typing.js +387 -0
- package/dist/typing.js.map +1 -0
- package/dist/values.d.ts +15 -0
- package/dist/values.d.ts.map +1 -0
- package/dist/values.js +22 -0
- package/dist/values.js.map +1 -0
- package/package.json +46 -4
- package/src/doc.ts +390 -0
- package/src/emit-schema-module.ts +47 -0
- package/src/emit-types.ts +880 -0
- package/src/export-name.ts +51 -0
- package/src/expressions.ts +201 -0
- package/src/generate.ts +59 -0
- package/src/index.ts +22 -0
- package/src/names.ts +89 -0
- package/src/rules.ts +86 -0
- package/src/transpile.ts +639 -0
- package/src/typing.ts +456 -0
- package/src/values.ts +28 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transpile.js","sourceRoot":"","sources":["../src/transpile.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,0FAA0F;AAC1F,iFAAiF;AACjF,EAAE;AACF,+FAA+F;AAC/F,gGAAgG;AAChG,qEAAqE;AAErE,OAAO,EACL,gBAAgB,EAEhB,SAAS,EAIT,WAAW,EAIX,SAAS,GAEV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAY,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EACL,QAAQ,EACR,WAAW,EACX,OAAO,EACP,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,OAAO,EAEP,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,MAAM,EAAkB,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAuBhE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,QAAkB,EAAE,OAAyB;IACrE,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;IACxE,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAsD;IAEtD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;QAC3B,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC;KAC3B,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC;IACjG,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;QACxC,OAAO,yCAAyC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACjF,CAAC;IACD,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,0DAA0D;IAC1D,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC;QAClC,OAAO,qBAAqB,IAAI,oBAAoB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;IACpF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAWD,MAAM,UAAU;IACL,SAAS,CAAW;IACpB,QAAQ,CAAmB;IAC3B,YAAY,GAAiB,EAAE,CAAC;IAChC,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;IACjC,WAAW,GAAG,IAAI,GAAG,EAAe,CAAC;IACrC,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC5C,MAAM,CAAe;IAC9B,MAAM,GAAG,KAAK,CAAC;IACf,QAAQ,GAAG,KAAK,CAAC;IACjB,OAAO,GAAW,KAAK,CAAC;IAExB,YAAY,QAAkB,EAAE,OAAyB;QACvD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,uBAAuB,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,GAAG;QACD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3F,gEAAgE;QAChE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,sFAAsF;QACtF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM,OAAO,GACX,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;gBAC5F,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QACD,0FAA0F;QAC1F,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC3E,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC7C,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,MAAM,GACV,IAAI,CAAC,GAAG,IAAI,UAAU,KAAK,SAAS;gBAClC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,KAAK,SAAS;oBAClB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;oBAClC,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC;YACtE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,gBAAgB,CACd,qBAAqB,EACrB,CAAC,IAAI,CAAC,EAAE,CAAC,EACT,QAAQ,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,2BAA2B,MAAM,GAAG,CACvE,CACF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE;gBACvB,IAAI;gBACJ,UAAU;gBACV,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;gBACpF,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,EAAE;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAC1D,gFAAgF;QAChF,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAU,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,SAAS,KAAK,SAAS;gBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5E,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAA2B;QAChC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAClF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,IAAI,KAAK,SAAS;oBAAE,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;;oBACrD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9F,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,KAAK,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtD,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC7B,IAAI,IAAI,KAAK,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,gBAAgB,CACd,oBAAoB,EACpB,CAAC,IAAI,CAAC,EAAE,CAAC,EACT,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,wDAAwD;gBAC5F,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,gDAAgD,CACvF,CACF,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,KAAsB;QAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,sFAAsF;YACtF,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,KAAK,KAAK;gBACjB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACzC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAC1D;gBACH,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,KAAK,KAAK,SAAS;oBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;oBACvE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uFAAuF;IACvF,UAAU,CAAC,IAAU,EAAE,IAAiC;QACtD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACtF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACtF,CAAC;YACD,OAAO,YAAY,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACtD,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;YACvB,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QAChG,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7F,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAChC,yFAAyF;YACzF,uFAAuF;YACvF,IACE,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK;gBAC9B,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;gBACnB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EACpE,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO,YAAY,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,4FAA4F;QAC5F,0EAA0E;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,OAAO;aACrB,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;aAClB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACnD,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,WAAW,EAAE,CAAC;YACvE,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClD,IAAI,OAAO,KAAK,EAAE;oBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,YAAY,CAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,YAAY,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,2FAA2F;QAC3F,wDAAwD;QACxD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,0DAA0D;IAC1D,YAAY,CAAC,IAAe;QAC1B,OAAO,SAAS,CAAC;YACf,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC5E,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,aAAa,CACX,WAAgC,EAChC,MAA+C;QAE/C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,UAAU,GAAU,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,8EAA8E;YAC9E,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC5F,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC3C,8CAA8C;YAC9C,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;IAClE,CAAC;IAED,2CAA2C;IAC3C,MAAM,CAAC,KAAiB,EAAE,UAAgC;QACxD,IAAI,WAAW,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAClB,IAAI,UAAU,EAAE,IAAI,KAAK,cAAc,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC7B,aAAa,CAAC,GAAG,CAAC;oBAChB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;oBAC5C,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CACnD,CAAC;gBACF,0EAA0E;gBAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrE,OAAO,QAAQ,CACb,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAC1B,MAAM,CACP,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,UAAU,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,IAAI,YAAY,CAAC,KAAK,CAAC;gBAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;YAClD,OAAO,QAAQ,CACb,KAAK,CAAC,GAAG,CAAC,CAAC,IAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAC3D,WAAW,CAAC,KAAK,CAAC,CACnB,CAAC;QACJ,CAAC;QACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,UAAU,EAAE,IAAI,KAAK,cAAc,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC/E,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;oBACpC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,QAAQ,CAAC;oBACpD,CAAC,CAAC,SAAS,CAAC;gBACd,uEAAuE;gBACvE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClE,OAAO,SAAS,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,OAAO,GAAG,UAAU,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,OAAO,SAAS,CACd,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CACxC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CACxD,CACF,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,6FAA6F;IAC7F,WAAW,CAAC,IAAU;QACpB,OAAO,SAAS,CACd,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAS,EAAE;YACxD,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACpE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,IAAY;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,kFAAkF;QAClF,IAAI,SAAS,KAAK,SAAS;YACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,EAAU,EAAE,GAAW,EAAE,IAAY;QAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,gBAAgB,CACd,iBAAiB,EACjB,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,EACnB,SAAS,GAAG,YAAY,EAAE,kBAAkB,IAAI,oDAAoD,CACrG,CACF,CAAC;IACJ,CAAC;IAED,iFAAiF;IACjF,MAAM;QACJ,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IAC3E,CAAC;IAED,OAAO,CAAC,UAA0B;QAChC,MAAM,MAAM,GAAG;YACb,kCAAkC,eAAe,GAAG;YACpD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;SAChC,CAAC;QACF,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrC,MAAM,KAAK,GACT,UAAU,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3E,OAAO;YACL,GAAG,WAAW,CAAC,MAAM,CAAC;YACtB,EAAE;YACF,wEAAwE;YACxE,YAAY,UAAU,WAAW,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG;YACrE,EAAE;YACF,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;YACrF,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF;AAED,6FAA6F;AAC7F,SAAS,QAAQ,CAAC,KAA2B;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE;QACP,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACzF,CAAC,CACH,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAC/B,MAAM,MAAM,GAA4C,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC3B,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;oBAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC;qBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9E,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChF,CAAC;YACD,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAS;YACxD,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,KAAK,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC9D,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnB,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE;oBAAE,MAAM;YAC7B,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI;gBAAE,KAAK,MAAM,EAAE,IAAI,SAAS;oBAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gGAAgG;AAChG,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED,mFAAmF;AACnF,MAAM,OAAO;IACF,MAAM,GAAa,EAAE,CAAC;IAE/B,IAAI,CAAC,KAAa;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC;YACxC,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7B,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,IAAI,IAAI,IAAI,EAAE;gBAAE,MAAM;YACtB,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YACjB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACnB,EAAE,GAAG,MAAM,CAAC;QACd,CAAC;IACH,CAAC;IAED,GAAG;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QAC9E,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAChB,KAAK,IAAI,EAAE,GAAG,CAAC,IAAK,CAAC;YACnB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/C,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAAE,QAAQ,GAAG,IAAI,CAAC;YACxF,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAAE,QAAQ,GAAG,KAAK,CAAC;YAC3F,IAAI,QAAQ,KAAK,EAAE;gBAAE,MAAM;YAC3B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpB,EAAE,GAAG,QAAQ,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,uFAAuF;AACvF,SAAS,aAAa,CAAC,KAAe,EAAE,KAAiB;IACvD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3D,MAAM,QAAQ,GAAG,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,OAAO,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,oFAAoF;AACpF,SAAS,MAAM,CAAC,KAAiB;IAC/B,IAAI,WAAW,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,IAAY;IACzC,OAAO,GAAG,IAAI,SAAS,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,MAAM,CAAC,KAAgB;IAC9B,OAAO,CACL,MAAM,CAAC,KAAK,CAAC;QACb,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,MAAM,CAAC,KAAK,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,IAAY,EAAE,QAAgB;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,KAAK;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACjE,CAAC"}
|
package/dist/typing.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type GraphNode, type NodeDef, type NodeId, type Workflow } from "@tscomfy/core";
|
|
2
|
+
/** How a node is written: `typed` as `n.Class(…)`, `raw` as `raw(…)` with its wire keys. */
|
|
3
|
+
export type WriteMode = "typed" | "raw";
|
|
4
|
+
/**
|
|
5
|
+
* Whether the generated types can express a node's inputs, by the rules `emit-types.ts` types
|
|
6
|
+
* them with. Returns why not, or `undefined`.
|
|
7
|
+
*/
|
|
8
|
+
export declare class Typing {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(workflow: Workflow, mode: (id: NodeId) => WriteMode | undefined);
|
|
11
|
+
/**
|
|
12
|
+
* Why the types can't express a node, or `undefined` when they can. Nodes are asked in
|
|
13
|
+
* dependency order, so their sources are decided; a typed node's MatchType parameters are then
|
|
14
|
+
* resolved at once, so later nodes look them up rather than recurse through long chains.
|
|
15
|
+
*/
|
|
16
|
+
problem(node: GraphNode, definition: NodeDef): string | undefined;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=typing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typing.d.ts","sourceRoot":"","sources":["../src/typing.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,SAAS,EAId,KAAK,OAAO,EACZ,KAAK,MAAM,EAIX,KAAK,QAAQ,EACd,MAAM,eAAe,CAAC;AAIvB,4FAA4F;AAC5F,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;AAExC;;;GAGG;AACH,qBAAa,MAAM;;IAOjB,YAAY,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,EAG1E;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWhE;CAmPF"}
|
package/dist/typing.js
ADDED
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
// Whether the generated types can express a node (docs/plan.md §10), decided by the rules
|
|
2
|
+
// `emit-types.ts` types inputs with (§6.2, §6.3): link atoms per output, legacy combos taking `*`,
|
|
3
|
+
// socketless widgets, MatchType's inferring position and parameter defaults, Autogrow and
|
|
4
|
+
// DynamicGroup bounds, and the forced row field.
|
|
5
|
+
import { isOutputRef, sendsInputValue, } from "@tscomfy/core";
|
|
6
|
+
import { forcedRowField, isObjectMember, isRequired } from "./rules.js";
|
|
7
|
+
import { isList, isPlainObject } from "./values.js";
|
|
8
|
+
/**
|
|
9
|
+
* Whether the generated types can express a node's inputs, by the rules `emit-types.ts` types
|
|
10
|
+
* them with. Returns why not, or `undefined`.
|
|
11
|
+
*/
|
|
12
|
+
export class Typing {
|
|
13
|
+
#workflow;
|
|
14
|
+
/** How each node is written: `undefined` while undecided, or for a node left out. */
|
|
15
|
+
#mode;
|
|
16
|
+
/** Resolved MatchType parameters by node and template. */
|
|
17
|
+
#parameters = new Map();
|
|
18
|
+
constructor(workflow, mode) {
|
|
19
|
+
this.#workflow = workflow;
|
|
20
|
+
this.#mode = mode;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Why the types can't express a node, or `undefined` when they can. Nodes are asked in
|
|
24
|
+
* dependency order, so their sources are decided; a typed node's MatchType parameters are then
|
|
25
|
+
* resolved at once, so later nodes look them up rather than recurse through long chains.
|
|
26
|
+
*/
|
|
27
|
+
problem(node, definition) {
|
|
28
|
+
const scope = { node, definition };
|
|
29
|
+
const problem = this.#inputs(scope, definition.inputs, node.inputs, undefined, node.classType);
|
|
30
|
+
if (problem === undefined) {
|
|
31
|
+
for (const output of definition.outputs) {
|
|
32
|
+
if (output.matchTemplate !== undefined) {
|
|
33
|
+
this.#parameter(node, definition, output.matchTemplate);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return problem;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* An inputs interface: no unknown keys, every required member, every value fitting. `forced`
|
|
41
|
+
* is a DynamicGroup row's extra required field.
|
|
42
|
+
*/
|
|
43
|
+
#inputs(scope, definitions, values, forced, where) {
|
|
44
|
+
const members = definitions.filter(sendsInputValue);
|
|
45
|
+
const names = new Set(members.map((input) => input.name));
|
|
46
|
+
const excess = Object.keys(values).find((key) => !names.has(key));
|
|
47
|
+
if (excess !== undefined)
|
|
48
|
+
return `${where} has no input ${excess}`;
|
|
49
|
+
for (const input of members) {
|
|
50
|
+
const value = Object.hasOwn(values, input.name) ? values[input.name] : undefined;
|
|
51
|
+
if (value === undefined) {
|
|
52
|
+
if (isRequired(input) || input === forced)
|
|
53
|
+
return `${where} needs ${input.name}`;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const problem = this.#input(scope, input, value, `${where} › ${input.name}`);
|
|
57
|
+
if (problem !== undefined)
|
|
58
|
+
return problem;
|
|
59
|
+
}
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
/** One input's value; `slot` is the index within an Autogrow, for its template. */
|
|
63
|
+
#input(scope, input, value, where, slot) {
|
|
64
|
+
switch (input.kind) {
|
|
65
|
+
case "unknown":
|
|
66
|
+
return undefined;
|
|
67
|
+
case "socket":
|
|
68
|
+
return this.#link(value, linkAccepts(input.type), where);
|
|
69
|
+
case "int":
|
|
70
|
+
return typeof value === "number" || typeof value === "bigint"
|
|
71
|
+
? undefined
|
|
72
|
+
: this.#widgetLink(input.type, input.socketless, value, where, "an integer");
|
|
73
|
+
case "float":
|
|
74
|
+
return typeof value === "number"
|
|
75
|
+
? undefined
|
|
76
|
+
: this.#widgetLink(input.type, input.socketless, value, where, "a number");
|
|
77
|
+
case "string":
|
|
78
|
+
return typeof value === "string"
|
|
79
|
+
? undefined
|
|
80
|
+
: this.#widgetLink(input.type, input.socketless, value, where, "a string");
|
|
81
|
+
case "boolean":
|
|
82
|
+
return typeof value === "boolean"
|
|
83
|
+
? undefined
|
|
84
|
+
: this.#widgetLink(input.type, input.socketless, value, where, "a boolean");
|
|
85
|
+
case "value":
|
|
86
|
+
return isOutputRef(value)
|
|
87
|
+
? this.#widgetLink(input.type, input.socketless, value, where, "JSON")
|
|
88
|
+
: undefined;
|
|
89
|
+
case "combo":
|
|
90
|
+
return this.#combo(input, value, where);
|
|
91
|
+
case "matchType":
|
|
92
|
+
return this.#match(scope, input, slot, value, where);
|
|
93
|
+
case "autogrow":
|
|
94
|
+
return this.#autogrow(scope, input, value, where);
|
|
95
|
+
case "dynamicCombo": {
|
|
96
|
+
if (typeof value === "string") {
|
|
97
|
+
const option = input.options.find((each) => each.key === value);
|
|
98
|
+
if (option === undefined)
|
|
99
|
+
return `${where} has no option ${value}`;
|
|
100
|
+
// An option whose inputs may all be left out can be given by its key alone.
|
|
101
|
+
return option.inputs.every((child) => !isRequired(child))
|
|
102
|
+
? undefined
|
|
103
|
+
: `${where} option ${value} needs its inputs`;
|
|
104
|
+
}
|
|
105
|
+
if (!isPlainObject(value) || typeof value["option"] !== "string") {
|
|
106
|
+
return `${where} takes an option`;
|
|
107
|
+
}
|
|
108
|
+
const option = input.options.find((each) => each.key === value["option"]);
|
|
109
|
+
if (option === undefined || option.inputs.length === 0) {
|
|
110
|
+
return `${where} has no option ${value["option"]} with inputs`;
|
|
111
|
+
}
|
|
112
|
+
if (Object.keys(value).some((key) => key !== "option" && key !== "inputs")) {
|
|
113
|
+
return `${where} has keys besides option and inputs`;
|
|
114
|
+
}
|
|
115
|
+
const children = value["inputs"] ?? {};
|
|
116
|
+
if (!isPlainObject(children))
|
|
117
|
+
return `${where} inputs aren't an object`;
|
|
118
|
+
return this.#inputs(scope, option.inputs, children, undefined, where);
|
|
119
|
+
}
|
|
120
|
+
case "dynamicGroup": {
|
|
121
|
+
if (!isList(value))
|
|
122
|
+
return `${where} takes a list of rows`;
|
|
123
|
+
if (value.length < input.min || value.length > input.max) {
|
|
124
|
+
return `${where} has ${String(value.length)} rows, outside ${String(input.min)} to ${String(input.max)}`;
|
|
125
|
+
}
|
|
126
|
+
const forced = forcedRowField(input.fields);
|
|
127
|
+
for (const row of value) {
|
|
128
|
+
if (!isPlainObject(row))
|
|
129
|
+
return `${where} rows are objects`;
|
|
130
|
+
const problem = this.#inputs(scope, input.fields, row, forced, where);
|
|
131
|
+
if (problem !== undefined)
|
|
132
|
+
return problem;
|
|
133
|
+
}
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
#widgetLink(type, socketless, value, where, expected) {
|
|
139
|
+
if (!isOutputRef(value))
|
|
140
|
+
return `${where} takes ${expected}`;
|
|
141
|
+
if (socketless)
|
|
142
|
+
return `${where} has no socket`;
|
|
143
|
+
return this.#link(value, linkAccepts(type), where);
|
|
144
|
+
}
|
|
145
|
+
#link(value, accepts, where) {
|
|
146
|
+
if (!isOutputRef(value))
|
|
147
|
+
return `${where} takes a link`;
|
|
148
|
+
const atom = this.#atom(value.node, value.slot);
|
|
149
|
+
if (atom === undefined)
|
|
150
|
+
return `${where} links to an output that doesn't exist`;
|
|
151
|
+
return accepts(atom) ? undefined : `${where} can't take ${describe(atom)}`;
|
|
152
|
+
}
|
|
153
|
+
#combo(input, value, where) {
|
|
154
|
+
if (isOutputRef(value)) {
|
|
155
|
+
if (input.socketless)
|
|
156
|
+
return `${where} has no socket`;
|
|
157
|
+
// A legacy combo takes `*` links only (§5.2); the COMBO form takes its type or option lists.
|
|
158
|
+
return input.form === "legacy"
|
|
159
|
+
? this.#link(value, (atom) => atom.kind === "star", where)
|
|
160
|
+
: this.#link(value, linkAccepts(input.type), where);
|
|
161
|
+
}
|
|
162
|
+
const open = input.upload || input.remote;
|
|
163
|
+
const fits = (option) => input.options.length === 0
|
|
164
|
+
? typeof option === "string"
|
|
165
|
+
: (open && typeof option === "string") || input.options.some((each) => each === option);
|
|
166
|
+
if (input.multiselect) {
|
|
167
|
+
return isList(value) && value.every(fits)
|
|
168
|
+
? undefined
|
|
169
|
+
: `${where} takes a list of its options`;
|
|
170
|
+
}
|
|
171
|
+
return fits(value) ? undefined : `${where} isn't one of its options`;
|
|
172
|
+
}
|
|
173
|
+
#autogrow(scope, input, value, where) {
|
|
174
|
+
const required = input.template.required ? Math.min(input.min, input.slots.length) : 0;
|
|
175
|
+
if (input.form === "prefix") {
|
|
176
|
+
if (!isList(value))
|
|
177
|
+
return `${where} takes a list`;
|
|
178
|
+
const items = value;
|
|
179
|
+
if (items.length < required || items.length > input.slots.length) {
|
|
180
|
+
return `${where} has ${String(items.length)} slots, outside ${String(required)} to ${String(input.slots.length)}`;
|
|
181
|
+
}
|
|
182
|
+
for (const [index, item] of items.entries()) {
|
|
183
|
+
const problem = this.#input(scope, input.template, item, where, index);
|
|
184
|
+
if (problem !== undefined)
|
|
185
|
+
return problem;
|
|
186
|
+
}
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
if (!isPlainObject(value))
|
|
190
|
+
return `${where} takes slots by name`;
|
|
191
|
+
const excess = Object.keys(value).find((key) => !input.slots.includes(key));
|
|
192
|
+
if (excess !== undefined)
|
|
193
|
+
return `${where} has no slot ${excess}`;
|
|
194
|
+
for (const [index, slot] of input.slots.entries()) {
|
|
195
|
+
const item = Object.hasOwn(value, slot) ? value[slot] : undefined;
|
|
196
|
+
if (item === undefined) {
|
|
197
|
+
if (index < required || isObjectMember(slot))
|
|
198
|
+
return `${where} needs ${slot}`;
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
const problem = this.#input(scope, input.template, item, where, index);
|
|
202
|
+
if (problem !== undefined)
|
|
203
|
+
return problem;
|
|
204
|
+
}
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* A MatchType position. The template's inferring position (the first one typed, §6.3) takes
|
|
209
|
+
* `Out<T | "*">` with `T` within its allowed types; the others `Match<NoInfer<T>>`.
|
|
210
|
+
*/
|
|
211
|
+
#match(scope, input, slot, value, where) {
|
|
212
|
+
const { templateId } = input;
|
|
213
|
+
const position = inferringPosition(scope.definition, templateId);
|
|
214
|
+
if (position?.input === input && (slot === undefined || slot === 0)) {
|
|
215
|
+
const constraint = allowedAtom(input.allowed);
|
|
216
|
+
return this.#link(value, (atom) => atom.kind === "star" || within(atom, constraint), where);
|
|
217
|
+
}
|
|
218
|
+
const parameter = this.#parameter(scope.node, scope.definition, templateId);
|
|
219
|
+
return this.#link(value, (atom) => matchAccepts(parameter, atom), where);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* What a link from (`node`, `slot`) is typed as in builder code (emit-types `#outputAtom`):
|
|
223
|
+
* `undefined` when the node or slot doesn't exist. A raw node's outputs are `Out<"*">`.
|
|
224
|
+
*/
|
|
225
|
+
#atom(id, slot) {
|
|
226
|
+
const node = this.#workflow.graph.nodes.get(id);
|
|
227
|
+
const mode = this.#mode(id);
|
|
228
|
+
if (node === undefined || mode === undefined)
|
|
229
|
+
return undefined;
|
|
230
|
+
const definition = Object.hasOwn(this.#workflow.schema.nodes, node.classType)
|
|
231
|
+
? this.#workflow.schema.nodes[node.classType]
|
|
232
|
+
: undefined;
|
|
233
|
+
// Whatever is written as raw(…), known class or not, has `Out<"*">` outputs.
|
|
234
|
+
if (mode === "raw" || definition === undefined)
|
|
235
|
+
return STAR;
|
|
236
|
+
const output = definition.outputs[slot];
|
|
237
|
+
if (output === undefined)
|
|
238
|
+
return undefined;
|
|
239
|
+
return outputAtom(output, (template) => this.#parameter(node, definition, template));
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* A typed node's MatchType parameter: what its inferring position is linked to, or the
|
|
243
|
+
* parameter's default (`"*"`, or the allowed types) when that position is empty or `*`.
|
|
244
|
+
*/
|
|
245
|
+
#parameter(node, definition, templateId) {
|
|
246
|
+
const key = `${node.id}\u0000${templateId}`;
|
|
247
|
+
const cached = this.#parameters.get(key);
|
|
248
|
+
if (cached !== undefined)
|
|
249
|
+
return cached;
|
|
250
|
+
// Guard against cycles while resolving: they can't be written anyway.
|
|
251
|
+
this.#parameters.set(key, STAR);
|
|
252
|
+
const position = inferringPosition(definition, templateId);
|
|
253
|
+
const fallback = position === undefined ? STAR : allowedDefault(position.allowed);
|
|
254
|
+
const value = position === undefined ? undefined : position.read(node.inputs);
|
|
255
|
+
const linked = value !== undefined && isOutputRef(value) ? this.#atom(value.node, value.slot) : undefined;
|
|
256
|
+
const resolved = linked === undefined || linked.kind === "star" ? fallback : linked;
|
|
257
|
+
this.#parameters.set(key, resolved);
|
|
258
|
+
return resolved;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const STAR = { kind: "star" };
|
|
262
|
+
const STRING = { kind: "string" };
|
|
263
|
+
function outputAtom(output, parameter) {
|
|
264
|
+
if (output.matchTemplate !== undefined)
|
|
265
|
+
return parameter(output.matchTemplate);
|
|
266
|
+
const { type } = output;
|
|
267
|
+
switch (type.kind) {
|
|
268
|
+
case "combo":
|
|
269
|
+
return { kind: "optionList" };
|
|
270
|
+
case "any":
|
|
271
|
+
return STAR;
|
|
272
|
+
case "named":
|
|
273
|
+
return type.name === "*" ? STRING : { kind: "names", names: [type.name] };
|
|
274
|
+
case "union":
|
|
275
|
+
return { kind: "names", names: type.names.filter((name) => name !== "*") };
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/** emit-types `#link`: what a socket of `type` takes. */
|
|
279
|
+
function linkAccepts(type) {
|
|
280
|
+
switch (type.kind) {
|
|
281
|
+
case "any":
|
|
282
|
+
return () => true;
|
|
283
|
+
case "named":
|
|
284
|
+
return (atom) => atom.kind === "star" ||
|
|
285
|
+
(atom.kind === "names" && atom.names.every((name) => name === type.name)) ||
|
|
286
|
+
(atom.kind === "optionList" && type.name === "COMBO");
|
|
287
|
+
case "union": {
|
|
288
|
+
const names = new Set(type.names.filter((name) => name !== "*"));
|
|
289
|
+
return (atom) => atom.kind === "star" ||
|
|
290
|
+
(atom.kind === "names" && atom.names.every((name) => names.has(name)));
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/** A MatchType constraint (emit-types `#allowed`): `undefined` for `string`, else its names. */
|
|
295
|
+
function allowedAtom(type) {
|
|
296
|
+
switch (type.kind) {
|
|
297
|
+
case "any":
|
|
298
|
+
return undefined;
|
|
299
|
+
case "named":
|
|
300
|
+
return type.name === "*" ? undefined : [type.name];
|
|
301
|
+
case "union":
|
|
302
|
+
return type.names.includes("*") ? undefined : type.names;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/** A MatchType parameter's default: `"*"` when unconstrained, else the allowed types. */
|
|
306
|
+
function allowedDefault(type) {
|
|
307
|
+
const names = allowedAtom(type);
|
|
308
|
+
return names === undefined ? STAR : { kind: "names", names };
|
|
309
|
+
}
|
|
310
|
+
/** Whether a link typed `atom` infers a parameter within `constraint`. */
|
|
311
|
+
function within(atom, constraint) {
|
|
312
|
+
if (constraint === undefined)
|
|
313
|
+
return true;
|
|
314
|
+
return atom.kind === "names" && atom.names.every((name) => constraint.includes(name));
|
|
315
|
+
}
|
|
316
|
+
/** `Out<Match<T>>`: anything when `T` is `"*"` or `string`, else `T` or `*`. */
|
|
317
|
+
function matchAccepts(parameter, atom) {
|
|
318
|
+
if (parameter.kind === "star" || parameter.kind === "string" || atom.kind === "star")
|
|
319
|
+
return true;
|
|
320
|
+
if (parameter.kind === "optionList")
|
|
321
|
+
return atom.kind === "optionList";
|
|
322
|
+
return atom.kind === "names" && atom.names.every((name) => parameter.names.includes(name));
|
|
323
|
+
}
|
|
324
|
+
function describe(atom) {
|
|
325
|
+
switch (atom.kind) {
|
|
326
|
+
case "star":
|
|
327
|
+
return "*";
|
|
328
|
+
case "string":
|
|
329
|
+
return "a padded *";
|
|
330
|
+
case "optionList":
|
|
331
|
+
return "an option list";
|
|
332
|
+
case "names":
|
|
333
|
+
return atom.names.join(" | ") || "never";
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* The position a template is inferred at (emit-types `#matchAtom`): its first MatchType position
|
|
338
|
+
* in declaration order, depth-first through every dynamic-combo option, and slot 0 of an
|
|
339
|
+
* Autogrow. `read` finds its value in a node's structured inputs.
|
|
340
|
+
*/
|
|
341
|
+
function inferringPosition(definition, templateId) {
|
|
342
|
+
const visit = (input, read) => {
|
|
343
|
+
if (input.kind === "matchType" && input.templateId === templateId) {
|
|
344
|
+
return { input, allowed: input.allowed, read };
|
|
345
|
+
}
|
|
346
|
+
if (input.kind === "autogrow" && input.template.kind === "matchType") {
|
|
347
|
+
if (input.template.templateId !== templateId)
|
|
348
|
+
return undefined;
|
|
349
|
+
const first = input.slots[0];
|
|
350
|
+
return {
|
|
351
|
+
input: input.template,
|
|
352
|
+
allowed: input.template.allowed,
|
|
353
|
+
read: (inputs) => {
|
|
354
|
+
const value = read(inputs);
|
|
355
|
+
if (isList(value))
|
|
356
|
+
return value[0];
|
|
357
|
+
return isPlainObject(value) && first !== undefined ? value[first] : undefined;
|
|
358
|
+
},
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
if (input.kind === "dynamicCombo") {
|
|
362
|
+
for (const option of input.options) {
|
|
363
|
+
for (const child of option.inputs) {
|
|
364
|
+
const found = visit(child, (inputs) => {
|
|
365
|
+
const value = read(inputs);
|
|
366
|
+
if (!isPlainObject(value) || value["option"] !== option.key)
|
|
367
|
+
return undefined;
|
|
368
|
+
const children = value["inputs"];
|
|
369
|
+
return isPlainObject(children) && Object.hasOwn(children, child.name)
|
|
370
|
+
? children[child.name]
|
|
371
|
+
: undefined;
|
|
372
|
+
});
|
|
373
|
+
if (found !== undefined)
|
|
374
|
+
return found;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return undefined;
|
|
379
|
+
};
|
|
380
|
+
for (const input of definition.inputs) {
|
|
381
|
+
const found = visit(input, (inputs) => Object.hasOwn(inputs, input.name) ? inputs[input.name] : undefined);
|
|
382
|
+
if (found !== undefined)
|
|
383
|
+
return found;
|
|
384
|
+
}
|
|
385
|
+
return undefined;
|
|
386
|
+
}
|
|
387
|
+
//# sourceMappingURL=typing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typing.js","sourceRoot":"","sources":["../src/typing.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,mGAAmG;AACnG,0FAA0F;AAC1F,iDAAiD;AAEjD,OAAO,EAIL,WAAW,EAKX,eAAe,GAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKpD;;;GAGG;AACH,MAAM,OAAO,MAAM;IACR,SAAS,CAAW;IAC7B,qFAAqF;IAC5E,KAAK,CAAwC;IACtD,0DAA0D;IACjD,WAAW,GAAG,IAAI,GAAG,EAAgB,CAAC;IAE/C,YAAY,QAAkB,EAAE,IAA2C;QACzE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAe,EAAE,UAAmB;QAC1C,MAAM,KAAK,GAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/F,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxC,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;oBACvC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,OAAO,CACL,KAAY,EACZ,WAAgC,EAChC,MAA+C,EAC/C,MAA4B,EAC5B,KAAa;QAEb,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,GAAG,KAAK,iBAAiB,MAAM,EAAE,CAAC;QACnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,MAAM;oBAAE,OAAO,GAAG,KAAK,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjF,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;QAC5C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mFAAmF;IACnF,MAAM,CACJ,KAAY,EACZ,KAAe,EACf,KAAiB,EACjB,KAAa,EACb,IAAa;QAEb,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3D,KAAK,KAAK;gBACR,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAC3D,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YACjF,KAAK,OAAO;gBACV,OAAO,OAAO,KAAK,KAAK,QAAQ;oBAC9B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAC/E,KAAK,QAAQ;gBACX,OAAO,OAAO,KAAK,KAAK,QAAQ;oBAC9B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAC/E,KAAK,SAAS;gBACZ,OAAO,OAAO,KAAK,KAAK,SAAS;oBAC/B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAChF,KAAK,OAAO;gBACV,OAAO,WAAW,CAAC,KAAK,CAAC;oBACvB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;oBACtE,CAAC,CAAC,SAAS,CAAC;YAChB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC1C,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACvD,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACpD,KAAK,cAAc,EAAE,CAAC;gBACpB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;oBAChE,IAAI,MAAM,KAAK,SAAS;wBAAE,OAAO,GAAG,KAAK,kBAAkB,KAAK,EAAE,CAAC;oBACnE,4EAA4E;oBAC5E,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;wBACvD,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,GAAG,KAAK,WAAW,KAAK,mBAAmB,CAAC;gBAClD,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACjE,OAAO,GAAG,KAAK,kBAAkB,CAAC;gBACpC,CAAC;gBACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC1E,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvD,OAAO,GAAG,KAAK,kBAAkB,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACjE,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;oBAC3E,OAAO,GAAG,KAAK,qCAAqC,CAAC;gBACvD,CAAC;gBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;oBAAE,OAAO,GAAG,KAAK,0BAA0B,CAAC;gBACxE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACxE,CAAC;YACD,KAAK,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBAAE,OAAO,GAAG,KAAK,uBAAuB,CAAC;gBAC3D,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;oBACzD,OAAO,GAAG,KAAK,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3G,CAAC;gBACD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC5C,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;wBAAE,OAAO,GAAG,KAAK,mBAAmB,CAAC;oBAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBACtE,IAAI,OAAO,KAAK,SAAS;wBAAE,OAAO,OAAO,CAAC;gBAC5C,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW,CACT,IAAgB,EAChB,UAAmB,EACnB,KAAiB,EACjB,KAAa,EACb,QAAgB;QAEhB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,UAAU,QAAQ,EAAE,CAAC;QAC7D,IAAI,UAAU;YAAE,OAAO,GAAG,KAAK,gBAAgB,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,KAAiB,EAAE,OAAgC,EAAE,KAAa;QACtE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,eAAe,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,GAAG,KAAK,wCAAwC,CAAC;QAChF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,eAAe,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,CACJ,KAA2C,EAC3C,KAAiB,EACjB,KAAa;QAEb,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,UAAU;gBAAE,OAAO,GAAG,KAAK,gBAAgB,CAAC;YACtD,6FAA6F;YAC7F,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAC5B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,KAAK,CAAC;gBAC1D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,MAAkB,EAAW,EAAE,CAC3C,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACxB,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;YAC5B,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC5F,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBACvC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,GAAG,KAAK,8BAA8B,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,2BAA2B,CAAC;IACvE,CAAC;IAED,SAAS,CACP,KAAY,EACZ,KAA8C,EAC9C,KAAiB,EACjB,KAAa;QAEb,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,GAAG,KAAK,eAAe,CAAC;YACnD,MAAM,KAAK,GAAG,KAAK,CAAC;YACpB,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjE,OAAO,GAAG,KAAK,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACpH,CAAC;YACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBACvE,IAAI,OAAO,KAAK,SAAS;oBAAE,OAAO,OAAO,CAAC;YAC5C,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,sBAAsB,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,GAAG,KAAK,gBAAgB,MAAM,EAAE,CAAC;QAClE,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,IAAI,KAAK,GAAG,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC;oBAAE,OAAO,GAAG,KAAK,UAAU,IAAI,EAAE,CAAC;gBAC9E,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACvE,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;QAC5C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,MAAM,CACJ,KAAY,EACZ,KAA+C,EAC/C,IAAwB,EACxB,KAAiB,EACjB,KAAa;QAEb,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACjE,IAAI,QAAQ,EAAE,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,EAAU,EAAE,IAAY;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;YAC3E,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,SAAS,CAAC;QACd,6EAA6E;QAC7E,IAAI,IAAI,KAAK,KAAK,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3C,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvF,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,IAAe,EAAE,UAAmB,EAAE,UAAkB;QACjE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,sEAAsE;QACtE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9E,MAAM,MAAM,GACV,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAkBD,MAAM,IAAI,GAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACpC,MAAM,MAAM,GAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAExC,SAAS,UAAU,CAAC,MAAiB,EAAE,SAAqC;IAC1E,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAChC,KAAK,KAAK;YACR,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,yDAAyD;AACzD,SAAS,WAAW,CAAC,IAAgB;IACnC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,CAAC,IAAI,EAAE,EAAE,CACd,IAAI,CAAC,IAAI,KAAK,MAAM;gBACpB,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC1D,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,EAAE,EAAE,CACd,IAAI,CAAC,IAAI,KAAK,MAAM;gBACpB,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,SAAS,WAAW,CAAC,IAAgB;IACnC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,SAAS,cAAc,CAAC,IAAgB;IACtC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC/D,CAAC;AAED,0EAA0E;AAC1E,SAAS,MAAM,CAAC,IAAU,EAAE,UAAyC;IACnE,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,gFAAgF;AAChF,SAAS,YAAY,CAAC,SAAe,EAAE,IAAU;IAC/C,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClG,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;IACvE,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU;IAC1B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC;QACtB,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC;QAC1B,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,UAAmB,EACnB,UAAkB;IAUlB,MAAM,KAAK,GAAG,CAAC,KAAe,EAAE,IAAY,EAAqB,EAAE;QACjE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAClE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrE,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,KAAK,UAAU;gBAAE,OAAO,SAAS,CAAC;YAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,QAAQ;gBACrB,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;gBAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;oBACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,IAAI,MAAM,CAAC,KAAK,CAAC;wBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;oBACnC,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChF,CAAC;aACF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;wBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,GAAG;4BAAE,OAAO,SAAS,CAAC;wBAC9E,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACjC,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;4BACnE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;4BACtB,CAAC,CAAC,SAAS,CAAC;oBAChB,CAAC,CAAC,CAAC;oBACH,IAAI,KAAK,KAAK,SAAS;wBAAE,OAAO,KAAK,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CACnE,CAAC;QACF,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/values.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type InputValue, type JsonValue, type NodeId } from "@tscomfy/core";
|
|
2
|
+
/** Every output reference in a node's inputs, depth-first. */
|
|
3
|
+
export declare function references(value: InputValue | {
|
|
4
|
+
readonly [name: string]: InputValue;
|
|
5
|
+
}): {
|
|
6
|
+
readonly node: NodeId;
|
|
7
|
+
readonly slot: number;
|
|
8
|
+
}[];
|
|
9
|
+
/** Whether a value is a plain object: not a list and not an output reference. */
|
|
10
|
+
export declare function isPlainObject(value: InputValue | undefined): value is {
|
|
11
|
+
readonly [key: string]: InputValue;
|
|
12
|
+
};
|
|
13
|
+
/** Whether a value is a list. */
|
|
14
|
+
export declare function isList<T extends InputValue | JsonValue>(value: T | undefined): value is Extract<T, readonly unknown[]>;
|
|
15
|
+
//# sourceMappingURL=values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAe,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAE1F,8DAA8D;AAC9D,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,GAAG;IAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAKpD;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,KAAK,IAAI;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAEjD;AAED,iCAAiC;AACjC,wBAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,GAAG,SAAS,EACrD,KAAK,EAAE,CAAC,GAAG,SAAS,GACnB,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC,CAEzC"}
|
package/dist/values.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Structured input values (the graph's `InputValue`): lists, plain objects and the output
|
|
2
|
+
// references inside them, as the transpiler and its typing walk them.
|
|
3
|
+
import { isOutputRef } from "@tscomfy/core";
|
|
4
|
+
/** Every output reference in a node's inputs, depth-first. */
|
|
5
|
+
export function references(value) {
|
|
6
|
+
if (isOutputRef(value))
|
|
7
|
+
return [{ node: value.node, slot: value.slot }];
|
|
8
|
+
if (isList(value))
|
|
9
|
+
return value.flatMap(references);
|
|
10
|
+
if (typeof value === "object" && value !== null)
|
|
11
|
+
return Object.values(value).flatMap(references);
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
/** Whether a value is a plain object: not a list and not an output reference. */
|
|
15
|
+
export function isPlainObject(value) {
|
|
16
|
+
return typeof value === "object" && value !== null && !isList(value) && !isOutputRef(value);
|
|
17
|
+
}
|
|
18
|
+
/** Whether a value is a list. */
|
|
19
|
+
export function isList(value) {
|
|
20
|
+
return Array.isArray(value);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,sEAAsE;AAEtE,OAAO,EAAmB,WAAW,EAA+B,MAAM,eAAe,CAAC;AAE1F,8DAA8D;AAC9D,MAAM,UAAU,UAAU,CACxB,KAA2D;IAE3D,IAAI,WAAW,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjG,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAC3B,KAA6B;IAE7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,MAAM,CACpB,KAAoB;IAEpB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,48 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tscomfy/codegen",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Generates TypeScript node types and the runtime schema module for tscomfy from a ComfyUI server's node definitions, and transpiles workflows to code.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"codegen",
|
|
7
|
+
"comfyui",
|
|
8
|
+
"types",
|
|
9
|
+
"typescript",
|
|
10
|
+
"workflow"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://github.com/TheeKia/tscomfy/tree/main/packages/codegen#readme",
|
|
13
|
+
"bugs": "https://github.com/TheeKia/tscomfy/issues",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/TheeKia/tscomfy.git",
|
|
18
|
+
"directory": "packages/codegen"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"!dist/**/*.tsbuildinfo",
|
|
23
|
+
"src"
|
|
24
|
+
],
|
|
25
|
+
"type": "module",
|
|
26
|
+
"sideEffects": false,
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"@tscomfy/source": "./src/index.ts",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"default": "./dist/index.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@tscomfy/core": "0.1.0",
|
|
39
|
+
"@tscomfy/fixtures": "0.0.0"
|
|
40
|
+
},
|
|
41
|
+
"peerDependencies": {
|
|
42
|
+
"@tscomfy/core": "^0.1.0"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"bun": ">=1.4",
|
|
46
|
+
"node": ">=24"
|
|
47
|
+
}
|
|
48
|
+
}
|