UNPKG

6.83 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var needsQuotes = require("needsquotes");
4function displayName(name) {
5 var needs = needsQuotes(name);
6 if (needs.needsQuotes) {
7 return needs.quotedValue;
8 }
9 return name;
10}
11function memberName(node) {
12 var propName = displayName(node.name);
13 if (node.optional) {
14 return propName + '?';
15 }
16 return propName;
17}
18function typeDisplay(node) {
19 return node.types.join('|');
20}
21function print(interfaceNodes, options) {
22 var lineEnd = options.flow ? ',' : ';';
23 var blocks = interfaceNodes
24 .reverse()
25 .map(function (node) {
26 return [
27 interfaceLine(node),
28 node.members.map(memberLine).join('\n'),
29 "}"
30 ].join('\n');
31 }).join('\n\n');
32 return wrapper(blocks, options) + '\n';
33 function interfaceLine(node) {
34 if (options.flow) {
35 return "export type " + nameDisplay(node) + " = {";
36 }
37 if (options.namespace) {
38 return "export interface " + nameDisplay(node) + " {";
39 }
40 return "interface " + nameDisplay(node) + " {";
41 }
42 function memberLine(node) {
43 return " " + memberName(node) + ": " + typeDisplay(node) + lineEnd;
44 }
45 function nameDisplay(node) {
46 return node.name;
47 }
48}
49exports.print = print;
50function wrapper(blocks, options) {
51 if (options.namespace) {
52 var lines = [
53 "declare namespace " + options.namespace + " {"
54 ].concat(blocks.split('\n').map(function (x) { return " " + x; }), [
55 "}",
56 ]);
57 return lines.join('\n');
58 }
59 return blocks;
60}
61//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmludGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EseUNBQTRDO0FBRzVDLHFCQUFxQixJQUFZO0lBQzdCLElBQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVoQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUM3QixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsb0JBQW9CLElBQWdCO0lBQ2hDLElBQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUE7SUFDekIsQ0FBQztJQUNELE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELHFCQUFxQixJQUFnQjtJQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELGVBQXNCLGNBQStCLEVBQUUsT0FBc0I7SUFDekUsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3pDLElBQU0sTUFBTSxHQUFHLGNBQWM7U0FDeEIsT0FBTyxFQUFFO1NBQ1QsR0FBRyxDQUFDLFVBQUEsSUFBSTtRQUNMLE1BQU0sQ0FBQztZQUNILGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2QyxHQUFHO1NBQ04sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDaEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUV2Qyx1QkFBd0IsSUFBbUI7UUFDdkMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsaUJBQWUsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFNLENBQUE7UUFDakQsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxzQkFBb0IsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFJLENBQUE7UUFDcEQsQ0FBQztRQUNELE1BQU0sQ0FBQyxlQUFhLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxvQkFBb0IsSUFBZ0I7UUFDaEMsTUFBTSxDQUFDLE9BQUssVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFTLENBQUE7SUFDbEUsQ0FBQztJQUVELHFCQUFxQixJQUFtQjtRQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0FBQ0wsQ0FBQztBQS9CRCxzQkErQkM7QUFFRCxpQkFBaUIsTUFBTSxFQUFFLE9BQU87SUFDNUIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBTSxLQUFLO1lBQ1AsdUJBQXFCLE9BQU8sQ0FBQyxTQUFTLE9BQUk7aUJBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsT0FBSyxDQUFHLEVBQVIsQ0FBUSxDQUFDO1lBQ3hDLEdBQUc7VUFDTixDQUFDO1FBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZXJmYWNlTm9kZSwgTWVtYmVyTm9kZX0gZnJvbSBcIi4vdHJhbnNmb3JtZXJcIjtcbmltcG9ydCBuZWVkc1F1b3RlcyA9IHJlcXVpcmUoJ25lZWRzcXVvdGVzJyk7XG5pbXBvcnQge0pzb25Uc09wdGlvbnN9IGZyb20gXCIuL2luZGV4XCI7XG5cbmZ1bmN0aW9uIGRpc3BsYXlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbmVlZHMgPSBuZWVkc1F1b3RlcyhuYW1lKTtcblxuICAgIGlmIChuZWVkcy5uZWVkc1F1b3Rlcykge1xuICAgICAgICByZXR1cm4gbmVlZHMucXVvdGVkVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBuYW1lO1xufVxuXG5mdW5jdGlvbiBtZW1iZXJOYW1lKG5vZGU6IE1lbWJlck5vZGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb3BOYW1lID0gZGlzcGxheU5hbWUobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5vcHRpb25hbCkge1xuICAgICAgICByZXR1cm4gcHJvcE5hbWUgKyAnPydcbiAgICB9XG4gICAgcmV0dXJuIHByb3BOYW1lO1xufVxuXG5mdW5jdGlvbiB0eXBlRGlzcGxheShub2RlOiBNZW1iZXJOb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbm9kZS50eXBlcy5qb2luKCd8Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludChpbnRlcmZhY2VOb2RlczogSW50ZXJmYWNlTm9kZVtdLCBvcHRpb25zOiBKc29uVHNPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaW5lRW5kID0gb3B0aW9ucy5mbG93ID8gJywnIDogJzsnO1xuICAgIGNvbnN0IGJsb2NrcyA9IGludGVyZmFjZU5vZGVzXG4gICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgLm1hcChub2RlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlTGluZShub2RlKSxcbiAgICAgICAgICAgICAgICBub2RlLm1lbWJlcnMubWFwKG1lbWJlckxpbmUpLmpvaW4oJ1xcbicpLFxuICAgICAgICAgICAgICAgIGB9YFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgICB9KS5qb2luKCdcXG5cXG4nKTtcblxuICAgIHJldHVybiB3cmFwcGVyKGJsb2Nrcywgb3B0aW9ucykgKyAnXFxuJztcblxuICAgIGZ1bmN0aW9uIGludGVyZmFjZUxpbmUgKG5vZGU6IEludGVyZmFjZU5vZGUpOiBzdHJpbmcge1xuICAgICAgICBpZiAob3B0aW9ucy5mbG93KSB7XG4gICAgICAgICAgICByZXR1cm4gYGV4cG9ydCB0eXBlICR7bmFtZURpc3BsYXkobm9kZSl9ID0ge2BcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5uYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBgZXhwb3J0IGludGVyZmFjZSAke25hbWVEaXNwbGF5KG5vZGUpfSB7YFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgaW50ZXJmYWNlICR7bmFtZURpc3BsYXkobm9kZSl9IHtgO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lbWJlckxpbmUobm9kZTogTWVtYmVyTm9kZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgICAke21lbWJlck5hbWUobm9kZSl9OiAke3R5cGVEaXNwbGF5KG5vZGUpfSR7bGluZUVuZH1gXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbmFtZURpc3BsYXkobm9kZTogSW50ZXJmYWNlTm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5uYW1lO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gd3JhcHBlcihibG9ja3MsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5uYW1lc3BhY2UpIHtcbiAgICAgICAgY29uc3QgbGluZXMgPSBbXG4gICAgICAgICAgICBgZGVjbGFyZSBuYW1lc3BhY2UgJHtvcHRpb25zLm5hbWVzcGFjZX0ge2AsXG4gICAgICAgICAgICAuLi5ibG9ja3Muc3BsaXQoJ1xcbicpLm1hcCh4ID0+IGAgICR7eH1gKSxcbiAgICAgICAgICAgIGB9YCxcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgIH1cbiAgICByZXR1cm4gYmxvY2tzO1xufVxuIl19
\No newline at end of file