Browse Source

angular spa init

woat 6 years ago
parent
commit
d4ea6a9cd9

+ 13
- 0
client/.editorconfig View File

@@ -0,0 +1,13 @@
1
+# Editor configuration, see http://editorconfig.org
2
+root = true
3
+
4
+[*]
5
+charset = utf-8
6
+indent_style = space
7
+indent_size = 2
8
+insert_final_newline = true
9
+trim_trailing_whitespace = true
10
+
11
+[*.md]
12
+max_line_length = off
13
+trim_trailing_whitespace = false

+ 39
- 0
client/.gitignore View File

@@ -0,0 +1,39 @@
1
+# See http://help.github.com/ignore-files/ for more about ignoring files.
2
+
3
+# compiled output
4
+/dist
5
+/tmp
6
+/out-tsc
7
+
8
+# dependencies
9
+/node_modules
10
+
11
+# IDEs and editors
12
+/.idea
13
+.project
14
+.classpath
15
+.c9/
16
+*.launch
17
+.settings/
18
+*.sublime-workspace
19
+
20
+# IDE - VSCode
21
+.vscode/*
22
+!.vscode/settings.json
23
+!.vscode/tasks.json
24
+!.vscode/launch.json
25
+!.vscode/extensions.json
26
+
27
+# misc
28
+/.sass-cache
29
+/connect.lock
30
+/coverage
31
+/libpeerconnection.log
32
+npm-debug.log
33
+yarn-error.log
34
+testem.log
35
+/typings
36
+
37
+# System Files
38
+.DS_Store
39
+Thumbs.db

+ 27
- 0
client/README.md View File

@@ -0,0 +1,27 @@
1
+# Client
2
+
3
+This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8.
4
+
5
+## Development server
6
+
7
+Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
8
+
9
+## Code scaffolding
10
+
11
+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
12
+
13
+## Build
14
+
15
+Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
16
+
17
+## Running unit tests
18
+
19
+Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
20
+
21
+## Running end-to-end tests
22
+
23
+Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
24
+
25
+## Further help
26
+
27
+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).

+ 127
- 0
client/angular.json View File

@@ -0,0 +1,127 @@
1
+{
2
+  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3
+  "version": 1,
4
+  "newProjectRoot": "projects",
5
+  "projects": {
6
+    "client": {
7
+      "root": "",
8
+      "sourceRoot": "src",
9
+      "projectType": "application",
10
+      "prefix": "app",
11
+      "schematics": {},
12
+      "architect": {
13
+        "build": {
14
+          "builder": "@angular-devkit/build-angular:browser",
15
+          "options": {
16
+            "outputPath": "dist/client",
17
+            "index": "src/index.html",
18
+            "main": "src/main.ts",
19
+            "polyfills": "src/polyfills.ts",
20
+            "tsConfig": "src/tsconfig.app.json",
21
+            "assets": [
22
+              "src/favicon.ico",
23
+              "src/assets"
24
+            ],
25
+            "styles": [
26
+              "src/styles.css"
27
+            ],
28
+            "scripts": []
29
+          },
30
+          "configurations": {
31
+            "production": {
32
+              "fileReplacements": [
33
+                {
34
+                  "replace": "src/environments/environment.ts",
35
+                  "with": "src/environments/environment.prod.ts"
36
+                }
37
+              ],
38
+              "optimization": true,
39
+              "outputHashing": "all",
40
+              "sourceMap": false,
41
+              "extractCss": true,
42
+              "namedChunks": false,
43
+              "aot": true,
44
+              "extractLicenses": true,
45
+              "vendorChunk": false,
46
+              "buildOptimizer": true
47
+            }
48
+          }
49
+        },
50
+        "serve": {
51
+          "builder": "@angular-devkit/build-angular:dev-server",
52
+          "options": {
53
+            "browserTarget": "client:build"
54
+          },
55
+          "configurations": {
56
+            "production": {
57
+              "browserTarget": "client:build:production"
58
+            }
59
+          }
60
+        },
61
+        "extract-i18n": {
62
+          "builder": "@angular-devkit/build-angular:extract-i18n",
63
+          "options": {
64
+            "browserTarget": "client:build"
65
+          }
66
+        },
67
+        "test": {
68
+          "builder": "@angular-devkit/build-angular:karma",
69
+          "options": {
70
+            "main": "src/test.ts",
71
+            "polyfills": "src/polyfills.ts",
72
+            "tsConfig": "src/tsconfig.spec.json",
73
+            "karmaConfig": "src/karma.conf.js",
74
+            "styles": [
75
+              "src/styles.css"
76
+            ],
77
+            "scripts": [],
78
+            "assets": [
79
+              "src/favicon.ico",
80
+              "src/assets"
81
+            ]
82
+          }
83
+        },
84
+        "lint": {
85
+          "builder": "@angular-devkit/build-angular:tslint",
86
+          "options": {
87
+            "tsConfig": [
88
+              "src/tsconfig.app.json",
89
+              "src/tsconfig.spec.json"
90
+            ],
91
+            "exclude": [
92
+              "**/node_modules/**"
93
+            ]
94
+          }
95
+        }
96
+      }
97
+    },
98
+    "client-e2e": {
99
+      "root": "e2e/",
100
+      "projectType": "application",
101
+      "architect": {
102
+        "e2e": {
103
+          "builder": "@angular-devkit/build-angular:protractor",
104
+          "options": {
105
+            "protractorConfig": "e2e/protractor.conf.js",
106
+            "devServerTarget": "client:serve"
107
+          },
108
+          "configurations": {
109
+            "production": {
110
+              "devServerTarget": "client:serve:production"
111
+            }
112
+          }
113
+        },
114
+        "lint": {
115
+          "builder": "@angular-devkit/build-angular:tslint",
116
+          "options": {
117
+            "tsConfig": "e2e/tsconfig.e2e.json",
118
+            "exclude": [
119
+              "**/node_modules/**"
120
+            ]
121
+          }
122
+        }
123
+      }
124
+    }
125
+  },
126
+  "defaultProject": "client"
127
+}

+ 28
- 0
client/e2e/protractor.conf.js View File

@@ -0,0 +1,28 @@
1
+// Protractor configuration file, see link for more information
2
+// https://github.com/angular/protractor/blob/master/lib/config.ts
3
+
4
+const { SpecReporter } = require('jasmine-spec-reporter');
5
+
6
+exports.config = {
7
+  allScriptsTimeout: 11000,
8
+  specs: [
9
+    './src/**/*.e2e-spec.ts'
10
+  ],
11
+  capabilities: {
12
+    'browserName': 'chrome'
13
+  },
14
+  directConnect: true,
15
+  baseUrl: 'http://localhost:4200/',
16
+  framework: 'jasmine',
17
+  jasmineNodeOpts: {
18
+    showColors: true,
19
+    defaultTimeoutInterval: 30000,
20
+    print: function() {}
21
+  },
22
+  onPrepare() {
23
+    require('ts-node').register({
24
+      project: require('path').join(__dirname, './tsconfig.e2e.json')
25
+    });
26
+    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
27
+  }
28
+};

