1
0
mirror of https://github.com/kamranahmedse/developer-roadmap.git synced 2025-02-23 19:13:19 +01:00
developer-roadmap/lib/roadmap.ts

54 lines
1.5 KiB
TypeScript
Raw Normal View History

2021-08-29 16:05:19 +02:00
import roadmaps from '../content/roadmaps.json';
export type RoadmapType = {
seo: {
title: string;
description: string;
2021-12-07 14:05:13 +01:00
keywords: string[];
};
title: string;
description: string;
2021-08-29 16:05:19 +02:00
featuredTitle: string;
2021-12-07 14:05:13 +01:00
featuredDescription: string;
2021-08-29 16:05:19 +02:00
author: {
2021-12-07 14:05:13 +01:00
name: string;
url: string;
};
2022-09-08 20:20:30 +04:00
type: 'role' | 'tool';
2021-12-07 14:05:13 +01:00
featured: boolean;
imageUrl?: string;
jsonUrl?: string;
2022-08-29 18:48:57 +04:00
isNew?: boolean;
2021-12-03 14:16:41 +01:00
landingPath?: string;
2021-08-29 16:05:19 +02:00
resourcesPath: string;
2021-12-03 19:58:25 +01:00
contentPathsFilePath?: string;
2021-09-26 22:02:59 +02:00
metaPath: string;
2021-08-29 16:05:19 +02:00
isCommunity: boolean;
2021-09-04 18:50:38 +02:00
isUpcoming: boolean;
2021-08-29 21:29:14 +02:00
id: string;
2021-09-04 19:14:02 +02:00
pdfUrl?: string;
2022-09-08 20:20:30 +04:00
relatedRoadmaps?: string[];
2021-08-29 16:05:19 +02:00
};
2021-08-29 21:29:14 +02:00
export function getRoadmapById(id: string): RoadmapType | undefined {
2021-12-07 14:05:13 +01:00
return (roadmaps as RoadmapType[]).find((roadmap) => roadmap.id === id);
2021-08-29 16:05:19 +02:00
}
export function getAllRoadmaps(): RoadmapType[] {
2021-12-07 14:05:13 +01:00
return roadmaps as RoadmapType[];
2021-08-29 16:05:19 +02:00
}
2022-09-08 20:20:30 +04:00
export function filterRoadmapsByIds(ids: string[]): RoadmapType[] {
return (roadmaps as RoadmapType[]).filter(roadmap => ids.includes(roadmap.id));
}
2021-08-29 16:05:19 +02:00
export function getFeaturedRoadmaps(): RoadmapType[] {
const roadmaps: RoadmapType[] = getAllRoadmaps();
2021-12-07 14:05:13 +01:00
return roadmaps.filter((roadmap) => roadmap.featured);
2021-08-29 16:05:19 +02:00
}
export function isInteractiveRoadmap(id: string): boolean {
2022-10-28 19:22:48 +04:00
return ['frontend', 'backend', 'devops', 'react', 'vue', 'python', 'java', 'blockchain', 'golang', 'javascript', 'nodejs', 'qa', 'design-system', 'angular', 'software-architect', 'software-design-architecture', 'aspnet-core', 'flutter'].includes(id);
}