@zuplo/cli 6.41.6 → 6.42.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/editor/server/server.ts"],"names":[],"mappings":"AAEA,OAAgB,EAAqB,eAAe,EAAE,MAAM,SAAS,CAAC;AA8BtE,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,SAAS;IACb,OAAO,EAAE,eAAe,CAAC;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO,CAAC,UAAU,CAAM;IAExB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAU;gBAG5B,OAAO,GAAE,aAKR;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/editor/server/server.ts"],"names":[],"mappings":"AAEA,OAAgB,EAAqB,eAAe,EAAE,MAAM,SAAS,CAAC;AA8BtE,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,SAAS;IACb,OAAO,EAAE,eAAe,CAAC;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO,CAAC,UAAU,CAAM;IAExB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAU;gBAG5B,OAAO,GAAE,aAKR;IAgBH,IAAI,QAAa,OAAO,CAAC,IAAI,CAAC,CAiP5B;IAEF,KAAK,QAAa,OAAO,CAAC,IAAI,CAAC,CAkC7B;IAEF,KAAK,QAAa,OAAO,CAAC,IAAI,CAAC,CAE7B;IAEF,KAAK,QAAa,OAAO,CAAC,IAAI,CAAC,CAsB7B;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/editor/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,OAA+C,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC;AAyB5B,MAAM,OAAO,SAAS;IACb,OAAO,CAAkB;IACxB,YAAY,CAAS;IACrB,OAAO,CAAqB;IAE5B,UAAU,CAAM;IAEhB,OAAO,CAAU;IACjB,UAAU,CAAS;IACnB,YAAY,CAAS;IACrB,YAAY,CAAU;IAE9B,YACE,UAAyB;QACvB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,GAAG;QACf,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,IAAI;KACnB;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACrB,MAAM,EAAE,MAA2B;YACnC,UAAU,EAAE,IAAI;YAChB,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,GAAG,KAAK,IAAmB,EAAE;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAExC,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE;YACnC,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;YACjD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;gBAChB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;oBACjC,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBAClE,IAAI,IAAI,GAAG,MAAM,QAAQ,CACvB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,EACvC,OAAO,CACR,CAAC;oBACF,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,iBAAiB,EACjB,IAAI,CAAC,SAAS,CAAC;wBACb,cAAc,EAAE,IAAI,CAAC,YAAY;wBACjC,WAAW,EAAE,IAAI,CAAC,YAAY;qBAC/B,CAAC,CACH,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC;aACF,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE;gBAChC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,YAAY,CAAC;wBACjB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,mCAAmC;qBAC3C,CAAC,CAAC;oBAEH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,KAAgC,CAAC;oBACpE,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAChD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;oBACrE,CAAC;oBAED,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,IAAI,CAAC,UAAU,EACf,QAAQ,EACR,QAAQ,CACT,CAAC;oBACF,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;wBACzC,OAAO,KAAK;6BACT,IAAI,CAAC,GAAG,CAAC;6BACT,IAAI,CAAC,EAAE,OAAO,EAAE,2BAA2B,QAAQ,GAAG,EAAE,CAAC,CAAC;oBAC/D,CAAC;oBAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,IAAI,CAAC,UAAU,EACf,QAAQ,EACR,iBAAiB,CAClB,CAAC;oBACF,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;wBACtC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BAC1B,OAAO,EAAE,kBAAkB,iBAAiB,kBAAkB,UAAU,GAAG;yBAC5E,CAAC,CAAC;oBACL,CAAC;oBAGD,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC1C,eAAe,EACf,OAAO,CACR,CAAC;oBACF,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAEjE,MAAM,OAAO,GAAG;wBACd;4BACE,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;yBACxC;wBACD;4BACE,IAAI,EAAE,iBAAiB;4BACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;yBACrC;qBACF,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChC,CAAC;aACF,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE;gBAC9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,YAAY,CAAC;wBACjB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,iCAAiC;qBACzC,CAAC,CAAC;oBACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;oBACjE,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC;wBAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CACd,4BAA4B,UAAU,wBAAwB,IAAI,CAAC,UAAU,YAAY,UAAU,WAAW,CAC/G,CAAC;wBACF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BAC1B,OAAO,EAAE,4BAA4B,UAAU,wBAAwB,IAAI,CAAC,UAAU,YAAY,UAAU,WAAW;yBACxH,CAAC,CAAC;oBACL,CAAC;oBAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;oBAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC7C,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC/B,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrC,CAAC;aACF,CAAC,CAAC;YAEH,QAAQ,CAAC,KAAK,CAA2B;gBACvC,MAAM,EAAE,MAAM;gBAEd,GAAG,EAAE,wBAAwB;gBAC7B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAiB,EAAE;oBAC/C,MAAM,YAAY,CAAC;wBACjB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,wCAAwC;qBAChD,CAAC,CAAC;oBAEH,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;oBAEjC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;wBACrC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,IAAI,CAAC,UAAU,EACf,QAAQ,EACR,QAAQ,CAAC,QAAQ,CAClB,CAAC;wBACF,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;4BACzC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCAC1B,OAAO,EAAE,2BAA2B,QAAQ,CAAC,QAAQ,GAAG;6BACzD,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,EAAE,CAAC,SAAS,CAChB,eAAe,EACf,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAW,CACpD,CAAC;oBACJ,CAAC,CAAC,CAAC;oBAEH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;gBACvE,CAAC;aACF,CAAC,CAAC;YAGH,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE;gBACvB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,YAAY,CAAC;wBACjB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,0BAA0B;qBAClC,CAAC,CAAC;oBAIH,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;wBAGjD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CACvC,CAAC;oBACJ,CAAC;oBAED,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE;wBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;wBAC/D,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC5D,CAAC,CAAC,CAAC;oBAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;wBACjC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC7B,CAAC,CAAC,CAAC;oBAGH,KAAK,CAAC,GAAG,CAAC;wBACR,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;wBACzB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wBACnE,KAAK,EAAE,EAAE;qBACV,CAAC,CAAC;oBACH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBACrC,CAAC;aACF,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,YAAY,CAAC;wBACjB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,+BAA+B;qBACvC,CAAC,CAAC;oBAEH,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;oBACjE,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;wBAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,CACd,wDAAwD,IAAI,CAAC,UAAU,2BAA2B,CACnG,CAAC;wBACF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClC,CAAC;oBAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBAChD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC7C,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CACzB,CAAC;oBAEF,MAAM,OAAO,GAA2B,EAAE,CAAC;oBAG3C,KAAK,MAAM,cAAc,IAAI,YAAY,EAAE,CAAC;wBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;wBAC/D,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBACzD,MAAM,OAAO,GAA2B,EAAE,CAAC;wBAG3C,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;wBACrD,IAAI,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;4BACzC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC9D,CAAC;wBAGD,MAAM,aAAa,GACjB,6DAA6D,CAAC;wBAEhE,IAAI,KAAK,CAAC;wBACV,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;4BACjD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC7D,CAAC;wBAED,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,cAAc;4BACpB,QAAQ,EAAE,aAAa,cAAc,EAAE;4BACvC,OAAO,EAAE,OAAO;yBACjB,CAAC,CAAC;oBACL,CAAC;oBAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChC,CAAC;aACF,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE;gBACpB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;oBACjC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzB,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,IAAmB,EAAE;QAChC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAGlB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;YACvB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CACjB,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,EACpD,CAAC,GAAG,EAAE,EAAE;oBACN,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;oBAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;oBAEhC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,yBAAyB,CAAC,wBAAwB,CAAC,CAAC;wBACpD,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;wBAC5C,yBAAyB,CAAC,EAAE,CAAC,CAAC;wBAC9B,yBAAyB,CACvB,6BAA6B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,CACtE,CAAC;wBACF,yBAAyB,CAAC,EAAE,CAAC,CAAC;wBAC9B,yBAAyB,CAAC,EAAE,CAAC,CAAC;oBAChC,CAAC;oBAED,OAAO,EAAE,CAAC;gBACZ,CAAC,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,IAAmB,EAAE;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,IAAmB,EAAE;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,yBAAyB,CAAC,wBAAwB,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC;YACH,KAAK,iBAAiB,EAAE,CAAC;YAEzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;YAED,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAEb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC;CACH","sourcesContent":["import fastifyStatic from \"@fastify/static\";\nimport chokidar from \"chokidar\";\nimport Fastify, { FastifyBaseLogger, FastifyInstance } from \"fastify\";\nimport { FastifySSEPlugin } from \"fastify-sse-v2\";\nimport fs, { readFile, readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { captureEvent, shutdownAnalytics } from \"../../common/analytics/lib.js\";\nimport { logger } from \"../../common/logger.js\";\nimport { printDiagnosticsToConsole } from \"../../common/output.js\";\nimport { corsPlugin } from \"./cors-plugin.js\";\nimport { dirExists, fileExists } from \"./xfs.js\";\n\nconst POLICIES_FILENAME = \"policies.json\";\nconst CONFIG_DIR = \"config\";\n\ninterface FunctionPickerMethod {\n name: string;\n isHandlerInvocable: boolean;\n}\n\ninterface FunctionPickerModule {\n name: string;\n filepath: string;\n methods: FunctionPickerMethod[];\n}\n\ninterface FileSaveBody {\n filePath: string;\n content: object;\n}\n\ninterface ServerOptions {\n cliArgs: unknown;\n workingDir: string;\n port: number;\n isStandalone: boolean;\n}\n\nexport class ApiServer {\n public fastify: FastifyInstance;\n private listenerHost: string;\n private watcher: chokidar.FSWatcher;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private sseContext: any;\n\n private cliArgs: unknown;\n private workingDir: string;\n private listenerPort: number;\n private isStandalone: boolean;\n\n constructor(\n options: ServerOptions = {\n cliArgs: {},\n workingDir: \".\",\n port: 9100,\n isStandalone: true,\n }\n ) {\n this.cliArgs = options.cliArgs;\n this.workingDir = options.workingDir;\n this.listenerPort = options.port;\n this.isStandalone = options.isStandalone;\n this.listenerHost = \"localhost\";\n this.watcher = chokidar.watch(path.join(this.workingDir, CONFIG_DIR));\n this.fastify = Fastify({\n logger: logger as FastifyBaseLogger,\n trustProxy: true,\n disableRequestLogging: true,\n });\n }\n\n init = async (): Promise<void> => {\n const cliArgs = this.cliArgs;\n this.fastify.register(corsPlugin, { origin: true });\n this.fastify.register(FastifySSEPlugin);\n\n const editorRootPath = fileURLToPath(new URL(\"../\", import.meta.url));\n this.fastify.register(fastifyStatic, {\n root: editorRootPath,\n });\n\n this.fastify.register((instance, _options, done) => {\n instance.get(\"/\", {\n handler: async (_request, reply) => {\n await captureEvent({ argv: cliArgs, event: \"route-designer: /\" });\n let html = await readFile(\n path.join(editorRootPath, \"index.html\"),\n \"utf-8\"\n );\n html = html.replace(\n \"__SERVER_DATA__\",\n JSON.stringify({\n server_address: this.listenerHost,\n server_port: this.listenerPort,\n })\n );\n reply.type(\"text/html\").send(html);\n },\n });\n\n instance.get(\"/open-api-content\", {\n handler: async (request, reply) => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /open-api-content\",\n });\n\n const { path: filePath } = request.query as { path: string | null };\n if (filePath === null || filePath === undefined) {\n return reply.code(404).send(\"You must select a file to work with\");\n }\n\n const openApiFilePath = path.join(\n this.workingDir,\n \"config\",\n filePath\n );\n if (!(await fileExists(openApiFilePath))) {\n return reply\n .code(404)\n .send({ message: `Cannot find file named '${filePath}'` });\n }\n\n const policiesPath = path.join(\n this.workingDir,\n \"config\",\n POLICIES_FILENAME\n );\n if (!(await fileExists(policiesPath))) {\n return reply.code(404).send({\n message: `Cannot find a '${POLICIES_FILENAME}' file in the '${CONFIG_DIR}'`,\n });\n }\n\n // read & send\n const openApiFileContent = await fs.readFile(\n openApiFilePath,\n \"utf-8\"\n );\n const policiesContent = await fs.readFile(policiesPath, \"utf-8\");\n\n const payload = [\n {\n path: filePath,\n content: JSON.parse(openApiFileContent),\n },\n {\n path: POLICIES_FILENAME,\n content: JSON.parse(policiesContent),\n },\n ];\n reply.code(200).send(payload);\n },\n });\n\n instance.get(\"/open-api-files\", {\n handler: async (request, reply) => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /open-api-files\",\n });\n const projectConfigPath = path.join(this.workingDir, CONFIG_DIR);\n if (!(await dirExists(projectConfigPath))) {\n request.log.warn(\n `Cannot find the project '${CONFIG_DIR}' folder. Make sure '${this.workingDir}' has a '${CONFIG_DIR}' folder.`\n );\n return reply.code(404).send({\n message: `Cannot find the project '${CONFIG_DIR}' folder. Make sure '${this.workingDir}' has a '${CONFIG_DIR}' folder.`,\n });\n }\n\n const files = await readdir(projectConfigPath);\n const openApiFiles = files.filter((fileName) =>\n fileName.endsWith(\".oas.json\")\n );\n reply.code(200).send(openApiFiles);\n },\n });\n\n instance.route<{ Body: FileSaveBody[] }>({\n method: \"POST\",\n\n url: \"/save-open-api-updates\",\n handler: async (request, reply): Promise<void> => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /save-open-api-updates\",\n });\n\n const bodyContent = request.body;\n\n bodyContent.forEach(async (fileData) => {\n const openApiFilePath = path.join(\n this.workingDir,\n \"config\",\n fileData.filePath\n );\n if (!(await fileExists(openApiFilePath))) {\n return reply.code(404).send({\n message: `Cannot find file named '${fileData.filePath}'`,\n });\n }\n\n await fs.writeFile(\n openApiFilePath,\n JSON.stringify(fileData.content, null, 2) as string\n );\n });\n\n reply.code(200).send({ message: \"Changes were saved successfully\" });\n },\n });\n\n // SSE endpoint for real-time updates\n instance.get(\"/updates\", {\n handler: async (request, reply) => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /updates\",\n });\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (this.watcher && this.watcher.closed === true) {\n // @NOTE - some UI interactions send a close event & we need to reenable\n // the watcher in the next event subscription request\n this.watcher = chokidar.watch(\n path.join(this.workingDir, CONFIG_DIR)\n );\n }\n\n this.watcher.on(\"change\", (filePath: string) => {\n const eventData = JSON.stringify({ type: \"update\", filePath });\n reply.sse({ id: Date.now().toString(), data: eventData });\n });\n\n request.raw.on(\"close\", async () => {\n await this.watcher.close();\n });\n\n // @NOTE - Initial reply to successfully initialize SSE connection\n reply.sse({\n id: Date.now().toString(),\n data: JSON.stringify({ filePath: POLICIES_FILENAME, type: \"init\" }),\n retry: 10,\n });\n this.sseContext = reply.sseContext;\n },\n });\n\n instance.get(\"/modules-data\", {\n handler: async (request, reply) => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /modules-data\",\n });\n\n const projectModulesPath = path.join(this.workingDir, \"modules\");\n if (!(await dirExists(projectModulesPath))) {\n request.log.warn(\n `Cannot find the project 'modules' folder. Make sure '${this.workingDir}' has a 'modules' folder.`\n );\n return reply.code(200).send([]);\n }\n\n const files = await readdir(projectModulesPath);\n const modulesFiles = files.filter((fileName) =>\n fileName.endsWith(\".ts\")\n );\n\n const results: FunctionPickerModule[] = [];\n\n // @NOTE - its either this or bundling 40mb of typescript in the cli\n for (const moduleFileName of modulesFiles) {\n const fullPath = path.join(projectModulesPath, moduleFileName);\n const fileContent = await fs.readFile(fullPath, \"utf-8\");\n const exports: FunctionPickerMethod[] = [];\n\n // Regular expression to find default export\n const defaultExportRegex = /(?:export\\s+(default))/g;\n if (defaultExportRegex.exec(fileContent)) {\n exports.push({ name: \"default\", isHandlerInvocable: true });\n }\n\n // Regular expression to match exported functions/classes\n const functionRegex =\n /(?:export\\s+(function|class))\\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;\n\n let match;\n while ((match = functionRegex.exec(fileContent))) {\n exports.push({ name: match[2], isHandlerInvocable: true });\n }\n\n results.push({\n name: moduleFileName,\n filepath: `./modules/${moduleFileName}`,\n methods: exports,\n });\n }\n\n reply.code(200).send(results);\n },\n });\n\n instance.get(\"/ping\", {\n handler: async (_request, reply) => {\n reply.code(200).send();\n },\n });\n\n done();\n });\n };\n\n start = async (): Promise<void> => {\n await this.init();\n\n // See https://github.com/fastify/help/issues/641\n this.fastify.log.level = \"silent\";\n const start = async () => {\n return new Promise<void>((resolve, reject) => {\n this.fastify.listen(\n { port: this.listenerPort, host: this.listenerHost },\n (err) => {\n if (err) {\n reject(err);\n }\n\n this.fastify.log.level = \"info\";\n\n if (this.isStandalone) {\n printDiagnosticsToConsole(\"Started route designer\");\n printDiagnosticsToConsole(\"Ctrl+C to exit\");\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\n `📘 Route Designer: http://${this.listenerHost}:${this.listenerPort}`\n );\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"\");\n }\n\n resolve();\n }\n );\n });\n };\n\n await start();\n };\n\n ready = async (): Promise<void> => {\n return this.fastify.ready();\n };\n\n close = async (): Promise<void> => {\n if (this.isStandalone) {\n printDiagnosticsToConsole(\"Closing route designer\");\n }\n\n try {\n void shutdownAnalytics();\n\n if (this.sseContext) {\n this.sseContext.source.end();\n }\n\n if (this.watcher) {\n await this.watcher.close();\n }\n\n await this.fastify.close();\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log(err);\n }\n process.exit();\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/editor/server/server.ts"],"names":[],"mappings":"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","sourcesContent":["import fastifyStatic from \"@fastify/static\";\nimport chokidar from \"chokidar\";\nimport Fastify, { FastifyBaseLogger, FastifyInstance } from \"fastify\";\nimport { FastifySSEPlugin } from \"fastify-sse-v2\";\nimport fs, { readFile, readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { captureEvent, shutdownAnalytics } from \"../../common/analytics/lib.js\";\nimport { logger } from \"../../common/logger.js\";\nimport { printDiagnosticsToConsole } from \"../../common/output.js\";\nimport { corsPlugin } from \"./cors-plugin.js\";\nimport { dirExists, fileExists } from \"./xfs.js\";\n\nconst POLICIES_FILENAME = \"policies.json\";\nconst CONFIG_DIR = \"config\";\n\ninterface FunctionPickerMethod {\n name: string;\n isHandlerInvocable: boolean;\n}\n\ninterface FunctionPickerModule {\n name: string;\n filepath: string;\n methods: FunctionPickerMethod[];\n}\n\ninterface FileSaveBody {\n filePath: string;\n content: object;\n}\n\ninterface ServerOptions {\n cliArgs: unknown;\n workingDir: string;\n port: number;\n isStandalone: boolean;\n}\n\nexport class ApiServer {\n public fastify: FastifyInstance;\n private listenerHost: string;\n private watcher: chokidar.FSWatcher;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private sseContext: any;\n\n private cliArgs: unknown;\n private workingDir: string;\n private listenerPort: number;\n private isStandalone: boolean;\n\n constructor(\n options: ServerOptions = {\n cliArgs: {},\n workingDir: \".\",\n port: 9100,\n isStandalone: true,\n }\n ) {\n this.cliArgs = options.cliArgs;\n this.workingDir = options.workingDir;\n this.listenerPort = options.port;\n this.isStandalone = options.isStandalone;\n this.listenerHost = \"localhost\";\n this.watcher = chokidar.watch(path.join(this.workingDir, CONFIG_DIR));\n this.fastify = Fastify({\n logger: logger as FastifyBaseLogger,\n trustProxy: true,\n disableRequestLogging: true,\n bodyLimit: 104857600, // 100mb\n });\n }\n\n init = async (): Promise<void> => {\n const cliArgs = this.cliArgs;\n this.fastify.register(corsPlugin, { origin: true });\n this.fastify.register(FastifySSEPlugin);\n\n const editorRootPath = fileURLToPath(new URL(\"../\", import.meta.url));\n this.fastify.register(fastifyStatic, {\n root: editorRootPath,\n });\n\n this.fastify.register((instance, _options, done) => {\n instance.get(\"/\", {\n handler: async (_request, reply) => {\n await captureEvent({ argv: cliArgs, event: \"route-designer: /\" });\n let html = await readFile(\n path.join(editorRootPath, \"index.html\"),\n \"utf-8\"\n );\n html = html.replace(\n \"__SERVER_DATA__\",\n JSON.stringify({\n server_address: this.listenerHost,\n server_port: this.listenerPort,\n })\n );\n reply.type(\"text/html\").send(html);\n },\n });\n\n instance.get(\"/open-api-content\", {\n handler: async (request, reply) => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /open-api-content\",\n });\n\n const { path: filePath } = request.query as { path: string | null };\n if (filePath === null || filePath === undefined) {\n return reply.code(404).send(\"You must select a file to work with\");\n }\n\n const openApiFilePath = path.join(\n this.workingDir,\n \"config\",\n filePath\n );\n if (!(await fileExists(openApiFilePath))) {\n return reply\n .code(404)\n .send({ message: `Cannot find file named '${filePath}'` });\n }\n\n const policiesPath = path.join(\n this.workingDir,\n \"config\",\n POLICIES_FILENAME\n );\n if (!(await fileExists(policiesPath))) {\n return reply.code(404).send({\n message: `Cannot find a '${POLICIES_FILENAME}' file in the '${CONFIG_DIR}'`,\n });\n }\n\n // read & send\n const openApiFileContent = await fs.readFile(\n openApiFilePath,\n \"utf-8\"\n );\n const policiesContent = await fs.readFile(policiesPath, \"utf-8\");\n\n const payload = [\n {\n path: filePath,\n content: JSON.parse(openApiFileContent),\n },\n {\n path: POLICIES_FILENAME,\n content: JSON.parse(policiesContent),\n },\n ];\n reply.code(200).send(payload);\n },\n });\n\n instance.get(\"/open-api-files\", {\n handler: async (request, reply) => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /open-api-files\",\n });\n const projectConfigPath = path.join(this.workingDir, CONFIG_DIR);\n if (!(await dirExists(projectConfigPath))) {\n request.log.warn(\n `Cannot find the project '${CONFIG_DIR}' folder. Make sure '${this.workingDir}' has a '${CONFIG_DIR}' folder.`\n );\n return reply.code(404).send({\n message: `Cannot find the project '${CONFIG_DIR}' folder. Make sure '${this.workingDir}' has a '${CONFIG_DIR}' folder.`,\n });\n }\n\n const files = await readdir(projectConfigPath);\n const openApiFiles = files.filter((fileName) =>\n fileName.endsWith(\".oas.json\")\n );\n reply.code(200).send(openApiFiles);\n },\n });\n\n instance.route<{ Body: FileSaveBody[] }>({\n method: \"POST\",\n\n url: \"/save-open-api-updates\",\n handler: async (request, reply): Promise<void> => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /save-open-api-updates\",\n });\n\n const bodyContent = request.body;\n\n bodyContent.forEach(async (fileData) => {\n const openApiFilePath = path.join(\n this.workingDir,\n \"config\",\n fileData.filePath\n );\n if (!(await fileExists(openApiFilePath))) {\n return reply.code(404).send({\n message: `Cannot find file named '${fileData.filePath}'`,\n });\n }\n\n await fs.writeFile(\n openApiFilePath,\n JSON.stringify(fileData.content, null, 2) as string\n );\n });\n\n reply.code(200).send({ message: \"Changes were saved successfully\" });\n },\n });\n\n // SSE endpoint for real-time updates\n instance.get(\"/updates\", {\n handler: async (request, reply) => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /updates\",\n });\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (this.watcher && this.watcher.closed === true) {\n // @NOTE - some UI interactions send a close event & we need to reenable\n // the watcher in the next event subscription request\n this.watcher = chokidar.watch(\n path.join(this.workingDir, CONFIG_DIR)\n );\n }\n\n this.watcher.on(\"change\", (filePath: string) => {\n const eventData = JSON.stringify({ type: \"update\", filePath });\n reply.sse({ id: Date.now().toString(), data: eventData });\n });\n\n request.raw.on(\"close\", async () => {\n await this.watcher.close();\n });\n\n // @NOTE - Initial reply to successfully initialize SSE connection\n reply.sse({\n id: Date.now().toString(),\n data: JSON.stringify({ filePath: POLICIES_FILENAME, type: \"init\" }),\n retry: 10,\n });\n this.sseContext = reply.sseContext;\n },\n });\n\n instance.get(\"/modules-data\", {\n handler: async (request, reply) => {\n await captureEvent({\n argv: cliArgs,\n event: \"route-designer: /modules-data\",\n });\n\n const projectModulesPath = path.join(this.workingDir, \"modules\");\n if (!(await dirExists(projectModulesPath))) {\n request.log.warn(\n `Cannot find the project 'modules' folder. Make sure '${this.workingDir}' has a 'modules' folder.`\n );\n return reply.code(200).send([]);\n }\n\n const files = await readdir(projectModulesPath);\n const modulesFiles = files.filter((fileName) =>\n fileName.endsWith(\".ts\")\n );\n\n const results: FunctionPickerModule[] = [];\n\n // @NOTE - its either this or bundling 40mb of typescript in the cli\n for (const moduleFileName of modulesFiles) {\n const fullPath = path.join(projectModulesPath, moduleFileName);\n const fileContent = await fs.readFile(fullPath, \"utf-8\");\n const exports: FunctionPickerMethod[] = [];\n\n // Regular expression to find default export\n const defaultExportRegex = /(?:export\\s+(default))/g;\n if (defaultExportRegex.exec(fileContent)) {\n exports.push({ name: \"default\", isHandlerInvocable: true });\n }\n\n // Regular expression to match exported functions/classes\n const functionRegex =\n /(?:export\\s+(function|class))\\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;\n\n let match;\n while ((match = functionRegex.exec(fileContent))) {\n exports.push({ name: match[2], isHandlerInvocable: true });\n }\n\n results.push({\n name: moduleFileName,\n filepath: `./modules/${moduleFileName}`,\n methods: exports,\n });\n }\n\n reply.code(200).send(results);\n },\n });\n\n instance.get(\"/ping\", {\n handler: async (_request, reply) => {\n reply.code(200).send();\n },\n });\n\n done();\n });\n };\n\n start = async (): Promise<void> => {\n await this.init();\n\n // See https://github.com/fastify/help/issues/641\n this.fastify.log.level = \"silent\";\n const start = async () => {\n return new Promise<void>((resolve, reject) => {\n this.fastify.listen(\n { port: this.listenerPort, host: this.listenerHost },\n (err) => {\n if (err) {\n reject(err);\n }\n\n this.fastify.log.level = \"info\";\n\n if (this.isStandalone) {\n printDiagnosticsToConsole(\"Started route designer\");\n printDiagnosticsToConsole(\"Ctrl+C to exit\");\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\n `📘 Route Designer: http://${this.listenerHost}:${this.listenerPort}`\n );\n printDiagnosticsToConsole(\"\");\n printDiagnosticsToConsole(\"\");\n }\n\n resolve();\n }\n );\n });\n };\n\n await start();\n };\n\n ready = async (): Promise<void> => {\n return this.fastify.ready();\n };\n\n close = async (): Promise<void> => {\n if (this.isStandalone) {\n printDiagnosticsToConsole(\"Closing route designer\");\n }\n\n try {\n void shutdownAnalytics();\n\n if (this.sseContext) {\n this.sseContext.source.end();\n }\n\n if (this.watcher) {\n await this.watcher.close();\n }\n\n await this.fastify.close();\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log(err);\n }\n process.exit();\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zuplo/cli",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.42.0",
|
|
4
4
|
"repository": "https://github.com/zuplo/zuplo",
|
|
5
5
|
"author": "Zuplo, Inc.",
|
|
6
6
|
"type": "module",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"@opentelemetry/api": "^1.8.0",
|
|
30
30
|
"@sentry/node": "^8.50.0",
|
|
31
31
|
"@swc/core": "1.10.18",
|
|
32
|
-
"@zuplo/core": "^6.
|
|
33
|
-
"@zuplo/openapi-tools": "^6.
|
|
34
|
-
"@zuplo/runtime": "^6.
|
|
32
|
+
"@zuplo/core": "^6.42.0",
|
|
33
|
+
"@zuplo/openapi-tools": "^6.42.0",
|
|
34
|
+
"@zuplo/runtime": "^6.42.0",
|
|
35
35
|
"as-table": "^1.0.55",
|
|
36
36
|
"chalk": "^5.3.0",
|
|
37
37
|
"chokidar": "^3.5.3",
|