@tsonic/emitter 0.0.62 → 0.0.63

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.
Files changed (517) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/adapter-generator.d.ts +5 -15
  3. package/dist/adapter-generator.d.ts.map +1 -1
  4. package/dist/adapter-generator.js +60 -53
  5. package/dist/adapter-generator.js.map +1 -1
  6. package/dist/contracts/backend-adapter.d.ts +36 -0
  7. package/dist/contracts/backend-adapter.d.ts.map +1 -0
  8. package/dist/contracts/backend-adapter.js +9 -0
  9. package/dist/contracts/backend-adapter.js.map +1 -0
  10. package/dist/contracts/emitter-contract.d.ts +54 -0
  11. package/dist/contracts/emitter-contract.d.ts.map +1 -0
  12. package/dist/contracts/emitter-contract.js +8 -0
  13. package/dist/contracts/emitter-contract.js.map +1 -0
  14. package/dist/contracts/import-classifier.d.ts +36 -0
  15. package/dist/contracts/import-classifier.d.ts.map +1 -0
  16. package/dist/contracts/import-classifier.js +9 -0
  17. package/dist/contracts/import-classifier.js.map +1 -0
  18. package/dist/core/{attributes.d.ts → format/attributes.d.ts} +9 -14
  19. package/dist/core/format/attributes.d.ts.map +1 -0
  20. package/dist/core/format/attributes.js +190 -0
  21. package/dist/core/format/attributes.js.map +1 -0
  22. package/dist/core/format/attributes.test.d.ts.map +1 -0
  23. package/dist/core/{attributes.test.js → format/attributes.test.js} +70 -32
  24. package/dist/core/format/attributes.test.js.map +1 -0
  25. package/dist/core/format/backend-ast/index.d.ts +7 -0
  26. package/dist/core/format/backend-ast/index.d.ts.map +1 -0
  27. package/dist/core/format/backend-ast/index.js +6 -0
  28. package/dist/core/format/backend-ast/index.js.map +1 -0
  29. package/dist/core/format/backend-ast/printer.d.ts +33 -0
  30. package/dist/core/format/backend-ast/printer.d.ts.map +1 -0
  31. package/dist/core/format/backend-ast/printer.js +1151 -0
  32. package/dist/core/format/backend-ast/printer.js.map +1 -0
  33. package/dist/core/format/backend-ast/types.d.ts +504 -0
  34. package/dist/core/format/backend-ast/types.d.ts.map +1 -0
  35. package/dist/core/format/backend-ast/types.js +13 -0
  36. package/dist/core/format/backend-ast/types.js.map +1 -0
  37. package/dist/core/format/backend-ast/utils.d.ts +26 -0
  38. package/dist/core/format/backend-ast/utils.d.ts.map +1 -0
  39. package/dist/core/format/backend-ast/utils.js +65 -0
  40. package/dist/core/format/backend-ast/utils.js.map +1 -0
  41. package/dist/core/{exports.d.ts → format/exports.d.ts} +2 -2
  42. package/dist/core/format/exports.d.ts.map +1 -0
  43. package/dist/core/format/exports.js +22 -0
  44. package/dist/core/format/exports.js.map +1 -0
  45. package/dist/core/format/index.d.ts +9 -0
  46. package/dist/core/format/index.d.ts.map +1 -0
  47. package/dist/core/format/index.js +9 -0
  48. package/dist/core/format/index.js.map +1 -0
  49. package/dist/core/{local-names.d.ts → format/local-names.d.ts} +1 -1
  50. package/dist/core/format/local-names.d.ts.map +1 -0
  51. package/dist/core/{local-names.js → format/local-names.js} +1 -1
  52. package/dist/core/format/local-names.js.map +1 -0
  53. package/dist/core/format/module-emitter/assembly.d.ts +27 -0
  54. package/dist/core/format/module-emitter/assembly.d.ts.map +1 -0
  55. package/dist/core/format/module-emitter/assembly.js +44 -0
  56. package/dist/core/format/module-emitter/assembly.js.map +1 -0
  57. package/dist/core/{module-emitter → format/module-emitter}/header.d.ts +1 -1
  58. package/dist/core/format/module-emitter/header.d.ts.map +1 -0
  59. package/dist/core/{module-emitter → format/module-emitter}/header.js +1 -1
  60. package/dist/core/format/module-emitter/header.js.map +1 -0
  61. package/dist/core/format/module-emitter/index.d.ts.map +1 -0
  62. package/dist/core/format/module-emitter/index.js.map +1 -0
  63. package/dist/core/format/module-emitter/namespace.d.ts +21 -0
  64. package/dist/core/format/module-emitter/namespace.d.ts.map +1 -0
  65. package/dist/core/format/module-emitter/namespace.js +58 -0
  66. package/dist/core/format/module-emitter/namespace.js.map +1 -0
  67. package/dist/core/{module-emitter → format/module-emitter}/orchestrator.d.ts +1 -1
  68. package/dist/core/format/module-emitter/orchestrator.d.ts.map +1 -0
  69. package/dist/core/{module-emitter → format/module-emitter}/orchestrator.js +19 -19
  70. package/dist/core/format/module-emitter/orchestrator.js.map +1 -0
  71. package/dist/core/format/module-emitter/separation.d.ts.map +1 -0
  72. package/dist/core/format/module-emitter/separation.js.map +1 -0
  73. package/dist/core/{module-emitter → format/module-emitter}/static-container.d.ts +8 -3
  74. package/dist/core/format/module-emitter/static-container.d.ts.map +1 -0
  75. package/dist/core/format/module-emitter/static-container.js +202 -0
  76. package/dist/core/format/module-emitter/static-container.js.map +1 -0
  77. package/dist/core/format/module-emitter.d.ts.map +1 -0
  78. package/dist/core/format/module-emitter.js.map +1 -0
  79. package/dist/core/{options.d.ts → format/options.d.ts} +1 -1
  80. package/dist/core/format/options.d.ts.map +1 -0
  81. package/dist/core/format/options.js.map +1 -0
  82. package/dist/core/index.d.ts +2 -7
  83. package/dist/core/index.d.ts.map +1 -1
  84. package/dist/core/index.js +2 -7
  85. package/dist/core/index.js.map +1 -1
  86. package/dist/core/semantic/boolean-context.d.ts +44 -0
  87. package/dist/core/semantic/boolean-context.d.ts.map +1 -0
  88. package/dist/core/semantic/boolean-context.js +655 -0
  89. package/dist/core/semantic/boolean-context.js.map +1 -0
  90. package/dist/core/semantic/boolean-context.test.d.ts.map +1 -0
  91. package/dist/core/{boolean-context.test.js → semantic/boolean-context.test.js} +44 -108
  92. package/dist/core/semantic/boolean-context.test.js.map +1 -0
  93. package/dist/core/{imports.d.ts → semantic/imports.d.ts} +1 -5
  94. package/dist/core/semantic/imports.d.ts.map +1 -0
  95. package/dist/core/{imports.js → semantic/imports.js} +6 -77
  96. package/dist/core/semantic/imports.js.map +1 -0
  97. package/dist/core/semantic/imports.test.d.ts.map +1 -0
  98. package/dist/core/{imports.test.js → semantic/imports.test.js} +1 -1
  99. package/dist/core/semantic/imports.test.js.map +1 -0
  100. package/dist/core/semantic/index.d.ts +15 -0
  101. package/dist/core/semantic/index.d.ts.map +1 -0
  102. package/dist/core/semantic/index.js +15 -0
  103. package/dist/core/semantic/index.js.map +1 -0
  104. package/dist/core/{local-types.d.ts → semantic/local-types.d.ts} +1 -1
  105. package/dist/core/semantic/local-types.d.ts.map +1 -0
  106. package/dist/core/semantic/local-types.js.map +1 -0
  107. package/dist/core/{module-map.d.ts → semantic/module-map.d.ts} +1 -1
  108. package/dist/core/semantic/module-map.d.ts.map +1 -0
  109. package/dist/core/semantic/module-map.js.map +1 -0
  110. package/dist/core/semantic/module-map.test.d.ts.map +1 -0
  111. package/dist/core/semantic/module-map.test.js.map +1 -0
  112. package/dist/core/semantic/naming-collisions.d.ts.map +1 -0
  113. package/dist/core/{naming-collisions.js → semantic/naming-collisions.js} +1 -1
  114. package/dist/core/semantic/naming-collisions.js.map +1 -0
  115. package/dist/core/{type-alias-index.d.ts → semantic/type-alias-index.d.ts} +1 -1
  116. package/dist/core/semantic/type-alias-index.d.ts.map +1 -0
  117. package/dist/core/semantic/type-alias-index.js.map +1 -0
  118. package/dist/core/semantic/type-compatibility.d.ts.map +1 -0
  119. package/dist/core/semantic/type-compatibility.js.map +1 -0
  120. package/dist/core/{type-member-index.d.ts → semantic/type-member-index.d.ts} +1 -1
  121. package/dist/core/semantic/type-member-index.d.ts.map +1 -0
  122. package/dist/core/semantic/type-member-index.js.map +1 -0
  123. package/dist/core/semantic/type-params.d.ts.map +1 -0
  124. package/dist/core/semantic/type-params.js.map +1 -0
  125. package/dist/core/{type-resolution.d.ts → semantic/type-resolution.d.ts} +3 -6
  126. package/dist/core/semantic/type-resolution.d.ts.map +1 -0
  127. package/dist/core/{type-resolution.js → semantic/type-resolution.js} +15 -25
  128. package/dist/core/semantic/type-resolution.js.map +1 -0
  129. package/dist/core/semantic/type-resolution.test.d.ts.map +1 -0
  130. package/dist/core/{type-resolution.test.js → semantic/type-resolution.test.js} +11 -19
  131. package/dist/core/semantic/type-resolution.test.js.map +1 -0
  132. package/dist/core/semantic/unsafe.d.ts.map +1 -0
  133. package/dist/core/semantic/unsafe.js.map +1 -0
  134. package/dist/emitter-types/core.d.ts +4 -12
  135. package/dist/emitter-types/core.d.ts.map +1 -1
  136. package/dist/emitter-types/index.d.ts +1 -1
  137. package/dist/emitter-types/index.d.ts.map +1 -1
  138. package/dist/emitter-types/index.js.map +1 -1
  139. package/dist/emitter.d.ts +1 -1
  140. package/dist/emitter.d.ts.map +1 -1
  141. package/dist/emitter.js +9 -8
  142. package/dist/emitter.js.map +1 -1
  143. package/dist/expression-emitter.d.ts +10 -5
  144. package/dist/expression-emitter.d.ts.map +1 -1
  145. package/dist/expression-emitter.js +111 -117
  146. package/dist/expression-emitter.js.map +1 -1
  147. package/dist/expressions/access.d.ts +4 -3
  148. package/dist/expressions/access.d.ts.map +1 -1
  149. package/dist/expressions/access.js +176 -102
  150. package/dist/expressions/access.js.map +1 -1
  151. package/dist/expressions/calls/call-analysis.d.ts +86 -0
  152. package/dist/expressions/calls/call-analysis.d.ts.map +1 -0
  153. package/dist/expressions/calls/call-analysis.js +284 -0
  154. package/dist/expressions/calls/call-analysis.js.map +1 -0
  155. package/dist/expressions/calls/call-emitter.d.ts +13 -0
  156. package/dist/expressions/calls/call-emitter.d.ts.map +1 -0
  157. package/dist/expressions/calls/call-emitter.js +876 -0
  158. package/dist/expressions/calls/call-emitter.js.map +1 -0
  159. package/dist/expressions/calls/new-emitter.d.ts +13 -0
  160. package/dist/expressions/calls/new-emitter.d.ts.map +1 -0
  161. package/dist/expressions/calls/new-emitter.js +641 -0
  162. package/dist/expressions/calls/new-emitter.js.map +1 -0
  163. package/dist/expressions/calls.d.ts +2 -14
  164. package/dist/expressions/calls.d.ts.map +1 -1
  165. package/dist/expressions/calls.js +2 -909
  166. package/dist/expressions/calls.js.map +1 -1
  167. package/dist/expressions/collections.d.ts +6 -16
  168. package/dist/expressions/collections.d.ts.map +1 -1
  169. package/dist/expressions/collections.js +301 -217
  170. package/dist/expressions/collections.js.map +1 -1
  171. package/dist/expressions/functions.d.ts +6 -5
  172. package/dist/expressions/functions.d.ts.map +1 -1
  173. package/dist/expressions/functions.js +57 -62
  174. package/dist/expressions/functions.js.map +1 -1
  175. package/dist/expressions/identifiers.d.ts +11 -6
  176. package/dist/expressions/identifiers.d.ts.map +1 -1
  177. package/dist/expressions/identifiers.js +76 -25
  178. package/dist/expressions/identifiers.js.map +1 -1
  179. package/dist/expressions/index.d.ts +1 -1
  180. package/dist/expressions/index.d.ts.map +1 -1
  181. package/dist/expressions/index.js +1 -1
  182. package/dist/expressions/index.js.map +1 -1
  183. package/dist/expressions/index.test.js +143 -0
  184. package/dist/expressions/index.test.js.map +1 -1
  185. package/dist/expressions/literals.d.ts +4 -3
  186. package/dist/expressions/literals.d.ts.map +1 -1
  187. package/dist/expressions/literals.js +25 -17
  188. package/dist/expressions/literals.js.map +1 -1
  189. package/dist/expressions/literals.test.js +18 -18
  190. package/dist/expressions/literals.test.js.map +1 -1
  191. package/dist/expressions/operators/assignment-emitter.d.ts +16 -0
  192. package/dist/expressions/operators/assignment-emitter.d.ts.map +1 -0
  193. package/dist/expressions/operators/assignment-emitter.js +118 -0
  194. package/dist/expressions/operators/assignment-emitter.js.map +1 -0
  195. package/dist/expressions/operators/binary-emitter.d.ts +33 -0
  196. package/dist/expressions/operators/binary-emitter.d.ts.map +1 -0
  197. package/dist/expressions/operators/binary-emitter.js +398 -0
  198. package/dist/expressions/operators/binary-emitter.js.map +1 -0
  199. package/dist/expressions/operators/conditional-emitter.d.ts +17 -0
  200. package/dist/expressions/operators/conditional-emitter.d.ts.map +1 -0
  201. package/dist/expressions/operators/conditional-emitter.js +306 -0
  202. package/dist/expressions/operators/conditional-emitter.js.map +1 -0
  203. package/dist/expressions/operators/helpers.d.ts +37 -0
  204. package/dist/expressions/operators/helpers.d.ts.map +1 -0
  205. package/dist/expressions/operators/helpers.js +136 -0
  206. package/dist/expressions/operators/helpers.js.map +1 -0
  207. package/dist/expressions/operators/logical-emitter.d.ts +23 -0
  208. package/dist/expressions/operators/logical-emitter.d.ts.map +1 -0
  209. package/dist/expressions/operators/logical-emitter.js +73 -0
  210. package/dist/expressions/operators/logical-emitter.js.map +1 -0
  211. package/dist/expressions/operators/unary-emitter.d.ts +30 -0
  212. package/dist/expressions/operators/unary-emitter.d.ts.map +1 -0
  213. package/dist/expressions/operators/unary-emitter.js +244 -0
  214. package/dist/expressions/operators/unary-emitter.js.map +1 -0
  215. package/dist/expressions/operators.d.ts +5 -81
  216. package/dist/expressions/operators.d.ts.map +1 -1
  217. package/dist/expressions/operators.js +5 -949
  218. package/dist/expressions/operators.js.map +1 -1
  219. package/dist/expressions/other.d.ts +15 -11
  220. package/dist/expressions/other.d.ts.map +1 -1
  221. package/dist/expressions/other.js +51 -36
  222. package/dist/expressions/other.js.map +1 -1
  223. package/dist/expressions/precedence.test.js +1 -1
  224. package/dist/expressions/precedence.test.js.map +1 -1
  225. package/dist/generator-exchange.d.ts +10 -3
  226. package/dist/generator-exchange.d.ts.map +1 -1
  227. package/dist/generator-exchange.js +57 -54
  228. package/dist/generator-exchange.js.map +1 -1
  229. package/dist/generator-wrapper.d.ts +17 -65
  230. package/dist/generator-wrapper.d.ts.map +1 -1
  231. package/dist/generator-wrapper.js +396 -220
  232. package/dist/generator-wrapper.js.map +1 -1
  233. package/dist/generator-wrapper.test.js +22 -14
  234. package/dist/generator-wrapper.test.js.map +1 -1
  235. package/dist/integration.test.js +166 -1
  236. package/dist/integration.test.js.map +1 -1
  237. package/dist/patterns.d.ts +18 -88
  238. package/dist/patterns.d.ts.map +1 -1
  239. package/dist/patterns.js +540 -304
  240. package/dist/patterns.js.map +1 -1
  241. package/dist/patterns.test.js +5 -4
  242. package/dist/patterns.test.js.map +1 -1
  243. package/dist/specialization/generation.d.ts +7 -3
  244. package/dist/specialization/generation.d.ts.map +1 -1
  245. package/dist/specialization/generation.js +31 -15
  246. package/dist/specialization/generation.js.map +1 -1
  247. package/dist/specialization/type-aliases.test.js +3 -2
  248. package/dist/specialization/type-aliases.test.js.map +1 -1
  249. package/dist/statement-emitter.d.ts +15 -4
  250. package/dist/statement-emitter.d.ts.map +1 -1
  251. package/dist/statement-emitter.js +54 -47
  252. package/dist/statement-emitter.js.map +1 -1
  253. package/dist/statements/blocks.d.ts +24 -16
  254. package/dist/statements/blocks.d.ts.map +1 -1
  255. package/dist/statements/blocks.js +191 -65
  256. package/dist/statements/blocks.js.map +1 -1
  257. package/dist/statements/classes/index.d.ts +1 -1
  258. package/dist/statements/classes/index.d.ts.map +1 -1
  259. package/dist/statements/classes/index.js +1 -1
  260. package/dist/statements/classes/index.js.map +1 -1
  261. package/dist/statements/classes/inline-types.d.ts +4 -3
  262. package/dist/statements/classes/inline-types.d.ts.map +1 -1
  263. package/dist/statements/classes/inline-types.js +21 -21
  264. package/dist/statements/classes/inline-types.js.map +1 -1
  265. package/dist/statements/classes/members/constructors.d.ts +4 -3
  266. package/dist/statements/classes/members/constructors.d.ts.map +1 -1
  267. package/dist/statements/classes/members/constructors.js +57 -58
  268. package/dist/statements/classes/members/constructors.js.map +1 -1
  269. package/dist/statements/classes/members/methods.d.ts +4 -3
  270. package/dist/statements/classes/members/methods.d.ts.map +1 -1
  271. package/dist/statements/classes/members/methods.js +98 -98
  272. package/dist/statements/classes/members/methods.js.map +1 -1
  273. package/dist/statements/classes/members/orchestrator.d.ts +4 -3
  274. package/dist/statements/classes/members/orchestrator.d.ts.map +1 -1
  275. package/dist/statements/classes/members/orchestrator.js +2 -2
  276. package/dist/statements/classes/members/orchestrator.js.map +1 -1
  277. package/dist/statements/classes/members/properties.d.ts +4 -3
  278. package/dist/statements/classes/members/properties.d.ts.map +1 -1
  279. package/dist/statements/classes/members/properties.js +105 -88
  280. package/dist/statements/classes/members/properties.js.map +1 -1
  281. package/dist/statements/classes/members/shadowing.test.js +7 -2
  282. package/dist/statements/classes/members/shadowing.test.js.map +1 -1
  283. package/dist/statements/classes/members/static-readonly-properties.test.js +4 -1
  284. package/dist/statements/classes/members/static-readonly-properties.test.js.map +1 -1
  285. package/dist/statements/classes/parameters.d.ts +8 -10
  286. package/dist/statements/classes/parameters.d.ts.map +1 -1
  287. package/dist/statements/classes/parameters.js +30 -26
  288. package/dist/statements/classes/parameters.js.map +1 -1
  289. package/dist/statements/classes/properties.d.ts +4 -3
  290. package/dist/statements/classes/properties.d.ts.map +1 -1
  291. package/dist/statements/classes/properties.js +76 -50
  292. package/dist/statements/classes/properties.js.map +1 -1
  293. package/dist/statements/classes.d.ts +1 -1
  294. package/dist/statements/classes.d.ts.map +1 -1
  295. package/dist/statements/classes.js +1 -1
  296. package/dist/statements/classes.js.map +1 -1
  297. package/dist/statements/control/conditionals/guard-analysis.d.ts +169 -0
  298. package/dist/statements/control/conditionals/guard-analysis.d.ts.map +1 -0
  299. package/dist/statements/control/conditionals/guard-analysis.js +591 -0
  300. package/dist/statements/control/conditionals/guard-analysis.js.map +1 -0
  301. package/dist/statements/control/conditionals/if-emitter.d.ts +14 -0
  302. package/dist/statements/control/conditionals/if-emitter.d.ts.map +1 -0
  303. package/dist/statements/control/conditionals/if-emitter.js +725 -0
  304. package/dist/statements/control/conditionals/if-emitter.js.map +1 -0
  305. package/dist/statements/control/conditionals/switch-emitter.d.ts +13 -0
  306. package/dist/statements/control/conditionals/switch-emitter.d.ts.map +1 -0
  307. package/dist/statements/control/conditionals/switch-emitter.js +60 -0
  308. package/dist/statements/control/conditionals/switch-emitter.js.map +1 -0
  309. package/dist/statements/control/conditionals.d.ts +3 -15
  310. package/dist/statements/control/conditionals.d.ts.map +1 -1
  311. package/dist/statements/control/conditionals.js +3 -1152
  312. package/dist/statements/control/conditionals.js.map +1 -1
  313. package/dist/statements/control/exceptions.d.ts +8 -6
  314. package/dist/statements/control/exceptions.d.ts.map +1 -1
  315. package/dist/statements/control/exceptions.js +35 -23
  316. package/dist/statements/control/exceptions.js.map +1 -1
  317. package/dist/statements/control/index.d.ts +3 -3
  318. package/dist/statements/control/index.d.ts.map +1 -1
  319. package/dist/statements/control/index.js +3 -3
  320. package/dist/statements/control/index.js.map +1 -1
  321. package/dist/statements/control/loops.d.ts +14 -12
  322. package/dist/statements/control/loops.d.ts.map +1 -1
  323. package/dist/statements/control/loops.js +147 -82
  324. package/dist/statements/control/loops.js.map +1 -1
  325. package/dist/statements/control.d.ts +1 -1
  326. package/dist/statements/control.d.ts.map +1 -1
  327. package/dist/statements/control.js +1 -1
  328. package/dist/statements/control.js.map +1 -1
  329. package/dist/statements/declarations/classes.d.ts +7 -3
  330. package/dist/statements/declarations/classes.d.ts.map +1 -1
  331. package/dist/statements/declarations/classes.js +66 -83
  332. package/dist/statements/declarations/classes.js.map +1 -1
  333. package/dist/statements/declarations/enums.d.ts +4 -3
  334. package/dist/statements/declarations/enums.d.ts.map +1 -1
  335. package/dist/statements/declarations/enums.js +16 -15
  336. package/dist/statements/declarations/enums.js.map +1 -1
  337. package/dist/statements/declarations/functions.d.ts +18 -2
  338. package/dist/statements/declarations/functions.d.ts.map +1 -1
  339. package/dist/statements/declarations/functions.js +625 -159
  340. package/dist/statements/declarations/functions.js.map +1 -1
  341. package/dist/statements/declarations/index.d.ts +2 -2
  342. package/dist/statements/declarations/index.d.ts.map +1 -1
  343. package/dist/statements/declarations/index.js +2 -2
  344. package/dist/statements/declarations/index.js.map +1 -1
  345. package/dist/statements/declarations/interfaces.d.ts +7 -3
  346. package/dist/statements/declarations/interfaces.d.ts.map +1 -1
  347. package/dist/statements/declarations/interfaces.js +119 -106
  348. package/dist/statements/declarations/interfaces.js.map +1 -1
  349. package/dist/statements/declarations/type-aliases.d.ts +7 -3
  350. package/dist/statements/declarations/type-aliases.d.ts.map +1 -1
  351. package/dist/statements/declarations/type-aliases.js +95 -82
  352. package/dist/statements/declarations/type-aliases.js.map +1 -1
  353. package/dist/statements/declarations/variables.d.ts +12 -2
  354. package/dist/statements/declarations/variables.d.ts.map +1 -1
  355. package/dist/statements/declarations/variables.js +533 -425
  356. package/dist/statements/declarations/variables.js.map +1 -1
  357. package/dist/statements/declarations.d.ts +1 -1
  358. package/dist/statements/declarations.d.ts.map +1 -1
  359. package/dist/statements/declarations.js +1 -1
  360. package/dist/statements/declarations.js.map +1 -1
  361. package/dist/statements/index.d.ts +3 -3
  362. package/dist/statements/index.d.ts.map +1 -1
  363. package/dist/statements/index.js +5 -5
  364. package/dist/statements/index.js.map +1 -1
  365. package/dist/type-emitter.d.ts +1 -1
  366. package/dist/type-emitter.d.ts.map +1 -1
  367. package/dist/type-emitter.js +1 -1
  368. package/dist/type-emitter.js.map +1 -1
  369. package/dist/types/arrays.d.ts +3 -2
  370. package/dist/types/arrays.d.ts.map +1 -1
  371. package/dist/types/arrays.js +7 -5
  372. package/dist/types/arrays.js.map +1 -1
  373. package/dist/types/dictionaries.d.ts +6 -3
  374. package/dist/types/dictionaries.d.ts.map +1 -1
  375. package/dist/types/dictionaries.js +22 -10
  376. package/dist/types/dictionaries.js.map +1 -1
  377. package/dist/types/emitter.d.ts +8 -2
  378. package/dist/types/emitter.d.ts.map +1 -1
  379. package/dist/types/emitter.js +20 -6
  380. package/dist/types/emitter.js.map +1 -1
  381. package/dist/types/functions.d.ts +3 -2
  382. package/dist/types/functions.d.ts.map +1 -1
  383. package/dist/types/functions.js +36 -13
  384. package/dist/types/functions.js.map +1 -1
  385. package/dist/types/index.d.ts +2 -2
  386. package/dist/types/index.d.ts.map +1 -1
  387. package/dist/types/index.js +2 -2
  388. package/dist/types/index.js.map +1 -1
  389. package/dist/types/index.test.js +137 -0
  390. package/dist/types/index.test.js.map +1 -1
  391. package/dist/types/intersections.d.ts +3 -2
  392. package/dist/types/intersections.d.ts.map +1 -1
  393. package/dist/types/intersections.js +2 -2
  394. package/dist/types/intersections.js.map +1 -1
  395. package/dist/types/literals.d.ts +9 -2
  396. package/dist/types/literals.d.ts.map +1 -1
  397. package/dist/types/literals.js +11 -5
  398. package/dist/types/literals.js.map +1 -1
  399. package/dist/types/objects.d.ts +3 -2
  400. package/dist/types/objects.d.ts.map +1 -1
  401. package/dist/types/objects.js +1 -1
  402. package/dist/types/objects.js.map +1 -1
  403. package/dist/types/parameters.d.ts +6 -5
  404. package/dist/types/parameters.d.ts.map +1 -1
  405. package/dist/types/parameters.js +88 -29
  406. package/dist/types/parameters.js.map +1 -1
  407. package/dist/types/parameters.test.js +9 -4
  408. package/dist/types/parameters.test.js.map +1 -1
  409. package/dist/types/primitives.d.ts +5 -4
  410. package/dist/types/primitives.d.ts.map +1 -1
  411. package/dist/types/primitives.js +14 -13
  412. package/dist/types/primitives.js.map +1 -1
  413. package/dist/types/references.d.ts +3 -2
  414. package/dist/types/references.d.ts.map +1 -1
  415. package/dist/types/references.js +135 -111
  416. package/dist/types/references.js.map +1 -1
  417. package/dist/types/tuples.d.ts +3 -2
  418. package/dist/types/tuples.d.ts.map +1 -1
  419. package/dist/types/tuples.js +25 -11
  420. package/dist/types/tuples.js.map +1 -1
  421. package/dist/types/unions.d.ts +3 -2
  422. package/dist/types/unions.d.ts.map +1 -1
  423. package/dist/types/unions.js +36 -21
  424. package/dist/types/unions.js.map +1 -1
  425. package/dist/types.d.ts +1 -1
  426. package/dist/types.d.ts.map +1 -1
  427. package/dist/types.js.map +1 -1
  428. package/package.json +2 -2
  429. package/dist/core/attributes.d.ts.map +0 -1
  430. package/dist/core/attributes.js +0 -141
  431. package/dist/core/attributes.js.map +0 -1
  432. package/dist/core/attributes.test.d.ts.map +0 -1
  433. package/dist/core/attributes.test.js.map +0 -1
  434. package/dist/core/boolean-context.d.ts +0 -42
  435. package/dist/core/boolean-context.d.ts.map +0 -1
  436. package/dist/core/boolean-context.js +0 -442
  437. package/dist/core/boolean-context.js.map +0 -1
  438. package/dist/core/boolean-context.test.d.ts.map +0 -1
  439. package/dist/core/boolean-context.test.js.map +0 -1
  440. package/dist/core/exports.d.ts.map +0 -1
  441. package/dist/core/exports.js +0 -28
  442. package/dist/core/exports.js.map +0 -1
  443. package/dist/core/imports.d.ts.map +0 -1
  444. package/dist/core/imports.js.map +0 -1
  445. package/dist/core/imports.test.d.ts.map +0 -1
  446. package/dist/core/imports.test.js.map +0 -1
  447. package/dist/core/local-names.d.ts.map +0 -1
  448. package/dist/core/local-names.js.map +0 -1
  449. package/dist/core/local-types.d.ts.map +0 -1
  450. package/dist/core/local-types.js.map +0 -1
  451. package/dist/core/module-emitter/assembly.d.ts +0 -24
  452. package/dist/core/module-emitter/assembly.d.ts.map +0 -1
  453. package/dist/core/module-emitter/assembly.js +0 -69
  454. package/dist/core/module-emitter/assembly.js.map +0 -1
  455. package/dist/core/module-emitter/header.d.ts.map +0 -1
  456. package/dist/core/module-emitter/header.js.map +0 -1
  457. package/dist/core/module-emitter/index.d.ts.map +0 -1
  458. package/dist/core/module-emitter/index.js.map +0 -1
  459. package/dist/core/module-emitter/namespace.d.ts +0 -14
  460. package/dist/core/module-emitter/namespace.d.ts.map +0 -1
  461. package/dist/core/module-emitter/namespace.js +0 -26
  462. package/dist/core/module-emitter/namespace.js.map +0 -1
  463. package/dist/core/module-emitter/orchestrator.d.ts.map +0 -1
  464. package/dist/core/module-emitter/orchestrator.js.map +0 -1
  465. package/dist/core/module-emitter/separation.d.ts.map +0 -1
  466. package/dist/core/module-emitter/separation.js.map +0 -1
  467. package/dist/core/module-emitter/static-container.d.ts.map +0 -1
  468. package/dist/core/module-emitter/static-container.js +0 -139
  469. package/dist/core/module-emitter/static-container.js.map +0 -1
  470. package/dist/core/module-emitter.d.ts.map +0 -1
  471. package/dist/core/module-emitter.js.map +0 -1
  472. package/dist/core/module-map.d.ts.map +0 -1
  473. package/dist/core/module-map.js.map +0 -1
  474. package/dist/core/module-map.test.d.ts.map +0 -1
  475. package/dist/core/module-map.test.js.map +0 -1
  476. package/dist/core/naming-collisions.d.ts.map +0 -1
  477. package/dist/core/naming-collisions.js.map +0 -1
  478. package/dist/core/options.d.ts.map +0 -1
  479. package/dist/core/options.js.map +0 -1
  480. package/dist/core/type-alias-index.d.ts.map +0 -1
  481. package/dist/core/type-alias-index.js.map +0 -1
  482. package/dist/core/type-compatibility.d.ts.map +0 -1
  483. package/dist/core/type-compatibility.js.map +0 -1
  484. package/dist/core/type-member-index.d.ts.map +0 -1
  485. package/dist/core/type-member-index.js.map +0 -1
  486. package/dist/core/type-params.d.ts.map +0 -1
  487. package/dist/core/type-params.js.map +0 -1
  488. package/dist/core/type-resolution.d.ts.map +0 -1
  489. package/dist/core/type-resolution.js.map +0 -1
  490. package/dist/core/type-resolution.test.d.ts.map +0 -1
  491. package/dist/core/type-resolution.test.js.map +0 -1
  492. package/dist/core/unsafe.d.ts.map +0 -1
  493. package/dist/core/unsafe.js.map +0 -1
  494. /package/dist/core/{attributes.test.d.ts → format/attributes.test.d.ts} +0 -0
  495. /package/dist/core/{module-emitter → format/module-emitter}/index.d.ts +0 -0
  496. /package/dist/core/{module-emitter → format/module-emitter}/index.js +0 -0
  497. /package/dist/core/{module-emitter → format/module-emitter}/separation.d.ts +0 -0
  498. /package/dist/core/{module-emitter → format/module-emitter}/separation.js +0 -0
  499. /package/dist/core/{module-emitter.d.ts → format/module-emitter.d.ts} +0 -0
  500. /package/dist/core/{module-emitter.js → format/module-emitter.js} +0 -0
  501. /package/dist/core/{options.js → format/options.js} +0 -0
  502. /package/dist/core/{boolean-context.test.d.ts → semantic/boolean-context.test.d.ts} +0 -0
  503. /package/dist/core/{imports.test.d.ts → semantic/imports.test.d.ts} +0 -0
  504. /package/dist/core/{local-types.js → semantic/local-types.js} +0 -0
  505. /package/dist/core/{module-map.js → semantic/module-map.js} +0 -0
  506. /package/dist/core/{module-map.test.d.ts → semantic/module-map.test.d.ts} +0 -0
  507. /package/dist/core/{module-map.test.js → semantic/module-map.test.js} +0 -0
  508. /package/dist/core/{naming-collisions.d.ts → semantic/naming-collisions.d.ts} +0 -0
  509. /package/dist/core/{type-alias-index.js → semantic/type-alias-index.js} +0 -0
  510. /package/dist/core/{type-compatibility.d.ts → semantic/type-compatibility.d.ts} +0 -0
  511. /package/dist/core/{type-compatibility.js → semantic/type-compatibility.js} +0 -0
  512. /package/dist/core/{type-member-index.js → semantic/type-member-index.js} +0 -0
  513. /package/dist/core/{type-params.d.ts → semantic/type-params.d.ts} +0 -0
  514. /package/dist/core/{type-params.js → semantic/type-params.js} +0 -0
  515. /package/dist/core/{type-resolution.test.d.ts → semantic/type-resolution.test.d.ts} +0 -0
  516. /package/dist/core/{unsafe.d.ts → semantic/unsafe.d.ts} +0 -0
  517. /package/dist/core/{unsafe.js → semantic/unsafe.js} +0 -0
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Call expression analysis and detection helpers
3
+ */
4
+ import { emitTypeAst } from "../../type-emitter.js";
5
+ import { renderTypeAst } from "../../core/format/backend-ast/utils.js";
6
+ import { containsTypeParameter } from "../../core/semantic/type-resolution.js";
7
+ /**
8
+ * Ref/out/in parameter handling:
9
+ * The frontend extracts parameter passing modes from resolved signatures
10
+ * and attaches them to IrCallExpression.argumentPassing array.
11
+ * The emitter reads this array and prefixes arguments with ref/out/in keywords.
12
+ */
13
+ /**
14
+ * Check if an expression is an lvalue (can be passed by reference)
15
+ * Only identifiers and member accesses are lvalues in C#
16
+ */
17
+ export const isLValue = (expr) => {
18
+ return expr.kind === "identifier" || expr.kind === "memberAccess";
19
+ };
20
+ /**
21
+ * Check if an expression has an `as out<T>`, `as ref<T>`, or `as inref<T>` cast.
22
+ * Returns the modifier ("out", "ref", "in") or undefined if not a passing modifier cast.
23
+ *
24
+ * When TypeScript code has `value as out<int>`, the frontend converts this to
25
+ * an expression with `inferredType: { kind: "referenceType", name: "out", ... }`.
26
+ */
27
+ export const getPassingModifierFromCast = (expr) => {
28
+ const inferredType = expr.inferredType;
29
+ if (!inferredType || inferredType.kind !== "referenceType") {
30
+ return undefined;
31
+ }
32
+ const typeName = inferredType.name;
33
+ if (typeName === "out")
34
+ return "out";
35
+ if (typeName === "ref")
36
+ return "ref";
37
+ if (typeName === "inref")
38
+ return "in"; // inref maps to C# 'in' keyword
39
+ return undefined;
40
+ };
41
+ /**
42
+ * Check if a member access expression targets System.Text.Json.JsonSerializer
43
+ */
44
+ export const isJsonSerializerCall = (callee) => {
45
+ if (callee.kind !== "memberAccess")
46
+ return null;
47
+ if (!callee.memberBinding)
48
+ return null;
49
+ const { type, member } = callee.memberBinding;
50
+ // Check if this is System.Text.Json.JsonSerializer
51
+ if (type !== "System.Text.Json.JsonSerializer")
52
+ return null;
53
+ // Check if the member is Serialize or Deserialize
54
+ if (member === "Serialize")
55
+ return { method: "Serialize" };
56
+ if (member === "Deserialize")
57
+ return { method: "Deserialize" };
58
+ return null;
59
+ };
60
+ /**
61
+ * Check if a call targets global JSON.stringify or JSON.parse
62
+ * These global JSON methods compile to JsonSerializer
63
+ */
64
+ export const isGlobalJsonCall = (callee) => {
65
+ if (callee.kind !== "memberAccess")
66
+ return null;
67
+ // Check if object is the global JSON identifier
68
+ const obj = callee.object;
69
+ if (obj.kind !== "identifier" || obj.name !== "JSON")
70
+ return null;
71
+ // Check property name
72
+ const prop = callee.property;
73
+ if (typeof prop !== "string")
74
+ return null;
75
+ if (prop === "stringify")
76
+ return { method: "Serialize" };
77
+ if (prop === "parse")
78
+ return { method: "Deserialize" };
79
+ return null;
80
+ };
81
+ /**
82
+ * Heuristic: Determine if a member access is an instance-style access (receiver.value)
83
+ * vs a static type reference (Type.Member).
84
+ *
85
+ * This mirrors the logic in emitMemberAccess; extension-method lowering only applies
86
+ * to instance-style member accesses.
87
+ */
88
+ export const isInstanceMemberAccess = (expr, context) => {
89
+ // Imported types (e.g., `Enumerable.Where(...)`) are static receiver expressions,
90
+ // even if TypeScript assigns them an inferredType.
91
+ if (expr.object.kind === "identifier") {
92
+ const importBinding = context.importBindings?.get(expr.object.name);
93
+ if (importBinding?.kind === "type") {
94
+ return false;
95
+ }
96
+ // If this isn't an import and we don't have a receiver type, default to instance.
97
+ // This matches emitMemberAccess's behavior and prevents local variables from being
98
+ // misclassified as static type receivers (which breaks extension method lowering).
99
+ if (!expr.object.inferredType) {
100
+ return true;
101
+ }
102
+ }
103
+ const objectType = expr.object.inferredType;
104
+ return (objectType?.kind === "referenceType" ||
105
+ objectType?.kind === "arrayType" ||
106
+ objectType?.kind === "intersectionType" ||
107
+ objectType?.kind === "unionType" ||
108
+ objectType?.kind === "primitiveType" ||
109
+ objectType?.kind === "literalType" ||
110
+ objectType?.kind === "typeParameterType" ||
111
+ objectType?.kind === "unknownType");
112
+ };
113
+ /**
114
+ * Whether to emit an extension method call using fluent instance syntax (receiver.Method(...))
115
+ * instead of explicit static invocation (Type.Method(receiver, ...)).
116
+ *
117
+ * Default: prefer static invocation to avoid relying on `using` directives and to avoid
118
+ * accidental binding to an instance member when a type has both an instance method and
119
+ * an extension method with the same name.
120
+ *
121
+ * Exception: certain toolchains (notably EF query precompilation) require the *syntax*
122
+ * of extension-method invocation so the analyzer can locate queries in user code.
123
+ */
124
+ export const shouldEmitFluentExtensionCall = (bindingType, memberName) => {
125
+ // EF Core query precompilation requires fluent/extension syntax specifically for Queryable.
126
+ // Keep Enumerable as explicit static invocation by default to avoid accidental binding to
127
+ // instance methods on custom enumerable types.
128
+ if (bindingType.startsWith("System.Linq.Queryable"))
129
+ return true;
130
+ // EF Core query operators (Include/ThenInclude/AsNoTracking/etc.)
131
+ if (bindingType.startsWith("Microsoft.EntityFrameworkCore."))
132
+ return true;
133
+ // EF Core query precompilation also requires fluent syntax for certain Enumerable terminal ops
134
+ // (e.g., IQueryable<T>.ToList()/ToArray()). When emitted as explicit static calls
135
+ // (Enumerable.ToList(query)), dotnet-ef may not generate interceptors, causing runtime failure
136
+ // under NativeAOT ("Query wasn't precompiled and dynamic code isn't supported").
137
+ if (bindingType.startsWith("System.Linq.Enumerable") &&
138
+ (memberName === "ToList" || memberName === "ToArray")) {
139
+ return true;
140
+ }
141
+ return false;
142
+ };
143
+ export const getTypeNamespace = (typeName) => {
144
+ const lastDot = typeName.lastIndexOf(".");
145
+ if (lastDot <= 0)
146
+ return undefined;
147
+ return typeName.slice(0, lastDot);
148
+ };
149
+ /**
150
+ * Whether a C# type string is a builtin/keyword type (optionally nullable).
151
+ *
152
+ * These must NOT be qualified with a namespace (e.g. `object`, not `MyNs.object`).
153
+ */
154
+ export const isCSharpBuiltinType = (typeStr) => {
155
+ const base = typeStr.endsWith("?") ? typeStr.slice(0, -1) : typeStr;
156
+ return (base === "string" ||
157
+ base === "int" ||
158
+ base === "long" ||
159
+ base === "short" ||
160
+ base === "byte" ||
161
+ base === "sbyte" ||
162
+ base === "uint" ||
163
+ base === "ulong" ||
164
+ base === "ushort" ||
165
+ base === "float" ||
166
+ base === "double" ||
167
+ base === "decimal" ||
168
+ base === "bool" ||
169
+ base === "char" ||
170
+ base === "object" ||
171
+ base === "void");
172
+ };
173
+ /**
174
+ * Ensure a C# type string has global:: prefix for unambiguous resolution
175
+ */
176
+ export const ensureGlobalPrefix = (typeStr) => {
177
+ // Skip already-prefixed types
178
+ if (typeStr.startsWith("global::")) {
179
+ return typeStr;
180
+ }
181
+ // Handle pointer types (T*). `global::int*` is invalid; qualify the element type only.
182
+ if (typeStr.endsWith("*")) {
183
+ const inner = typeStr.slice(0, -1);
184
+ return `${ensureGlobalPrefix(inner)}*`;
185
+ }
186
+ // Handle arrays (T[], T[,], jagged arrays, ...). `global::string[]` is invalid; qualify
187
+ // the element type only.
188
+ const arrayMatch = /(\[[,\s]*\])$/.exec(typeStr);
189
+ if (arrayMatch) {
190
+ const suffix = arrayMatch[1];
191
+ if (!suffix)
192
+ return typeStr;
193
+ const inner = typeStr.slice(0, -suffix.length);
194
+ return `${ensureGlobalPrefix(inner)}${suffix}`;
195
+ }
196
+ // Skip primitives (and other builtin keyword types) after handling suffix forms.
197
+ if (isCSharpBuiltinType(typeStr)) {
198
+ return typeStr;
199
+ }
200
+ // Handle generic types: List<Foo> -> global::List<global::Foo>
201
+ // For now, just add prefix to the outer type
202
+ // The inner types should already be handled by emitType
203
+ return `global::${typeStr}`;
204
+ };
205
+ /**
206
+ * Register a type with the JSON AOT registry.
207
+ * Ensures types are fully qualified with namespace for the AOT source generator.
208
+ */
209
+ export const registerJsonAotType = (type, context) => {
210
+ if (!type)
211
+ return;
212
+ if (!context.options.jsonAotRegistry)
213
+ return;
214
+ // NativeAOT JSON source generation requires CLOSED types.
215
+ // If the type contains any generic parameters in the current scope (T, U, ...),
216
+ // we cannot emit `[JsonSerializable(typeof(T))]` because `T` is not in scope in the
217
+ // generated context class. Skip registration to keep emission valid.
218
+ if (containsTypeParameter(type)) {
219
+ context.options.jsonAotRegistry.needsJsonAot = true;
220
+ return;
221
+ }
222
+ const registry = context.options.jsonAotRegistry;
223
+ const [rawTypeAst] = emitTypeAst(type, {
224
+ ...context,
225
+ qualifyLocalTypes: true,
226
+ });
227
+ const rawTypeStr = renderTypeAst(rawTypeAst);
228
+ const typeStr = rawTypeStr.endsWith("?")
229
+ ? rawTypeStr.slice(0, -1)
230
+ : rawTypeStr;
231
+ registry.rootTypes.add(ensureGlobalPrefix(typeStr));
232
+ registry.needsJsonAot = true;
233
+ };
234
+ /**
235
+ * Check if a call expression needs an explicit cast because the inferred type
236
+ * differs from the C# return type. This handles cases like Math.floor() which
237
+ * returns double in C# but is cast to int in TypeScript via `as int`.
238
+ */
239
+ export const needsIntCast = (expr, calleeName) => {
240
+ // Check if the inferred type is int (a reference type from @tsonic/core)
241
+ const inferredType = expr.inferredType;
242
+ if (!inferredType ||
243
+ inferredType.kind !== "referenceType" ||
244
+ inferredType.name !== "int") {
245
+ return false;
246
+ }
247
+ // Check if this is a Math method that returns double
248
+ const mathMethodsReturningDouble = [
249
+ "Math.floor",
250
+ "Math.ceil",
251
+ "Math.round",
252
+ "Math.abs",
253
+ "Math.pow",
254
+ "Math.sqrt",
255
+ "Math.min",
256
+ "Math.max",
257
+ ];
258
+ return mathMethodsReturningDouble.some((m) => calleeName === m || calleeName.endsWith(`.${m.split(".").pop()}`));
259
+ };
260
+ const ASYNC_WRAPPER_NAMES = new Set([
261
+ "Promise",
262
+ "PromiseLike",
263
+ "Task",
264
+ "ValueTask",
265
+ ]);
266
+ export const isAsyncWrapperType = (type, visited = new Set()) => {
267
+ if (!type || visited.has(type))
268
+ return false;
269
+ visited.add(type);
270
+ if (type.kind === "referenceType") {
271
+ const simple = type.name.includes(".")
272
+ ? type.name.slice(type.name.lastIndexOf(".") + 1)
273
+ : type.name;
274
+ if (ASYNC_WRAPPER_NAMES.has(simple))
275
+ return true;
276
+ }
277
+ if (type.kind === "unionType" || type.kind === "intersectionType") {
278
+ return type.types.some((t) => isAsyncWrapperType(t, visited));
279
+ }
280
+ return false;
281
+ };
282
+ const PROMISE_CHAIN_METHODS = new Set(["then", "catch", "finally"]);
283
+ export const isPromiseChainMethod = (name) => PROMISE_CHAIN_METHODS.has(name);
284
+ //# sourceMappingURL=call-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-analysis.js","sourceRoot":"","sources":["../../../src/expressions/calls/call-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Call expression emitter
3
+ */
4
+ import { IrExpression } from "@tsonic/frontend";
5
+ import { EmitterContext } from "../../types.js";
6
+ import type { CSharpExpressionAst } from "../../core/format/backend-ast/types.js";
7
+ /**
8
+ * Emit a function call expression as CSharpExpressionAst
9
+ */
10
+ export declare const emitCall: (expr: Extract<IrExpression, {
11
+ kind: "call";
12
+ }>, context: EmitterContext) => [CSharpExpressionAst, EmitterContext];
13
+ //# sourceMappingURL=call-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-emitter.d.ts","sourceRoot":"","sources":["../../../src/expressions/calls/call-emitter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAU,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAsBhD,OAAO,KAAK,EAGV,mBAAmB,EAGpB,MAAM,wCAAwC,CAAC;AAqzBhD;;GAEG;AACH,eAAO,MAAM,QAAQ,GACnB,MAAM,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC7C,SAAS,cAAc,KACtB,CAAC,mBAAmB,EAAE,cAAc,CAgStC,CAAC"}