@ttsc/wasm 0.19.2 → 0.20.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.
Files changed (33) hide show
  1. package/README.md +4 -2
  2. package/build/build-wasm.cjs +131 -126
  3. package/dist/.ttsc-wasm-build.json +319 -0
  4. package/dist/go.mod +2 -0
  5. package/dist/ttsc.wasm +0 -0
  6. package/go.mod +2 -0
  7. package/host/fountain.go +48 -19
  8. package/lib/src/createMemFS.d.ts +6 -0
  9. package/lib/src/createMemFS.js +247 -95
  10. package/lib/src/createMemFS.js.map +1 -1
  11. package/lib/src/structures/ITtscApi.d.ts +8 -5
  12. package/lib/src/structures/ITtscNodeAtPositionResult.d.ts +1 -1
  13. package/lib/src/structures/ITtscNodeInfo.d.ts +1 -1
  14. package/lib/src/structures/ITtscPositionQuery.d.ts +4 -2
  15. package/lib/src/structures/ITtscSymbolAtPositionResult.d.ts +1 -1
  16. package/lib/src/structures/ITtscTypeAtPositionResult.d.ts +1 -1
  17. package/lib/src/structures/IWasmExecFS.d.ts +14 -4
  18. package/package.json +1 -1
  19. package/shim-vendor/shim/ast/shim.go +48 -3
  20. package/shim-vendor/shim/astnav/go.mod +14 -0
  21. package/shim-vendor/shim/astnav/go.sum +20 -0
  22. package/shim-vendor/shim/astnav/shim.go +15 -0
  23. package/shim-vendor/shim/checker/shim.go +113 -0
  24. package/shim-vendor/shim/core/shim.go +47 -0
  25. package/shim-vendor/shim/diagnosticwriter/lint.go +50 -0
  26. package/src/createMemFS.ts +264 -103
  27. package/src/structures/ITtscApi.ts +8 -5
  28. package/src/structures/ITtscNodeAtPositionResult.ts +1 -1
  29. package/src/structures/ITtscNodeInfo.ts +1 -1
  30. package/src/structures/ITtscPositionQuery.ts +4 -2
  31. package/src/structures/ITtscSymbolAtPositionResult.ts +1 -1
  32. package/src/structures/ITtscTypeAtPositionResult.ts +1 -1
  33. package/src/structures/IWasmExecFS.ts +14 -4
package/README.md CHANGED
@@ -140,7 +140,7 @@ try {
140
140
  await api.getTypeAtPosition({
141
141
  handle,
142
142
  path: "src/index.ts",
143
- position: 18, // byte offset of `x`
143
+ position: 13, // byte offset of `x`
144
144
  }),
145
145
  );
146
146
  console.log(typeAt?.type?.text); // → "number"
@@ -163,7 +163,9 @@ Verbs and payload types:
163
163
  | `getTypeAtPosition({ handle, path, position })` | `ITtscTypeAtPositionResult` `{ type }` |
164
164
  | `getSymbolAtPosition({ handle, path, position })` | `ITtscSymbolAtPositionResult` `{ symbol }` |
165
165
 
166
- `position` is a **byte offset** into the source text. The same coordinate TypeScript-Go uses internally. JS callers that have a UTF-16 `(line, character)` pair (e.g. From Monaco) must convert it before calling.
166
+ `getNodeAtPosition` returns the syntax token touching `position`, including punctuation. `getTypeAtPosition` resolves that token to its enclosing semantic AST node, while `getSymbolAtPosition` queries the token directly. Both return `null` when there is no semantic answer. Whitespace and comments return `null` for all three verbs.
167
+
168
+ `position` is a **byte offset** into the source text and must satisfy `0 <= position < UTF-8 byte length of sourceText`. The same coordinate TypeScript-Go uses internally. JS callers that have a UTF-16 `(line, character)` pair (e.g. From Monaco) must convert it before calling.
167
169
 
168
170
  **Lifecycle:** JS owns the handle. The wasm keeps the program (parsed AST, checker pool lease, every source file) alive until you call `releaseSnapshot`. Leaking handles leaks memory in the wasm linear heap.
169
171
 
@@ -2,24 +2,16 @@
2
2
  //
3
3
  // Usage: node build/build-wasm.cjs [--force]
4
4
  //
