@glint/ember-tsc 1.2.1 → 1.2.3

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 (127) hide show
  1. package/README.md +1 -0
  2. package/lib/cli/run-volar-tsc.d.ts +2 -0
  3. package/lib/cli/run-volar-tsc.d.ts.map +1 -0
  4. package/lib/cli/run-volar-tsc.js +32 -0
  5. package/lib/cli/run-volar-tsc.js.map +1 -0
  6. package/lib/config/config.d.ts +15 -0
  7. package/lib/config/config.d.ts.map +1 -0
  8. package/lib/config/config.js +21 -0
  9. package/lib/config/config.js.map +1 -0
  10. package/lib/config/environment.d.ts +26 -0
  11. package/lib/config/environment.d.ts.map +1 -0
  12. package/lib/config/environment.js +96 -0
  13. package/lib/config/environment.js.map +1 -0
  14. package/lib/config/index.d.ts +17 -0
  15. package/lib/config/index.d.ts.map +1 -0
  16. package/lib/config/index.js +26 -0
  17. package/lib/config/index.js.map +1 -0
  18. package/lib/config/loader.d.ts +28 -0
  19. package/lib/config/loader.d.ts.map +1 -0
  20. package/lib/config/loader.js +121 -0
  21. package/lib/config/loader.js.map +1 -0
  22. package/lib/config/types.cjs +3 -0
  23. package/lib/config/types.cjs.map +1 -0
  24. package/lib/config/types.d.cts +60 -0
  25. package/lib/config/types.d.cts.map +1 -0
  26. package/lib/environment-ember-template-imports/-private/environment/common.d.ts +13 -0
  27. package/lib/environment-ember-template-imports/-private/environment/common.d.ts.map +1 -0
  28. package/lib/environment-ember-template-imports/-private/environment/common.js +2 -0
  29. package/lib/environment-ember-template-imports/-private/environment/common.js.map +1 -0
  30. package/lib/environment-ember-template-imports/-private/environment/index.d.ts +3 -0
  31. package/lib/environment-ember-template-imports/-private/environment/index.d.ts.map +1 -0
  32. package/lib/environment-ember-template-imports/-private/environment/index.js +76 -0
  33. package/lib/environment-ember-template-imports/-private/environment/index.js.map +1 -0
  34. package/lib/environment-ember-template-imports/-private/environment/preprocess.d.ts +4 -0
  35. package/lib/environment-ember-template-imports/-private/environment/preprocess.d.ts.map +1 -0
  36. package/lib/environment-ember-template-imports/-private/environment/preprocess.js +73 -0
  37. package/lib/environment-ember-template-imports/-private/environment/preprocess.js.map +1 -0
  38. package/lib/environment-ember-template-imports/-private/environment/transform.d.ts +4 -0
  39. package/lib/environment-ember-template-imports/-private/environment/transform.d.ts.map +1 -0
  40. package/lib/environment-ember-template-imports/-private/environment/transform.js +134 -0
  41. package/lib/environment-ember-template-imports/-private/environment/transform.js.map +1 -0
  42. package/lib/index.d.ts +7 -0
  43. package/lib/index.d.ts.map +1 -0
  44. package/lib/index.js +6 -0
  45. package/lib/index.js.map +1 -0
  46. package/lib/plugins/g-compiler-errors.d.ts +12 -0
  47. package/lib/plugins/g-compiler-errors.d.ts.map +1 -0
  48. package/lib/plugins/g-compiler-errors.js +58 -0
  49. package/lib/plugins/g-compiler-errors.js.map +1 -0
  50. package/lib/plugins/g-template-tag-symbols.d.ts +11 -0
  51. package/lib/plugins/g-template-tag-symbols.d.ts.map +1 -0
  52. package/lib/plugins/g-template-tag-symbols.js +48 -0
  53. package/lib/plugins/g-template-tag-symbols.js.map +1 -0
  54. package/lib/plugins/utils.d.ts +25 -0
  55. package/lib/plugins/utils.d.ts.map +1 -0
  56. package/lib/plugins/utils.js +63 -0
  57. package/lib/plugins/utils.js.map +1 -0
  58. package/lib/transform/diagnostics/augmentation.d.ts +4 -0
  59. package/lib/transform/diagnostics/augmentation.d.ts.map +1 -0
  60. package/lib/transform/diagnostics/augmentation.js +223 -0
  61. package/lib/transform/diagnostics/augmentation.js.map +1 -0
  62. package/lib/transform/diagnostics/index.d.ts +5 -0
  63. package/lib/transform/diagnostics/index.d.ts.map +1 -0
  64. package/lib/transform/diagnostics/index.js +2 -0
  65. package/lib/transform/diagnostics/index.js.map +1 -0
  66. package/lib/transform/index.d.ts +4 -0
  67. package/lib/transform/index.d.ts.map +1 -0
  68. package/lib/transform/index.js +2 -0
  69. package/lib/transform/index.js.map +1 -0
  70. package/lib/transform/template/code-features.d.ts +30 -0
  71. package/lib/transform/template/code-features.d.ts.map +1 -0
  72. package/lib/transform/template/code-features.js +26 -0
  73. package/lib/transform/template/code-features.js.map +1 -0
  74. package/lib/transform/template/glimmer-ast-mapping-tree.d.ts +80 -0
  75. package/lib/transform/template/glimmer-ast-mapping-tree.d.ts.map +1 -0
  76. package/lib/transform/template/glimmer-ast-mapping-tree.js +132 -0
  77. package/lib/transform/template/glimmer-ast-mapping-tree.js.map +1 -0
  78. package/lib/transform/template/inlining/index.d.ts +16 -0
  79. package/lib/transform/template/inlining/index.d.ts.map +1 -0
  80. package/lib/transform/template/inlining/index.js +21 -0
  81. package/lib/transform/template/inlining/index.js.map +1 -0
  82. package/lib/transform/template/inlining/tagged-strings.d.ts +8 -0
  83. package/lib/transform/template/inlining/tagged-strings.d.ts.map +1 -0
  84. package/lib/transform/template/inlining/tagged-strings.js +140 -0
  85. package/lib/transform/template/inlining/tagged-strings.js.map +1 -0
  86. package/lib/transform/template/map-template-contents.d.ts +121 -0
  87. package/lib/transform/template/map-template-contents.d.ts.map +1 -0
  88. package/lib/transform/template/map-template-contents.js +287 -0
  89. package/lib/transform/template/map-template-contents.js.map +1 -0
  90. package/lib/transform/template/rewrite-module.d.ts +22 -0
  91. package/lib/transform/template/rewrite-module.d.ts.map +1 -0
  92. package/lib/transform/template/rewrite-module.js +265 -0
  93. package/lib/transform/template/rewrite-module.js.map +1 -0
  94. package/lib/transform/template/scope-stack.d.ts +13 -0
  95. package/lib/transform/template/scope-stack.d.ts.map +1 -0
  96. package/lib/transform/template/scope-stack.js +28 -0
  97. package/lib/transform/template/scope-stack.js.map +1 -0
  98. package/lib/transform/template/template-to-typescript.d.ts +19 -0
  99. package/lib/transform/template/template-to-typescript.d.ts.map +1 -0
  100. package/lib/transform/template/template-to-typescript.js +1118 -0
  101. package/lib/transform/template/template-to-typescript.js.map +1 -0
  102. package/lib/transform/template/transformed-module.d.ts +111 -0
  103. package/lib/transform/template/transformed-module.d.ts.map +1 -0
  104. package/lib/transform/template/transformed-module.js +287 -0
  105. package/lib/transform/template/transformed-module.js.map +1 -0
  106. package/lib/transform/util.d.ts +7 -0
  107. package/lib/transform/util.d.ts.map +1 -0
  108. package/lib/transform/util.js +15 -0
  109. package/lib/transform/util.js.map +1 -0
  110. package/lib/volar/ember-language-plugin.d.ts +14 -0
  111. package/lib/volar/ember-language-plugin.d.ts.map +1 -0
  112. package/lib/volar/ember-language-plugin.js +91 -0
  113. package/lib/volar/ember-language-plugin.js.map +1 -0
  114. package/lib/volar/gts-virtual-code.d.ts +83 -0
  115. package/lib/volar/gts-virtual-code.d.ts.map +1 -0
  116. package/lib/volar/gts-virtual-code.js +210 -0
  117. package/lib/volar/gts-virtual-code.js.map +1 -0
  118. package/lib/volar/language-server.d.ts +2 -0
  119. package/lib/volar/language-server.d.ts.map +1 -0
  120. package/lib/volar/language-server.js +171 -0
  121. package/lib/volar/language-server.js.map +1 -0
  122. package/lib/volar/script-snapshot.d.ts +17 -0
  123. package/lib/volar/script-snapshot.d.ts.map +1 -0
  124. package/lib/volar/script-snapshot.js +24 -0
  125. package/lib/volar/script-snapshot.js.map +1 -0
  126. package/package.json +4 -4
  127. package/src/transform/template/template-to-typescript.ts +34 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glint/ember-tsc",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "repository": "typed-ember/glint",
