@brew-lang/sdk 0.0.0-stage → 0.3.0-alpha
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.
- package/LICENSE +373 -0
- package/README.md +348 -2
- package/build/cli.d.ts +2 -0
- package/build/cli.js +256 -0
- package/build/cli.js.map +1 -0
- package/build/fetch.d.ts +294 -0
- package/build/fetch.js +1221 -0
- package/build/fetch.js.map +1 -0
- package/build/fetchgit.d.ts +67 -0
- package/build/fetchgit.js +612 -0
- package/build/fetchgit.js.map +1 -0
- package/build/transpiler.d.ts +13 -0
- package/build/transpiler.js +2025 -0
- package/build/transpiler.js.map +1 -0
- package/package.json +38 -4
|
@@ -0,0 +1,612 @@
|
|
|
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
|
+
// files declaring the base type (java/lang/Object) cannot import it
|
|
593
|
+
const block = (local.has(fetch_js_1.BASE_TYPE.name) ? [resolved] : [fetch_js_1.BASE_IMPORT, resolved])
|
|
594
|
+
.filter(Boolean).join("\n");
|
|
595
|
+
const full = (0, fetch_js_1.withImports)(parts.join("\n"), block);
|
|
596
|
+
const dir = path.join(outRoot, path.posix.dirname(href));
|
|
597
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
598
|
+
fs.writeFileSync(path.join(dir, `${type.name}.${ext}`), full, "utf8");
|
|
599
|
+
done++;
|
|
600
|
+
if (opts.log && (done % 25 === 0 || done === links.length)) {
|
|
601
|
+
opts.log(`mirrored ${done}/${links.length} classes`);
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
// index for every directory of the mirror (.ts, or .d.ts with --package)
|
|
605
|
+
const treeRoots = new Set([outRoot]);
|
|
606
|
+
const dirs = (0, fetch_js_1.mirrorDirs)(outRoot, links.map((href) => ({ rootDir: "", href })));
|
|
607
|
+
(0, fetch_js_1.writeMirrorIndexes)(dirs, treeRoots, ext);
|
|
608
|
+
if (opts.packageName)
|
|
609
|
+
(0, fetch_js_1.writeMirrorPackage)(outDir, opts.packageName, ext);
|
|
610
|
+
return { classes: links.length - errors.length, errors: [...new Set(errors)] };
|
|
611
|
+
}
|
|
612
|
+
//# 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;
|