+ 14
- 0
client/e2e/src/app.e2e-spec.ts View File

@@ -0,0 +1,14 @@
1
+import { AppPage } from './app.po';
2
+
3
+describe('workspace-project App', () => {
4
+  let page: AppPage;
5
+
6
+  beforeEach(() => {
7
+    page = new AppPage();
8
+  });
9
+
10
+  it('should display welcome message', () => {
11
+    page.navigateTo();
12
+    expect(page.getParagraphText()).toEqual('Welcome to client!');
13
+  });
14
+});

+ 11
- 0
client/e2e/src/app.po.ts View File

@@ -0,0 +1,11 @@
1
+import { browser, by, element } from 'protractor';
2
+
3
+export class AppPage {
4
+  navigateTo() {
5
+    return browser.get('/');
6
+  }
7
+
8
+  getParagraphText() {
9
+    return element(by.css('app-root h1')).getText();
10
+  }
11
+}

+ 13
- 0
client/e2e/tsconfig.e2e.json View File

@@ -0,0 +1,13 @@
1
+{
2
+  "extends": "../tsconfig.json",
3
+  "compilerOptions": {
4
+    "outDir": "../out-tsc/app",
5
+    "module": "commonjs",
6
+    "target": "es5",
7
+    "types": [
8
+      "jasmine",
9
+      "jasminewd2",
10
+      "node"
11
+    ]
12
+  }
13
+}

