@glint/ember-tsc 1.3.0 → 1.4.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"preprocess.d.ts","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/preprocess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAc,cAAc,EAAoB,MAAM,aAAa,CAAC;AAQ3E,eAAO,MAAM,UAAU,EAAE,wBAAwB,CAAC,cAAc,CAgE/D,CAAC"}
1
+ {"version":3,"file":"preprocess.d.ts","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/preprocess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAc,cAAc,EAAoB,MAAM,aAAa,CAAC;AAQ3E,eAAO,MAAM,UAAU,EAAE,wBAAwB,CAAC,cAAc,CA0C/D,CAAC"}
@@ -4,52 +4,34 @@ const TEMPLATE_END = '`]';
4
4
  import { Preprocessor } from 'content-tag';
5
5
  const p = new Preprocessor();
6
6
  export const preprocess = (source, path) => {
7
- // NOTE: https://github.com/embroider-build/content-tag/issues/45
8
- // All indicies are byte-index, not char-index.
9
7
  let templates = p.parse(source, { filename: path });
10
8
  let templateLocations = [];
11
9
  let contents = '';
12
- let sourceOffsetBytes = 0;
13
- let deltaBytes = 0;
14
- let sourceBuffer = getBuffer(source);
10
+ let sourceOffset = 0;
15
11
  for (let template of templates) {
16
- let startTagLengthBytes = template.startRange.end - template.startRange.start;
17
- let endTagLengthBytes = template.endRange.end - template.endRange.start;
18
- let startTagOffsetBytes = template.startRange.start;
19
- let endTagOffsetBytes = template.endRange.start;
20
- let transformedStartBytes = startTagOffsetBytes - deltaBytes;
21
- /**
22
- * TODO: we want content-tag to manage all this for us, as managing indicies
23
- * can be error-prone.
24
- *
25
- * SEE: https://github.com/embroider-build/content-tag/issues/39#issuecomment-1832443310
26
- */
27
- let prefixingSegment = sourceBuffer.subarray(sourceOffsetBytes, startTagOffsetBytes);
28
- contents = contents.concat(prefixingSegment.toString());
29
- contents = contents.concat(TEMPLATE_START);
30
- // For TEMPLATE_START & TEMPLATE_END, characters === bytes
31
- deltaBytes += startTagLengthBytes - TEMPLATE_START.length;
32
- let transformedEnd = endTagOffsetBytes - deltaBytes + TEMPLATE_END.length;
33
- let templateContentSegment = sourceBuffer.subarray(startTagOffsetBytes + startTagLengthBytes, endTagOffsetBytes);
34
- let templateContentSegmentString = templateContentSegment.toString();
35
- let escapedTemplateContentSegment = templateContentSegmentString
36
- .replaceAll('${{', '\\${{')
37
- .replaceAll('`', '\\`');
38
- deltaBytes += templateContentSegmentString.length - escapedTemplateContentSegment.length;
39
- contents = contents.concat(escapedTemplateContentSegment);
40
- contents = contents.concat(TEMPLATE_END);
41
- deltaBytes += endTagLengthBytes - TEMPLATE_END.length;
42
- sourceOffsetBytes = endTagOffsetBytes + endTagLengthBytes;
12
+ let startTagOffset = template.startRange.startUtf16Codepoint;
13
+ let startTagEnd = template.startRange.endUtf16Codepoint;
14
+ let endTagOffset = template.endRange.startUtf16Codepoint;
15
+ let endTagEnd = template.endRange.endUtf16Codepoint;
16
+ contents += source.slice(sourceOffset, startTagOffset);
17
+ let transformedStart = contents.length;
18
+ contents += TEMPLATE_START;
19
+ let templateContent = source.slice(startTagEnd, endTagOffset);
20
+ let escapedContent = templateContent.replaceAll('${{', '\\${{').replaceAll('`', '\\`');
21
+ contents += escapedContent;
22
+ contents += TEMPLATE_END;
23
+ let transformedEnd = contents.length;
24
+ sourceOffset = endTagEnd;
43
25
  templateLocations.push({
44
- startTagOffset: byteToCharIndex(source, startTagOffsetBytes),
45
- endTagOffset: byteToCharIndex(source, endTagOffsetBytes),
46
- startTagLength: byteToCharIndex(source, startTagLengthBytes),
47
- endTagLength: byteToCharIndex(source, endTagLengthBytes),
48
- transformedStart: byteToCharIndex(contents, transformedStartBytes),
49
- transformedEnd: byteToCharIndex(contents, transformedEnd),
26
+ startTagOffset,
27
+ endTagOffset,
28
+ startTagLength: startTagEnd - startTagOffset,
29
+ endTagLength: endTagEnd - endTagOffset,
30
+ transformedStart,
31
+ transformedEnd,
50
32
  });
51
33
  }
52
- contents = contents.concat(sourceBuffer.subarray(sourceOffsetBytes).toString());
34
+ contents += source.slice(sourceOffset);
53
35
  return {
54
36
  contents,
55
37
  data: {
@@ -57,17 +39,4 @@ export const preprocess = (source, path) => {
57
39
  },
58
40
  };
59
41
  };
60
- function byteToCharIndex(str, byteOffset) {
61
- const buf = getBuffer(str);
62
- return buf.subarray(0, byteOffset).toString().length;
63
- }
64
- const BufferMap = new Map();
65
- function getBuffer(str) {
66
- let buf = BufferMap.get(str);
67
- if (!buf) {
68
- buf = Buffer.from(str);
69
- BufferMap.set(str, buf);
70
- }
71
- return buf;
72
- }
73
42
  //# sourceMappingURL=preprocess.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preprocess.js","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/preprocess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preprocess.js","sourceRoot":"","sources":["../../../../src/environment-ember-template-imports/-private/environment/preprocess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAoC,MAAM,aAAa,CAAC;AAE3E,MAAM,cAAc,GAAG,IAAI,UAAU,IAAI,CAAC;AAC1C,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,UAAU,GAA6C,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;IACnF,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,IAAI,iBAAiB,GAA4B,EAAE,CAAC;IACpD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAC7D,IAAI,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC;QACxD,IAAI,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACzD,IAAI,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAEpD,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAEvD,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,QAAQ,IAAI,cAAc,CAAC;QAE3B,IAAI,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvF,QAAQ,IAAI,cAAc,CAAC;QAC3B,QAAQ,IAAI,YAAY,CAAC;QACzB,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QAErC,YAAY,GAAG,SAAS,CAAC;QACzB,iBAAiB,CAAC,IAAI,CAAC;YACrB,cAAc;YACd,YAAY;YACZ,cAAc,EAAE,WAAW,GAAG,cAAc;YAC5C,YAAY,EAAE,SAAS,GAAG,YAAY;YACtC,gBAAgB;YAChB,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO;QACL,QAAQ;QACR,IAAI,EAAE;YACJ,iBAAiB;SAClB;KACF,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glint/ember-tsc",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "repository": "typed-ember/glint",
5
5
  "description": "A CLI for performing typechecking on Glimmer templates",
6
6
  "license": "MIT",
@@ -64,7 +64,7 @@
64
64
  "@volar/source-map": "~2.4.28",
65
65
  "@volar/test-utils": "~2.4.28",
66
66
  "@volar/typescript": "~2.4.28",
67
- "content-tag": "^3.1.2",
67
+ "content-tag": "^4.1.1",
68
68
  "silent-error": "^1.1.1",
69
69
  "volar-service-html": "~0.0.68",
70
70
  "volar-service-typescript": "~0.0.68",
@@ -8,63 +8,41 @@ import { Preprocessor } from 'content-tag';
8
8
  const p = new Preprocessor();
9
9
 
10
10
  export const preprocess: GlintExtensionPreprocess<PreprocessData> = (source, path) => {
11
- // NOTE: https://github.com/embroider-build/content-tag/issues/45
12
- // All indicies are byte-index, not char-index.
13
11
  let templates = p.parse(source, { filename: path });
14
12
 
15
13
  let templateLocations: Array<TemplateLocation> = [];
16
14
  let contents = '';
17
- let sourceOffsetBytes = 0;
18
- let deltaBytes = 0;
19
-
20
- let sourceBuffer = getBuffer(source);
15
+ let sourceOffset = 0;
21
16
 
22
17
  for (let template of templates) {
23
- let startTagLengthBytes = template.startRange.end - template.startRange.start;
24
- let endTagLengthBytes = template.endRange.end - template.endRange.start;
25
- let startTagOffsetBytes = template.startRange.start;
26
- let endTagOffsetBytes = template.endRange.start;
27
- let transformedStartBytes = startTagOffsetBytes - deltaBytes;
28
- /**
29
- * TODO: we want content-tag to manage all this for us, as managing indicies
30
- * can be error-prone.
31
- *
32
- * SEE: https://github.com/embroider-build/content-tag/issues/39#issuecomment-1832443310
33
- */
34
- let prefixingSegment = sourceBuffer.subarray(sourceOffsetBytes, startTagOffsetBytes);
35
- contents = contents.concat(prefixingSegment.toString());
36
- contents = contents.concat(TEMPLATE_START);
18
+ let startTagOffset = template.startRange.startUtf16Codepoint;
19
+ let startTagEnd = template.startRange.endUtf16Codepoint;
20
+ let endTagOffset = template.endRange.startUtf16Codepoint;
21
+ let endTagEnd = template.endRange.endUtf16Codepoint;
37
22
 
38
- // For TEMPLATE_START & TEMPLATE_END, characters === bytes
39
- deltaBytes += startTagLengthBytes - TEMPLATE_START.length;
23
+ contents += source.slice(sourceOffset, startTagOffset);
40
24
 
41
- let transformedEnd = endTagOffsetBytes - deltaBytes + TEMPLATE_END.length;
42
- let templateContentSegment = sourceBuffer.subarray(
43
- startTagOffsetBytes + startTagLengthBytes,
44
- endTagOffsetBytes,
45
- );
46
- let templateContentSegmentString = templateContentSegment.toString();
47
- let escapedTemplateContentSegment = templateContentSegmentString
48
- .replaceAll('${{', '\\${{')
49
- .replaceAll('`', '\\`');
50
- deltaBytes += templateContentSegmentString.length - escapedTemplateContentSegment.length;
25
+ let transformedStart = contents.length;
26
+ contents += TEMPLATE_START;
51
27
 
52
- contents = contents.concat(escapedTemplateContentSegment);
53
- contents = contents.concat(TEMPLATE_END);
54
- deltaBytes += endTagLengthBytes - TEMPLATE_END.length;
28
+ let templateContent = source.slice(startTagEnd, endTagOffset);
29
+ let escapedContent = templateContent.replaceAll('${{', '\\${{').replaceAll('`', '\\`');
30
+ contents += escapedContent;
31
+ contents += TEMPLATE_END;
32
+ let transformedEnd = contents.length;
55
33
 
56
- sourceOffsetBytes = endTagOffsetBytes + endTagLengthBytes;
34
+ sourceOffset = endTagEnd;
57
35
  templateLocations.push({
58
- startTagOffset: byteToCharIndex(source, startTagOffsetBytes),
59
- endTagOffset: byteToCharIndex(source, endTagOffsetBytes),
60
- startTagLength: byteToCharIndex(source, startTagLengthBytes),
61
- endTagLength: byteToCharIndex(source, endTagLengthBytes),
62
- transformedStart: byteToCharIndex(contents, transformedStartBytes),
63
- transformedEnd: byteToCharIndex(contents, transformedEnd),
36
+ startTagOffset,
37
+ endTagOffset,
38
+ startTagLength: startTagEnd - startTagOffset,
39
+ endTagLength: endTagEnd - endTagOffset,
40
+ transformedStart,
41
+ transformedEnd,
64
42
  });
65
43
  }
66
44
 
67
- contents = contents.concat(sourceBuffer.subarray(sourceOffsetBytes).toString());
45
+ contents += source.slice(sourceOffset);
68
46
  return {
69
47
  contents,
70
48
  data: {
@@ -72,19 +50,3 @@ export const preprocess: GlintExtensionPreprocess<PreprocessData> = (source, pat
72
50
  },
73
51
  };
74
52
  };
75
-
76
- function byteToCharIndex(str: string, byteOffset: number): number {
77
- const buf = getBuffer(str);
78
- return buf.subarray(0, byteOffset).toString().length;
79
- }
80
-
81
- const BufferMap = new Map();
82
-
83
- function getBuffer(str: string): Buffer {
84
- let buf = BufferMap.get(str);
85
- if (!buf) {
86
- buf = Buffer.from(str);
87
- BufferMap.set(str, buf);
88
- }
89
- return buf;
90
- }