@glint/ember-tsc 1.0.1-unstable.3c953c4

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 (180) hide show
  1. package/README.md +46 -0
  2. package/bin/ember-tsc.js +4 -0
  3. package/bin/glint-language-server.js +2 -0
  4. package/lib/cli/run-volar-tsc.d.ts +2 -0
  5. package/lib/cli/run-volar-tsc.d.ts.map +1 -0
  6. package/lib/cli/run-volar-tsc.js +30 -0
  7. package/lib/cli/run-volar-tsc.js.map +1 -0
  8. package/lib/config/config.d.ts +15 -0
  9. package/lib/config/config.d.ts.map +1 -0
  10. package/lib/config/config.js +21 -0
  11. package/lib/config/config.js.map +1 -0
  12. package/lib/config/environment.d.ts +26 -0
  13. package/lib/config/environment.d.ts.map +1 -0
  14. package/lib/config/environment.js +96 -0
  15. package/lib/config/environment.js.map +1 -0
  16. package/lib/config/index.d.ts +17 -0
  17. package/lib/config/index.d.ts.map +1 -0
  18. package/lib/config/index.js +26 -0
  19. package/lib/config/index.js.map +1 -0
  20. package/lib/config/loader.d.ts +25 -0
  21. package/lib/config/loader.d.ts.map +1 -0
  22. package/lib/config/loader.js +110 -0
  23. package/lib/config/loader.js.map +1 -0
  24. package/lib/config/types.cjs +3 -0
  25. package/lib/config/types.cjs.map +1 -0
  26. package/lib/config/types.d.cts +60 -0
  27. package/lib/config/types.d.cts.map +1 -0
  28. package/lib/environment-ember-template-imports/-private/environment/common.d.ts +13 -0
  29. package/lib/environment-ember-template-imports/-private/environment/common.d.ts.map +1 -0
  30. package/lib/environment-ember-template-imports/-private/environment/common.js +2 -0
  31. package/lib/environment-ember-template-imports/-private/environment/common.js.map +1 -0
  32. package/lib/environment-ember-template-imports/-private/environment/index.d.ts +3 -0
  33. package/lib/environment-ember-template-imports/-private/environment/index.d.ts.map +1 -0
  34. package/lib/environment-ember-template-imports/-private/environment/index.js +76 -0
  35. package/lib/environment-ember-template-imports/-private/environment/index.js.map +1 -0
  36. package/lib/environment-ember-template-imports/-private/environment/preprocess.d.ts +4 -0
  37. package/lib/environment-ember-template-imports/-private/environment/preprocess.d.ts.map +1 -0
  38. package/lib/environment-ember-template-imports/-private/environment/preprocess.js +73 -0
  39. package/lib/environment-ember-template-imports/-private/environment/preprocess.js.map +1 -0
  40. package/lib/environment-ember-template-imports/-private/environment/transform.d.ts +4 -0
  41. package/lib/environment-ember-template-imports/-private/environment/transform.d.ts.map +1 -0
  42. package/lib/environment-ember-template-imports/-private/environment/transform.js +134 -0
  43. package/lib/environment-ember-template-imports/-private/environment/transform.js.map +1 -0
  44. package/lib/index.d.ts +7 -0
  45. package/lib/index.d.ts.map +1 -0
  46. package/lib/index.js +6 -0
  47. package/lib/index.js.map +1 -0
  48. package/lib/plugins/g-compiler-errors.d.ts +12 -0
  49. package/lib/plugins/g-compiler-errors.d.ts.map +1 -0
  50. package/lib/plugins/g-compiler-errors.js +58 -0
  51. package/lib/plugins/g-compiler-errors.js.map +1 -0
  52. package/lib/plugins/g-template-tag-symbols.d.ts +11 -0
  53. package/lib/plugins/g-template-tag-symbols.d.ts.map +1 -0
  54. package/lib/plugins/g-template-tag-symbols.js +48 -0
  55. package/lib/plugins/g-template-tag-symbols.js.map +1 -0
  56. package/lib/plugins/utils.d.ts +25 -0
  57. package/lib/plugins/utils.d.ts.map +1 -0
  58. package/lib/plugins/utils.js +63 -0
  59. package/lib/plugins/utils.js.map +1 -0
  60. package/lib/transform/diagnostics/augmentation.d.ts +4 -0
  61. package/lib/transform/diagnostics/augmentation.d.ts.map +1 -0
  62. package/lib/transform/diagnostics/augmentation.js +223 -0
  63. package/lib/transform/diagnostics/augmentation.js.map +1 -0
  64. package/lib/transform/diagnostics/index.d.ts +5 -0
  65. package/lib/transform/diagnostics/index.d.ts.map +1 -0
  66. package/lib/transform/diagnostics/index.js +2 -0
  67. package/lib/transform/diagnostics/index.js.map +1 -0
  68. package/lib/transform/index.d.ts +4 -0
  69. package/lib/transform/index.d.ts.map +1 -0
  70. package/lib/transform/index.js +2 -0
  71. package/lib/transform/index.js.map +1 -0
  72. package/lib/transform/template/code-features.d.ts +30 -0
  73. package/lib/transform/template/code-features.d.ts.map +1 -0
  74. package/lib/transform/template/code-features.js +26 -0
  75. package/lib/transform/template/code-features.js.map +1 -0
  76. package/lib/transform/template/glimmer-ast-mapping-tree.d.ts +80 -0
  77. package/lib/transform/template/glimmer-ast-mapping-tree.d.ts.map +1 -0
  78. package/lib/transform/template/glimmer-ast-mapping-tree.js +132 -0
  79. package/lib/transform/template/glimmer-ast-mapping-tree.js.map +1 -0
  80. package/lib/transform/template/inlining/index.d.ts +16 -0
  81. package/lib/transform/template/inlining/index.d.ts.map +1 -0
  82. package/lib/transform/template/inlining/index.js +21 -0
  83. package/lib/transform/template/inlining/index.js.map +1 -0
  84. package/lib/transform/template/inlining/tagged-strings.d.ts +8 -0
  85. package/lib/transform/template/inlining/tagged-strings.d.ts.map +1 -0
  86. package/lib/transform/template/inlining/tagged-strings.js +140 -0
  87. package/lib/transform/template/inlining/tagged-strings.js.map +1 -0
  88. package/lib/transform/template/map-template-contents.d.ts +121 -0
  89. package/lib/transform/template/map-template-contents.d.ts.map +1 -0
  90. package/lib/transform/template/map-template-contents.js +287 -0
  91. package/lib/transform/template/map-template-contents.js.map +1 -0
  92. package/lib/transform/template/rewrite-module.d.ts +22 -0
  93. package/lib/transform/template/rewrite-module.d.ts.map +1 -0
  94. package/lib/transform/template/rewrite-module.js +265 -0
  95. package/lib/transform/template/rewrite-module.js.map +1 -0
  96. package/lib/transform/template/scope-stack.d.ts +13 -0
  97. package/lib/transform/template/scope-stack.d.ts.map +1 -0
  98. package/lib/transform/template/scope-stack.js +28 -0
  99. package/lib/transform/template/scope-stack.js.map +1 -0
  100. package/lib/transform/template/template-to-typescript.d.ts +19 -0
  101. package/lib/transform/template/template-to-typescript.d.ts.map +1 -0
  102. package/lib/transform/template/template-to-typescript.js +1095 -0
  103. package/lib/transform/template/template-to-typescript.js.map +1 -0
  104. package/lib/transform/template/transformed-module.d.ts +111 -0
  105. package/lib/transform/template/transformed-module.d.ts.map +1 -0
  106. package/lib/transform/template/transformed-module.js +287 -0
  107. package/lib/transform/template/transformed-module.js.map +1 -0
  108. package/lib/transform/util.d.ts +7 -0
  109. package/lib/transform/util.d.ts.map +1 -0
  110. package/lib/transform/util.js +15 -0
  111. package/lib/transform/util.js.map +1 -0
  112. package/lib/volar/ember-language-plugin.d.ts +14 -0
  113. package/lib/volar/ember-language-plugin.d.ts.map +1 -0
  114. package/lib/volar/ember-language-plugin.js +91 -0
  115. package/lib/volar/ember-language-plugin.js.map +1 -0
  116. package/lib/volar/gts-virtual-code.d.ts +83 -0
  117. package/lib/volar/gts-virtual-code.d.ts.map +1 -0
  118. package/lib/volar/gts-virtual-code.js +210 -0
  119. package/lib/volar/gts-virtual-code.js.map +1 -0
  120. package/lib/volar/language-server.d.ts +2 -0
  121. package/lib/volar/language-server.d.ts.map +1 -0
  122. package/lib/volar/language-server.js +214 -0
  123. package/lib/volar/language-server.js.map +1 -0
  124. package/lib/volar/script-snapshot.d.ts +17 -0
  125. package/lib/volar/script-snapshot.d.ts.map +1 -0
  126. package/lib/volar/script-snapshot.js +24 -0
  127. package/lib/volar/script-snapshot.js.map +1 -0
  128. package/package.json +114 -0
  129. package/src/cli/run-volar-tsc.ts +36 -0
  130. package/src/config/config.ts +33 -0
  131. package/src/config/environment.ts +128 -0
  132. package/src/config/index.ts +30 -0
  133. package/src/config/loader.ts +143 -0
  134. package/src/config/types.cts +85 -0
  135. package/src/environment-ember-template-imports/-private/environment/common.ts +14 -0
  136. package/src/environment-ember-template-imports/-private/environment/index.ts +83 -0
  137. package/src/environment-ember-template-imports/-private/environment/preprocess.ts +90 -0
  138. package/src/environment-ember-template-imports/-private/environment/transform.ts +202 -0
  139. package/src/index.ts +9 -0
  140. package/src/plugins/g-compiler-errors.ts +67 -0
  141. package/src/plugins/g-template-tag-symbols.ts +54 -0
  142. package/src/plugins/utils.ts +86 -0
  143. package/src/transform/diagnostics/augmentation.ts +333 -0
  144. package/src/transform/diagnostics/index.ts +5 -0
  145. package/src/transform/index.ts +4 -0
  146. package/src/transform/template/code-features.ts +30 -0
  147. package/src/transform/template/glimmer-ast-mapping-tree.ts +173 -0
  148. package/src/transform/template/inlining/index.ts +33 -0
  149. package/src/transform/template/inlining/tagged-strings.ts +187 -0
  150. package/src/transform/template/map-template-contents.ts +501 -0
  151. package/src/transform/template/rewrite-module.ts +372 -0
  152. package/src/transform/template/scope-stack.ts +34 -0
  153. package/src/transform/template/template-to-typescript.ts +1476 -0
  154. package/src/transform/template/transformed-module.ts +431 -0
  155. package/src/transform/util.ts +24 -0
  156. package/src/volar/ember-language-plugin.ts +108 -0
  157. package/src/volar/gts-virtual-code.ts +249 -0
  158. package/src/volar/language-server.ts +250 -0
  159. package/src/volar/script-snapshot.ts +27 -0
  160. package/types/-private/dsl/globals.d.ts +204 -0
  161. package/types/-private/dsl/index.d.ts +50 -0
  162. package/types/-private/dsl/integration-declarations.d.ts +143 -0
  163. package/types/-private/intrinsics/action.d.ts +45 -0
  164. package/types/-private/intrinsics/concat.d.ts +6 -0
  165. package/types/-private/intrinsics/each-in.d.ts +24 -0
  166. package/types/-private/intrinsics/each.d.ts +17 -0
  167. package/types/-private/intrinsics/fn.d.ts +44 -0
  168. package/types/-private/intrinsics/get.d.ts +31 -0
  169. package/types/-private/intrinsics/input.d.ts +24 -0
  170. package/types/-private/intrinsics/link-to.d.ts +31 -0
  171. package/types/-private/intrinsics/log.d.ts +6 -0
  172. package/types/-private/intrinsics/mount.d.ts +9 -0
  173. package/types/-private/intrinsics/mut.d.ts +14 -0
  174. package/types/-private/intrinsics/on.d.ts +21 -0
  175. package/types/-private/intrinsics/outlet.d.ts +8 -0
  176. package/types/-private/intrinsics/textarea.d.ts +16 -0
  177. package/types/-private/intrinsics/unbound.d.ts +10 -0
  178. package/types/-private/intrinsics/unique-id.d.ts +5 -0
  179. package/types/globals/index.d.ts +3 -0
  180. package/types/silent-error.d.ts +4 -0
