numtypes 0.0.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/CHANGELOG.md +6 -0
- package/LICENSE +12 -0
- package/LICENSE-APACHE +201 -0
- package/LICENSE-MIT +21 -0
- package/README.md +652 -0
- package/dist/lib/index.d.ts +22 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/transformer/analyze/analyze-source-file.d.ts +15 -0
- package/dist/transformer/analyze/analyze-source-file.d.ts.map +1 -0
- package/dist/transformer/analyze/analyze-source-file.js +605 -0
- package/dist/transformer/analyze/analyze-source-file.js.map +1 -0
- package/dist/transformer/analyze/get-contextual-domain.d.ts +19 -0
- package/dist/transformer/analyze/get-contextual-domain.d.ts.map +1 -0
- package/dist/transformer/analyze/get-contextual-domain.js +197 -0
- package/dist/transformer/analyze/get-contextual-domain.js.map +1 -0
- package/dist/transformer/analyze/get-expression-domain.d.ts +26 -0
- package/dist/transformer/analyze/get-expression-domain.d.ts.map +1 -0
- package/dist/transformer/analyze/get-expression-domain.js +804 -0
- package/dist/transformer/analyze/get-expression-domain.js.map +1 -0
- package/dist/transformer/analyze/type-domain.d.ts +41 -0
- package/dist/transformer/analyze/type-domain.d.ts.map +1 -0
- package/dist/transformer/analyze/type-domain.js +260 -0
- package/dist/transformer/analyze/type-domain.js.map +1 -0
- package/dist/transformer/ast.d.ts +10 -0
- package/dist/transformer/ast.d.ts.map +1 -0
- package/dist/transformer/ast.js +115 -0
- package/dist/transformer/ast.js.map +1 -0
- package/dist/transformer/diagnostics.d.ts +17 -0
- package/dist/transformer/diagnostics.d.ts.map +1 -0
- package/dist/transformer/diagnostics.js +30 -0
- package/dist/transformer/diagnostics.js.map +1 -0
- package/dist/transformer/domains.d.ts +11 -0
- package/dist/transformer/domains.d.ts.map +1 -0
- package/dist/transformer/domains.js +32 -0
- package/dist/transformer/domains.js.map +1 -0
- package/dist/transformer/index.d.ts +10 -0
- package/dist/transformer/index.d.ts.map +1 -0
- package/dist/transformer/index.js +60 -0
- package/dist/transformer/index.js.map +1 -0
- package/dist/transformer/operators.d.ts +16 -0
- package/dist/transformer/operators.d.ts.map +1 -0
- package/dist/transformer/operators.js +44 -0
- package/dist/transformer/operators.js.map +1 -0
- package/dist/transformer/options.d.ts +19 -0
- package/dist/transformer/options.d.ts.map +1 -0
- package/dist/transformer/options.js +17 -0
- package/dist/transformer/options.js.map +1 -0
- package/dist/transformer/symbols.d.ts +56 -0
- package/dist/transformer/symbols.d.ts.map +1 -0
- package/dist/transformer/symbols.js +270 -0
- package/dist/transformer/symbols.js.map +1 -0
- package/dist/transformer/transform/erase-imports.d.ts +14 -0
- package/dist/transformer/transform/erase-imports.d.ts.map +1 -0
- package/dist/transformer/transform/erase-imports.js +174 -0
- package/dist/transformer/transform/erase-imports.js.map +1 -0
- package/dist/transformer/transform/generated-coercions.d.ts +9 -0
- package/dist/transformer/transform/generated-coercions.d.ts.map +1 -0
- package/dist/transformer/transform/generated-coercions.js +22 -0
- package/dist/transformer/transform/generated-coercions.js.map +1 -0
- package/dist/transformer/transform/optimize-coercions.d.ts +11 -0
- package/dist/transformer/transform/optimize-coercions.d.ts.map +1 -0
- package/dist/transformer/transform/optimize-coercions.js +1702 -0
- package/dist/transformer/transform/optimize-coercions.js.map +1 -0
- package/dist/transformer/transform/transform-declaration-file.d.ts +9 -0
- package/dist/transformer/transform/transform-declaration-file.d.ts.map +1 -0
- package/dist/transformer/transform/transform-declaration-file.js +376 -0
- package/dist/transformer/transform/transform-declaration-file.js.map +1 -0
- package/dist/transformer/transform/transform-expression.d.ts +24 -0
- package/dist/transformer/transform/transform-expression.d.ts.map +1 -0
- package/dist/transformer/transform/transform-expression.js +545 -0
- package/dist/transformer/transform/transform-expression.js.map +1 -0
- package/dist/transformer/transform/transform-source-file.d.ts +10 -0
- package/dist/transformer/transform/transform-source-file.d.ts.map +1 -0
- package/dist/transformer/transform/transform-source-file.js +52 -0
- package/dist/transformer/transform/transform-source-file.js.map +1 -0
- package/dist/transformer/ts-compat.d.ts +4 -0
- package/dist/transformer/ts-compat.d.ts.map +1 -0
- package/dist/transformer/ts-compat.js +24 -0
- package/dist/transformer/ts-compat.js.map +1 -0
- package/docs/implementation-plan.md +335 -0
- package/docs/lib-implementation.md +77 -0
- package/docs/lowering-optimization-spec.md +1020 -0
- package/docs/project-structure.md +52 -0
- package/docs/transform-spec.md +2114 -0
- package/package.json +83 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-expression-domain.js","sourceRoot":"","sources":["../../../src/transformer/analyze/get-expression-domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,qCAAqC,EACrC,0BAA0B,EAC3B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAWtD,MAAM,mCAAmC,GAGrC,IAAI,GAAG,CAAkD;IAC3D,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC;IAC9B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC;CAChC,CAAC,CAAC;AACH,MAAM,oCAAoC,GAGtC,IAAI,GAAG,CAA0C;IACnD,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC;IAC9B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC;IAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC;IAClC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC;IAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC;IACjC,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,IAAI,CAAC;CAC5C,CAAC,CAAC;AACH,MAAM,kCAAkC,GAGpC,IAAI,GAAG,CAAwC;IACjD,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC;IACnC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC;IAC7B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC;IAC/B,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,IAAI,CAAC;IAC3C,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC;IACjD,CAAC,EAAE,CAAC,UAAU,CAAC,sCAAsC,EAAE,KAAK,CAAC;CAC9D,CAAC,CAAC;AACH,MAAM,sCAAsC,GAGxC,IAAI,GAAG,CAA0C;IACnD,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,CAAC;IACpC,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACrC,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,GAAG,CAAC;IACxC,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACrC,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACvC,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC;CAClD,CAAC,CAAC;AACH,MAAM,mCAAmC,GAGrC,IAAI,GAAG,CAAwC;IACjD,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,EAAE,GAAG,CAAC;IACzC,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC;IACnC,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACrC,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC;IACjD,CAAC,EAAE,CAAC,UAAU,CAAC,iCAAiC,EAAE,IAAI,CAAC;IACvD,CAAC,EAAE,CAAC,UAAU,CAAC,4CAA4C,EAAE,KAAK,CAAC;CACpE,CAAC,CAAC;AAwDH,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,OAAO,EAAsD,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAA4B;IAE5B,OAAO,iBAAiB,CAAC;QACvB,GAAG,KAAK;QACR,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,2BAA2B,EAAE;KACpD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAoC;IAEpC,MAAM,UAAU,GAAkB,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,YAAY,GAAuC,eAAe,CACtE,KAAK,CAAC,KAAK,EACX,UAAU,EACV,KAAK,CAAC,gBAAgB,CACvB,CAAC;IAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAA2B,yBAAyB,CAAC;QAC/D,GAAG,KAAK;QACR,UAAU;KACX,CAAC,CAAC;IAEH,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAEzE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAoC;IAEpC,MAAM,UAAU,GAAkB,KAAK,CAAC,UAAU,CAAC;IAEnD,IAAI,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,OAAO,sBAAsB,CAAC;YAC5B,WAAW,EAAE,EAAE;YACf,MAAM,EAAE,KAAK,CAAC,gBAAgB;YAC9B,MAAM,EAAE,oBAAoB;YAC5B,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,sBAAsB,CAAC;YAC5B,WAAW,EAAE,EAAE;YACf,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,iBAAiB,CAAC;YACvB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,UAAU,EAAE,qCAAqC,CAAC,UAAU,CAAC;YAC7D,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,MAAM,YAAY,GAChB,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAE7C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,EAAE,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,YAAY,GAChB,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAE7C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAoC,EACpC,UAAgE;IAEhE,MAAM,QAAQ,GACZ,UAAU,CAAC,QAAQ,CAAC;IAEtB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAA2B,iBAAiB,CAAC;QACxD,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,OAAO;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,wBAAwB,GAC5B,sCAAsC,CACpC,UAAU,EACV,qBAAqB,CAAC,QAAQ,CAAC,EAC/B,OAAO,CACR,CAAC;IAEJ,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,sBAAsB,CAAC;YAC5B,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,wBAAwB,CAAC;YAC/D,MAAM,EAAE,SAAS;YACjB,yBAAyB,EAAE,OAAO,CAAC,yBAAyB;YAC5D,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,KAAK;YACtB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,OAAO,sBAAsB,CAAC;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,yBAAyB,EAAE,OAAO,CAAC,yBAAyB;YAC5D,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,eAAe,EAAE,KAAK;YACtB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,UAAU;QAClB,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAoC,EACpC,UAA6B;IAE7B,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE/D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,sBAAsB,CAAC;YAC5B,WAAW,EAAE;gBACX,gBAAgB,CACd,yBAAyB,EACzB,gCAAgC,qBAAqB,CAAC,OAAO,CAAC,+BAA+B,EAC7F,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,CAC7C;aACF;YACD,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,mBAAmB,GACvB,UAAU,CAAC,SAAS,CAAC,OAAO,CAC1B,CAAC,QAAuB,EAAoC,EAAE,CAC5D,iBAAiB,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC,WAAW,CACjB,CAAC;IACJ,MAAM,kBAAkB,GACtB,2BAA2B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,sBAAsB,CAAC;YAC5B,WAAW,EAAE,CAAC,GAAG,mBAAmB,EAAE,kBAAkB,CAAC;YACzD,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,mBAAmB;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,WAAW;QACnB,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,2BAA2B,CAClC,UAA6B,EAC7B,OAA6B;IAE7B,MAAM,WAAW,GAAW,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE3D,IACE,UAAU,CAAC,gBAAgB,KAAK,SAAS;QACzC,+BAA+B,CAAC,UAAU,CAAC,UAAU,CAAC;QACtD,UAAU,CAAC,aAAa,KAAK,SAAS,EACtC,CAAC;QACD,OAAO,gBAAgB,CACrB,6BAA6B,EAC7B,2BAA2B,WAAW,gCAAgC,WAAW,SAAS,EAC1F,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,gBAAgB,CACrB,6BAA6B,EAC7B,2BAA2B,WAAW,4CAA4C,EAClF,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAA8B,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEpE,IAAI,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,gBAAgB,CACrB,6BAA6B,EAC7B,2BAA2B,WAAW,gCAAgC,WAAW,SAAS,EAC1F,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,+BAA+B,CAAC,UAAyB;IAChE,OAAO,CACL,EAAE,CAAC,0BAA0B,CAAC,UAAU,CAAC;QACzC,UAAU,CAAC,gBAAgB,KAAK,SAAS,CAC1C,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAoC,EACpC,UAAoC;IAEpC,MAAM,QAAQ,GACZ,0BAA0B,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAElD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,OAAO,GAA2B,iBAAiB,CAAC;QACxD,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,OAAO;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,wBAAwB,GAC5B,sCAAsC,CACpC,UAAU,EACV,oBAAoB,CAAC,QAAQ,CAAC,EAC9B,OAAO,CACR,CAAC;IAEJ,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,sBAAsB,CAAC;YAC5B,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,wBAAwB,CAAC;YAC/D,MAAM,EAAE,SAAS;YACjB,yBAAyB,EAAE,OAAO,CAAC,yBAAyB;YAC5D,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,KAAK;YACtB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,OAAO,sBAAsB,CAAC;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,yBAAyB,EAAE,OAAO,CAAC,yBAAyB;YAC5D,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,eAAe,EAAE,KAAK;YACtB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,UAAU;QAClB,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAoC,EACpC,UAA+B;IAE/B,MAAM,kBAAkB,GACtB,2BAA2B,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE7D,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;YAC/C,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,kBAAkB;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,eAAe,GACnB,yBAAyB,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE3D,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;YAC/C,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,eAAe;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,0BAA0B,GAC9B,6BAA6B,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE/D,IAAI,0BAA0B,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,mCAAmC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,uBAAuB,GAC3B,0BAA0B,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAE5D,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,mCAAmC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,mCAAmC,CAC1C,KAAoC,EACpC,UAA+B;IAE/B,MAAM,IAAI,GAA2B,iBAAiB,CAAC;QACrD,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,KAAK,GAA2B,iBAAiB,CAAC;QACtD,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,KAAK;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,YAAY,GAChB,gCAAgC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAClD,MAAM,yBAAyB,GAC7B,IAAI,CAAC,yBAAyB,KAAK,IAAI;QACvC,KAAK,CAAC,yBAAyB,KAAK,IAAI,CAAC;IAE3C,IACE,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,YAAY,KAAK,SAAS,EAC1B,CAAC;QACD,OAAO,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE;YACX,GAAG,IAAI,CAAC,WAAW;YACnB,GAAG,KAAK,CAAC,WAAW;YACpB,gBAAgB,CACd,0CAA0C,EAC1C,mCAAmC,yBAAyB,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,4DAA4D,EACvJ,qBAAqB,CAAC,UAAU,CAAC,CAClC;SACF;QACD,MAAM,EAAE,SAAS;QACjB,yBAAyB;QACzB,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,KAAK;QACtB,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAoC,EACpC,UAAoC;IAEpC,MAAM,SAAS,GAA2B,iBAAiB,CAAC;QAC1D,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,SAAS;QAChC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,kBAAkB,GAA2B,iBAAiB,CAAC;QACnE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,mBAAmB,GAA2B,iBAAiB,CAAC;QACpE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,SAAS;QAChC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,gBAAgB,GACpB,KAAK,CAAC,gBAAgB;QACtB,oCAAoC,CAClC,kBAAkB,CAAC,MAAM,EACzB,mBAAmB,CAAC,MAAM,CAC3B,CAAC;IACJ,MAAM,QAAQ,GAA2B,iBAAiB,CAAC;QACzD,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB;QAChB,UAAU,EAAE,UAAU,CAAC,QAAQ;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,SAAS,GAA2B,iBAAiB,CAAC;QAC1D,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB;QAChB,UAAU,EAAE,UAAU,CAAC,SAAS;QAChC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,YAAY,GAChB,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,WAAW,GAAqC;QACpD,GAAG,SAAS,CAAC,WAAW;QACxB,GAAG,QAAQ,CAAC,WAAW;QACvB,GAAG,SAAS,CAAC,WAAW;KACzB,CAAC;IACF,MAAM,WAAW,GACf,KAAK,CAAC,gBAAgB,KAAK,SAAS;QAClC,CAAC,CAAC,mCAAmC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;QACtE,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,sBAAsB,CAAC;YAC5B,WAAW,EAAE,CAAC,GAAG,WAAW,EAAE,WAAW,CAAC;YAC1C,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,KAAK;YACtB,yBAAyB,EAAE,YAAY,EAAE,oBAAoB;YAC7D,YAAY,EAAE,YAAY,EAAE,OAAO;SACpC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAe,0BAA0B,CACnD,QAAQ,CAAC,MAAM,EACf,SAAS,CAAC,MAAM,EAChB,gBAAgB,CACjB,CAAC;IAEF,OAAO,sBAAsB,CAAC;QAC5B,WAAW;QACX,MAAM;QACN,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QACrD,eAAe,EACb,mBAAmB,CAAC,MAAM,CAAC,IAAI,YAAY,KAAK,SAAS;QAC3D,yBAAyB,EAAE,YAAY,EAAE,oBAAoB;QAC7D,YAAY,EAAE,YAAY,EAAE,OAAO;KACpC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mCAAmC,CAC1C,UAAoC,EACpC,QAAgC,EAChC,SAAiC;IAEjC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAClF,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAChF,OAAO,gBAAgB,CACrB,0BAA0B,EAC1B,iBAAiB,QAAQ,CAAC,MAAM,mCAAmC,EACnE,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,IAAI,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,OAAO,gBAAgB,CACrB,0BAA0B,EAC1B,4BAA4B,SAAS,CAAC,MAAM,wBAAwB,EACpE,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,MAAM,kBAAkB,GACtB,kCAAkC,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,mBAAmB,GACvB,kCAAkC,CAAC,SAAS,CAAC,CAAC;IAEhD,IACE,kBAAkB,EAAE,OAAO,KAAK,IAAI;QACpC,SAAS,CAAC,MAAM,KAAK,cAAc,EACnC,CAAC;QACD,OAAO,gBAAgB,CACrB,0BAA0B,EAC1B,kCAAkC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,mCAAmC,EAC3G,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,IACE,QAAQ,CAAC,MAAM,KAAK,cAAc;QAClC,mBAAmB,EAAE,OAAO,KAAK,IAAI,EACrC,CAAC;QACD,OAAO,gBAAgB,CACrB,0BAA0B,EAC1B,6CAA6C,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAC5G,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,yBAAyB,CAChC,QAAgC,EAChC,SAAiC;IAEjC,MAAM,aAAa,GACjB,kCAAkC,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,cAAc,GAClB,kCAAkC,CAAC,SAAS,CAAC,CAAC;IAEhD,IAAI,aAAa,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,OAAO,EAAE,cAAc,EAAE,OAAO,IAAI,EAAE;YACtC,oBAAoB,EAAE,IAAI;YAC1B,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,oBAAoB,EAAE,IAAI;YAC1B,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAgB;QACrC,GAAG,aAAa,CAAC,OAAO;QACxB,GAAG,cAAc,CAAC,OAAO;KAC1B,CAAC,CAAC;IACH,MAAM,oBAAoB,GACxB,aAAa,CAAC,oBAAoB;QAClC,cAAc,CAAC,oBAAoB,CAAC;IACtC,MAAM,OAAO,GACX,aAAa,CAAC,OAAO;QACrB,cAAc,CAAC,OAAO;QACtB,OAAO,CAAC,IAAI,GAAG,CAAC;QAChB,oBAAoB,CAAC;IAEvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC;QACpC,oBAAoB;QACpB,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CACzC,MAA8B;IAE9B,IAAI,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,OAAO;YACL,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;YACxB,oBAAoB,EAAE,KAAK;YAC3B,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,YAAY;YAC5B,oBAAoB,EAAE,MAAM,CAAC,yBAAyB,KAAK,IAAI;YAC/D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAoC,EACpC,UAA+B,EAC/B,SAGC;IAED,MAAM,kBAAkB,GAA2B,iBAAiB,CAAC;QACnE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,mBAAmB,GAA2B,iBAAiB,CAAC;QACpE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,KAAK;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,gBAAgB,GAA8B,yBAAyB,CAC3E,kBAAkB,CAAC,MAAM,EACzB,mBAAmB,CAAC,MAAM,CAC3B,CAAC;IACF,MAAM,IAAI,GAAoB,oBAAoB,CAChD,KAAK,EACL,UAAU,CAAC,IAAI,EACf,gBAAgB,CACjB,CAAC;IACF,MAAM,KAAK,GAAoB,oBAAoB,CACjD,KAAK,EACL,UAAU,CAAC,KAAK,EAChB,gBAAgB,CACjB,CAAC;IACF,MAAM,WAAW,GAA4B;QAC3C,GAAG,IAAI,CAAC,WAAW;QACnB,GAAG,KAAK,CAAC,WAAW;KACrB,CAAC;IACF,MAAM,YAAY,GAChB,+BAA+B,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,MAAM,yBAAyB,GAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAC3D,CAAC,OAAwB,EAAW,EAAE,CACpC,OAAO,CAAC,yBAAyB,KAAK,IAAI,CAC7C,CAAC;IACF,MAAM,YAAY,GAAe,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClF,MAAM,WAAW,GAAsC,wBAAwB,CAC7E,UAAU,EACV,SAAS,CAAC,QAAQ,EAClB,IAAI,EACJ,KAAK,CACN,CAAC;IAEF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9B,OAAO,sBAAsB,CAAC;YAC5B,WAAW;YACX,MAAM,EAAE,SAAS;YACjB,yBAAyB;YACzB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,KAAK;YACtB,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,KAAK,cAAc,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAClE,OAAO,sBAAsB,CAAC;YAC5B,WAAW;YACX,MAAM,EAAE,YAAY;YACpB,yBAAyB;YACzB,MAAM,EAAE,YAAY,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC5D,eAAe,EAAE,KAAK;YACtB,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,IACE,SAAS,CAAC,IAAI,KAAK,SAAS;QAC5B,CAAC,uBAAuB,CACtB,YAAY,EACZ,SAAS,CAAC,QAAkC,CAC7C,EACD,CAAC;QACD,WAAW,CAAC,IAAI,CACd,gBAAgB,CACd,wBAAwB,EACxB,kCAAkC,SAAS,CAAC,QAAQ,QAAQ,YAAY,EAAE,EAC1E,qBAAqB,CAAC,UAAU,CAAC,CAClC,CACF,CAAC;QAEF,OAAO,sBAAsB,CAAC;YAC5B,WAAW;YACX,MAAM,EAAE,SAAS;YACjB,yBAAyB;YACzB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,KAAK;YACtB,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,OAAO,sBAAsB,CAAC;QAC5B,WAAW;QACX,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,UAAU;QAClB,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAoC,EACpC,UAAyB,EACzB,gBAA2C;IAE3C,MAAM,MAAM,GAA2B,iBAAiB,CAAC;QACvD,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB;QAChB,UAAU;QACV,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU;QACV,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;QAC3D,mBAAmB,EAAE,MAAM,CAAC,MAAM,KAAK,oBAAoB;QAC3D,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAoC,EACpC,UAAyB;IAEzB,MAAM,UAAU,GAAG,aAAa,CAAC;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC;KAClD,CAAC,CAAC;IAEH,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,yBAAyB,EAAE,UAAU,CAAC,yBAAyB;QAC/D,MAAM,EAAE,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QAC5D,eAAe,EAAE,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC;QACvD,YAAY,EAAE,UAAU,CAAC,YAAY;KACtC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,KAO/B;IACC,MAAM,MAAM,GAA2B;QACrC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,aAAa,EACX,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;YACjC,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QACrE,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC;IAEF,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,OAAO;YACL,GAAG,MAAM;YACT,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,KAAK,IAAI;YACnE,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,+BAA+B,CACtC,QAAoC;IAEpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAEzC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,gCAAgC,CACvC,OAA0C;IAE1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,yBAAyB,CAChC,UAAsB,EACtB,WAAuB;IAEvB,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACtE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,mBAAmB,CAAC,WAAW,CAAC,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;QACtE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,oCAAoC,CAC3C,UAAsB,EACtB,WAAuB;IAEvB,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACtE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,mBAAmB,CAAC,WAAW,CAAC,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;QACtE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAAsB,EACtB,WAAuB;IAEvB,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;QACxE,OAAO,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC;IAED,IAAI,UAAU,KAAK,cAAc,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACpE,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACtE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,UAAU,KAAK,cAAc,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;QACtE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,0BAA0B,CACjC,UAAsB,EACtB,WAAuB,EACvB,gBAA2C;IAE3C,IACE,gBAAgB,KAAK,SAAS;QAC9B,UAAU,KAAK,gBAAgB;QAC/B,WAAW,KAAK,gBAAgB,EAChC,CAAC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;QACxE,OAAO,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC;IAED,IAAI,UAAU,KAAK,cAAc,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACpE,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CACtB,KAA4B,EAC5B,UAAyB,EACzB,gBAA2C;IAE3C,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CACtB,KAA4B,EAC5B,UAAyB,EACzB,gBAA2C,EAC3C,MAA8B;IAE9B,MAAM,QAAQ,GAAW,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,eAAe,GACnB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAAkC,CAAC;IAErE,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,gBAA2C;IAC9D,OAAO,gBAAgB,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,wBAAwB,CAC/B,UAA+B,EAC/B,QAA2D,EAC3D,IAAqB,EACrB,KAAsB;IAEtB,MAAM,YAAY,GAChB,+BAA+B,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,gBAAgB,CACrB,4BAA4B,EAC5B,UAAU,eAAe,CAAC,QAAQ,CAAC,qBAAqB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,kDAAkD,EAClI,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAe,IAAI,CAAC,MAAM,CAAC;IAC3C,MAAM,WAAW,GAAe,KAAK,CAAC,MAAM,CAAC;IAE7C,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;QACxE,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC/B,OAAO,gBAAgB,CACrB,uBAAuB,EACvB,UAAU,eAAe,CAAC,QAAQ,CAAC,IAAI,UAAU,QAAQ,WAAW,wBAAwB,EAC5F,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IACE,mBAAmB,CAAC,UAAU,CAAC;QAC/B,WAAW,KAAK,cAAc;QAC9B,CAAC,KAAK,CAAC,mBAAmB,EAC1B,CAAC;QACD,OAAO,gBAAgB,CACrB,0BAA0B,EAC1B,UAAU,eAAe,CAAC,QAAQ,CAAC,IAAI,UAAU,mCAAmC,EACpF,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,IACE,UAAU,KAAK,cAAc;QAC7B,mBAAmB,CAAC,WAAW,CAAC;QAChC,CAAC,IAAI,CAAC,mBAAmB,EACzB,CAAC;QACD,OAAO,gBAAgB,CACrB,0BAA0B,EAC1B,UAAU,eAAe,CAAC,QAAQ,CAAC,eAAe,WAAW,wBAAwB,EACrF,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,0BAA0B,CACjC,UAAyB,EACzB,gBAA2C;IAE3C,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAW,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAEhE,IAAI,gBAAgB,KAAK,KAAK,IAAI,gBAAgB,KAAK,KAAK,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,gBAAgB,KAAK,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAyB;IACrD,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC;QACtC,CAAC,UAAU,CAAC,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU;YAC/C,UAAU,CAAC,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAClD,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAyB;IACvD,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,IACE,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC;QACtC,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,EACvC,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9C,OAAO,UAAU,CAAC,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3E,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC;AAED,SAAS,0BAA0B,CACjC,QAAgC;IAEhC,OAAO,mCAAmC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAuB;IAEvB,OAAO,oCAAoC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,yBAAyB,CAChC,QAAuB;IAEvB,OAAO,kCAAkC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,6BAA6B,CACpC,QAAuB;IAEvB,OAAO,sCAAsC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,0BAA0B,CACjC,QAAuB;IAEvB,OAAO,mCAAmC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAuB;IACxD,OAAO,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CACtB,QAA2D;IAE3D,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,GAAG;YACN,OAAO,KAAK,CAAC;QACf,KAAK,GAAG;YACN,OAAO,UAAU,CAAC;QACpB,KAAK,GAAG;YACN,OAAO,UAAU,CAAC;QACpB,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;QAClB,KAAK,GAAG;YACN,OAAO,WAAW,CAAC;QACrB,KAAK,IAAI;YACP,OAAO,cAAc,CAAC;QACxB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,KAAK;YACR,OAAO,mBAAmB,QAAQ,MAAM,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAiC;IAC7D,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,GAAG;YACN,OAAO,oBAAoB,CAAC;QAC9B,KAAK,GAAG;YACN,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAAwB;IAExB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;YAC9B,OAAO,WAAW,CAAC;QACrB,KAAK,EAAE,CAAC,UAAU,CAAC,eAAe;YAChC,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,QAA0D;IAE1D,OAAO,CACL,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;QACxC,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,eAAe,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,sCAAsC,CAC7C,UAAyB,EACzB,aAAqB,EACrB,OAA+B;IAE/B,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1E,OAAO,gBAAgB,CACrB,4BAA4B,EAC5B,UAAU,aAAa,qBAAqB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,kDAAkD,EAC9H,qBAAqB,CAAC,UAAU,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,UAAyB;IAChD,IAAI,OAAO,GAAkB,UAAU,CAAC;IAExC,OAAO,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAyB;IAEzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAkB,IAAI,CAAC,aAAa,EAAE,CAAC;IAEvD,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACjC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;KACjC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
import type { NumericDomain } from "../domains.js";
|
|
3
|
+
import type { TransformerDiagnostic } from "../diagnostics.js";
|
|
4
|
+
import type { NumtypeSymbolTable } from "../symbols.js";
|
|
5
|
+
export type TypeDomain = NumericDomain | "plain-number" | "unknown";
|
|
6
|
+
export type TypeDomainReason = "ambiguous-intersection" | "annotation" | "branded-alias" | "inferred-type" | "numeric-union" | "plain-number" | "unknown";
|
|
7
|
+
export interface TypeDomainResult {
|
|
8
|
+
readonly diagnostics: readonly TransformerDiagnostic[];
|
|
9
|
+
readonly domain: TypeDomain;
|
|
10
|
+
readonly hasNonNumericUnionMembers?: boolean | undefined;
|
|
11
|
+
readonly reason: TypeDomainReason;
|
|
12
|
+
readonly unionDomains?: readonly NumericDomain[] | undefined;
|
|
13
|
+
}
|
|
14
|
+
export interface TypeDomainInput {
|
|
15
|
+
readonly checker: ts.TypeChecker;
|
|
16
|
+
readonly node?: ts.Node | undefined;
|
|
17
|
+
readonly symbols: NumtypeSymbolTable;
|
|
18
|
+
readonly type: ts.Type;
|
|
19
|
+
}
|
|
20
|
+
export interface TypeNodeDomainInput {
|
|
21
|
+
readonly checker: ts.TypeChecker;
|
|
22
|
+
readonly symbols: NumtypeSymbolTable;
|
|
23
|
+
readonly typeNode: ts.TypeNode;
|
|
24
|
+
}
|
|
25
|
+
export type DomainDeclaration = ts.ParameterDeclaration | ts.PropertyDeclaration | ts.PropertySignature | ts.VariableDeclaration;
|
|
26
|
+
export interface DeclarationDomainInput {
|
|
27
|
+
readonly checker: ts.TypeChecker;
|
|
28
|
+
readonly declaration: DomainDeclaration;
|
|
29
|
+
readonly symbols: NumtypeSymbolTable;
|
|
30
|
+
}
|
|
31
|
+
export interface FunctionReturnDomainInput {
|
|
32
|
+
readonly checker: ts.TypeChecker;
|
|
33
|
+
readonly declaration: ts.SignatureDeclaration;
|
|
34
|
+
readonly symbols: NumtypeSymbolTable;
|
|
35
|
+
}
|
|
36
|
+
export declare function getTypeDomain(input: TypeDomainInput): TypeDomainResult;
|
|
37
|
+
export declare function getTypeNodeDomain(input: TypeNodeDomainInput): TypeDomainResult;
|
|
38
|
+
export declare function getDeclarationDomain(input: DeclarationDomainInput): TypeDomainResult;
|
|
39
|
+
export declare function getFunctionReturnDomain(input: FunctionReturnDomainInput): TypeDomainResult;
|
|
40
|
+
export declare function isNumericTypeDomain(domain: TypeDomain): domain is NumericDomain;
|
|
41
|
+
//# sourceMappingURL=type-domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-domain.d.ts","sourceRoot":"","sources":["../../../src/transformer/analyze/type-domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAwB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE9E,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GACxB,wBAAwB,GACxB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,eAAe,GACf,cAAc,GACd,SAAS,CAAC;AAEd,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;CAC9D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;CAChC;AAED,MAAM,MAAM,iBAAiB,GACzB,EAAE,CAAC,oBAAoB,GACvB,EAAE,CAAC,mBAAmB,GACtB,EAAE,CAAC,iBAAiB,GACpB,EAAE,CAAC,mBAAmB,CAAC;AAE3B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAEtE;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,mBAAmB,GACzB,gBAAgB,CA4BlB;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,sBAAsB,GAC5B,gBAAgB,CAelB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,GAC/B,gBAAgB,CAclB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,IAAI,aAAa,CAE/E"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
import { sortNumericDomains } from "../domains.js";
|
|
3
|
+
import { createDiagnostic } from "../diagnostics.js";
|
|
4
|
+
export function getTypeDomain(input) {
|
|
5
|
+
return getTypeDomainInternal(input, new Set());
|
|
6
|
+
}
|
|
7
|
+
export function getTypeNodeDomain(input) {
|
|
8
|
+
const directDomain = getDirectTypeNodeDomain(input.symbols, input.typeNode);
|
|
9
|
+
if (directDomain !== undefined) {
|
|
10
|
+
return {
|
|
11
|
+
diagnostics: [],
|
|
12
|
+
domain: directDomain,
|
|
13
|
+
reason: "annotation"
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
if (input.typeNode.kind === ts.SyntaxKind.NumberKeyword) {
|
|
17
|
+
return {
|
|
18
|
+
diagnostics: [],
|
|
19
|
+
domain: "plain-number",
|
|
20
|
+
reason: "plain-number"
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return getTypeDomain({
|
|
24
|
+
checker: input.checker,
|
|
25
|
+
node: input.typeNode,
|
|
26
|
+
symbols: input.symbols,
|
|
27
|
+
type: input.checker.getTypeAtLocation(input.typeNode)
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function getDeclarationDomain(input) {
|
|
31
|
+
if (input.declaration.type !== undefined) {
|
|
32
|
+
return getTypeNodeDomain({
|
|
33
|
+
checker: input.checker,
|
|
34
|
+
symbols: input.symbols,
|
|
35
|
+
typeNode: input.declaration.type
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return getTypeDomain({
|
|
39
|
+
checker: input.checker,
|
|
40
|
+
node: input.declaration.name,
|
|
41
|
+
symbols: input.symbols,
|
|
42
|
+
type: input.checker.getTypeAtLocation(input.declaration.name)
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export function getFunctionReturnDomain(input) {
|
|
46
|
+
if (input.declaration.type === undefined) {
|
|
47
|
+
return {
|
|
48
|
+
diagnostics: [],
|
|
49
|
+
domain: "unknown",
|
|
50
|
+
reason: "unknown"
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return getTypeNodeDomain({
|
|
54
|
+
checker: input.checker,
|
|
55
|
+
symbols: input.symbols,
|
|
56
|
+
typeNode: input.declaration.type
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
export function isNumericTypeDomain(domain) {
|
|
60
|
+
return domain !== "plain-number" && domain !== "unknown";
|
|
61
|
+
}
|
|
62
|
+
function getTypeDomainInternal(input, seenTypes) {
|
|
63
|
+
if (seenTypes.has(input.type)) {
|
|
64
|
+
return {
|
|
65
|
+
diagnostics: [],
|
|
66
|
+
domain: "unknown",
|
|
67
|
+
reason: "unknown"
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
seenTypes.add(input.type);
|
|
71
|
+
const aliasBinding = getBindingForTypeAlias(input.symbols, input.type);
|
|
72
|
+
if (aliasBinding !== undefined) {
|
|
73
|
+
return {
|
|
74
|
+
diagnostics: [],
|
|
75
|
+
domain: aliasBinding.domain,
|
|
76
|
+
reason: "branded-alias"
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const brandPropertyDomains = getBrandPropertyDomains(input.checker, input.symbols, input.type);
|
|
80
|
+
if (brandPropertyDomains.length === 1) {
|
|
81
|
+
return {
|
|
82
|
+
diagnostics: [],
|
|
83
|
+
domain: brandPropertyDomains[0] ?? "unknown",
|
|
84
|
+
reason: "branded-alias"
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
if (brandPropertyDomains.length > 1) {
|
|
88
|
+
return {
|
|
89
|
+
diagnostics: [
|
|
90
|
+
createDiagnostic("NUMTYPES_AMBIGUOUS_INTERSECTION", `ambiguous branded intersection containing ${brandPropertyDomains.join(" & ")}`, getDiagnosticLocation(input.node))
|
|
91
|
+
],
|
|
92
|
+
domain: "unknown",
|
|
93
|
+
reason: "ambiguous-intersection"
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (input.type.isUnion()) {
|
|
97
|
+
return getUnionTypeDomain(input, seenTypes);
|
|
98
|
+
}
|
|
99
|
+
if (input.type.isIntersection()) {
|
|
100
|
+
return getIntersectionTypeDomain(input, seenTypes);
|
|
101
|
+
}
|
|
102
|
+
if (isPlainNumberType(input.type)) {
|
|
103
|
+
return {
|
|
104
|
+
diagnostics: [],
|
|
105
|
+
domain: "plain-number",
|
|
106
|
+
reason: "plain-number"
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
diagnostics: [],
|
|
111
|
+
domain: "unknown",
|
|
112
|
+
reason: "unknown"
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function getDirectTypeNodeDomain(symbols, typeNode) {
|
|
116
|
+
if (ts.isTypeReferenceNode(typeNode) &&
|
|
117
|
+
ts.isIdentifier(typeNode.typeName)) {
|
|
118
|
+
return symbols.getBindingForIdentifier(typeNode.typeName)?.domain;
|
|
119
|
+
}
|
|
120
|
+
if (ts.isTypeReferenceNode(typeNode) &&
|
|
121
|
+
ts.isQualifiedName(typeNode.typeName)) {
|
|
122
|
+
return symbols.getBindingForQualifiedName(typeNode.typeName)?.domain;
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
function getBindingForTypeAlias(symbols, type) {
|
|
127
|
+
if (type.aliasSymbol === undefined) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
return symbols.getBindingForExportedSymbol(type.aliasSymbol);
|
|
131
|
+
}
|
|
132
|
+
function getUnionTypeDomain(input, seenTypes) {
|
|
133
|
+
const unionType = input.type;
|
|
134
|
+
const memberResults = unionType.types.map((memberType) => getTypeDomainInternal({
|
|
135
|
+
checker: input.checker,
|
|
136
|
+
node: input.node,
|
|
137
|
+
symbols: input.symbols,
|
|
138
|
+
type: memberType
|
|
139
|
+
}, seenTypes));
|
|
140
|
+
const memberDomains = getUniqueNumericDomains(memberResults);
|
|
141
|
+
const hasNonNumericUnionMembers = memberResults.some(hasNoNumericDomain) ||
|
|
142
|
+
memberResults.some((result) => result.hasNonNumericUnionMembers === true);
|
|
143
|
+
if (memberDomains.length > 0) {
|
|
144
|
+
return {
|
|
145
|
+
diagnostics: flattenDiagnostics(memberResults),
|
|
146
|
+
domain: "unknown",
|
|
147
|
+
hasNonNumericUnionMembers,
|
|
148
|
+
reason: "numeric-union",
|
|
149
|
+
unionDomains: memberDomains
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
if (memberResults.length > 0 &&
|
|
153
|
+
memberResults.every((result) => result.domain === "plain-number")) {
|
|
154
|
+
return {
|
|
155
|
+
diagnostics: [],
|
|
156
|
+
domain: "plain-number",
|
|
157
|
+
reason: "plain-number"
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
diagnostics: flattenDiagnostics(memberResults),
|
|
162
|
+
domain: "unknown",
|
|
163
|
+
reason: "unknown"
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function getIntersectionTypeDomain(input, seenTypes) {
|
|
167
|
+
const intersectionType = input.type;
|
|
168
|
+
const memberResults = intersectionType.types.map((memberType) => getTypeDomainInternal({
|
|
169
|
+
checker: input.checker,
|
|
170
|
+
node: input.node,
|
|
171
|
+
symbols: input.symbols,
|
|
172
|
+
type: memberType
|
|
173
|
+
}, seenTypes));
|
|
174
|
+
const memberDomains = getUniqueNumericDomains(memberResults);
|
|
175
|
+
if (memberDomains.length === 1) {
|
|
176
|
+
return {
|
|
177
|
+
diagnostics: flattenDiagnostics(memberResults),
|
|
178
|
+
domain: memberDomains[0] ?? "unknown",
|
|
179
|
+
reason: "branded-alias"
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
if (memberDomains.length > 1) {
|
|
183
|
+
return {
|
|
184
|
+
diagnostics: [
|
|
185
|
+
createDiagnostic("NUMTYPES_AMBIGUOUS_INTERSECTION", `ambiguous branded intersection containing ${memberDomains.join(" & ")}`, getDiagnosticLocation(input.node))
|
|
186
|
+
],
|
|
187
|
+
domain: "unknown",
|
|
188
|
+
reason: "ambiguous-intersection"
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
if (isPlainNumberType(input.type)) {
|
|
192
|
+
return {
|
|
193
|
+
diagnostics: flattenDiagnostics(memberResults),
|
|
194
|
+
domain: "plain-number",
|
|
195
|
+
reason: "plain-number"
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
diagnostics: flattenDiagnostics(memberResults),
|
|
200
|
+
domain: "unknown",
|
|
201
|
+
reason: "unknown"
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function isPlainNumberType(type) {
|
|
205
|
+
return (type.flags & ts.TypeFlags.NumberLike) !== 0;
|
|
206
|
+
}
|
|
207
|
+
function getUniqueNumericDomains(results) {
|
|
208
|
+
const domains = new Set();
|
|
209
|
+
for (const result of results) {
|
|
210
|
+
if (isNumericTypeDomain(result.domain)) {
|
|
211
|
+
domains.add(result.domain);
|
|
212
|
+
}
|
|
213
|
+
for (const domain of result.unionDomains ?? []) {
|
|
214
|
+
domains.add(domain);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return sortNumericDomains(domains);
|
|
218
|
+
}
|
|
219
|
+
function hasNoNumericDomain(result) {
|
|
220
|
+
return (!isNumericTypeDomain(result.domain) &&
|
|
221
|
+
(result.unionDomains === undefined || result.unionDomains.length === 0));
|
|
222
|
+
}
|
|
223
|
+
function getBrandPropertyDomains(checker, symbols, type) {
|
|
224
|
+
const numberPropertyNames = new Set(checker
|
|
225
|
+
.getNumberType()
|
|
226
|
+
.getProperties()
|
|
227
|
+
.map((property) => String(property.escapedName)));
|
|
228
|
+
const domains = new Set();
|
|
229
|
+
for (const binding of symbols.bindings) {
|
|
230
|
+
if (binding.exportedSymbol === undefined) {
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const declaredType = checker.getDeclaredTypeOfSymbol(binding.exportedSymbol);
|
|
234
|
+
const brandPropertyNames = declaredType
|
|
235
|
+
.getProperties()
|
|
236
|
+
.filter((property) => !numberPropertyNames.has(String(property.escapedName)))
|
|
237
|
+
.map((property) => String(property.escapedName));
|
|
238
|
+
if (type
|
|
239
|
+
.getProperties()
|
|
240
|
+
.some((property) => brandPropertyNames.includes(String(property.escapedName)))) {
|
|
241
|
+
domains.add(binding.domain);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return sortNumericDomains(domains);
|
|
245
|
+
}
|
|
246
|
+
function flattenDiagnostics(results) {
|
|
247
|
+
return results.flatMap((result) => result.diagnostics);
|
|
248
|
+
}
|
|
249
|
+
function getDiagnosticLocation(node) {
|
|
250
|
+
if (node === undefined) {
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
const sourceFile = node.getSourceFile();
|
|
254
|
+
return {
|
|
255
|
+
fileName: sourceFile.fileName,
|
|
256
|
+
length: node.getWidth(sourceFile),
|
|
257
|
+
start: node.getStart(sourceFile)
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=type-domain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-domain.js","sourceRoot":"","sources":["../../../src/transformer/analyze/type-domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
export type TransparentDomainWrapper = ts.NonNullExpression | ts.ParenthesizedExpression | ts.SatisfiesExpression;
|
|
3
|
+
export declare function isRuntimeExpression(node: ts.Node): node is ts.Expression;
|
|
4
|
+
export declare function isTransparentDomainWrapper(node: ts.Node): node is TransparentDomainWrapper;
|
|
5
|
+
export declare function getTransparentDomainWrapperExpression(node: TransparentDomainWrapper): ts.Expression;
|
|
6
|
+
export declare function isInsideTypeNode(node: ts.Node): boolean;
|
|
7
|
+
export declare function isDeclarationName(node: ts.Node, parent: ts.Node): boolean;
|
|
8
|
+
export declare function isImportOrExportName(node: ts.Node, parent: ts.Node): boolean;
|
|
9
|
+
export declare function isNonComputedPropertyName(node: ts.Node, parent: ts.Node): boolean;
|
|
10
|
+
//# sourceMappingURL=ast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/transformer/ast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,MAAM,wBAAwB,GAChC,EAAE,CAAC,iBAAiB,GACpB,EAAE,CAAC,uBAAuB,GAC1B,EAAE,CAAC,mBAAmB,CAAC;AAE3B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,UAAU,CAExE;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,EAAE,CAAC,IAAI,GACZ,IAAI,IAAI,wBAAwB,CAMlC;AAED,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,wBAAwB,GAC7B,EAAE,CAAC,UAAU,CAEf;AAeD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAYvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CA8CzE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CA4B5E;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,MAAM,EAAE,EAAE,CAAC,IAAI,GACd,OAAO,CAkCT"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
export function isRuntimeExpression(node) {
|
|
3
|
+
return ts.isExpression(node) && !isNonRuntimeExpressionNode(node);
|
|
4
|
+
}
|
|
5
|
+
export function isTransparentDomainWrapper(node) {
|
|
6
|
+
return (ts.isParenthesizedExpression(node) ||
|
|
7
|
+
ts.isNonNullExpression(node) ||
|
|
8
|
+
ts.isSatisfiesExpression(node));
|
|
9
|
+
}
|
|
10
|
+
export function getTransparentDomainWrapperExpression(node) {
|
|
11
|
+
return node.expression;
|
|
12
|
+
}
|
|
13
|
+
function isNonRuntimeExpressionNode(node) {
|
|
14
|
+
const parent = node.parent;
|
|
15
|
+
return (isInsideTypeNode(node) ||
|
|
16
|
+
isDeclarationName(node, parent) ||
|
|
17
|
+
isImportOrExportName(node, parent) ||
|
|
18
|
+
isNonComputedPropertyName(node, parent) ||
|
|
19
|
+
(ts.isShorthandPropertyAssignment(parent) && parent.name === node) ||
|
|
20
|
+
(ts.isPropertyAccessExpression(parent) && parent.name === node));
|
|
21
|
+
}
|
|
22
|
+
export function isInsideTypeNode(node) {
|
|
23
|
+
let current = node.parent;
|
|
24
|
+
while (!ts.isSourceFile(current)) {
|
|
25
|
+
if (ts.isTypeNode(current)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
current = current.parent;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
export function isDeclarationName(node, parent) {
|
|
33
|
+
if (ts.isVariableDeclaration(parent) && parent.name === node) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (ts.isParameter(parent) && parent.name === node) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
if (ts.isBindingElement(parent) && parent.name === node) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (ts.isFunctionDeclaration(parent) && parent.name === node) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
if (ts.isFunctionExpression(parent) && parent.name === node) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
if (ts.isClassDeclaration(parent) && parent.name === node) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
if (ts.isClassExpression(parent) && parent.name === node) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
if (ts.isInterfaceDeclaration(parent) && parent.name === node) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
if (ts.isTypeAliasDeclaration(parent) && parent.name === node) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (ts.isEnumDeclaration(parent) && parent.name === node) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
if (ts.isTypeParameterDeclaration(parent) && parent.name === node) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
return ts.isModuleDeclaration(parent) && parent.name === node;
|
|
67
|
+
}
|
|
68
|
+
export function isImportOrExportName(node, parent) {
|
|
69
|
+
if (ts.isImportClause(parent) && parent.name === node) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
if (ts.isNamespaceImport(parent) && parent.name === node) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if (ts.isImportSpecifier(parent) &&
|
|
76
|
+
(parent.name === node || parent.propertyName === node)) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
if (ts.isExportSpecifier(parent) &&
|
|
80
|
+
(parent.name === node || parent.propertyName === node)) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
if (ts.isImportDeclaration(parent) && parent.moduleSpecifier === node) {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
return ts.isExportDeclaration(parent) && parent.moduleSpecifier === node;
|
|
87
|
+
}
|
|
88
|
+
export function isNonComputedPropertyName(node, parent) {
|
|
89
|
+
if (!ts.isPropertyName(node) || ts.isComputedPropertyName(node)) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (ts.isPropertyAssignment(parent) && parent.name === node) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
if (ts.isPropertyDeclaration(parent) && parent.name === node) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
if (ts.isPropertySignature(parent) && parent.name === node) {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
if (ts.isMethodDeclaration(parent) && parent.name === node) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
if (ts.isMethodSignature(parent) && parent.name === node) {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
if (ts.isGetAccessorDeclaration(parent) && parent.name === node) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
if (ts.isSetAccessorDeclaration(parent) && parent.name === node) {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
return ts.isEnumMember(parent) && parent.name === node;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=ast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/transformer/ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type DiagnosticCode = "NUMTYPES_AMBIGUOUS_INTERSECTION" | "NUMTYPES_BITWISE_FLOAT" | "NUMTYPES_DOMAIN_LEAK" | "NUMTYPES_ERASED_CAST_MISUSE" | "NUMTYPES_IMPLICIT_NUMBER" | "NUMTYPES_MIXED_DOMAIN" | "NUMTYPES_UNSUPPORTED_COMPOUND_ASSIGNMENT" | "NUMTYPES_UNSUPPORTED_EXPRESSION" | "NUMTYPES_UNSUPPORTED_IMPORT" | "NUMTYPES_UNSUPPORTED_UNION" | "NUMTYPES_UNKNOWN_SYMBOL";
|
|
2
|
+
export interface DiagnosticLocation {
|
|
3
|
+
readonly fileName: string;
|
|
4
|
+
readonly length: number;
|
|
5
|
+
readonly start: number;
|
|
6
|
+
}
|
|
7
|
+
export interface TransformerDiagnostic {
|
|
8
|
+
readonly code: DiagnosticCode;
|
|
9
|
+
readonly location?: DiagnosticLocation;
|
|
10
|
+
readonly message: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class NumtypesDiagnosticError extends Error {
|
|
13
|
+
readonly diagnostics: readonly TransformerDiagnostic[];
|
|
14
|
+
constructor(diagnostics: readonly TransformerDiagnostic[]);
|
|
15
|
+
}
|
|
16
|
+
export declare function createDiagnostic(code: DiagnosticCode, message: string, location?: DiagnosticLocation): TransformerDiagnostic;
|
|
17
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/transformer/diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,iCAAiC,GACjC,wBAAwB,GACxB,sBAAsB,GACtB,6BAA6B,GAC7B,0BAA0B,GAC1B,uBAAuB,GACvB,0CAA0C,GAC1C,iCAAiC,GACjC,6BAA6B,GAC7B,4BAA4B,GAC5B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAgB,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;gBAE3C,WAAW,EAAE,SAAS,qBAAqB,EAAE;CAKjE;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,qBAAqB,CAMvB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class NumtypesDiagnosticError extends Error {
|
|
2
|
+
diagnostics;
|
|
3
|
+
constructor(diagnostics) {
|
|
4
|
+
super(formatDiagnosticErrorMessage(diagnostics));
|
|
5
|
+
this.name = "NumtypesDiagnosticError";
|
|
6
|
+
this.diagnostics = diagnostics;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function createDiagnostic(code, message, location) {
|
|
10
|
+
if (location === undefined) {
|
|
11
|
+
return { code, message };
|
|
12
|
+
}
|
|
13
|
+
return { code, location, message };
|
|
14
|
+
}
|
|
15
|
+
function formatDiagnosticErrorMessage(diagnostics) {
|
|
16
|
+
if (diagnostics.length === 0) {
|
|
17
|
+
return "numtypes transform failed";
|
|
18
|
+
}
|
|
19
|
+
return [
|
|
20
|
+
"numtypes transform failed with diagnostics:",
|
|
21
|
+
...diagnostics.map(formatDiagnostic)
|
|
22
|
+
].join("\n");
|
|
23
|
+
}
|
|
24
|
+
function formatDiagnostic(diagnostic) {
|
|
25
|
+
if (diagnostic.location === undefined) {
|
|
26
|
+
return `${diagnostic.code}: ${diagnostic.message}`;
|
|
27
|
+
}
|
|
28
|
+
return `${diagnostic.location.fileName}:${String(diagnostic.location.start)}: ${diagnostic.code}: ${diagnostic.message}`;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/transformer/diagnostics.ts"],"names":[],"mappings":"AAyBA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChC,WAAW,CAAmC;IAE9D,YAAmB,WAA6C;QAC9D,KAAK,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAoB,EACpB,OAAe,EACf,QAA6B;IAE7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,4BAA4B,CACnC,WAA6C;IAE7C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,OAAO;QACL,6CAA6C;QAC7C,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC;KACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAiC;IACzD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;AAC3H,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const numericDomains: readonly ["i32", "u32", "f32", "f64"];
|
|
2
|
+
export type NumericDomain = (typeof numericDomains)[number];
|
|
3
|
+
export interface DomainCoercion {
|
|
4
|
+
readonly castFunction: NumericDomain;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
readonly resultPattern: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const domainCoercions: Readonly<Record<NumericDomain, DomainCoercion>>;
|
|
9
|
+
export declare function isNumericDomain(value: string): value is NumericDomain;
|
|
10
|
+
export declare function sortNumericDomains(domains: Iterable<NumericDomain>): readonly NumericDomain[];
|
|
11
|
+
//# sourceMappingURL=domains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/transformer/domains.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,uCAAwC,CAAC;AAEpE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAqB3E,CAAC;AAIF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC/B,SAAS,aAAa,EAAE,CAM1B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const numericDomains = ["i32", "u32", "f32", "f64"];
|
|
2
|
+
export const domainCoercions = {
|
|
3
|
+
f32: {
|
|
4
|
+
castFunction: "f32",
|
|
5
|
+
description: "single precision float",
|
|
6
|
+
resultPattern: "Math.fround(x)"
|
|
7
|
+
},
|
|
8
|
+
f64: {
|
|
9
|
+
castFunction: "f64",
|
|
10
|
+
description: "double precision float",
|
|
11
|
+
resultPattern: "+x"
|
|
12
|
+
},
|
|
13
|
+
i32: {
|
|
14
|
+
castFunction: "i32",
|
|
15
|
+
description: "signed int32",
|
|
16
|
+
resultPattern: "x | 0"
|
|
17
|
+
},
|
|
18
|
+
u32: {
|
|
19
|
+
castFunction: "u32",
|
|
20
|
+
description: "unsigned int32",
|
|
21
|
+
resultPattern: "x >>> 0"
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const numericDomainSet = new Set(numericDomains);
|
|
25
|
+
export function isNumericDomain(value) {
|
|
26
|
+
return numericDomainSet.has(value);
|
|
27
|
+
}
|
|
28
|
+
export function sortNumericDomains(domains) {
|
|
29
|
+
const domainSet = new Set(domains);
|
|
30
|
+
return numericDomains.filter((domain) => domainSet.has(domain));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=domains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/transformer/domains.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAUpE,MAAM,CAAC,MAAM,eAAe,GAAoD;IAC9E,GAAG,EAAE;QACH,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,wBAAwB;QACrC,aAAa,EAAE,gBAAgB;KAChC;IACD,GAAG,EAAE;QACH,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,wBAAwB;QACrC,aAAa,EAAE,IAAI;KACpB;IACD,GAAG,EAAE;QACH,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,cAAc;QAC3B,aAAa,EAAE,OAAO;KACvB;IACD,GAAG,EAAE;QACH,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,gBAAgB;QAC7B,aAAa,EAAE,SAAS;KACzB;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;AAE9E,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAgC;IAEhC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAgB,OAAO,CAAC,CAAC;IAElD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,MAAqB,EAAW,EAAE,CAC9D,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CACtB,CAAC;AACJ,CAAC"}
|