+ 10594
- 0
client/package-lock.json
File diff suppressed because it is too large
View File


+ 48
- 0
client/package.json View File

@@ -0,0 +1,48 @@
1
+{
2
+  "name": "client",
3
+  "version": "0.0.0",
4
+  "scripts": {
5
+    "ng": "ng",
6
+    "start": "ng serve",
7
+    "build": "ng build",
8
+    "test": "ng test",
9
+    "lint": "ng lint",
10
+    "e2e": "ng e2e"
11
+  },
12
+  "private": true,
13
+  "dependencies": {
14
+    "@angular/animations": "^6.0.3",
15
+    "@angular/common": "^6.0.3",
16
+    "@angular/compiler": "^6.0.3",
17
+    "@angular/core": "^6.0.3",
18
+    "@angular/forms": "^6.0.3",
19
+    "@angular/http": "^6.0.3",
20
+    "@angular/platform-browser": "^6.0.3",
21
+    "@angular/platform-browser-dynamic": "^6.0.3",
22
+    "@angular/router": "^6.0.3",
23
+    "core-js": "^2.5.4",
24
+    "rxjs": "^6.0.0",
25
+    "zone.js": "^0.8.26"
26
+  },
27
+  "devDependencies": {
28
+    "@angular/compiler-cli": "^6.0.3",
29
+    "@angular-devkit/build-angular": "~0.6.8",
30
+    "typescript": "~2.7.2",
31
+    "@angular/cli": "~6.0.8",
32
+    "@angular/language-service": "^6.0.3",
33
+    "@types/jasmine": "~2.8.6",
34
+    "@types/jasminewd2": "~2.0.3",
35
+    "@types/node": "~8.9.4",
36
+    "codelyzer": "~4.2.1",
37
+    "jasmine-core": "~2.99.1",
38
+    "jasmine-spec-reporter": "~4.2.1",
39
+    "karma": "~1.7.1",
40
+    "karma-chrome-launcher": "~2.2.0",
41
+    "karma-coverage-istanbul-reporter": "~2.0.0",
42
+    "karma-jasmine": "~1.1.1",
43
+    "karma-jasmine-html-reporter": "^0.2.2",
44
+    "protractor": "~5.3.0",
45
+    "ts-node": "~5.0.1",
46
+    "tslint": "~5.9.1"
47
+  }
48
+}

+ 0
- 0
client/src/app/app.component.css View File


+ 20
- 0
client/src/app/app.component.html View File

@@ -0,0 +1,20 @@
1
+<!--The content below is only a placeholder and can be replaced.-->
2
+<div style="text-align:center">
3
+  <h1>
4
+    Welcome to {{ title }}!
5
+  </h1>
6
+  <img width="300" alt="Angular Logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg==">
7
+</div>
8
+<h2>Here are some links to help you start: </h2>
9
+<ul>
10
+  <li>
11
+    <h2><a target="_blank" rel="noopener" href="https://angular.io/tutorial">Tour of Heroes</a></h2>
12
+  </li>
13
+  <li>
14
+    <h2><a target="_blank" rel="noopener" href="https://github.com/angular/angular-cli/wiki">CLI Documentation</a></h2>
15
+  </li>
16
+  <li>
17
+    <h2><a target="_blank" rel="noopener" href="https://blog.angular.io/">Angular blog</a></h2>
18
+  </li>
19
+</ul>
20
+

+ 27
- 0
client/src/app/app.component.spec.ts View File

@@ -0,0 +1,27 @@
1
+import { TestBed, async } from '@angular/core/testing';
2
+import { AppComponent } from './app.component';
3
+describe('AppComponent', () => {
4
+  beforeEach(async(() => {
5
+    TestBed.configureTestingModule({
6
+      declarations: [
7
+        AppComponent
8
+      ],
9
+    }).compileComponents();
10
+  }));
11
+  it('should create the app', async(() => {
12
+    const fixture = TestBed.createComponent(AppComponent);
13
+    const app = fixture.debugElement.componentInstance;
14
+    expect(app).toBeTruthy();
15
+  }));
16
+  it(`should have as title 'app'`, async(() => {
17
+    const fixture = TestBed.createComponent(AppComponent);
18
+    const app = fixture.debugElement.componentInstance;
19
+    expect(app.title).toEqual('app');
20
+  }));
21
+  it('should render title in a h1 tag', async(() => {
22
+    const fixture = TestBed.createComponent(AppComponent);
23
+    fixture.detectChanges();
24
+    const compiled = fixture.debugElement.nativeElement;
25
+    expect(compiled.querySelector('h1').textContent).toContain('Welcome to client!');
26
+  }));
27
+});