5
5
  "description": "A CLI for performing typechecking on Glimmer templates",
6
6
  "license": "MIT",
@@ -71,7 +71,7 @@
71
71
  "vscode-languageserver-protocol": "^3.17.5",
72
72
  "vscode-languageserver-textdocument": "^1.0.12",
73
73
  "vscode-uri": "^3.1.0",
74
- "@glint/template": "1.7.5"
74
+ "@glint/template": "1.7.7"
75
75
  },
76
76
  "devDependencies": {
77
77
  "@glimmer/component": "^2.0.0",
@@ -86,8 +86,8 @@
86
86
  "execa": "^4.0.1",
87
87
  "strip-ansi": "^6.0.0",
88
88
  "typescript": "^5.9.3",
89
- "glint-monorepo-test-utils": "0.0.0",
90
- "@glint/type-test": "2.0.0"
89
+ "@glint/type-test": "2.0.1",
90
+ "glint-monorepo-test-utils": "0.0.0"
91
91
  },
92
92
  "publishConfig": {
93
93
  "access": "public"
@@ -302,21 +302,32 @@ export function templateToTypescript(
302
302
  mapper.text('__glintDSL__.emitContent(');
303
303
  }
304
304
 
305
- // Treat the first argument to a bind-invokable expression (`{{component}}`,
306
- // `{{helper}}`, etc) as special: we wrap it in a `resolve` call so that the
307
- // type machinery for those helpers can always operate against the resolved value.
308
- // We wrap the `resolveForBind` call in an IIFE to prevent "backpressure" in
309
- // type inference from the subsequent arguments that are being passed: the bound
310
- // invokable is the source of record for its own type and we don't want inference
311
- // from the `resolveForBind` call to be affected by other (potentially incorrect)
312
- // parameter types.
313
- mapper.text('__glintDSL__.resolve(');
314
- emitExpression(node.path);
315
- mapper.text(')((() => __glintDSL__.resolveForBind(');
316
- emitExpression(node.params[0]);
317
- mapper.text('))(), ');
318
- emitArgs(node.params.slice(1), node.hash);
319
- mapper.text(')');
305
+ // Emit the keyword call (with IIFE to isolate inference). This
306
+ // validates arg types via Named/Return decomposition.
307
+ function emitKeywordCall(): void {
308
+ mapper.text('__glintDSL__.resolve(');
309
+ emitExpression(node.path);
310
+ mapper.text(')((() => __glintDSL__.resolveForBind(');
311
+ emitExpression(node.params[0]);
312
+ mapper.text('))(), ');
313
+ emitArgs(node.params.slice(1), node.hash);
314
+ mapper.text(')');
315
+ }
316
+
317
+ if (node.hash.pairs.length > 0) {
318
+ // Two-stage comma expression (#1068): the keyword call validates
319
+ // arg types (result discarded), while bindInvokable preserves
320
+ // generic type parameters via Args/T holistic capture (result used).
321
+ mapper.text('(');
322
+ emitKeywordCall();
323
+ mapper.text(', __glintDSL__.bindInvokable(__glintDSL__.resolveForBind(');
324
+ emitExpression(node.params[0]);
325
+ mapper.text('), ');
326
+ emitArgs([], node.hash);
327
+ mapper.text('))');
328
+ } else {
329
+ emitKeywordCall();
330
+ }
320
331
 
321
332
  if (position === 'top-level') {
322
333
  mapper.text(')');
@@ -952,7 +963,14 @@ export function templateToTypescript(
952
963
  mapper.text(')');
953
964
  });
954
965
 
955
- mapper.text('(__glintY__.element, ');
966
+ mapper.text('(');
967
+ // Map __glintY__.element to the modifier node so that element
968
+ // constraint diagnostics (e.g. applying a HTMLCanvasElement modifier
969
+ // to a <div>) surface on the modifier in the template.
970
+ mapper.forNode(modifier, () => {
971
+ mapper.text('__glintY__.element');
972
+ });
973
+ mapper.text(', ');
956
974
  emitArgs(modifier.params, modifier.hash);
957
975
  mapper.text('));');
958
976
  mapper.newline();