├── .gitignore ├── Dockerfile ├── README.md ├── db.json ├── favicon.ico ├── package.json ├── public ├── assets │ └── github-circle-white-transparent.svg ├── favicon.ico ├── index.html ├── inline.bundle.js ├── inline.bundle.js.map ├── main.bundle.js ├── main.bundle.js.map ├── polyfills.bundle.js ├── polyfills.bundle.js.map ├── styles.bundle.js ├── styles.bundle.js.map ├── vendor.bundle.js └── vendor.bundle.js.map ├── src └── api │ ├── app.ts │ ├── controllers │ ├── ListController.ts │ ├── SettingsController.ts │ ├── SonarrController.ts │ ├── TraktTVController.ts │ └── index.ts │ ├── enums │ ├── ListTypesEnum.ts │ └── index.ts │ ├── index.ts │ ├── repositories │ ├── DBRepository.ts │ ├── SettingsDBRepository.ts │ ├── SonarrRepository.ts │ ├── TraktTVRepository.ts │ └── index.ts │ └── services │ ├── ListService.ts │ ├── SettingsService.ts │ ├── SonarrService.ts │ ├── SyncRunnerService.ts │ ├── TraktTVService.ts │ └── index.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .vscode 3 | build/ 4 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:latest 2 | 3 | WORKDIR / 4 | ADD . / 5 | EXPOSE 9500 6 | RUN npm install 7 | CMD ["npm", "run", "dev"] 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sonarr Trakt TV 2 | 3 | ## Introduction 4 | Sonarr Trakt TV is a program that monitors any trakt.tv watch, trending, popular, or popular list and adds the shows/seasons to Sonarr. 5 | 6 | ## Cloning from github 7 | ```bash 8 | # Clone repository, remove .git folder 9 | git clone https://github.com/preram48/sonarr-trakt-tv.git 10 | 11 | # Enter project directory 12 | cd sonarr-trakt-tv 13 | 14 | # Install dependencies 15 | npm install 16 | npm install -g typescript 17 | 18 | # Compile TypeScript to JavaScript 19 | tsc 20 | ``` 21 | 22 | ## Running the server 23 | Once installed, you can run the server using one of the following options: 24 | ```bash 25 | npm run dev 26 | ``` 27 | 28 | Go to localhost:9500 29 | 30 | ## Docker 31 | ```bash 32 | docker build -t preram48/sonarr-trakt-tv . 33 | docker run --net="host" -d preram48/sonarr-trakt-tv 34 | ``` 35 | 36 | ## Commands 37 | 38 | These commands are available in `package.json`. 39 | 40 | ```bash 41 | npm test # test using Jest 42 | npm run test:unit # run unit tests 43 | npm run test:integration # run integration tests 44 | npm run coverage # test and open the coverage report in the browser 45 | npm run lint # lint using ESLint 46 | npm run dev # run the API in development mode 47 | npm run prod # run the API in production mode 48 | npm run docs # generate API docs 49 | ``` 50 | 51 | ## Walkthrough 52 | 53 | ### Setting up Sonarr Settings 54 | 55 | Enter in your hostname, port, and api key for you local sonarr instance in the settings tab. These `Settings` are used for the watchlist sync. 56 | 57 | ![alt text](https://i.imgur.com/UTXizSk.png "Settings tab") 58 | 59 | ### Creating a Watchlist 60 | 1. On the `List` tab click the `+` button 61 | 2. Enter in a name that you would like to call your watchlist 62 | 3. Select the list type 63 | 4. Select the quality profile you want to use for this list 64 | 5. Select the folder you want Sonarr to store your shows 65 | 6. Enter in the trakt.tv username for the watchlist 66 | 67 | ![alt text](https://i.imgur.com/3epaq74.png "List tab") 68 | -------------------------------------------------------------------------------- /db.json: -------------------------------------------------------------------------------- 1 | {"list":{},"settings":{"f2d8fa10-c485-11e7-bbfc-53917b936135":{"hostname":"localhost","port":"8989","apiKey":"","interval":"60","id":"f2d8fa10-c485-11e7-bbfc-53917b936135"}}} -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preram48/sonarr-trakt-tv/9a224f54604a572ae95f367db4d27d8879ceffe4/favicon.ico -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sonarr-trakt-tv", 3 | "version": "0.0.0", 4 | "main": "src", 5 | "private": true, 6 | "scripts": { 7 | "nodemon": "nodemon -r dotenv/config --delay 1500ms --watch dev.env --watch ./build \"./build/app.js\" dotenv_config_path=dev.env", 8 | "tsc-watch": "tsc -w", 9 | "dev": "concurrently \"npm run tsc-watch\" \"npm run nodemon\"" 10 | }, 11 | "jest": { 12 | "testEnvironment": "node", 13 | "setupTestFrameworkScriptFile": "/test/setup.js" 14 | }, 15 | "devDependencies": { 16 | "apidoc": "^0.16.1", 17 | "apidoc-markdown": "^0.2.0", 18 | "concurrently": "^3.5.0", 19 | "cross-env": "^3.1.3", 20 | "dotenv-safe": "^4.0.3", 21 | "nock": "^9.0.2", 22 | "nodemon": "^1.12.1", 23 | "opn-cli": "^3.1.0", 24 | "sinon": "^1.17.5", 25 | "supertest": "^2.0.0", 26 | "supertest-as-promised": "^4.0.0", 27 | "tsc-watch": "^1.0.8", 28 | "typescript": "^2.6.1" 29 | }, 30 | "dependencies": { 31 | "@types/express": "^4.0.39", 32 | "bluebird": "^3.4.0", 33 | "body-parser": "^1.15.1", 34 | "bodymen": "^1.0.1", 35 | "class-transformer": "^0.1.8", 36 | "compression": "^1.6.2", 37 | "cors": "^2.7.1", 38 | "express": "^4.13.4", 39 | "inversify": "^4.3.0", 40 | "inversify-express-utils": "^4.0.1", 41 | "morgan": "^1.7.0", 42 | "node-json-db": "^0.7.3", 43 | "querymen": "^2.0.0", 44 | "reflect-metadata": "^0.1.10", 45 | "requestify": "^0.2.5", 46 | "trakt.tv": "^6.0.1", 47 | "uuid": "^3.1.0" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /public/assets/github-circle-white-transparent.svg: -------------------------------------------------------------------------------- 1 | github-circle-white-transparent -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/preram48/sonarr-trakt-tv/9a224f54604a572ae95f367db4d27d8879ceffe4/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SonarrTraktTvUi 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /public/inline.bundle.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // install a JSONP callback for chunk loading 3 | /******/ var parentJsonpFunction = window["webpackJsonp"]; 4 | /******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) { 5 | /******/ // add "moreModules" to the modules object, 6 | /******/ // then flag all "chunkIds" as loaded and fire callback 7 | /******/ var moduleId, chunkId, i = 0, resolves = [], result; 8 | /******/ for(;i < chunkIds.length; i++) { 9 | /******/ chunkId = chunkIds[i]; 10 | /******/ if(installedChunks[chunkId]) { 11 | /******/ resolves.push(installedChunks[chunkId][0]); 12 | /******/ } 13 | /******/ installedChunks[chunkId] = 0; 14 | /******/ } 15 | /******/ for(moduleId in moreModules) { 16 | /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { 17 | /******/ modules[moduleId] = moreModules[moduleId]; 18 | /******/ } 19 | /******/ } 20 | /******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules); 21 | /******/ while(resolves.length) { 22 | /******/ resolves.shift()(); 23 | /******/ } 24 | /******/ if(executeModules) { 25 | /******/ for(i=0; i < executeModules.length; i++) { 26 | /******/ result = __webpack_require__(__webpack_require__.s = executeModules[i]); 27 | /******/ } 28 | /******/ } 29 | /******/ return result; 30 | /******/ }; 31 | /******/ 32 | /******/ // The module cache 33 | /******/ var installedModules = {}; 34 | /******/ 35 | /******/ // objects to store loaded and loading chunks 36 | /******/ var installedChunks = { 37 | /******/ "inline": 0 38 | /******/ }; 39 | /******/ 40 | /******/ // The require function 41 | /******/ function __webpack_require__(moduleId) { 42 | /******/ 43 | /******/ // Check if module is in cache 44 | /******/ if(installedModules[moduleId]) { 45 | /******/ return installedModules[moduleId].exports; 46 | /******/ } 47 | /******/ // Create a new module (and put it into the cache) 48 | /******/ var module = installedModules[moduleId] = { 49 | /******/ i: moduleId, 50 | /******/ l: false, 51 | /******/ exports: {} 52 | /******/ }; 53 | /******/ 54 | /******/ // Execute the module function 55 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 56 | /******/ 57 | /******/ // Flag the module as loaded 58 | /******/ module.l = true; 59 | /******/ 60 | /******/ // Return the exports of the module 61 | /******/ return module.exports; 62 | /******/ } 63 | /******/ 64 | /******/ // This file contains only the entry chunk. 65 | /******/ // The chunk loading function for additional chunks 66 | /******/ __webpack_require__.e = function requireEnsure(chunkId) { 67 | /******/ var installedChunkData = installedChunks[chunkId]; 68 | /******/ if(installedChunkData === 0) { 69 | /******/ return new Promise(function(resolve) { resolve(); }); 70 | /******/ } 71 | /******/ 72 | /******/ // a Promise means "currently loading". 73 | /******/ if(installedChunkData) { 74 | /******/ return installedChunkData[2]; 75 | /******/ } 76 | /******/ 77 | /******/ // setup Promise in chunk cache 78 | /******/ var promise = new Promise(function(resolve, reject) { 79 | /******/ installedChunkData = installedChunks[chunkId] = [resolve, reject]; 80 | /******/ }); 81 | /******/ installedChunkData[2] = promise; 82 | /******/ 83 | /******/ // start chunk loading 84 | /******/ var head = document.getElementsByTagName('head')[0]; 85 | /******/ var script = document.createElement('script'); 86 | /******/ script.type = 'text/javascript'; 87 | /******/ script.charset = 'utf-8'; 88 | /******/ script.async = true; 89 | /******/ script.timeout = 120000; 90 | /******/ 91 | /******/ if (__webpack_require__.nc) { 92 | /******/ script.setAttribute("nonce", __webpack_require__.nc); 93 | /******/ } 94 | /******/ script.src = __webpack_require__.p + "" + chunkId + ".chunk.js"; 95 | /******/ var timeout = setTimeout(onScriptComplete, 120000); 96 | /******/ script.onerror = script.onload = onScriptComplete; 97 | /******/ function onScriptComplete() { 98 | /******/ // avoid mem leaks in IE. 99 | /******/ script.onerror = script.onload = null; 100 | /******/ clearTimeout(timeout); 101 | /******/ var chunk = installedChunks[chunkId]; 102 | /******/ if(chunk !== 0) { 103 | /******/ if(chunk) { 104 | /******/ chunk[1](new Error('Loading chunk ' + chunkId + ' failed.')); 105 | /******/ } 106 | /******/ installedChunks[chunkId] = undefined; 107 | /******/ } 108 | /******/ }; 109 | /******/ head.appendChild(script); 110 | /******/ 111 | /******/ return promise; 112 | /******/ }; 113 | /******/ 114 | /******/ // expose the modules object (__webpack_modules__) 115 | /******/ __webpack_require__.m = modules; 116 | /******/ 117 | /******/ // expose the module cache 118 | /******/ __webpack_require__.c = installedModules; 119 | /******/ 120 | /******/ // define getter function for harmony exports 121 | /******/ __webpack_require__.d = function(exports, name, getter) { 122 | /******/ if(!__webpack_require__.o(exports, name)) { 123 | /******/ Object.defineProperty(exports, name, { 124 | /******/ configurable: false, 125 | /******/ enumerable: true, 126 | /******/ get: getter 127 | /******/ }); 128 | /******/ } 129 | /******/ }; 130 | /******/ 131 | /******/ // getDefaultExport function for compatibility with non-harmony modules 132 | /******/ __webpack_require__.n = function(module) { 133 | /******/ var getter = module && module.__esModule ? 134 | /******/ function getDefault() { return module['default']; } : 135 | /******/ function getModuleExports() { return module; }; 136 | /******/ __webpack_require__.d(getter, 'a', getter); 137 | /******/ return getter; 138 | /******/ }; 139 | /******/ 140 | /******/ // Object.prototype.hasOwnProperty.call 141 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 142 | /******/ 143 | /******/ // __webpack_public_path__ 144 | /******/ __webpack_require__.p = ""; 145 | /******/ 146 | /******/ // on error function for async loading 147 | /******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; 148 | /******/ }) 149 | /************************************************************************/ 150 | /******/ ([]); 151 | //# sourceMappingURL=inline.bundle.js.map -------------------------------------------------------------------------------- /public/inline.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack/bootstrap 30516b464e41b77267b5"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAY,2BAA2B;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAA0C,WAAW,EAAE;AACvD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA,kDAA0C,oBAAoB,WAAW","file":"inline.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t\"inline\": 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".chunk.js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 30516b464e41b77267b5"],"sourceRoot":"webpack:///"} -------------------------------------------------------------------------------- /public/main.bundle.js: -------------------------------------------------------------------------------- 1 | webpackJsonp(["main"],{ 2 | 3 | /***/ "../../../../../src/$$_lazy_route_resource lazy recursive": 4 | /***/ (function(module, exports) { 5 | 6 | function webpackEmptyAsyncContext(req) { 7 | // Here Promise.resolve().then() is used instead of new Promise() to prevent 8 | // uncatched exception popping up in devtools 9 | return Promise.resolve().then(function() { 10 | throw new Error("Cannot find module '" + req + "'."); 11 | }); 12 | } 13 | webpackEmptyAsyncContext.keys = function() { return []; }; 14 | webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; 15 | module.exports = webpackEmptyAsyncContext; 16 | webpackEmptyAsyncContext.id = "../../../../../src/$$_lazy_route_resource lazy recursive"; 17 | 18 | /***/ }), 19 | 20 | /***/ "../../../../../src/app/app.component.css": 21 | /***/ (function(module, exports, __webpack_require__) { 22 | 23 | exports = module.exports = __webpack_require__("../../../../css-loader/lib/css-base.js")(false); 24 | // imports 25 | 26 | 27 | // module 28 | exports.push([module.i, ".container{\n max-width: 900px;\n margin: auto;\n width: 100%;\n margin-top: 150px;\n}", ""]); 29 | 30 | // exports 31 | 32 | 33 | /*** EXPORTS FROM exports-loader ***/ 34 | module.exports = module.exports.toString(); 35 | 36 | /***/ }), 37 | 38 | /***/ "../../../../../src/app/app.component.html": 39 | /***/ (function(module, exports) { 40 | 41 | module.exports = "\n\n
\n \n \n \n \n \n \n \n \n
" 42 | 43 | /***/ }), 44 | 45 | /***/ "../../../../../src/app/app.component.ts": 46 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 47 | 48 | "use strict"; 49 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AppComponent; }); 50 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 51 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 52 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 53 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 54 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 55 | return c > 3 && r && Object.defineProperty(target, key, r), r; 56 | }; 57 | 58 | var AppComponent = (function () { 59 | function AppComponent() { 60 | this.title = 'app'; 61 | } 62 | AppComponent = __decorate([ 63 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({ 64 | selector: 'app-root', 65 | template: __webpack_require__("../../../../../src/app/app.component.html"), 66 | styles: [__webpack_require__("../../../../../src/app/app.component.css")] 67 | }) 68 | ], AppComponent); 69 | return AppComponent; 70 | }()); 71 | 72 | 73 | 74 | /***/ }), 75 | 76 | /***/ "../../../../../src/app/app.module.ts": 77 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 78 | 79 | "use strict"; 80 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AppModule; }); 81 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_platform_browser__ = __webpack_require__("../../../platform-browser/esm5/platform-browser.js"); 82 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_forms__ = __webpack_require__("../../../forms/esm5/forms.js"); 83 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__angular_http__ = __webpack_require__("../../../http/esm5/http.js"); 84 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 85 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__angular_platform_browser_animations__ = __webpack_require__("../../../platform-browser/esm5/animations.js"); 86 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__angular_material__ = __webpack_require__("../../../material/esm5/material.es5.js"); 87 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__app_component__ = __webpack_require__("../../../../../src/app/app.component.ts"); 88 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__list_list_component__ = __webpack_require__("../../../../../src/app/list/list.component.ts"); 89 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__settings_settings_component__ = __webpack_require__("../../../../../src/app/settings/settings.component.ts"); 90 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__list_dialog_list_dialog_component__ = __webpack_require__("../../../../../src/app/list-dialog/list-dialog.component.ts"); 91 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__banner_banner_component__ = __webpack_require__("../../../../../src/app/banner/banner.component.ts"); 92 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 93 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 94 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 95 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 96 | return c > 3 && r && Object.defineProperty(target, key, r), r; 97 | }; 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | var AppModule = (function () { 110 | function AppModule() { 111 | } 112 | AppModule = __decorate([ 113 | Object(__WEBPACK_IMPORTED_MODULE_3__angular_core__["H" /* NgModule */])({ 114 | declarations: [ 115 | __WEBPACK_IMPORTED_MODULE_6__app_component__["a" /* AppComponent */], 116 | __WEBPACK_IMPORTED_MODULE_7__list_list_component__["a" /* ListComponent */], 117 | __WEBPACK_IMPORTED_MODULE_8__settings_settings_component__["a" /* SettingsComponent */], 118 | __WEBPACK_IMPORTED_MODULE_9__list_dialog_list_dialog_component__["a" /* ListDialogComponent */], 119 | __WEBPACK_IMPORTED_MODULE_10__banner_banner_component__["a" /* BannerComponent */] 120 | ], 121 | imports: [ 122 | __WEBPACK_IMPORTED_MODULE_0__angular_platform_browser__["a" /* BrowserModule */], 123 | __WEBPACK_IMPORTED_MODULE_1__angular_forms__["c" /* FormsModule */], 124 | __WEBPACK_IMPORTED_MODULE_2__angular_http__["b" /* HttpModule */], 125 | __WEBPACK_IMPORTED_MODULE_4__angular_platform_browser_animations__["a" /* NoopAnimationsModule */], 126 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["b" /* MatAutocompleteModule */], 127 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["c" /* MatButtonModule */], 128 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["d" /* MatButtonToggleModule */], 129 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["e" /* MatCardModule */], 130 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["f" /* MatCheckboxModule */], 131 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["g" /* MatChipsModule */], 132 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["h" /* MatDatepickerModule */], 133 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["j" /* MatDialogModule */], 134 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["l" /* MatExpansionModule */], 135 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["m" /* MatGridListModule */], 136 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["n" /* MatIconModule */], 137 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["o" /* MatInputModule */], 138 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["p" /* MatListModule */], 139 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["q" /* MatMenuModule */], 140 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["r" /* MatNativeDateModule */], 141 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["s" /* MatPaginatorModule */], 142 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["t" /* MatProgressBarModule */], 143 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["u" /* MatProgressSpinnerModule */], 144 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["v" /* MatRadioModule */], 145 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["w" /* MatRippleModule */], 146 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["x" /* MatSelectModule */], 147 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["y" /* MatSidenavModule */], 148 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["A" /* MatSliderModule */], 149 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["z" /* MatSlideToggleModule */], 150 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["B" /* MatSnackBarModule */], 151 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["C" /* MatSortModule */], 152 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["E" /* MatTableModule */], 153 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["F" /* MatTabsModule */], 154 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["G" /* MatToolbarModule */], 155 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["H" /* MatTooltipModule */], 156 | __WEBPACK_IMPORTED_MODULE_5__angular_material__["D" /* MatStepperModule */], 157 | ], 158 | providers: [], 159 | bootstrap: [__WEBPACK_IMPORTED_MODULE_6__app_component__["a" /* AppComponent */]], 160 | entryComponents: [__WEBPACK_IMPORTED_MODULE_9__list_dialog_list_dialog_component__["a" /* ListDialogComponent */]] 161 | }) 162 | ], AppModule); 163 | return AppModule; 164 | }()); 165 | 166 | 167 | 168 | /***/ }), 169 | 170 | /***/ "../../../../../src/app/banner/banner.component.css": 171 | /***/ (function(module, exports, __webpack_require__) { 172 | 173 | exports = module.exports = __webpack_require__("../../../../css-loader/lib/css-base.js")(false); 174 | // imports 175 | 176 | 177 | // module 178 | exports.push([module.i, ".banner {\n width: 100%;\n position: absolute;\n top: 0;\n left: 0;\n color: white;\n text-align: center;\n z-index: 1;\n font-family: Roboto;\n font-size: 18px;\n}\n\n.error.mat-toolbar {\n font-size: 14px;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.spacer {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n text-align: right;\n}\n", ""]); 179 | 180 | // exports 181 | 182 | 183 | /*** EXPORTS FROM exports-loader ***/ 184 | module.exports = module.exports.toString(); 185 | 186 | /***/ }), 187 | 188 | /***/ "../../../../../src/app/banner/banner.component.html": 189 | /***/ (function(module, exports) { 190 | 191 | module.exports = "
\n \n warning\n Lost connection with Sonarr. Try checking your Sonarr settings under the \"Settings\" tab.\n \n \n
\n \n \n \n
\n
\n
\n" 192 | 193 | /***/ }), 194 | 195 | /***/ "../../../../../src/app/banner/banner.component.ts": 196 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 197 | 198 | "use strict"; 199 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BannerComponent; }); 200 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 201 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__sonarr_service__ = __webpack_require__("../../../../../src/app/sonarr.service.ts"); 202 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 203 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 204 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 205 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 206 | return c > 3 && r && Object.defineProperty(target, key, r), r; 207 | }; 208 | var __metadata = (this && this.__metadata) || function (k, v) { 209 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 210 | }; 211 | 212 | 213 | var BannerComponent = (function () { 214 | function BannerComponent(sonarrService) { 215 | this.sonarrService = sonarrService; 216 | this.showErrorMessage = false; 217 | } 218 | BannerComponent.prototype.ngOnInit = function () { 219 | var _this = this; 220 | setInterval(function () { 221 | _this.healthCheck(); 222 | }, 10000); 223 | this.healthCheck(); 224 | }; 225 | BannerComponent.prototype.healthCheck = function () { 226 | var _this = this; 227 | this.sonarrService.fetchProfiles().subscribe(function () { 228 | _this.showErrorMessage = false; 229 | ; 230 | }, function () { 231 | _this.showErrorMessage = true; 232 | }); 233 | }; 234 | BannerComponent = __decorate([ 235 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({ 236 | selector: 'app-banner', 237 | template: __webpack_require__("../../../../../src/app/banner/banner.component.html"), 238 | styles: [__webpack_require__("../../../../../src/app/banner/banner.component.css")], 239 | providers: [__WEBPACK_IMPORTED_MODULE_1__sonarr_service__["a" /* SonarrService */]] 240 | }), 241 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__sonarr_service__["a" /* SonarrService */]]) 242 | ], BannerComponent); 243 | return BannerComponent; 244 | }()); 245 | 246 | 247 | 248 | /***/ }), 249 | 250 | /***/ "../../../../../src/app/list-dialog/list-dialog.component.css": 251 | /***/ (function(module, exports, __webpack_require__) { 252 | 253 | exports = module.exports = __webpack_require__("../../../../css-loader/lib/css-base.js")(false); 254 | // imports 255 | 256 | 257 | // module 258 | exports.push([module.i, ".mat-form-field {\n display: block;\n width: 350px;\n}\n\ndiv.primary {\n color: #c2185b;\n margin-top: 20px;\n}", ""]); 259 | 260 | // exports 261 | 262 | 263 | /*** EXPORTS FROM exports-loader ***/ 264 | module.exports = module.exports.toString(); 265 | 266 | /***/ }), 267 | 268 | /***/ "../../../../../src/app/list-dialog/list-dialog.component.html": 269 | /***/ (function(module, exports) { 270 | 271 | module.exports = "
\n \n
\n
\n \n \n \n \n \n \n {{ item.viewValue }}\n \n \n \n \n \n \n {{ profile.name }}\n \n \n \n \n \n \n {{ folder.path }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n
\n
\n Watchlist call was successful\n
\n
\n No results were returned\n
\n
" 272 | 273 | /***/ }), 274 | 275 | /***/ "../../../../../src/app/list-dialog/list-dialog.component.ts": 276 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 277 | 278 | "use strict"; 279 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ListDialogComponent; }); 280 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 281 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_material__ = __webpack_require__("../../../material/esm5/material.es5.js"); 282 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__list_service__ = __webpack_require__("../../../../../src/app/list.service.ts"); 283 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__sonarr_service__ = __webpack_require__("../../../../../src/app/sonarr.service.ts"); 284 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__trakt_service__ = __webpack_require__("../../../../../src/app/trakt.service.ts"); 285 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__shared_enums__ = __webpack_require__("../../../../../src/app/shared/enums/index.ts"); 286 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 287 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 288 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 289 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 290 | return c > 3 && r && Object.defineProperty(target, key, r), r; 291 | }; 292 | var __metadata = (this && this.__metadata) || function (k, v) { 293 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 294 | }; 295 | var __param = (this && this.__param) || function (paramIndex, decorator) { 296 | return function (target, key) { decorator(target, key, paramIndex); } 297 | }; 298 | 299 | 300 | 301 | 302 | 303 | 304 | var ListItem = (function () { 305 | function ListItem() { 306 | } 307 | return ListItem; 308 | }()); 309 | var ListDialogComponent = (function () { 310 | function ListDialogComponent(dialogRef, data, listService, sonarrService, traktService) { 311 | this.dialogRef = dialogRef; 312 | this.data = data; 313 | this.listService = listService; 314 | this.sonarrService = sonarrService; 315 | this.traktService = traktService; 316 | this.foundWatchlistResults = false; 317 | this.watchlistError = false; 318 | } 319 | ListDialogComponent.prototype.ngOnInit = function () { 320 | var _this = this; 321 | this.listItem = this.data; 322 | this.trakList = [{ 323 | value: __WEBPACK_IMPORTED_MODULE_5__shared_enums__["a" /* ListTypes */].Watchlist, 324 | viewValue: 'Watchlist', 325 | }, { 326 | value: __WEBPACK_IMPORTED_MODULE_5__shared_enums__["a" /* ListTypes */].Popular, 327 | viewValue: 'Popular', 328 | }, { 329 | value: __WEBPACK_IMPORTED_MODULE_5__shared_enums__["a" /* ListTypes */].Trending, 330 | viewValue: 'Trending', 331 | }, { 332 | value: __WEBPACK_IMPORTED_MODULE_5__shared_enums__["a" /* ListTypes */].Custom, 333 | viewValue: 'Custom', 334 | }]; 335 | this.sonarrService.fetchPaths().subscribe(function (folders) { return _this.folders = folders; }); 336 | this.sonarrService.fetchProfiles().subscribe(function (profiles) { return _this.profiles = profiles; }); 337 | }; 338 | ListDialogComponent.prototype.close = function () { 339 | this.dialogRef.close(); 340 | }; 341 | ListDialogComponent.prototype.saveList = function (item) { 342 | var _this = this; 343 | this.foundWatchlistResults = false; 344 | this.watchlistError = false; 345 | if (item.id) { 346 | this.listService.updateList(item.id, item).subscribe(function () { 347 | _this.close(); 348 | }); 349 | } 350 | else { 351 | item.enabled = true; 352 | this.listService.createList(item).subscribe(function () { 353 | _this.close(); 354 | }); 355 | } 356 | }; 357 | ListDialogComponent.prototype.testList = function (item) { 358 | var _this = this; 359 | this.foundWatchlistResults = false; 360 | this.watchlistError = false; 361 | var sub = null; 362 | switch (item.listType) { 363 | case __WEBPACK_IMPORTED_MODULE_5__shared_enums__["a" /* ListTypes */].Watchlist: 364 | sub = this.traktService.fetchWatchlist(item.username); 365 | break; 366 | case __WEBPACK_IMPORTED_MODULE_5__shared_enums__["a" /* ListTypes */].Popular: 367 | sub = this.traktService.fetchPopularShows(item.years, item.ratings, item.limit); 368 | break; 369 | case __WEBPACK_IMPORTED_MODULE_5__shared_enums__["a" /* ListTypes */].Trending: 370 | sub = this.traktService.fetchTrendingShows(item.years, item.ratings, item.limit); 371 | break; 372 | case __WEBPACK_IMPORTED_MODULE_5__shared_enums__["a" /* ListTypes */].Custom: 373 | sub = this.traktService.fetchCustomListShows(item.username, item.listName, item.years, item.ratings, item.limit); 374 | break; 375 | } 376 | sub.subscribe(function () { 377 | _this.foundWatchlistResults = true; 378 | }, function (error) { 379 | _this.watchlistError = true; 380 | }); 381 | }; 382 | ListDialogComponent = __decorate([ 383 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({ 384 | selector: 'app-list-dialog', 385 | template: __webpack_require__("../../../../../src/app/list-dialog/list-dialog.component.html"), 386 | styles: [__webpack_require__("../../../../../src/app/list-dialog/list-dialog.component.css")], 387 | providers: [__WEBPACK_IMPORTED_MODULE_2__list_service__["a" /* ListService */], __WEBPACK_IMPORTED_MODULE_3__sonarr_service__["a" /* SonarrService */], __WEBPACK_IMPORTED_MODULE_4__trakt_service__["a" /* TraktService */]] 388 | }), 389 | __param(1, Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["y" /* Inject */])(__WEBPACK_IMPORTED_MODULE_1__angular_material__["a" /* MAT_DIALOG_DATA */])), 390 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__angular_material__["k" /* MatDialogRef */], Object, __WEBPACK_IMPORTED_MODULE_2__list_service__["a" /* ListService */], 391 | __WEBPACK_IMPORTED_MODULE_3__sonarr_service__["a" /* SonarrService */], 392 | __WEBPACK_IMPORTED_MODULE_4__trakt_service__["a" /* TraktService */]]) 393 | ], ListDialogComponent); 394 | return ListDialogComponent; 395 | }()); 396 | 397 | 398 | 399 | /***/ }), 400 | 401 | /***/ "../../../../../src/app/list.service.ts": 402 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 403 | 404 | "use strict"; 405 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ListService; }); 406 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 407 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http__ = __webpack_require__("../../../http/esm5/http.js"); 408 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_add_operator_map__ = __webpack_require__("../../../../rxjs/_esm5/add/operator/map.js"); 409 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_mergeMap__ = __webpack_require__("../../../../rxjs/_esm5/add/operator/mergeMap.js"); 410 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 411 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 412 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 413 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 414 | return c > 3 && r && Object.defineProperty(target, key, r), r; 415 | }; 416 | var __metadata = (this && this.__metadata) || function (k, v) { 417 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 418 | }; 419 | 420 | 421 | 422 | 423 | var ListService = (function () { 424 | function ListService(http) { 425 | this.http = http; 426 | } 427 | ListService.prototype.fetchList = function () { 428 | return this.http.get("/api/list") 429 | .map(function (res) { return res.json(); }); 430 | }; 431 | ListService.prototype.updateList = function (id, body) { 432 | return this.http.put("/api/list/" + id, body) 433 | .map(function (res) { return res.json(); }); 434 | }; 435 | ListService.prototype.createList = function (body) { 436 | return this.http.post("/api/list", body) 437 | .map(function (res) { return res.json(); }); 438 | }; 439 | ListService.prototype.deleteList = function (id) { 440 | return this.http.delete("/api/list/" + id) 441 | .map(function (res) { return res.json(); }); 442 | }; 443 | ListService = __decorate([ 444 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["z" /* Injectable */])(), 445 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__angular_http__["a" /* Http */]]) 446 | ], ListService); 447 | return ListService; 448 | }()); 449 | 450 | 451 | 452 | /***/ }), 453 | 454 | /***/ "../../../../../src/app/list/list.component.css": 455 | /***/ (function(module, exports, __webpack_require__) { 456 | 457 | exports = module.exports = __webpack_require__("../../../../css-loader/lib/css-base.js")(false); 458 | // imports 459 | 460 | 461 | // module 462 | exports.push([module.i, ".fab-add {\n position: fixed !important;\n bottom: 50px !important;\n right: 50px !important;\n}\n\n.flex {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.mat-card {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n max-width: 350px;\n min-width: 350px;\n margin: 15px;\n}\n\n.mat-card-content {\n cursor: pointer;\n}\n", ""]); 463 | 464 | // exports 465 | 466 | 467 | /*** EXPORTS FROM exports-loader ***/ 468 | module.exports = module.exports.toString(); 469 | 470 | /***/ }), 471 | 472 | /***/ "../../../../../src/app/list/list.component.html": 473 | /***/ (function(module, exports) { 474 | 475 | module.exports = "
\n \n \n \n

{{listItem.name}}

\n
\n \n Enabled\n \n \n
\n \n \n

No List Found

\n
\n
\n
" 476 | 477 | /***/ }), 478 | 479 | /***/ "../../../../../src/app/list/list.component.ts": 480 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 481 | 482 | "use strict"; 483 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ListComponent; }); 484 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 485 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_material__ = __webpack_require__("../../../material/esm5/material.es5.js"); 486 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__list_dialog_list_dialog_component__ = __webpack_require__("../../../../../src/app/list-dialog/list-dialog.component.ts"); 487 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__list_service__ = __webpack_require__("../../../../../src/app/list.service.ts"); 488 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__sonarr_service__ = __webpack_require__("../../../../../src/app/sonarr.service.ts"); 489 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 490 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 491 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 492 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 493 | return c > 3 && r && Object.defineProperty(target, key, r), r; 494 | }; 495 | var __metadata = (this && this.__metadata) || function (k, v) { 496 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 497 | }; 498 | 499 | 500 | 501 | 502 | 503 | var ListItem = (function () { 504 | function ListItem() { 505 | } 506 | return ListItem; 507 | }()); 508 | var ListComponent = (function () { 509 | function ListComponent(listService, sonarrService, dialog) { 510 | this.listService = listService; 511 | this.sonarrService = sonarrService; 512 | this.dialog = dialog; 513 | this.list = new Array(); 514 | } 515 | ListComponent.prototype.ngOnInit = function () { 516 | var _this = this; 517 | this.listService.fetchList().subscribe(function (list) { return _this.list = list; }); 518 | }; 519 | ListComponent.prototype.addList = function () { 520 | this.openDialog(new ListItem()); 521 | }; 522 | ListComponent.prototype.deleteList = function (list) { 523 | if (list.id) { 524 | this.listService.deleteList(list.id).subscribe(function () { }); 525 | } 526 | this.list.splice(this.list.findIndex(function (element) { return element === list; }), 1); 527 | }; 528 | ListComponent.prototype.saveList = function (item, $event) { 529 | item.enabled = $event.checked; 530 | this.listService.updateList(item.id, item).subscribe(function () { }); 531 | }; 532 | ListComponent.prototype.openDialog = function (listItem) { 533 | var _this = this; 534 | var itemCopy = {}; 535 | Object.assign(itemCopy, listItem); 536 | var dialogRef = this.dialog.open(__WEBPACK_IMPORTED_MODULE_2__list_dialog_list_dialog_component__["a" /* ListDialogComponent */], { 537 | data: itemCopy 538 | }); 539 | dialogRef.afterClosed().subscribe(function (result) { 540 | _this.listService.fetchList().subscribe(function (list) { return _this.list = list; }); 541 | }); 542 | }; 543 | ListComponent = __decorate([ 544 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({ 545 | selector: 'app-list', 546 | template: __webpack_require__("../../../../../src/app/list/list.component.html"), 547 | styles: [__webpack_require__("../../../../../src/app/list/list.component.css")], 548 | providers: [__WEBPACK_IMPORTED_MODULE_3__list_service__["a" /* ListService */], __WEBPACK_IMPORTED_MODULE_4__sonarr_service__["a" /* SonarrService */]] 549 | }), 550 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_3__list_service__["a" /* ListService */], __WEBPACK_IMPORTED_MODULE_4__sonarr_service__["a" /* SonarrService */], __WEBPACK_IMPORTED_MODULE_1__angular_material__["i" /* MatDialog */]]) 551 | ], ListComponent); 552 | return ListComponent; 553 | }()); 554 | 555 | 556 | 557 | /***/ }), 558 | 559 | /***/ "../../../../../src/app/settings.service.ts": 560 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 561 | 562 | "use strict"; 563 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SettingsService; }); 564 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 565 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http__ = __webpack_require__("../../../http/esm5/http.js"); 566 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_add_operator_map__ = __webpack_require__("../../../../rxjs/_esm5/add/operator/map.js"); 567 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_mergeMap__ = __webpack_require__("../../../../rxjs/_esm5/add/operator/mergeMap.js"); 568 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 569 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 570 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 571 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 572 | return c > 3 && r && Object.defineProperty(target, key, r), r; 573 | }; 574 | var __metadata = (this && this.__metadata) || function (k, v) { 575 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 576 | }; 577 | 578 | 579 | 580 | 581 | var SettingsService = (function () { 582 | function SettingsService(http) { 583 | this.http = http; 584 | } 585 | SettingsService.prototype.fetchSettings = function () { 586 | return this.http.get("/api/settings") 587 | .map(function (res) { return res.json(); }); 588 | }; 589 | SettingsService.prototype.updateSettings = function (id, body) { 590 | return this.http.put("/api/settings/" + id, body) 591 | .map(function (res) { return res.json(); }); 592 | }; 593 | SettingsService.prototype.createSettings = function (body) { 594 | return this.http.post("/api/settings", body) 595 | .map(function (res) { return res.json(); }); 596 | }; 597 | SettingsService = __decorate([ 598 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["z" /* Injectable */])(), 599 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__angular_http__["a" /* Http */]]) 600 | ], SettingsService); 601 | return SettingsService; 602 | }()); 603 | 604 | 605 | 606 | /***/ }), 607 | 608 | /***/ "../../../../../src/app/settings/settings.component.css": 609 | /***/ (function(module, exports, __webpack_require__) { 610 | 611 | exports = module.exports = __webpack_require__("../../../../css-loader/lib/css-base.js")(false); 612 | // imports 613 | 614 | 615 | // module 616 | exports.push([module.i, "\n.settings mat-form-field {\n width: 50%;\n}", ""]); 617 | 618 | // exports 619 | 620 | 621 | /*** EXPORTS FROM exports-loader ***/ 622 | module.exports = module.exports.toString(); 623 | 624 | /***/ }), 625 | 626 | /***/ "../../../../../src/app/settings/settings.component.html": 627 | /***/ (function(module, exports) { 628 | 629 | module.exports = "
\n

Sonarr Settings

\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n
" 630 | 631 | /***/ }), 632 | 633 | /***/ "../../../../../src/app/settings/settings.component.ts": 634 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 635 | 636 | "use strict"; 637 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SettingsComponent; }); 638 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 639 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__settings_service__ = __webpack_require__("../../../../../src/app/settings.service.ts"); 640 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 641 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 642 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 643 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 644 | return c > 3 && r && Object.defineProperty(target, key, r), r; 645 | }; 646 | var __metadata = (this && this.__metadata) || function (k, v) { 647 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 648 | }; 649 | 650 | 651 | var Settings = (function () { 652 | function Settings() { 653 | } 654 | return Settings; 655 | }()); 656 | var SettingsComponent = (function () { 657 | function SettingsComponent(settingService) { 658 | this.settingService = settingService; 659 | this.settings = new Settings(); 660 | } 661 | SettingsComponent.prototype.ngOnInit = function () { 662 | var _this = this; 663 | this.settingService.fetchSettings().subscribe(function (settings) { return _this.settings = settings; }); 664 | }; 665 | SettingsComponent.prototype.saveSettings = function () { 666 | if (this.settings.id) { 667 | this.settingService.updateSettings(this.settings.id, this.settings).subscribe(function () { }); 668 | } 669 | else { 670 | this.settingService.createSettings(this.settings).subscribe(function () { }); 671 | } 672 | }; 673 | SettingsComponent = __decorate([ 674 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["m" /* Component */])({ 675 | selector: 'app-settings', 676 | template: __webpack_require__("../../../../../src/app/settings/settings.component.html"), 677 | styles: [__webpack_require__("../../../../../src/app/settings/settings.component.css")], 678 | providers: [__WEBPACK_IMPORTED_MODULE_1__settings_service__["a" /* SettingsService */]], 679 | encapsulation: __WEBPACK_IMPORTED_MODULE_0__angular_core__["_9" /* ViewEncapsulation */].None 680 | }), 681 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__settings_service__["a" /* SettingsService */]]) 682 | ], SettingsComponent); 683 | return SettingsComponent; 684 | }()); 685 | 686 | 687 | 688 | /***/ }), 689 | 690 | /***/ "../../../../../src/app/shared/enums/index.ts": 691 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 692 | 693 | "use strict"; 694 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__list_types_enum__ = __webpack_require__("../../../../../src/app/shared/enums/list-types.enum.ts"); 695 | /* harmony namespace reexport (by used) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__list_types_enum__["a"]; }); 696 | 697 | 698 | 699 | /***/ }), 700 | 701 | /***/ "../../../../../src/app/shared/enums/list-types.enum.ts": 702 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 703 | 704 | "use strict"; 705 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ListTypes; }); 706 | var ListTypes; 707 | (function (ListTypes) { 708 | ListTypes[ListTypes["Watchlist"] = 1] = "Watchlist"; 709 | ListTypes[ListTypes["Popular"] = 2] = "Popular"; 710 | ListTypes[ListTypes["Trending"] = 3] = "Trending"; 711 | ListTypes[ListTypes["Custom"] = 4] = "Custom"; 712 | })(ListTypes || (ListTypes = {})); 713 | 714 | 715 | /***/ }), 716 | 717 | /***/ "../../../../../src/app/sonarr.service.ts": 718 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 719 | 720 | "use strict"; 721 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SonarrService; }); 722 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 723 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http__ = __webpack_require__("../../../http/esm5/http.js"); 724 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_add_operator_map__ = __webpack_require__("../../../../rxjs/_esm5/add/operator/map.js"); 725 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_mergeMap__ = __webpack_require__("../../../../rxjs/_esm5/add/operator/mergeMap.js"); 726 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 727 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 728 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 729 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 730 | return c > 3 && r && Object.defineProperty(target, key, r), r; 731 | }; 732 | var __metadata = (this && this.__metadata) || function (k, v) { 733 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 734 | }; 735 | 736 | 737 | 738 | 739 | var SonarrService = (function () { 740 | function SonarrService(http) { 741 | this.http = http; 742 | } 743 | SonarrService.prototype.fetchPaths = function () { 744 | return this.http.get("/api/sonarr/paths") 745 | .map(function (res) { return res.json(); }); 746 | }; 747 | SonarrService.prototype.fetchProfiles = function () { 748 | return this.http.get("/api/sonarr/profiles") 749 | .map(function (res) { return res.json(); }); 750 | }; 751 | SonarrService = __decorate([ 752 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["z" /* Injectable */])(), 753 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__angular_http__["a" /* Http */]]) 754 | ], SonarrService); 755 | return SonarrService; 756 | }()); 757 | 758 | 759 | 760 | /***/ }), 761 | 762 | /***/ "../../../../../src/app/trakt.service.ts": 763 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 764 | 765 | "use strict"; 766 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TraktService; }); 767 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 768 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_http__ = __webpack_require__("../../../http/esm5/http.js"); 769 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_rxjs_add_operator_map__ = __webpack_require__("../../../../rxjs/_esm5/add/operator/map.js"); 770 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_rxjs_add_operator_mergeMap__ = __webpack_require__("../../../../rxjs/_esm5/add/operator/mergeMap.js"); 771 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 772 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 773 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 774 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 775 | return c > 3 && r && Object.defineProperty(target, key, r), r; 776 | }; 777 | var __metadata = (this && this.__metadata) || function (k, v) { 778 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 779 | }; 780 | 781 | 782 | 783 | 784 | var TraktService = (function () { 785 | function TraktService(http) { 786 | this.http = http; 787 | } 788 | TraktService.prototype.fetchWatchlist = function (username) { 789 | return this.http.get("/api/trakt/watchlist?username=" + username); 790 | }; 791 | TraktService.prototype.fetchPopularShows = function (years, ratings, limit) { 792 | if (years === void 0) { years = ''; } 793 | if (ratings === void 0) { ratings = '0-100'; } 794 | if (limit === void 0) { limit = 100; } 795 | return this.http.get("/api/trakt/popular?years=" + years + "&ratings=" + ratings + "&limit=" + limit); 796 | }; 797 | TraktService.prototype.fetchTrendingShows = function (years, ratings, limit) { 798 | if (years === void 0) { years = ''; } 799 | if (ratings === void 0) { ratings = '0-100'; } 800 | if (limit === void 0) { limit = 100; } 801 | return this.http.get("/api/trakt/trending?years=" + years + "&ratings=" + ratings + "&limit=" + limit); 802 | }; 803 | TraktService.prototype.fetchCustomListShows = function (username, listName, years, ratings, limit) { 804 | if (years === void 0) { years = ''; } 805 | if (ratings === void 0) { ratings = '0-100'; } 806 | if (limit === void 0) { limit = 100; } 807 | return this.http.get("/api/trakt/custom?username=" + username + "&listName=" + listName + "&years=" + years + "&ratings=" + ratings + "&limit=" + limit); 808 | }; 809 | TraktService = __decorate([ 810 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["z" /* Injectable */])(), 811 | __metadata("design:paramtypes", [__WEBPACK_IMPORTED_MODULE_1__angular_http__["a" /* Http */]]) 812 | ], TraktService); 813 | return TraktService; 814 | }()); 815 | 816 | 817 | 818 | /***/ }), 819 | 820 | /***/ "../../../../../src/environments/environment.ts": 821 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 822 | 823 | "use strict"; 824 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return environment; }); 825 | // The file contents for the current environment will overwrite these during build. 826 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 827 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 828 | // The list of which env maps to which file can be found in `.angular-cli.json`. 829 | var environment = { 830 | production: false 831 | }; 832 | 833 | 834 | /***/ }), 835 | 836 | /***/ "../../../../../src/main.ts": 837 | /***/ (function(module, __webpack_exports__, __webpack_require__) { 838 | 839 | "use strict"; 840 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); 841 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__angular_core__ = __webpack_require__("../../../core/esm5/core.js"); 842 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__angular_platform_browser_dynamic__ = __webpack_require__("../../../platform-browser-dynamic/esm5/platform-browser-dynamic.js"); 843 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__app_app_module__ = __webpack_require__("../../../../../src/app/app.module.ts"); 844 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__environments_environment__ = __webpack_require__("../../../../../src/environments/environment.ts"); 845 | 846 | 847 | 848 | 849 | if (__WEBPACK_IMPORTED_MODULE_3__environments_environment__["a" /* environment */].production) { 850 | Object(__WEBPACK_IMPORTED_MODULE_0__angular_core__["_12" /* enableProdMode */])(); 851 | } 852 | Object(__WEBPACK_IMPORTED_MODULE_1__angular_platform_browser_dynamic__["a" /* platformBrowserDynamic */])().bootstrapModule(__WEBPACK_IMPORTED_MODULE_2__app_app_module__["a" /* AppModule */]) 853 | .catch(function (err) { return console.log(err); }); 854 | 855 | 856 | /***/ }), 857 | 858 | /***/ 0: 859 | /***/ (function(module, exports, __webpack_require__) { 860 | 861 | module.exports = __webpack_require__("../../../../../src/main.ts"); 862 | 863 | 864 | /***/ }) 865 | 866 | },[0]); 867 | //# sourceMappingURL=main.bundle.js.map -------------------------------------------------------------------------------- /public/main.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["/Users/milanp/Repos/sonarr-trakt-tv-ui/src/$_lazy_route_resource lazy","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/app.component.css","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/app.component.html","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/app.component.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/app.module.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/banner/banner.component.css","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/banner/banner.component.html","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/banner/banner.component.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list-dialog/list-dialog.component.css","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list-dialog/list-dialog.component.html","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list-dialog/list-dialog.component.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list.service.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list/list.component.css","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list/list.component.html","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list/list.component.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/settings.service.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/settings/settings.component.css","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/settings/settings.component.html","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/settings/settings.component.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/shared/enums/index.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/shared/enums/list-types.enum.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/sonarr.service.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/trakt.service.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/environments/environment.ts","/Users/milanp/Repos/sonarr-trakt-tv-ui/src/main.ts"],"names":[],"mappings":"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","file":"main.bundle.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"../../../../../src/$$_lazy_route_resource lazy recursive\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/$$_lazy_route_resource lazy\n// module id = ../../../../../src/$$_lazy_route_resource lazy recursive\n// module chunks = main","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".container{\\n max-width: 900px;\\n margin: auto;\\n width: 100%;\\n margin-top: 150px;\\n}\", \"\"]);\n\n// exports\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = module.exports.toString();\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/app.component.css\n// module id = ../../../../../src/app/app.component.css\n// module chunks = main","module.exports = \"\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/app.component.html\n// module id = ../../../../../src/app/app.component.html\n// module chunks = main","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent {\n title = 'app';\n}\n\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/app.component.ts","import { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule } from '@angular/forms';\nimport { HttpModule } from '@angular/http';\nimport { NgModule } from '@angular/core';\nimport {NoopAnimationsModule} from '@angular/platform-browser/animations';\nimport {\n MatAutocompleteModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDatepickerModule,\n MatDialogModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatStepperModule,\n} from '@angular/material';\n\nimport { AppComponent } from './app.component';\nimport { ListComponent } from './list/list.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { ListDialogComponent } from './list-dialog/list-dialog.component';\nimport { BannerComponent } from './banner/banner.component';\n\n\n@NgModule({\n declarations: [\n AppComponent,\n ListComponent,\n SettingsComponent,\n ListDialogComponent,\n BannerComponent\n ],\n imports: [\n BrowserModule,\n FormsModule,\n HttpModule,\n NoopAnimationsModule,\n MatAutocompleteModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDatepickerModule,\n MatDialogModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatStepperModule,\n ],\n providers: [],\n bootstrap: [AppComponent],\n entryComponents: [ListDialogComponent]\n})\nexport class AppModule { }\n\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/app.module.ts","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".banner {\\n width: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n color: white;\\n text-align: center;\\n z-index: 1;\\n font-family: Roboto;\\n font-size: 18px;\\n}\\n\\n.error.mat-toolbar {\\n font-size: 14px;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n.spacer {\\n -webkit-box-flex: 1;\\n -ms-flex: 1 1 auto;\\n flex: 1 1 auto;\\n text-align: right;\\n}\\n\", \"\"]);\n\n// exports\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = module.exports.toString();\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/banner/banner.component.css\n// module id = ../../../../../src/app/banner/banner.component.css\n// module chunks = main","module.exports = \"
\\n \\n warning\\n Lost connection with Sonarr. Try checking your Sonarr settings under the \\\"Settings\\\" tab.\\n \\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/banner/banner.component.html\n// module id = ../../../../../src/app/banner/banner.component.html\n// module chunks = main","import { Component, OnInit } from '@angular/core';\nimport { SonarrService } from '../sonarr.service';\n\n@Component({\n selector: 'app-banner',\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.css'],\n providers: [SonarrService]\n})\nexport class BannerComponent implements OnInit {\n public showErrorMessage = false;\n constructor(private sonarrService: SonarrService) { }\n\n ngOnInit() {\n setInterval(() => {\n this.healthCheck();\n }, 10000);\n\n this.healthCheck();\n }\n\n healthCheck() {\n this.sonarrService.fetchProfiles().subscribe(() => {\n this.showErrorMessage = false;;\n }, () => {\n this.showErrorMessage = true;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/banner/banner.component.ts","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".mat-form-field {\\n display: block;\\n width: 350px;\\n}\\n\\ndiv.primary {\\n color: #c2185b;\\n margin-top: 20px;\\n}\", \"\"]);\n\n// exports\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = module.exports.toString();\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list-dialog/list-dialog.component.css\n// module id = ../../../../../src/app/list-dialog/list-dialog.component.css\n// module chunks = main","module.exports = \"
\\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n {{ item.viewValue }}\\n \\n \\n \\n \\n \\n \\n {{ profile.name }}\\n \\n \\n \\n \\n \\n \\n {{ folder.path }}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n
\\n
\\n Watchlist call was successful\\n
\\n
\\n No results were returned\\n
\\n
\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list-dialog/list-dialog.component.html\n// module id = ../../../../../src/app/list-dialog/list-dialog.component.html\n// module chunks = main","import { Component, OnInit, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';\nimport { ListService } from '../list.service';\nimport { SonarrService } from '../sonarr.service';\nimport { TraktService } from '../trakt.service';\nimport { ListTypes } from '../shared/enums';\n\nclass ListItem {\n name: string;\n listType: number;\n score: string;\n username: string;\n limit: string;\n folder: string;\n profile: number;\n listName: string;\n}\n\n@Component({\n selector: 'app-list-dialog',\n templateUrl: './list-dialog.component.html',\n styleUrls: ['./list-dialog.component.css'],\n providers: [ListService, SonarrService, TraktService]\n})\nexport class ListDialogComponent implements OnInit {\n\n public trakList: Array;\n public listItem: ListItem;\n public folders: Array;\n public profiles: Array;\n public foundWatchlistResults: boolean = false;\n public watchlistError: boolean = false;\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private listService: ListService,\n private sonarrService: SonarrService,\n private traktService: TraktService) { }\n\n\n ngOnInit() {\n this.listItem = this.data;\n this.trakList = [{\n value: ListTypes.Watchlist,\n viewValue: 'Watchlist',\n }, {\n value: ListTypes.Popular,\n viewValue: 'Popular',\n }, {\n value: ListTypes.Trending,\n viewValue: 'Trending',\n }, {\n value: ListTypes.Custom,\n viewValue: 'Custom',\n }];\n\n this.sonarrService.fetchPaths().subscribe(folders => this.folders = folders);\n this.sonarrService.fetchProfiles().subscribe(profiles => this.profiles = profiles);\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n saveList(item) {\n this.foundWatchlistResults = false;\n this.watchlistError = false;\n if (item.id) {\n this.listService.updateList(item.id, item).subscribe(() => {\n this.close();\n });\n } else {\n item.enabled = true;\n this.listService.createList(item).subscribe(() => {\n this.close();\n });\n }\n }\n\n testList(item) {\n this.foundWatchlistResults = false;\n this.watchlistError = false;\n\n let sub = null;\n\n switch (item.listType) {\n case ListTypes.Watchlist:\n sub = this.traktService.fetchWatchlist(item.username);\n break;\n case ListTypes.Popular:\n sub = this.traktService.fetchPopularShows(item.years, item.ratings, item.limit);\n break;\n case ListTypes.Trending:\n sub = this.traktService.fetchTrendingShows(item.years, item.ratings, item.limit);\n break;\n case ListTypes.Custom:\n sub = this.traktService.fetchCustomListShows(item.username, item.listName, item.years, item.ratings, item.limit);\n break;\n }\n\n sub.subscribe(() => {\n this.foundWatchlistResults = true;\n }, (error) => {\n this.watchlistError = true;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list-dialog/list-dialog.component.ts","import { Injectable } from '@angular/core';\nimport { Http, Response } from '@angular/http';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/mergeMap';\n\n@Injectable()\nexport class ListService {\n\n constructor(\n private http: Http\n ) { }\n\n fetchList() {\n return this.http.get(`/api/list`)\n .map((res:Response) => res.json());\n }\n\n updateList(id, body) {\n return this.http.put(`/api/list/${id}`, body)\n .map((res:Response) => res.json());\n }\n\n createList(body) {\n return this.http.post(`/api/list`, body)\n .map((res:Response) => res.json());\n }\n\n deleteList(id) {\n return this.http.delete(`/api/list/${id}`)\n .map((res:Response) => res.json());\n }\n}\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list.service.ts","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".fab-add {\\n position: fixed !important;\\n bottom: 50px !important;\\n right: 50px !important;\\n}\\n\\n.flex {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n.mat-card {\\n -webkit-box-flex: 1;\\n -ms-flex: 1;\\n flex: 1;\\n max-width: 350px;\\n min-width: 350px;\\n margin: 15px;\\n}\\n\\n.mat-card-content {\\n cursor: pointer;\\n}\\n\", \"\"]);\n\n// exports\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = module.exports.toString();\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list/list.component.css\n// module id = ../../../../../src/app/list/list.component.css\n// module chunks = main","module.exports = \"
\\n \\n \\n \\n

{{listItem.name}}

\\n
\\n \\n Enabled\\n \\n \\n
\\n \\n \\n

No List Found

\\n
\\n
\\n
\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list/list.component.html\n// module id = ../../../../../src/app/list/list.component.html\n// module chunks = main","import { Component, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material';\nimport { ListDialogComponent } from '../list-dialog/list-dialog.component'\nimport { ListService } from '../list.service';\nimport { SonarrService } from '../sonarr.service';\n\n\nclass ListItem {\n name: string;\n listType: number;\n score: string;\n username: string;\n limit: string;\n folder: string;\n profile: number;\n enabled: boolean;\n ratings: string;\n years: string;\n}\n\n@Component({\n selector: 'app-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.css'],\n providers: [ListService, SonarrService]\n})\nexport class ListComponent implements OnInit {\n public list: Array;\n\n constructor(private listService: ListService, private sonarrService: SonarrService, private dialog: MatDialog) {\n this.list = new Array();\n }\n\n ngOnInit() {\n this.listService.fetchList().subscribe(list => this.list = list);\n }\n\n addList() {\n this.openDialog(new ListItem());\n }\n\n deleteList(list) {\n if (list.id) {\n this.listService.deleteList(list.id).subscribe(() => { });\n }\n\n this.list.splice(this.list.findIndex(element => element === list), 1);\n }\n\n saveList(item, $event) {\n item.enabled = $event.checked;\n this.listService.updateList(item.id, item).subscribe(() => { });\n }\n\n openDialog(listItem): void {\n let itemCopy = {};\n Object.assign(itemCopy, listItem);\n let dialogRef = this.dialog.open(ListDialogComponent, {\n data: itemCopy\n });\n\n dialogRef.afterClosed().subscribe(result => {\n this.listService.fetchList().subscribe(list => this.list = list);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/list/list.component.ts","import { Injectable } from '@angular/core';\nimport { Http, Response } from '@angular/http';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/mergeMap';\n\n@Injectable()\nexport class SettingsService {\n\n constructor(\n private http: Http\n ) { }\n\n fetchSettings() {\n return this.http.get(`/api/settings`)\n .map((res:Response) => res.json());\n }\n\n updateSettings(id, body) {\n return this.http.put(`/api/settings/${id}`, body)\n .map((res:Response) => res.json());\n }\n\n createSettings(body) {\n return this.http.post(`/api/settings`, body)\n .map((res:Response) => res.json());\n }\n}\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/settings.service.ts","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\\n.settings mat-form-field {\\n width: 50%;\\n}\", \"\"]);\n\n// exports\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = module.exports.toString();\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/settings/settings.component.css\n// module id = ../../../../../src/app/settings/settings.component.css\n// module chunks = main","module.exports = \"
\\n

Sonarr Settings

\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n
\\n
\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/settings/settings.component.html\n// module id = ../../../../../src/app/settings/settings.component.html\n// module chunks = main","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { SettingsService } from '../settings.service';\n\n\nclass Settings {\n hostname: string;\n port: number;\n apiKey: string;\n interval: number;\n id: string;\n}\n\n@Component({\n selector: 'app-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.css'],\n providers: [SettingsService],\n encapsulation: ViewEncapsulation.None\n})\nexport class SettingsComponent implements OnInit {\n public settings: Settings;\n\n constructor(private settingService: SettingsService) {\n this.settings = new Settings();\n }\n\n ngOnInit() {\n\n this.settingService.fetchSettings().subscribe(settings => this.settings = settings);\n }\n\n saveSettings() {\n if (this.settings.id) {\n this.settingService.updateSettings(this.settings.id, this.settings).subscribe(() => { });\n } else {\n this.settingService.createSettings(this.settings).subscribe(() => { });\n }\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/settings/settings.component.ts","export * from './list-types.enum';\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/shared/enums/index.ts","export enum ListTypes {\n Watchlist = 1,\n Popular = 2,\n Trending = 3,\n Custom = 4\n}\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/shared/enums/list-types.enum.ts","import { Injectable } from '@angular/core';\nimport { Http, Response } from '@angular/http';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/mergeMap';\n\n@Injectable()\nexport class SonarrService {\n\n constructor(\n private http: Http\n ) { }\n\n fetchPaths() {\n return this.http.get(`/api/sonarr/paths`)\n .map((res:Response) => res.json());\n }\n\n fetchProfiles() {\n return this.http.get(`/api/sonarr/profiles`)\n .map((res:Response) => res.json());\n }\n}\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/sonarr.service.ts","import { Injectable } from '@angular/core';\nimport { Http, Response } from '@angular/http';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/mergeMap';\n\n@Injectable()\nexport class TraktService {\n constructor(\n private http: Http\n ) { }\n\n fetchWatchlist(username: string) {\n return this.http.get(`/api/trakt/watchlist?username=${username}`);\n }\n\n fetchPopularShows(years: string = '', ratings: string = '0-100', limit: number = 100) {\n return this.http.get(`/api/trakt/popular?years=${years}&ratings=${ratings}&limit=${limit}`);\n }\n\n fetchTrendingShows(years: string = '', ratings: string = '0-100', limit: number = 100) {\n return this.http.get(`/api/trakt/trending?years=${years}&ratings=${ratings}&limit=${limit}`);\n }\n\n fetchCustomListShows(username: string, listName: string, years: string = '', ratings: string = '0-100', limit: number = 100) {\n return this.http.get(`/api/trakt/custom?username=${username}&listName=${listName}&years=${years}&ratings=${ratings}&limit=${limit}`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/app/trakt.service.ts","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: false\n};\n\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/environments/environment.ts","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.log(err));\n\n\n\n// WEBPACK FOOTER //\n// /Users/milanp/Repos/sonarr-trakt-tv-ui/src/main.ts"],"sourceRoot":"webpack:///"} -------------------------------------------------------------------------------- /public/styles.bundle.js: -------------------------------------------------------------------------------- 1 | webpackJsonp(["styles"],{ 2 | 3 | /***/ "../../../../../src/styles.css": 4 | /***/ (function(module, exports, __webpack_require__) { 5 | 6 | // style-loader: Adds some css to the DOM by adding a