1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const ts = require("typescript");
|
4 | class ApiRegistry {
|
5 | constructor() {
|
6 | this.registry = new Map();
|
7 | this.ExtractedData = {};
|
8 | this.IsDataExtracted = false;
|
9 | this.declarationsToIdsMap = new WeakMap();
|
10 | this.counters = new Map();
|
11 | }
|
12 | Extract(forceExtract = false) {
|
13 | if (this.IsDataExtracted && !forceExtract) {
|
14 | return this.ExtractedData;
|
15 | }
|
16 | for (const item of this.Registry) {
|
17 | const [key, apiItem] = item;
|
18 | const extractedData = apiItem.Extract(forceExtract);
|
19 | this.ExtractedData[key] = extractedData;
|
20 | }
|
21 | this.IsDataExtracted = true;
|
22 | return this.ExtractedData;
|
23 | }
|
24 | get Registry() {
|
25 | return this.registry;
|
26 | }
|
27 | GetNextDeclarationId(declaration) {
|
28 | if (declaration == null) {
|
29 | return undefined;
|
30 | }
|
31 | // Get string syntax kind
|
32 | const syntaxKind = ts.SyntaxKind[declaration.kind];
|
33 | let index;
|
34 | if (this.counters.has(syntaxKind)) {
|
35 | const oldIndex = this.counters.get(syntaxKind);
|
36 | index = oldIndex + 1;
|
37 | }
|
38 | else {
|
39 | index = 0;
|
40 | }
|
41 | this.counters.set(syntaxKind, index);
|
42 | return `${syntaxKind}-${index}`;
|
43 | }
|
44 | GetDeclarationId(declaration) {
|
45 | return this.declarationsToIdsMap.get(declaration);
|
46 | }
|
47 | HasDeclaration(declaration) {
|
48 | const declarationId = this.GetDeclarationId(declaration);
|
49 | return declarationId != null && this.registry.has(declarationId);
|
50 | }
|
51 | Get(id) {
|
52 | if (id == null) {
|
53 | return undefined;
|
54 | }
|
55 | return this.registry.get(id);
|
56 | }
|
57 | AddItem(item) {
|
58 | const declarationId = this.GetNextDeclarationId(item.Declaration);
|
59 | if (declarationId == null) {
|
60 | throw new Error(`Declaration id should always be deterministic.`);
|
61 | }
|
62 | if (!this.registry.has(declarationId)) {
|
63 | this.registry.set(declarationId, item);
|
64 | this.declarationsToIdsMap.set(item.Declaration, declarationId);
|
65 | this.IsDataExtracted = false;
|
66 | }
|
67 | item.GatherData();
|
68 | return declarationId;
|
69 | }
|
70 | }
|
71 | exports.ApiRegistry = ApiRegistry;
|
72 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwaS1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFpQztBQVFqQztJQUFBO1FBQ2MsYUFBUSxHQUF5QixJQUFJLEdBQUcsRUFBbUIsQ0FBQztRQUU1RCxrQkFBYSxHQUF5QixFQUFFLENBQUM7UUFDekMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFzQm5DLHlCQUFvQixHQUFvQyxJQUFJLE9BQU8sRUFBMEIsQ0FBQztRQUM5RixhQUFRLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO0lBdUR0RSxDQUFDO0lBNUVVLE9BQU8sQ0FBQyxlQUF3QixLQUFLO1FBQ3hDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzlCLENBQUM7UUFFRCxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMvQixNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztZQUM1QixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXBELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBMkIsQ0FBQztRQUMxRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBd0MsQ0FBQztJQUN6RCxDQUFDO0lBS1Msb0JBQW9CLENBQUMsV0FBdUM7UUFDbEUsRUFBRSxDQUFDLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQseUJBQXlCO1FBQ3pCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5ELElBQUksS0FBYSxDQUFDO1FBQ2xCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUUsQ0FBQztZQUNoRCxLQUFLLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsR0FBRyxVQUFVLElBQUksS0FBSyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFdBQTJCO1FBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxjQUFjLENBQUMsV0FBMkI7UUFDN0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxhQUFhLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxHQUFHLENBQUMsRUFBVTtRQUNqQixFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNiLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sT0FBTyxDQUFDLElBQWE7UUFDeEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVsRSxFQUFFLENBQUMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDakMsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixNQUFNLENBQUMsYUFBYSxDQUFDO0lBQ3pCLENBQUM7Q0FDSjtBQWxGRCxrQ0FrRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgQXBpSXRlbSB9IGZyb20gXCIuL2Fic3RyYWN0aW9ucy9hcGktaXRlbVwiO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuL2NvbnRyYWN0cy9kaWN0aW9uYXJ5XCI7XG5pbXBvcnQgeyBSZWdpc3RyeSB9IGZyb20gXCIuL2NvbnRyYWN0cy9yZWdpc3RyeVwiO1xuaW1wb3J0IHsgQXBpSXRlbUR0byB9IGZyb20gXCIuL2NvbnRyYWN0cy9hcGktaXRlbS1kdG9cIjtcblxuZXhwb3J0IHR5cGUgRXh0cmFjdGVkQXBpUmVnaXN0cnkgPSBEaWN0aW9uYXJ5PEFwaUl0ZW1EdG8+O1xuXG5leHBvcnQgY2xhc3MgQXBpUmVnaXN0cnkgaW1wbGVtZW50cyBSZWdpc3RyeTxBcGlJdGVtPiB7XG4gICAgcHJvdGVjdGVkIHJlZ2lzdHJ5OiBNYXA8c3RyaW5nLCBBcGlJdGVtPiA9IG5ldyBNYXA8c3RyaW5nLCBBcGlJdGVtPigpO1xuXG4gICAgcHJvdGVjdGVkIEV4dHJhY3RlZERhdGE6IEV4dHJhY3RlZEFwaVJlZ2lzdHJ5ID0ge307XG4gICAgcHJvdGVjdGVkIElzRGF0YUV4dHJhY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIEV4dHJhY3QoZm9yY2VFeHRyYWN0OiBib29sZWFuID0gZmFsc2UpOiBFeHRyYWN0ZWRBcGlSZWdpc3RyeSB7XG4gICAgICAgIGlmICh0aGlzLklzRGF0YUV4dHJhY3RlZCAmJiAhZm9yY2VFeHRyYWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5FeHRyYWN0ZWREYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuUmVnaXN0cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IFtrZXksIGFwaUl0ZW1dID0gaXRlbTtcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhY3RlZERhdGEgPSBhcGlJdGVtLkV4dHJhY3QoZm9yY2VFeHRyYWN0KTtcblxuICAgICAgICAgICAgdGhpcy5FeHRyYWN0ZWREYXRhW2tleV0gPSBleHRyYWN0ZWREYXRhIGFzIEFwaUl0ZW1EdG87XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLklzRGF0YUV4dHJhY3RlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLkV4dHJhY3RlZERhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBSZWdpc3RyeSgpOiBSZWFkb25seU1hcDxzdHJpbmcsIEFwaUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnkgYXMgUmVhZG9ubHlNYXA8c3RyaW5nLCBBcGlJdGVtPjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlY2xhcmF0aW9uc1RvSWRzTWFwOiBXZWFrTWFwPHRzLkRlY2xhcmF0aW9uLCBzdHJpbmc+ID0gbmV3IFdlYWtNYXA8dHMuRGVjbGFyYXRpb24sIHN0cmluZz4oKTtcbiAgICBwcml2YXRlIGNvdW50ZXJzOiBNYXA8c3RyaW5nLCBudW1iZXI+ID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICAgIHByb3RlY3RlZCBHZXROZXh0RGVjbGFyYXRpb25JZChkZWNsYXJhdGlvbjogdHMuRGVjbGFyYXRpb24gfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoZGVjbGFyYXRpb24gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCBzdHJpbmcgc3ludGF4IGtpbmRcbiAgICAgICAgY29uc3Qgc3ludGF4S2luZCA9IHRzLlN5bnRheEtpbmRbZGVjbGFyYXRpb24ua2luZF07XG5cbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXI7XG4gICAgICAgIGlmICh0aGlzLmNvdW50ZXJzLmhhcyhzeW50YXhLaW5kKSkge1xuICAgICAgICAgICAgY29uc3Qgb2xkSW5kZXggPSB0aGlzLmNvdW50ZXJzLmdldChzeW50YXhLaW5kKSE7XG4gICAgICAgICAgICBpbmRleCA9IG9sZEluZGV4ICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY291bnRlcnMuc2V0KHN5bnRheEtpbmQsIGluZGV4KTtcbiAgICAgICAgcmV0dXJuIGAke3N5bnRheEtpbmR9LSR7aW5kZXh9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgR2V0RGVjbGFyYXRpb25JZChkZWNsYXJhdGlvbjogdHMuRGVjbGFyYXRpb24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWNsYXJhdGlvbnNUb0lkc01hcC5nZXQoZGVjbGFyYXRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBIYXNEZWNsYXJhdGlvbihkZWNsYXJhdGlvbjogdHMuRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGVjbGFyYXRpb25JZCA9IHRoaXMuR2V0RGVjbGFyYXRpb25JZChkZWNsYXJhdGlvbik7XG4gICAgICAgIHJldHVybiBkZWNsYXJhdGlvbklkICE9IG51bGwgJiYgdGhpcy5yZWdpc3RyeS5oYXMoZGVjbGFyYXRpb25JZCk7XG4gICAgfVxuXG4gICAgcHVibGljIEdldChpZDogc3RyaW5nKTogQXBpSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpZCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmdldChpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIEFkZEl0ZW0oaXRlbTogQXBpSXRlbSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uSWQgPSB0aGlzLkdldE5leHREZWNsYXJhdGlvbklkKGl0ZW0uRGVjbGFyYXRpb24pO1xuXG4gICAgICAgIGlmIChkZWNsYXJhdGlvbklkID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVjbGFyYXRpb24gaWQgc2hvdWxkIGFsd2F5cyBiZSBkZXRlcm1pbmlzdGljLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdHJ5LmhhcyhkZWNsYXJhdGlvbklkKSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RyeS5zZXQoZGVjbGFyYXRpb25JZCwgaXRlbSk7XG4gICAgICAgICAgICB0aGlzLmRlY2xhcmF0aW9uc1RvSWRzTWFwLnNldChpdGVtLkRlY2xhcmF0aW9uLCBkZWNsYXJhdGlvbklkKTtcbiAgICAgICAgICAgIHRoaXMuSXNEYXRhRXh0cmFjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLkdhdGhlckRhdGEoKTtcblxuICAgICAgICByZXR1cm4gZGVjbGFyYXRpb25JZDtcbiAgICB9XG59XG4iXX0= |
\ | No newline at end of file |