UNPKG

dts-element-fp

Version:

typescript definition generator for functional programming

48 lines (47 loc) 2.31 kB
"use strict"; var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; exports.__esModule = true; var dts = require("dts-element"); var R = require("ramda"); var get_generics_dependencies_1 = require("./get-generics-dependencies"); var has_1 = require("./has"); exports.has_same_parameter = function (function_type_1, function_type_2, parameter_index) { var _a = [function_type_1, function_type_2].map(function (function_type) { var _a = function_type.parameters, parameters = _a === void 0 ? [] : _a, _b = function_type.generics, generics = _b === void 0 ? [] : _b; var parameter_type = parameters[parameter_index].type; return { generics: generics, parameter_type: parameter_type }; }), first = _a[0], second = _a[1]; if (!R.equals(first.parameter_type, second.parameter_type)) { // suppose type that looks different should have different meaning return false; } // check if the same generic name has the same meaning var _b = [first, second].map(function (data) { var generics = data.generics, parameter_type = data.parameter_type; var parameter_generics_and_indexes = generics .map(function (generic, index) { return ({ generic: generic, index: index }); }) .filter(function (_a) { var generic = _a.generic; return has_1.has(parameter_type, { kind: dts.ElementKind.GeneralType, name: generic.name }); }); var generics_dependencies = get_generics_dependencies_1.get_generics_dependencies(generics); return parameter_generics_and_indexes.reduce(function (current, _a) { var generic = _a.generic, index = _a.index; return (__assign({}, current, (_b = {}, _b[generic.name] = generics_dependencies[index] .slice() .sort(function (a, b) { return a.name.localeCompare(b.name); }), _b))); var _b; }, {}); }), generic_tree_1 = _b[0], generic_tree_2 = _b[1]; return R.equals(generic_tree_1, generic_tree_2); };