+ 10
- 0
client/src/app/app.component.ts View File

@@ -0,0 +1,10 @@
1
+import { Component } from '@angular/core';
2
+
3
+@Component({
4
+  selector: 'app-root',
5
+  templateUrl: './app.component.html',
6
+  styleUrls: ['./app.component.css']
7
+})
8
+export class AppComponent {
9
+  title = 'app';
10
+}

+ 16
- 0
client/src/app/app.module.ts View File

@@ -0,0 +1,16 @@
1
+import { BrowserModule } from '@angular/platform-browser';
2
+import { NgModule } from '@angular/core';
3
+
4
+import { AppComponent } from './app.component';
5
+
6
+@NgModule({
7
+  declarations: [
8
+    AppComponent
9
+  ],
10
+  imports: [
11
+    BrowserModule
12
+  ],
13
+  providers: [],
14
+  bootstrap: [AppComponent]
15
+})
16
+export class AppModule { }

+ 0
- 0
client/src/assets/.gitkeep View File


+ 9
- 0
client/src/browserslist View File

@@ -0,0 +1,9 @@
1
+# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
2
+# For additional information regarding the format and rule options, please see:
3
+# https://github.com/browserslist/browserslist#queries
4
+# For IE 9-11 support, please uncomment the last line of the file and adjust as needed
5
+> 0.5%
6
+last 2 versions
7
+Firefox ESR
8
+not dead
9
+# IE 9-11

+ 3
- 0
client/src/environments/environment.prod.ts View File

@@ -0,0 +1,3 @@
1
+export const environment = {
2
+  production: true
3
+};

+ 15
- 0
client/src/environments/environment.ts View File

@@ -0,0 +1,15 @@
1
+// This file can be replaced during build by using the `fileReplacements` array.
2
+// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
3
+// The list of file replacements can be found in `angular.json`.
4
+
5
+export const environment = {
6
+  production: false
7
+};
8
+
9
+/*
10
+ * In development mode, to ignore zone related error stack frames such as
11
+ * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
12
+ * import the following file, but please comment it out in production mode
13
+ * because it will have performance impact when throw error
14
+ */
15
+// import 'zone.js/dist/zone-error';  // Included with Angular CLI.

BIN
client/src/favicon.ico View File


+ 14
- 0
client/src/index.html View File

@@ -0,0 +1,14 @@
1
+<!doctype html>
2
+<html lang="en">
3
+<head>
4
+  <meta charset="utf-8">
5
+  <title>Client</title>
6
+  <base href="/">
7
+
8
+  <meta name="viewport" content="width=device-width, initial-scale=1">
9
+  <link rel="icon" type="image/x-icon" href="favicon.ico">
10
+</head>
11
+<body>
12
+  <app-root></app-root>
13
+</body>
14
+</html>

+ 31
- 0
client/src/karma.conf.js View File

@@ -0,0 +1,31 @@
1
+// Karma configuration file, see link for more information
2
+// https://karma-runner.github.io/1.0/config/configuration-file.html
3
+
4
+module.exports = function (config) {
5
+  config.set({
6
+    basePath: '',
7
+    frameworks: ['jasmine', '@angular-devkit/build-angular'],
8
+    plugins: [
9
+      require('karma-jasmine'),
10
+      require('karma-chrome-launcher'),
11
+      require('karma-jasmine-html-reporter'),
12
+      require('karma-coverage-istanbul-reporter'),
13
+      require('@angular-devkit/build-angular/plugins/karma')
14
+    ],
15
+    client: {
16
+      clearContext: false // leave Jasmine Spec Runner output visible in browser
17
+    },
18
+    coverageIstanbulReporter: {
19
+      dir: require('path').join(__dirname, '../coverage'),
20
+      reports: ['html', 'lcovonly'],
21
+      fixWebpackSourcePaths: true
22
+    },
23
+    reporters: ['progress', 'kjhtml'],
24
+    port: 9876,
25
+    colors: true,
26
+    logLevel: config.LOG_INFO,
27
+    autoWatch: true,
28
+    browsers: ['Chrome'],
29
+    singleRun: false
30
+  });
31
+};

