One of the key benefits of the approach demonstrated in this application is that you can lazy load the map.
5 | Notice how fast this page loaded? That's because we haven't loaded the map yet. Click the button below to load and view the map.
6 |
7 |
The source code for this project can be found here.
8 |
--------------------------------------------------------------------------------
/protractor.conf.js:
--------------------------------------------------------------------------------
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 | './e2e/**/*.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 | beforeLaunch: function() {
23 | require('ts-node').register({
24 | project: 'e2e/tsconfig.e2e.json'
25 | });
26 | },
27 | onPrepare() {
28 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
29 | }
30 | };
31 |
--------------------------------------------------------------------------------
/src/app/home/home.component.spec.ts:
--------------------------------------------------------------------------------
1 | /* tslint:disable:no-unused-variable */
2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
3 | import { By } from '@angular/platform-browser';
4 | import { DebugElement, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
5 |
6 | import { HomeComponent } from './home.component';
7 |
8 | describe('HomeComponent', () => {
9 | let component: HomeComponent;
10 | let fixture: ComponentFixture;
11 |
12 | beforeEach(async(() => {
13 | TestBed.configureTestingModule({
14 | declarations: [ HomeComponent ],
15 | schemas: [CUSTOM_ELEMENTS_SCHEMA]
16 | })
17 | .compileComponents();
18 | }));
19 |
20 | beforeEach(() => {
21 | fixture = TestBed.createComponent(HomeComponent);
22 | component = fixture.componentInstance;
23 | fixture.detectChanges();
24 | });
25 |
26 | it('should create', () => {
27 | expect(component).toBeTruthy();
28 | });
29 | });
30 |
--------------------------------------------------------------------------------
/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { NgModule } from '@angular/core';
3 | import { FormsModule } from '@angular/forms';
4 | import { HttpModule } from '@angular/http';
5 | import { MaterialModule } from '@angular/material';
6 | import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
7 |
8 | // hammerjs is a required import for some of the features in Angular Material
9 | import 'hammerjs';
10 |
11 | import { AppComponent } from './app.component';
12 | import { AppRoutingModule } from './app-routing.module';
13 |
14 | import { HomeComponent } from './home/home.component';
15 | import { HeaderComponent } from './header/header.component';
16 |
17 | @NgModule({
18 | declarations: [
19 | AppComponent,
20 | HomeComponent,
21 | HeaderComponent
22 | ],
23 | imports: [
24 | BrowserModule,
25 | FormsModule,
26 | HttpModule,
27 | MaterialModule,
28 | AppRoutingModule,
29 | BrowserAnimationsModule
30 | ],
31 | bootstrap: [AppComponent]
32 | })
33 | export class AppModule { }
34 |
--------------------------------------------------------------------------------
/src/app/esri-map/esri-map.component.spec.ts:
--------------------------------------------------------------------------------
1 | /* tslint:disable:no-unused-variable */
2 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
4 | import { By } from '@angular/platform-browser';
5 | import { DebugElement } from '@angular/core';
6 |
7 | import { EsriMapComponent } from './esri-map.component';
8 |
9 | describe('EsriMapComponent', () => {
10 | let component: EsriMapComponent;
11 | let fixture: ComponentFixture;
12 |
13 | beforeEach(async(() => {
14 | // provide a mock map class to the component via a mock route
15 | TestBed.configureTestingModule({
16 | declarations: [
17 | EsriMapComponent
18 | ],
19 | schemas: [CUSTOM_ELEMENTS_SCHEMA]
20 | })
21 | .compileComponents();
22 | }));
23 |
24 | beforeEach(() => {
25 | fixture = TestBed.createComponent(EsriMapComponent);
26 | component = fixture.componentInstance;
27 | fixture.detectChanges();
28 | });
29 |
30 | it('should create', () => {
31 | expect(component).toBeTruthy();
32 | });
33 |
34 | });
35 |
--------------------------------------------------------------------------------
/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/long-stack-trace-zone';
4 | import 'zone.js/dist/proxy.js';
5 | import 'zone.js/dist/sync-test';
6 | import 'zone.js/dist/jasmine-patch';
7 | import 'zone.js/dist/async-test';
8 | import 'zone.js/dist/fake-async-test';
9 | import { getTestBed } from '@angular/core/testing';
10 | import {
11 | BrowserDynamicTestingModule,
12 | platformBrowserDynamicTesting
13 | } from '@angular/platform-browser-dynamic/testing';
14 |
15 | // Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
16 | declare var __karma__: any;
17 | declare var require: any;
18 |
19 | // Prevent Karma from running prematurely.
20 | __karma__.loaded = function () {};
21 |
22 | // First, initialize the Angular testing environment.
23 | getTestBed().initTestEnvironment(
24 | BrowserDynamicTestingModule,
25 | platformBrowserDynamicTesting()
26 | );
27 | // Then we find all the tests.
28 | const context = require.context('./', true, /\.spec\.ts$/);
29 | // And load the modules.
30 | context.keys().map(context);
31 | // Finally, start Karma to run the tests.
32 | __karma__.start();
33 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | ## New Contributors
4 |
5 | Thank you for your interest in helping make this repository better!
6 |
7 | Please bear in mind [the goal](/README.md#goal) of this repository when considering your contributions. I try to keep an up to date [backlog of issues](../../issues). I welcome pull requests that resolve any of those issues, but please check first to see if the issue has already been assigned or if anyone has indicated that they are working on it. If you are unsure of the status, don't hesitate to ask in a comment.
8 |
9 | If you discover a bug or would like to see an enhancement that is not in that list, please [add a new issue](../../issues/new) to start a discussion before creating a pull request. I welcome your input!
10 |
11 | ## Collaborator Guidelines
12 |
13 | First, thank you for helping maintain this repository!
14 |
15 | In addition to the above guidelines, please open a pull request for all changes rather than directly pushing your commits to matser.
16 |
17 | I will manage all releases and deployments myself after the code has been merged to master.
18 |
19 | ## Thank You
20 |
21 | Thanks again for offering your valuable time to help make this repository more useful.
22 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # esri-angular-cli-example Change Log
2 | All notable changes to this project will be documented in this file.
3 | This project adheres to [Semantic Versioning](http://semver.org/).
4 |
5 | ## Unreleased
6 |
7 | ### Changed
8 | - update to latest angular-esri-loader and angular-esri-components
9 |
10 | ## 0.4.1
11 |
12 | ### Changed
13 | - upgrade angular, angular cli (to v1), and angular material
14 |
15 | ## 0.4.0
16 |
17 | ### Added
18 | - more compelling map
19 |
20 | ## 0.3.2
21 | ### Changed
22 | - remove local dependency on @types/arcgis-js-api
23 |
24 | ## 0.3.1
25 | ### Changed
26 | - moved css imports to styles.css and out of index.html
27 |
28 | ## 0.3.0
29 | ### Added
30 | - use angular2-esri4-components library for generating the ESRI map
31 | ### Changed
32 | - split map route code into own bundle which is lazy loaded
33 | ### Support
34 | - added npm deploy script
35 |
36 | ## 0.2.0
37 | ## Changed
38 | - exracted EsriLoaderService into own repo angular2-esri-loader
39 | - extracted module loading code into esri-loader
40 | - EsriLoaderService functions return promises
41 |
42 | ## 0.1.0
43 | ### Added
44 | - lazy load ArcGIS API for JavaScript
45 | - material design layout w/ nav links to routes
46 |
--------------------------------------------------------------------------------
/src/app/app.component.spec.ts:
--------------------------------------------------------------------------------
1 | /* tslint:disable:no-unused-variable */
2 |
3 | import { TestBed, async, ComponentFixture } from '@angular/core/testing';
4 | import { RouterTestingModule } from '@angular/router/testing';
5 | import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
6 | import { MaterialModule } from '@angular/material';
7 |
8 | import { AppComponent } from './app.component';
9 |
10 | describe('App: AngularCliEsri', () => {
11 | let component: AppComponent;
12 | let fixture: ComponentFixture;
13 |
14 | beforeEach(() => {
15 | TestBed.configureTestingModule({
16 | declarations: [
17 | AppComponent
18 | ],
19 | imports: [
20 | RouterTestingModule.withRoutes([
21 | { path: 'fakeRoute', redirectTo: '/fakeRoute' }
22 | ])
23 | ],
24 | providers: [
25 | MaterialModule
26 | ],
27 | schemas: [CUSTOM_ELEMENTS_SCHEMA]
28 | });
29 | });
30 |
31 | beforeEach(() => {
32 | fixture = TestBed.createComponent(AppComponent);
33 | component = fixture.componentInstance;
34 | fixture.detectChanges();
35 | });
36 |
37 | it('should create the app', async(() => {
38 | expect(component).toBeTruthy();
39 | }));
40 | });
41 |
--------------------------------------------------------------------------------
/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/0.13/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular/cli'],
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/cli/plugins/karma')
14 | ],
15 | client:{
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | files: [
19 | { pattern: './src/test.ts', watched: false }
20 | ],
21 | preprocessors: {
22 | './src/test.ts': ['@angular/cli']
23 | },
24 | mime: {
25 | 'text/x-typescript': ['ts','tsx']
26 | },
27 | coverageIstanbulReporter: {
28 | reports: [ 'html', 'lcovonly' ],
29 | fixWebpackSourcePaths: true
30 | },
31 | angularCli: {
32 | environment: 'dev'
33 | },
34 | reporters: config.angularCli && config.angularCli.codeCoverage
35 | ? ['progress', 'coverage-istanbul']
36 | : ['progress', 'kjhtml'],
37 | port: 9876,
38 | colors: true,
39 | logLevel: config.LOG_INFO,
40 | autoWatch: true,
41 | browsers: ['Chrome'],
42 | singleRun: false
43 | });
44 | };
45 |
--------------------------------------------------------------------------------
/.angular-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3 | "project": {
4 | "name": "esri-angular-cli-example"
5 | },
6 | "apps": [
7 | {
8 | "root": "src",
9 | "outDir": "dist",
10 | "assets": [
11 | "assets",
12 | "favicon.ico"
13 | ],
14 | "index": "index.html",
15 | "main": "main.ts",
16 | "polyfills": "polyfills.ts",
17 | "test": "test.ts",
18 | "tsconfig": "tsconfig.app.json",
19 | "testTsconfig": "tsconfig.spec.json",
20 | "prefix": "app",
21 | "styles": [
22 | "styles.css"
23 | ],
24 | "scripts": [],
25 | "environmentSource": "environments/environment.ts",
26 | "environments": {
27 | "dev": "environments/environment.ts",
28 | "prod": "environments/environment.prod.ts"
29 | }
30 | }
31 | ],
32 | "e2e": {
33 | "protractor": {
34 | "config": "./protractor.conf.js"
35 | }
36 | },
37 | "lint": [
38 | {
39 | "project": "src/tsconfig.app.json"
40 | },
41 | {
42 | "project": "src/tsconfig.spec.json"
43 | },
44 | {
45 | "project": "e2e/tsconfig.e2e.json"
46 | }
47 | ],
48 | "test": {
49 | "karma": {
50 | "config": "./karma.conf.js"
51 | }
52 | },
53 | "defaults": {
54 | "styleExt": "css",
55 | "component": {
56 | "inlineTemplate": false,
57 | "spec": true
58 | }
59 | }
60 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "esri-angular-cli-example",
3 | "version": "0.4.1",
4 | "license": "MIT",
5 | "angular-cli": {},
6 | "scripts": {
7 | "ng": "ng",
8 | "start": "ng serve",
9 | "build": "ng build",
10 | "test": "ng test",
11 | "lint": "ng lint",
12 | "e2e": "ng e2e"
13 | },
14 | "private": true,
15 | "dependencies": {
16 | "@angular/animations": "^4.0.2",
17 | "@angular/common": "^4.0.0",
18 | "@angular/compiler": "^4.0.0",
19 | "@angular/core": "^4.0.0",
20 | "@angular/forms": "^4.0.0",
21 | "@angular/http": "^4.0.0",
22 | "@angular/material": "^2.0.0-beta.6",
23 | "@angular/platform-browser": "^4.0.0",
24 | "@angular/platform-browser-dynamic": "^4.0.0",
25 | "@angular/router": "^4.0.0",
26 | "angular-esri-components": "^1.0.0",
27 | "angular-esri-loader": "^1.1.0",
28 | "core-js": "^2.4.1",
29 | "hammerjs": "^2.0.8",
30 | "rxjs": "^5.1.0",
31 | "zone.js": "^0.8.4"
32 | },
33 | "devDependencies": {
34 | "@angular/cli": "^1.0.0",
35 | "@angular/compiler-cli": "^4.0.0",
36 | "@types/jasmine": "2.5.38",
37 | "@types/node": "^6.0.60",
38 | "codelyzer": "~2.0.0",
39 | "jasmine-core": "~2.5.2",
40 | "jasmine-spec-reporter": "~3.2.0",
41 | "karma": "~1.4.1",
42 | "karma-chrome-launcher": "~2.0.0",
43 | "karma-cli": "~1.0.1",
44 | "karma-jasmine": "~1.1.0",
45 | "karma-jasmine-html-reporter": "^0.2.2",
46 | "karma-coverage-istanbul-reporter": "^0.2.0",
47 | "protractor": "~5.1.0",
48 | "ts-node": "~2.0.0",
49 | "tslint": "~4.5.0",
50 | "typescript": "~2.2.0"
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/app/header/header.component.spec.ts:
--------------------------------------------------------------------------------
1 | /* tslint:disable:no-unused-variable */
2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
3 | import { By } from '@angular/platform-browser';
4 | import { DebugElement } from '@angular/core';
5 | import { MaterialModule, OverlayContainer } from '@angular/material';
6 |
7 | import { HeaderComponent } from './header.component';
8 |
9 | describe('HeaderComponent', () => {
10 | const title = 'Angular CLI Esri';
11 | let overlayContainerElement: HTMLElement;
12 | let component: HeaderComponent;
13 | let fixture: ComponentFixture;
14 |
15 | beforeEach(async(() => {
16 | TestBed.configureTestingModule({
17 | declarations: [HeaderComponent],
18 | imports: [MaterialModule],
19 | providers: [
20 | {
21 | provide: OverlayContainer, useFactory: () => {
22 | overlayContainerElement = document.createElement('div');
23 | return { getContainerElement: () => overlayContainerElement };
24 | }
25 | }
26 | ]
27 | })
28 | .compileComponents();
29 | }));
30 |
31 | beforeEach(() => {
32 | fixture = TestBed.createComponent(HeaderComponent);
33 | component = fixture.componentInstance;
34 | component.title = title;
35 | fixture.detectChanges();
36 | });
37 |
38 | it(`should have as title '${title}'`, async(() => {
39 | expect(component.title).toEqual(title);
40 | }));
41 |
42 | it('should render title in a span tag', async(() => {
43 | const compiled = fixture.debugElement.nativeElement;
44 | expect(compiled.querySelector('span').textContent).toContain(title);
45 | }));
46 | });
47 |
--------------------------------------------------------------------------------
/src/polyfills.ts:
--------------------------------------------------------------------------------
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/set';
35 |
36 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */
37 | // import 'classlist.js'; // Run `npm install --save classlist.js`.
38 |
39 | /** IE10 and IE11 requires the following to support `@angular/animation`. */
40 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
41 |
42 |
43 | /** Evergreen browsers require these. **/
44 | import 'core-js/es6/reflect';
45 | import 'core-js/es7/reflect';
46 |
47 |
48 | /** ALL Firefox browsers require the following to support `@angular/animation`. **/
49 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
50 |
51 |
52 |
53 | /***************************************************************************************************
54 | * Zone JS is required by Angular itself.
55 | */
56 | import 'zone.js/dist/zone'; // Included with Angular CLI.
57 |
58 |
59 |
60 | /***************************************************************************************************
61 | * APPLICATION IMPORTS
62 | */
63 |
64 | /**
65 | * Date, currency, decimal and percent pipes.
66 | * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
67 | */
68 | // import 'intl'; // Run `npm install --save intl`.
69 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # esri-angular-cli-example
2 |
3 | [View it live](https://tomwayson.github.io/esri-angular-cli-example/)
4 |
5 | ## Goal
6 |
7 | **NOTE** This repository has been archived. For a more up to date example of one way to use the [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/) in an application generated with [angular-cli](https://github.com/angular/angular-cli), see [angular-cli-esri-map](https://github.com/Esri/angular-cli-esri-map).
8 |
9 | The application uses the [angular-esri-components](https://github.com/TheKeithStewart/angular-esri-components) component library to lazy load the ArcGIS API for JavaScript and then require the modules needed to create and work with a map.
10 |
11 | ## Adding the ArcGIS API to your own angular-cli application
12 |
13 | You should **not** use this repository as a starting point for your own application. This application was generated with an early beta of the angular-cli, and while it has been updated to v1 (thanks to [@TheKeithStewart](https://github.com/TheKeithStewart)), _I do **not** intend to keep it up to date w/ newer versions of Angular, the CLI, nor the ArcGIS API going forward_.
14 |
15 | Rather than clone this repository, you should create your own application with the [angular-cli](https://github.com/angular/angular-cli) and then follow the instructions below to add the above libraries:
16 | - [esri-loader](https://github.com/Esri/esri-loader#usage) - a low level service needed to load and use ArcGIS modules (v3.x or v4.x) in non-Dojo applications
17 | - [angular-esri-components](https://github.com/TheKeithStewart/angular-esri-components#setup) - a set of reusable components for use with v4.x (only) of the ArcGIS API
18 |
19 | ## Running this application
20 |
21 | You can clone or download this application and then use the instructions below to run it and/or the tests to get a better sense of how it works.
22 |
23 | ### Development server
24 |
25 | 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.
26 |
27 | ### Code scaffolding
28 |
29 | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class/module`.
30 |
31 | ### Build
32 |
33 | 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.
34 |
35 | ### Running unit tests
36 |
37 | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
38 |
39 | ### Running end-to-end tests
40 |
41 | Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
42 | Before running the tests make sure you are serving the app via `ng serve`.
43 |
44 | ### Deploying to GitHub Pages
45 |
46 | Run `ng github-pages:deploy` to deploy to GitHub Pages.
47 |
48 | ### Further help
49 |
50 | 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).
51 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "rulesDirectory": [
3 | "node_modules/codelyzer"
4 | ],
5 | "rules": {
6 | "callable-types": true,
7 | "class-name": true,
8 | "comment-format": [
9 | true,
10 | "check-space"
11 | ],
12 | "curly": true,
13 | "eofline": true,
14 | "forin": true,
15 | "import-blacklist": [true, "rxjs"],
16 | "import-spacing": true,
17 | "indent": [
18 | true,
19 | "spaces"
20 | ],
21 | "interface-over-type-literal": true,
22 | "label-position": true,
23 | "max-line-length": [
24 | true,
25 | 140
26 | ],
27 | "member-access": false,
28 | "member-ordering": [
29 | true,
30 | "static-before-instance",
31 | "variables-before-functions"
32 | ],
33 | "no-arg": true,
34 | "no-bitwise": true,
35 | "no-console": [
36 | true,
37 | "debug",
38 | "info",
39 | "time",
40 | "timeEnd",
41 | "trace"
42 | ],
43 | "no-construct": true,
44 | "no-debugger": true,
45 | "no-duplicate-variable": true,
46 | "no-empty": false,
47 | "no-empty-interface": true,
48 | "no-eval": true,
49 | "no-inferrable-types": [true, "ignore-params"],
50 | "no-shadowed-variable": true,
51 | "no-string-literal": false,
52 | "no-string-throw": true,
53 | "no-switch-case-fall-through": true,
54 | "no-trailing-whitespace": true,
55 | "no-unused-expression": true,
56 | "no-use-before-declare": true,
57 | "no-var-keyword": true,
58 | "object-literal-sort-keys": false,
59 | "one-line": [
60 | true,
61 | "check-open-brace",
62 | "check-catch",
63 | "check-else",
64 | "check-whitespace"
65 | ],
66 | "prefer-const": true,
67 | "quotemark": [
68 | true,
69 | "single"
70 | ],
71 | "radix": true,
72 | "semicolon": [
73 | "always"
74 | ],
75 | "triple-equals": [
76 | true,
77 | "allow-null-check"
78 | ],
79 | "typedef-whitespace": [
80 | true,
81 | {
82 | "call-signature": "nospace",
83 | "index-signature": "nospace",
84 | "parameter": "nospace",
85 | "property-declaration": "nospace",
86 | "variable-declaration": "nospace"
87 | }
88 | ],
89 | "typeof-compare": true,
90 | "unified-signatures": true,
91 | "variable-name": false,
92 | "whitespace": [
93 | true,
94 | "check-branch",
95 | "check-decl",
96 | "check-operator",
97 | "check-separator",
98 | "check-type"
99 | ],
100 |
101 | "directive-selector": [true, "attribute", "app", "camelCase"],
102 | "component-selector": [true, "element", "app", "kebab-case"],
103 | "use-input-property-decorator": true,
104 | "use-output-property-decorator": true,
105 | "use-host-property-decorator": true,
106 | "no-input-rename": true,
107 | "no-output-rename": true,
108 | "use-life-cycle-interface": true,
109 | "use-pipe-transform-interface": true,
110 | "component-class-suffix": true,
111 | "directive-class-suffix": true,
112 | "no-access-missing-member": true,
113 | "templates-use-public": true,
114 | "invoke-injectable": true
115 | }
116 | }
117 |
--------------------------------------------------------------------------------