dts-element-fp
Version:
typescript definition generator for functional programming
40 lines (39 loc) • 1.98 kB
JavaScript
;
exports.__esModule = true;
var dts = require("dts-element");
var constants_1 = require("./constants");
function create_selectable_signatures(signatures, options) {
// istanbul ignore next
var group = options.group, is_placeholder = options.is_placeholder, _a = options.get_selectable_kind_name, get_selectable_kind_name = _a === void 0 ? constants_1.get_function_selectable_kind_name_default : _a, _b = options.get_selectable_selector_name, get_selectable_selector_name = _b === void 0 ? constants_1.get_function_selectable_selector_name_default : _b;
return signatures.map(function (signature) {
var function_type = signature.owned.type;
// istanbul ignore next
var _a = function_type.parameters, parameters = _a === void 0 ? [] : _a;
var selectable_type = parameters
.map(function (parameter) { return (is_placeholder(parameter.type) ? '0' : '1'); })
.join('');
return dts.create_object_member({
owned: dts.create_function_declaration({
name: undefined,
type: dts.create_function_type({
parameters: [],
generics: [
dts.create_generic_declaration({
name: get_selectable_selector_name(),
"extends": dts.create_literal_type({ value: selectable_type })
})
].concat((group === undefined
? []
: [
dts.create_generic_declaration({
name: get_selectable_kind_name(),
"extends": dts.create_literal_type({ value: group })
}),
])),
"return": function_type
})
})
});
});
}
exports.create_selectable_signatures = create_selectable_signatures;