+ 12
- 0
client/src/main.ts View File

@@ -0,0 +1,12 @@
1
+import { enableProdMode } from '@angular/core';
2
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3
+
4
+import { AppModule } from './app/app.module';
5
+import { environment } from './environments/environment';
6
+
7
+if (environment.production) {
8
+  enableProdMode();
9
+}
10
+
11
+platformBrowserDynamic().bootstrapModule(AppModule)
12
+  .catch(err => console.log(err));

+ 80
- 0
client/src/polyfills.ts View File

@@ -0,0 +1,80 @@
1
+/**
2
+ * This file includes polyfills needed by Angular and is loaded before the app.
3
+ * You can add your own extra polyfills to this file.
4
+ *
5
+ * This file is divided into 2 sections:
6
+ *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
7
+ *   2. Application imports. Files imported after ZoneJS that should be loaded before your main
8
+ *      file.
9
+ *
10
+ * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
11
+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
12
+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
13
+ *
14
+ * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
15
+ */
16
+
17
+/***************************************************************************************************
18
+ * BROWSER POLYFILLS
19
+ */
20
+
21
+/** IE9, IE10 and IE11 requires all of the following polyfills. **/
22
+// import 'core-js/es6/symbol';
23
+// import 'core-js/es6/object';
24
+// import 'core-js/es6/function';
25
+// import 'core-js/es6/parse-int';
26
+// import 'core-js/es6/parse-float';
27
+// import 'core-js/es6/number';
28
+// import 'core-js/es6/math';
29
+// import 'core-js/es6/string';
30
+// import 'core-js/es6/date';
31
+// import 'core-js/es6/array';
32
+// import 'core-js/es6/regexp';
33
+// import 'core-js/es6/map';
34
+// import 'core-js/es6/weak-map';
35
+// import 'core-js/es6/set';
36
+
37
+/** IE10 and IE11 requires the following for NgClass support on SVG elements */
38
+// import 'classlist.js';  // Run `npm install --save classlist.js`.
39
+
40
+/** IE10 and IE11 requires the following for the Reflect API. */
41
+// import 'core-js/es6/reflect';
42
+
43
+
44
+/** Evergreen browsers require these. **/
45
+// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
46
+import 'core-js/es7/reflect';
47
+
48
+
49
+/**
50
+ * Web Animations `@angular/platform-browser/animations`
51
+ * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
52
+ * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
53
+ **/
54
+// import 'web-animations-js';  // Run `npm install --save web-animations-js`.
55
+
56
+/**
57
+ * By default, zone.js will patch all possible macroTask and DomEvents
58
+ * user can disable parts of macroTask/DomEvents patch by setting following flags
59
+ */
60
+
61
+ // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
62
+ // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
63
+ // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
64
+
65
+ /*
66
+ * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
67
+ * with the following flag, it will bypass `zone.js` patch for IE/Edge
68
+ */
69
+// (window as any).__Zone_enable_cross_context_check = true;
70
+
71
+/***************************************************************************************************
72
+ * Zone JS is required by default for Angular itself.
73
+ */
74
+import 'zone.js/dist/zone';  // Included with Angular CLI.
75
+
76
+
77
+
78
+/***************************************************************************************************
79
+ * APPLICATION IMPORTS
80
+ */

+ 1
- 0
client/src/styles.css View File

@@ -0,0 +1 @@
1
+/* You can add global styles to this file, and also import other style files */

+ 20
- 0
client/src/test.ts View File

