jsii-docgen
Version:
generates api docs for jsii modules
53 lines • 8.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiReference = void 0;
const classes_1 = require("./classes");
const constructs_1 = require("./constructs");
const enums_1 = require("./enums");
const interfaces_1 = require("./interfaces");
const structs_1 = require("./structs");
/**
* Render an API reference based on the jsii assembly.
*/
class ApiReference {
constructor(transpile, assembly, submodule, allSubmodules) {
let classes;
let interfaces;
let enums;
if (allSubmodules !== null && allSubmodules !== void 0 ? allSubmodules : false) {
classes = this.sortByName([...assembly.classes, ...flatMap(assembly.allSubmodules, submod => [...submod.classes])]);
interfaces = this.sortByName([...assembly.interfaces, ...flatMap(assembly.allSubmodules, submod => [...submod.interfaces])]);
enums = this.sortByName([...assembly.enums, ...flatMap(assembly.allSubmodules, submod => [...submod.enums])]);
}
else {
classes = this.sortByName(submodule ? submodule.classes : assembly.classes);
interfaces = this.sortByName(submodule ? submodule.interfaces : assembly.interfaces);
enums = this.sortByName(submodule ? submodule.enums : assembly.enums);
}
this.constructs = new constructs_1.Constructs(transpile, classes);
this.classes = new classes_1.Classes(transpile, classes);
this.structs = new structs_1.Structs(transpile, interfaces);
this.interfaces = new interfaces_1.Interfaces(transpile, interfaces);
this.enums = new enums_1.Enums(transpile, enums);
}
/**
* Generate JSON.
*/
toJson() {
return {
constructs: this.constructs.toJson(),
classes: this.classes.toJson(),
structs: this.structs.toJson(),
interfaces: this.interfaces.toJson(),
enums: this.enums.toJson(),
};
}
sortByName(arr) {
return [...arr].sort((s1, s2) => s1.name.localeCompare(s2.name));
}
}
exports.ApiReference = ApiReference;
function flatMap(xs, fn) {
return Array.prototype.concat(...xs.map(fn));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlZmVyZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb2NnZW4vdmlldy9hcGktcmVmZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVDQUFvQztBQUNwQyw2Q0FBMEM7QUFDMUMsbUNBQWdDO0FBQ2hDLDZDQUEwQztBQUMxQyx1Q0FBb0M7QUFJcEM7O0dBRUc7QUFDSCxNQUFhLFlBQVk7SUFNdkIsWUFDRSxTQUFvQixFQUNwQixRQUEwQixFQUMxQixTQUE2QixFQUM3QixhQUF1QjtRQUV2QixJQUFJLE9BQTRCLENBQUM7UUFDakMsSUFBSSxVQUFtQyxDQUFDO1FBQ3hDLElBQUksS0FBeUIsQ0FBQztRQUM5QixJQUFJLGFBQWEsYUFBYixhQUFhLGNBQWIsYUFBYSxHQUFJLEtBQUssRUFBRSxDQUFDO1lBQzNCLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BILFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdILEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUUsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckYsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSx1QkFBVSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGlCQUFPLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSx1QkFBVSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksYUFBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1gsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUNwQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQzlCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFTyxVQUFVLENBQTRCLEdBQW9CO1FBQ2hFLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjtBQWhERCxvQ0FnREM7QUFFRCxTQUFTLE9BQU8sQ0FBTyxFQUFnQixFQUFFLEVBQXlEO0lBQ2hHLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHJlZmxlY3QgZnJvbSAnanNpaS1yZWZsZWN0JztcbmltcG9ydCB7IENsYXNzZXMgfSBmcm9tICcuL2NsYXNzZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0cyB9IGZyb20gJy4vY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFbnVtcyB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgSW50ZXJmYWNlcyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdHJ1Y3RzIH0gZnJvbSAnLi9zdHJ1Y3RzJztcbmltcG9ydCB7IEFwaVJlZmVyZW5jZVNjaGVtYSB9IGZyb20gJy4uL3NjaGVtYSc7XG5pbXBvcnQgeyBUcmFuc3BpbGUgfSBmcm9tICcuLi90cmFuc3BpbGUvdHJhbnNwaWxlJztcblxuLyoqXG4gKiBSZW5kZXIgYW4gQVBJIHJlZmVyZW5jZSBiYXNlZCBvbiB0aGUganNpaSBhc3NlbWJseS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwaVJlZmVyZW5jZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc3RydWN0czogQ29uc3RydWN0cztcbiAgcHJpdmF0ZSByZWFkb25seSBzdHJ1Y3RzOiBTdHJ1Y3RzO1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVyZmFjZXM6IEludGVyZmFjZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xhc3NlczogQ2xhc3NlcztcbiAgcHJpdmF0ZSByZWFkb25seSBlbnVtczogRW51bXM7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHRyYW5zcGlsZTogVHJhbnNwaWxlLFxuICAgIGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5LFxuICAgIHN1Ym1vZHVsZT86IHJlZmxlY3QuU3VibW9kdWxlLFxuICAgIGFsbFN1Ym1vZHVsZXM/OiBib29sZWFuLFxuICApIHtcbiAgICBsZXQgY2xhc3NlczogcmVmbGVjdC5DbGFzc1R5cGVbXTtcbiAgICBsZXQgaW50ZXJmYWNlczogcmVmbGVjdC5JbnRlcmZhY2VUeXBlW107XG4gICAgbGV0IGVudW1zOiByZWZsZWN0LkVudW1UeXBlW107XG4gICAgaWYgKGFsbFN1Ym1vZHVsZXMgPz8gZmFsc2UpIHtcbiAgICAgIGNsYXNzZXMgPSB0aGlzLnNvcnRCeU5hbWUoWy4uLmFzc2VtYmx5LmNsYXNzZXMsIC4uLmZsYXRNYXAoYXNzZW1ibHkuYWxsU3VibW9kdWxlcywgc3VibW9kID0+IFsuLi5zdWJtb2QuY2xhc3Nlc10pXSk7XG4gICAgICBpbnRlcmZhY2VzID0gdGhpcy5zb3J0QnlOYW1lKFsuLi5hc3NlbWJseS5pbnRlcmZhY2VzLCAuLi5mbGF0TWFwKGFzc2VtYmx5LmFsbFN1Ym1vZHVsZXMsIHN1Ym1vZCA9PiBbLi4uc3VibW9kLmludGVyZmFjZXNdKV0pO1xuICAgICAgZW51bXMgPSB0aGlzLnNvcnRCeU5hbWUoWy4uLmFzc2VtYmx5LmVudW1zLCAuLi5mbGF0TWFwKGFzc2VtYmx5LmFsbFN1Ym1vZHVsZXMsIHN1Ym1vZCA9PiBbLi4uc3VibW9kLmVudW1zXSldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3NlcyA9IHRoaXMuc29ydEJ5TmFtZShzdWJtb2R1bGUgPyBzdWJtb2R1bGUuY2xhc3NlcyA6IGFzc2VtYmx5LmNsYXNzZXMpO1xuICAgICAgaW50ZXJmYWNlcyA9IHRoaXMuc29ydEJ5TmFtZShzdWJtb2R1bGUgPyBzdWJtb2R1bGUuaW50ZXJmYWNlcyA6IGFzc2VtYmx5LmludGVyZmFjZXMpO1xuICAgICAgZW51bXMgPSB0aGlzLnNvcnRCeU5hbWUoc3VibW9kdWxlID8gc3VibW9kdWxlLmVudW1zIDogYXNzZW1ibHkuZW51bXMpO1xuICAgIH1cblxuICAgIHRoaXMuY29uc3RydWN0cyA9IG5ldyBDb25zdHJ1Y3RzKHRyYW5zcGlsZSwgY2xhc3Nlcyk7XG4gICAgdGhpcy5jbGFzc2VzID0gbmV3IENsYXNzZXModHJhbnNwaWxlLCBjbGFzc2VzKTtcbiAgICB0aGlzLnN0cnVjdHMgPSBuZXcgU3RydWN0cyh0cmFuc3BpbGUsIGludGVyZmFjZXMpO1xuICAgIHRoaXMuaW50ZXJmYWNlcyA9IG5ldyBJbnRlcmZhY2VzKHRyYW5zcGlsZSwgaW50ZXJmYWNlcyk7XG4gICAgdGhpcy5lbnVtcyA9IG5ldyBFbnVtcyh0cmFuc3BpbGUsIGVudW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBBcGlSZWZlcmVuY2VTY2hlbWEge1xuICAgIHJldHVybiB7XG4gICAgICBjb25zdHJ1Y3RzOiB0aGlzLmNvbnN0cnVjdHMudG9Kc29uKCksXG4gICAgICBjbGFzc2VzOiB0aGlzLmNsYXNzZXMudG9Kc29uKCksXG4gICAgICBzdHJ1Y3RzOiB0aGlzLnN0cnVjdHMudG9Kc29uKCksXG4gICAgICBpbnRlcmZhY2VzOiB0aGlzLmludGVyZmFjZXMudG9Kc29uKCksXG4gICAgICBlbnVtczogdGhpcy5lbnVtcy50b0pzb24oKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0QnlOYW1lPFR5cGUgZXh0ZW5kcyByZWZsZWN0LlR5cGU+KGFycjogcmVhZG9ubHkgVHlwZVtdKTogVHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLmFycl0uc29ydCgoczEsIHMyKSA9PiBzMS5uYW1lLmxvY2FsZUNvbXBhcmUoczIubmFtZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZsYXRNYXA8VCwgVT4oeHM6IHJlYWRvbmx5IFRbXSwgZm46ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IHJlYWRvbmx5IFRbXSkgPT4gVVtdKTogVVtdIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQoLi4ueHMubWFwKGZuKSk7XG59XG4iXX0=
;