You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

630 lines
14 KiB

export const USERS = {
1: {
id: 1,
email: 'test@angular-university.io',
password: 'test'
}
};
export const COURSES: any = {
4: {
id: 4,
description: 'NgRx (with NgRx Data) - The Complete Guide',
longDescription: 'Learn the modern Ngrx Ecosystem, including NgRx Data, Store, Effects, Router Store, Ngrx Entity, and Dev Tools.',
iconUrl: 'https://angular-university.s3-us-west-1.amazonaws.com/course-images/ngrx-v2.png',
category: 'BEGINNER',
lessonsCount: 10,
seqNo: 0,
url: 'ngrx-course'
},
2: {
id: 2,
description: 'Angular Core Deep Dive',
longDescription: 'A detailed walk-through of the most important part of Angular - the Core and Common modules',
iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/angular-core-in-depth-small.png',
lessonsCount: 10,
category: 'BEGINNER',
seqNo: 1,
url: 'angular-core-course'
},
3: {
id: 3,
description: 'RxJs In Practice Course',
longDescription: 'Understand the RxJs Observable pattern, learn the RxJs Operators via practical examples',
iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/rxjs-in-practice-course.png',
category: 'BEGINNER',
lessonsCount: 10,
seqNo: 2,
url: 'rxjs-course'
},
1: {
id: 1,
description: 'Serverless Angular with Firebase Course',
longDescription: 'Serveless Angular with Firestore, Firebase Storage & Hosting, Firebase Cloud Functions & AngularFire',
iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/serverless-angular-small.png',
lessonsCount: 10,
category: 'BEGINNER',
seqNo: 4,
url: 'serverless-angular'
},
/*
5: {
id: 5,
description: 'Angular for Beginners',
longDescription: "Establish a solid layer of fundamentals, learn what's under the hood of Angular",
iconUrl: 'https://angular-academy.s3.amazonaws.com/thumbnails/angular2-for-beginners-small-v2.png',
category: 'BEGINNER',
lessonsCount: 10,
seqNo: 5,
url: 'angular-for-beginners'
},
*/
12: {
id: 12,
description: 'Angular Testing Course',
longDescription: 'In-depth guide to Unit Testing and E2E Testing of Angular Applications',
iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/angular-testing-small.png',
category: 'BEGINNER',
seqNo: 6,
url: 'angular-testing-course',
lessonsCount: 10,
},
6: {
id: 6,
description: 'Angular Security Course - Web Security Fundamentals',
longDescription: 'Learn Web Security Fundamentals and apply them to defend an Angular / Node Application from multiple types of attacks.',
iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/security-cover-small-v2.png',
category: 'ADVANCED',
lessonsCount: 11,
seqNo: 7,
url: 'angular-security-course'
},
7: {
id: 7,
description: 'Angular PWA - Progressive Web Apps Course',
longDescription: 'Learn Angular Progressive Web Applications, build the future of the Web Today.',
iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/angular-pwa-course.png',
category: 'ADVANCED',
lessonsCount: 8,
seqNo: 8,
url: 'angular-pwa-course'
},
8: {
id: 8,
description: 'Angular Advanced Library Laboratory: Build Your Own Library',
longDescription: 'Learn Advanced Angular functionality typically used in Library Development. Advanced Components, Directives, Testing, Npm',
iconUrl: 'https://angular-academy.s3.amazonaws.com/thumbnails/advanced_angular-small-v3.png',
category: 'ADVANCED',
seqNo: 9,
url: 'angular-advanced-course'
},
9: {
id: 9,
description: 'The Complete Typescript Course',
longDescription: 'Complete Guide to Typescript From Scratch: Learn the language in-depth and use it to build a Node REST API.',
iconUrl: 'https://angular-academy.s3.amazonaws.com/thumbnails/typescript-2-small.png',
category: 'BEGINNER',
seqNo: 10,
url: 'typescript-course'
},
10: {
id: 10,
description: 'Rxjs and Reactive Patterns Angular Architecture Course',
longDescription: 'Learn the core RxJs Observable Pattern as well and many other Design Patterns for building Reactive Angular Applications.',
iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-academy/blog/images/rxjs-reactive-patterns-small.png',
category: 'BEGINNER',
seqNo: 11,
url: 'rxjs-patterns-course'
},
11: {
id: 11,
description: 'Angular Material Course',
longDescription: 'Build Applications with the official Angular Widget Library',
iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/material_design.png',
category: 'BEGINNER',
seqNo: 12,
url: 'angular-material-course'
}
};
export const LESSONS = {
1: {
id: 1,
'description': 'Angular Tutorial For Beginners - Build Your First App - Hello World Step By Step',
'duration': '4:17',
'seqNo': 1,
courseId: 5
},
2: {
id: 2,
'description': 'Building Your First Component - Component Composition',
'duration': '2:07',
'seqNo': 2,
courseId: 5
},
3: {
id: 3,
'description': 'Component @Input - How To Pass Input Data To an Component',
'duration': '2:33',
'seqNo': 3,
courseId: 5
},
4: {
id: 4,
'description': ' Component Events - Using @Output to create custom events',
'duration': '4:44',
'seqNo': 4,
courseId: 5
},
5: {
id: 5,
'description': ' Component Templates - Inline Vs External',
'duration': '2:55',
'seqNo': 5,
courseId: 5
},
6: {
id: 6,
'description': 'Styling Components - Learn About Component Style Isolation',
'duration': '3:27',
'seqNo': 6,
courseId: 5
},
7: {
id: 7,
'description': ' Component Interaction - Extended Components Example',
'duration': '9:22',
'seqNo': 7,
courseId: 5
},
8: {
id: 8,
'description': ' Components Tutorial For Beginners - Components Exercise !',
'duration': '1:26',
'seqNo': 8,
courseId: 5
},
9: {
id: 9,
'description': ' Components Tutorial For Beginners - Components Exercise Solution Inside',
'duration': '2:08',
'seqNo': 9,
courseId: 5
},
10: {
id: 10,
'description': ' Directives - Inputs, Output Event Emitters and How To Export Template References',
'duration': '4:01',
'seqNo': 10,
courseId: 5
},
// Security Course
11: {
id: 11,
'description': 'Course Helicopter View',
'duration': '08:19',
'seqNo': 1,
courseId: 6
},
12: {
id: 12,
'description': 'Installing Git, Node, NPM and Choosing an IDE',
'duration': '04:17',
'seqNo': 2,
courseId: 6
},
13: {
id: 13,
'description': 'Installing The Lessons Code - Learn Why Its Essential To Use NPM 5',
'duration': '06:05',
'seqNo': 3,
courseId: 6
},
14: {
id: 14,
'description': 'How To Run Node In TypeScript With Hot Reloading',
'duration': '03:57',
'seqNo': 4,
courseId: 6
},
15: {
id: 15,
'description': 'Guided Tour Of The Sample Application',
'duration': '06:00',
'seqNo': 5,
courseId: 6
},
16: {
id: 16,
'description': 'Client Side Authentication Service - API Design',
'duration': '04:53',
'seqNo': 6,
courseId: 6
},
17: {
id: 17,
'description': 'Client Authentication Service - Design and Implementation',
'duration': '09:14',
'seqNo': 7,
courseId: 6
},
18: {
id: 18,
'description': 'The New Angular HTTP Client - Doing a POST Call To The Server',
'duration': '06:08',
'seqNo': 8,
courseId: 6
},
19: {
id: 19,
'description': 'User Sign Up Server-Side Implementation in Express',
'duration': '08:50',
'seqNo': 9,
courseId: 6
},
20: {
id: 20,
'description': 'Introduction To Cryptographic Hashes - A Running Demo',
'duration': '05:46',
'seqNo': 10,
courseId: 6
},
21: {
id: 21,
'description': 'Some Interesting Properties Of Hashing Functions - Validating Passwords',
'duration': '06:31',
'seqNo': 11,
courseId: 6
},
// PWA course
22: {
id: 22,
'description': 'Course Kick-Off - Install Node, NPM, IDE And Service Workers Section Code',
'duration': '07:19',
'seqNo': 1,
courseId: 7
},
23: {
id: 23,
'description': 'Service Workers In a Nutshell - Service Worker Registration',
'duration': '6:59',
'seqNo': 2,
courseId: 7
},
24: {
id: 24,
'description': 'Service Workers Hello World - Lifecycle Part 1 and PWA Chrome Dev Tools',
'duration': '7:28',
'seqNo': 3,
courseId: 7
},
25: {
id: 25,
'description': 'Service Workers and Application Versioning - Install & Activate Lifecycle Phases',
'duration': '10:17',
'seqNo': 4,
courseId: 7
},
26: {
id: 26,
'description': 'Downloading The Offline Page - The Service Worker Installation Phase',
'duration': '09:50',
'seqNo': 5,
courseId: 7
},
27: {
id: 27,
'description': 'Introduction to the Cache Storage PWA API',
'duration': '04:44',
'seqNo': 6,
courseId: 7
},
28: {
id: 28,
'description': 'View Service Workers HTTP Interception Features In Action',
'duration': '06:07',
'seqNo': 7,
courseId: 7
},
29: {
id: 29,
'description': 'Service Workers Error Handling - Serving The Offline Page',
'duration': '5:38',
'seqNo': 8,
courseId: 7
},
// Serverless Angular with Firebase Course
30: {
id: 30,
description: 'Development Environment Setup',
'duration': '5:38',
'seqNo': 1,
courseId: 1
},
31: {
id: 31,
description: 'Introduction to the Firebase Ecosystem',
'duration': '5:12',
'seqNo': 2,
courseId: 1
},
32: {
id: 32,
description: 'Importing Data into Firestore',
'duration': '4:07',
'seqNo': 3,
courseId: 1
},
33: {
id: 33,
description: 'Firestore Documents in Detail',
'duration': '7:32',
'seqNo': 4,
courseId: 1
},
34: {
id: 34,
description: 'Firestore Collections in Detail',
'duration': '6:28',
'seqNo': 5,
courseId: 1
},
35: {
id: 35,
description: 'Firestore Unique Identifiers',
'duration': '4:38',
'seqNo': 6,
courseId: 1
},
36: {
id: 36,
description: 'Querying Firestore Collections',
'duration': '7:54',
'seqNo': 7,
courseId: 1
},
37: {
id: 37,
description: 'Firebase Security Rules In Detail',
'duration': '5:31',
'seqNo': 8,
courseId: 1
},
38: {
id: 38,
description: 'Firebase Cloud Functions In Detail',
'duration': '8:19',
'seqNo': 9,
courseId: 1
},
39: {
id: 39,
description: 'Firebase Storage In Detail',
'duration': '7:05',
'seqNo': 10,
courseId: 1
},
// Angular Testing Course
40: {
id: 40,
description: 'Angular Testing Course - Helicopter View',
'duration': '5:38',
'seqNo': 1,
courseId: 12
},
41: {
id: 41,
description: 'Setting Up the Development Environment',
'duration': '5:12',
'seqNo': 2,
courseId: 12
},
42: {
id: 42,
description: 'Introduction to Jasmine, Spies and specs',
'duration': '4:07',
'seqNo': 3,
courseId: 12
},
43: {
id: 43,
description: 'Introduction to Service Testing',
'duration': '7:32',
'seqNo': 4,
courseId: 12
},
44: {
id: 44,
description: 'Settting up the Angular TestBed',
'duration': '6:28',
'seqNo': 5,
courseId: 12
},
45: {
id: 45,
description: 'Mocking Angular HTTP requests',
'duration': '4:38',
'seqNo': 6,
courseId: 12
},
46: {
id: 46,
description: 'Simulating Failing HTTP Requests',
'duration': '7:54',
'seqNo': 7,
courseId: 12
},
47: {
id: 47,
description: 'Introduction to Angular Component Testing',
'duration': '5:31',
'seqNo': 8,
courseId: 12
},
48: {
id: 48,
description: 'Testing Angular Components without the DOM',
'duration': '8:19',
'seqNo': 9,
courseId: 12
},
49: {
id: 49,
description: 'Testing Angular Components with the DOM',
'duration': '7:05',
'seqNo': 10,
courseId: 12
},
// Ngrx Course
50: {
id: 50,
"description": "Welcome to the Angular Ngrx Course",
"duration": "6:53",
"seqNo": 1,
courseId: 4
},
51: {
id: 51,
"description": "The Angular Ngrx Architecture Course - Helicopter View",
"duration": "5:52",
"seqNo": 2,
courseId: 4
},
52: {
id: 52,
"description": "The Origins of Flux - Understanding the Famous Facebook Bug Problem",
"duration": "8:17",
"seqNo": 3,
courseId: 4
},
53: {
id: 53,
"description": "Custom Global Events - Why Don't They Scale In Complexity?",
"duration": "7:47",
"seqNo": 4,
courseId: 4
},
54: {
id: 54,
"description": "The Flux Architecture - How Does it Solve Facebook Counter Problem?",
"duration": "9:22",
"seqNo": 5,
courseId: 4
},
55: {
id: 55,
"description": "Unidirectional Data Flow And The Angular Development Mode",
"duration": "7:07",
"seqNo": 6,
courseId: 4
},
56: {
id: 56,
"description": "Dispatching an Action - Implementing the Login Component",
"duration": "4:39",
"seqNo": 7,
courseId: 4
},
57: {
id: 57,
"description": "Setting Up the Ngrx DevTools - Demo",
"duration": "4:44",
"seqNo": 8,
courseId: 4
},
58: {
id: 58,
"description": "Understanding Reducers - Writing Our First Reducer",
"duration": "9:10",
"seqNo": 9,
courseId: 4
},
59: {
id: 59,
"description": "How To Define the Store Initial AppState",
"duration": "9:10",
"seqNo": 10,
courseId: 4
}
};
export function findCourseById(courseId: number) {
return COURSES[courseId];
}
export function findLessonsForCourse(courseId: number) {
return Object.values(LESSONS).filter(lesson => lesson.courseId == courseId);
}
export function authenticate(email: string, password: string) {
const user: any = Object.values(USERS).find(user => user.email === email);
if (user && user.password == password) {
return user;
} else {
return undefined;
}
}