xbintsc 0.5.31 → 0.5.36

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 (286) hide show
  1. package/README.md +25 -16
  2. package/README.zh-CN.md +10 -8
  3. package/dist/scripts/check-version.d.ts +27 -0
  4. package/dist/scripts/check-version.js +71 -0
  5. package/dist/scripts/check-version.js.map +1 -0
  6. package/dist/scripts/package-platform.d.ts +58 -0
  7. package/dist/scripts/package-platform.js +142 -0
  8. package/dist/scripts/package-platform.js.map +1 -0
  9. package/dist/scripts/verify-platform-package.d.ts +34 -0
  10. package/dist/scripts/verify-platform-package.js +161 -0
  11. package/dist/scripts/verify-platform-package.js.map +1 -0
  12. package/dist/src/binder/references.js +14 -1
  13. package/dist/src/binder/references.js.map +1 -1
  14. package/dist/src/cli/help.d.ts +1 -1
  15. package/dist/src/cli/main.js +3 -1
  16. package/dist/src/cli/main.js.map +1 -1
  17. package/dist/src/codegen/generator/module.d.ts +1 -0
  18. package/dist/src/codegen/generator/module.js +54 -0
  19. package/dist/src/codegen/generator/module.js.map +1 -1
  20. package/dist/src/codegen/generator/statements/variables.js +6 -4
  21. package/dist/src/codegen/generator/statements/variables.js.map +1 -1
  22. package/dist/src/driver/runtime-lib.d.ts +29 -4
  23. package/dist/src/driver/runtime-lib.js +68 -10
  24. package/dist/src/driver/runtime-lib.js.map +1 -1
  25. package/dist/src/driver/version.d.ts +1 -1
  26. package/dist/src/driver/version.js +1 -1
  27. package/dist/src/extensions/gui/css.d.ts +26 -0
  28. package/dist/src/extensions/gui/css.js +100 -0
  29. package/dist/src/extensions/gui/css.js.map +1 -0
  30. package/dist/src/extensions/gui/html.js +9 -2
  31. package/dist/src/extensions/gui/html.js.map +1 -1
  32. package/dist/src/extensions/gui/index.js +22 -7
  33. package/dist/src/extensions/gui/index.js.map +1 -1
  34. package/dist/src/extensions/gui/three.d.ts +16 -0
  35. package/dist/src/extensions/gui/three.js +22 -0
  36. package/dist/src/extensions/gui/three.js.map +1 -0
  37. package/dist/src/extensions/media/index.d.ts +6 -5
  38. package/dist/src/extensions/media/index.js +15 -16
  39. package/dist/src/extensions/media/index.js.map +1 -1
  40. package/dist/src/parser/context.d.ts +41 -0
  41. package/dist/src/parser/context.js +89 -4
  42. package/dist/src/parser/context.js.map +1 -1
  43. package/dist/src/parser/literals.js +6 -12
  44. package/dist/src/parser/literals.js.map +1 -1
  45. package/dist/tests/driver/platform-package.test.d.ts +1 -0
  46. package/dist/tests/driver/platform-package.test.js +49 -0
  47. package/dist/tests/driver/platform-package.test.js.map +1 -0
  48. package/dist/tests/driver/runtime-lib.test.js +51 -4
  49. package/dist/tests/driver/runtime-lib.test.js.map +1 -1
  50. package/dist/tests/e2e/compile-builtins.test.js +24 -0
  51. package/dist/tests/e2e/compile-builtins.test.js.map +1 -1
  52. package/dist/tests/e2e/compile-objects-classes.test.js +23 -0
  53. package/dist/tests/e2e/compile-objects-classes.test.js.map +1 -1
  54. package/dist/tests/e2e/gui-audio.test.d.ts +14 -0
  55. package/dist/tests/e2e/gui-audio.test.js +287 -0
  56. package/dist/tests/e2e/gui-audio.test.js.map +1 -0
  57. package/dist/tests/e2e/gui-browser.test.js +1 -1
  58. package/dist/tests/e2e/gui-browser.test.js.map +1 -1
  59. package/dist/tests/e2e/gui-effects.test.d.ts +6 -0
  60. package/dist/tests/e2e/gui-effects.test.js +262 -0
  61. package/dist/tests/e2e/gui-effects.test.js.map +1 -0
  62. package/dist/tests/e2e/gui-example-webgl.test.d.ts +10 -0
  63. package/dist/tests/e2e/gui-example-webgl.test.js +75 -0
  64. package/dist/tests/e2e/gui-example-webgl.test.js.map +1 -0
  65. package/dist/tests/e2e/gui-example-webgl2.test.d.ts +8 -0
  66. package/dist/tests/e2e/gui-example-webgl2.test.js +72 -0
  67. package/dist/tests/e2e/gui-example-webgl2.test.js.map +1 -0
  68. package/dist/tests/e2e/gui-helpers.d.ts +7 -0
  69. package/dist/tests/e2e/gui-helpers.js +1 -0
  70. package/dist/tests/e2e/gui-helpers.js.map +1 -1
  71. package/dist/tests/e2e/gui-layout.test.js +48 -0
  72. package/dist/tests/e2e/gui-layout.test.js.map +1 -1
  73. package/dist/tests/e2e/gui-media.test.js +83 -4
  74. package/dist/tests/e2e/gui-media.test.js.map +1 -1
  75. package/dist/tests/e2e/gui-style.test.js +55 -0
  76. package/dist/tests/e2e/gui-style.test.js.map +1 -1
  77. package/dist/tests/e2e/gui-webgl.test.d.ts +11 -0
  78. package/dist/tests/e2e/gui-webgl.test.js +437 -0
  79. package/dist/tests/e2e/gui-webgl.test.js.map +1 -0
  80. package/dist/tests/e2e/gui-webgl2-3d.test.d.ts +4 -0
  81. package/dist/tests/e2e/gui-webgl2-3d.test.js +264 -0
  82. package/dist/tests/e2e/gui-webgl2-3d.test.js.map +1 -0
  83. package/dist/tests/e2e/gui-webgl2-blit.test.d.ts +10 -0
  84. package/dist/tests/e2e/gui-webgl2-blit.test.js +262 -0
  85. package/dist/tests/e2e/gui-webgl2-blit.test.js.map +1 -0
  86. package/dist/tests/e2e/gui-webgl2-formats.test.d.ts +6 -0
  87. package/dist/tests/e2e/gui-webgl2-formats.test.js +395 -0
  88. package/dist/tests/e2e/gui-webgl2-formats.test.js.map +1 -0
  89. package/dist/tests/e2e/gui-webgl2-mrt.test.d.ts +4 -0
  90. package/dist/tests/e2e/gui-webgl2-mrt.test.js +105 -0
  91. package/dist/tests/e2e/gui-webgl2-mrt.test.js.map +1 -0
  92. package/dist/tests/e2e/gui-webgl2-ubo.test.d.ts +8 -0
  93. package/dist/tests/e2e/gui-webgl2-ubo.test.js +112 -0
  94. package/dist/tests/e2e/gui-webgl2-ubo.test.js.map +1 -0
  95. package/dist/tests/e2e/gui-webgl2.test.d.ts +10 -0
  96. package/dist/tests/e2e/gui-webgl2.test.js +282 -0
  97. package/dist/tests/e2e/gui-webgl2.test.js.map +1 -0
  98. package/dist/tests/extensions/gui-index.test.js +1 -0
  99. package/dist/tests/extensions/gui-index.test.js.map +1 -1
  100. package/dist/tests/extensions/gui.test.js +41 -0
  101. package/dist/tests/extensions/gui.test.js.map +1 -1
  102. package/dist/tests/extensions/media.test.js +8 -3
  103. package/dist/tests/extensions/media.test.js.map +1 -1
  104. package/dist/tests/parser/expressions.test.js +30 -0
  105. package/dist/tests/parser/expressions.test.js.map +1 -1
  106. package/dist/tests/platform-tarball.test.d.ts +1 -0
  107. package/dist/tests/platform-tarball.test.js +111 -0
  108. package/dist/tests/platform-tarball.test.js.map +1 -0
  109. package/dist/tests/version.test.js +6 -0
  110. package/dist/tests/version.test.js.map +1 -1
  111. package/doc/ai/contributing.md +11 -0
  112. package/doc/ai/extensions.md +35 -12
  113. package/doc/ai/troubleshooting.md +17 -11
  114. package/doc/ai/zh-CN/contributing.md +9 -0
  115. package/doc/ai/zh-CN/extensions.md +30 -10
  116. package/doc/ai/zh-CN/troubleshooting.md +14 -8
  117. package/doc/gui/api.md +63 -14
  118. package/doc/gui/build.md +79 -16
  119. package/doc/gui/canvas.md +11 -3
  120. package/doc/gui/dom.md +35 -17
  121. package/doc/gui/known-issues.md +57 -24
  122. package/doc/gui/layout.md +18 -0
  123. package/doc/gui/media.md +21 -13
  124. package/doc/gui/rendering.md +50 -3
  125. package/doc/gui/webgl.md +315 -0
  126. package/doc/gui.md +113 -18
  127. package/doc/npm-package.md +59 -29
  128. package/doc/requirements.md +24 -11
  129. package/doc/zh-CN/gui/api.md +53 -11
  130. package/doc/zh-CN/gui/build.md +70 -16
  131. package/doc/zh-CN/gui/canvas.md +9 -2
  132. package/doc/zh-CN/gui/dom.md +22 -7
  133. package/doc/zh-CN/gui/known-issues.md +45 -19
  134. package/doc/zh-CN/gui/layout.md +14 -0
  135. package/doc/zh-CN/gui/media.md +18 -11
  136. package/doc/zh-CN/gui/rendering.md +41 -4
  137. package/doc/zh-CN/gui/webgl.md +121 -0
  138. package/doc/zh-CN/gui.md +91 -15
  139. package/doc/zh-CN/npm-package.md +48 -24
  140. package/doc/zh-CN/requirements.md +16 -7
  141. package/llms.txt +2 -0
  142. package/package.json +17 -1
  143. package/runtime/ext_gui/audio.cpp +365 -153
  144. package/runtime/ext_gui/audio_buffer.cpp +166 -0
  145. package/runtime/ext_gui/audio_buffer.h +37 -0
  146. package/runtime/ext_gui/audio_decode.cpp +219 -0
  147. package/runtime/ext_gui/audio_decode.h +39 -0
  148. package/runtime/ext_gui/audio_device.cpp +87 -0
  149. package/runtime/ext_gui/audio_effects.cpp +163 -0
  150. package/runtime/ext_gui/audio_effects.h +25 -0
  151. package/runtime/ext_gui/audio_internal.h +30 -0
  152. package/runtime/ext_gui/audio_mixer.cpp +494 -0
  153. package/runtime/ext_gui/audio_mixer.h +238 -0
  154. package/runtime/ext_gui/audio_param.cpp +104 -0
  155. package/runtime/ext_gui/audio_param_object.cpp +155 -0
  156. package/runtime/ext_gui/browser.cpp +50 -14
  157. package/runtime/ext_gui/canvas.cpp +3 -18
  158. package/runtime/ext_gui/canvas_internal.h +10 -0
  159. package/runtime/ext_gui/canvas_raster.cpp +60 -0
  160. package/runtime/ext_gui/clip_values.cpp +246 -0
  161. package/runtime/ext_gui/css.cpp +94 -0
  162. package/runtime/ext_gui/css.h +22 -1
  163. package/runtime/ext_gui/css_match.cpp +3 -0
  164. package/runtime/ext_gui/css_selector.cpp +30 -3
  165. package/runtime/ext_gui/css_sheet.cpp +89 -45
  166. package/runtime/ext_gui/document.cpp +4 -1
  167. package/runtime/ext_gui/document.h +2 -0
  168. package/runtime/ext_gui/dom.h +16 -0
  169. package/runtime/ext_gui/dom_api.cpp +1 -0
  170. package/runtime/ext_gui/dom_api_canvas.cpp +17 -80
  171. package/runtime/ext_gui/dom_api_canvas_extra.cpp +130 -1
  172. package/runtime/ext_gui/dom_api_canvas_pending.cpp +41 -0
  173. package/runtime/ext_gui/dom_api_internal.h +275 -0
  174. package/runtime/ext_gui/dom_api_webgl.cpp +383 -0
  175. package/runtime/ext_gui/dom_api_webgl2.cpp +549 -0
  176. package/runtime/ext_gui/dom_api_webgl2_draw.cpp +269 -0
  177. package/runtime/ext_gui/dom_api_webgl_buffer.cpp +216 -0
  178. package/runtime/ext_gui/dom_api_webgl_compressed.cpp +167 -0
  179. package/runtime/ext_gui/dom_api_webgl_framebuffer.cpp +160 -0
  180. package/runtime/ext_gui/dom_api_webgl_rt.h +30 -0
  181. package/runtime/ext_gui/dom_api_webgl_shader.cpp +443 -0
  182. package/runtime/ext_gui/dom_api_webgl_source.cpp +161 -0
  183. package/runtime/ext_gui/dom_api_webgl_state.cpp +590 -0
  184. package/runtime/ext_gui/dom_api_webgl_texture.cpp +485 -0
  185. package/runtime/ext_gui/dom_api_webgl_ubo.cpp +81 -0
  186. package/runtime/ext_gui/effect_values.cpp +312 -0
  187. package/runtime/ext_gui/gradient_values.cpp +476 -0
  188. package/runtime/ext_gui/grid_values.cpp +230 -0
  189. package/runtime/ext_gui/gui.cpp +44 -9
  190. package/runtime/ext_gui/gui_canvas.cpp +50 -2
  191. package/runtime/ext_gui/gui_engine.h +36 -4
  192. package/runtime/ext_gui/gui_events.cpp +4 -1
  193. package/runtime/ext_gui/gui_media.cpp +1 -1
  194. package/runtime/ext_gui/gui_webgl.cpp +83 -0
  195. package/runtime/ext_gui/image_bitmap.cpp +28 -0
  196. package/runtime/ext_gui/image_bitmap.h +26 -0
  197. package/runtime/ext_gui/image_bitmap_browser.cpp +136 -0
  198. package/runtime/ext_gui/layout.cpp +21 -0
  199. package/runtime/ext_gui/layout_flow.cpp +81 -4
  200. package/runtime/ext_gui/layout_flow_internal.h +31 -0
  201. package/runtime/ext_gui/layout_grid.cpp +374 -0
  202. package/runtime/ext_gui/media.cpp +32 -0
  203. package/runtime/ext_gui/media.h +14 -1
  204. package/runtime/ext_gui/media_api.h +25 -2
  205. package/runtime/ext_gui/media_query.cpp +211 -0
  206. package/runtime/ext_gui/paint.cpp +111 -77
  207. package/runtime/ext_gui/paint.h +33 -3
  208. package/runtime/ext_gui/paint_background.cpp +229 -0
  209. package/runtime/ext_gui/paint_clip.cpp +268 -0
  210. package/runtime/ext_gui/paint_effects.cpp +324 -0
  211. package/runtime/ext_gui/paint_internal.h +85 -0
  212. package/runtime/ext_gui/renderer.cpp +8 -31
  213. package/runtime/ext_gui/renderer_clip.cpp +196 -0
  214. package/runtime/ext_gui/renderer_image.cpp +13 -8
  215. package/runtime/ext_gui/renderer_internal.h +15 -8
  216. package/runtime/ext_gui/renderer_text.cpp +6 -31
  217. package/runtime/ext_gui/style.cpp +343 -20
  218. package/runtime/ext_gui/style.h +144 -3
  219. package/runtime/ext_gui/style_print.cpp +134 -1
  220. package/runtime/ext_gui/style_values.cpp +152 -126
  221. package/runtime/ext_gui/style_values_internal.h +35 -0
  222. package/runtime/ext_gui/webgl.h +600 -0
  223. package/runtime/ext_gui/webgl2_constants.h +274 -0
  224. package/runtime/ext_gui/webgl_blit.cpp +95 -0
  225. package/runtime/ext_gui/webgl_buffer.cpp +480 -0
  226. package/runtime/ext_gui/webgl_buffer_objects.cpp +270 -0
  227. package/runtime/ext_gui/webgl_clear.cpp +142 -0
  228. package/runtime/ext_gui/webgl_compressed.cpp +180 -0
  229. package/runtime/ext_gui/webgl_constants.h +317 -0
  230. package/runtime/ext_gui/webgl_context.cpp +551 -0
  231. package/runtime/ext_gui/webgl_draw.cpp +560 -0
  232. package/runtime/ext_gui/webgl_draw_buffers.cpp +75 -0
  233. package/runtime/ext_gui/webgl_glsl.h +165 -0
  234. package/runtime/ext_gui/webgl_glsl_compile.cpp +437 -0
  235. package/runtime/ext_gui/webgl_glsl_rewrite.cpp +367 -0
  236. package/runtime/ext_gui/webgl_glsl_scan.cpp +590 -0
  237. package/runtime/ext_gui/webgl_glsl_scan_block.cpp +126 -0
  238. package/runtime/ext_gui/webgl_glsl_tokens.h +28 -0
  239. package/runtime/ext_gui/webgl_msl.cpp +62 -0
  240. package/runtime/ext_gui/webgl_msl.h +33 -0
  241. package/runtime/ext_gui/webgl_pipeline.cpp +326 -0
  242. package/runtime/ext_gui/webgl_program_blocks.cpp +58 -0
  243. package/runtime/ext_gui/webgl_program_internal.h +24 -0
  244. package/runtime/ext_gui/webgl_shader.cpp +594 -0
  245. package/runtime/ext_gui/webgl_state.cpp +228 -0
  246. package/runtime/ext_gui/webgl_texture.cpp +420 -0
  247. package/runtime/ext_gui/webgl_texture_3d.cpp +215 -0
  248. package/runtime/ext_gui/webgl_uniform.cpp +167 -0
  249. package/runtime/ext_gui/webgl_uniform_block.h +31 -0
  250. package/runtime/ext_gui/webgl_webgl2.cpp +277 -0
  251. package/runtime/ext_media/decode_audio.cpp +308 -0
  252. package/runtime/ext_media/media.cpp +1 -1
  253. package/runtime/ext_media/media_bridge.c +11 -3
  254. package/runtime/rt.h +17 -0
  255. package/runtime/rt_internal.h +1 -0
  256. package/runtime/xt_array_buffer.c +30 -0
  257. package/runtime/xt_containers/access.inc +8 -0
  258. package/runtime/xt_regex/api.inc +2 -0
  259. package/runtime/xt_regex/matcher.inc +16 -3
  260. package/runtime/xt_regex/parser.inc +8 -2
  261. package/runtime/xt_regex/types.inc +3 -0
  262. package/runtime/xt_stdlib2/regexp-match.inc +60 -21
  263. package/runtime/xt_stdlib2/regexp.inc +1 -0
  264. package/runtime/xt_typed_array/elements.inc +13 -0
  265. package/runtime/xt_typed_array.c +1 -1
  266. package/scripts/build-gui.ts +90 -3
  267. package/scripts/build-media.ts +335 -62
  268. package/scripts/build-runtime.ts +21 -16
  269. package/scripts/check-version.ts +39 -9
  270. package/scripts/package-platform.ts +183 -0
  271. package/scripts/set-platform-version.ts +62 -0
  272. package/scripts/setup-vs-toolchain.ps1 +152 -0
  273. package/scripts/verify-platform-package.ts +182 -0
  274. package/src/binder/references.ts +13 -1
  275. package/src/cli/main.ts +5 -1
  276. package/src/codegen/generator/module.ts +50 -0
  277. package/src/codegen/generator/statements/variables.ts +6 -3
  278. package/src/driver/runtime-lib.ts +73 -9
  279. package/src/driver/version.ts +1 -1
  280. package/src/extensions/gui/css.ts +113 -0
  281. package/src/extensions/gui/html.ts +9 -2
  282. package/src/extensions/gui/index.ts +22 -7
  283. package/src/extensions/gui/three.ts +25 -0
  284. package/src/extensions/media/index.ts +16 -18
  285. package/src/parser/context.ts +99 -4
  286. package/src/parser/literals.ts +6 -12
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-lib.js","sourceRoot":"","sources":["../../../src/driver/runtime-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,oEAAoE;AACpE,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;QACrD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"runtime-lib.js","sourceRoot":"","sources":["../../../src/driver/runtime-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,uDAAuD;AACvD,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAU,CAAC;AAEjD;;;GAGG;AACH,SAAS,qBAAqB;IAC5B,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB,EAAE,OAAe,YAAY,EAAE;IACvF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,GAAG,GAAG,WAAW,CAAC;IACtB,SAAS,CAAC;QACR,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,qBAAqB,EAAE,EAAE,GAAG,sBAAsB,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,6DAA6D;AAC7D,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAA0B,cAAc,EAAE;IACtE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAE,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,OAA0B,cAAc,EAAE;IAE1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;YAChD,IAAI,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -9,4 +9,4 @@
9
9
  * `main`/`master` only (see `.githooks/pre-commit`), so feature branches never
10
10
  * change this line and merging two of them cannot conflict here.
11
11
  */
12
- export declare const COMPILER_VERSION = "0.5.31";
12
+ export declare const COMPILER_VERSION = "0.5.36";
@@ -9,5 +9,5 @@
9
9
  * `main`/`master` only (see `.githooks/pre-commit`), so feature branches never
10
10
  * change this line and merging two of them cannot conflict here.
11
11
  */
12
- export const COMPILER_VERSION = "0.5.31";
12
+ export const COMPILER_VERSION = "0.5.36";
13
13
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,26 @@
1
+ /**
2
+ * GUI extension: inline external stylesheets into the HTML asset.
3
+ *
4
+ * The engine's CSS cascade only reads `<style>` elements (`document.cpp` skips
5
+ * `<link rel="stylesheet">` because resolving it would need I/O at runtime).
6
+ * A page that ships its CSS as a separate file therefore loses *all* styling
7
+ * once it is compiled. The bundler, unlike the runtime, can read files, so this
8
+ * loader rewrites every local stylesheet link (and every local `@import` inside
9
+ * it) into an inline `<style>` block. The page keeps its author-time structure
10
+ * and the compiled binary has no runtime file dependency.
11
+ *
12
+ * Remote URLs are left untouched: there is no network-backed style loader, so
13
+ * the engine simply ignores them, exactly as before.
14
+ */
15
+ /** A resolved local stylesheet: its inlined text is returned to the caller. */
16
+ export interface InlinedStylesheets {
17
+ readonly html: string;
18
+ /** Every stylesheet file that was read (for bundler cache invalidation). */
19
+ readonly dependencies: readonly string[];
20
+ }
21
+ /**
22
+ * Replace `<link rel="stylesheet">` elements with inline `<style>` blocks,
23
+ * recursively resolving local `@import` rules. Returns the rewritten HTML and
24
+ * the list of stylesheet files it read.
25
+ */
26
+ export declare function inlineStylesheets(htmlFile: string, html: string): InlinedStylesheets;
@@ -0,0 +1,100 @@
1
+ /**
2
+ * GUI extension: inline external stylesheets into the HTML asset.
3
+ *
4
+ * The engine's CSS cascade only reads `<style>` elements (`document.cpp` skips
5
+ * `<link rel="stylesheet">` because resolving it would need I/O at runtime).
6
+ * A page that ships its CSS as a separate file therefore loses *all* styling
7
+ * once it is compiled. The bundler, unlike the runtime, can read files, so this
8
+ * loader rewrites every local stylesheet link (and every local `@import` inside
9
+ * it) into an inline `<style>` block. The page keeps its author-time structure
10
+ * and the compiled binary has no runtime file dependency.
11
+ *
12
+ * Remote URLs are left untouched: there is no network-backed style loader, so
13
+ * the engine simply ignores them, exactly as before.
14
+ */
15
+ import { existsSync, readFileSync } from "node:fs";
16
+ import { dirname, resolve } from "node:path";
17
+ /** Read a stylesheet as a byte string (one code unit per UTF-8 byte).
18
+ *
19
+ * The bundler hands asset loaders the same shape (`sourceTextBytes`), so CSS
20
+ * must join the HTML *as bytes*. Decoding it to UTF-16 and putting that into
21
+ * the byte-string document would make codegen encode the HTML's own bytes a
22
+ * second time. `toString("latin1")` is exactly the byte-string mapping; the
23
+ * self-hosted runtime's `readFileSync` already returns bytes. */
24
+ function readCssText(file) {
25
+ const data = readFileSync(file);
26
+ return typeof data === "string" ? data : data.toString("latin1");
27
+ }
28
+ /** True for a URL the compiler cannot read (http:, data:, //host, …). */
29
+ const URL_SPEC = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
30
+ /** Read one attribute from an element's attribute text. */
31
+ function attribute(attributes, name) {
32
+ const pattern = new RegExp(`(?:^|\\s)${name}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s"'=<>\`]+))`, "i");
33
+ const match = pattern.exec(attributes);
34
+ if (!match)
35
+ return undefined;
36
+ return match[1] ?? match[2] ?? match[3];
37
+ }
38
+ /** Strip a `?query` / `#fragment`, then resolve against a base file. */
39
+ function localPath(baseFile, specifier) {
40
+ if (specifier === "" || URL_SPEC.test(specifier))
41
+ return undefined;
42
+ const clean = specifier.split(/[?#]/, 1)[0] ?? specifier;
43
+ return resolve(dirname(baseFile), clean);
44
+ }
45
+ /** True when the `rel` attribute lists `stylesheet` among its tokens. */
46
+ function isStylesheet(rel) {
47
+ if (rel === undefined)
48
+ return false;
49
+ return rel.toLowerCase().split(/\s+/).includes("stylesheet");
50
+ }
51
+ /**
52
+ * Inline every local `@import` in `css`. Imports are resolved relative to
53
+ * `cssFile`, which is the file the rules came from (not the HTML page), so a
54
+ * partial that imports a sibling keeps working. A cycle is cut at the repeated
55
+ * file rather than recursing forever.
56
+ */
57
+ function inlineImports(css, cssFile, dependencies, stack) {
58
+ /* `@import url("./x.css") screen;` and `@import "./x.css";` are the two
59
+ * spellings the CSS parser accepts. Match one at a time so a single bad
60
+ * import cannot swallow the rest of the sheet. */
61
+ const pattern = /@import\s+(?:url\(\s*(?:"([^"]*)"|'([^']*)'|([^'")\s]+))\s*\)|"([^"]*)"|'([^']*)')\s*[^;]*;/gi;
62
+ return css.replace(pattern, (match, a, b, c, d, e) => {
63
+ const specifier = a ?? b ?? c ?? d ?? e;
64
+ if (specifier === undefined)
65
+ return "";
66
+ const file = localPath(cssFile, specifier);
67
+ if (file === undefined)
68
+ return match;
69
+ if (stack.includes(file))
70
+ return "";
71
+ if (!existsSync(file))
72
+ return match;
73
+ dependencies.add(file);
74
+ const nested = readCssText(file);
75
+ return inlineImports(nested, file, dependencies, [...stack, file]);
76
+ });
77
+ }
78
+ /**
79
+ * Replace `<link rel="stylesheet">` elements with inline `<style>` blocks,
80
+ * recursively resolving local `@import` rules. Returns the rewritten HTML and
81
+ * the list of stylesheet files it read.
82
+ */
83
+ export function inlineStylesheets(htmlFile, html) {
84
+ const dependencies = new Set();
85
+ const rewritten = html.replace(/<link\b([^>]*)>/gi, (match, attributes) => {
86
+ if (!isStylesheet(attribute(attributes, "rel")))
87
+ return match;
88
+ const href = attribute(attributes, "href");
89
+ if (href === undefined)
90
+ return match;
91
+ const file = localPath(htmlFile, href);
92
+ if (file === undefined || !existsSync(file))
93
+ return match;
94
+ dependencies.add(file);
95
+ const css = inlineImports(readCssText(file), file, dependencies, [file]);
96
+ return `<style data-xt-href="${href.replace(/"/g, "&quot;")}">\n${css}\n</style>`;
97
+ });
98
+ return { html: rewritten, dependencies: [...dependencies] };
99
+ }
100
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sourceRoot":"","sources":["../../../../src/extensions/gui/css.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ import { SourceFile } from "../../diagnostics/source.js";
28
28
  import { Parser } from "../../parser/parser.js";
