source: trip-planner-front/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js@ 59329aa

Last change on this file since 59329aa was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 1.0 KB
RevLine 
[6a3a178]1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = removeTypeDuplicates;
7
8var _generated = require("../../validators/generated");
9
10function removeTypeDuplicates(nodes) {
11 const generics = {};
12 const bases = {};
13 const typeGroups = new Set();
14 const types = [];
15
16 for (let i = 0; i < nodes.length; i++) {
17 const node = nodes[i];
18 if (!node) continue;
19
20 if (types.indexOf(node) >= 0) {
21 continue;
22 }
23
24 if ((0, _generated.isTSAnyKeyword)(node)) {
25 return [node];
26 }
27
28 if ((0, _generated.isTSBaseType)(node)) {
29 bases[node.type] = node;
30 continue;
31 }
32
33 if ((0, _generated.isTSUnionType)(node)) {
34 if (!typeGroups.has(node.types)) {
35 nodes.push(...node.types);
36 typeGroups.add(node.types);
37 }
38
39 continue;
40 }
41
42 types.push(node);
43 }
44
45 for (const type of Object.keys(bases)) {
46 types.push(bases[type]);
47 }
48
49 for (const name of Object.keys(generics)) {
50 types.push(generics[name]);
51 }
52
53 return types;
54}
Note: See TracBrowser for help on using the repository browser.