@@ -0,0 +1,20 @@
1
+// This file is required by karma.conf.js and loads recursively all the .spec and framework files
2
+
3
+import 'zone.js/dist/zone-testing';
4
+import { getTestBed } from '@angular/core/testing';
5
+import {
6
+  BrowserDynamicTestingModule,
7
+  platformBrowserDynamicTesting
8
+} from '@angular/platform-browser-dynamic/testing';
9
+
10
+declare const require: any;
11
+
12
+// First, initialize the Angular testing environment.
13
+getTestBed().initTestEnvironment(
14
+  BrowserDynamicTestingModule,
15
+  platformBrowserDynamicTesting()
16
+);
17
+// Then we find all the tests.
18
+const context = require.context('./', true, /\.spec\.ts$/);
19
+// And load the modules.
20
+context.keys().map(context);

+ 12
- 0
client/src/tsconfig.app.json View File

@@ -0,0 +1,12 @@
1
+{
2
+  "extends": "../tsconfig.json",
3
+  "compilerOptions": {
4
+    "outDir": "../out-tsc/app",
5
+    "module": "es2015",
6
+    "types": []
7
+  },
8
+  "exclude": [
9
+    "src/test.ts",
10
+    "**/*.spec.ts"
11
+  ]
12
+}

+ 19
- 0
client/src/tsconfig.spec.json View File

@@ -0,0 +1,19 @@
1
+{
2
+  "extends": "../tsconfig.json",
3
+  "compilerOptions": {
4
+    "outDir": "../out-tsc/spec",
5
+    "module": "commonjs",
6
+    "types": [
7
+      "jasmine",
8
+      "node"
9
+    ]
10
+  },
11
+  "files": [
12
+    "test.ts",
13
+    "polyfills.ts"
14
+  ],
15
+  "include": [
16
+    "**/*.spec.ts",
17
+    "**/*.d.ts"
18
+  ]
19
+}

+ 17
- 0
client/src/tslint.json View File

@@ -0,0 +1,17 @@
1
+{
2
+    "extends": "../tslint.json",
3
+    "rules": {
4
+        "directive-selector": [
5
+            true,
6
+            "attribute",
7
+            "app",
8
+            "camelCase"
9
+        ],
10
+        "component-selector": [
11
+            true,
12
+            "element",
13
+            "app",
14
+            "kebab-case"
15
+        ]
16
+    }
17
+}

+ 20
- 0
client/tsconfig.json View File

@@ -0,0 +1,20 @@
1
+{
2
+  "compileOnSave": false,
3
+  "compilerOptions": {
4
+    "baseUrl": "./",
5
+    "outDir": "./dist/out-tsc",
6
+    "sourceMap": true,
7
+    "declaration": false,
8
+    "moduleResolution": "node",
9
+    "emitDecoratorMetadata": true,
10
+    "experimentalDecorators": true,
11
+    "target": "es5",
12
+    "typeRoots": [
13
+      "node_modules/@types"
14
+    ],
15
+    "lib": [
16
+      "es2017",
17
+      "dom"
18
+    ]
19
+  }
20
+}

+ 130
- 0
client/tslint.json View File