29
29
  import { artifactPath } from "../../canonical.js";
30
30
  import { hashString } from "../../driver/cache.js";
31
+ import { inlineStylesheets } from "./css.js";
31
32
  /** Matches an inline `<script …>body</script>` element, attributes included. */
32
33
  const SCRIPT_RE = /<script\b([^>]*)>([\s\S]*?)<\/script\s*>/gi;
33
34
  /** `<script src>` targets that are URLs (http:, data:, //host, …). */
@@ -161,7 +162,10 @@ export function loadHtmlAsset(path, source) {
161
162
  const imports = [];
162
163
  const importedText = new Set();
163
164
  const bound = new Set();
164
- const html = source.replace(SCRIPT_RE, (match, attributes, inlineBody) => {
165
+ /* The engine's cascade only reads `<style>` elements, so a linked stylesheet
166
+ * would be dropped at runtime. Inline it (and its `@import`s) now. */
167
+ const styles = inlineStylesheets(path, source);
168
+ const html = styles.html.replace(SCRIPT_RE, (match, attributes, inlineBody) => {
165
169
  if (!isExecutable(attribute(attributes, "type"), attribute(attributes, "lang")))
166
170
  return match;
167
171
  const src = attribute(attributes, "src");
@@ -211,7 +215,10 @@ export function loadHtmlAsset(path, source) {
211
215
  offset += part.length + 1;
212
216
  }
213
217
  parts.push(`export default ${JSON.stringify(html)};`);
214
- const result = { moduleSource: parts.join("\n") };
218
+ const result = {
219
+ moduleSource: parts.join("\n"),
220
+ ...(styles.dependencies.length > 0 ? { dependencies: styles.dependencies } : {}),
221
+ };
215
222
  return sourceRanges.length > 0 ? { ...result, sourceRanges } : result;
216
223
  }
217
224
  //# sourceMappingURL=html.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../../../src/extensions/gui/html.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../../../src/extensions/gui/html.ts"],"names":[],"mappings":"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"}
@@ -21,9 +21,10 @@
21
21
  * needs to bind the top-level functions.
22
22
  */
23
23
  import { join } from "node:path";
24
- import { findRuntimeDir, platformSlug } from "../../driver/paths.js";
25
- import { findRuntimeLibrary } from "../../driver/runtime-lib.js";
24
+ import { platformSlug } from "../../driver/paths.js";
25
+ import { findRuntimeLibrary, runtimeLibDir } from "../../driver/runtime-lib.js";
26
26
  import { loadHtmlAsset } from "./html.js";
27
+ import { loadScriptAsset } from "./three.js";
27
28
  /** Top-level `gui` module bindings. */
28
29
  const guiModule = {
29
30
  namespace: "gui",
@@ -73,6 +74,19 @@ const hostTypes = [
73
74
  "ReadableStream",
74
75
  "WebGLRenderingContext",
75
76
  "WebGL2RenderingContext",
77
+ "WebGLBuffer",
78
+ "WebGLTexture",
79
+ "WebGLShader",
80
+ "WebGLProgram",
81
+ "WebGLFramebuffer",
82
+ "WebGLRenderbuffer",
83
+ "WebGLUniformLocation",
84
+ "WebGLActiveInfo",
85
+ "WebGLVertexArrayObject",
86
+ "WebGLSampler",
87
+ "WebGLQuery",
88
+ "WebGLSync",
89
+ "WebGLTransformFeedback",
76
90
  "XRWebGLLayer",
77
91
  "XRWebGLBinding",
78
92
  ];
@@ -83,7 +97,7 @@ const browserGlobals = {
83
97
  navigator: { symbol: "xt_browser_navigator" },
84
98
  localStorage: { symbol: "xt_browser_local_storage" },
85
99
  __THREE_DEVTOOLS__: { symbol: "xt_browser_missing" },
86
- createImageBitmap: { symbol: "xt_browser_missing" },
100
+ createImageBitmap: { symbol: "xt_browser_create_image_bitmap" },
87
101
  };
88
102
  for (const type of hostTypes) {
89
103
  browserGlobals[type] = { symbol: "xt_browser_type", argument: type };
@@ -91,7 +105,7 @@ for (const type of hostTypes) {
91
105
  /** Absolute path to the per-platform prebuilt GUI archive (`gui.a`, or
92
106
  * `gui.lib` with the MSVC ABI on Windows). */
93
107
  function guiArchive() {
94
- return join(findRuntimeDir(), "lib", platformSlug(), "gui.a");
108
+ return join(runtimeLibDir(), "gui.a");
95
109
  }
96
110
  export const guiExtension = {
97
111
  name: "gui",
@@ -100,7 +114,8 @@ export const guiExtension = {
100
114
  const archive = findRuntimeLibrary("gui");
101
115
  if (archive === undefined) {
102
116
  throw new Error(`GUI native library not found at ${guiArchive()} (or gui.lib).\n` +
103
- `Build it for ${platformSlug()} first (see doc/gui.md).`);
117
+ `The optional @xbintsc/${platformSlug()} package ships it: reinstall xbintsc ` +
118
+ `without --omit=optional, or build it from a source checkout (see doc/gui.md).`);
104
119
  }
105
120
  return [archive];
106
121
  },
@@ -177,7 +192,7 @@ export const guiExtension = {
177
192
  }),
178
193
  /** Browser globals (`window`, `document`, the DOM type names). */
179
194
  globalValues: () => browserGlobals,
180
- /** Rewrite imported `.html` assets (see `html.ts`). */
181
- assetLoaders: () => ({ ".html": loadHtmlAsset }),
195
+ /** Rewrite imported `.html` assets and patch three.js's shader unroller. */
196
+ assetLoaders: () => ({ ".html": loadHtmlAsset, ".js": loadScriptAsset, ".mjs": loadScriptAsset }),
182
197
  };
183
198
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/gui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/gui/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * GUI extension: three.js shader-unroller compatibility.
3
+ *
4
+ * three.js's `WebGLRenderer` runs unchanged on this engine's real WebGL 2
5
+ * backend; no Canvas2D fallback (and no renderer wrapper) is needed. The one
6
+ * shader-side workaround is its `unrollLoops` pass: its lazy global regex does
7
+ * not behave reliably on this runtime, and the shader rewriter already defines
8
+ * `UNROLLED_LOOP_INDEX` and keeps the numeric `for` loop. Disabling the pattern
9
+ * therefore leaves valid GLSL instead of a half-expanded loop.
10
+ */
11
+ import type { AssetLoadResult } from "../registry.js";
12
+ /**
13
+ * Patch a three.js ES module so its shaders keep their light loops. Any other
14
+ * `.js` asset is returned verbatim.
15
+ */
16
+ export declare function loadScriptAsset(path: string, source: string): AssetLoadResult;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * GUI extension: three.js shader-unroller compatibility.
3
+ *
4
+ * three.js's `WebGLRenderer` runs unchanged on this engine's real WebGL 2
5
+ * backend; no Canvas2D fallback (and no renderer wrapper) is needed. The one
6
+ * shader-side workaround is its `unrollLoops` pass: its lazy global regex does
7
+ * not behave reliably on this runtime, and the shader rewriter already defines
8
+ * `UNROLLED_LOOP_INDEX` and keeps the numeric `for` loop. Disabling the pattern
9
+ * therefore leaves valid GLSL instead of a half-expanded loop.
10
+ */
11
+ /** three.js's unroll-loop regex declaration (r150–r16x naming). */
12
+ const LOOP_PATTERN = /const unrollLoopPattern = [^\n]*;/;
13
+ /**
14
+ * Patch a three.js ES module so its shaders keep their light loops. Any other
15
+ * `.js` asset is returned verbatim.
16
+ */
17
+ export function loadScriptAsset(path, source) {
18
+ return {
19
+ moduleSource: source.replace(LOOP_PATTERN, "const unrollLoopPattern = /__xt_never_match__/;"),
20
+ };
21
+ }
22
+ //# sourceMappingURL=three.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"three.js","sourceRoot":"","sources":["../../../../src/extensions/gui/three.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,mEAAmE;AACnE,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAc;IAC1D,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,iDAAiD,CAAC;KAC9F,CAAC;AACJ,CAAC"}
@@ -6,8 +6,9 @@
6
6
  * so a program that only needs windows and HTML/CSS does not pay for a media
7
7
  * stack it never uses. This extension supplies the decoding half:
8
8
  *
9
- * - `media.a` (built by `npm run media`) contains the FFmpeg-linked player
10
- * from `runtime/ext_media/media.cpp` and the static FFmpeg libraries;
9
+ * - `media.a` (`media.lib` with the MSVC ABI on Windows, built by
10
+ * `npm run media`) contains the FFmpeg-linked player from
11
+ * `runtime/ext_media/media.cpp` and the static FFmpeg libraries;
11
12
  * - `runtime/ext_media/media_bridge.c` is compiled and linked directly. Its
12
13
  * constructor installs the player table into the GUI engine and references
13
14
  * the backend entry points, which makes the linker extract the archive
@@ -19,9 +20,9 @@
19
20
  *
20
21
  * xbintsc run app.ts --ext gui,media
21
22
  *
22
- * The archive is POSIX-only for now (the build needs FFmpeg's `configure` and
23
- * an MSVC-compatible FFmpeg has not been built), so Windows reports an
24
- * actionable error instead of linking an inert element.
23
+ * The archive is built for every host platform. On Windows FFmpeg is compiled
24
+ * with the MSVC-targeting clang-cl so its COFF objects and static CRT match
25
+ * `gui.lib`; see `doc/gui/build.md`.
25
26
  */
26
27
  import type { Extension } from "../registry.js";
27
28
  export declare const mediaExtension: Extension;
@@ -6,8 +6,9 @@
6
6
  * so a program that only needs windows and HTML/CSS does not pay for a media
7
7
  * stack it never uses. This extension supplies the decoding half:
8
8
  *
9
- * - `media.a` (built by `npm run media`) contains the FFmpeg-linked player
10
- * from `runtime/ext_media/media.cpp` and the static FFmpeg libraries;
9
+ * - `media.a` (`media.lib` with the MSVC ABI on Windows, built by
10
+ * `npm run media`) contains the FFmpeg-linked player from
11
+ * `runtime/ext_media/media.cpp` and the static FFmpeg libraries;
11
12
  * - `runtime/ext_media/media_bridge.c` is compiled and linked directly. Its
12
13
  * constructor installs the player table into the GUI engine and references
13
14
  * the backend entry points, which makes the linker extract the archive
@@ -19,16 +20,16 @@
19
20
  *
20
21
  * xbintsc run app.ts --ext gui,media
21
22
  *
22
- * The archive is POSIX-only for now (the build needs FFmpeg's `configure` and
23
- * an MSVC-compatible FFmpeg has not been built), so Windows reports an
24
- * actionable error instead of linking an inert element.
23
+ * The archive is built for every host platform. On Windows FFmpeg is compiled
24
+ * with the MSVC-targeting clang-cl so its COFF objects and static CRT match
25
+ * `gui.lib`; see `doc/gui/build.md`.
25
26
  */
26
27
  import { join } from "node:path";
27
28
  import { findRuntimeDir, platformSlug } from "../../driver/paths.js";
28
- import { findRuntimeLibrary } from "../../driver/runtime-lib.js";
29
+ import { findRuntimeLibrary, runtimeLibDir } from "../../driver/runtime-lib.js";
29
30
  /** Absolute path to the per-platform prebuilt media archive. */
30
31
  function mediaArchive() {
31
- return join(findRuntimeDir(), "lib", platformSlug(), "media.a");
32
+ return join(runtimeLibDir(), process.platform === "win32" ? "media.lib" : "media.a");
32
33
  }
33
34
  export const mediaExtension = {
34
35
  name: "media",
@@ -41,20 +42,18 @@ export const mediaExtension = {
41
42
  */
42
43
  runtimeSources: () => [join(findRuntimeDir(), "ext_media", "media_bridge.c")],
43
44
  nativeObjects: () => {
44
- if (process.platform === "win32") {
45
- throw new Error("the media extension is not available on Windows yet: it needs an MSVC-compatible " +
46
- "FFmpeg build (see doc/gui/known-issues.md). Build without --ext media; media " +
47
- "elements then report an 'error' event.");
48
- }
49
45
  const archive = findRuntimeLibrary("media");
50
46
  if (archive === undefined) {
51
- throw new Error(`media native library not found at ${mediaArchive()} (or media.lib).\n` +
52
- `Build it for ${platformSlug()} first with \`npm run media\` (see doc/gui/build.md).`);
47
+ throw new Error(`media native library not found at ${mediaArchive()} (media.a or media.lib).\n` +
48
+ `The optional @xbintsc/${platformSlug()} package ships it: reinstall xbintsc ` +
49
+ `without --omit=optional, or build it with \`npm run media\` (see doc/gui/build.md).`);
53
50
  }
54
51
  return [archive];
55
52
  },
56
53
  /** `media.a` is C++ and FFmpeg itself needs libm; the GUI extension already
57
- * contributes the C++ runtime and the OS frameworks. */
58
- linkerFlags: () => (process.platform === "win32" ? [] : ["-lm"]),
54
+ * contributes the C++ runtime and the OS frameworks. On Windows the FFmpeg
55
+ * objects reference the Win32 crypto/COM services (`bcrypt`, `ole32`) and
56
+ * `user32`. */
57
+ linkerFlags: () => process.platform === "win32" ? ["-lbcrypt", "-lole32", "-luser32"] : ["-lm"],
59
58
  };
60
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/media/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,gEAAgE;AAChE,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,uEAAuE;IACpF,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB;;;;OAIG;IACH,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC7E,aAAa,EAAE,GAAG,EAAE;QAClB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,mFAAmF;gBACjF,+EAA+E;gBAC/E,wCAAwC,CAC3C,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,qCAAqC,YAAY,EAAE,oBAAoB;gBACrE,gBAAgB,YAAY,EAAE,uDAAuD,CACxF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IACD;4DACwD;IACxD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CACjE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/media/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEhF,gEAAgE;AAChE,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,uEAAuE;IACpF,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB;;;;OAIG;IACH,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC7E,aAAa,EAAE,GAAG,EAAE;QAClB,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,qCAAqC,YAAY,EAAE,4BAA4B;gBAC7E,yBAAyB,YAAY,EAAE,uCAAuC;gBAC9E,qFAAqF,CACxF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IACD;;;mBAGe;IACf,WAAW,EAAE,GAAG,EAAE,CAChB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;CAC/E,CAAC"}
@@ -11,11 +11,22 @@ import type { SourceFile } from "../diagnostics/source.js";
11
11
  import { Scanner } from "../lexer/scanner.js";
12
12
  import { Token, TokenKind } from "../lexer/token.js";
13
13
  import type { Identifier, StringLiteral } from "../ast/nodes.js";
14
+ /**
15
+ * The template-literal context of the scanner at one point in the token
16
+ * stream. `frames` holds the brace depth of every open `${ … }` substitution
17
+ * (innermost last); `pendingOffset` is the `}` that must be re-read as template
18
+ * text before the next token is scanned.
19
+ */
20
+ interface TemplateState {
21
+ readonly frames: readonly number[];
22
+ readonly pendingOffset: number | undefined;
23
+ }
14
24
  export interface ParserState {
15
25
  index: number;
16
26
  tokens: Token[];
17
27
  pos: number;
18
28
  consumed: number;
29
+ template: TemplateState;
19
30
  }
20
31
  export declare class ParserContext {
21
32
  readonly scanner: Scanner;
@@ -27,6 +38,16 @@ export declare class ParserContext {
27
38
  speculating: number;
28
39
  /** Monotonic count of tokens consumed; used to detect lack of progress. */
29
40
  consumed: number;
41
+ /** Brace depth of each open `${ … }` substitution, innermost last. */
42
+ private templateFrames;
43
+ /** Offset of the `}` that must be re-read as template text on the next scan. */
44
+ private pendingTemplateOffset;
45
+ /**
46
+ * Template context after each buffered token. A parser method that rewinds
47
+ * the scanner (the regex fallback) restores the context recorded on the
48
+ * current token so a template that was only seen by lookahead stays coherent.
49
+ */
50
+ private readonly templateStates;
30
51
  constructor(source: SourceFile, diagnostics: DiagnosticBag);
31
52
  get token(): Token;
32
53
  /**
@@ -38,6 +59,25 @@ export declare class ParserContext {
38
59
  atAhead(k: number, kind: TokenKind): boolean;
39
60
  lookAhead(k: number): Token;
40
61
  nextToken(): Token;
62
+ /**
63
+ * Scan the next token, keeping a template literal together. A `${ … }`
64
+ * substitution is ordinary token stream (so the parser can parse the
65
+ * expression), but the `}` that closes it must be followed by a token that
66
+ * re-reads the source as template text. Scanning the tail of a template as
67
+ * normal tokens would let its raw text (quotes, parens, `}`) leak into
68
+ * lookahead - and `findMatchingParen` would then count characters that are
69
+ * part of the literal.
70
+ */
71
+ private scanToken;
72
+ /**
73
+ * Discard any lookahead and continue scanning at `offset`. Used when a
74
+ * literal's raw text has to be re-read (the regex fallback). The template
75
+ * context is restored to the state recorded for the current token, because
76
+ * the skipped source cannot have opened or closed a template.
77
+ */
78
+ rescanFrom(offset: number): void;
79
+ private snapshotTemplateState;
80
+ private restoreTemplateState;
41
81
  parseExpected(kind: TokenKind, message?: string): Token;
42
82
  error(code: DiagnosticCode, message: string, token?: Token): void;
43
83
  /**
@@ -56,3 +96,4 @@ export declare class ParserContext {
56
96
  saveState(): ParserState;
57
97
  restoreState(state: ParserState): void;
58
98
  }
99
+ export {};