| "extractLicenses": false, | "extractLicenses": false, | ||||
| "vendorChunk": false, | "vendorChunk": false, | ||||
| "buildOptimizer": true, | "buildOptimizer": true, | ||||
| "fileReplacements": [{ | |||||
| "replace": "src/environments/environment.ts", | |||||
| "with": "src/environments/environment.prod.ts" | |||||
| }], | |||||
| "serviceWorker": true, | "serviceWorker": true, | ||||
| "ngswConfigPath": "ngsw-config.json" | "ngswConfigPath": "ngsw-config.json" | ||||
| } | } |
| "resources": { | "resources": { | ||||
| "files": [ | "files": [ | ||||
| "/assets/**", | "/assets/**", | ||||
| "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)", | |||||
| "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)" | |||||
| ] | ] | ||||
| } | } | ||||
| } | } |
| import { NgModule } from '@angular/core'; | import { NgModule } from '@angular/core'; | ||||
| import { RouterModule, Routes } from '@angular/router'; | import { RouterModule, Routes } from '@angular/router'; | ||||
| import { environment } from 'environments/environment'; | |||||
| import { NotFoundComponent } from 'app/pages/not-found/not-found.component'; | import { NotFoundComponent } from 'app/pages/not-found/not-found.component'; | ||||
| import { ResumeComponent } from './pages/resume/resume.component'; | import { ResumeComponent } from './pages/resume/resume.component'; | ||||
| import { GamesDashboardComponent } from './pages/games-dashboard/games-dashboard.component'; | import { GamesDashboardComponent } from './pages/games-dashboard/games-dashboard.component'; | ||||
| @NgModule({ | @NgModule({ | ||||
| imports: [ | imports: [ | ||||
| RouterModule.forRoot(routes, { | RouterModule.forRoot(routes, { | ||||
| enableTracing: !environment.production | |||||
| enableTracing: false | |||||
| }), | }), | ||||
| ], | ], | ||||
| exports: [RouterModule] | exports: [RouterModule] |
| import { PdfHeaderComponent } from './page-header/pdf-header/pdf-header.component'; | import { PdfHeaderComponent } from './page-header/pdf-header/pdf-header.component'; | ||||
| import { MusicHeaderComponent } from './page-header/music-header/music-header.component'; | import { MusicHeaderComponent } from './page-header/music-header/music-header.component'; | ||||
| import { ServiceWorkerModule } from '@angular/service-worker'; | import { ServiceWorkerModule } from '@angular/service-worker'; | ||||
| import { environment } from '../environments/environment'; | |||||
| @NgModule({ | @NgModule({ | ||||
| AppRoutingModule, | AppRoutingModule, | ||||
| ComponentsModule, | ComponentsModule, | ||||
| PageHeaderModule, | PageHeaderModule, | ||||
| ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }), | |||||
| ServiceWorkerModule.register('ngsw-worker.js', { enabled: true }), | |||||
| ], | ], | ||||
| providers: [], | providers: [], | ||||
| bootstrap: [AppComponent] | bootstrap: [AppComponent] |
| export namespace ServiceHelper { | |||||
| export class GenericHelper { | |||||
| public static deepClone(obj: Object) { | |||||
| return JSON.parse(JSON.stringify(obj)); | |||||
| } | |||||
| } | |||||
| export const SPOTIFY_STAUS_CODES = { | |||||
| OK: 200, | |||||
| CREATED: 201, | |||||
| ACCEPTED: 202, | |||||
| NO_CONTENT: 204, | |||||
| NOT_MODIFIED: 304, | |||||
| BAD_REQUEST: 400, | |||||
| UNAUTHORIZED: 401, | |||||
| FORBIDDEN: 403, | |||||
| NOT_FOUND: 404, | |||||
| TOO_MANY: 429, | |||||
| INTERNAL: 500, | |||||
| BAD_GATEWAY: 502, | |||||
| SERVICE_UNAVAILABLE: 503, | |||||
| } | |||||
| export class PaginationOptions { limit: number; offset: number; total: number; current: number; }; | |||||
| export class OfssetHelper { | |||||
| /** | |||||
| * Exptract Offset from URL. | |||||
| * | |||||
| * @param url url with offset GET Param | |||||
| * @returns offset if found if not -1 | |||||
| */ | |||||
| public getNextOffsetFromUrl(url: string): number { | |||||
| const extractOffsetRegex = /(?:offset=)(\d+)/; | |||||
| const offset = extractOffsetRegex.exec(url); | |||||
| if (offset[1]) { | |||||
| return parseInt(offset[1]); | |||||
| } | |||||
| return -1 | |||||
| } | |||||
| public getNextOffset(responseBody: PaginationOptions) { | |||||
| const maxOffset = responseBody.total - responseBody.limit; | |||||
| if ( | |||||
| responseBody.total <= responseBody.limit || | |||||
| responseBody.offset >= responseBody.limit || | |||||
| responseBody.offset >= maxOffset | |||||
| ) { | |||||
| return -1; | |||||
| } | |||||
| if (responseBody.offset < 0) { | |||||
| throw new Error("offset can't be smaller than 0!"); | |||||
| } | |||||
| // if limit + current offset not overflows maxOffset return | |||||
| if ((responseBody.limit + responseBody.offset) <= maxOffset) { | |||||
| return responseBody.limit + responseBody.offset; | |||||
| } | |||||
| // return the rest | |||||
| return responseBody.limit % responseBody.total; | |||||
| } | |||||
| } | |||||
| } | |||||
| export const environment = { | |||||
| production: true | |||||
| }; |
| // The file contents for the current environment will overwrite these during build. | |||||
| // The build system defaults to the dev environment which uses `environment.ts`, but if you do | |||||
| // `ng build --env=prod` then `environment.prod.ts` will be used instead. | |||||
| // The list of which env maps to which file can be found in `.angular-cli.json`. | |||||
| export const environment = { | |||||
| production: false | |||||
| }; |
| import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; | ||||
| import { AppModule } from './app/app.module'; | import { AppModule } from './app/app.module'; | ||||
| import { environment } from './environments/environment'; | |||||
| if (environment.production) { | |||||
| enableProdMode(); | |||||
| } | |||||
| enableProdMode(); | |||||
| platformBrowserDynamic().bootstrapModule(AppModule); | platformBrowserDynamic().bootstrapModule(AppModule); |