behavior-contracts 0.1.3 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/dist/authoring.d.ts +202 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.js +787 -0
- package/dist/authoring.js.map +1 -0
- package/dist/behavior.d.ts +248 -0
- package/dist/behavior.d.ts.map +1 -0
- package/dist/behavior.js +373 -0
- package/dist/behavior.js.map +1 -0
- package/dist/builder.d.ts +154 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +574 -0
- package/dist/builder.js.map +1 -0
- package/dist/generator/core.d.ts +89 -0
- package/dist/generator/core.d.ts.map +1 -0
- package/dist/generator/core.js +124 -0
- package/dist/generator/core.js.map +1 -0
- package/dist/generator/emit-go.d.ts +19 -0
- package/dist/generator/emit-go.d.ts.map +1 -0
- package/dist/generator/emit-go.js +79 -0
- package/dist/generator/emit-go.js.map +1 -0
- package/dist/generator/emit-php.d.ts +20 -0
- package/dist/generator/emit-php.d.ts.map +1 -0
- package/dist/generator/emit-php.js +76 -0
- package/dist/generator/emit-php.js.map +1 -0
- package/dist/generator/emit-python.d.ts +10 -0
- package/dist/generator/emit-python.d.ts.map +1 -0
- package/dist/generator/emit-python.js +75 -0
- package/dist/generator/emit-python.js.map +1 -0
- package/dist/generator/emit-rust.d.ts +25 -0
- package/dist/generator/emit-rust.d.ts.map +1 -0
- package/dist/generator/emit-rust.js +125 -0
- package/dist/generator/emit-rust.js.map +1 -0
- package/dist/generator/emit-straightline-go.d.ts +77 -0
- package/dist/generator/emit-straightline-go.d.ts.map +1 -0
- package/dist/generator/emit-straightline-go.js +592 -0
- package/dist/generator/emit-straightline-go.js.map +1 -0
- package/dist/generator/emit-straightline-php.d.ts +46 -0
- package/dist/generator/emit-straightline-php.d.ts.map +1 -0
- package/dist/generator/emit-straightline-php.js +501 -0
- package/dist/generator/emit-straightline-php.js.map +1 -0
- package/dist/generator/emit-straightline-python.d.ts +36 -0
- package/dist/generator/emit-straightline-python.d.ts.map +1 -0
- package/dist/generator/emit-straightline-python.js +441 -0
- package/dist/generator/emit-straightline-python.js.map +1 -0
- package/dist/generator/emit-straightline-rust.d.ts +78 -0
- package/dist/generator/emit-straightline-rust.d.ts.map +1 -0
- package/dist/generator/emit-straightline-rust.js +615 -0
- package/dist/generator/emit-straightline-rust.js.map +1 -0
- package/dist/generator/emit-straightline-typed-go.d.ts +39 -0
- package/dist/generator/emit-straightline-typed-go.d.ts.map +1 -0
- package/dist/generator/emit-straightline-typed-go.js +828 -0
- package/dist/generator/emit-straightline-typed-go.js.map +1 -0
- package/dist/generator/emit-straightline-typed-rust.d.ts +48 -0
- package/dist/generator/emit-straightline-typed-rust.d.ts.map +1 -0
- package/dist/generator/emit-straightline-typed-rust.js +823 -0
- package/dist/generator/emit-straightline-typed-rust.js.map +1 -0
- package/dist/generator/emit-straightline-typed-typescript.d.ts +49 -0
- package/dist/generator/emit-straightline-typed-typescript.d.ts.map +1 -0
- package/dist/generator/emit-straightline-typed-typescript.js +314 -0
- package/dist/generator/emit-straightline-typed-typescript.js.map +1 -0
- package/dist/generator/emit-straightline-typescript.d.ts +36 -0
- package/dist/generator/emit-straightline-typescript.d.ts.map +1 -0
- package/dist/generator/emit-straightline-typescript.js +397 -0
- package/dist/generator/emit-straightline-typescript.js.map +1 -0
- package/dist/generator/emit-typescript.d.ts +11 -0
- package/dist/generator/emit-typescript.d.ts.map +1 -0
- package/dist/generator/emit-typescript.js +68 -0
- package/dist/generator/emit-typescript.js.map +1 -0
- package/dist/generator/fingerprint.d.ts +14 -0
- package/dist/generator/fingerprint.d.ts.map +1 -0
- package/dist/generator/fingerprint.js +74 -0
- package/dist/generator/fingerprint.js.map +1 -0
- package/dist/generator/index.d.ts +22 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +64 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/literal.d.ts +15 -0
- package/dist/generator/literal.d.ts.map +1 -0
- package/dist/generator/literal.js +232 -0
- package/dist/generator/literal.js.map +1 -0
- package/dist/generator/straightline.d.ts +147 -0
- package/dist/generator/straightline.d.ts.map +1 -0
- package/dist/generator/straightline.js +122 -0
- package/dist/generator/straightline.js.map +1 -0
- package/dist/generator/typed.d.ts +156 -0
- package/dist/generator/typed.d.ts.map +1 -0
- package/dist/generator/typed.js +108 -0
- package/dist/generator/typed.js.map +1 -0
- package/dist/guard.d.ts +36 -0
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +186 -0
- package/dist/guard.js.map +1 -1
- package/dist/index.d.ts +17 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -2
- package/dist/index.js.map +1 -1
- package/dist/plan.d.ts +36 -0
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +152 -14
- package/dist/plan.js.map +1 -1
- package/dist/primitives.d.ts +112 -0
- package/dist/primitives.d.ts.map +1 -0
- package/dist/primitives.js +206 -0
- package/dist/primitives.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-straightline-typed-rust.js","sourceRoot":"","sources":["../../src/generator/emit-straightline-typed-rust.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,aAAa,EACb,aAAa,EACb,QAAQ,GAKT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAuB,MAAM,mBAAmB,CAAC;AAG5E,8CAA8C;AAC9C,MAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC;AACtC,0FAA0F;AAC1F,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC,iFAAiF;AAEjF,4EAA4E;AAC5E,SAAS,UAAU,CAAC,MAAoD;IACtE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,4DAA4D;YAC5D,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,SAAS,aAAa,CAAC,GAAY;IACjC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,KAAK,KAAK;YACR,6CAA6C;YAC7C,OAAO,UAAU,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,KAAK,KAAK;YACR,OAAO,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,GAAG,CAAC,IAAI,CAAC;IACpB,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,aAAa,CAAC,IAAY;IACjC,gEAAgE;IAChE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC;IACnC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qDAAqD;AACrD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI;IAC3F,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ;IAC/F,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO;IAC9F,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU;IAC1F,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;CAChE,CAAC,CAAC;AAEH,8BAA8B;AAC9B,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,qDAAqD;AACrD,SAAS,WAAW,CAAC,EAAU;IAC7B,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC;IAC/B,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAChC,2EAA2E;IAC3E,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;IAC9B,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;IACjE,OAAO,IAAI,EAAE,GAAG,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,GAAY,EAAE,IAAc;IACjD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,4BAA4B;QAC5D,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,CAAC,6BAA6B;QAC5C,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,CAAC,sBAAsB;QACrC,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,CAAC;IACH,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,SAAS,aAAa,CAAC,IAAc;IACnC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;aAClG,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,kFAAkF;QAClF,qFAAqF;QACrF,0EAA0E;QAC1E,0FAA0F;QAC1F,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;QAClG,OAAO,YAAY,OAAO,mCAAmC,CAAC,CAAC,IAAI,OAAO,MAAM,KAAK,CAAC;IACxF,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,IAAc;IACrC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAW,EAAE,IAAc;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,iFAAiF;IACjF,8EAA8E;IAC9E,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC;IACtF,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CACR,kDAAkD,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,sBAAsB,CAAC,wBAAwB,CACpI,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,SAAS,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,MAAM,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,0DAA0D,MAAM,KAAK,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CACR,uDAAuD,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,sBAAsB,CAAC,KAAK,MAAM,KAAK,CACjI,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,UAAU,CAAC,IAAI,CAAC,WAAW,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,4CAA4C;AAC5C,SAAS,WAAW,CAAC,KAAa,EAAE,MAAc;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,KAAK;SACT,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,GAAW,EAAE,GAAY,EAAE,IAAc;IACrE,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1B,gCAAgC;gBAChC,OAAO,GAAG,GAAG,UAAU,CAAC;YAC1B,CAAC;YACD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YACzH,oCAAoC;YACpC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1D,OAAO;gBACL,SAAS,GAAG,IAAI;gBAChB,cAAc,OAAO,UAAU,IAAI,GAAG;gBACtC,8CAA8C,UAAU,CAAC,2BAA2B,GAAG,CAAC,MAAM,QAAQ,CAAC,wBAAwB;gBAC/H,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,WAAW,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;QACxC,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/D,OAAO;gBACL,SAAS,GAAG,IAAI;gBAChB,4BAA4B;gBAC5B,4BAA4B,MAAM,sCAAsC;gBACxE,wCAAwC;gBACxC,8BAA8B,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG;gBAClE,iCAAiC;gBACjC,WAAW;gBACX,aAAa;gBACb,OAAO;gBACP,8CAA8C,UAAU,CAAC,mCAAmC,CAAC,wBAAwB;gBACrH,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO;gBACL,SAAS,GAAG,IAAI;gBAChB,0BAA0B;gBAC1B,oBAAoB;gBACpB,2BAA2B,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG;gBAC/D,yBAAyB;gBACzB,OAAO;gBACP,GAAG;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAe,EAAE,GAAY,EAAE,IAAc;IACpE,iEAAiE;IACjE,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,WAAW,GAAG,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC;IACpE,gEAAgE;IAChE,OAAO,iBAAiB,OAAO,KAAK,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC;AACvG,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CACvB,QAAgB,EAChB,OAAgB,EAChB,MAAgB,EAChB,IAAc;IAEd,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,GAAG,GAAG,OAAO,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,yBAAyB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACtF,IAAI,GAAG,GAAG,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAmC;QACzE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,SAAiB,EAAE,GAAY,EAAE,IAAc;IACrE,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,OAAO,GAAG,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;QACzC,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,QAAQ;oBACX,OAAO,cAAc,SAAS,GAAG,CAAC;gBACpC,KAAK,KAAK;oBACR,OAAO,cAAc,SAAS,GAAG,CAAC;gBACpC,KAAK,OAAO;oBACV,OAAO,gBAAgB,SAAS,GAAG,CAAC;gBACtC,KAAK,MAAM;oBACT,OAAO,eAAe,SAAS,GAAG,CAAC;gBACrC,KAAK,MAAM;oBACT,sCAAsC;oBACtC,OAAO,GAAG,SAAS,EAAE,CAAC;YAC1B,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,cAAc,SAAS,wBAAwB,MAAM,KAAK,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;QACrH,CAAC;QACD,KAAK,KAAK;YACR,OAAO,SAAS,SAAS,qBAAqB,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,yBAAyB,CAAC;IACpH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,aAAa;IACb,aAAa;IACb,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,cAAc;CACf,CAAC;AAEF,8EAA8E;AAE9E,8FAA8F;AAC9F,SAAS,eAAe,CAAC,IAAc;IACrC,OAAO,IAAI,CAAC,KAAK;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,cAAc,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;aACzH,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,iFAAiF;QACjF,sDAAsD;QACtD,OAAO,+BAA+B,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,uCAAuC,IAAI,aAAa,CAAC;IACpH,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,iFAAiF;AAEjF,sEAAsE;AACtE,SAAS,SAAS,CAAC,MAAc;IAC/B,OAAO,QAAQ,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,qEAAqE;AACrE,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACvF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7D,MAAM,IAAI,GAAI,IAAyB,CAAC,GAAG,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACxF,OAAO,IAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,cAAc,CACrB,IAAa,EACb,QAA6B,EAC7B,UAAgC,EAChC,IAAc;IAEd,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,+EAA+E;YAC/E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YACtC,oFAAoF;YACpF,6FAA6F;YAC7F,0EAA0E;YAC1E,MAAM,gBAAgB,GACpB,IAAI,CAAC,MAAM,KAAK,CAAC;gBACjB,OAAO,CAAC,IAAI,KAAK,QAAQ;gBACzB,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACxF,MAAM,IAAI,GAAG,gBAAgB;gBAC3B,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW;gBAChC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3E,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,oFAAoF;QACpF,0DAA0D;QAC1D,IAAI,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QACrG,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACpF,oDAAoD;YACpD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAE,CAAC;YAC5C,MAAM,MAAM,GAAI,IAAyC,CAAC,GAAG,CAAC;YAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;gBACrE,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC7E,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAClF,MAAM,KAAK,GAAI,IAA2B,CAAC,GAAG,CAAC;YAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;YACxF,OAAO,EAAE,IAAI,EAAE,gBAAgB,MAAM,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC7F,CAAC;QACD,uFAAuF;QACvF,qFAAqF;QACrF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxH,MAAM,KAAK,GAAI,IAA8B,CAAC,MAAM,CAAC;YACrD,2EAA2E;YAC3E,sFAAsF;YACtF,qEAAqE;YACrE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC1B,kFAAkF;oBAClF,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,YAAY,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACrE,OAAO,gBAAgB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3C,CAAC;gBACD,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;gBACtF,OAAO,kBAAkB,GAAG,CAAC,IAAI,KAAK,CAAC;YACzC,CAAC,CAAC,CAAC;YACH,OAAO;gBACL,IAAI,EAAE,kCAAkC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;gBAChE,GAAG,EAAE,QAAQ;aACd,CAAC;QACJ,CAAC;QACD,8EAA8E;QAC9E,4EAA4E;QAC5E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,gBAAgB,CACxB,+BAA+B,EAC/B,8CAA8C,IAAI,CAAC,CAAC,CAAC,yMAAyM,CAC/P,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC1D,CAAC;AAED,2FAA2F;AAC3F,SAAS,SAAS,CAAC,IAAc;IAC/B,OAAO,eAAe,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,UAAU,GAAG,CAAC;AAC5E,CAAC;AAED,oDAAoD;AACpD,SAAS,SAAS,CAAC,IAAa,EAAE,MAAoD;IACpF,IAAI,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;IAC9F,IAAI,MAAM,KAAK,MAAM,IAAI,OAAO,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACnF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAQ,IAAgC,CAAC,GAAG,KAAK,QAAQ;YACxG,OAAO,GAAI,IAA+B,CAAC,GAAG,KAAK,CAAC;QACtD,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,GAAG,IAAI,KAAK,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAQ,IAAgC,CAAC,KAAK,KAAK,QAAQ;YAC1G,OAAO,GAAI,IAA+B,CAAC,KAAK,KAAK,CAAC;QACxD,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,GAAG,IAAI,KAAK,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,aAAa,CAAC;IAC5C,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;AAC1G,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC;IACxC,IAAI,OAAO,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACxF,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,cAAc,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;IACnF,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,eAAe,CAAC,IAAe,EAAE,IAAc;IACtD,MAAM,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,4EAA4E;IAC5E,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEtF,qDAAqD;IACrD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAI,CAAgC,CAAC,OAAO,CAAC;QACrD,IAAI,EAAE,KAAK,SAAS,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACzC,UAAU,CAAC,GAAG,CAAE,CAAsB,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,sFAAsF;IACtF,MAAM,SAAS,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,WAAW,SAAS,CAAC,EAAE,CAAC,aAAa,aAAa,CAAC,GAAG,CAAC,uCAAuC,CAAC;SAClH,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;QACxB,CAAC,CAAC,yBAAyB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QACtD,CAAC,CAAC,MAAM,CAAC;IAEX,sEAAsE;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC;IACtC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAElG,MAAM,UAAU,GAAG,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAEnE,OAAO,gBAAgB,EAAE;;;;;;yBAMF,IAAI,CAAC,IAAI;;eAEnB,EAAE;;;;6BAIY,UAAU;;;;;EAKrC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;EAgBjC,IAAI;;;;mBAIa,QAAQ;;;;;;;;;;wBAUH,GAAG,CAAC,IAAI;SACvB,UAAU;EACjB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,EAAkB,EAAE,UAAgC,EAAE,IAAc;IAC5F,IAAI,EAAE,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAC/B,0FAA0F;QAC1F,MAAM,IAAI,gBAAgB,CACxB,+BAA+B,EAC/B,6CAA6C,EAAE,CAAC,IAAI,wLAAwL,CAC7O,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GACZ,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QACnB,CAAC,CAAC,gCAAgC;QAClC,CAAC,CAAC,6BAA6B,EAAE,CAAC,KAAK;aAClC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,wBAAwB,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,MAAM,CAAC;aACvF,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;IAE1C,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClC,mFAAmF;IACnF,IAAI,WAAmB,CAAC;IACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,yEAAyE;QACzE,sEAAsE;QACtE,WAAW,GAAG,6BAA6B,CAAC;IAC9C,CAAC;SAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAChC,WAAW,GAAG,iCAAiC,GAAG,CAAC,IAAI;mCACxB,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;;;;;kBAKjC,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,6EAA6E;QAC7E,iFAAiF;QACjF,WAAW,GAAG,0CAA0C,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;mCACzC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;;;;;kBAKjC,CAAC;IACjB,CAAC;IAED,OAAO,uBAAuB,EAAE,CAAC,KAAK;;EAEtC,QAAQ;;;;;;;;;wDAS8C,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC;;;6DAGzC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC;;;;;;;;EAQnF,WAAW;;cAEC,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,IAAe,EAAE,UAAgC,EAAE,IAAc;IAC9F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS;QACnC,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CACR,4CAA4C,SAAS,CAAC,EAAE,CAAC,2BAA2B,EAAE,8BAA8B,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAC3J,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,4EAA4E;AAE5E,SAAS,oBAAoB,CAAC,GAAgB;IAC5C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC/C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAK,CAAgC,CAAC,OAAO,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;IACtG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+CAA+C;AAC/C,SAAS,gBAAgB,CAAC,IAAe;IACvC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAgC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;AACxF,CAAC;AAED,+DAA+D;AAC/D,SAAS,kBAAkB;IACzB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCP,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,YAAY,CAAC,IAAc;IAClC,OAAO,IAAI,CAAC,KAAK;SACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;SACpE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAC3E,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,oBAAoB,CAAC,CAAC,IAAI,2CAA2C,CAAC,CAAC,IAAI,OAAO,MAAM,uBAAuB,CAAC;IACzH,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,4EAA4E;AAC5E,SAAS,WAAW,CAAC,GAAY;IAC/B,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,QAAQ;oBACX,OAAO,eAAe,CAAC;gBACzB,KAAK,KAAK;oBACR,OAAO,MAAM,CAAC;gBAChB,KAAK,OAAO;oBACV,OAAO,MAAM,CAAC;gBAChB,KAAK,MAAM;oBACT,OAAO,OAAO,CAAC;gBACjB,KAAK,MAAM;oBACT,OAAO,aAAa,CAAC;YACzB,CAAC;YACD,MAAM;QACR,KAAK,KAAK;YACR,OAAO,MAAM,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,YAAY,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,GAAG,GAAG,CAAC,IAAI,aAAa,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,GAAgB;IACzD,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAAE,SAAS;QACnC,MAAM,EAAE,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,0DAA0D;QAC1D,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,8BAA8B,CAAC;QAC7E,MAAM,QAAQ,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;QACxF,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACpH,CAAC;QACD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjC,kDAAkD;QAClD,MAAM,GAAG,GAAG,UAAU,EAAE,qBAAqB,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACrH,CAAC;QACD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,wBAAwB,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,IAAI,CAAC,GAAgB;IAC5B,oFAAoF;IACpF,wFAAwF;IACxF,mEAAmE;IACnE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE3D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAExD,MAAM,OAAO,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAE3D,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,qBAAqB,CAAC,aAAc,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,qBAAqB,CAAC,eAAgB,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,kBAAkB,EAAE,CAAC;IAE5C,oEAAoE;IACpE,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,EAAE,GAAI,CAAgC,CAAC,OAAO,CAAC;YACrD,IAAI,EAAE,KAAK,SAAS,IAAI,WAAW,IAAI,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAE,CAAsB,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,EAAE;YAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,UAAU;SAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SACpC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,MAAM,MAAM,GAAG;;;;;;;;;wBASO,CAAC;IAEvB,MAAM,QAAQ,GAA2B;QACvC,MAAM;QACN,KAAK,IAAI,SAAS;QAClB,QAAQ,IAAI,SAAS;QACrB,cAAc;QACd,WAAW;YACT,CAAC,CAAC,uGAAuG,WAAW,EAAE;YACtH,CAAC,CAAC,SAAS;QACb,iBAAiB,CAAC,MAAM;YACtB,CAAC,CAAC,4GAA4G,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC9I,CAAC,CAAC,SAAS;QACb,WAAW;YACT,CAAC,CAAC,+GAA+G,WAAW,EAAE;YAC9H,CAAC,CAAC,SAAS;QACb,qGAAqG,OAAO,EAAE;KAC/G,CAAC;IACF,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,sDAAsD;IACtD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,QAAQ,EAAE,YAAY;IACtB,aAAa,EAAE,KAAK;IACpB,oBAAoB,EAAE,oBAAoB;IAC1C,YAAY,EAAE,8BAA8B;IAC5C,IAAI;CACL,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* emit-straightline-typed-typescript.ts — TS typed 直線 emitter(bc#46 / Layer B2, oracle)。
|
|
3
|
+
*
|
|
4
|
+
* typed-codegen.md §4.3/§4.4 の TS 具体化。可搬型記法(`outType`/`outputType`, B0/bc#44)から
|
|
5
|
+
* TS interface/型注釈を **導出**し、生成 TS がその型で `tsc` clean になる typed 経路を足す。既存の
|
|
6
|
+
* straight-line(`typescript-straightline`)と併存する additive な第3モード(言語識別子
|
|
7
|
+
* `typescript-typed`)。
|
|
8
|
+
*
|
|
9
|
+
* ── oracle 位置づけ(TS は型消去)───────────────────────────────────────────────
|
|
10
|
+
* **TS は型消去のため runtime の脱box は無い。生成モジュールの RUNTIME 挙動は straight-line と
|
|
11
|
+
* 完全に同一**(値・発行 op 列・Failure code)。runtime を担うのは下記 (2) の straight-line 本体
|
|
12
|
+
* (`bind`/`bindAsync`)だけであり、これは `typescript-straightline` と **byte-identical**。よって
|
|
13
|
+
* 「typed 生成 ≡ runBehavior ≡ golden」は straight-line の conformance がそのまま担保する。typed 層の
|
|
14
|
+
* 役割は「`outType` から型付き interface を導出 → 生成 TS が `tsc` で型検査を通る + 導出した型が
|
|
15
|
+
* `outType` と構造一致する(interface field 集合 == outType obj field)」ことを権威づける検証用
|
|
16
|
+
* oracle である。raw→typed の実 perf 脱box(monomorphized marshaller)は go/rust の materialization
|
|
17
|
+
* (#47/#48)+ graphddb 側 #60 の責務であって bc の TS 側ではない(bc の handler は Value を返す
|
|
18
|
+
* mock ゆえ、bc 側の「typed」は typed materialization + typed field access + 観測等価 まで)。
|
|
19
|
+
*
|
|
20
|
+
* ── 生成物の構成 ────────────────────────────────────────────────────────────────
|
|
21
|
+
* 1. **型宣言**: 型プラン(`typed.ts` の language-neutral 導出)の named obj 型を TS interface で
|
|
22
|
+
* emit(決定的順・同形 dedup)。scalar/opt/arr は inline 型注釈。
|
|
23
|
+
* 2. **runtime 本体**: straight-line と **byte 単位で同一**の component 関数(`emitStraightlineModule`
|
|
24
|
+
* の TS dialect をそのまま流用)+`bind`/`bindAsync`。runtime 等価は構造上自明。
|
|
25
|
+
* 3. **typed view(tsc 検証の実体)**: `outType`/`outputType` を持つ component ごとに typed view 関数
|
|
26
|
+
* `typedView_<name>(scope): <outputType 型>` を emit する。各 typed node(componentRef の
|
|
27
|
+
* `outType`)を **導出 interface に materialize**(typed ローカル)し、`ref` を **typed field
|
|
28
|
+
* access**(`t_<id>["f"]`)で綴じ、output を component の `outputType` 型として返す。この関数は
|
|
29
|
+
* straight-line 本体の生値(scope)を **導出型へ materialize してから** typed に組み直す
|
|
30
|
+
* (runtime は straight-line と同値 — `as` は型消去 no-op、field access は同じ値を返す)。tsc は
|
|
31
|
+
* この関数を型検査し、interface field 集合が `outType` obj field と食い違えば・ref path が
|
|
32
|
+
* interface に無い field を辿れば **fail する**(構造 pin・非空虚)。
|
|
33
|
+
*
|
|
34
|
+
* ── 後方互換 ────────────────────────────────────────────────────────────────────
|
|
35
|
+
* `outType`/`outputType` が IR のどこにも無い場合、typed 層は emit されず、出力は
|
|
36
|
+
* `typescript-straightline` と **byte-identical**(後方互換 pin)。
|
|
37
|
+
*/
|
|
38
|
+
import type { EmitterPlugin } from "./core.js";
|
|
39
|
+
import { TS_SCOPE, TS_MAP_SCOPE } from "./emit-straightline-typescript.js";
|
|
40
|
+
import { type TypedMaterializer } from "./typed.js";
|
|
41
|
+
export declare const tsTypedMaterializer: TypedMaterializer;
|
|
42
|
+
/**
|
|
43
|
+
* typescriptTypedEmitter — 言語識別子 `typescript-typed` の emitter plugin(bc#46 B2, oracle)。
|
|
44
|
+
* straight-line(`typescript-straightline`)+ typed 層。`outType` 無し IR は straight-line と
|
|
45
|
+
* byte-identical(後方互換)。
|
|
46
|
+
*/
|
|
47
|
+
export declare const typescriptTypedEmitter: EmitterPlugin;
|
|
48
|
+
export { TS_SCOPE, TS_MAP_SCOPE };
|
|
49
|
+
//# sourceMappingURL=emit-straightline-typed-typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-straightline-typed-typescript.d.ts","sourceRoot":"","sources":["../../src/generator/emit-straightline-typed-typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAAyB,QAAQ,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAClG,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AA2CpB,eAAO,MAAM,mBAAmB,EAAE,iBAGjC,CAAC;AA4QF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAMpC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { emitStraightlineModule } from "./straightline.js";
|
|
2
|
+
import { straightlineTsDialect, TS_SCOPE, TS_MAP_SCOPE } from "./emit-straightline-typescript.js";
|
|
3
|
+
import { buildTypePlan, deriveTypeRef, } from "./typed.js";
|
|
4
|
+
// ── TS typed materializer(TypedMaterializer seam の TS 具体化)────────────────────
|
|
5
|
+
/** TypeRef を TS 型注釈へ綴じる(scalar/opt/arr は inline、obj は named interface 参照)。 */
|
|
6
|
+
function renderTypeRef(ref) {
|
|
7
|
+
switch (ref.kind) {
|
|
8
|
+
case "scalar":
|
|
9
|
+
// 可搬スカラ → TS 型。int/float はどちらも number(TS に整数型は無い — 型消去 oracle)。
|
|
10
|
+
switch (ref.scalar) {
|
|
11
|
+
case "string":
|
|
12
|
+
return "string";
|
|
13
|
+
case "int":
|
|
14
|
+
case "float":
|
|
15
|
+
return "number";
|
|
16
|
+
case "bool":
|
|
17
|
+
return "boolean";
|
|
18
|
+
case "null":
|
|
19
|
+
return "null";
|
|
20
|
+
}
|
|
21
|
+
break;
|
|
22
|
+
case "opt":
|
|
23
|
+
return `(${renderTypeRef(ref.inner)} | null)`;
|
|
24
|
+
case "arr":
|
|
25
|
+
return `${renderTypeRef(ref.elem)}[]`;
|
|
26
|
+
case "named":
|
|
27
|
+
return ref.name;
|
|
28
|
+
}
|
|
29
|
+
throw new Error(`typed emit: unrenderable TypeRef ${JSON.stringify(ref)}`); // 到達しない(閉集合)
|
|
30
|
+
}
|
|
31
|
+
/** 型プランの named interface 群を TS interface 宣言テキストへ綴じる(decls 順=決定的)。 */
|
|
32
|
+
function emitTypeDecls(plan) {
|
|
33
|
+
if (plan.decls.length === 0)
|
|
34
|
+
return "";
|
|
35
|
+
return plan.decls
|
|
36
|
+
.map((d) => {
|
|
37
|
+
const fields = d.fields.map((f) => ` ${JSON.stringify(f.name)}: ${renderTypeRef(f.type)};`).join("\n");
|
|
38
|
+
return `export interface ${d.name} {\n${fields}\n}`;
|
|
39
|
+
})
|
|
40
|
+
.join("\n\n");
|
|
41
|
+
}
|
|
42
|
+
export const tsTypedMaterializer = {
|
|
43
|
+
emitTypeDecls,
|
|
44
|
+
renderTypeRef,
|
|
45
|
+
};
|
|
46
|
+
// ── typed view 関数(tsc が検査する typed materialization)─────────────────────────
|
|
47
|
+
/** `ref` の path 配列(Expression IR)を取り出す。単純 ref ノードでなければ undefined。 */
|
|
48
|
+
function refPathOf(node) {
|
|
49
|
+
if (node === null || typeof node !== "object" || Array.isArray(node))
|
|
50
|
+
return undefined;
|
|
51
|
+
const keys = Object.keys(node);
|
|
52
|
+
if (keys.length !== 1 || keys[0] !== "ref")
|
|
53
|
+
return undefined;
|
|
54
|
+
const path = node.ref;
|
|
55
|
+
if (!Array.isArray(path) || !path.every((p) => typeof p === "string"))
|
|
56
|
+
return undefined;
|
|
57
|
+
return path;
|
|
58
|
+
}
|
|
59
|
+
/** 生成コード内で「typed node の materialize 済みローカル変数名」を組む(決定的・衝突回避)。 */
|
|
60
|
+
function typedLocal(nodeId) {
|
|
61
|
+
return `t_${nodeId.replace(/[^A-Za-z0-9_$]/g, "_")}`;
|
|
62
|
+
}
|
|
63
|
+
/** component 名 → 関数名に使える形(straight-line と同規律)。 */
|
|
64
|
+
function sanitize(name) {
|
|
65
|
+
return name.replace(/[^A-Za-z0-9_$]/g, "_");
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* typedRefAccess — `{ref:[nodeId, ...fields]}` が typed node(outType 持ち)への参照なら、materialize
|
|
69
|
+
* 済み typed ローカル(`t_<id>`)への **静的 field access** テキスト(`t_x["f"]["g"]`)を返す。これが
|
|
70
|
+
* tsc に「interface に field が在る」ことを型検査させる(path が interface に無い field を辿れば tsc が
|
|
71
|
+
* fail する = 型導出の構造 pin・非空虚)。typed node への参照でなければ undefined。
|
|
72
|
+
*/
|
|
73
|
+
function typedRefAccess(node, typedNodes) {
|
|
74
|
+
const path = refPathOf(node);
|
|
75
|
+
if (!path || path.length < 1 || !typedNodes.has(path[0]))
|
|
76
|
+
return undefined;
|
|
77
|
+
let acc = typedLocal(path[0]);
|
|
78
|
+
for (let k = 1; k < path.length; k++)
|
|
79
|
+
acc = `${acc}[${JSON.stringify(path[k])}]`;
|
|
80
|
+
return acc;
|
|
81
|
+
}
|
|
82
|
+
/** 生成コード内で input/非 typed node の値を読む untyped scope アクセス式。 */
|
|
83
|
+
function scopeRead(path) {
|
|
84
|
+
let acc = `scope[${JSON.stringify(path[0])}]`;
|
|
85
|
+
for (let k = 1; k < path.length; k++)
|
|
86
|
+
acc = `(${acc} as any)[${JSON.stringify(path[k])}]`;
|
|
87
|
+
return acc;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* emitTypedOutputValue — output(Φ 合流式)IR を **その位置で期待される型 `expected` に一致する typed
|
|
91
|
+
* TS 式** へ再帰的に lower する。これが AC4 の「outputType 型の値を組める」を tsc に検査させる実体:
|
|
92
|
+
* 組み立てた式は `const __out: <outputType> = <ここ>;` に束ねられ、shape の過不足・型ミスは tsc が fail する。
|
|
93
|
+
*
|
|
94
|
+
* - `{obj:{k:v,…}}` → **実 typed object literal** `{ "k": <lower(v, 期待 field 型)>, … }`(named
|
|
95
|
+
* interface に対して検査される — field 過不足/型不一致は tsc error)。
|
|
96
|
+
* - `{arr:[…]}` → typed array literal(要素は要素型で lower)。
|
|
97
|
+
* - `{ref:[typedNode, …fields]}` → typed field access `t_x["f"]`(node interface に対して検査)。
|
|
98
|
+
* - `{ref:[input/非 typed node, …]}` → scope 読み(untyped leaf — 型付け不能なので expected へ cast)。
|
|
99
|
+
* - スカラリテラル → そのまま(tsc が expected と照合)。
|
|
100
|
+
* - 演算子(concat/add/eq/…)→ `typedOracle<expected>(…operands)`: 被演算子(typed leaf を含む)を渡して
|
|
101
|
+
* leaf field access を tsc に検査させつつ、結果型を expected に固定する(意味論は再実装しない — runtime
|
|
102
|
+
* SSoT は straight-line 本体)。
|
|
103
|
+
*/
|
|
104
|
+
function emitTypedOutputValue(node, expected, typedNodes, plan) {
|
|
105
|
+
// ref: typed node への参照なら typed field access、そうでなければ scope 読み(untyped)。
|
|
106
|
+
const path = refPathOf(node);
|
|
107
|
+
if (path && path.length >= 1) {
|
|
108
|
+
const acc = typedRefAccess(node, typedNodes);
|
|
109
|
+
if (acc !== undefined)
|
|
110
|
+
return acc; // typed field access(node interface で検査)。
|
|
111
|
+
// input / 非 typed node: 型付け不能。expected があればその型へ cast、無ければ Value。
|
|
112
|
+
const raw = scopeRead(path);
|
|
113
|
+
return expected ? `(${raw} as unknown as ${renderTypeRef(expected)})` : `(${raw} as Value)`;
|
|
114
|
+
}
|
|
115
|
+
// obj literal(typed object literal — 最強の shape 検査)。
|
|
116
|
+
if (node !== null && typeof node === "object" && !Array.isArray(node)) {
|
|
117
|
+
const keys = Object.keys(node);
|
|
118
|
+
if (keys.length === 1 && keys[0] === "obj") {
|
|
119
|
+
const fields = node.obj;
|
|
120
|
+
// expected が named(obj)なら各 field の期待型を decl から引く。
|
|
121
|
+
const fieldTypes = expected && expected.kind === "named" ? fieldTypeMap(expected.name, plan) : undefined;
|
|
122
|
+
const entries = Object.entries(fields).map(([k, v]) => `${JSON.stringify(k)}: ${emitTypedOutputValue(v, fieldTypes?.get(k), typedNodes, plan)}`);
|
|
123
|
+
// **`as` cast を付けない**: fresh object literal を expected 型へ **直接代入** させることで、tsc の
|
|
124
|
+
// 過不足検査(missing property + excess property)を効かせる(`as T` 表明では過不足が黙認される)。
|
|
125
|
+
// 代入先の型は呼び側の `const __out: <outputType>` / 上位 field 型(typedField 経由)で束ねる。
|
|
126
|
+
return `{ ${entries.join(", ")} }`;
|
|
127
|
+
}
|
|
128
|
+
if (keys.length === 1 && keys[0] === "arr") {
|
|
129
|
+
const elems = node.arr;
|
|
130
|
+
const elemType = expected && expected.kind === "arr" ? expected.elem : undefined;
|
|
131
|
+
const items = elems.map((e) => emitTypedOutputValue(e, elemType, typedNodes, plan));
|
|
132
|
+
return `[${items.join(", ")}]`;
|
|
133
|
+
}
|
|
134
|
+
// それ以外の単一キー object = 演算子ノード(concat/add/eq/obj-builder-primitive/…)。意味論は再実装せず、
|
|
135
|
+
// 被演算子(typed leaf を含む)を typedOracle へ渡して leaf を検査しつつ結果型を expected に固定する。
|
|
136
|
+
if (keys.length === 1) {
|
|
137
|
+
const operands = collectOperandExprs(node[keys[0]], typedNodes, plan);
|
|
138
|
+
const t = expected ? renderTypeRef(expected) : "Value";
|
|
139
|
+
return `typedOracle<${t}>(${operands.join(", ")})`;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// 配列(演算子被演算子として現れる生 array)・スカラ literal はそのまま lower(スカラは tsc が照合)。
|
|
143
|
+
if (Array.isArray(node)) {
|
|
144
|
+
const items = node.map((e) => emitTypedOutputValue(e, undefined, typedNodes, plan));
|
|
145
|
+
return `[${items.join(", ")}]`;
|
|
146
|
+
}
|
|
147
|
+
// スカラ literal(string/number/bool/null)。
|
|
148
|
+
return litScalar(node);
|
|
149
|
+
}
|
|
150
|
+
/** スカラ literal を TS 式へ(string/number/bool/null)。int の `{int:"n"}` は number 化。 */
|
|
151
|
+
function litScalar(node) {
|
|
152
|
+
if (node === null)
|
|
153
|
+
return "null";
|
|
154
|
+
if (typeof node === "boolean")
|
|
155
|
+
return node ? "true" : "false";
|
|
156
|
+
if (typeof node === "number")
|
|
157
|
+
return String(node);
|
|
158
|
+
if (typeof node === "string")
|
|
159
|
+
return JSON.stringify(node);
|
|
160
|
+
// `{int:"n"}` / `{float:n}` リテラルラッパ(型記法 leaf ではなく Expression IR literal)→ number。
|
|
161
|
+
if (node !== null && typeof node === "object") {
|
|
162
|
+
const o = node;
|
|
163
|
+
if (typeof o.int === "string")
|
|
164
|
+
return o.int;
|
|
165
|
+
if (typeof o.float === "number")
|
|
166
|
+
return String(o.float);
|
|
167
|
+
}
|
|
168
|
+
return "undefined as unknown as Value";
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* collectOperandExprs — 演算子被演算子(配列 or 単一 IR)を走査し、typed leaf(typed node への ref)は
|
|
172
|
+
* typed field access 式へ、それ以外は無害な placeholder へ落として「tsc 検査対象になる式」の配列を返す。
|
|
173
|
+
* typedOracle へ渡して leaf の field access だけを型検査させる(演算子意味論は再実装しない)。
|
|
174
|
+
*/
|
|
175
|
+
function collectOperandExprs(arg, typedNodes, plan) {
|
|
176
|
+
const out = [];
|
|
177
|
+
const walk = (n) => {
|
|
178
|
+
const acc = typedRefAccess(n, typedNodes);
|
|
179
|
+
if (acc !== undefined) {
|
|
180
|
+
out.push(acc);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (Array.isArray(n)) {
|
|
184
|
+
for (const el of n)
|
|
185
|
+
walk(el);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
if (n !== null && typeof n === "object") {
|
|
189
|
+
for (const v of Object.values(n))
|
|
190
|
+
walk(v);
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
walk(arg);
|
|
194
|
+
// typedOracle は最低 1 引数でなくてもよい(可変長)。leaf が無ければ空配列(結果型のみ固定)。
|
|
195
|
+
return out;
|
|
196
|
+
}
|
|
197
|
+
/** named interface の field→期待型 map を型プランから引く。 */
|
|
198
|
+
function fieldTypeMap(name, plan) {
|
|
199
|
+
const decl = plan.decls.find((d) => d.name === name);
|
|
200
|
+
const m = new Map();
|
|
201
|
+
if (decl)
|
|
202
|
+
for (const f of decl.fields)
|
|
203
|
+
m.set(f.name, f.type);
|
|
204
|
+
return m;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* emitTypedViewFn — 1 component の typed view 関数を綴じる(tsc 検査専用・runtime bind とは別経路)。
|
|
208
|
+
* straight-line 本体(`run_<name>`)が組んだ生の結果 scope(`Record<string,Value>`)を受け取り、各 typed
|
|
209
|
+
* node(componentRef の `outType`)を導出 interface へ materialize(typed ローカル)し、**output を
|
|
210
|
+
* outputType 型の typed 値として実際に組み立てて**(`const __out: TOut = {…}`)返す。`as` は型消去 no-op
|
|
211
|
+
* なので runtime 同値のまま、tsc が output assembly(shape の過不足・型・leaf field access)を検査する。
|
|
212
|
+
*/
|
|
213
|
+
function emitTypedViewFn(comp, plan) {
|
|
214
|
+
// typed node(componentRef で outType を持つもの)を index 化。
|
|
215
|
+
const typedNodes = new Map();
|
|
216
|
+
const order = [];
|
|
217
|
+
for (const n of comp.body) {
|
|
218
|
+
const ot = n.outType;
|
|
219
|
+
if (ot !== undefined && "component" in n) {
|
|
220
|
+
const cr = n;
|
|
221
|
+
const tref = deriveTypeRef(ot, plan);
|
|
222
|
+
typedNodes.set(cr.id, tref);
|
|
223
|
+
order.push({ id: cr.id, tref });
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// 各 typed node の materialize(生 scope の値を導出型へ)。`as unknown as T` は型消去 no-op だが、tsc に
|
|
227
|
+
// 「その interface を割り当てる」対象を作り、後段の typed field access がこの interface に対して検査される。
|
|
228
|
+
const mats = order
|
|
229
|
+
.map(({ id, tref }) => ` const ${typedLocal(id)}: ${renderTypeRef(tref)} = scope[${JSON.stringify(id)}] as unknown as ${renderTypeRef(tref)};`)
|
|
230
|
+
.join("\n");
|
|
231
|
+
const outRef = comp.outputType !== undefined ? deriveTypeRef(comp.outputType, plan) : undefined;
|
|
232
|
+
// output を outputType 型の typed 値として組み立てる(AC4: outputType 型の値を組める を tsc が検査)。
|
|
233
|
+
const outExpr = emitTypedOutputValue(comp.output, outRef, typedNodes, plan);
|
|
234
|
+
const outAnnot = outRef ? renderTypeRef(outRef) : "Value";
|
|
235
|
+
// typed node ローカルが output で使われない場合でも interface を検査対象に残す(未使用 lint を満たしつつ)。
|
|
236
|
+
const referenced = new Set();
|
|
237
|
+
for (const { id } of order)
|
|
238
|
+
if (outExpr.includes(typedLocal(id)))
|
|
239
|
+
referenced.add(id);
|
|
240
|
+
const touchLocals = order
|
|
241
|
+
.filter(({ id }) => !referenced.has(id))
|
|
242
|
+
.map(({ id }) => ` void ${typedLocal(id)};`)
|
|
243
|
+
.join("\n");
|
|
244
|
+
const body = `${touchLocals ? touchLocals + "\n" : ""} const __out: ${outAnnot} = ${outExpr};\n return __out;`;
|
|
245
|
+
return `export function typedView_${sanitize(comp.name)}(scope: Record<string, Value>): ${outAnnot} {
|
|
246
|
+
${mats}
|
|
247
|
+
${body}
|
|
248
|
+
}`;
|
|
249
|
+
}
|
|
250
|
+
// ── module 綴じ(straight-line 本体 + typed 層)────────────────────────────────────
|
|
251
|
+
function hasAnyTypeAnnotation(ctx) {
|
|
252
|
+
for (const comp of ctx.ir.components) {
|
|
253
|
+
if (comp.outputType !== undefined)
|
|
254
|
+
return true;
|
|
255
|
+
for (const n of comp.body)
|
|
256
|
+
if (n.outType !== undefined)
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
function emit(ctx) {
|
|
262
|
+
// runtime 本体は straight-line dialect をそのまま流用(byte 同一 → runtime 等価は構造上自明)。
|
|
263
|
+
const straightlineCode = emitStraightlineModule(ctx, straightlineTsDialect, TS_SCOPE);
|
|
264
|
+
// 型注記がどこにも無ければ typed 層は付けない(後方互換: byte-identical to typescript-straightline)。
|
|
265
|
+
if (!hasAnyTypeAnnotation(ctx))
|
|
266
|
+
return straightlineCode;
|
|
267
|
+
const plan = buildTypePlan(ctx.ir);
|
|
268
|
+
// 型宣言は TypedMaterializer seam 経由で綴じる(seam object が dead でない実体である証明。go/rust #47/#48 が
|
|
269
|
+
// 同じ seam に乗る)。
|
|
270
|
+
const decls = tsTypedMaterializer.emitTypeDecls(plan);
|
|
271
|
+
const views = ctx.ir.components
|
|
272
|
+
.filter((c) => c.outputType !== undefined || c.body.some((n) => n.outType !== undefined))
|
|
273
|
+
.map((c) => emitTypedViewFn(c, plan))
|
|
274
|
+
.join("\n\n");
|
|
275
|
+
const typedHeader = `
|
|
276
|
+
// ── typed layer (bc#46 / Layer B2 — TS oracle) ─────────────────────────────────────
|
|
277
|
+
// TS は型消去のため runtime の脱box は無い: 上の bind/bindAsync(straight-line 本体)が唯一の
|
|
278
|
+
// 実行経路であり、その runtime 挙動は typescript-straightline と byte-identical。以下の interface は
|
|
279
|
+
// portable 型記法(outType/outputType)から導出した型で、typedView_* が「node 結果を outType に
|
|
280
|
+
// materialize でき、outputType 型の値を実際に **組み立てられる**」ことを tsc に型検査させる oracle である
|
|
281
|
+
// (const __out: <outputType> = {…}: 導出 interface に対して output assembly の shape 過不足・型・
|
|
282
|
+
// typed field access を検査)。interface の field 集合が outType/outputType と食い違えば tsc が fail する
|
|
283
|
+
// (構造 pin・非空虚)。typedView_* は runtime の bind 経路からは呼ばれない(型検査専用)。
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* typedOracle — 演算子(concat/add/eq/…)値の型検査用 oracle。被演算子(typed field access を含む)を
|
|
287
|
+
* 受けて leaf の型検査を効かせつつ、結果型を呼び出し位置の期待型 T に固定する。演算子意味論は再実装しない
|
|
288
|
+
* (runtime SSoT は straight-line 本体)。型検査専用なので実装は型消去 no-op。
|
|
289
|
+
*/
|
|
290
|
+
function typedOracle<T>(..._operands: unknown[]): T {
|
|
291
|
+
return undefined as unknown as T;
|
|
292
|
+
}
|
|
293
|
+
void typedOracle;
|
|
294
|
+
|
|
295
|
+
${decls}
|
|
296
|
+
|
|
297
|
+
${views}
|
|
298
|
+
`;
|
|
299
|
+
return straightlineCode + "\n" + typedHeader;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* typescriptTypedEmitter — 言語識別子 `typescript-typed` の emitter plugin(bc#46 B2, oracle)。
|
|
303
|
+
* straight-line(`typescript-straightline`)+ typed 層。`outType` 無し IR は straight-line と
|
|
304
|
+
* byte-identical(後方互換)。
|
|
305
|
+
*/
|
|
306
|
+
export const typescriptTypedEmitter = {
|
|
307
|
+
language: "typescript-typed",
|
|
308
|
+
fileExtension: ".ts",
|
|
309
|
+
defaultRuntimeImport: "behavior-contracts",
|
|
310
|
+
filenameHint: "behaviors.typed.generated.ts",
|
|
311
|
+
emit,
|
|
312
|
+
};
|
|
313
|
+
export { TS_SCOPE, TS_MAP_SCOPE };
|
|
314
|
+
//# sourceMappingURL=emit-straightline-typed-typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-straightline-typed-typescript.js","sourceRoot":"","sources":["../../src/generator/emit-straightline-typed-typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* emit-straightline-typescript.ts — TS 直線 emitter(bc#37 / Layer A1, golden oracle)。
|
|
3
|
+
*
|
|
4
|
+
* typed-codegen.md §4.1 の TS 具体化。language-neutral な {@link StraightlineDialect} を実装し、
|
|
5
|
+
* component ごとに「plan を `runPlan` primitive で直呼び・各ノードの port 評価と handler 呼びを
|
|
6
|
+
* 直線展開した」ネイティブ TS 関数を emit する。生成コードは A0(#36)の式演算子 primitive
|
|
7
|
+
* (`codegenPrimitives`)+`runPlan`+`unproducedValue` を直呼びし、**`runBehavior` の
|
|
8
|
+
* tree-walk(nodeKind ディスパッチ / evalPorts / 汎用 output 評価)を経由しない**。
|
|
9
|
+
*
|
|
10
|
+
* 式の綴じ方(意味論の SSoT を再実装しない — AC):
|
|
11
|
+
* 各 Expression IR ノードは、対応する A0 primitive(`ref`/`concat`/`add`/…)の**直呼び**へ
|
|
12
|
+
* 落とす。演算子の被演算子は A0 の契約どおり**未評価 IR リテラル**(`Expr`)で渡す
|
|
13
|
+
* (`and`/`or`/`cond`/`coalesce` の短絡を primitive 内 `evaluate` が保存する)。よって
|
|
14
|
+
* evalPorts の「未知 ports を汎用に歩く」ループは消え、各 port は生成時に確定した名前付き
|
|
15
|
+
* primitive 呼びになる(意味論は evaluate SSoT と完全一致 — 別実装が無い)。
|
|
16
|
+
*
|
|
17
|
+
* この emitter は golden oracle: conformance で「直線生成 ≡ runBehavior ≡ golden」を pin する
|
|
18
|
+
* 権威。go/rust/python/php は A2(#38-41)で同じ枠(StraightlineDialect)に乗る。
|
|
19
|
+
*/
|
|
20
|
+
import type { EmitterPlugin } from "./core.js";
|
|
21
|
+
import { type StraightlineDialect } from "./straightline.js";
|
|
22
|
+
/**
|
|
23
|
+
* 公開再エクスポート(bc#46 B2 typed emitter が同じ TS dialect / scope 名を流用するため)。
|
|
24
|
+
* typed 経路は runtime 本体をこの straight-line dialect で綴じ、byte 同一の runtime を保つ。
|
|
25
|
+
*/
|
|
26
|
+
export declare const straightlineTsDialect: StraightlineDialect;
|
|
27
|
+
/** 生成コード内の scope 式(`scope()`)。typed emitter が同名で port/output を評価する。 */
|
|
28
|
+
export declare const TS_SCOPE = "scope()";
|
|
29
|
+
/** 生成コード内の map 要素 scope 式(`mscope()`)。 */
|
|
30
|
+
export declare const TS_MAP_SCOPE = "mscope()";
|
|
31
|
+
/**
|
|
32
|
+
* typescriptStraightlineEmitter — 言語識別子 `"typescript-straightline"` の emitter plugin。
|
|
33
|
+
* 既存の `typescript`(リテラル焼き込み・endpoint 3-literal)と併存する additive な第2モード。
|
|
34
|
+
*/
|
|
35
|
+
export declare const typescriptStraightlineEmitter: EmitterPlugin;
|
|
36
|
+
//# sourceMappingURL=emit-straightline-typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-straightline-typescript.d.ts","sourceRoot":"","sources":["../../src/generator/emit-straightline-typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAmY3B;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,mBAA6B,CAAC;AAClE,uEAAuE;AACvE,eAAO,MAAM,QAAQ,YAAQ,CAAC;AAC9B,0CAA0C;AAC1C,eAAO,MAAM,YAAY,aAAY,CAAC;AAMtC;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,aAM3C,CAAC"}
|