ing
This commit is contained in:
		
							parent
							
								
									f6ad0caac5
								
							
						
					
					
						commit
						f6834722b8
					
				
							
								
								
									
										22
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							@ -1,11 +1,13 @@
 | 
			
		||||
{
 | 
			
		||||
    "editor.tabSize": 2,
 | 
			
		||||
    "editor.insertSpaces": true,
 | 
			
		||||
    "editor.formatOnSave": true,
 | 
			
		||||
    "editor.formatOnPaste": true,
 | 
			
		||||
    "editor.autoClosingBrackets": true,
 | 
			
		||||
    "editor.trimAutoWhitespace": true,
 | 
			
		||||
    "files.trimTrailingWhitespace": true,
 | 
			
		||||
    "files.trimFinalNewlines": true,
 | 
			
		||||
    "git.ignoreLimitWarning": true,
 | 
			
		||||
}
 | 
			
		||||
  "editor.tabSize": 2,
 | 
			
		||||
  "editor.insertSpaces": true,
 | 
			
		||||
  "editor.formatOnSave": true,
 | 
			
		||||
  "editor.formatOnPaste": true,
 | 
			
		||||
  "editor.autoClosingBrackets": true,
 | 
			
		||||
  "editor.trimAutoWhitespace": true,
 | 
			
		||||
  "files.trimTrailingWhitespace": true,
 | 
			
		||||
  "files.trimFinalNewlines": true,
 | 
			
		||||
  "git.ignoreLimitWarning": true,
 | 
			
		||||
 | 
			
		||||
  "prettier.singleQuote": true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -39,6 +39,7 @@
 | 
			
		||||
    "@ngrx/schematics": "^6.1.0",
 | 
			
		||||
    "@ngrx/store": "^6.1.0",
 | 
			
		||||
    "@ngrx/store-devtools": "^6.1.0",
 | 
			
		||||
    "@overflow/rpc-js": "0.0.4",
 | 
			
		||||
    "@types/fs-extra": "^5.0.4",
 | 
			
		||||
    "@types/jasmine": "~2.8.6",
 | 
			
		||||
    "@types/jasminewd2": "~2.0.3",
 | 
			
		||||
