@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/README.md CHANGED
@@ -47,3 +47,4 @@ ember-tsc --build --declaration --emitDeclarationOnly --watch
47
47
 
48
48
  Please refer to `tsc` docs for other use cases and flags.
49
49
 
50
+
@@ -0,0 +1,2 @@
1
+ export declare function run(): void;
2
+ //# sourceMappingURL=run-volar-tsc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-volar-tsc.d.ts","sourceRoot":"","sources":["../../src/cli/run-volar-tsc.ts"],"names":[],"mappings":"AAOA,wBAAgB,GAAG,IAAI,IAAI,CA6B1B"}
@@ -0,0 +1,32 @@
1
+ import { runTsc } from '@volar/typescript/lib/quickstart/runTsc.js';
2
+ import { createEmberLanguagePlugin } from '../volar/ember-language-plugin.js';
3
+ import { findConfig } from '../config/index.js';
4
+ import { createRequire } from 'node:module';
5
+ const require = createRequire(import.meta.url);
6
+ export function run() {
7
+ let cwd = process.cwd();
8
+ const options = {
9
+ extraSupportedExtensions: ['.gjs', '.gts'],
10
+ // With the below configuration `{basename.gts}` will produce `{basename}.d.ts`
11
+ // This is in line with how V2 addons build their components.
12
+ // At build time, `.gts` components are emitted as `.js` files, so that's why the corresponding declarations should be `.d.ts`
13
+ //
14
+ // Please refer to https://github.com/typed-ember/glint/issues/988 for more information
15
+ //
16
+ // Before this option, glint emitted broken declarations in which relative imports to other .gts files did not strip extensions (https://github.com/typed-ember/glint/issues/628).
17
+ // The declarations outputted by volar's runTsc luckily also remove extension in imports.
18
+ extraExtensionsToRemove: ['.gjs', '.gts'],
19
+ };
20
+ const main = () => runTsc(require.resolve('typescript/lib/tsc'), options, (ts, options) => {
21
+ const glintConfig = findConfig(cwd);
22
+ if (glintConfig) {
23
+ const gtsLanguagePlugin = createEmberLanguagePlugin(glintConfig);
24
+ return [gtsLanguagePlugin];
25
+ }
26
+ else {
27
+ return [];
28
+ }
29
+ });
30
+ main();
31
+ }
32
+ //# sourceMappingURL=run-volar-tsc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-volar-tsc.js","sourceRoot":"","sources":["../../src/cli/run-volar-tsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,UAAU,GAAG;IACjB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAExB,MAAM,OAAO,GAAG;QACd,wBAAwB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QAE1C,+EAA+E;QAC/E,6DAA6D;QAC7D,8HAA8H;QAC9H,EAAE;QACF,uFAAuF;QACvF,EAAE;QACF,kLAAkL;QAClL,yFAAyF;QACzF,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;KAC1C,CAAC;IAEF,MAAM,IAAI,GAAG,GAAS,EAAE,CACtB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;QACrE,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;YACjE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IACL,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { GlintConfigInput } from '@glint/ember-tsc/config-types';
2
+ import { GlintEnvironment } from './environment.js';
3
+ /**
4
+ * This class represents parsed Glint configuration from a `tsconfig` or `jsconfig` file,
5
+ * with methods for interrogating project configuration based on its contents.
6
+ */
7
+ export declare class GlintConfig {
8
+ readonly ts: typeof import('typescript');
9
+ readonly rootDir: string;
10
+ readonly configPath: string;
11
+ readonly environment: GlintEnvironment;
12
+ constructor(ts: typeof import('typescript'), configPath: string, config: GlintConfigInput);
13
+ }
14
+ export declare function normalizePath(fileName: string): string;
15
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,WAAW;IACtB,SAAwB,EAAE,EAAE,cAAc,YAAY,CAAC,CAAC;IACxD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,WAAW,EAAE,gBAAgB,CAAC;gBAG5C,EAAE,EAAE,cAAc,YAAY,CAAC,EAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB;CAO3B;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMtD"}
@@ -0,0 +1,21 @@
1
+ import * as path from 'node:path';
2
+ import { GlintEnvironment } from './environment.js';
3
+ /**
4
+ * This class represents parsed Glint configuration from a `tsconfig` or `jsconfig` file,
5
+ * with methods for interrogating project configuration based on its contents.
6
+ */
7
+ export class GlintConfig {
8
+ constructor(ts, configPath, config) {
9
+ Object.defineProperty(this, 'ts', { value: ts });
10
+ this.configPath = normalizePath(configPath);
11
+ this.rootDir = path.dirname(configPath);
12
+ this.environment = GlintEnvironment.load(config);
13
+ }
14
+ }
15
+ export function normalizePath(fileName) {
16
+ if (path.sep !== '/') {
17
+ return fileName.split(path.sep).join('/');
18
+ }
19
+ return fileName;
20
+ }
21
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,MAAM,OAAO,WAAW;IAMtB,YACE,EAA+B,EAC/B,UAAkB,EAClB,MAAwB;QAExB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { GlintEnvironmentConfig, GlintExtensionConfig, GlintExtensionsConfig, GlintTagsConfig, SourceKind } from '@glint/ember-tsc/config-types';
2
+ export declare const DEFAULT_EXTENSIONS: GlintExtensionsConfig;
3
+ /**
4
+ * A GlintEnvironment represents the _merged_ configurations of one or more
5
+ * glint environments (e.g. ember-template-imports).
6
+ */
7
+ export declare class GlintEnvironment {
8
+ readonly names: Array<string>;
9
+ private tagConfig;
10
+ private extensionsConfig;
11
+ constructor(names: Array<string>, config: GlintEnvironmentConfig);
12
+ static load(topLevelGlintConfigObject: any): GlintEnvironment;
13
+ getSourceKind(fileName: string): SourceKind | 'unknown';
14
+ isUntypedScript(path: string): boolean;
15
+ /**
16
+ * Returns any custom configuration for the given file extension.
17
+ */
18
+ getConfigForExtension(extension: string): GlintExtensionConfig | undefined;
19
+ /**
20
+ * Returns an array of template tags that should be rewritten according to this
21
+ * config object, along with an import specifier indicating where the template types
22
+ * for each tag can be found.
23
+ */
24
+ getConfiguredTemplateTags(): GlintTagsConfig;
25
+ }
26
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,UAAU,EACX,MAAM,+BAA+B,CAAC;AAMvC,eAAO,MAAM,kBAAkB,EAAE,qBAGhC,CAAC;AAEF;;;GAGG;AACH,qBAAa,gBAAgB;aAKT,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;IAJtC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,gBAAgB,CAAwB;gBAG9B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpC,MAAM,EAAE,sBAAsB;WAOlB,IAAI,CAAC,yBAAyB,EAAE,GAAG,GAAG,gBAAgB;IAqE7D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAKvD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7C;;OAEG;IACI,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIjF;;;;OAIG;IACI,yBAAyB,IAAI,eAAe;CAGpD"}
@@ -0,0 +1,96 @@
1
+ import * as path from 'node:path';
2
+ import SilentError from 'silent-error';
3
+ import emberTemplateImportsEnvironment from '../environment-ember-template-imports/-private/environment/index.js';
4
+ export const DEFAULT_EXTENSIONS = {
5
+ '.js': { kind: 'untyped-script' },
6
+ '.ts': { kind: 'typed-script' },
7
+ };
8
+ /**
9
+ * A GlintEnvironment represents the _merged_ configurations of one or more
10
+ * glint environments (e.g. ember-template-imports).
11
+ */
12
+ export class GlintEnvironment {
13
+ constructor(names, config) {
14
+ this.names = names;
15
+ this.tagConfig = config.tags ?? {};
16
+ // when is this populated? what is config?
17
+ this.extensionsConfig = config.extensions ?? {};
18
+ }
19
+ static load(topLevelGlintConfigObject) {
20
+ // Glint V1:
21
+ let additionalGlobals = null;
22
+ let additionalSpecialForms = {};
23
+ if (topLevelGlintConfigObject) {
24
+ if (topLevelGlintConfigObject.additionalGlobals ||
25
+ topLevelGlintConfigObject.additionalSpecialForms) {
26
+ additionalGlobals = topLevelGlintConfigObject.additionalGlobals;
27
+ additionalSpecialForms = topLevelGlintConfigObject.additionalSpecialForms ?? {};
28
+ }
29
+ else {
30
+ if (Array.isArray(topLevelGlintConfigObject.environment)) {
31
+ // If it's a legacy array of environment names, e.g. ['ember-template-imports', 'ember-loose'],
32
+ // then there is no additional config such as additionalGlobals to extract.
33
+ }
34
+ else {
35
+ if (typeof topLevelGlintConfigObject.environment === 'object') {
36
+ const emberTemplateImportsConfig = topLevelGlintConfigObject.environment?.['ember-template-imports'] ?? {};
37
+ additionalGlobals = emberTemplateImportsConfig.additionalGlobals ?? [];
38
+ additionalSpecialForms = emberTemplateImportsConfig.additionalSpecialForms ?? {};
39
+ }
40
+ }
41
+ }
42
+ }
43
+ let tags = {};
44
+ let extensions = { ...DEFAULT_EXTENSIONS };
45
+ const envUserConfig = { additionalGlobals, additionalSpecialForms };
46
+ let config = emberTemplateImportsEnvironment(envUserConfig);
47
+ if (config.tags) {
48
+ for (let [importSource, specifiers] of Object.entries(config.tags)) {
49
+ tags[importSource] ?? (tags[importSource] = {});
50
+ for (let [importSpecifier, tagConfig] of Object.entries(specifiers)) {
51
+ if (importSpecifier in tags[importSource]) {
52
+ throw new SilentError('Multiple configured Glint environments attempted to define behavior for the tag `' +
53
+ importSpecifier +
54
+ "` in module '" +
55
+ importSource +
56
+ "'.");
57
+ }
58
+ tags[importSource][importSpecifier] = tagConfig;
59
+ }
60
+ }
61
+ }
62
+ if (config.extensions) {
63
+ for (let [extension, extensionConfig] of Object.entries(config.extensions)) {
64
+ if (extension in extensions) {
65
+ throw new SilentError('Multiple configured Glint environments attempted to define handling for the ' +
66
+ extension +
67
+ ' file extension.');
68
+ }
69
+ extensions[extension] = extensionConfig;
70
+ }
71
+ }
72
+ return new GlintEnvironment(Object.keys(config), { tags, extensions });
73
+ }
74
+ getSourceKind(fileName) {
75
+ let extension = path.extname(fileName);
76
+ return this.extensionsConfig[extension]?.kind ?? 'unknown';
77
+ }
78
+ isUntypedScript(path) {
79
+ return this.getSourceKind(path) === 'untyped-script';
80
+ }
81
+ /**
82
+ * Returns any custom configuration for the given file extension.
83
+ */
84
+ getConfigForExtension(extension) {
85
+ return this.extensionsConfig[extension];
86
+ }
87
+ /**
88
+ * Returns an array of template tags that should be rewritten according to this
89
+ * config object, along with an import specifier indicating where the template types
90
+ * for each tag can be found.
91
+ */
92
+ getConfiguredTemplateTags() {
93
+ return this.tagConfig;
94
+ }
95
+ }
96
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { GlintConfig } from './config.js';
2
+ export { GlintConfig } from './config.js';
3
+ export { GlintEnvironment } from './environment.js';
4
+ export { ConfigLoader, findTypeScript } from './loader.js';
5
+ /**
6
+ * Loads glint configuration, starting from the given directory
7
+ * and searching upwards and raising an error if no configuration
8
+ * is found.
9
+ */
10
+ export declare function loadConfig(from: string): GlintConfig;
11
+ /**
12
+ * Loads glint configuration, starting from the given directory
13
+ * and searching upwards. Returns `null` if no configuration is
14
+ * found.
15
+ */
16
+ export declare function findConfig(from: string): GlintConfig | null;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAOpD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAE3D"}
@@ -0,0 +1,26 @@
1
+ import SilentError from 'silent-error';
2
+ import { ConfigLoader } from './loader.js';
3
+ export { GlintConfig } from './config.js';
4
+ export { GlintEnvironment } from './environment.js';
5
+ export { ConfigLoader, findTypeScript } from './loader.js';
6
+ /**
7
+ * Loads glint configuration, starting from the given directory
8
+ * and searching upwards and raising an error if no configuration
9
+ * is found.
10
+ */
11
+ export function loadConfig(from) {
12
+ let config = findConfig(from);
13
+ if (!config) {
14
+ throw new SilentError(`Unable to find Glint configuration for ${from}`);
15
+ }
16
+ return config;
17
+ }
18
+ /**
19
+ * Loads glint configuration, starting from the given directory
20
+ * and searching upwards. Returns `null` if no configuration is
21
+ * found.
22
+ */
23
+ export function findConfig(from) {
24
+ return new ConfigLoader().configForDirectory(from);
25
+ }
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,WAAW,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,YAAY,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { GlintConfigInput } from '@glint/ember-tsc/config-types';
2
+ import type TS from 'typescript';
3
+ import { GlintConfig } from './config.js';
4
+ /**
5
+ * @private
6
+ *
7
+ * Only exported for testing purposes. Do not import.
8
+ */
9
+ export declare const require: NodeJS.Require;
10
+ type TypeScript = typeof TS;
11
+ /**
12
+ * `ConfigLoader` provides an interface for finding the Glint config that
13
+ * applies to a given file or directory, ensuring that only a single instance
14
+ * of `GlintConfig` is ever created for a given `tsconfig.json` or
15
+ * `jsconfig.json` source file.
16
+ */
17
+ export declare class ConfigLoader {
18
+ private configs;
19
+ private logInfo?;
20
+ constructor(logInfo?: (message: string) => void);
21
+ private log;
22
+ configForFile(filePath: string): GlintConfig | null;
23
+ configForDirectory(directory: string): GlintConfig | null;
24
+ }
25
+ export declare function findTypeScript(fromDir: string): TypeScript | null;
26
+ export declare function loadConfigInput(ts: TypeScript, entryPath: string): GlintConfigInput | null;
27
+ export {};
28
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAKjE,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,OAAO,gBAAiC,CAAC;AAEtD,KAAK,UAAU,GAAG,OAAO,EAAE,CAAC;AAE5B;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,OAAO,CAAC,CAA4B;gBAEhC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IAI/C,OAAO,CAAC,GAAG;IAIJ,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAInD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;CA4BjE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAMjE;AAiDD,wBAAgB,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAE1F"}
@@ -0,0 +1,121 @@
1
+ import * as fs from 'node:fs';
2
+ import { createRequire } from 'node:module';
3
+ import * as path from 'node:path';
4
+ import SilentError from 'silent-error';
5
+ import { GlintConfig } from './config.js';
6
+ /**
7
+ * @private
8
+ *
9
+ * Only exported for testing purposes. Do not import.
10
+ */
11
+ export const require = createRequire(import.meta.url);
12
+ /**
13
+ * `ConfigLoader` provides an interface for finding the Glint config that
14
+ * applies to a given file or directory, ensuring that only a single instance
15
+ * of `GlintConfig` is ever created for a given `tsconfig.json` or
16
+ * `jsconfig.json` source file.
17
+ */
18
+ export class ConfigLoader {
19
+ constructor(logInfo) {
20
+ this.configs = new Map();
21
+ this.logInfo = logInfo;
22
+ }
23
+ log(message) {
24
+ this.logInfo?.(message);
25
+ }
26
+ configForFile(filePath) {
27
+ return this.configForDirectory(path.dirname(filePath));
28
+ }
29
+ configForDirectory(directory) {
30
+ let ts = findTypeScript(directory);
31
+ if (!ts) {
32
+ this.log(`No TypeScript installation found from ${directory}.`);
33
+ return null;
34
+ }
35
+ let configPath = findNearestConfigFile(ts, directory);
36
+ if (!configPath) {
37
+ this.log(`No tsconfig.json or jsconfig.json found from ${directory}.`);
38
+ return null;
39
+ }
40
+ let existing = this.configs.get(configPath);
41
+ if (existing !== undefined) {
42
+ this.log(`Using cached Glint config from ${configPath}.`);
43
+ return existing;
44
+ }
45
+ let configInput = loadConfigInput(ts, configPath);
46
+ let config = new GlintConfig(ts, configPath, configInput || { environment: [] });
47
+ this.log(`Loaded Glint config from ${configPath}.`);
48
+ this.configs.set(configPath, config);
49
+ return config;
50
+ }
51
+ }
52
+ export function findTypeScript(fromDir) {
53
+ let requireFrom = path.resolve(fromDir, 'package.json');
54
+ return (tryResolve(() => createRequire(requireFrom)('typescript')) ??
55
+ tryResolve(() => require('typescript')));
56
+ }
57
+ function tryResolve(load) {
58
+ try {
59
+ return load();
60
+ }
61
+ catch (error) {
62
+ if (error?.code === 'MODULE_NOT_FOUND') {
63
+ return null;
64
+ }
65
+ throw error;
66
+ }
67
+ }
68
+ function parseConfigInput(ts, entryPath, currentPath, fullGlintConfig) {
69
+ let currentContents = ts.readConfigFile(currentPath, ts.sys.readFile).config;
70
+ let currentGlintConfig = currentContents.glint ?? {};
71
+ assert(currentPath === entryPath || !currentGlintConfig.transform, 'Glint `transform` options may not be specified in extended config.');
72
+ if (currentContents.extends) {
73
+ let paths = Array.isArray(currentContents.extends)
74
+ ? currentContents.extends
75
+ : [currentContents.extends];
76
+ for (let extendPath of paths) {
77
+ let currentExtendPath = path.resolve(path.dirname(currentPath), extendPath);
78
+ if (!fs.existsSync(currentExtendPath)) {
79
+ try {
80
+ currentExtendPath = require.resolve(currentContents.extends);
81
+ }
82
+ catch {
83
+ // suppress the exception thrown by require.resolve for those scenarios where the file does not exist
84
+ }
85
+ }
86
+ fullGlintConfig = parseConfigInput(ts, entryPath, currentExtendPath, fullGlintConfig);
87
+ }
88
+ }
89
+ return { ...fullGlintConfig, ...currentGlintConfig };
90
+ }
91
+ export function loadConfigInput(ts, entryPath) {
92
+ return validateConfigInput(parseConfigInput(ts, entryPath, entryPath, {}));
93
+ }
94
+ function findNearestConfigFile(ts, searchFrom) {
95
+ // Assume that the longest path is the most relevant one in the case that
96
+ // multiple config files exist at or above our current directory.
97
+ let configCandidates = [
98
+ ts.findConfigFile(searchFrom, ts.sys.fileExists, 'tsconfig.json'),
99
+ ts.findConfigFile(searchFrom, ts.sys.fileExists, 'jsconfig.json'),
100
+ ]
101
+ .filter((path) => typeof path === 'string')
102
+ .sort((a, b) => b.length - a.length);
103
+ return configCandidates[0];
104
+ }
105
+ function validateConfigInput(input) {
106
+ if (!input['environment']) {
107
+ input['environment'] = [];
108
+ }
109
+ assert(Array.isArray(input['environment'])
110
+ ? input['environment'].every((env) => typeof env === 'string')
111
+ : typeof input['environment'] === 'string' ||
112
+ (typeof input['environment'] === 'object' && input['environment']), 'Glint config must specify an `environment` that is a string, array of strings, or an object ' +
113
+ 'mapping environment names to their config.');
114
+ return input;
115
+ }
116
+ function assert(test, message) {
117
+ if (!test) {
118
+ throw new SilentError(`Glint config: ${message}`);
119
+ }
120
+ }
121
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/config/types.cts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ import type ts from 'typescript';
2
+ type TSLib = typeof ts;
3
+ export type GlintConfigInput = {
4
+ environment: string | Array<string> | Record<string, unknown>;
5
+ };
6
+ export type GlintEnvironmentConfig = {
7
+ tags?: GlintTagsConfig;
8
+ extensions?: GlintExtensionsConfig;
9
+ };
10
+ export type GlintExtensionPreprocess<T> = (source: string, filePath: string) => {
11
+ contents: string;
12
+ data?: T;
13
+ };
14
+ export type GlintEmitMetadata = {
15
+ prepend?: string;
16
+ append?: string;
17
+ templateLocation?: {
18
+ start: number;
19
+ end: number;
20
+ contentStart: number;
21
+ contentEnd: number;
22
+ };
23
+ };
24
+ export type GlintExtensionTransform<T> = (data: T, state: {
25
+ ts: TSLib;
26
+ context: ts.TransformationContext;
27
+ setEmitMetadata: (node: ts.TaggedTemplateExpression, meta: GlintEmitMetadata) => void;
28
+ }) => ts.Transformer<ts.Node>;
29
+ export type GlintSpecialForm = 'if' | 'if-not' | 'yield' | 'object-literal' | 'array-literal' | 'bind-invokable' | '===' | '!==' | '&&' | '||' | '!';
30
+ export type GlintSpecialFormConfig = {
31
+ globals?: {
32
+ [global: string]: GlintSpecialForm;
33
+ };
34
+ imports?: {
35
+ [path: string]: {
36
+ [identifier: string]: GlintSpecialForm;
37
+ };
38
+ };
39
+ };
40
+ export type SourceKind = 'typed-script' | 'untyped-script';
41
+ export type GlintExtensionConfig<PreprocessData = any> = {
42
+ kind: SourceKind;
43
+ preprocess?: GlintExtensionPreprocess<PreprocessData>;
44
+ transform?: GlintExtensionTransform<PreprocessData>;
45
+ };
46
+ export type GlintExtensionsConfig = {
47
+ [extension: string]: GlintExtensionConfig;
48
+ };
49
+ export type GlintTagConfig = {
50
+ typesModule: string;
51
+ globals?: Array<string>;
52
+ specialForms?: GlintSpecialFormConfig;
53
+ };
54
+ export type GlintTagsConfig = {
55
+ [importSource: string]: {
56
+ [importSpecifier: string]: GlintTagConfig;
57
+ };
58
+ };
59
+ export {};
60
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../src/config/types.cts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAKjC,KAAK,KAAK,GAAG,OAAO,EAAE,CAAC;AAEvB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,CACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAEpC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CACvC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE;IACL,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC;IAClC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,EAAE,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACvF,KACE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAE7B,MAAM,MAAM,gBAAgB,GACxB,IAAI,GACJ,QAAQ,GACR,OAAO,GACP,gBAAgB,GAChB,eAAe,GACf,gBAAgB,GAChB,KAAK,GACL,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,GAAG,CAAC;AAER,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAC;IACjD,OAAO,CAAC,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG;YACd,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAAC;SACxC,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAC3D,MAAM,MAAM,oBAAoB,CAAC,cAAc,GAAG,GAAG,IAAI;IACvD,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACtD,SAAS,CAAC,EAAE,uBAAuB,CAAC,cAAc,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,YAAY,EAAE,MAAM,GAAG;QACtB,CAAC,eAAe,EAAE,MAAM,GAAG,cAAc,CAAC;KAC3C,CAAC;CACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type PreprocessData = {
2
+ templateLocations: Array<TemplateLocation>;
3
+ };
4
+ export type TemplateLocation = {
5
+ startTagOffset: number;
6
+ startTagLength: number;
7
+ endTagOffset: number;
8
+ endTagLength: number;
9
+ transformedStart: number;
10
+ transformedEnd: number;
11
+ };
12
+ export declare const GLOBAL_TAG = "___T";
13
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/common.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,iBAAiB,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,UAAU,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const GLOBAL_TAG = `___T`;
2
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/common.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { GlintEnvironmentConfig } from '@glint/ember-tsc/config-types';
2
+ export default function emberTemplateImportsEnvironment(options: Record<string, unknown>): GlintEnvironmentConfig;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA0B,MAAM,+BAA+B,CAAC;AAI/F,MAAM,CAAC,OAAO,UAAU,+BAA+B,CACrD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,sBAAsB,CA4ExB"}
@@ -0,0 +1,76 @@
1
+ import { preprocess } from './preprocess.js';
2
+ import { transform } from './transform.js';
3
+ export default function emberTemplateImportsEnvironment(options) {
4
+ let additionalSpecialForms = typeof options['additionalSpecialForms'] === 'object'
5
+ ? options['additionalSpecialForms']
6
+ : {};
7
+ const additionalGlobalSpecialForms = additionalSpecialForms.globals ?? {};
8
+ const additionalGlobals = Array.isArray(options['additionalGlobals'])
9
+ ? options['additionalGlobals']
10
+ : [];
11
+ return {
12
+ tags: {
13
+ '@glint/ember-tsc/environment-ember-template-imports/-private/tag': {
14
+ hbs: {
15
+ typesModule: '@glint/ember-tsc/-private/dsl',
16
+ specialForms: {
17
+ globals: {
18
+ if: 'if',
19
+ unless: 'if-not',
20
+ yield: 'yield',
21
+ component: 'bind-invokable',
22
+ modifier: 'bind-invokable',
23
+ helper: 'bind-invokable',
24
+ ...additionalGlobalSpecialForms,
25
+ },
26
+ imports: {
27
+ '@ember/helper': {
28
+ array: 'array-literal',
29
+ hash: 'object-literal',
30
+ ...additionalSpecialForms.imports?.['@ember/helper'],
31
+ },
32
+ ...additionalSpecialForms.imports,
33
+ },
34
+ },
35
+ globals: [
36
+ 'action',
37
+ 'component',
38
+ 'debugger',
39
+ 'each',
40
+ 'each-in',
41
+ 'has-block',
42
+ 'has-block-params',
43
+ 'helper',
44
+ 'if',
45
+ 'in-element',
46
+ 'let',
47
+ 'log',
48
+ 'modifier',
49
+ 'mount',
50
+ 'mut',
51
+ 'outlet',
52
+ 'unbound',
53
+ 'unless',
54
+ 'with',
55
+ 'yield',
56
+ ...Object.keys(additionalGlobalSpecialForms),
57
+ ...additionalGlobals,
58
+ ],
59
+ },
60
+ },
61
+ },
62
+ extensions: {
63
+ '.gts': {
64
+ kind: 'typed-script',
65
+ preprocess,
66
+ transform,
67
+ },
68
+ '.gjs': {
69
+ kind: 'untyped-script',
70
+ preprocess,
71
+ transform,
72
+ },
73
+ },
74
+ };
75
+ }
76
+ //# sourceMappingURL=index.js.map