1use std::collections::HashMap;
4use std::sync::LazyLock;
5
6static GO_STDLIB_TYPEDEFS: LazyLock<HashMap<&str, &str>> = LazyLock::new(|| {
7 HashMap::from([
8 ("archive/tar", include_str!("../typedefs/archive/tar.d.lis")),
9 ("archive/zip", include_str!("../typedefs/archive/zip.d.lis")),
10 ("bufio", include_str!("../typedefs/bufio.d.lis")),
11 ("bytes", include_str!("../typedefs/bytes.d.lis")),
12 ("cmp", include_str!("../typedefs/cmp.d.lis")),
13 (
14 "compress/bzip2",
15 include_str!("../typedefs/compress/bzip2.d.lis"),
16 ),
17 (
18 "compress/flate",
19 include_str!("../typedefs/compress/flate.d.lis"),
20 ),
21 (
22 "compress/gzip",
23 include_str!("../typedefs/compress/gzip.d.lis"),
24 ),
25 (
26 "compress/lzw",
27 include_str!("../typedefs/compress/lzw.d.lis"),
28 ),
29 (
30 "compress/zlib",
31 include_str!("../typedefs/compress/zlib.d.lis"),
32 ),
33 (
34 "container/heap",
35 include_str!("../typedefs/container/heap.d.lis"),
36 ),
37 (
38 "container/list",
39 include_str!("../typedefs/container/list.d.lis"),
40 ),
41 (
42 "container/ring",
43 include_str!("../typedefs/container/ring.d.lis"),
44 ),
45 ("context", include_str!("../typedefs/context.d.lis")),
46 ("crypto", include_str!("../typedefs/crypto.d.lis")),
47 ("crypto/aes", include_str!("../typedefs/crypto/aes.d.lis")),
48 (
49 "crypto/cipher",
50 include_str!("../typedefs/crypto/cipher.d.lis"),
51 ),
52 ("crypto/des", include_str!("../typedefs/crypto/des.d.lis")),
53 ("crypto/dsa", include_str!("../typedefs/crypto/dsa.d.lis")),
54 ("crypto/ecdh", include_str!("../typedefs/crypto/ecdh.d.lis")),
55 (
56 "crypto/ecdsa",
57 include_str!("../typedefs/crypto/ecdsa.d.lis"),
58 ),
59 (
60 "crypto/ed25519",
61 include_str!("../typedefs/crypto/ed25519.d.lis"),
62 ),
63 (
64 "crypto/elliptic",
65 include_str!("../typedefs/crypto/elliptic.d.lis"),
66 ),
67 (
68 "crypto/fips140",
69 include_str!("../typedefs/crypto/fips140.d.lis"),
70 ),
71 ("crypto/hkdf", include_str!("../typedefs/crypto/hkdf.d.lis")),
72 ("crypto/hmac", include_str!("../typedefs/crypto/hmac.d.lis")),
73 ("crypto/md5", include_str!("../typedefs/crypto/md5.d.lis")),
74 (
75 "crypto/mlkem",
76 include_str!("../typedefs/crypto/mlkem.d.lis"),
77 ),
78 (
79 "crypto/pbkdf2",
80 include_str!("../typedefs/crypto/pbkdf2.d.lis"),
81 ),
82 ("crypto/rand", include_str!("../typedefs/crypto/rand.d.lis")),
83 ("crypto/rc4", include_str!("../typedefs/crypto/rc4.d.lis")),
84 ("crypto/rsa", include_str!("../typedefs/crypto/rsa.d.lis")),
85 ("crypto/sha1", include_str!("../typedefs/crypto/sha1.d.lis")),
86 (
87 "crypto/sha256",
88 include_str!("../typedefs/crypto/sha256.d.lis"),
89 ),
90 ("crypto/sha3", include_str!("../typedefs/crypto/sha3.d.lis")),
91 (
92 "crypto/sha512",
93 include_str!("../typedefs/crypto/sha512.d.lis"),
94 ),
95 (
96 "crypto/subtle",
97 include_str!("../typedefs/crypto/subtle.d.lis"),
98 ),
99 ("crypto/tls", include_str!("../typedefs/crypto/tls.d.lis")),
100 ("crypto/x509", include_str!("../typedefs/crypto/x509.d.lis")),
101 (
102 "crypto/x509/pkix",
103 include_str!("../typedefs/crypto/x509/pkix.d.lis"),
104 ),
105 (
106 "database/sql",
107 include_str!("../typedefs/database/sql.d.lis"),
108 ),
109 (
110 "database/sql/driver",
111 include_str!("../typedefs/database/sql/driver.d.lis"),
112 ),
113 (
114 "debug/buildinfo",
115 include_str!("../typedefs/debug/buildinfo.d.lis"),
116 ),
117 ("debug/dwarf", include_str!("../typedefs/debug/dwarf.d.lis")),
118 ("debug/elf", include_str!("../typedefs/debug/elf.d.lis")),
119 ("debug/gosym", include_str!("../typedefs/debug/gosym.d.lis")),
120 ("debug/macho", include_str!("../typedefs/debug/macho.d.lis")),
121 ("debug/pe", include_str!("../typedefs/debug/pe.d.lis")),
122 (
123 "debug/plan9obj",
124 include_str!("../typedefs/debug/plan9obj.d.lis"),
125 ),
126 ("embed", include_str!("../typedefs/embed.d.lis")),
127 ("encoding", include_str!("../typedefs/encoding.d.lis")),
128 (
129 "encoding/ascii85",
130 include_str!("../typedefs/encoding/ascii85.d.lis"),
131 ),
132 (
133 "encoding/asn1",
134 include_str!("../typedefs/encoding/asn1.d.lis"),
135 ),
136 (
137 "encoding/base32",
138 include_str!("../typedefs/encoding/base32.d.lis"),
139 ),
140 (
141 "encoding/base64",
142 include_str!("../typedefs/encoding/base64.d.lis"),
143 ),
144 (
145 "encoding/binary",
146 include_str!("../typedefs/encoding/binary.d.lis"),
147 ),
148 (
149 "encoding/csv",
150 include_str!("../typedefs/encoding/csv.d.lis"),
151 ),
152 (
153 "encoding/gob",
154 include_str!("../typedefs/encoding/gob.d.lis"),
155 ),
156 (
157 "encoding/hex",
158 include_str!("../typedefs/encoding/hex.d.lis"),
159 ),
160 (
161 "encoding/json",
162 include_str!("../typedefs/encoding/json.d.lis"),
163 ),
164 (
165 "encoding/pem",
166 include_str!("../typedefs/encoding/pem.d.lis"),
167 ),
168 (
169 "encoding/xml",
170 include_str!("../typedefs/encoding/xml.d.lis"),
171 ),
172 ("errors", include_str!("../typedefs/errors.d.lis")),
173 ("expvar", include_str!("../typedefs/expvar.d.lis")),
174 ("flag", include_str!("../typedefs/flag.d.lis")),
175 ("fmt", include_str!("../typedefs/fmt.d.lis")),
176 ("go/ast", include_str!("../typedefs/go/ast.d.lis")),
177 ("go/build", include_str!("../typedefs/go/build.d.lis")),
178 (
179 "go/build/constraint",
180 include_str!("../typedefs/go/build/constraint.d.lis"),
181 ),
182 ("go/constant", include_str!("../typedefs/go/constant.d.lis")),
183 ("go/doc", include_str!("../typedefs/go/doc.d.lis")),
184 (
185 "go/doc/comment",
186 include_str!("../typedefs/go/doc/comment.d.lis"),
187 ),
188 ("go/format", include_str!("../typedefs/go/format.d.lis")),
189 ("go/importer", include_str!("../typedefs/go/importer.d.lis")),
190 ("go/parser", include_str!("../typedefs/go/parser.d.lis")),
191 ("go/printer", include_str!("../typedefs/go/printer.d.lis")),
192 ("go/scanner", include_str!("../typedefs/go/scanner.d.lis")),
193 ("go/token", include_str!("../typedefs/go/token.d.lis")),
194 ("go/types", include_str!("../typedefs/go/types.d.lis")),
195 ("go/version", include_str!("../typedefs/go/version.d.lis")),
196 ("hash", include_str!("../typedefs/hash.d.lis")),
197 (
198 "hash/adler32",
199 include_str!("../typedefs/hash/adler32.d.lis"),
200 ),
201 ("hash/crc32", include_str!("../typedefs/hash/crc32.d.lis")),
202 ("hash/crc64", include_str!("../typedefs/hash/crc64.d.lis")),
203 ("hash/fnv", include_str!("../typedefs/hash/fnv.d.lis")),
204 (
205 "hash/maphash",
206 include_str!("../typedefs/hash/maphash.d.lis"),
207 ),
208 ("html", include_str!("../typedefs/html.d.lis")),
209 (
210 "html/template",
211 include_str!("../typedefs/html/template.d.lis"),
212 ),
213 ("image", include_str!("../typedefs/image.d.lis")),
214 ("image/color", include_str!("../typedefs/image/color.d.lis")),
215 (
216 "image/color/palette",
217 include_str!("../typedefs/image/color/palette.d.lis"),
218 ),
219 ("image/draw", include_str!("../typedefs/image/draw.d.lis")),
220 ("image/gif", include_str!("../typedefs/image/gif.d.lis")),
221 ("image/jpeg", include_str!("../typedefs/image/jpeg.d.lis")),
222 ("image/png", include_str!("../typedefs/image/png.d.lis")),
223 (
224 "index/suffixarray",
225 include_str!("../typedefs/index/suffixarray.d.lis"),
226 ),
227 ("io", include_str!("../typedefs/io.d.lis")),
228 ("io/fs", include_str!("../typedefs/io/fs.d.lis")),
229 ("io/ioutil", include_str!("../typedefs/io/ioutil.d.lis")),
230 ("iter", include_str!("../typedefs/iter.d.lis")),
231 ("log", include_str!("../typedefs/log.d.lis")),
232 ("log/slog", include_str!("../typedefs/log/slog.d.lis")),
233 ("log/syslog", include_str!("../typedefs/log/syslog.d.lis")),
234 ("maps", include_str!("../typedefs/maps.d.lis")),
235 ("math", include_str!("../typedefs/math.d.lis")),
236 ("math/big", include_str!("../typedefs/math/big.d.lis")),
237 ("math/bits", include_str!("../typedefs/math/bits.d.lis")),
238 ("math/cmplx", include_str!("../typedefs/math/cmplx.d.lis")),
239 ("math/rand", include_str!("../typedefs/math/rand.d.lis")),
240 (
241 "math/rand/v2",
242 include_str!("../typedefs/math/rand/v2.d.lis"),
243 ),
244 ("mime", include_str!("../typedefs/mime.d.lis")),
245 (
246 "mime/multipart",
247 include_str!("../typedefs/mime/multipart.d.lis"),
248 ),
249 (
250 "mime/quotedprintable",
251 include_str!("../typedefs/mime/quotedprintable.d.lis"),
252 ),
253 ("net", include_str!("../typedefs/net.d.lis")),
254 ("net/http", include_str!("../typedefs/net/http.d.lis")),
255 (
256 "net/http/cgi",
257 include_str!("../typedefs/net/http/cgi.d.lis"),
258 ),
259 (
260 "net/http/cookiejar",
261 include_str!("../typedefs/net/http/cookiejar.d.lis"),
262 ),
263 (
264 "net/http/fcgi",
265 include_str!("../typedefs/net/http/fcgi.d.lis"),
266 ),
267 (
268 "net/http/httptest",
269 include_str!("../typedefs/net/http/httptest.d.lis"),
270 ),
271 (
272 "net/http/httptrace",
273 include_str!("../typedefs/net/http/httptrace.d.lis"),
274 ),
275 (
276 "net/http/httputil",
277 include_str!("../typedefs/net/http/httputil.d.lis"),
278 ),
279 (
280 "net/http/pprof",
281 include_str!("../typedefs/net/http/pprof.d.lis"),
282 ),
283 ("net/mail", include_str!("../typedefs/net/mail.d.lis")),
284 ("net/netip", include_str!("../typedefs/net/netip.d.lis")),
285 ("net/rpc", include_str!("../typedefs/net/rpc.d.lis")),
286 (
287 "net/rpc/jsonrpc",
288 include_str!("../typedefs/net/rpc/jsonrpc.d.lis"),
289 ),
290 ("net/smtp", include_str!("../typedefs/net/smtp.d.lis")),
291 (
292 "net/textproto",
293 include_str!("../typedefs/net/textproto.d.lis"),
294 ),
295 ("net/url", include_str!("../typedefs/net/url.d.lis")),
296 ("os", include_str!("../typedefs/os.d.lis")),
297 ("os/exec", include_str!("../typedefs/os/exec.d.lis")),
298 ("os/signal", include_str!("../typedefs/os/signal.d.lis")),
299 ("os/user", include_str!("../typedefs/os/user.d.lis")),
300 ("path", include_str!("../typedefs/path.d.lis")),
301 (
302 "path/filepath",
303 include_str!("../typedefs/path/filepath.d.lis"),
304 ),
305 ("plugin", include_str!("../typedefs/plugin.d.lis")),
306 ("reflect", include_str!("../typedefs/reflect.d.lis")),
307 ("regexp", include_str!("../typedefs/regexp.d.lis")),
308 (
309 "regexp/syntax",
310 include_str!("../typedefs/regexp/syntax.d.lis"),
311 ),
312 ("runtime", include_str!("../typedefs/runtime.d.lis")),
313 ("runtime/cgo", include_str!("../typedefs/runtime/cgo.d.lis")),
314 (
315 "runtime/coverage",
316 include_str!("../typedefs/runtime/coverage.d.lis"),
317 ),
318 (
319 "runtime/debug",
320 include_str!("../typedefs/runtime/debug.d.lis"),
321 ),
322 (
323 "runtime/metrics",
324 include_str!("../typedefs/runtime/metrics.d.lis"),
325 ),
326 (
327 "runtime/pprof",
328 include_str!("../typedefs/runtime/pprof.d.lis"),
329 ),
330 (
331 "runtime/race",
332 include_str!("../typedefs/runtime/race.d.lis"),
333 ),
334 (
335 "runtime/trace",
336 include_str!("../typedefs/runtime/trace.d.lis"),
337 ),
338 ("slices", include_str!("../typedefs/slices.d.lis")),
339 ("sort", include_str!("../typedefs/sort.d.lis")),
340 ("strconv", include_str!("../typedefs/strconv.d.lis")),
341 ("strings", include_str!("../typedefs/strings.d.lis")),
342 ("structs", include_str!("../typedefs/structs.d.lis")),
343 ("sync", include_str!("../typedefs/sync.d.lis")),
344 ("sync/atomic", include_str!("../typedefs/sync/atomic.d.lis")),
345 ("syscall", include_str!("../typedefs/syscall.d.lis")),
346 ("testing", include_str!("../typedefs/testing.d.lis")),
347 (
348 "testing/fstest",
349 include_str!("../typedefs/testing/fstest.d.lis"),
350 ),
351 (
352 "testing/iotest",
353 include_str!("../typedefs/testing/iotest.d.lis"),
354 ),
355 (
356 "testing/quick",
357 include_str!("../typedefs/testing/quick.d.lis"),
358 ),
359 (
360 "testing/slogtest",
361 include_str!("../typedefs/testing/slogtest.d.lis"),
362 ),
363 (
364 "testing/synctest",
365 include_str!("../typedefs/testing/synctest.d.lis"),
366 ),
367 (
368 "text/scanner",
369 include_str!("../typedefs/text/scanner.d.lis"),
370 ),
371 (
372 "text/tabwriter",
373 include_str!("../typedefs/text/tabwriter.d.lis"),
374 ),
375 (
376 "text/template",
377 include_str!("../typedefs/text/template.d.lis"),
378 ),
379 (
380 "text/template/parse",
381 include_str!("../typedefs/text/template/parse.d.lis"),
382 ),
383 ("time", include_str!("../typedefs/time.d.lis")),
384 ("time/tzdata", include_str!("../typedefs/time/tzdata.d.lis")),
385 ("unicode", include_str!("../typedefs/unicode.d.lis")),
386 (
387 "unicode/utf16",
388 include_str!("../typedefs/unicode/utf16.d.lis"),
389 ),
390 (
391 "unicode/utf8",
392 include_str!("../typedefs/unicode/utf8.d.lis"),
393 ),
394 ("unique", include_str!("../typedefs/unique.d.lis")),
395 ("unsafe", include_str!("../typedefs/unsafe.d.lis")),
396 ("weak", include_str!("../typedefs/weak.d.lis")),
397 ])
398});
399
400pub fn get_go_stdlib_typedef(package: &str) -> Option<&'static str> {
401 GO_STDLIB_TYPEDEFS.get(package).copied()
402}
403
404pub fn get_go_stdlib_packages() -> Vec<&'static str> {
405 let mut packages: Vec<&'static str> = GO_STDLIB_TYPEDEFS.keys().copied().collect();
406 packages.sort();
407 packages
408}