5
- // Behavior:
6
- // * Skips the Go build when `dist/ttsc.wasm` is newer than every .go file
7
- // under `packages/{ttsc,wasm}/`. Pass `--force` or set
8
- // `TTSC_WASM_FORCE=1` to rebuild unconditionally.
9
- // * Hard failure if the Go toolchain is missing.
10
- //
11
- // Outputs:
12
- // * packages/wasm/dist/ttsc.wasm
13
- // * packages/wasm/dist/wasm_exec.js
14
- //
15
- // Downstream consumers (the website, plugin-author playgrounds) point their
16
- // own bundle pipelines at `node_modules/@ttsc/wasm/dist/wasm_exec.js` and
17
- // build their own .wasm against the same Go module.
5
+ // The cache records a content identity for every effective Go dependency,
6
+ // module manifest, build flag, toolchain bridge, and published shim artifact.
7
+ // It never accepts a partially staged publication directory as a cache hit.
18
8
 
19
9
  const cp = require("child_process");
20
10
  const fs = require("fs");
21
11
  const path = require("path");
22
12
 
13
+ const { createGoBuildCache } = require("../../../scripts/go-build-cache.cjs");
14
+
23
15
  const packageRoot = path.resolve(__dirname, "..");
24
16
  const repoRoot = path.resolve(packageRoot, "..", "..");
25
17
  const ttscDir = path.join(repoRoot, "packages", "ttsc");
@@ -31,96 +23,107 @@ const wasmOut = path.join(outDir, "ttsc.wasm");
31
23
  const wasmExecOut = path.join(outDir, "wasm_exec.js");
32
24
  const goModPath = path.join(packageRoot, "go.mod");
33
25
  const publishedGoModOut = path.join(outDir, "go.mod");
34
- const forceRebuild =
35
- process.argv.includes("--force") || !!process.env.TTSC_WASM_FORCE;
36
-
37
- fs.mkdirSync(outDir, { recursive: true });
26
+ const cachePath = path.join(outDir, ".ttsc-wasm-build.json");
27
+ const hostPackage = "github.com/samchon/ttsc/packages/wasm/host";
38
28
 