@ -78,4 +79,4 @@
 | 
			
		||||
    "webpack-node-externals": "^1.7.2",
 | 
			
		||||
    "zone.js": "^0.8.26"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@ export class AppComponent implements OnInit {
 | 
			
		||||
  public constructor(
 | 
			
		||||
    private electronProxyService: ElectronProxyService,
 | 
			
		||||
  ) {
 | 
			
		||||
    this.showTitleBar = __WIN32__;
 | 
			
		||||
    this.showTitleBar = !__LINUX__;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ngOnInit(): void {
 | 
			
		||||
 | 
			
		||||
@ -8,16 +8,12 @@ const DatabaseVersion = 1;
 | 
			
		||||
  providedIn: 'root'
 | 
			
		||||
})
 | 
			
		||||
export class DatabaseService extends Dexie {
 | 
			
		||||
 | 
			
		||||
  public launches!: Dexie.Table<LaunchState, number>
 | 
			
		||||
 | 
			
		||||
  public launches!: Dexie.Table<LaunchState, number>;
 | 
			
		||||
 | 
			
		||||
  public constructor() {
 | 
			
		||||
    super('overflow-scanner');
 | 
			
		||||
    this.version(1).stores({
 | 
			
		||||
      launches: '++',
 | 
			
		||||
      launches: '++'
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -12,35 +12,36 @@ import { LaunchService } from './launch.service';
 | 
			
		||||
  providedIn: 'root'
 | 
			
		||||
})
 | 
			
		||||
export class ElectronProxyService {
 | 
			
		||||
 | 
			
		||||
  public constructor(
 | 
			
		||||
    private store: Store<any>,
 | 
			
		||||
    private launchService: LaunchService,
 | 
			
		||||
    private launchService: LaunchService
 | 
			
		||||
  ) {
 | 
			
		||||
    this.bindIpcEventHandlers();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private bindIpcEventHandlers(): void {
 | 
			
		||||
    ipcRenderer.on('menu-event',
 | 
			
		||||
      (event: Electron.IpcMessageEvent, { name }: { name: MenuEvent }) => {
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
    ipcRenderer.on(
 | 
			
		||||
      'menu-event',
 | 
			
		||||
      (event: Electron.IpcMessageEvent, { name }: { name: MenuEvent }) => {}
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    ipcRenderer.on('launch-timing-stats',
 | 
			
		||||
    ipcRenderer.on(
 | 
			
		||||
      'launch-timing-stats',
 | 
			
		||||
      (event: Electron.IpcMessageEvent, { state }: { state: LaunchState }) => {
 | 
			
		||||
        console.info(`App ready time: ${state.mainReadyTime}ms`);
 | 
			
		||||
        console.info(`Load time: ${state.loadTime}ms`);
 | 
			
		||||
        console.info(`Renderer ready time: ${state.rendererReadyTime}ms`);
 | 
			
		||||
 | 
			
		||||
        this.launchService.save(state).pipe(
 | 
			
		||||
          map((id: number) => {
 | 
			
		||||
          }),
 | 
			
		||||
          catchError(error => {
 | 
			
		||||
            return of();
 | 
			
		||||
          }),
 | 
			
		||||
          take(1),
 | 
			
		||||
        ).subscribe();
 | 
			
		||||
        this.launchService
 | 
			
		||||
          .save(state)
 | 
			
		||||
          .pipe(
 | 
			
		||||
            map((id: number) => {}),
 | 
			
		||||
            catchError(error => {
 | 
			
		||||
              return of();
 | 
			
		||||
            }),
 | 
			
		||||
            take(1)
 | 
			
		||||
          )
 | 
			
		||||
          .subscribe();
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
@ -52,5 +53,4 @@ export class ElectronProxyService {
 | 
			
		||||
  public getAppMenu(): void {
 | 
			
		||||
    ipcRenderer.send('get-app-menu');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,11 @@
 | 
			
		||||
import { DatabaseService } from './database.service';
 | 
			
		||||
import { ElectronProxyService } from './electron-proxy.service';
 | 
			
		||||
import { LaunchService } from './launch.service';
 | 
			
		||||
import { ProbeService } from './probe.service';
 | 
			
		||||
 | 
			
		||||
export const SERVICES = [
 | 
			
		||||
  DatabaseService,
 | 
			
		||||
  ElectronProxyService,
 | 
			
		||||
  LaunchService,
 | 
			
		||||
  ProbeService
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
@ -4,21 +4,15 @@ import { Observable, defer } from 'rxjs';
 | 
			
		||||
import { DatabaseService } from './database.service';
 | 
			
		||||
import { LaunchState } from '../model';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@Injectable({
 | 
			
		||||
  providedIn: 'root'
 | 
			
		||||
})
 | 
			
		||||
export class LaunchService {
 | 
			
		||||
 | 
			
		||||
  public constructor(
 | 
			
		||||
    private readonly databaseService: DatabaseService,
 | 
			
		||||
  ) {
 | 
			
		||||
  }
 | 
			
		||||
  public constructor(private readonly databaseService: DatabaseService) {}
 | 
			
		||||
 | 
			
		||||
  public save(launchState: LaunchState): Observable<number> {
 | 
			
		||||
    return defer(async () => {
 | 
			
		||||
      return await this.databaseService.launches.add(launchState);
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										29
									
								
								src/commons/service/probe.service.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/commons/service/probe.service.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
			
		||||
import { Injectable } from '@angular/core';
 | 
			
		||||
import {
 | 
			
		||||
  Client,
 | 
			
		||||
  ClientNotificationCodec,
 | 
			
		||||
  RxWebsocketRWC,
 | 
			
		||||
  RxWebsocketSubjectConfig,
 | 
			
		||||
  JSONClientCodec
 | 
			
		||||
} from '@overflow/rpc-js';
 | 
			
		||||
import { Subscription } from 'rxjs';
 | 
			
		||||
 | 
			
		||||
@Injectable()
 | 
			
		||||
export class ProbeService {
 | 
			
		||||
  private probeClient: Client;
 | 
			
		||||
  private notiSubscription: Subscription;
 | 
			
		||||
 | 
			
		||||
  public constructor() {
 | 
			
		||||
    const config: RxWebsocketSubjectConfig<any> = {
 | 
			
		||||
      url: ''
 | 
			
		||||
    };
 | 
			
		||||
    const rwc = new RxWebsocketRWC(config);
 | 
			
		||||
    const codec = new JSONClientCodec();
 | 
			
		||||
    this.probeClient = new Client(codec, rwc);
 | 
			
		||||
    this.notiSubscription = this.probeClient
 | 
			
		||||
      .notification()
 | 
			
		||||
      .subscribe((notiCodec: ClientNotificationCodec) => {
 | 
			
		||||
        console.log(notiCodec.method());
 | 
			
		||||
      });
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
  <link rel="icon" type="image/x-icon" href="favicon.ico">
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body class="platform-win32 theme-light">
 | 
			
		||||
<body class="platform-darwin theme-light">
 | 
			
		||||
  <app-root></app-root>
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										55
									
								
								tslint.json
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								tslint.json
									
									
									
									
									
								
							@ -1,36 +1,22 @@
 | 
			
		||||
{
 | 
			
		||||
  "rulesDirectory": [
 | 
			
		||||
    "node_modules/codelyzer"
 | 
			
		||||
  ],
 | 
			
		||||
  "rulesDirectory": ["node_modules/codelyzer"],
 | 
			
		||||
  "rules": {
 | 
			
		||||
    "arrow-return-shorthand": true,
 | 
			
		||||
    "callable-types": true,
 | 
			
		||||
    "class-name": true,
 | 
			
		||||
    "comment-format": [
 | 
			
		||||
      true,
 | 
			
		||||
      "check-space"
 | 
			
		||||
    ],
 | 
			
		||||
    "comment-format": [true, "check-space"],
 | 
			
		||||
    "curly": true,
 | 
			
		||||
    "deprecation": {
 | 
			
		||||
      "severity": "warn"
 | 
			
		||||
    },
 | 
			
		||||
    "eofline": true,
 | 
			
		||||
    "forin": true,
 | 
			
		||||
    "import-blacklist": [
 | 
			
		||||
      true,
 | 
			
		||||
      "rxjs/Rx"
 | 
			
		||||
    ],
 | 
			
		||||
    "import-blacklist": [true, "rxjs/Rx"],
 | 
			
		||||
    "import-spacing": true,
 | 
			
		||||
    "indent": [
 | 
			
		||||
      true,
 | 
			
		||||
      "spaces"
 | 
			
		||||
    ],
 | 
			
		||||
    "indent": [true, "spaces"],
 | 
			
		||||
    "interface-over-type-literal": true,
 | 
			
		||||
    "label-position": true,
 | 
			
		||||
    "max-line-length": [
 | 
			
		||||
      true,
 | 
			
		||||
      140
 | 
			
		||||
    ],
 | 
			
		||||
    "max-line-length": [true, 140],
 | 
			
		||||
    "member-access": false,
 | 
			
		||||
    "member-ordering": [
 | 
			
		||||
      true,
 | 
			
		||||
@ -45,24 +31,14 @@
 | 
			
		||||
    ],
 | 
			
		||||
    "no-arg": true,
 | 
			
		||||
    "no-bitwise": true,
 | 
			
		||||
    "no-console": [
 | 
			
		||||
      false,
 | 
			
		||||
      "debug",
 | 
			
		||||
      "info",
 | 
			
		||||
      "time",
 | 
			
		||||
      "timeEnd",
 | 
			
		||||
      "trace"
 | 
			
		||||
    ],
 | 
			
		||||
    "no-console": [false, "debug", "info", "time", "timeEnd", "trace"],
 | 
			
		||||
    "no-construct": true,
 | 
			
		||||
    "no-debugger": true,
 | 
			
		||||
    "no-duplicate-super": true,
 | 
			
		||||
    "no-empty": false,
 | 
			
		||||
    "no-empty-interface": true,
 | 
			
		||||
    "no-eval": true,
 | 
			
		||||
    "no-inferrable-types": [
 | 
			
		||||
      true,
 | 
			
		||||
      "ignore-params"
 | 
			
		||||
    ],
 | 
			
		||||
    "no-inferrable-types": [true, "ignore-params"],
 | 
			
		||||
    "no-misused-new": true,
 | 
			
		||||
    "no-non-null-assertion": true,
 | 
			
		||||
    "no-shadowed-variable": true,
 | 
			
		||||
@ -83,19 +59,10 @@
 | 
			
		||||
      "check-whitespace"
 | 
			
		||||
    ],
 | 
			
		||||
    "prefer-const": true,
 | 
			
		||||
    "quotemark": [
 | 
			
		||||
      true,
 | 
			
		||||
      "single"
 | 
			
		||||
    ],
 | 
			
		||||
    "quotemark": [true, "single"],
 | 
			
		||||
    "radix": true,
 | 
			
		||||
    "semicolon": [
 | 
			
		||||
      true,
 | 
			
		||||
      "always"
 | 
			
		||||
    ],
 | 
			
		||||
    "triple-equals": [
 | 
			
		||||
      true,
 | 
			
		||||
      "allow-null-check"
 | 
			
		||||
    ],
 | 
			
		||||
    "semicolon": [true, "always"],
 | 
			
		||||
    "triple-equals": [true, "allow-null-check"],
 | 
			
		||||
    "typedef-whitespace": [
 | 
			
		||||
      true,
 | 
			
		||||
      {
 | 
			
		||||
@ -127,4 +94,4 @@
 | 
			
		||||
    "component-class-suffix": true,
 | 
			
		||||
    "directive-class-suffix": true
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,13 @@
 | 
			
		||||
    tree-kill "^1.0.0"
 | 
			
		||||
    webpack-sources "^1.1.0"
 | 
			
		||||
 | 
			
		||||
"@overflow/rpc-js@0.0.4":
 | 
			
		||||
  version "0.0.4"
 | 
			
		||||
  resolved "https://nexus.loafle.net/repository/npm-all/@overflow/rpc-js/-/rpc-js-0.0.4.tgz#083577e4ca372c62bd8a529c29acca0163a1f6b6"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    rxjs "^6.2.2"
 | 
			
		||||
    url-join "^4.0.0"
 | 
			
		||||
 | 
			
		||||
"@schematics/angular@0.7.3":
 | 
			
		||||
  version "0.7.3"
 | 
			
		||||
  resolved "https://nexus.loafle.net/repository/npm-all/@schematics/angular/-/angular-0.7.3.tgz#d4a33a78b152bded557efddba4616a8fafa9ae24"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user