@brew-lang/sdk 0.0.0-stage → 0.3.0-alpha.1

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.
@@ -0,0 +1,614 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseJavaSource = parseJavaSource;
37
+ exports.javaTypeToInterface = javaTypeToInterface;
38
+ exports.javaSourceToInterfaces = javaSourceToInterfaces;
39
+ exports.fetchGitRepo = fetchGitRepo;
40
+ /**
41
+ * brewc fetch-git — clone a Git repo of Java sources and mirror it as
42
+ * TypeScript interfaces, exactly like `brewc fetch-javadoc` mirrors a
43
+ * javadoc tree: one .ts file per class under its package path, nested
44
+ * classes appended to their outer class's file, an index.ts per directory,
45
+ * `import type` cross-references, @classloc docblocks, and the
46
+ * java.lang.Object base import — with --package emitting a .d.ts types
47
+ * package the same way.
48
+ *
49
+ * The Java parser is best-effort (comments, strings and annotations are
50
+ * blanked first), but shares the member/type mapping with the javadoc
51
+ * parser in fetch.ts, so both mirrors produce the same interface style.
52
+ */
53
+ const fs = __importStar(require("fs"));
54
+ const os = __importStar(require("os"));
55
+ const path = __importStar(require("path"));
56
+ const child_process_1 = require("child_process");
57
+ const fetch_js_1 = require("./fetch.js");
58
+ /** Blank out comments and string/char/text-block literal contents so the
59
+ * member scanner is not confused by `;`, `{` or keywords inside them.
60
+ * Newlines are preserved; quotes themselves are kept. */
61
+ function blankCommentsAndLiterals(src) {
62
+ let out = "";
63
+ let i = 0;
64
+ const n = src.length;
65
+ while (i < n) {
66
+ const c = src[i];
67
+ const d = i + 1 < n ? src[i + 1] : "";
68
+ if (c === "/" && d === "/") {
69
+ while (i < n && src[i] !== "\n") {
70
+ out += " ";
71
+ i++;
72
+ }
73
+ continue;
74
+ }
75
+ if (c === "/" && d === "*") {
76
+ out += " ";
77
+ i += 2;
78
+ while (i < n && !(src[i] === "*" && src[i + 1] === "/")) {
79
+ out += src[i] === "\n" ? "\n" : " ";
80
+ i++;
81
+ }
82
+ if (i < n) {
83
+ out += " ";
84
+ i += 2;
85
+ }
86
+ continue;
87
+ }
88
+ if (c === '"' && d === '"' && src[i + 2] === '"') { // text block
89
+ out += " ";
90
+ i += 3;
91
+ while (i < n && !(src[i] === '"' && src[i + 1] === '"' && src[i + 2] === '"')) {
92
+ if (src[i] === "\\") {
93
+ out += " ";
94
+ i += 2;
95
+ continue;
96
+ }
97
+ out += src[i] === "\n" ? "\n" : " ";
98
+ i++;
99
+ }
100
+ if (i < n) {
101
+ out += " ";
102
+ i += 3;
103
+ }
104
+ continue;
105
+ }
106
+ if (c === '"' || c === "'") {
107
+ const q = c;
108
+ out += c;
109
+ i++;
110
+ while (i < n && src[i] !== q) {
111
+ if (src[i] === "\\") {
112
+ out += " ";
113
+ i += 2;
114
+ continue;
115
+ }
116
+ out += src[i] === "\n" ? "\n" : " ";
117
+ i++;
118
+ }
119
+ if (i < n) {
120
+ out += q;
121
+ i++;
122
+ }
123
+ continue;
124
+ }
125
+ out += c;
126
+ i++;
127
+ }
128
+ return out;
129
+ }
130
+ /** Strip annotations (@Override, @SuppressWarnings("x"), ...) — but keep
131
+ * `@interface`, which declares an annotation type. Annotations inside a
132
+ * dotted type (MarkerOptions.@NonNull Builder) leave "X. Y" behind, so the
133
+ * stray dot-space is collapsed back to "X.Y". */
134
+ function stripAnnotations(src) {
135
+ return src.replace(/@(?!interface\b)[\w$]+(?:\.[\w$]+)*(?:\s*\((?:[^()]|\([^()]*\))*\))?/g, " ").replace(/(?<!\.)\.(?!\.)\s+/g, "."); // not part of a varargs "..."
136
+ }
137
+ /** Index of the matching closing brace for the `{` at openIdx (literals and
138
+ * comments are already blanked, so braces only nest structurally). */
139
+ function matchBrace(src, openIdx) {
140
+ let depth = 0;
141
+ for (let i = openIdx; i < src.length; i++) {
142
+ if (src[i] === "{")
143
+ depth++;
144
+ else if (src[i] === "}") {
145
+ depth--;
146
+ if (depth === 0)
147
+ return i;
148
+ }
149
+ }
150
+ return src.length - 1;
151
+ }
152
+ /**
153
+ * Split a type body (or a whole file) into direct member declarations and
154
+ * nested type declarations. A declaration header ends at `;` (field) or at
155
+ * the `{` opening a method/nested-type body; brace blocks inside
156
+ * initializers (array initializers, lambdas, anonymous classes) are skipped
157
+ * without ending the declaration.
158
+ */
159
+ function parseTypeBody(body, fullName) {
160
+ const decls = [];
161
+ const children = [];
162
+ let header = "";
163
+ let paren = 0;
164
+ let i = 0;
165
+ while (i < body.length) {
166
+ const c = body[i];
167
+ if (c === "(")
168
+ paren++;
169
+ else if (c === ")")
170
+ paren--;
171
+ if (c === "{" && paren <= 0) {
172
+ const close = matchBrace(body, i);
173
+ const inner = body.slice(i + 1, close);
174
+ const tm = /(?:^|\s)(class|interface|enum|record)\s+([A-Za-z_$][\w$]*)/.exec(header);
175
+ if (tm && !/=/.test(header)) {
176
+ const childFull = fullName ? `${fullName}.${tm[2]}` : tm[2];
177
+ const nested = parseTypeBody(inner, childFull);
178
+ children.push({
179
+ kind: tm[1], name: tm[2], fullName: childFull,
180
+ header: header.trim(), decls: nested.decls, children: nested.children,
181
+ });
182
+ header = "";
183
+ }
184
+ else if (!tm && !/=/.test(header)) {
185
+ decls.push(header.trim()); // method / constructor / initializer block
186
+ header = "";
187
+ }
188
+ // else: brace block inside a field initializer — skip it, the field
189
+ // declaration still ends at the coming `;`
190
+ i = close + 1;
191
+ continue;
192
+ }
193
+ if (c === ";" && paren <= 0) {
194
+ decls.push(header.trim());
195
+ header = "";
196
+ i++;
197
+ continue;
198
+ }
199
+ header += c;
200
+ i++;
201
+ }
202
+ if (header.trim())
203
+ decls.push(header.trim());
204
+ return { decls, children };
205
+ }
206
+ /** Parse a Java source file into its package, imports and type declarations. */
207
+ function parseJavaSource(source) {
208
+ const src = stripAnnotations(blankCommentsAndLiterals(source));
209
+ const packageName = /\bpackage\s+([\w.]+)\s*;/.exec(src)?.[1] ?? "";
210
+ const imports = new Map();
211
+ for (const m of src.matchAll(/^\s*import\s+(?!static\b)([\w$]+(?:\.[\w$]+)+)\s*;/gm)) {
212
+ const simple = m[1].split(".").pop();
213
+ if (/^[a-z_$]/.test(simple))
214
+ continue; // star import (org.bukkit.*)
215
+ if (!imports.has(simple))
216
+ imports.set(simple, m[1]);
217
+ }
218
+ const { children } = parseTypeBody(src, "");
219
+ return { packageName, types: children, imports };
220
+ }
221
+ /** Java modifiers. Members marked private/protected never enter the
222
+ * mirror; static members do (unlike the javadoc mirror) because utility
223
+ * classes are all-static — skipping them would leave empty interfaces. */
224
+ const JAVA_MODIFIERS = new Set([
225
+ "public", "protected", "private", "static", "final", "abstract",
226
+ "synchronized", "native", "default", "strictfp", "transient", "volatile",
227
+ "sealed", "non-sealed",
228
+ ]);
229
+ /** Index of the first `=` at paren/angle-bracket depth 0, or -1. */
230
+ function topLevelEquals(s) {
231
+ let paren = 0;
232
+ let angle = 0;
233
+ for (let i = 0; i < s.length; i++) {
234
+ const c = s[i];
235
+ if (c === "(")
236
+ paren++;
237
+ else if (c === ")")
238
+ paren--;
239
+ else if (c === "<")
240
+ angle++;
241
+ else if (c === ">")
242
+ angle--;
243
+ else if (c === "=" && paren <= 0 && angle <= 0)
244
+ return i;
245
+ }
246
+ return -1;
247
+ }
248
+ /** Split on commas at paren/angle-bracket depth 0 (Map<String, Integer> m, n). */
249
+ function splitTopLevelCommas(s) {
250
+ const parts = [];
251
+ let paren = 0;
252
+ let angle = 0;
253
+ let current = "";
254
+ for (const c of s) {
255
+ if (c === "(")
256
+ paren++;
257
+ else if (c === ")")
258
+ paren--;
259
+ else if (c === "<")
260
+ angle++;
261
+ else if (c === ">")
262
+ angle--;
263
+ if (c === "," && paren <= 0 && angle <= 0) {
264
+ parts.push(current);
265
+ current = "";
266
+ }
267
+ else {
268
+ current += c;
269
+ }
270
+ }
271
+ if (current.trim())
272
+ parts.push(current);
273
+ return parts;
274
+ }
275
+ /** Parse one direct member declaration of a type body into the collector. */
276
+ function parseMemberDecl(decl, ctx) {
277
+ const d = decl.replace(/\bthrows\s+[\w.,$\s]+$/, "").trim();
278
+ if (!d)
279
+ return;
280
+ const eq = topLevelEquals(d);
281
+ if (eq === -1) {
282
+ // method / constructor: ... name(params)
283
+ const mm = /^(.*?)([A-Za-z_$][\w$]*)\s*\(([^()]*)\)\s*$/.exec(d);
284
+ if (mm) {
285
+ // the method's own type parameters (<T> T foo(T t)) are not part of
286
+ // the return type; a generic return type (List<Gadget> foo()) stays
287
+ const pre = (0, fetch_js_1.stripTypeParams)(mm[1]);
288
+ const words = pre.trim().split(/\s+/).filter(Boolean);
289
+ const mods = words.filter((w) => JAVA_MODIFIERS.has(w)).join(" ");
290
+ const ret = words.filter((w) => !JAVA_MODIFIERS.has(w)).join(" ");
291
+ (0, fetch_js_1.addMethodMember)({ mods, ret, name: mm[2], params: mm[3] }, ctx);
292
+ return;
293
+ }
294
+ }
295
+ // field: [modifiers] Type name (= initializer)? — possibly several
296
+ // declarators (int a, b;); enum constants and unparsable bits are skipped
297
+ const noInit = (eq === -1 ? d : d.slice(0, eq)).trim();
298
+ for (const part of splitTopLevelCommas(noInit)) {
299
+ const fm = /^(.*?)\s+([A-Za-z_$][\w$]*)(\s*\[\s*\])*$/.exec(part.trim());
300
+ if (!fm)
301
+ continue;
302
+ const words = fm[1].trim().split(/\s+/).filter(Boolean);
303
+ const mods = words.filter((w) => JAVA_MODIFIERS.has(w)).join(" ");
304
+ let type = words.filter((w) => !JAVA_MODIFIERS.has(w)).join(" ");
305
+ if (!type)
306
+ continue; // enum constant, etc.
307
+ type += (fm[3] ?? "").replace(/\s/g, ""); // C-style array suffix on the name
308
+ (0, fetch_js_1.addFieldMember)({ mods, type, name: fm[2] }, ctx);
309
+ }
310
+ }
311
+ /** Generate the interface source for one Java type declaration (pure). */
312
+ function javaTypeToInterface(t, pkg, sourceName, opts = {}) {
313
+ const collector = (0, fetch_js_1.createMemberCollector)();
314
+ const refs = new Set();
315
+ // ref -> package-qualified names, for linking refs the tree does not
316
+ // declare to the brew package providing them (resolveExternalRef)
317
+ const quals = new Map();
318
+ const ctx = {
319
+ className: t.name,
320
+ isTreeClass: opts.isTreeClass,
321
+ includeStatic: true,
322
+ addRefs: (rawType) => {
323
+ for (const [ref, qual] of (0, fetch_js_1.refQuals)(rawType, opts.isTreeClass)) {
324
+ refs.add(ref);
325
+ // a simple name in the source resolves through the file's imports
326
+ const q = !ref.includes(".") ? (opts.imports?.get(ref) ?? qual) : qual;
327
+ let set = quals.get(ref);
328
+ if (!set) {
329
+ set = new Set();
330
+ quals.set(ref, set);
331
+ }
332
+ set.add(q);
333
+ }
334
+ },
335
+ addMember: collector.addMember,
336
+ };
337
+ // record components are implicitly accessor methods
338
+ if (t.kind === "record") {
339
+ const comps = /\(([^)]*)\)/.exec(t.header)?.[1] ?? "";
340
+ for (const p of (0, fetch_js_1.splitParams)(comps, opts.isTreeClass)) {
341
+ ctx.addRefs(p.raw);
342
+ collector.addMember(`get ${p.name}(): ${(0, fetch_js_1.tsType)(p.raw, opts.isTreeClass)};`);
343
+ }
344
+ }
345
+ for (const decl of t.decls)
346
+ parseMemberDecl(decl, ctx);
347
+ const { name, ts, refs: outRefs } = (0, fetch_js_1.assembleInterface)({
348
+ name: t.name,
349
+ fullName: t.fullName,
350
+ pkg,
351
+ sourceLine: `// Generated by brewc fetch-git from ${sourceName}`,
352
+ members: collector.members,
353
+ refs,
354
+ });
355
+ return { name, fullName: t.fullName, ts, refs: outRefs, quals };
356
+ }
357
+ /** Generate one interface per type declared in a Java source file (pure). */
358
+ function javaSourceToInterfaces(source, sourceName, opts = {}) {
359
+ const { packageName, types, imports } = parseJavaSource(source);
360
+ const allImports = opts.imports ?? imports;
361
+ const interfaces = [];
362
+ const visit = (t) => {
363
+ interfaces.push(javaTypeToInterface(t, packageName, sourceName, { ...opts, imports: allImports }));
364
+ for (const c of t.children)
365
+ visit(c);
366
+ };
367
+ for (const t of types)
368
+ visit(t);
369
+ return { packageName, interfaces };
370
+ }
371
+ /** Directories never scanned for sources (VCS internals are hidden dirs). */
372
+ const SKIP_DIRS = new Set(["node_modules", "target", "build", "out"]);
373
+ /**
374
+ * Find the repo's Java sources. The root of a package directory tree is a
375
+ * `java/` directory (Maven/Gradle `src/main/java`, at any module depth) —
376
+ * a `java/` under a `test` source set (src/test/java) is not one. When
377
+ * the repo has such source roots, only the files beneath them are
378
+ * mirrored, and each file is reported relative to its `java/` root;
379
+ * otherwise the whole tree is scanned from the clone root, so repos with
380
+ * top-level sources still mirror.
381
+ */
382
+ function findJavaFiles(root) {
383
+ const found = [];
384
+ const walk = (dir, javaRoot, inTest) => {
385
+ let entries;
386
+ try {
387
+ entries = fs.readdirSync(dir, { withFileTypes: true });
388
+ }
389
+ catch {
390
+ return;
391
+ }
392
+ for (const e of entries) {
393
+ if (e.isDirectory()) {
394
+ if (e.name.startsWith(".") || SKIP_DIRS.has(e.name))
395
+ continue;
396
+ const p = path.join(dir, e.name);
397
+ if (e.name === "java" && !inTest && javaRoot === null)
398
+ walk(p, p, false);
399
+ else
400
+ walk(p, javaRoot, inTest || e.name === "test");
401
+ }
402
+ else if (e.name.endsWith(".java")) {
403
+ found.push({ abs: path.join(dir, e.name), javaRoot });
404
+ }
405
+ }
406
+ };
407
+ walk(root, null, false);
408
+ const rooted = found.filter((f) => f.javaRoot !== null);
409
+ const chosen = rooted.length > 0 ? rooted : found;
410
+ return chosen
411
+ .map((f) => ({ abs: f.abs, sourceRoot: f.javaRoot ?? root }))
412
+ .sort((a, b) => (a.abs < b.abs ? -1 : a.abs > b.abs ? 1 : 0));
413
+ }
414
+ /**
415
+ * Clone a Git repo (shallow) and mirror its Java sources as a TypeScript
416
+ * package tree in outDir — the same mirror `fetch-javadoc` produces from a
417
+ * javadoc site. The repo's `java/` source roots (each module's
418
+ * src/main/java) are discovered first; only sources beneath them are
419
+ * mirrored, each reported relative to its `java/` root, and classes are
420
+ * placed by their `package` declaration, so Maven/Gradle layouts mirror
421
+ * correctly.
422
+ */
423
+ async function fetchGitRepo(repoUrl, outDir, opts = {}) {
424
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), "brewc-fetch-git-"));
425
+ try {
426
+ const cloneArgs = ["clone", "--depth", "1"];
427
+ if (opts.branch)
428
+ cloneArgs.push("--branch", opts.branch);
429
+ cloneArgs.push(repoUrl, tmp);
430
+ try {
431
+ (0, child_process_1.execFileSync)("git", cloneArgs, { stdio: ["ignore", "ignore", "pipe"] });
432
+ }
433
+ catch (e) {
434
+ const err = e;
435
+ const detail = err.stderr?.toString().trim();
436
+ throw new Error(`git clone failed for ${repoUrl}: ${detail || err.message}`);
437
+ }
438
+ if (opts.log)
439
+ opts.log(`cloned ${repoUrl}${opts.branch ? ` (branch ${opts.branch})` : ""}`);
440
+ return mirrorJavaTree(tmp, outDir, opts);
441
+ }
442
+ finally {
443
+ // only ever remove the temp clone created above
444
+ if (tmp.startsWith(os.tmpdir()))
445
+ fs.rmSync(tmp, { recursive: true, force: true });
446
+ }
447
+ }
448
+ /** Mirror the .java files of an already-cloned repo into outDir. */
449
+ function mirrorJavaTree(cloneDir, outDir, opts) {
450
+ const files = findJavaFiles(cloneDir);
451
+ if (!files.length)
452
+ throw new Error("no .java files found in the cloned repo");
453
+ const errors = [];
454
+ const sources = [];
455
+ const allHrefs = [];
456
+ const byHref = new Map();
457
+ for (const { abs, sourceRoot } of files) {
458
+ // source path relative to the `java/` root of its package tree
459
+ const rel = path.relative(sourceRoot, abs).split(path.sep).join("/");
460
+ let parsed;
461
+ try {
462
+ parsed = parseJavaSource(fs.readFileSync(abs, "utf8"));
463
+ }
464
+ catch (e) {
465
+ errors.push(`${rel}: ${e.message}`);
466
+ continue;
467
+ }
468
+ if (!parsed.types.length) {
469
+ errors.push(`${rel}: no type declaration found`);
470
+ continue;
471
+ }
472
+ const source = { rel, pkg: parsed.packageName, types: parsed.types, imports: parsed.imports };
473
+ sources.push(source);
474
+ const pkgPath = parsed.packageName.replace(/\./g, "/");
475
+ const visit = (t) => {
476
+ const href = `${pkgPath ? pkgPath + "/" : ""}${t.fullName}.java`;
477
+ if (byHref.has(href)) {
478
+ errors.push(`${rel}: ${t.fullName} is also declared in ${byHref.get(href).source.rel}; keeping the first`);
479
+ }
480
+ else {
481
+ allHrefs.push(href);
482
+ byHref.set(href, { source, type: t });
483
+ }
484
+ for (const c of t.children)
485
+ visit(c);
486
+ };
487
+ for (const t of parsed.types)
488
+ visit(t);
489
+ }
490
+ const { links, classIndex, nestedIndex, nestedOwners, nested } = (0, fetch_js_1.indexLinks)(allHrefs, opts.limit);
491
+ const index = { classIndex, nestedIndex, nestedOwners };
492
+ // a class the repo declares keeps its name, and so does a class a known
493
+ // brew package provides (org.bukkit.World links to the spigot pack) —
494
+ // decided PER FILE via that file's imports/declarations, since two files
495
+ // may import same-named classes from different packages (org.bukkit vs
496
+ // net.minecraft BlockState); anything else unlinked falls back to
497
+ // "object" in tsType
498
+ const brewMap = opts.brewMap ?? new Map();
499
+ const brewPrefixes = [...brewMap.keys()];
500
+ const pkgOf = (qual) => {
501
+ const segs = qual.split(".");
502
+ let i = 0;
503
+ while (i < segs.length - 1 && /^[a-z_$]/.test(segs[i]))
504
+ i++;
505
+ return segs.slice(0, i).join(".");
506
+ };
507
+ const isBrewLinked = (qual) => {
508
+ const pkg = pkgOf(qual);
509
+ return brewPrefixes.some((p) => pkg === p || pkg.startsWith(p + "."));
510
+ };
511
+ // per source file: ref -> qualified names (from its imports + member decls)
512
+ const qualsByFile = new Map();
513
+ for (const s of sources) {
514
+ const m = new Map();
515
+ const noteQuals = (raw) => {
516
+ for (const [ref, qual] of (0, fetch_js_1.refQuals)(raw, () => true)) {
517
+ let set = m.get(ref);
518
+ if (!set) {
519
+ set = new Set();
520
+ m.set(ref, set);
521
+ }
522
+ set.add(qual);
523
+ }
524
+ };
525
+ for (const qual of s.imports.values())
526
+ noteQuals(qual);
527
+ const visit = (t) => {
528
+ for (const d of t.decls)
529
+ noteQuals(d);
530
+ for (const c of t.children)
531
+ visit(c);
532
+ };
533
+ for (const t of s.types)
534
+ visit(t);
535
+ qualsByFile.set(s.rel, m);
536
+ }
537
+ const makeIsTreeClass = (s) => {
538
+ const quals = qualsByFile.get(s.rel);
539
+ return (cls) => classIndex.has(cls) || nestedIndex.has(cls) ||
540
+ [...(quals.get(cls) ?? [])].some(isBrewLinked);
541
+ };
542
+ const entriesByFile = new Map();
543
+ for (const s of sources) {
544
+ const entries = new Map();
545
+ const visit = (t) => {
546
+ entries.set(t.fullName, javaTypeToInterface(t, s.pkg, s.rel, { isTreeClass: makeIsTreeClass(s), imports: s.imports }));
547
+ for (const c of t.children)
548
+ visit(c);
549
+ };
550
+ for (const t of s.types)
551
+ visit(t);
552
+ entriesByFile.set(s.rel, entries);
553
+ }
554
+ const ext = opts.packageName ? "d.ts" : "ts";
555
+ const outRoot = path.resolve(outDir);
556
+ let done = 0;
557
+ for (const href of links) {
558
+ const { source, type } = byHref.get(href);
559
+ const entries = entriesByFile.get(source.rel);
560
+ // nested classes (Outer.Inner) are appended to their outer class's file
561
+ const parts = [entries.get(type.fullName).ts];
562
+ const allRefs = [...entries.get(type.fullName).refs];
563
+ const allQuals = new Map();
564
+ const addQuals = (qs) => {
565
+ for (const [k, v] of qs) {
566
+ let s = allQuals.get(k);
567
+ if (!s) {
568
+ s = new Set();
569
+ allQuals.set(k, s);
570
+ }
571
+ for (const x of v)
572
+ s.add(x);
573
+ }
574
+ };
575
+ addQuals(entries.get(type.fullName).quals);
576
+ for (const nestedHref of nested.get(href) ?? []) {
577
+ const full = nestedHref.split("/").pop().replace(/\.java$/, "");
578
+ const entry = entries.get(full);
579
+ if (!entry) {
580
+ errors.push(`${nestedHref}: not found in ${source.rel}`);
581
+ continue;
582
+ }
583
+ parts.push(entry.ts);
584
+ allRefs.push(...entry.refs);
585
+ addQuals(entry.quals);
586
+ }
587
+ const local = (0, fetch_js_1.declaredNames)(parts.join("\n"));
588
+ // tree-internal refs resolve to relative paths first; refs the repo does
589
+ // not declare link to the brew package providing them (brew.json)
590
+ const internal = (0, fetch_js_1.makeResolver)(index, href, local);
591
+ const resolved = (0, fetch_js_1.importBlockFor)(allRefs, (ref) => internal(ref) ?? (0, fetch_js_1.resolveExternalRef)(ref, allQuals.get(ref) ?? [], brewMap));
592
+ // a mirror declaring the base type itself (a java.base package) imports
593
+ // it relatively, so the package resolves from within itself; the file
594
+ // declaring Object skips the import (baseImportFor)
595
+ const block = [(0, fetch_js_1.baseImportFor)(index, href, local), resolved]
596
+ .filter(Boolean).join("\n");
597
+ const full = (0, fetch_js_1.withImports)(parts.join("\n"), block);
598
+ const dir = path.join(outRoot, path.posix.dirname(href));
599
+ fs.mkdirSync(dir, { recursive: true });
600
+ fs.writeFileSync(path.join(dir, `${type.name}.${ext}`), full, "utf8");
601
+ done++;
602
+ if (opts.log && (done % 25 === 0 || done === links.length)) {
603
+ opts.log(`mirrored ${done}/${links.length} classes`);
604
+ }
605
+ }
606
+ // index for every directory of the mirror (.ts, or .d.ts with --package)
607
+ const treeRoots = new Set([outRoot]);
608
+ const dirs = (0, fetch_js_1.mirrorDirs)(outRoot, links.map((href) => ({ rootDir: "", href })));
609
+ (0, fetch_js_1.writeMirrorIndexes)(dirs, treeRoots, ext);
610
+ if (opts.packageName)
611
+ (0, fetch_js_1.writeMirrorPackage)(outDir, opts.packageName, ext);
612
+ return { classes: links.length - errors.length, errors: [...new Set(errors)] };
613
+ }
614
+ //# sourceMappingURL=fetchgit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchgit.js","sourceRoot":"","sources":["../src/fetchgit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as ts from "typescript";
2
+ /** How a value of a given type is represented in Skript. */
3
+ export type Category = "plain" | "list" | "nbt" | "java";
4
+ /**
5
+ * The comment of the first matching JSDoc tag. `@ffi` is the native-syntax
6
+ * annotation (the original name `@skript` still works); `@macro` marks a
7
+ * TypeScript macro (a C/C++ #define-style inline expansion).
8
+ */
9
+ export declare function jsdocTagText(tags: readonly ts.JSDocTag[], names: string[]): string | undefined;
10
+ export declare function transpile(source: string, scriptName?: string, opts?: {
11
+ importBase?: string;
12
+ obfuscate?: boolean;
13
+ }): string;