@@ -0,0 +1,130 @@
1
+{
2
+  "rulesDirectory": [
3
+    "node_modules/codelyzer"
4
+  ],
5
+  "rules": {
6
+    "arrow-return-shorthand": true,
7
+    "callable-types": true,
8
+    "class-name": true,
9
+    "comment-format": [
10
+      true,
11
+      "check-space"
12
+    ],
13
+    "curly": true,
14
+    "deprecation": {
15
+      "severity": "warn"
16
+    },
17
+    "eofline": true,
18
+    "forin": true,
19
+    "import-blacklist": [
20
+      true,
21
+      "rxjs/Rx"
22
+    ],
23
+    "import-spacing": true,
24
+    "indent": [
25
+      true,
26
+      "spaces"
27
+    ],
28
+    "interface-over-type-literal": true,
29
+    "label-position": true,
30
+    "max-line-length": [
31
+      true,
32
+      140
33
+    ],
34
+    "member-access": false,
35
+    "member-ordering": [
36
+      true,
37
+      {
38
+        "order": [
39
+          "static-field",
40
+          "instance-field",
41
+          "static-method",
42
+          "instance-method"
43
+        ]
44
+      }
45
+    ],
46
+    "no-arg": true,
47
+    "no-bitwise": true,
48
+    "no-console": [
49
+      true,
50
+      "debug",
51
+      "info",
52
+      "time",
53
+      "timeEnd",
54
+      "trace"
55
+    ],
56
+    "no-construct": true,
57
+    "no-debugger": true,
58
+    "no-duplicate-super": true,
59
+    "no-empty": false,
60
+    "no-empty-interface": true,
61
+    "no-eval": true,
62
+    "no-inferrable-types": [
63
+      true,
64
+      "ignore-params"
65
+    ],
66
+    "no-misused-new": true,
67
+    "no-non-null-assertion": true,
68
+    "no-shadowed-variable": true,
69
+    "no-string-literal": false,
70
+    "no-string-throw": true,
71
+    "no-switch-case-fall-through": true,
72
+    "no-trailing-whitespace": true,
73
+    "no-unnecessary-initializer": true,
74
+    "no-unused-expression": true,
75
+    "no-use-before-declare": true,
76
+    "no-var-keyword": true,
77
+    "object-literal-sort-keys": false,
78
+    "one-line": [
79
+      true,
80
+      "check-open-brace",
81
+      "check-catch",
82
+      "check-else",
83
+      "check-whitespace"
84
+    ],
85
+    "prefer-const": true,
86
+    "quotemark": [
87
+      true,
88
+      "single"
89
+    ],
90
+    "radix": true,
91
+    "semicolon": [
92
+      true,
93
+      "always"
94
+    ],
95
+    "triple-equals": [
96
+      true,
97
+      "allow-null-check"
98
+    ],
99
+    "typedef-whitespace": [
100
+      true,
101
+      {
102
+        "call-signature": "nospace",
103
+        "index-signature": "nospace",
104
+        "parameter": "nospace",
105
+        "property-declaration": "nospace",
106
+        "variable-declaration": "nospace"
107
+      }
108
+    ],
109
+    "unified-signatures": true,
110
+    "variable-name": false,
111
+    "whitespace": [
112
+      true,
113
+      "check-branch",
114
+      "check-decl",
115
+      "check-operator",
116
+      "check-separator",
117
+      "check-type"
118
+    ],
119
+    "no-output-on-prefix": true,
120
+    "use-input-property-decorator": true,
121
+    "use-output-property-decorator": true,
122
+    "use-host-property-decorator": true,
123
+    "no-input-rename": true,
124
+    "no-output-rename": true,
125
+    "use-life-cycle-interface": true,
126
+    "use-pipe-transform-interface": true,
127
+    "component-class-suffix": true,
128
+    "directive-class-suffix": true
129
+  }
130
+}

+ 24
- 0
server/src/test/java/com/stockr/server/stocks/StocksTest.java View File

@@ -6,6 +6,8 @@ import pl.zankowski.iextrading4j.client.IEXTradingClient;
6 6
 import pl.zankowski.iextrading4j.client.rest.request.stocks.BatchStocksRequestBuilder;
7 7
 import pl.zankowski.iextrading4j.client.rest.request.stocks.BatchStocksType;
8 8
 
9
+import java.io.IOException;
10
+
9 11
 import static org.junit.Assert.*;
10 12
 
11 13
 public class StocksTest {
@@ -27,4 +29,26 @@ public class StocksTest {
27 29
         assertNotNull(s.getQuote());
28 30
         assertNotNull(s.getNews());
29 31
     }
32
+
33
+    @Test
34
+    public void objectMapper_ShouldMapJson() throws IOException {
35
+        IEXTradingClient iex = IEXTradingClient.create();
36
+        BatchStocks bs = iex.executeRequest(new BatchStocksRequestBuilder()
37
+                .withSymbol("AAPL")
38
+                .addType(BatchStocksType.NEWS)
39
+                .addType(BatchStocksType.COMPANY)
40
+                .addType(BatchStocksType.QUOTE)
41
+                .addType(BatchStocksType.CHART)
42
+                .build());
43
+
44
+        Stocks s = new Stocks();
45
+        s.setChart(bs.getChart());
46
+        s.setCompany(bs.getCompany());
47
+        s.setQuote(bs.getQuote());
48
+        s.setNews(bs.getNews());
49
+        assertNotNull(s.getChart());
50
+        assertNotNull(s.getCompany());
51
+        assertNotNull(s.getQuote());
52
+        assertNotNull(s.getNews());
53
+    }
30 54
 }