@@ -0,0 +1,265 @@
1
+ import * as path from 'node:path';
2
+ import { assert } from '../util.js';
3
+ import { calculateTaggedTemplateSpans } from './inlining/tagged-strings.js';
4
+ import TransformedModule from './transformed-module.js';
5
+ /**
6
+ * Given the script and/or template that together comprise a component module,
7
+ * returns a `TransformedModule` representing the combined result, with the
8
+ * template(s), either alongside or inline, rewritten into equivalent TypeScript
9
+ * in terms of the active glint environment's exported types.
10
+ *
11
+ * May return `null` if an unrecoverable parse error occurs or if there is
12
+ * no transformation to be done.
13
+ */
14
+ export function rewriteModule(ts, { script }, environment, clientId) {
15
+ let { errors, directives, partialSpans } = calculateCorrelatedSpans(ts, script, environment, clientId);
16
+ if (!partialSpans.length && !errors.length) {
17
+ return null;
18
+ }
19
+ let sparseSpans = completeCorrelatedSpans(partialSpans);
20
+ let { contents, correlatedSpans } = calculateTransformedSource(script, sparseSpans, directives);
21
+ return new TransformedModule(contents, errors, directives, correlatedSpans, script.filename);
22
+ }
23
+ /**
24
+ * Locates any embedded templates in the given AST and returns a corresponding
25
+ * `PartialCorrelatedSpan` for each, as well as any errors encountered. These
26
+ * spans are then used in `rewriteModule` above to calculate the full set of
27
+ * source-to-source location information as well as the final transformed source
28
+ * string.
29
+ */
30
+ function calculateCorrelatedSpans(ts, script, environment, clientId) {
31
+ let directives = [];
32
+ let errors = [];
33
+ let partialSpans = [];
34
+ if (clientId === 'tsserver-plugin') {
35
+ partialSpans.push(generateAutoImportAnchor(script));
36
+ }
37
+ let { ast, emitMetadata, error } = parseScript(ts, script, environment);
38
+ if (error) {
39
+ if (typeof error === 'string') {
40
+ errors.push({
41
+ message: error,
42
+ location: { start: 0, end: script.contents.length - 1 },
43
+ source: script,
44
+ });
45
+ }
46
+ else if ('isContentTagError' in error && error.isContentTagError) {
47
+ // these lines exclude the line with the error, because
48
+ // adding the column offset will get us on to the line with the error
49
+ let lines = script.contents.split('\n').slice(0, error.line);
50
+ let start = lines.reduce((sum, line) => sum + line.length, 0) + error.column - 1;
51
+ let end = start + 1;
52
+ errors.push({
53
+ isContentTagError: true,
54
+ // we have to show the "help" because content-tag has different line numbers
55
+ // than we are able to discern ourselves.
56
+ message: error.message + '\n\n' + error.help,
57
+ source: script,
58
+ location: {
59
+ start,
60
+ end,
61
+ },
62
+ });
63
+ }
64
+ // We've hit a parsing error, so we need to immediately return as the parsed
65
+ // document must be correct before we can continue.
66
+ return { errors, directives, partialSpans };
67
+ }
68
+ ts.transform(ast, [
69
+ (context) => function visit(node) {
70
+ // Here we look for ```hbs``` tagged template expressions, originally introduced
71
+ // in the now-removed GlimmerX environment. We can consider getting rid of this, but
72
+ // then again there are still some use cases in the wild (e.g. Glimmer Next / GXT)
73
+ // where have tagged templates closing over outer scope is desirable:
74
+ // https://github.com/lifeart/glimmer-next/tree/master/glint-environment-gxt
75
+ // https://discord.com/channels/480462759797063690/717767358743183412/1259061848632721480
76
+ if (ts.isTaggedTemplateExpression(node)) {
77
+ let meta = emitMetadata.get(node);
78
+ let result = calculateTaggedTemplateSpans(ts, node, meta, script, environment);
79
+ directives.push(...result.directives);
80
+ errors.push(...result.errors);
81
+ partialSpans.push(...result.partialSpans);
82
+ }
83
+ else if (ts.isModuleDeclaration(node)) {
84
+ // don't traverse into declare module
85
+ return node;
86
+ }
87
+ return ts.visitEachChild(node, visit, context);
88
+ },
89
+ ]);
90
+ return { errors, directives, partialSpans };
91
+ }
92
+ function parseScript(ts, script, environment) {
93
+ let { filename, contents } = script;
94
+ let extension = path.extname(filename);
95
+ let emitMetadata = new WeakMap();
96
+ let setEmitMetadata = (node, data) => void emitMetadata.set(node, Object.assign(emitMetadata.get(node) ?? {}, data));
97
+ let { preprocess, transform } = environment.getConfigForExtension(extension) ?? {};
98
+ let original = { contents, data: { templateLocations: [] } };
99
+ let preprocessed = original;
100
+ let error;
101
+ try {
102
+ preprocessed = preprocess?.(contents, filename) ?? original;
103
+ }
104
+ catch (e) {
105
+ error = parseError(e, filename);
106
+ }
107
+ let ast = ts.createSourceFile(filename,
108
+ // contents will be transformed and placeholder'd content
109
+ // or, in the event of a parse error, the original content
110
+ // in which case, TS will report a ton of errors about some goofy syntax.
111
+ // We'll want to ignore all of that and only display our parsing error from content-tag.
112
+ preprocessed.contents, ts.ScriptTarget.Latest, true);
113
+ // Only transform if we don't have a parse error
114
+ if (!error && transform) {
115
+ let { transformed } = ts.transform(ast, [
116
+ (context) => transform(preprocessed.data, { ts, context, setEmitMetadata }),
117
+ ]);
118
+ assert(transformed.length === 1 && ts.isSourceFile(transformed[0]));
119
+ ast = transformed[0];
120
+ }
121
+ return { ast, emitMetadata, error };
122
+ }
123
+ function parseError(e, filename) {
124
+ if (typeof e === 'object' && e !== null) {
125
+ // Parse Errors from the rust parser
126
+ if ('source_code' in e) {
127
+ // We remove the blank links in the error because swc
128
+ // pads errors with a leading and trailing blank line.
129
+ // the error is typically meant for the terminal, so making it
130
+ // stand out a bit more is a good, but that's more a presentation
131
+ // concern than just pure error information (which is what we need).
132
+ // @ts-expect-error object / property narrowing isn't available until TS 5.1
133
+ let lines = e.source_code.split('\n').filter(Boolean);
134
+ // Example:
135
+ // ' × Unexpected eof'
136
+ // ' ╭─[/home/nullvoxpopuli/Development/OpenSource/glint/test-packages/ts-template-imports-app/src/index.gts:6:1]'
137
+ // ' 6 │ '
138
+ // ' 7 │ export const X = <tem'
139
+ // ' ╰────'
140
+ let raw = lines.join('\n');
141
+ let message = lines[0].replace('×', '').trim();
142
+ let info = lines[1];
143
+ // a filename may have numbers in it, so we want to remove the filename
144
+ // before regex searching for numbers at the end of this line
145
+ let strippedInfo = info.replace(filename, '');
146
+ let matches = [...strippedInfo.matchAll(/\d+/g)];
147
+ let line = parseInt(matches[0][0], 10);
148
+ let column = parseInt(matches[1][0], 10);
149
+ // The help omits the original file name, because TS will provide that.
150
+ let help = lines.slice(2).join('\n');
151
+ return {
152
+ isContentTagError: true,
153
+ raw,
154
+ message,
155
+ line,
156
+ column,
157
+ file: filename,
158
+ help,
159
+ };
160
+ }
161
+ }
162
+ return `${e}`;
163
+ }
164
+ /**
165
+ * Given a sparse `CorrelatedSpan` array and the original source for a module,
166
+ * returns the resulting full transformed source string for that module, as
167
+ * well as a filled-in array of correlated spans that includes chunks of the
168
+ * original source that were not transformed.
169
+ */
170
+ function calculateTransformedSource(originalFile, sparseSpans, directives) {
171
+ let correlatedSpans = [];
172
+ let originalOffset = 0;
173
+ let transformedOffset = 0;
174
+ for (let span of sparseSpans) {
175
+ let interstitial = originalFile.contents.slice(originalOffset, span.insertionPoint);
176
+ if (interstitial.length) {
177
+ correlatedSpans.push({
178
+ originalFile,
179
+ originalStart: originalOffset,
180
+ originalLength: interstitial.length,
181
+ insertionPoint: originalOffset,
182
+ transformedStart: transformedOffset,
183
+ transformedLength: interstitial.length,
184
+ transformedSource: interstitial,
185
+ });
186
+ }
187
+ correlatedSpans.push(span);
188
+ transformedOffset += interstitial.length + span.transformedLength;
189
+ originalOffset +=
190
+ interstitial.length + (span.originalFile === originalFile ? span.originalLength : 0);
191
+ }
192
+ let trailingContent = originalFile.contents.slice(originalOffset);
193
+ const trailingSpan = {
194
+ originalFile,
195
+ originalStart: originalOffset,
196
+ originalLength: trailingContent.length + 1,
197
+ insertionPoint: originalOffset,
198
+ transformedStart: transformedOffset,
199
+ transformedLength: trailingContent.length + 1,
200
+ transformedSource: trailingContent,
201
+ };
202
+ correlatedSpans.push(trailingSpan);
203
+ const placeholderContent = '\n\n// @ts-expect-error placeholder for glint-expect-error\n;\n';
204
+ for (let directive of directives) {
205
+ if (directive.kind === 'expect-error') {
206
+ correlatedSpans.push({
207
+ originalFile,
208
+ originalStart: directive.location.start,
209
+ originalLength: directive.location.end - directive.location.start,
210
+ insertionPoint: originalOffset + trailingContent.length,
211
+ transformedSource: placeholderContent,
212
+ transformedStart: transformedOffset + trailingContent.length,
213
+ transformedLength: placeholderContent.length,
214
+ });
215
+ }
216
+ }
217
+ return {
218
+ contents: correlatedSpans.map((span) => span.transformedSource).join(''),
219
+ correlatedSpans,
220
+ };
221
+ }
222
+ /**
223
+ * Given an array of `PartialCorrelatedSpan`s for a file, calculates
224
+ * their `transformedLength` and `transformedStart` values, resulting
225
+ * in full `CorrelatedSpan`s.
226
+ */
227
+ function completeCorrelatedSpans(partialSpans) {
228
+ let correlatedSpans = [];
229
+ for (let i = 0; i < partialSpans.length; i++) {
230
+ let current = partialSpans[i];
231
+ let transformedLength = current.transformedSource.length;
232
+ let transformedStart = current.insertionPoint;
233
+ if (i > 0) {
234
+ let previous = correlatedSpans[i - 1];
235
+ transformedStart =
236
+ previous.transformedStart +
237
+ previous.transformedSource.length +
238
+ (current.insertionPoint - previous.insertionPoint - previous.originalLength);
239
+ }
240
+ correlatedSpans.push({ ...current, transformedStart, transformedLength });
241
+ }
242
+ return correlatedSpans;
243
+ }
244
+ /**
245
+ * Insert a triple-slash reference directive to the top of the transformed file which provides
246
+ * an anchor/insertion point for auto-imports. This fixes an issue where auto-imports
247
+ * don't work for the first import in a file.
248
+ *
249
+ * Because we don't provide any mapping information to Volar, the internal error that
250
+ * this generates is quietly swallowed when Volar reverse source-maps the error back to
251
+ * .gts/.gjs. This is hacky but I don't know of any other (non-upstream) fix for this.
252
+ *
253
+ * Potential upstream Volar fix for this:
254
+ * https://github.com/volarjs/volar.js/pull/281
255
+ */
256
+ function generateAutoImportAnchor(script) {
257
+ return {
258
+ originalFile: script,
259
+ originalStart: 0,
260
+ originalLength: 0,
261
+ insertionPoint: 0,
262
+ transformedSource: '/// <reference types="__GLINT_AUTO_IMPORT_ANCHOR__" />\n',
263
+ };
264
+ }
265
+ //# sourceMappingURL=rewrite-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite-module.js","sourceRoot":"","sources":["../../../src/transform/template/rewrite-module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAS,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,iBAKN,MAAM,yBAAyB,CAAC;AASjC;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAS,EACT,EAAE,MAAM,EAAgB,EACxB,WAA6B,EAC7B,QAAiB;IAEjB,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,wBAAwB,CACjE,EAAE,EACF,MAAM,EACN,WAAW,EACX,QAAQ,CACT,CAAC;IAEF,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,WAAW,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,0BAA0B,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAEhG,OAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAC/B,EAAS,EACT,MAAkB,EAClB,WAA6B,EAC7B,QAAiB;IAEjB,IAAI,UAAU,GAAqB,EAAE,CAAC;IACtC,IAAI,MAAM,GAA0B,EAAE,CAAC;IAEvC,IAAI,YAAY,GAAiC,EAAE,CAAC;IAEpD,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QACnC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAExE,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,mBAAmB,IAAI,KAAK,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACnE,uDAAuD;YACvD,qEAAqE;YACrE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACjF,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;YAEpB,MAAM,CAAC,IAAI,CAAC;gBACV,iBAAiB,EAAE,IAAI;gBACvB,4EAA4E;gBAC5E,yCAAyC;gBACzC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI;gBAC5C,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE;oBACR,KAAK;oBACL,GAAG;iBACJ;aACF,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,mDAAmD;QACnD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;IAC9C,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE;QAChB,CAAC,OAAO,EAAE,EAAE,CACV,SAAS,KAAK,CAAoB,IAAO;YACvC,gFAAgF;YAChF,oFAAoF;YACpF,kFAAkF;YAClF,qEAAqE;YACrE,4EAA4E;YAC5E,yFAAyF;YACzF,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,MAAM,GAAG,4BAA4B,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBAE/E,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5C,CAAC;iBAAM,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,qCAAqC;gBACrC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAC9C,CAAC;AAoBD,SAAS,WAAW,CAAC,EAAS,EAAE,MAAkB,EAAE,WAA6B;IAC/E,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACpC,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,YAAY,GAAG,IAAI,OAAO,EAA8B,CAAC;IAC7D,IAAI,eAAe,GAAG,CAAC,IAAa,EAAE,IAAuB,EAAQ,EAAE,CACrE,KAAK,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAEjF,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAEnF,IAAI,QAAQ,GAMR,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,CAAC;IAElD,IAAI,YAAY,GAAG,QAAQ,CAAC;IAC5B,IAAI,KAA6B,CAAC;IAElC,IAAI,CAAC;QACH,YAAY,GAAG,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAC9D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAC3B,QAAQ;IACR,yDAAyD;IACzD,0DAA0D;IAC1D,yEAAyE;IACzE,wFAAwF;IACxF,YAAY,CAAC,QAAQ,EACrB,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;IAEF,gDAAgD;IAChD,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC;QACxB,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE;YACtC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAU,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;SAC7E,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,CAAU,EAAE,QAAgB;IAC9C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,oCAAoC;QACpC,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,qDAAqD;YACrD,sDAAsD;YACtD,8DAA8D;YAC9D,iEAAiE;YACjE,oEAAoE;YACpE,4EAA4E;YAC5E,IAAI,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtD,WAAW;YACX,uBAAuB;YACvB,oHAAoH;YACpH,UAAU;YACV,+BAA+B;YAC/B,aAAa;YACb,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,uEAAuE;YACvE,6DAA6D;YAC7D,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,uEAAuE;YACvE,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErC,OAAO;gBACL,iBAAiB,EAAE,IAAI;gBACvB,GAAG;gBACH,OAAO;gBACP,IAAI;gBACJ,MAAM;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI;aACL,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC,EAAE,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CACjC,YAAwB,EACxB,WAAkC,EAClC,UAA4B;IAE5B,IAAI,eAAe,GAA0B,EAAE,CAAC;IAChD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,KAAK,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;QAC7B,IAAI,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAEpF,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,eAAe,CAAC,IAAI,CAAC;gBACnB,YAAY;gBACZ,aAAa,EAAE,cAAc;gBAC7B,cAAc,EAAE,YAAY,CAAC,MAAM;gBACnC,cAAc,EAAE,cAAc;gBAC9B,gBAAgB,EAAE,iBAAiB;gBACnC,iBAAiB,EAAE,YAAY,CAAC,MAAM;gBACtC,iBAAiB,EAAE,YAAY;aAChC,CAAC,CAAC;QACL,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3B,iBAAiB,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAClE,cAAc;YACZ,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAElE,MAAM,YAAY,GAAmB;QACnC,YAAY;QACZ,aAAa,EAAE,cAAc;QAC7B,cAAc,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC;QAC1C,cAAc,EAAE,cAAc;QAC9B,gBAAgB,EAAE,iBAAiB;QACnC,iBAAiB,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC;QAC7C,iBAAiB,EAAE,eAAe;KACnC,CAAC;IAEF,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEnC,MAAM,kBAAkB,GAAG,iEAAiE,CAAC;IAE7F,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACtC,eAAe,CAAC,IAAI,CAAC;gBACnB,YAAY;gBACZ,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;gBACvC,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK;gBACjE,cAAc,EAAE,cAAc,GAAG,eAAe,CAAC,MAAM;gBACvD,iBAAiB,EAAE,kBAAkB;gBACrC,gBAAgB,EAAE,iBAAiB,GAAG,eAAe,CAAC,MAAM;gBAC5D,iBAAiB,EAAE,kBAAkB,CAAC,MAAM;aAC7C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,eAAe;KAChB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAC9B,YAA0C;IAE1C,IAAI,eAAe,GAA0B,EAAE,CAAC;IAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACzD,IAAI,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,IAAI,QAAQ,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,gBAAgB;gBACd,QAAQ,CAAC,gBAAgB;oBACzB,QAAQ,CAAC,iBAAiB,CAAC,MAAM;oBACjC,CAAC,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;QACjF,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,wBAAwB,CAAC,MAAkB;IAClD,OAAO;QACL,YAAY,EAAE,MAAM;QACpB,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,CAAC;QACjB,cAAc,EAAE,CAAC;QACjB,iBAAiB,EAAE,0DAA0D;KAC9E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A `ScopeStack` is used while traversing a template
3
+ * to track what identifiers are currently in scope.
4
+ */
5
+ export default class ScopeStack {
6
+ private stack;
7
+ constructor(identifiers: string[]);
8
+ push(identifiers: Array<string>): void;
9
+ pop(): void;
10
+ hasBinding(identifier: string): boolean;
11
+ private get top();
12
+ }
13
+ //# sourceMappingURL=scope-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-stack.d.ts","sourceRoot":"","sources":["../../../src/transform/template/scope-stack.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,KAAK,CAAqB;gBAEf,WAAW,EAAE,MAAM,EAAE;IAIjC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAQtC,GAAG,IAAI,IAAI;IAKX,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI9C,OAAO,KAAK,GAAG,GAEd;CACF"}
@@ -0,0 +1,28 @@
1
+ import { assert } from '../util.js';
2
+ /**
3
+ * A `ScopeStack` is used while traversing a template
4
+ * to track what identifiers are currently in scope.
5
+ */
6
+ export default class ScopeStack {
7
+ constructor(identifiers) {
8
+ this.stack = [new Set(identifiers)];
9
+ }
10
+ push(identifiers) {
11
+ let scope = new Set(this.top);
12
+ for (let identifier of identifiers) {
13
+ scope.add(identifier);
14
+ }
15
+ this.stack.unshift(scope);
16
+ }
17
+ pop() {
18
+ assert(this.stack.length > 1);
19
+ this.stack.shift();
20
+ }
21
+ hasBinding(identifier) {
22
+ return this.top.has(identifier);
23
+ }
24
+ get top() {
25
+ return this.stack[0];
26
+ }
27
+ }
28
+ //# sourceMappingURL=scope-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-stack.js","sourceRoot":"","sources":["../../../src/transform/template/scope-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAG7B,YAAmB,WAAqB;QACtC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI,CAAC,WAA0B;QACpC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEM,GAAG;QACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEM,UAAU,CAAC,UAAkB;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,IAAY,GAAG;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { GlintEmitMetadata, GlintSpecialForm } from '@glint/ember-tsc/config-types';
2
+ import { EmbeddingSyntax, RewriteResult } from './map-template-contents.js';
3
+ export type TemplateToTypescriptOptions = {
4
+ typesModule: string;
5
+ meta?: GlintEmitMetadata | undefined;
6
+ globals?: Array<string> | undefined;
7
+ backingValue?: string;
8
+ preamble?: Array<string>;
9
+ embeddingSyntax?: EmbeddingSyntax;
10
+ useJsDoc?: boolean;
11
+ specialForms?: Record<string, GlintSpecialForm>;
12
+ };
13
+ /**
14
+ * Given the text contents of a template, returns a TypeScript representation
15
+ * of that template's contents, as well as a mapping of offsets and ranges between
16
+ * the original and transformed contents.
17
+ */
18
+ export declare function templateToTypescript(originalTemplate: string, { typesModule, globals, meta, backingValue, preamble, embeddingSyntax, specialForms, useJsDoc, }: TemplateToTypescriptOptions): RewriteResult;
19
+ //# sourceMappingURL=template-to-typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-to-typescript.d.ts","sourceRoot":"","sources":["../../../src/transform/template/template-to-typescript.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGpF,OAAO,EAAE,eAAe,EAAuB,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAKjG,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACjD,CAAC;AAkBF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,MAAM,EACxB,EACE,WAAW,EACX,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAa,EACb,eAA4C,EAC5C,YAAiB,EACjB,QAAgB,GACjB,EAAE,2BAA2B,GAC7B,aAAa,CA+0Cf"}