39
- function hasGoToolchain() {
29
+ // Read a git fact, or undefined outside a checkout (a published tarball build).
30
+ function gitFact(args) {
40
31
  try {
41
- cp.execSync("go env GOROOT", { stdio: "ignore" });
42
- return true;
32
+ return cp
33
+ .execFileSync("git", args, {
34
+ cwd: repoRoot,
35
+ encoding: "utf8",
36
+ windowsHide: true,
37
+ })
38
+ .trim();
43
39
  } catch {
44
- return false;
40
+ return undefined;
45
41
  }
46
42
  }
47
43
 
44
+ // The build metadata `api.version()` answers with.
45
+ //
46
+ // Without these the published binary reports the compile-time defaults
47
+ // (`0.0.0-dev` / `dev` / `unknown`), so the one API whose purpose is to
48
+ // identify which wasm is running identifies nothing — and the documentation
49
+ // tells consumers to copy the base artifact verbatim, so that is the binary
50
+ // almost everyone deploys.
51
+ //
52
+ // `date` is the commit's date rather than the build's. The native platform
53
+ // script stamps build time, but this build is content-cached: a value that
54
+ // changes every run would be a build flag that never repeats, so the cache
55
+ // could never hit. A commit date identifies the artifact just as well and keeps
56
+ // the build reproducible.
57
+ function buildStamp() {
58
+ const manifest = JSON.parse(
59
+ fs.readFileSync(path.join(packageRoot, "package.json"), "utf8"),
60
+ );
61
+ return {
62
+ version: manifest.version ?? "0.0.0-dev",
63
+ commit: gitFact(["rev-parse", "--short=12", "HEAD"]) ?? "unknown",
64
+ date: gitFact(["show", "-s", "--format=%cI", "HEAD"]) ?? "unknown",
65
+ };
66
+ }
67
+
68
+ const stamp = buildStamp();
69
+ const buildArguments = [
70
+ "go",
71
+ "build",
72
+ "-trimpath",
73
+ "-ldflags",
74
+ [
75
+ "-s -w",
76
+ `-X ${hostPackage}.version=${stamp.version}`,
77
+ `-X ${hostPackage}.commit=${stamp.commit}`,
78
+ `-X ${hostPackage}.date=${stamp.date}`,
79
+ ].join(" "),
80
+ "-o",
81
+ wasmOut,
82
+ "./cmd/ttsc-wasm",
83
+ ];
84
+ const buildEnvironment = { GOOS: "js", GOARCH: "wasm" };
85
+
48
86
  function locateWasmExec() {
49
- if (!hasGoToolchain()) return null;
50
- const goroot =
51
- process.env.GOROOT ??
52
- cp.execSync("go env GOROOT", { encoding: "utf8" }).trim();
87
+ let goroot;
88
+ try {
89
+ goroot =
90
+ process.env.GOROOT ??
91
+ cp.execFileSync("go", ["env", "GOROOT"], { encoding: "utf8" }).trim();
92
+ } catch {
93
+ return null;
94
+ }
53
95
  // Go 1.24+ ships wasm_exec.js under lib/wasm/. Older releases kept it
54
96
  // under misc/wasm/. Try both so the build works across Go installs.
55
- const candidates = [
97
+ for (const candidate of [
56
98
  path.join(goroot, "lib", "wasm", "wasm_exec.js"),
57
99
  path.join(goroot, "misc", "wasm", "wasm_exec.js"),
58
- ];
59
- for (const candidate of candidates) {
100
+ ]) {
60
101
  if (fs.existsSync(candidate)) return candidate;
61
102
  }
62
103
  return null;
63
104
  }
64
105
 
65
- function newestMtime(...roots) {
66
- let max = 0;
67
- for (const root of roots) {
68
- if (!root || !fs.existsSync(root)) continue;
69
- walk(root, (_file, stat) => {
70
- if (stat.mtimeMs > max) max = stat.mtimeMs;
71
- });
72
- }
73
- return max;
74
- }
75
-
76
- function walk(root, visit) {
77
- const stack = [root];
78
- while (stack.length) {
79
- const cur = stack.pop();
80
- let stat;
81
- try {
82
- stat = fs.statSync(cur);
83
- } catch {
84
- continue;
85
- }
86
- if (stat.isDirectory()) {
87
- const base = path.basename(cur);
88
- if (
89
- base === "node_modules" ||
90
- base === ".ttsc" ||
91
- base === ".git" ||
92
- base === "lib" ||
93
- base === "dist"
94
- )
95
- continue;
96
- for (const entry of fs.readdirSync(cur)) {
97
- stack.push(path.join(cur, entry));
98
- }
99
- } else if (stat.isFile() && cur.endsWith(".go")) {
100
- visit(cur, stat);
101
- }
102
- }
106
+ function createCacheOptions({ force, wasmExecSrc }) {
107
+ return {
108
+ artifactPaths: [wasmOut, wasmExecOut, publishedGoModOut, vendorShimDir],
109
+ buildArguments,
110
+ cachePath,
111
+ cwd: packageRoot,
112
+ dependencyPackages: ["./cmd/ttsc-wasm"],
113
+ environment: buildEnvironment,
114
+ extraFiles: [__filename, goModPath, wasmExecSrc],
115
+ force,
116
+ inputDirectories: [shimSrc],
117
+ };
103
118
  }
104
119
 
105
120
  function buildWasm() {
106
121
  console.log(`build/build-wasm.cjs: building ${wasmOut}`);
107
- cp.execFileSync(
108
- "go",
109
- [
110
- "build",
111
- "-trimpath",
112
- "-ldflags",
113
- "-s -w",
114
- "-o",
115
- wasmOut,
116
- "./cmd/ttsc-wasm",
117
- ],
118
- {
119
- cwd: packageRoot,
120
- env: { ...process.env, GOOS: "js", GOARCH: "wasm" },
121
- stdio: "inherit",
122
- },
123
- );
122
+ cp.execFileSync("go", buildArguments.slice(1), {
123
+ cwd: packageRoot,
124
+ env: { ...process.env, ...buildEnvironment },
125
+ stdio: "inherit",
126
+ });
124
127
  }
125
128
 
126
129
  // Mirror packages/ttsc/shim/* into packages/wasm/shim-vendor/shim/* so the
@@ -141,7 +144,7 @@ function vendorShim() {
141
144
  fs.mkdirSync(vendorShimDir, { recursive: true });
142
145
  copyTree(shimSrc, vendorShimDir);
143
146
  console.log(
144
- `build/build-wasm.cjs: vendored shim/* ${path.relative(packageRoot, vendorShimDir)}`,
147
+ `build/build-wasm.cjs: vendored shim/* -> ${path.relative(packageRoot, vendorShimDir)}`,
145
148
  );
146
149
  }
147
150
 
@@ -159,18 +162,14 @@ function copyTree(src, dst) {
159
162
  }
160
163
  }
161
164
 
162
- // Rewrite go.mod so the published copy points at ./shim-vendor/shim/* instead of
163
- // ../ttsc/shim/*. The `replace github.com/samchon/ttsc/packages/ttsc => ...`
164
- // line is dropped: consumers of the published tarball who want to compile
165
- // their own wasm binary must supply that module themselves (documented in
166
- // README.md). The working-tree go.mod is untouched.
165
+ // Rewrite go.mod so the published copy points at ./shim-vendor/shim/* instead
166
+ // of ../ttsc/shim/*. The ../ttsc consumer-module replacement is intentionally
167
+ // removed: consumers compiling their own wasm binary supply it themselves.
167
168
  function rewritePublishedGoMod() {
168
- const src = fs.readFileSync(goModPath, "utf8");
169
- const lines = src.split(/\r?\n/);
169
+ const lines = fs.readFileSync(goModPath, "utf8").split(/\r?\n/);
170
170
  const out = [];
171
171
  for (const line of lines) {
172
172
  const trimmed = line.trim();
173
- // Drop the ../ttsc consumer-module replace (handled at consumer side).
174
173
  if (
175
174
  /^github\.com\/samchon\/ttsc\/packages\/ttsc\s+=>\s+\.\.\/ttsc\b/.test(
176
175
  trimmed,
@@ -178,63 +177,69 @@ function rewritePublishedGoMod() {
178
177
  ) {
179
178
  continue;
180
179
  }
181
- // Rewrite each shim replace from ../ttsc/shim/X to ./shim-vendor/shim/X.
182
180
  const shimMatch = trimmed.match(
183
181
  /^(github\.com\/microsoft\/typescript-go\/shim\/[A-Za-z0-9_/]+)\s+=>\s+\.\.\/ttsc\/shim\/([A-Za-z0-9_/]+)$/,
184
182
  );
185
183
  if (shimMatch) {
186
184
  const indent = line.match(/^\s*/)[0];
187
- out.push(`${indent}${shimMatch[1]} => ./shim-vendor/shim/${shimMatch[2]}`);
185
+ out.push(
186
+ `${indent}${shimMatch[1]} => ./shim-vendor/shim/${shimMatch[2]}`,
187
+ );
188
188
  continue;
189
189
  }
190
190
  out.push(line);
191
191
  }
192
192
  fs.writeFileSync(publishedGoModOut, out.join("\n"));
193
193
  console.log(
194
- `build/build-wasm.cjs: emitted published go.mod ${path.relative(packageRoot, publishedGoModOut)}`,
194
+ `build/build-wasm.cjs: emitted published go.mod -> ${path.relative(packageRoot, publishedGoModOut)}`,
195
195
  );
196
196
  }
197
197
 
198
- const wasmExecSrc = locateWasmExec();
199
-
200
- if (!forceRebuild && fs.existsSync(wasmOut)) {
201
- const wasmMtime = fs.statSync(wasmOut).mtimeMs;
202
- const sourceMtime = newestMtime(packageRoot, ttscDir);
203
- if (sourceMtime > 0 && wasmMtime >= sourceMtime) {
198
+ function main() {
199
+ fs.mkdirSync(outDir, { recursive: true });
200
+ const wasmExecSrc = locateWasmExec();
201
+ if (!wasmExecSrc) {
202
+ throw new Error(
203
+ "build/build-wasm.cjs: wasm_exec.js not located. Install Go 1.24+.",
204
+ );
205
+ }
206
+ const cache = createGoBuildCache(
207
+ createCacheOptions({
208
+ force: process.argv.includes("--force") || !!process.env.TTSC_WASM_FORCE,
209
+ wasmExecSrc,
210
+ }),
211
+ );
212
+ if (cache.isCurrent()) {
204
213
  console.log(
205
214
  `build/build-wasm.cjs: cached ttsc.wasm is up to date (${(
206
215
  fs.statSync(wasmOut).size /
207
216
  1024 /
208
217
  1024
209
- ).toFixed(2)} MiB) skipping rebuild`,
218
+ ).toFixed(2)} MiB) -> skipping rebuild`,
210
219
  );
211
- if (wasmExecSrc && !fs.existsSync(wasmExecOut)) {
212
- fs.copyFileSync(wasmExecSrc, wasmExecOut);
213
- }
214
- // Even on cache hit, refresh the vendored shim + published go.mod so
215
- // `pnpm pack` always sees up-to-date publish artifacts.
216
- vendorShim();
217
- rewritePublishedGoMod();
218
220
  return;
219
221
  }
220
- }
221
222
 
222
- if (!wasmExecSrc) {
223
- console.error(
224
- "build/build-wasm.cjs: wasm_exec.js not located. Install Go 1.24+.",
223
+ vendorShim();
224
+ rewritePublishedGoMod();
225
+ buildWasm();
226
+ fs.copyFileSync(wasmExecSrc, wasmExecOut);
227
+ cache.write();
228
+ console.log(
229
+ `build/build-wasm.cjs: done. ttsc.wasm = ${(
230
+ fs.statSync(wasmOut).size /
231
+ 1024 /
232
+ 1024
233
+ ).toFixed(2)} MiB`,
225
234
  );
226
- process.exit(1);
227
235
  }
228
236
 
229
- vendorShim();
230
- rewritePublishedGoMod();
231
- buildWasm();
232
- fs.copyFileSync(wasmExecSrc, wasmExecOut);
233
-
234
- console.log(
235
- `build/build-wasm.cjs: done. ttsc.wasm = ${(
236
- fs.statSync(wasmOut).size /
237
- 1024 /
238
- 1024
239
- ).toFixed(2)} MiB`,
240
- );
237
+ if (require.main === module) main();
238
+
239
+ module.exports = {
240
+ buildArguments,
241
+ buildStamp,
242
+ createCacheOptions,
243
+ hostPackage,
244
+ locateWasmExec,
245
+ };
@@ -0,0 +1,319 @@
1
+ {
2
+ "schema": 1,
3
+ "identity": "87808e6e0073ea83b664f086a5fa377282738fbd5497b9aeb7dc0a97ee9844d7",
4
+ "artifacts": [
5
+ {
6
+ "path": "/home/runner/work/ttsc/ttsc/packages/wasm/dist/ttsc.wasm",
7
+ "type": "file",
8
+ "sha256": "5406eb7d13736618051e979d2cb1d8bdf909eba504142190e4faa086ce38a630"
9
+ },
10
+ {
11
+ "path": "/home/runner/work/ttsc/ttsc/packages/wasm/dist/wasm_exec.js",
12
+ "type": "file",
13
+ "sha256": "0c949f4996f9a89698e4b5c586de32249c3b69b7baadb64d220073cc04acba14"
14
+ },
15
+ {
16
+ "path": "/home/runner/work/ttsc/ttsc/packages/wasm/dist/go.mod",
17
+ "type": "file",
18
+ "sha256": "faaaed64a60231bbf40f78e20fdb3c0f8dc00f432b9cfa4a4b5fca9b6fc31b37"
19
+ },
20
+ {
21
+ "path": "/home/runner/work/ttsc/ttsc/packages/wasm/shim-vendor/shim",
22
+ "type": "directory",
23
+ "files": [
24
+ {
25
+ "path": "ast/enums_gen.go",
26
+ "sha256": "e5fb186343cc20f1bafed4842d35c054c205604ab1715657fa50acce362d99c7"
27
+ },
28
+ {
29
+ "path": "ast/extra-shim.json",
30
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
31
+ },
32
+ {
33
+ "path": "ast/go.mod",
34
+ "sha256": "63a3bfd34840a8daf2aa1270481489e895ba8e3fb02c57d3c9e47497a29d8c7a"
35
+ },
36
+ {
37
+ "path": "ast/go.sum",
38
+ "sha256": "4a0e21cb48a001380a940eacf04759b03bb55856df690665dfc9d29323ef4357"
39
+ },
40
+ {
41
+ "path": "ast/lint.go",
42
+ "sha256": "2204d986d8e3f3e17f0e5bd1b12ce5268fa734f5e517a310135140afde47c064"
43
+ },
44
+ {
45
+ "path": "ast/parent.go",
46
+ "sha256": "261de982952f6c855e6c303d7c1a3adea2aaa125bb7103063a55f1741ff525db"
47
+ },
48
+ {
49
+ "path": "ast/safe_text.go",
50
+ "sha256": "56717285d1fa4eedcc741a5c6b2e015c545407165b5ea806fc63893f09f2bbcb"
51
+ },
52
+ {
53
+ "path": "ast/shim.go",
54
+ "sha256": "71fa8abf9aa551925b7c5971a4ac762d748daee89ac9d02222a131858cb4329b"
55
+ },
56
+ {
57
+ "path": "ast/surface.go",
58
+ "sha256": "b82cbff25d9d2c7d36cda39dab4e9137ae498945c9a82854cd3cd176d2cec013"
59
+ },
60
+ {
61
+ "path": "ast/test/node_text_joins_multi_hop_qualified_name_test.go",
62
+ "sha256": "2cd5033a5bce20091821eeb523add163b6272767dfac867705d5ca580901007e"
63
+ },
64
+ {
65
+ "path": "ast/test/node_text_joins_one_hop_qualified_name_test.go",
66
+ "sha256": "5afa0831574153d6b5a1f2b92beee90b6c7584470d90e60bef9752fe4d8cb91d"
67
+ },
68
+ {
69
+ "path": "ast/test/node_text_returns_empty_for_nil_test.go",
70
+ "sha256": "deabb14a34e039a508b5aac14839d53caba8d7795e0b044c82808972170dd4f3"
71
+ },
72
+ {
73
+ "path": "ast/test/node_text_returns_identifier_text_test.go",
74
+ "sha256": "51d5358f83a34b99a7859df9aad5536d600905fe02ef872311d376f3478b08b1"
75
+ },
76
+ {
77
+ "path": "ast/test/node_text_skips_empty_qualified_left_test.go",
78
+ "sha256": "ed15235cae50346f0c25321a8128ca2aebef6200e3ae1c6ab01277dd7107673f"
79
+ },
80
+ {
81
+ "path": "astnav/go.mod",
82
+ "sha256": "519b82bc93da5c3e762fddaeb2d9287aaca9a456903f2c4805d7ab797f9f1c72"
83
+ },
84
+ {
85
+ "path": "astnav/go.sum",
86
+ "sha256": "4a0e21cb48a001380a940eacf04759b03bb55856df690665dfc9d29323ef4357"
87
+ },
88
+ {
89
+ "path": "astnav/shim.go",
90
+ "sha256": "c0ac48cb10195274dc086307153223ef7dd2f043fa62103b3c13afed50e83049"
91
+ },
92
+ {
93
+ "path": "bundled/extra-shim.json",
94
+ "sha256": "749beb4d40fb0c968f511c5f13f5860cc694830d27ae0e3712380c21b0f37b13"
95
+ },
96
+ {
97
+ "path": "bundled/go.mod",
98
+ "sha256": "0621d4e2261695bdc691fe678003d6a7afb32ea03445d157342e8bab1ad8fb74"
99
+ },
100
+ {
101
+ "path": "bundled/shim.go",
102
+ "sha256": "027856252d76b279f0e9408d6d8b56fad67747d4a10cfbeb8c247a4f9f785070"
103
+ },
104
+ {
105
+ "path": "checker/enums_gen.go",
106
+ "sha256": "196f4a8b77ee0fa4e1a65a801472ffaa13871865e23c5b02eb5ef7ed371f39a8"
107
+ },
108
+ {
109
+ "path": "checker/extra-shim.json",
110
+ "sha256": "2ec2d698d4025e30c68409f25beeab244e84c759109619f9ef143b12f102d554"
111
+ },
112
+ {
113
+ "path": "checker/go.mod",
114
+ "sha256": "d191ae8d581a2d548e02221e27cdde3ad54611abd62ac7ba3c647da7435f67e6"
115
+ },
116
+ {
117
+ "path": "checker/shim.go",
118
+ "sha256": "cd45126b5cc0fbbe1213343dd561c51c4d0673135ff62d6542bd1ea6e3426eab"
119
+ },
120
+ {
121
+ "path": "compiler/emit_sourcemap.go",
122
+ "sha256": "f488641b1ef9f20a54abf4a58a4c0e39a691ad175b51fb30417bc7a35d76c9ad"
123
+ },
124
+ {
125
+ "path": "compiler/emitassemble.go",
126
+ "sha256": "01fa55d4ecf05cd778d7acaa2f83b8cc460fc533b755ef272245c3d13b47a800"
127
+ },
128
+ {
129
+ "path": "compiler/emithook.go",
130
+ "sha256": "a639371d663dc56005e9490b3f7d5ba2d3b8d1c56dfd862c721f0f9f9adddce9"
131
+ },
132
+ {
133
+ "path": "compiler/extra-shim.json",
134
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
135
+ },
136
+ {
137
+ "path": "compiler/go.mod",
138
+ "sha256": "d5e61f74ae9c96f9fc09f8f4aed891cce57e7bdf42a35ecd69632acc1b545e53"
139
+ },
140
+ {
141
+ "path": "compiler/go.sum",
142
+ "sha256": "a94c806630860a27e74df1db99b2abf86fada0e699937a813b42fe190021a16d"
143
+ },
144
+ {
145
+ "path": "compiler/incremental.go",
146
+ "sha256": "8020631b8bc293f7cc860afbd4f40b1f4a304459b28d1111ecf366826f7e88ab"
147
+ },
148
+ {
149
+ "path": "compiler/shim.go",
150
+ "sha256": "6d4f14b29575f49c541a3c24b51cfe3bf7fc815d82560dca4749b5a2b6def372"
151
+ },
152
+ {
153
+ "path": "core/enums_gen.go",
154
+ "sha256": "7de9fee1e72336284fe90d33ed9946ecafc787a91bd3d6a44e127f8744e7e888"
155
+ },
156
+ {
157
+ "path": "core/extra-shim.json",
158
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
159
+ },
160
+ {
161
+ "path": "core/go.mod",
162
+ "sha256": "3f0819397eeee762169ee31e9232deb10d5689ffb265b1407e63011fcd7c3e06"
163
+ },
164
+ {
165
+ "path": "core/modulekind.go",
166
+ "sha256": "e403ab6a4796fcccf10a426e272a7b63a00ca782664a4344e7821a7ab1fdd752"
167
+ },
168
+ {
169
+ "path": "core/shim.go",
170
+ "sha256": "a3cf692a939eade582138fbafd3e13352d72417830bd5d2db773a97892e6500f"
171
+ },
172
+ {
173
+ "path": "diagnosticwriter/go.mod",
174
+ "sha256": "da57c194ad5516f4e51b383a6d3dc5e631e79b5632bdfa243daa770a547eff13"
175
+ },
176
+ {
177
+ "path": "diagnosticwriter/lint.go",
178
+ "sha256": "b8751f4b968318b8b858239d8c6c046bfd586f71805d2666fc4b02cb954a21de"
179
+ },
180
+ {
181
+ "path": "diagnosticwriter/shim.go",
182
+ "sha256": "8e1b8c8a28431467a34b9d59fe6adcdbdcf636ddbc6070c79879b2b4cbcc1e49"
183
+ },
184
+ {
185
+ "path": "lsp/extra-shim.json",
186
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
187
+ },
188
+ {
189
+ "path": "lsp/go.mod",
190
+ "sha256": "90669bce84bdb6a6b4aeed1ecfdcece3b886e66718f7e01b23d1b4278b0e9bc6"
191
+ },
192
+ {
193
+ "path": "lsp/go.sum",
194
+ "sha256": "febea105f31e168b438b390e68cbe5b19e483089e7ed94dccb5ccd8311ad01a2"
195
+ },
196
+ {
197
+ "path": "lsp/shim.go",
198
+ "sha256": "d940a4d2b1943a0a2883259e7885162dd23989418c560c898392f595eda40162"
199
+ },
200
+ {
201
+ "path": "parser/extra-shim.json",
202
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
203
+ },
204
+ {
205
+ "path": "parser/go.mod",
206
+ "sha256": "7d2f88c94a1bc5e482473c3a0357684ecf6caea8d96765a955c1ca2e3eda17e3"
207
+ },
208
+ {
209
+ "path": "parser/shim.go",
210
+ "sha256": "2ef34c7f6d15fac1793f3669cee0a7359e601e3456b90ceebcea0af5db339464"
211
+ },
212
+ {
213
+ "path": "printer/emithost.go",
214
+ "sha256": "6f4aab940adc03f9fa98abfcf1bb1c2b3cae1a807ecb7a1130c7f19ab262ece0"
215
+ },
216
+ {
217
+ "path": "printer/go.mod",
218
+ "sha256": "8fa30ce406d6192f901ddcbd233785fa36d1b8f8f1e47932b497e091fff94f2a"
219
+ },
220
+ {
221
+ "path": "printer/go.sum",
222
+ "sha256": "a94c806630860a27e74df1db99b2abf86fada0e699937a813b42fe190021a16d"
223
+ },
224
+ {
225
+ "path": "printer/shim.go",
226
+ "sha256": "b14417b47813e60e698594e918f9a5cc628343c7664818c78daa5f313b29e25e"
227
+ },
228
+ {
229
+ "path": "scanner/extra-shim.json",
230
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
231
+ },
232
+ {
233
+ "path": "scanner/go.mod",
234
+ "sha256": "8b41d93b1c9386c112fac6a374d6aaa59ab0ace9123d0da0c6b5e294881e46f9"
235
+ },
236
+ {
237
+ "path": "scanner/regexp.go",
238
+ "sha256": "f4240a94e9e32a44fc6297fddfc051e02e8d2e758e14316a0492f7b73ed6e99a"
239
+ },
240
+ {
241
+ "path": "scanner/shim.go",
242
+ "sha256": "7a7bbd3d5ca7314648a9a21f4a24b219cb027b210c1e593eb40ca15d5be7c779"
243
+ },
244
+ {
245
+ "path": "transformers/go.mod",
246
+ "sha256": "bc8c36880bd52fac91a0ea0e5b4e2bb452922fdcc1bf6de74791c3e00ca646f4"
247
+ },
248
+ {
249
+ "path": "transformers/go.sum",
250
+ "sha256": "4a0e21cb48a001380a940eacf04759b03bb55856df690665dfc9d29323ef4357"
251
+ },
252
+ {
253
+ "path": "transformers/shim.go",
254
+ "sha256": "e61d1e0d349b7124e5289304cfa0a6455ba89226ae3e19ae11c3f106c0c2378c"
255
+ },
256
+ {
257
+ "path": "tsoptions/extra-shim.json",
258
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
259
+ },
260
+ {
261
+ "path": "tsoptions/go.mod",
262
+ "sha256": "534e1eb62a9d0b2c1c9ea886337f5a4a27f59a131959524886314b6b9c694fc2"
263
+ },
264
+ {
265
+ "path": "tsoptions/shim.go",
266
+ "sha256": "9f4ff8142c3badb571e58b0c62f6c61ab11e3452fc25961e3c958b2f77a6a4d0"
267
+ },
268
+ {
269
+ "path": "tspath/extra-shim.json",
270
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
271
+ },
272
+ {
273
+ "path": "tspath/go.mod",
274
+ "sha256": "45555e00686ea51ef8fb46c5d6582da77d081738430f12835ec5afcf019004ac"
275
+ },
276
+ {
277
+ "path": "tspath/shim.go",
278
+ "sha256": "a90c7bc3a7067438eab9a3d693b546e14f9fa6a6ae297e7c0cd05375b5ed6ef9"
279
+ },
280
+ {
281
+ "path": "vfs/cachedvfs/extra-shim.json",
282
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
283
+ },
284
+ {
285
+ "path": "vfs/cachedvfs/go.mod",
286
+ "sha256": "8b4565f65bdbe601b86c87735e79262ceb7736136d5329618fc0e744b46c310d"
287
+ },
288
+ {
289
+ "path": "vfs/cachedvfs/shim.go",
290
+ "sha256": "77fb3fc95f10f30d1f7c8781850839eff4bc36d3f3a4ab7fb562861520b0a23b"
291
+ },
292
+ {
293
+ "path": "vfs/extra-shim.json",
294
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
295
+ },
296
+ {
297
+ "path": "vfs/go.mod",
298
+ "sha256": "c912329b7b18c552ee897cd30a7fea5273af92c1120e0efb0811b6ea7833af1c"
299
+ },
300
+ {
301
+ "path": "vfs/osvfs/extra-shim.json",
302
+ "sha256": "03ce47e72bb9b79fc54a9a5a2b9dbe5c6b52511779775b36d81dafed6af2049a"
303
+ },
304
+ {
305
+ "path": "vfs/osvfs/go.mod",
306
+ "sha256": "9fe808080235c2200b7454696b26c493648e0a00194bfb8bfc65af327ab4ff6a"
307
+ },
308
+ {
309
+ "path": "vfs/osvfs/shim.go",
310
+ "sha256": "97a1818494b3027f8b8837dd76d7f7b97f1921145cb86efb7d7124f353761f78"
311
+ },
312
+ {
313
+ "path": "vfs/shim.go",
314
+ "sha256": "7723052d5c95a53541cdc85c4f6813020bf0f352682b29488f2d8585a5da2572"
315
+ }
316
+ ]
317
+ }
318
+ ]
319
+ }