├── README.md
├── api
├── Dockerfile-dev
├── package-lock.json
├── package.json
└── server.js
├── app-ui
├── Dockerfile-dev
├── README.md
├── angular.json
├── browserslist
├── dist
│ └── angular-nodejs-example
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main-es2015.js
│ │ ├── main-es2015.js.map
│ │ ├── main-es5.js
│ │ ├── main-es5.js.map
│ │ ├── polyfills-es2015.js
│ │ ├── polyfills-es2015.js.map
│ │ ├── polyfills-es5.js
│ │ ├── polyfills-es5.js.map
│ │ ├── runtime-es2015.js
│ │ ├── runtime-es2015.js.map
│ │ ├── runtime-es5.js
│ │ ├── runtime-es5.js.map
│ │ ├── styles-es2015.js
│ │ ├── styles-es2015.js.map
│ │ ├── styles-es5.js
│ │ ├── styles-es5.js.map
│ │ ├── vendor-es2015.js
│ │ ├── vendor-es2015.js.map
│ │ ├── vendor-es5.js
│ │ └── vendor-es5.js.map
├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.json
├── karma.conf.js
├── package-lock.json
├── package.json
├── proxy.conf.json
├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app-state
│ │ │ ├── actions
│ │ │ │ └── createUser.ts
│ │ │ ├── effects
│ │ │ │ └── index.ts
│ │ │ ├── models
│ │ │ │ ├── index.ts
│ │ │ │ └── user.model.ts
│ │ │ ├── reducers
│ │ │ │ ├── createuser.ts
│ │ │ │ └── index.ts
│ │ │ └── shared
│ │ │ │ └── utils.ts
│ │ ├── app.component.css
│ │ ├── app.component.html
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── app.service.spec.ts
│ │ ├── app.service.ts
│ │ ├── display-board.component.css
│ │ ├── display-board.component.html
│ │ ├── display-board.component.spec.ts
│ │ ├── display-board.component.ts
│ │ ├── header
│ │ │ ├── header.component.css
│ │ │ ├── header.component.html
│ │ │ ├── header.component.spec.ts
│ │ │ └── header.component.ts
│ │ ├── users.component.css
│ │ ├── users.component.html
│ │ ├── users.component.spec.ts
│ │ └── users.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.css
│ └── test.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.spec.json
└── tslint.json
└── docker-compose.yml
/README.md:
--------------------------------------------------------------------------------
1 | # angular-nodejs-docker-compose
2 | Angular Nodejs Local development with Docker compose
3 |
--------------------------------------------------------------------------------
/api/Dockerfile-dev:
--------------------------------------------------------------------------------
1 | FROM node:10
2 |
3 | WORKDIR /usr/src/app/api
4 |
5 | COPY package*.json ./
6 |
7 | RUN npm install
8 |
9 | EXPOSE 3080
10 |
11 | CMD ["npm", "run", "dev"]
12 |
13 |
--------------------------------------------------------------------------------
/api/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-nodejs-example",
3 | "version": "1.0.0",
4 | "description": "node server",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "node server.bundle.js",
8 | "build": "webpack",
9 | "dev": "nodemon ./server.js localhost 3080",
10 | "test": "echo \"Error: no test specified\" && exit 1"
11 | },
12 | "repository": {
13 | "type": "git",
14 | "url": "git+https://github.com/bbachi/angular-nodejs-example.git"
15 | },
16 | "author": "Bhargav Bachina",
17 | "license": "ISC",
18 | "bugs": {
19 | "url": "https://github.com/bbachi/angular-nodejs-example/issues"
20 | },
21 | "homepage": "https://github.com/bbachi/angular-nodejs-example#readme",
22 | "dependencies": {
23 | "express": "^4.17.1"
24 | },
25 | "devDependencies": {
26 | "del": "^5.1.0",
27 | "fancy-log": "^1.3.3",
28 | "gulp": "^4.0.2",
29 | "gulp-zip": "^5.0.1",
30 | "nodemon": "^2.0.2",
31 | "webpack": "^4.42.1",
32 | "webpack-stream": "^5.2.1"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/api/server.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const app = express(),
3 | bodyParser = require("body-parser");
4 | port = 3080;
5 |
6 | const users = [];
7 |
8 | app.use(bodyParser.json());
9 | app.use(express.static(process.cwd()+"/my-app/dist/angular-nodejs-docker-compose/"));
10 |
11 | app.get('/api/users', (req, res) => {
12 | console.log('dfsdfsd')
13 | res.json(users);
14 | });
15 |
16 | app.post('/api/user', (req, res) => {
17 | const user = req.body.user;
18 | users.push(user);
19 | res.json("user addedd");
20 | });
21 |
22 | app.get('/', (req,res) => {
23 | res.sendFile(process.cwd()+"/app-ui/dist/angular-nodejs-docker-compose/index.html")
24 | });
25 |
26 | app.listen(port, () => {
27 | console.log(`Server listening on the port::${port}`);
28 | });
29 |
--------------------------------------------------------------------------------
/app-ui/Dockerfile-dev:
--------------------------------------------------------------------------------
1 | FROM node:10
2 |
3 | WORKDIR /usr/src/app/app-ui
4 |
5 | COPY package*.json ./
6 |
7 | RUN npm install -g @angular/cli @angular-devkit/build-angular && npm install
8 |
9 | EXPOSE 4201
10 |
11 | CMD ["npm", "start"]
--------------------------------------------------------------------------------
/app-ui/README.md:
--------------------------------------------------------------------------------
1 | # AngularNodejsExample
2 |
3 | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.4.
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).
28 |
--------------------------------------------------------------------------------
/app-ui/angular.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3 | "version": 1,
4 | "newProjectRoot": "projects",
5 | "projects": {
6 | "angular-nodejs-example": {
7 | "projectType": "application",
8 | "schematics": {},
9 | "root": "",
10 | "sourceRoot": "src",
11 | "prefix": "app",
12 | "architect": {
13 | "build": {
14 | "builder": "@angular-devkit/build-angular:browser",
15 | "options": {
16 | "outputPath": "dist/angular-nodejs-example",
17 | "index": "src/index.html",
18 | "main": "src/main.ts",
19 | "polyfills": "src/polyfills.ts",
20 | "tsConfig": "tsconfig.app.json",
21 | "aot": true,
22 | "assets": [
23 | "src/favicon.ico",
24 | "src/assets"
25 | ],
26 | "styles": [
27 | "./node_modules/bootstrap/dist/css/bootstrap.min.css",
28 | "./node_modules/ngx-bootstrap/datepicker/bs-datepicker.css",
29 | "src/styles.css"
30 | ],
31 | "scripts": []
32 | },
33 | "configurations": {
34 | "production": {
35 | "fileReplacements": [
36 | {
37 | "replace": "src/environments/environment.ts",
38 | "with": "src/environments/environment.prod.ts"
39 | }
40 | ],
41 | "optimization": true,
42 | "outputHashing": "all",
43 | "sourceMap": false,
44 | "extractCss": true,
45 | "namedChunks": false,
46 | "extractLicenses": true,
47 | "vendorChunk": false,
48 | "buildOptimizer": true,
49 | "budgets": [
50 | {
51 | "type": "initial",
52 | "maximumWarning": "2mb",
53 | "maximumError": "5mb"
54 | },
55 | {
56 | "type": "anyComponentStyle",
57 | "maximumWarning": "6kb",
58 | "maximumError": "10kb"
59 | }
60 | ]
61 | }
62 | }
63 | },
64 | "serve": {
65 | "builder": "@angular-devkit/build-angular:dev-server",
66 | "options": {
67 | "browserTarget": "angular-nodejs-example:build",
68 | "proxyConfig": "proxy.conf.json"
69 | },
70 | "configurations": {
71 | "production": {
72 | "browserTarget": "angular-nodejs-example:build:production"
73 | }
74 | }
75 | },
76 | "extract-i18n": {
77 | "builder": "@angular-devkit/build-angular:extract-i18n",
78 | "options": {
79 | "browserTarget": "angular-nodejs-example:build"
80 | }
81 | },
82 | "test": {
83 | "builder": "@angular-devkit/build-angular:karma",
84 | "options": {
85 | "main": "src/test.ts",
86 | "polyfills": "src/polyfills.ts",
87 | "tsConfig": "tsconfig.spec.json",
88 | "karmaConfig": "karma.conf.js",
89 | "assets": [
90 | "src/favicon.ico",
91 | "src/assets"
92 | ],
93 | "styles": [
94 | "./node_modules/bootstrap/dist/css/bootstrap.min.css",
95 | "./node_modules/ngx-bootstrap/datepicker/bs-datepicker.css",
96 | "src/styles.css"
97 | ],
98 | "scripts": []
99 | }
100 | },
101 | "lint": {
102 | "builder": "@angular-devkit/build-angular:tslint",
103 | "options": {
104 | "tsConfig": [
105 | "tsconfig.app.json",
106 | "tsconfig.spec.json",
107 | "e2e/tsconfig.json"
108 | ],
109 | "exclude": [
110 | "**/node_modules/**"
111 | ]
112 | }
113 | },
114 | "e2e": {
115 | "builder": "@angular-devkit/build-angular:protractor",
116 | "options": {
117 | "protractorConfig": "e2e/protractor.conf.js",
118 | "devServerTarget": "angular-nodejs-example:serve"
119 | },
120 | "configurations": {
121 | "production": {
122 | "devServerTarget": "angular-nodejs-example:serve:production"
123 | }
124 | }
125 | }
126 | }
127 | }
128 | },
129 | "defaultProject": "angular-nodejs-example",
130 | "cli": {
131 | "analytics": "538ab48f-d51e-4edf-a47d-cedcd8047144"
132 | }
133 | }
134 |
--------------------------------------------------------------------------------
/app-ui/browserslist:
--------------------------------------------------------------------------------
1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
2 | # For additional information regarding the format and rule options, please see:
3 | # https://github.com/browserslist/browserslist#queries
4 |
5 | # You can see what browsers were selected by your queries by running:
6 | # npx browserslist
7 |
8 | > 0.5%
9 | last 2 versions
10 | Firefox ESR
11 | not dead
12 | not IE 9-11 # For IE 9-11 support, remove 'not'.
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbachi/angular-nodejs-docker-compose/bc6dafa1810c41fdb4dd8d1e1f36e451c84638ac/app-ui/dist/angular-nodejs-example/favicon.ico
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AngularNodejsExample
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/main-es2015.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["main"],{
2 |
3 | /***/ "./$$_lazy_route_resource lazy recursive":
4 | /*!******************************************************!*\
5 | !*** ./$$_lazy_route_resource lazy namespace object ***!
6 | \******************************************************/
7 | /*! no static exports found */
8 | /***/ (function(module, exports) {
9 |
10 | function webpackEmptyAsyncContext(req) {
11 | // Here Promise.resolve().then() is used instead of new Promise() to prevent
12 | // uncaught exception popping up in devtools
13 | return Promise.resolve().then(function() {
14 | var e = new Error("Cannot find module '" + req + "'");
15 | e.code = 'MODULE_NOT_FOUND';
16 | throw e;
17 | });
18 | }
19 | webpackEmptyAsyncContext.keys = function() { return []; };
20 | webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
21 | module.exports = webpackEmptyAsyncContext;
22 | webpackEmptyAsyncContext.id = "./$$_lazy_route_resource lazy recursive";
23 |
24 | /***/ }),
25 |
26 | /***/ "./src/app/app-routing.module.ts":
27 | /*!***************************************!*\
28 | !*** ./src/app/app-routing.module.ts ***!
29 | \***************************************/
30 | /*! exports provided: AppRoutingModule */
31 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
32 |
33 | "use strict";
34 | __webpack_require__.r(__webpack_exports__);
35 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppRoutingModule", function() { return AppRoutingModule; });
36 | /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
37 | /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/__ivy_ngcc__/fesm2015/router.js");
38 |
39 |
40 |
41 |
42 | const routes = [];
43 | class AppRoutingModule {
44 | }
45 | AppRoutingModule.ɵmod = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({ type: AppRoutingModule });
46 | AppRoutingModule.ɵinj = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({ factory: function AppRoutingModule_Factory(t) { return new (t || AppRoutingModule)(); }, imports: [[_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"].forRoot(routes)],
47 | _angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"]] });
48 | (function () { (typeof ngJitMode === "undefined" || ngJitMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵsetNgModuleScope"](AppRoutingModule, { imports: [_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"]], exports: [_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"]] }); })();
49 | /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](AppRoutingModule, [{
50 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["NgModule"],
51 | args: [{
52 | imports: [_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"].forRoot(routes)],
53 | exports: [_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"]]
54 | }]
55 | }], null, null); })();
56 |
57 |
58 | /***/ }),
59 |
60 | /***/ "./src/app/app.component.ts":
61 | /*!**********************************!*\
62 | !*** ./src/app/app.component.ts ***!
63 | \**********************************/
64 | /*! exports provided: AppComponent */
65 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
66 |
67 | "use strict";
68 | __webpack_require__.r(__webpack_exports__);
69 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppComponent", function() { return AppComponent; });
70 | /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
71 | /* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/__ivy_ngcc__/fesm2015/forms.js");
72 | /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js");
73 | /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm2015/index.js");
74 | /* harmony import */ var _app_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app.service */ "./src/app/app.service.ts");
75 | /* harmony import */ var _header_header_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./header/header.component */ "./src/app/header/header.component.ts");
76 | /* harmony import */ var _display_board_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./display-board.component */ "./src/app/display-board.component.ts");
77 | /* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/__ivy_ngcc__/fesm2015/common.js");
78 | /* harmony import */ var _users_component__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./users.component */ "./src/app/users.component.ts");
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 | function AppComponent_app_users_26_Template(rf, ctx) { if (rf & 1) {
91 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](0, "app-users", 16);
92 | } if (rf & 2) {
93 | const ctx_r0 = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵnextContext"]();
94 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("users", ctx_r0.users);
95 | } }
96 | class AppComponent {
97 | constructor(appService) {
98 | this.appService = appService;
99 | this.title = 'angular-nodejs-example';
100 | this.userForm = new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormGroup"]({
101 | firstName: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]('', _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].nullValidator && _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].required),
102 | lastName: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]('', _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].nullValidator && _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].required),
103 | email: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]('', _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].nullValidator && _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].required)
104 | });
105 | this.users = [];
106 | this.userCount = 0;
107 | this.destroy$ = new rxjs__WEBPACK_IMPORTED_MODULE_3__["Subject"]();
108 | }
109 | onSubmit() {
110 | this.appService.addUser(this.userForm.value).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["takeUntil"])(this.destroy$)).subscribe(data => {
111 | console.log('message::::', data);
112 | this.userCount = this.userCount + 1;
113 | console.log(this.userCount);
114 | this.userForm.reset();
115 | });
116 | }
117 | getAllUsers() {
118 | this.appService.getUsers().pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["takeUntil"])(this.destroy$)).subscribe((users) => {
119 | this.users = users;
120 | });
121 | }
122 | ngOnDestroy() {
123 | this.destroy$.next(true);
124 | this.destroy$.unsubscribe();
125 | }
126 | }
127 | AppComponent.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_app_service__WEBPACK_IMPORTED_MODULE_4__["AppService"])); };
128 | AppComponent.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: AppComponent, selectors: [["app-root"]], decls: 27, vars: 4, consts: [[1, "container"], [1, "row"], [1, "col-md-7", "mrgnbtm"], [3, "formGroup", "ngSubmit"], [1, "form-group", "col-md-6"], ["for", "exampleInputEmail1"], ["type", "text", "formControlName", "firstName", "id", "exampleInputEmail1", "aria-describedby", "emailHelp", "placeholder", "First Name", 1, "form-control"], ["for", "exampleInputPassword1"], ["type", "text", "formControlName", "lastName", "id", "exampleInputPassword1", "placeholder", "Last Name", 1, "form-control"], [1, "form-group", "col-md-12"], ["type", "text", "formControlName", "email", "id", "exampleInputEmail1", "aria-describedby", "emailHelp", "placeholder", "Email", 1, "form-control"], ["type", "submit", 1, "btn", "btn-danger", 3, "disabled"], [1, "col-md-4", "mrgnbtm"], [3, "userCount", "getUsersEvent"], [1, "mrgnbtm"], [3, "users", 4, "ngIf"], [3, "users"]], template: function AppComponent_Template(rf, ctx) { if (rf & 1) {
129 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](0, "app-header");
130 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "div", 0);
131 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](2, "div", 1);
132 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](3, "div", 2);
133 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](4, "h2");
134 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](5, "Create User");
135 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
136 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](6, "form", 3);
137 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵlistener"]("ngSubmit", function AppComponent_Template_form_ngSubmit_6_listener() { return ctx.onSubmit(); });
138 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](7, "div", 1);
139 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](8, "div", 4);
140 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](9, "label", 5);
141 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](10, "First Name");
142 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
143 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](11, "input", 6);
144 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
145 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](12, "div", 4);
146 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](13, "label", 7);
147 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](14, "Last Name");
148 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
149 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](15, "input", 8);
150 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
151 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
152 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](16, "div", 1);
153 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](17, "div", 9);
154 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](18, "label", 5);
155 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](19, "Email");
156 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
157 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](20, "input", 10);
158 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
159 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
160 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](21, "button", 11);
161 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](22, "Create");
162 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
163 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
164 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
165 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](23, "div", 12);
166 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](24, "app-display-board", 13);
167 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵlistener"]("getUsersEvent", function AppComponent_Template_app_display_board_getUsersEvent_24_listener() { return ctx.getAllUsers(); });
168 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
169 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
170 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
171 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
172 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](25, "div", 14);
173 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtemplate"](26, AppComponent_app_users_26_Template, 1, 1, "app-users", 15);
174 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
175 | } if (rf & 2) {
176 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](6);
177 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("formGroup", ctx.userForm);
178 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](15);
179 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("disabled", !ctx.userForm.valid);
180 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](3);
181 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("userCount", ctx.userCount);
182 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
183 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("ngIf", ctx.users.length !== 0);
184 | } }, directives: [_header_header_component__WEBPACK_IMPORTED_MODULE_5__["HeaderComponent"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["ɵangular_packages_forms_forms_y"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["NgControlStatusGroup"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormGroupDirective"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["DefaultValueAccessor"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["NgControlStatus"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControlName"], _display_board_component__WEBPACK_IMPORTED_MODULE_6__["DisplayBoardComponent"], _angular_common__WEBPACK_IMPORTED_MODULE_7__["NgIf"], _users_component__WEBPACK_IMPORTED_MODULE_8__["UsersComponent"]], styles: [".mrgnbtm[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXBwLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxnQkFBZ0I7QUFDbEIiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tcmduYnRtIHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbn1cbiJdfQ== */"] });
185 | /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](AppComponent, [{
186 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
187 | args: [{
188 | selector: 'app-root',
189 | templateUrl: './app.component.html',
190 | styleUrls: ['./app.component.css']
191 | }]
192 | }], function () { return [{ type: _app_service__WEBPACK_IMPORTED_MODULE_4__["AppService"] }]; }, null); })();
193 |
194 |
195 | /***/ }),
196 |
197 | /***/ "./src/app/app.module.ts":
198 | /*!*******************************!*\
199 | !*** ./src/app/app.module.ts ***!
200 | \*******************************/
201 | /*! exports provided: AppModule */
202 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
203 |
204 | "use strict";
205 | __webpack_require__.r(__webpack_exports__);
206 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppModule", function() { return AppModule; });
207 | /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/platform-browser.js");
208 | /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
209 | /* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/__ivy_ngcc__/fesm2015/forms.js");
210 | /* harmony import */ var _app_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app-routing.module */ "./src/app/app-routing.module.ts");
211 | /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/__ivy_ngcc__/fesm2015/http.js");
212 | /* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./app.component */ "./src/app/app.component.ts");
213 | /* harmony import */ var _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/platform-browser/animations */ "./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/animations.js");
214 | /* harmony import */ var _header_header_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./header/header.component */ "./src/app/header/header.component.ts");
215 | /* harmony import */ var _display_board_component__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./display-board.component */ "./src/app/display-board.component.ts");
216 | /* harmony import */ var _users_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./users.component */ "./src/app/users.component.ts");
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 | // state related imports
229 | // import { StoreModule } from '@ngrx/store';
230 | // import { StoreDevtoolsModule } from '@ngrx/store-devtools';
231 | // import { reducers, metaReducers } from './app-state/reducers';
232 | // import { CustomRouterStateSerializer } from './app-state/shared/utils';
233 | // import { StoreRouterConnectingModule, RouterStateSerializer } from '@ngrx/router-store';
234 | class AppModule {
235 | }
236 | AppModule.ɵmod = _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineNgModule"]({ type: AppModule, bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_5__["AppComponent"]] });
237 | AppModule.ɵinj = _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineInjector"]({ factory: function AppModule_Factory(t) { return new (t || AppModule)(); }, providers: [], imports: [[
238 | _angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__["BrowserModule"],
239 | _app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"],
240 | _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_6__["BrowserAnimationsModule"],
241 | _angular_forms__WEBPACK_IMPORTED_MODULE_2__["ReactiveFormsModule"],
242 | _angular_common_http__WEBPACK_IMPORTED_MODULE_4__["HttpClientModule"],
243 | ]] });
244 | (function () { (typeof ngJitMode === "undefined" || ngJitMode) && _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵsetNgModuleScope"](AppModule, { declarations: [_app_component__WEBPACK_IMPORTED_MODULE_5__["AppComponent"],
245 | _header_header_component__WEBPACK_IMPORTED_MODULE_7__["HeaderComponent"],
246 | _display_board_component__WEBPACK_IMPORTED_MODULE_8__["DisplayBoardComponent"],
247 | _users_component__WEBPACK_IMPORTED_MODULE_9__["UsersComponent"]], imports: [_angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__["BrowserModule"],
248 | _app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"],
249 | _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_6__["BrowserAnimationsModule"],
250 | _angular_forms__WEBPACK_IMPORTED_MODULE_2__["ReactiveFormsModule"],
251 | _angular_common_http__WEBPACK_IMPORTED_MODULE_4__["HttpClientModule"]] }); })();
252 | /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](AppModule, [{
253 | type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"],
254 | args: [{
255 | declarations: [
256 | _app_component__WEBPACK_IMPORTED_MODULE_5__["AppComponent"],
257 | _header_header_component__WEBPACK_IMPORTED_MODULE_7__["HeaderComponent"],
258 | _display_board_component__WEBPACK_IMPORTED_MODULE_8__["DisplayBoardComponent"],
259 | _users_component__WEBPACK_IMPORTED_MODULE_9__["UsersComponent"]
260 | ],
261 | imports: [
262 | _angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__["BrowserModule"],
263 | _app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"],
264 | _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_6__["BrowserAnimationsModule"],
265 | _angular_forms__WEBPACK_IMPORTED_MODULE_2__["ReactiveFormsModule"],
266 | _angular_common_http__WEBPACK_IMPORTED_MODULE_4__["HttpClientModule"],
267 | ],
268 | providers: [],
269 | bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_5__["AppComponent"]]
270 | }]
271 | }], null, null); })();
272 |
273 |
274 | /***/ }),
275 |
276 | /***/ "./src/app/app.service.ts":
277 | /*!********************************!*\
278 | !*** ./src/app/app.service.ts ***!
279 | \********************************/
280 | /*! exports provided: AppService */
281 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
282 |
283 | "use strict";
284 | __webpack_require__.r(__webpack_exports__);
285 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppService", function() { return AppService; });
286 | /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
287 | /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/__ivy_ngcc__/fesm2015/http.js");
288 |
289 |
290 |
291 | class AppService {
292 | constructor(http) {
293 | this.http = http;
294 | this.rootURL = '/api';
295 | }
296 | getUsers() {
297 | return this.http.get(this.rootURL + '/users');
298 | }
299 | addUser(user) {
300 | return this.http.post(this.rootURL + '/user', { user });
301 | }
302 | }
303 | AppService.ɵfac = function AppService_Factory(t) { return new (t || AppService)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpClient"])); };
304 | AppService.ɵprov = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ token: AppService, factory: AppService.ɵfac, providedIn: 'root' });
305 | /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](AppService, [{
306 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Injectable"],
307 | args: [{
308 | providedIn: 'root'
309 | }]
310 | }], function () { return [{ type: _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpClient"] }]; }, null); })();
311 |
312 |
313 | /***/ }),
314 |
315 | /***/ "./src/app/display-board.component.ts":
316 | /*!********************************************!*\
317 | !*** ./src/app/display-board.component.ts ***!
318 | \********************************************/
319 | /*! exports provided: DisplayBoardComponent */
320 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
321 |
322 | "use strict";
323 | __webpack_require__.r(__webpack_exports__);
324 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DisplayBoardComponent", function() { return DisplayBoardComponent; });
325 | /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
326 |
327 |
328 | class DisplayBoardComponent {
329 | constructor() {
330 | this.userCount = 0;
331 | this.getUsersEvent = new _angular_core__WEBPACK_IMPORTED_MODULE_0__["EventEmitter"]();
332 | }
333 | ngOnInit() {
334 | }
335 | getAllUsers() {
336 | this.getUsersEvent.emit('get all users');
337 | }
338 | }
339 | DisplayBoardComponent.ɵfac = function DisplayBoardComponent_Factory(t) { return new (t || DisplayBoardComponent)(); };
340 | DisplayBoardComponent.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: DisplayBoardComponent, selectors: [["app-display-board"]], inputs: { userCount: "userCount" }, outputs: { getUsersEvent: "getUsersEvent" }, decls: 8, vars: 1, consts: [[1, "display-board"], [1, "number"], [1, "btn"], [1, "btn", "btn-warning", 3, "click"]], template: function DisplayBoardComponent_Template(rf, ctx) { if (rf & 1) {
341 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "div", 0);
342 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "h4");
343 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](2, "Users Created");
344 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
345 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](3, "div", 1);
346 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](4);
347 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
348 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](5, "div", 2);
349 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](6, "button", 3);
350 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵlistener"]("click", function DisplayBoardComponent_Template_button_click_6_listener() { return ctx.getAllUsers(); });
351 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](7, "Get All Users");
352 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
353 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
354 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
355 | } if (rf & 2) {
356 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](4);
357 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate1"](" ", ctx.userCount, " ");
358 | } }, styles: [".display-board[_ngcontent-%COMP%] {\n width: 100%;\n background-color: rgb(193, 236, 112);\n padding: 5%;\n}\n\n.number[_ngcontent-%COMP%] {\n color: red;\n font-size: 75px;\n text-align: center;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGlzcGxheS1ib2FyZC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVztFQUNYLG9DQUFvQztFQUNwQyxXQUFXO0FBQ2I7O0FBRUE7RUFDRSxVQUFVO0VBQ1YsZUFBZTtFQUNmLGtCQUFrQjtBQUNwQiIsImZpbGUiOiJzcmMvYXBwL2Rpc3BsYXktYm9hcmQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5kaXNwbGF5LWJvYXJkIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTMsIDIzNiwgMTEyKTtcbiAgcGFkZGluZzogNSU7XG59XG5cbi5udW1iZXIge1xuICBjb2xvcjogcmVkO1xuICBmb250LXNpemU6IDc1cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiJdfQ== */"] });
359 | /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](DisplayBoardComponent, [{
360 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
361 | args: [{
362 | selector: 'app-display-board',
363 | templateUrl: './display-board.component.html',
364 | styleUrls: ['./display-board.component.css']
365 | }]
366 | }], function () { return []; }, { userCount: [{
367 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
368 | }], getUsersEvent: [{
369 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Output"]
370 | }] }); })();
371 |
372 |
373 | /***/ }),
374 |
375 | /***/ "./src/app/header/header.component.ts":
376 | /*!********************************************!*\
377 | !*** ./src/app/header/header.component.ts ***!
378 | \********************************************/
379 | /*! exports provided: HeaderComponent */
380 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
381 |
382 | "use strict";
383 | __webpack_require__.r(__webpack_exports__);
384 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderComponent", function() { return HeaderComponent; });
385 | /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
386 |
387 |
388 | class HeaderComponent {
389 | constructor() {
390 | }
391 | ngOnInit() {
392 | }
393 | }
394 | HeaderComponent.ɵfac = function HeaderComponent_Factory(t) { return new (t || HeaderComponent)(); };
395 | HeaderComponent.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: HeaderComponent, selectors: [["app-header"]], decls: 3, vars: 0, consts: [[1, "header"]], template: function HeaderComponent_Template(rf, ctx) { if (rf & 1) {
396 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "div", 0);
397 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "h1");
398 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](2, "Angular With NodeJS");
399 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
400 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
401 | } }, styles: [".header[_ngcontent-%COMP%] {\n width: 100%;\n padding: 2%;\n background-color: blueviolet;\n color: white;\n text-align: center;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVztFQUNYLFdBQVc7RUFDWCw0QkFBNEI7RUFDNUIsWUFBWTtFQUNaLGtCQUFrQjtBQUNwQiIsImZpbGUiOiJzcmMvYXBwL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oZWFkZXIge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMiU7XG4gIGJhY2tncm91bmQtY29sb3I6IGJsdWV2aW9sZXQ7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIl19 */"] });
402 | /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](HeaderComponent, [{
403 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
404 | args: [{
405 | selector: 'app-header',
406 | templateUrl: './header.component.html',
407 | styleUrls: ['./header.component.css']
408 | }]
409 | }], function () { return []; }, null); })();
410 |
411 |
412 | /***/ }),
413 |
414 | /***/ "./src/app/users.component.ts":
415 | /*!************************************!*\
416 | !*** ./src/app/users.component.ts ***!
417 | \************************************/
418 | /*! exports provided: UsersComponent */
419 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
420 |
421 | "use strict";
422 | __webpack_require__.r(__webpack_exports__);
423 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UsersComponent", function() { return UsersComponent; });
424 | /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
425 | /* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/__ivy_ngcc__/fesm2015/common.js");
426 |
427 |
428 |
429 | function UsersComponent_tr_15_Template(rf, ctx) { if (rf & 1) {
430 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "tr");
431 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "td");
432 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](2);
433 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
434 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](3, "td");
435 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](4);
436 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
437 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](5, "td");
438 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](6);
439 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
440 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](7, "td");
441 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](8);
442 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
443 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
444 | } if (rf & 2) {
445 | const user_r2 = ctx.$implicit;
446 | const i_r3 = ctx.index;
447 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
448 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate"](i_r3 + 1);
449 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
450 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate"](user_r2.firstName);
451 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
452 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate"](user_r2.lastName);
453 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
454 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate"](user_r2.email);
455 | } }
456 | class UsersComponent {
457 | constructor() {
458 | }
459 | ngOnInit() {
460 | }
461 | }
462 | UsersComponent.ɵfac = function UsersComponent_Factory(t) { return new (t || UsersComponent)(); };
463 | UsersComponent.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({ type: UsersComponent, selectors: [["app-users"]], inputs: { users: "users" }, decls: 16, vars: 1, consts: [[1, "container"], [1, "table", "table-bordered"], [4, "ngFor", "ngForOf"]], template: function UsersComponent_Template(rf, ctx) { if (rf & 1) {
464 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "div", 0);
465 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "h2");
466 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](2, "Users");
467 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
468 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](3, "table", 1);
469 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](4, "thead");
470 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](5, "tr");
471 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](6, "th");
472 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](7, "User Id");
473 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
474 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](8, "th");
475 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](9, "Firstname");
476 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
477 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](10, "th");
478 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](11, "Lastname");
479 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
480 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](12, "th");
481 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](13, "Email");
482 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
483 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
484 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
485 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](14, "tbody");
486 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtemplate"](15, UsersComponent_tr_15_Template, 9, 4, "tr", 2);
487 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
488 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
489 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
490 | } if (rf & 2) {
491 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](15);
492 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("ngForOf", ctx.users);
493 | } }, directives: [_angular_common__WEBPACK_IMPORTED_MODULE_1__["NgForOf"]], styles: ["\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VzZXJzLmNvbXBvbmVudC5jc3MifQ== */"] });
494 | /*@__PURE__*/ (function () { _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](UsersComponent, [{
495 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
496 | args: [{
497 | selector: 'app-users',
498 | templateUrl: './users.component.html',
499 | styleUrls: ['./users.component.css']
500 | }]
501 | }], function () { return []; }, { users: [{
502 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
503 | }] }); })();
504 |
505 |
506 | /***/ }),
507 |
508 | /***/ "./src/environments/environment.ts":
509 | /*!*****************************************!*\
510 | !*** ./src/environments/environment.ts ***!
511 | \*****************************************/
512 | /*! exports provided: environment */
513 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
514 |
515 | "use strict";
516 | __webpack_require__.r(__webpack_exports__);
517 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "environment", function() { return environment; });
518 | // This file can be replaced during build by using the `fileReplacements` array.
519 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
520 | // The list of file replacements can be found in `angular.json`.
521 | const environment = {
522 | production: false
523 | };
524 | /*
525 | * For easier debugging in development mode, you can import the following file
526 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
527 | *
528 | * This import should be commented out in production mode because it will have a negative impact
529 | * on performance if an error is thrown.
530 | */
531 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
532 |
533 |
534 | /***/ }),
535 |
536 | /***/ "./src/main.ts":
537 | /*!*********************!*\
538 | !*** ./src/main.ts ***!
539 | \*********************/
540 | /*! no exports provided */
541 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
542 |
543 | "use strict";
544 | __webpack_require__.r(__webpack_exports__);
545 | /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
546 | /* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./environments/environment */ "./src/environments/environment.ts");
547 | /* harmony import */ var _app_app_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./app/app.module */ "./src/app/app.module.ts");
548 | /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/platform-browser.js");
549 |
550 |
551 |
552 |
553 | if (_environments_environment__WEBPACK_IMPORTED_MODULE_1__["environment"].production) {
554 | Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["enableProdMode"])();
555 | }
556 | _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__["platformBrowser"]().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_2__["AppModule"])
557 | .catch(err => console.error(err));
558 |
559 |
560 | /***/ }),
561 |
562 | /***/ 0:
563 | /*!***************************!*\
564 | !*** multi ./src/main.ts ***!
565 | \***************************/
566 | /*! no static exports found */
567 | /***/ (function(module, exports, __webpack_require__) {
568 |
569 | module.exports = __webpack_require__(/*! /Users/bhargavbachina/Projects/angular-nodejs-example/my-app/src/main.ts */"./src/main.ts");
570 |
571 |
572 | /***/ })
573 |
574 | },[[0,"runtime","vendor"]]]);
575 | //# sourceMappingURL=main-es2015.js.map
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/main-es2015.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/app.service.ts","./src/app/display-board.component.ts","./src/app/display-board.component.html","./src/app/header/header.component.ts","./src/app/header/header.component.html","./src/app/users.component.ts","./src/app/users.component.html","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,wE;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAyC;AACc;;;AAGvD,MAAM,MAAM,GAAW,EAAE,CAAC;AAMnB,MAAM,gBAAgB;;+FAAhB,gBAAgB;0JAAhB,gBAAgB,kBAHlB,CAAC,4DAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,4DAAY;mIAEX,gBAAgB,uFAFjB,4DAAY;6FAEX,gBAAgB;cAJ5B,sDAAQ;eAAC;gBACR,OAAO,EAAE,CAAC,4DAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO,EAAE,CAAC,4DAAY,CAAC;aACxB;;;;;;;;;;;;;;ACTD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqD;AACe;AAEzB;AACZ;;;;;;;;;IC+B7B,2EAAkE;;;IAA5B,+EAAe;;ADxBhD,MAAM,YAAY;IAEvB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAE1C,UAAK,GAAG,wBAAwB,CAAC;QAEjC,aAAQ,GAAG,IAAI,wDAAS,CAAC;YACvB,SAAS,EAAE,IAAI,0DAAW,CAAC,EAAE,EAAE,yDAAU,CAAC,aAAa,IAAI,yDAAU,CAAC,QAAQ,CAAC;YAC/E,QAAQ,EAAE,IAAI,0DAAW,CAAC,EAAE,EAAE,yDAAU,CAAC,aAAa,IAAI,yDAAU,CAAC,QAAQ,CAAC;YAC9E,KAAK,EAAE,IAAI,0DAAW,CAAC,EAAE,EAAE,yDAAU,CAAC,aAAa,IAAI,yDAAU,CAAC,QAAQ,CAAC;SAC5E,CAAC,CAAC;QAEH,UAAK,GAAU,EAAE,CAAC;QAClB,cAAS,GAAG,CAAC,CAAC;QAEd,aAAQ,GAAqB,IAAI,4CAAO,EAAW,CAAC;IAbP,CAAC;IAe9C,QAAQ;QAEN,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gEAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3F,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,gEAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAY,EAAE,EAAE;YACjF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;;wEApCU,YAAY;4FAAZ,YAAY;QCXzB,wEAAyB;QACzB,yEACE;QAAA,yEACE;QAAA,yEACE;QAAA,qEAAI;QAAA,sEAAW;QAAA,4DAAK;QACpB,0EACE;QAD2B,wIAAY,cAAU,IAAC;QAClD,yEACE;QAAA,yEACE;QAAA,2EAAgC;QAAA,sEAAU;QAAA,4DAAQ;QAClD,uEACF;QAAA,4DAAM;QACN,0EACE;QAAA,4EAAmC;QAAA,qEAAS;QAAA,4DAAQ;QACpD,uEACF;QAAA,4DAAM;QACR,4DAAM;QACN,0EACE;QAAA,0EACE;QAAA,4EAAgC;QAAA,iEAAK;QAAA,4DAAQ;QAC7C,wEACF;QAAA,4DAAM;QACR,4DAAM;QACN,8EAA0E;QAAA,kEAAM;QAAA,4DAAS;QAC3F,4DAAO;QACT,4DAAM;QACN,2EACE;QAAA,yFAIoB;QAFnB,gKAAiB,iBAAa,IAAC;QAEhC,4DAAoB;QACtB,4DAAM;QACR,4DAAM;QACR,4DAAM;QACN,2EACE;QAAA,uHAAsD;QACxD,4DAAM;;QA/BM,0DAAsB;QAAtB,mFAAsB;QAiBJ,2DAA4B;QAA5B,yFAA4B;QAKnD,0DAAuB;QAAvB,oFAAuB;QAQjB,0DAA0B;QAA1B,wFAA0B;;6FDxB1B,YAAY;cALxB,uDAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,WAAW,EAAE,sBAAsB;gBACnC,SAAS,EAAE,CAAC,qBAAqB,CAAC;aACnC;;;;;;;;;;;;;;AEVD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0D;AACjB;AACY;AAEG;AACA;AACT;AACgC;AACnB;AACM;AACf;;AAGnD,wBAAwB;AACxB,6CAA6C;AAC7C,8DAA8D;AAC9D,iEAAiE;AACjE,0EAA0E;AAC1E,2FAA2F;AAoDpF,MAAM,SAAS;;wFAAT,SAAS,cAFR,2DAAY;4IAEb,SAAS,mBAHT,EAAE,YAxCJ;YACP,uEAAa;YACb,oEAAgB;YAChB,4FAAuB;YACvB,kEAAmB;YACnB,qEAAgB;SAkCjB;mIAIU,SAAS,mBAhDlB,2DAAY;QACZ,wEAAe;QACf,8EAAqB;QACrB,+DAAc,aAGd,uEAAa;QACb,oEAAgB;QAChB,4FAAuB;QACvB,kEAAmB;QACnB,qEAAgB;6FAsCP,SAAS;cAlDrB,sDAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,2DAAY;oBACZ,wEAAe;oBACf,8EAAqB;oBACrB,+DAAc;iBACf;gBACD,OAAO,EAAE;oBACP,uEAAa;oBACb,oEAAgB;oBAChB,4FAAuB;oBACvB,kEAAmB;oBACnB,qEAAgB;iBAkCjB;gBACD,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,CAAC,2DAAY,CAAC;aAC1B;;;;;;;;;;;;;;ACrED;AAAA;AAAA;AAAA;AAA2C;;;AAMpC,MAAM,UAAU;IAErB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QAEpC,YAAO,GAAG,MAAM,CAAC;IAFuB,CAAC;IAIzC,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,IAAS;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC;IACxD,CAAC;;oEAZU,UAAU;6FAAV,UAAU,WAAV,UAAU,mBAFT,MAAM;6FAEP,UAAU;cAHtB,wDAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;;;;;;;;;;;ACLD;AAAA;AAAA;AAA+E;;AAOxE,MAAM,qBAAqB;IAEhC;QAES,cAAS,GAAG,CAAC,CAAC;QACb,kBAAa,GAAG,IAAI,0DAAY,EAAE,CAAC;IAH7B,CAAC;IAKjB,QAAQ;IACR,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC;;0FAZU,qBAAqB;qGAArB,qBAAqB;QCPlC,yEACE;QAAA,qEAAI;QAAA,wEAAa;QAAA,4DAAK;QACtB,yEACE;QAAA,uDACF;QAAA,4DAAM;QACN,yEACE;QAAA,4EAAwD;QAAxB,6IAAS,iBAAa,IAAC;QAAC,wEAAa;QAAA,4DAAS;QAChF,4DAAM;QACR,4DAAM;;QALF,0DACF;QADE,yFACF;;6FDGW,qBAAqB;cALjC,uDAAS;eAAC;gBACT,QAAQ,EAAE,mBAAmB;gBAC7B,WAAW,EAAE,gCAAgC;gBAC7C,SAAS,EAAE,CAAC,+BAA+B,CAAC;aAC7C;;kBAKE,mDAAK;;kBACL,oDAAM;;;;;;;;;;;;;;AEZT;AAAA;AAAA;AAAkD;;AAO3C,MAAM,eAAe;IAE1B;IAAgB,CAAC;IAEjB,QAAQ;IACR,CAAC;;8EALU,eAAe;+FAAf,eAAe;QCP5B,yEACE;QAAA,qEAAI;QAAA,8EAAmB;QAAA,4DAAK;QAC9B,4DAAM;;6FDKO,eAAe;cAL3B,uDAAS;eAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,yBAAyB;gBACtC,SAAS,EAAE,CAAC,wBAAwB,CAAC;aACtC;;;;;;;;;;;;;;AEND;AAAA;AAAA;AAAA;AAAyD;;;;ICYnD,qEACE;IAAA,qEAAI;IAAA,uDAAS;IAAA,4DAAK;IAClB,qEAAI;IAAA,uDAAkB;IAAA,4DAAK;IAC3B,qEAAI;IAAA,uDAAiB;IAAA,4DAAK;IAC1B,qEAAI;IAAA,uDAAc;IAAA,4DAAK;IACzB,4DAAK;;;;IAJC,0DAAS;IAAT,yEAAS;IACT,0DAAkB;IAAlB,kFAAkB;IAClB,0DAAiB;IAAjB,iFAAiB;IACjB,0DAAc;IAAd,8EAAc;;ADTnB,MAAM,cAAc;IAEzB;IAAgB,CAAC;IAIjB,QAAQ;IACR,CAAC;;4EAPU,cAAc;8FAAd,cAAc;QCP3B,yEACE;QAAA,qEAAI;QAAA,gEAAK;QAAA,4DAAK;QACd,2EACE;QAAA,wEACE;QAAA,qEACE;QAAA,qEAAI;QAAA,kEAAO;QAAA,4DAAK;QAChB,qEAAI;QAAA,oEAAS;QAAA,4DAAK;QAClB,sEAAI;QAAA,oEAAQ;QAAA,4DAAK;QACjB,sEAAI;QAAA,iEAAK;QAAA,4DAAK;QAChB,4DAAK;QACP,4DAAQ;QACR,yEACE;QAAA,0GACE;QAKJ,4DAAQ;QACV,4DAAQ;QACV,4DAAM;;QARI,2DAAyC;QAAzC,8EAAyC;;6FDLtC,cAAc;cAL1B,uDAAS;eAAC;gBACT,QAAQ,EAAE,WAAW;gBACrB,WAAW,EAAE,wBAAwB;gBACrC,SAAS,EAAE,CAAC,uBAAuB,CAAC;aACrC;;kBAKE,mDAAK;;;;;;;;;;;;;;AEXR;AAAA;AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,gEAAgE;AAEzD,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,mEAAmE;;;;;;;;;;;;;ACfnE;AAAA;AAAA;AAAA;AAAA;AAA+C;AAIU;;;AAEzD,IAAI,qEAAW,CAAC,UAAU,EAAE;IAC1B,oEAAc,EAAE,CAAC;CAClB;AAED,2EAAwB,gBAAgB,CAAC,0DAAU;KAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC","file":"main-es2015.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component, OnDestroy } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { AppService } from './app.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnDestroy {\n\n constructor(private appService: AppService) {}\n\n title = 'angular-nodejs-example';\n\n userForm = new FormGroup({\n firstName: new FormControl('', Validators.nullValidator && Validators.required),\n lastName: new FormControl('', Validators.nullValidator && Validators.required),\n email: new FormControl('', Validators.nullValidator && Validators.required)\n });\n\n users: any[] = [];\n userCount = 0;\n\n destroy$: Subject = new Subject();\n\n onSubmit() {\n\n this.appService.addUser(this.userForm.value).pipe(takeUntil(this.destroy$)).subscribe(data => {\n console.log('message::::', data);\n this.userCount = this.userCount + 1;\n console.log(this.userCount);\n this.userForm.reset();\n });\n }\n\n getAllUsers() {\n this.appService.getUsers().pipe(takeUntil(this.destroy$)).subscribe((users: any[]) => {\n this.users = users;\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n}\n"," \n\n\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { HttpClientModule } from '@angular/common/http';\nimport { AppComponent } from './app.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { HeaderComponent } from './header/header.component';\nimport { DisplayBoardComponent } from './display-board.component';\nimport { UsersComponent } from './users.component';\nimport { environment } from '../environments/environment';\n\n// state related imports\n// import { StoreModule } from '@ngrx/store';\n// import { StoreDevtoolsModule } from '@ngrx/store-devtools';\n// import { reducers, metaReducers } from './app-state/reducers';\n// import { CustomRouterStateSerializer } from './app-state/shared/utils';\n// import { StoreRouterConnectingModule, RouterStateSerializer } from '@ngrx/router-store';\n\n@NgModule({\n declarations: [\n AppComponent,\n HeaderComponent,\n DisplayBoardComponent,\n UsersComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n ReactiveFormsModule,\n HttpClientModule,\n /**\n * StoreModule.forRoot is imported once in the root module, accepting a reducer\n * function or object map of reducer functions. If passed an object of\n * reducers, combineReducers will be run creating your application\n * meta-reducer. This returns all providers for an @ngrx/store\n * based application.\n\n StoreModule.forRoot(reducers, { metaReducers }),\n\n /**\n * @ngrx/router-store keeps router state up-to-date in the store.\n\n StoreRouterConnectingModule,\n\n /**\n * Store devtools instrument the store retaining past versions of state\n * and recalculating new states. This enables powerful time-travel\n * debugging.\n *\n * To use the debugger, install the Redux Devtools extension for either\n * Chrome or Firefox\n *\n * See: https://github.com/zalmoxisus/redux-devtools-extension\n\n !environment.production ? StoreDevtoolsModule.instrument() : [],\n\n /**\n * EffectsModule.forRoot() is imported once in the root module and\n * sets up the effects class to be initialized immediately when the\n * application starts.\n *\n * See: https://github.com/ngrx/platform/blob/master/docs/effects/api.md#forroot\n */\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n\n constructor(private http: HttpClient) { }\n\n rootURL = '/api';\n\n getUsers() {\n return this.http.get(this.rootURL + '/users');\n }\n\n addUser(user: any) {\n return this.http.post(this.rootURL + '/user', {user});\n }\n\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'app-display-board',\n templateUrl: './display-board.component.html',\n styleUrls: ['./display-board.component.css']\n})\nexport class DisplayBoardComponent implements OnInit {\n\n constructor() { }\n\n @Input() userCount = 0;\n @Output() getUsersEvent = new EventEmitter();\n\n ngOnInit(): void {\n }\n\n getAllUsers() {\n this.getUsersEvent.emit('get all users');\n }\n\n}\n","\n
Users Created \n
\n {{userCount}}\n
\n
\n Get All Users \n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.css']\n})\nexport class HeaderComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-users',\n templateUrl: './users.component.html',\n styleUrls: ['./users.component.css']\n})\nexport class UsersComponent implements OnInit {\n\n constructor() { }\n\n @Input() users: any[];\n\n ngOnInit(): void {\n }\n\n}\n","\n
Users \n
\n \n \n User Id \n Firstname \n Lastname \n Email \n \n \n \n \n {{i + 1}} \n {{user.firstName}} \n {{user.lastName}} \n {{user.email}} \n \n \n
\n
\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","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.error(err));\n"],"sourceRoot":"webpack:///"}
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/main-es5.js:
--------------------------------------------------------------------------------
1 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2 |
3 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
4 |
5 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6 |
7 | (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["main"], {
8 | /***/
9 | "./$$_lazy_route_resource lazy recursive":
10 | /*!******************************************************!*\
11 | !*** ./$$_lazy_route_resource lazy namespace object ***!
12 | \******************************************************/
13 |
14 | /*! no static exports found */
15 |
16 | /***/
17 | function $$_lazy_route_resourceLazyRecursive(module, exports) {
18 | function webpackEmptyAsyncContext(req) {
19 | // Here Promise.resolve().then() is used instead of new Promise() to prevent
20 | // uncaught exception popping up in devtools
21 | return Promise.resolve().then(function () {
22 | var e = new Error("Cannot find module '" + req + "'");
23 | e.code = 'MODULE_NOT_FOUND';
24 | throw e;
25 | });
26 | }
27 |
28 | webpackEmptyAsyncContext.keys = function () {
29 | return [];
30 | };
31 |
32 | webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
33 | module.exports = webpackEmptyAsyncContext;
34 | webpackEmptyAsyncContext.id = "./$$_lazy_route_resource lazy recursive";
35 | /***/
36 | },
37 |
38 | /***/
39 | "./src/app/app-routing.module.ts":
40 | /*!***************************************!*\
41 | !*** ./src/app/app-routing.module.ts ***!
42 | \***************************************/
43 |
44 | /*! exports provided: AppRoutingModule */
45 |
46 | /***/
47 | function srcAppAppRoutingModuleTs(module, __webpack_exports__, __webpack_require__) {
48 | "use strict";
49 |
50 | __webpack_require__.r(__webpack_exports__);
51 | /* harmony export (binding) */
52 |
53 |
54 | __webpack_require__.d(__webpack_exports__, "AppRoutingModule", function () {
55 | return AppRoutingModule;
56 | });
57 | /* harmony import */
58 |
59 |
60 | var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
61 | /*! @angular/core */
62 | "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
63 | /* harmony import */
64 |
65 |
66 | var _angular_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
67 | /*! @angular/router */
68 | "./node_modules/@angular/router/__ivy_ngcc__/fesm2015/router.js");
69 |
70 | var routes = [];
71 |
72 | var AppRoutingModule = function AppRoutingModule() {
73 | _classCallCheck(this, AppRoutingModule);
74 | };
75 |
76 | AppRoutingModule.ɵmod = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({
77 | type: AppRoutingModule
78 | });
79 | AppRoutingModule.ɵinj = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({
80 | factory: function AppRoutingModule_Factory(t) {
81 | return new (t || AppRoutingModule)();
82 | },
83 | imports: [[_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"].forRoot(routes)], _angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"]]
84 | });
85 |
86 | (function () {
87 | (typeof ngJitMode === "undefined" || ngJitMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵsetNgModuleScope"](AppRoutingModule, {
88 | imports: [_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"]],
89 | exports: [_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"]]
90 | });
91 | })();
92 | /*@__PURE__*/
93 |
94 |
95 | (function () {
96 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](AppRoutingModule, [{
97 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["NgModule"],
98 | args: [{
99 | imports: [_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"].forRoot(routes)],
100 | exports: [_angular_router__WEBPACK_IMPORTED_MODULE_1__["RouterModule"]]
101 | }]
102 | }], null, null);
103 | })();
104 | /***/
105 |
106 | },
107 |
108 | /***/
109 | "./src/app/app.component.ts":
110 | /*!**********************************!*\
111 | !*** ./src/app/app.component.ts ***!
112 | \**********************************/
113 |
114 | /*! exports provided: AppComponent */
115 |
116 | /***/
117 | function srcAppAppComponentTs(module, __webpack_exports__, __webpack_require__) {
118 | "use strict";
119 |
120 | __webpack_require__.r(__webpack_exports__);
121 | /* harmony export (binding) */
122 |
123 |
124 | __webpack_require__.d(__webpack_exports__, "AppComponent", function () {
125 | return AppComponent;
126 | });
127 | /* harmony import */
128 |
129 |
130 | var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
131 | /*! @angular/core */
132 | "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
133 | /* harmony import */
134 |
135 |
136 | var _angular_forms__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
137 | /*! @angular/forms */
138 | "./node_modules/@angular/forms/__ivy_ngcc__/fesm2015/forms.js");
139 | /* harmony import */
140 |
141 |
142 | var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
143 | /*! rxjs/operators */
144 | "./node_modules/rxjs/_esm2015/operators/index.js");
145 | /* harmony import */
146 |
147 |
148 | var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
149 | /*! rxjs */
150 | "./node_modules/rxjs/_esm2015/index.js");
151 | /* harmony import */
152 |
153 |
154 | var _app_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
155 | /*! ./app.service */
156 | "./src/app/app.service.ts");
157 | /* harmony import */
158 |
159 |
160 | var _header_header_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(
161 | /*! ./header/header.component */
162 | "./src/app/header/header.component.ts");
163 | /* harmony import */
164 |
165 |
166 | var _display_board_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(
167 | /*! ./display-board.component */
168 | "./src/app/display-board.component.ts");
169 | /* harmony import */
170 |
171 |
172 | var _angular_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(
173 | /*! @angular/common */
174 | "./node_modules/@angular/common/__ivy_ngcc__/fesm2015/common.js");
175 | /* harmony import */
176 |
177 |
178 | var _users_component__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(
179 | /*! ./users.component */
180 | "./src/app/users.component.ts");
181 |
182 | function AppComponent_app_users_26_Template(rf, ctx) {
183 | if (rf & 1) {
184 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](0, "app-users", 16);
185 | }
186 |
187 | if (rf & 2) {
188 | var ctx_r0 = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵnextContext"]();
189 |
190 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("users", ctx_r0.users);
191 | }
192 | }
193 |
194 | var AppComponent =
195 | /*#__PURE__*/
196 | function () {
197 | function AppComponent(appService) {
198 | _classCallCheck(this, AppComponent);
199 |
200 | this.appService = appService;
201 | this.title = 'angular-nodejs-example';
202 | this.userForm = new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormGroup"]({
203 | firstName: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]('', _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].nullValidator && _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].required),
204 | lastName: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]('', _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].nullValidator && _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].required),
205 | email: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]('', _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].nullValidator && _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].required)
206 | });
207 | this.users = [];
208 | this.userCount = 0;
209 | this.destroy$ = new rxjs__WEBPACK_IMPORTED_MODULE_3__["Subject"]();
210 | }
211 |
212 | _createClass(AppComponent, [{
213 | key: "onSubmit",
214 | value: function onSubmit() {
215 | var _this = this;
216 |
217 | this.appService.addUser(this.userForm.value).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["takeUntil"])(this.destroy$)).subscribe(function (data) {
218 | console.log('message::::', data);
219 | _this.userCount = _this.userCount + 1;
220 | console.log(_this.userCount);
221 |
222 | _this.userForm.reset();
223 | });
224 | }
225 | }, {
226 | key: "getAllUsers",
227 | value: function getAllUsers() {
228 | var _this2 = this;
229 |
230 | this.appService.getUsers().pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["takeUntil"])(this.destroy$)).subscribe(function (users) {
231 | _this2.users = users;
232 | });
233 | }
234 | }, {
235 | key: "ngOnDestroy",
236 | value: function ngOnDestroy() {
237 | this.destroy$.next(true);
238 | this.destroy$.unsubscribe();
239 | }
240 | }]);
241 |
242 | return AppComponent;
243 | }();
244 |
245 | AppComponent.ɵfac = function AppComponent_Factory(t) {
246 | return new (t || AppComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_app_service__WEBPACK_IMPORTED_MODULE_4__["AppService"]));
247 | };
248 |
249 | AppComponent.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({
250 | type: AppComponent,
251 | selectors: [["app-root"]],
252 | decls: 27,
253 | vars: 4,
254 | consts: [[1, "container"], [1, "row"], [1, "col-md-7", "mrgnbtm"], [3, "formGroup", "ngSubmit"], [1, "form-group", "col-md-6"], ["for", "exampleInputEmail1"], ["type", "text", "formControlName", "firstName", "id", "exampleInputEmail1", "aria-describedby", "emailHelp", "placeholder", "First Name", 1, "form-control"], ["for", "exampleInputPassword1"], ["type", "text", "formControlName", "lastName", "id", "exampleInputPassword1", "placeholder", "Last Name", 1, "form-control"], [1, "form-group", "col-md-12"], ["type", "text", "formControlName", "email", "id", "exampleInputEmail1", "aria-describedby", "emailHelp", "placeholder", "Email", 1, "form-control"], ["type", "submit", 1, "btn", "btn-danger", 3, "disabled"], [1, "col-md-4", "mrgnbtm"], [3, "userCount", "getUsersEvent"], [1, "mrgnbtm"], [3, "users", 4, "ngIf"], [3, "users"]],
255 | template: function AppComponent_Template(rf, ctx) {
256 | if (rf & 1) {
257 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](0, "app-header");
258 |
259 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "div", 0);
260 |
261 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](2, "div", 1);
262 |
263 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](3, "div", 2);
264 |
265 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](4, "h2");
266 |
267 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](5, "Create User");
268 |
269 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
270 |
271 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](6, "form", 3);
272 |
273 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵlistener"]("ngSubmit", function AppComponent_Template_form_ngSubmit_6_listener() {
274 | return ctx.onSubmit();
275 | });
276 |
277 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](7, "div", 1);
278 |
279 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](8, "div", 4);
280 |
281 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](9, "label", 5);
282 |
283 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](10, "First Name");
284 |
285 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
286 |
287 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](11, "input", 6);
288 |
289 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
290 |
291 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](12, "div", 4);
292 |
293 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](13, "label", 7);
294 |
295 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](14, "Last Name");
296 |
297 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
298 |
299 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](15, "input", 8);
300 |
301 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
302 |
303 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
304 |
305 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](16, "div", 1);
306 |
307 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](17, "div", 9);
308 |
309 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](18, "label", 5);
310 |
311 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](19, "Email");
312 |
313 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
314 |
315 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelement"](20, "input", 10);
316 |
317 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
318 |
319 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
320 |
321 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](21, "button", 11);
322 |
323 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](22, "Create");
324 |
325 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
326 |
327 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
328 |
329 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
330 |
331 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](23, "div", 12);
332 |
333 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](24, "app-display-board", 13);
334 |
335 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵlistener"]("getUsersEvent", function AppComponent_Template_app_display_board_getUsersEvent_24_listener() {
336 | return ctx.getAllUsers();
337 | });
338 |
339 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
340 |
341 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
342 |
343 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
344 |
345 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
346 |
347 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](25, "div", 14);
348 |
349 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtemplate"](26, AppComponent_app_users_26_Template, 1, 1, "app-users", 15);
350 |
351 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
352 | }
353 |
354 | if (rf & 2) {
355 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](6);
356 |
357 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("formGroup", ctx.userForm);
358 |
359 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](15);
360 |
361 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("disabled", !ctx.userForm.valid);
362 |
363 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](3);
364 |
365 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("userCount", ctx.userCount);
366 |
367 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
368 |
369 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("ngIf", ctx.users.length !== 0);
370 | }
371 | },
372 | directives: [_header_header_component__WEBPACK_IMPORTED_MODULE_5__["HeaderComponent"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["ɵangular_packages_forms_forms_y"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["NgControlStatusGroup"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormGroupDirective"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["DefaultValueAccessor"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["NgControlStatus"], _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControlName"], _display_board_component__WEBPACK_IMPORTED_MODULE_6__["DisplayBoardComponent"], _angular_common__WEBPACK_IMPORTED_MODULE_7__["NgIf"], _users_component__WEBPACK_IMPORTED_MODULE_8__["UsersComponent"]],
373 | styles: [".mrgnbtm[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXBwLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxnQkFBZ0I7QUFDbEIiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tcmduYnRtIHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbn1cbiJdfQ== */"]
374 | });
375 | /*@__PURE__*/
376 |
377 | (function () {
378 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](AppComponent, [{
379 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
380 | args: [{
381 | selector: 'app-root',
382 | templateUrl: './app.component.html',
383 | styleUrls: ['./app.component.css']
384 | }]
385 | }], function () {
386 | return [{
387 | type: _app_service__WEBPACK_IMPORTED_MODULE_4__["AppService"]
388 | }];
389 | }, null);
390 | })();
391 | /***/
392 |
393 | },
394 |
395 | /***/
396 | "./src/app/app.module.ts":
397 | /*!*******************************!*\
398 | !*** ./src/app/app.module.ts ***!
399 | \*******************************/
400 |
401 | /*! exports provided: AppModule */
402 |
403 | /***/
404 | function srcAppAppModuleTs(module, __webpack_exports__, __webpack_require__) {
405 | "use strict";
406 |
407 | __webpack_require__.r(__webpack_exports__);
408 | /* harmony export (binding) */
409 |
410 |
411 | __webpack_require__.d(__webpack_exports__, "AppModule", function () {
412 | return AppModule;
413 | });
414 | /* harmony import */
415 |
416 |
417 | var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
418 | /*! @angular/platform-browser */
419 | "./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/platform-browser.js");
420 | /* harmony import */
421 |
422 |
423 | var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
424 | /*! @angular/core */
425 | "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
426 | /* harmony import */
427 |
428 |
429 | var _angular_forms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
430 | /*! @angular/forms */
431 | "./node_modules/@angular/forms/__ivy_ngcc__/fesm2015/forms.js");
432 | /* harmony import */
433 |
434 |
435 | var _app_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
436 | /*! ./app-routing.module */
437 | "./src/app/app-routing.module.ts");
438 | /* harmony import */
439 |
440 |
441 | var _angular_common_http__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(
442 | /*! @angular/common/http */
443 | "./node_modules/@angular/common/__ivy_ngcc__/fesm2015/http.js");
444 | /* harmony import */
445 |
446 |
447 | var _app_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(
448 | /*! ./app.component */
449 | "./src/app/app.component.ts");
450 | /* harmony import */
451 |
452 |
453 | var _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(
454 | /*! @angular/platform-browser/animations */
455 | "./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/animations.js");
456 | /* harmony import */
457 |
458 |
459 | var _header_header_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(
460 | /*! ./header/header.component */
461 | "./src/app/header/header.component.ts");
462 | /* harmony import */
463 |
464 |
465 | var _display_board_component__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(
466 | /*! ./display-board.component */
467 | "./src/app/display-board.component.ts");
468 | /* harmony import */
469 |
470 |
471 | var _users_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(
472 | /*! ./users.component */
473 | "./src/app/users.component.ts"); // state related imports
474 | // import { StoreModule } from '@ngrx/store';
475 | // import { StoreDevtoolsModule } from '@ngrx/store-devtools';
476 | // import { reducers, metaReducers } from './app-state/reducers';
477 | // import { CustomRouterStateSerializer } from './app-state/shared/utils';
478 | // import { StoreRouterConnectingModule, RouterStateSerializer } from '@ngrx/router-store';
479 |
480 |
481 | var AppModule = function AppModule() {
482 | _classCallCheck(this, AppModule);
483 | };
484 |
485 | AppModule.ɵmod = _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineNgModule"]({
486 | type: AppModule,
487 | bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_5__["AppComponent"]]
488 | });
489 | AppModule.ɵinj = _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineInjector"]({
490 | factory: function AppModule_Factory(t) {
491 | return new (t || AppModule)();
492 | },
493 | providers: [],
494 | imports: [[_angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__["BrowserModule"], _app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"], _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_6__["BrowserAnimationsModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_2__["ReactiveFormsModule"], _angular_common_http__WEBPACK_IMPORTED_MODULE_4__["HttpClientModule"]]]
495 | });
496 |
497 | (function () {
498 | (typeof ngJitMode === "undefined" || ngJitMode) && _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵsetNgModuleScope"](AppModule, {
499 | declarations: [_app_component__WEBPACK_IMPORTED_MODULE_5__["AppComponent"], _header_header_component__WEBPACK_IMPORTED_MODULE_7__["HeaderComponent"], _display_board_component__WEBPACK_IMPORTED_MODULE_8__["DisplayBoardComponent"], _users_component__WEBPACK_IMPORTED_MODULE_9__["UsersComponent"]],
500 | imports: [_angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__["BrowserModule"], _app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"], _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_6__["BrowserAnimationsModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_2__["ReactiveFormsModule"], _angular_common_http__WEBPACK_IMPORTED_MODULE_4__["HttpClientModule"]]
501 | });
502 | })();
503 | /*@__PURE__*/
504 |
505 |
506 | (function () {
507 | _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](AppModule, [{
508 | type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"],
509 | args: [{
510 | declarations: [_app_component__WEBPACK_IMPORTED_MODULE_5__["AppComponent"], _header_header_component__WEBPACK_IMPORTED_MODULE_7__["HeaderComponent"], _display_board_component__WEBPACK_IMPORTED_MODULE_8__["DisplayBoardComponent"], _users_component__WEBPACK_IMPORTED_MODULE_9__["UsersComponent"]],
511 | imports: [_angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__["BrowserModule"], _app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"], _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_6__["BrowserAnimationsModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_2__["ReactiveFormsModule"], _angular_common_http__WEBPACK_IMPORTED_MODULE_4__["HttpClientModule"]],
512 | providers: [],
513 | bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_5__["AppComponent"]]
514 | }]
515 | }], null, null);
516 | })();
517 | /***/
518 |
519 | },
520 |
521 | /***/
522 | "./src/app/app.service.ts":
523 | /*!********************************!*\
524 | !*** ./src/app/app.service.ts ***!
525 | \********************************/
526 |
527 | /*! exports provided: AppService */
528 |
529 | /***/
530 | function srcAppAppServiceTs(module, __webpack_exports__, __webpack_require__) {
531 | "use strict";
532 |
533 | __webpack_require__.r(__webpack_exports__);
534 | /* harmony export (binding) */
535 |
536 |
537 | __webpack_require__.d(__webpack_exports__, "AppService", function () {
538 | return AppService;
539 | });
540 | /* harmony import */
541 |
542 |
543 | var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
544 | /*! @angular/core */
545 | "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
546 | /* harmony import */
547 |
548 |
549 | var _angular_common_http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
550 | /*! @angular/common/http */
551 | "./node_modules/@angular/common/__ivy_ngcc__/fesm2015/http.js");
552 |
553 | var AppService =
554 | /*#__PURE__*/
555 | function () {
556 | function AppService(http) {
557 | _classCallCheck(this, AppService);
558 |
559 | this.http = http;
560 | this.rootURL = '/api';
561 | }
562 |
563 | _createClass(AppService, [{
564 | key: "getUsers",
565 | value: function getUsers() {
566 | return this.http.get(this.rootURL + '/users');
567 | }
568 | }, {
569 | key: "addUser",
570 | value: function addUser(user) {
571 | return this.http.post(this.rootURL + '/user', {
572 | user: user
573 | });
574 | }
575 | }]);
576 |
577 | return AppService;
578 | }();
579 |
580 | AppService.ɵfac = function AppService_Factory(t) {
581 | return new (t || AppService)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]));
582 | };
583 |
584 | AppService.ɵprov = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({
585 | token: AppService,
586 | factory: AppService.ɵfac,
587 | providedIn: 'root'
588 | });
589 | /*@__PURE__*/
590 |
591 | (function () {
592 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](AppService, [{
593 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Injectable"],
594 | args: [{
595 | providedIn: 'root'
596 | }]
597 | }], function () {
598 | return [{
599 | type: _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]
600 | }];
601 | }, null);
602 | })();
603 | /***/
604 |
605 | },
606 |
607 | /***/
608 | "./src/app/display-board.component.ts":
609 | /*!********************************************!*\
610 | !*** ./src/app/display-board.component.ts ***!
611 | \********************************************/
612 |
613 | /*! exports provided: DisplayBoardComponent */
614 |
615 | /***/
616 | function srcAppDisplayBoardComponentTs(module, __webpack_exports__, __webpack_require__) {
617 | "use strict";
618 |
619 | __webpack_require__.r(__webpack_exports__);
620 | /* harmony export (binding) */
621 |
622 |
623 | __webpack_require__.d(__webpack_exports__, "DisplayBoardComponent", function () {
624 | return DisplayBoardComponent;
625 | });
626 | /* harmony import */
627 |
628 |
629 | var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
630 | /*! @angular/core */
631 | "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
632 |
633 | var DisplayBoardComponent =
634 | /*#__PURE__*/
635 | function () {
636 | function DisplayBoardComponent() {
637 | _classCallCheck(this, DisplayBoardComponent);
638 |
639 | this.userCount = 0;
640 | this.getUsersEvent = new _angular_core__WEBPACK_IMPORTED_MODULE_0__["EventEmitter"]();
641 | }
642 |
643 | _createClass(DisplayBoardComponent, [{
644 | key: "ngOnInit",
645 | value: function ngOnInit() {}
646 | }, {
647 | key: "getAllUsers",
648 | value: function getAllUsers() {
649 | this.getUsersEvent.emit('get all users');
650 | }
651 | }]);
652 |
653 | return DisplayBoardComponent;
654 | }();
655 |
656 | DisplayBoardComponent.ɵfac = function DisplayBoardComponent_Factory(t) {
657 | return new (t || DisplayBoardComponent)();
658 | };
659 |
660 | DisplayBoardComponent.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({
661 | type: DisplayBoardComponent,
662 | selectors: [["app-display-board"]],
663 | inputs: {
664 | userCount: "userCount"
665 | },
666 | outputs: {
667 | getUsersEvent: "getUsersEvent"
668 | },
669 | decls: 8,
670 | vars: 1,
671 | consts: [[1, "display-board"], [1, "number"], [1, "btn"], [1, "btn", "btn-warning", 3, "click"]],
672 | template: function DisplayBoardComponent_Template(rf, ctx) {
673 | if (rf & 1) {
674 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "div", 0);
675 |
676 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "h4");
677 |
678 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](2, "Users Created");
679 |
680 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
681 |
682 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](3, "div", 1);
683 |
684 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](4);
685 |
686 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
687 |
688 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](5, "div", 2);
689 |
690 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](6, "button", 3);
691 |
692 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵlistener"]("click", function DisplayBoardComponent_Template_button_click_6_listener() {
693 | return ctx.getAllUsers();
694 | });
695 |
696 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](7, "Get All Users");
697 |
698 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
699 |
700 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
701 |
702 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
703 | }
704 |
705 | if (rf & 2) {
706 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](4);
707 |
708 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate1"](" ", ctx.userCount, " ");
709 | }
710 | },
711 | styles: [".display-board[_ngcontent-%COMP%] {\n width: 100%;\n background-color: rgb(193, 236, 112);\n padding: 5%;\n}\n\n.number[_ngcontent-%COMP%] {\n color: red;\n font-size: 75px;\n text-align: center;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGlzcGxheS1ib2FyZC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVztFQUNYLG9DQUFvQztFQUNwQyxXQUFXO0FBQ2I7O0FBRUE7RUFDRSxVQUFVO0VBQ1YsZUFBZTtFQUNmLGtCQUFrQjtBQUNwQiIsImZpbGUiOiJzcmMvYXBwL2Rpc3BsYXktYm9hcmQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5kaXNwbGF5LWJvYXJkIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTMsIDIzNiwgMTEyKTtcbiAgcGFkZGluZzogNSU7XG59XG5cbi5udW1iZXIge1xuICBjb2xvcjogcmVkO1xuICBmb250LXNpemU6IDc1cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiJdfQ== */"]
712 | });
713 | /*@__PURE__*/
714 |
715 | (function () {
716 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](DisplayBoardComponent, [{
717 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
718 | args: [{
719 | selector: 'app-display-board',
720 | templateUrl: './display-board.component.html',
721 | styleUrls: ['./display-board.component.css']
722 | }]
723 | }], function () {
724 | return [];
725 | }, {
726 | userCount: [{
727 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
728 | }],
729 | getUsersEvent: [{
730 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Output"]
731 | }]
732 | });
733 | })();
734 | /***/
735 |
736 | },
737 |
738 | /***/
739 | "./src/app/header/header.component.ts":
740 | /*!********************************************!*\
741 | !*** ./src/app/header/header.component.ts ***!
742 | \********************************************/
743 |
744 | /*! exports provided: HeaderComponent */
745 |
746 | /***/
747 | function srcAppHeaderHeaderComponentTs(module, __webpack_exports__, __webpack_require__) {
748 | "use strict";
749 |
750 | __webpack_require__.r(__webpack_exports__);
751 | /* harmony export (binding) */
752 |
753 |
754 | __webpack_require__.d(__webpack_exports__, "HeaderComponent", function () {
755 | return HeaderComponent;
756 | });
757 | /* harmony import */
758 |
759 |
760 | var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
761 | /*! @angular/core */
762 | "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
763 |
764 | var HeaderComponent =
765 | /*#__PURE__*/
766 | function () {
767 | function HeaderComponent() {
768 | _classCallCheck(this, HeaderComponent);
769 | }
770 |
771 | _createClass(HeaderComponent, [{
772 | key: "ngOnInit",
773 | value: function ngOnInit() {}
774 | }]);
775 |
776 | return HeaderComponent;
777 | }();
778 |
779 | HeaderComponent.ɵfac = function HeaderComponent_Factory(t) {
780 | return new (t || HeaderComponent)();
781 | };
782 |
783 | HeaderComponent.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({
784 | type: HeaderComponent,
785 | selectors: [["app-header"]],
786 | decls: 3,
787 | vars: 0,
788 | consts: [[1, "header"]],
789 | template: function HeaderComponent_Template(rf, ctx) {
790 | if (rf & 1) {
791 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "div", 0);
792 |
793 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "h1");
794 |
795 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](2, "Angular With NodeJS");
796 |
797 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
798 |
799 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
800 | }
801 | },
802 | styles: [".header[_ngcontent-%COMP%] {\n width: 100%;\n padding: 2%;\n background-color: blueviolet;\n color: white;\n text-align: center;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVztFQUNYLFdBQVc7RUFDWCw0QkFBNEI7RUFDNUIsWUFBWTtFQUNaLGtCQUFrQjtBQUNwQiIsImZpbGUiOiJzcmMvYXBwL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oZWFkZXIge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMiU7XG4gIGJhY2tncm91bmQtY29sb3I6IGJsdWV2aW9sZXQ7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIl19 */"]
803 | });
804 | /*@__PURE__*/
805 |
806 | (function () {
807 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](HeaderComponent, [{
808 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
809 | args: [{
810 | selector: 'app-header',
811 | templateUrl: './header.component.html',
812 | styleUrls: ['./header.component.css']
813 | }]
814 | }], function () {
815 | return [];
816 | }, null);
817 | })();
818 | /***/
819 |
820 | },
821 |
822 | /***/
823 | "./src/app/users.component.ts":
824 | /*!************************************!*\
825 | !*** ./src/app/users.component.ts ***!
826 | \************************************/
827 |
828 | /*! exports provided: UsersComponent */
829 |
830 | /***/
831 | function srcAppUsersComponentTs(module, __webpack_exports__, __webpack_require__) {
832 | "use strict";
833 |
834 | __webpack_require__.r(__webpack_exports__);
835 | /* harmony export (binding) */
836 |
837 |
838 | __webpack_require__.d(__webpack_exports__, "UsersComponent", function () {
839 | return UsersComponent;
840 | });
841 | /* harmony import */
842 |
843 |
844 | var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
845 | /*! @angular/core */
846 | "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
847 | /* harmony import */
848 |
849 |
850 | var _angular_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
851 | /*! @angular/common */
852 | "./node_modules/@angular/common/__ivy_ngcc__/fesm2015/common.js");
853 |
854 | function UsersComponent_tr_15_Template(rf, ctx) {
855 | if (rf & 1) {
856 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "tr");
857 |
858 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "td");
859 |
860 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](2);
861 |
862 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
863 |
864 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](3, "td");
865 |
866 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](4);
867 |
868 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
869 |
870 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](5, "td");
871 |
872 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](6);
873 |
874 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
875 |
876 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](7, "td");
877 |
878 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](8);
879 |
880 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
881 |
882 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
883 | }
884 |
885 | if (rf & 2) {
886 | var user_r2 = ctx.$implicit;
887 | var i_r3 = ctx.index;
888 |
889 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
890 |
891 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate"](i_r3 + 1);
892 |
893 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
894 |
895 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate"](user_r2.firstName);
896 |
897 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
898 |
899 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate"](user_r2.lastName);
900 |
901 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](2);
902 |
903 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtextInterpolate"](user_r2.email);
904 | }
905 | }
906 |
907 | var UsersComponent =
908 | /*#__PURE__*/
909 | function () {
910 | function UsersComponent() {
911 | _classCallCheck(this, UsersComponent);
912 | }
913 |
914 | _createClass(UsersComponent, [{
915 | key: "ngOnInit",
916 | value: function ngOnInit() {}
917 | }]);
918 |
919 | return UsersComponent;
920 | }();
921 |
922 | UsersComponent.ɵfac = function UsersComponent_Factory(t) {
923 | return new (t || UsersComponent)();
924 | };
925 |
926 | UsersComponent.ɵcmp = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineComponent"]({
927 | type: UsersComponent,
928 | selectors: [["app-users"]],
929 | inputs: {
930 | users: "users"
931 | },
932 | decls: 16,
933 | vars: 1,
934 | consts: [[1, "container"], [1, "table", "table-bordered"], [4, "ngFor", "ngForOf"]],
935 | template: function UsersComponent_Template(rf, ctx) {
936 | if (rf & 1) {
937 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](0, "div", 0);
938 |
939 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](1, "h2");
940 |
941 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](2, "Users");
942 |
943 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
944 |
945 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](3, "table", 1);
946 |
947 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](4, "thead");
948 |
949 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](5, "tr");
950 |
951 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](6, "th");
952 |
953 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](7, "User Id");
954 |
955 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
956 |
957 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](8, "th");
958 |
959 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](9, "Firstname");
960 |
961 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
962 |
963 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](10, "th");
964 |
965 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](11, "Lastname");
966 |
967 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
968 |
969 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](12, "th");
970 |
971 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtext"](13, "Email");
972 |
973 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
974 |
975 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
976 |
977 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
978 |
979 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementStart"](14, "tbody");
980 |
981 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵtemplate"](15, UsersComponent_tr_15_Template, 9, 4, "tr", 2);
982 |
983 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
984 |
985 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
986 |
987 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵelementEnd"]();
988 | }
989 |
990 | if (rf & 2) {
991 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵadvance"](15);
992 |
993 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵproperty"]("ngForOf", ctx.users);
994 | }
995 | },
996 | directives: [_angular_common__WEBPACK_IMPORTED_MODULE_1__["NgForOf"]],
997 | styles: ["\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3VzZXJzLmNvbXBvbmVudC5jc3MifQ== */"]
998 | });
999 | /*@__PURE__*/
1000 |
1001 | (function () {
1002 | _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](UsersComponent, [{
1003 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"],
1004 | args: [{
1005 | selector: 'app-users',
1006 | templateUrl: './users.component.html',
1007 | styleUrls: ['./users.component.css']
1008 | }]
1009 | }], function () {
1010 | return [];
1011 | }, {
1012 | users: [{
1013 | type: _angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"]
1014 | }]
1015 | });
1016 | })();
1017 | /***/
1018 |
1019 | },
1020 |
1021 | /***/
1022 | "./src/environments/environment.ts":
1023 | /*!*****************************************!*\
1024 | !*** ./src/environments/environment.ts ***!
1025 | \*****************************************/
1026 |
1027 | /*! exports provided: environment */
1028 |
1029 | /***/
1030 | function srcEnvironmentsEnvironmentTs(module, __webpack_exports__, __webpack_require__) {
1031 | "use strict";
1032 |
1033 | __webpack_require__.r(__webpack_exports__);
1034 | /* harmony export (binding) */
1035 |
1036 |
1037 | __webpack_require__.d(__webpack_exports__, "environment", function () {
1038 | return environment;
1039 | }); // This file can be replaced during build by using the `fileReplacements` array.
1040 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
1041 | // The list of file replacements can be found in `angular.json`.
1042 |
1043 |
1044 | var environment = {
1045 | production: false
1046 | };
1047 | /*
1048 | * For easier debugging in development mode, you can import the following file
1049 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
1050 | *
1051 | * This import should be commented out in production mode because it will have a negative impact
1052 | * on performance if an error is thrown.
1053 | */
1054 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
1055 |
1056 | /***/
1057 | },
1058 |
1059 | /***/
1060 | "./src/main.ts":
1061 | /*!*********************!*\
1062 | !*** ./src/main.ts ***!
1063 | \*********************/
1064 |
1065 | /*! no exports provided */
1066 |
1067 | /***/
1068 | function srcMainTs(module, __webpack_exports__, __webpack_require__) {
1069 | "use strict";
1070 |
1071 | __webpack_require__.r(__webpack_exports__);
1072 | /* harmony import */
1073 |
1074 |
1075 | var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
1076 | /*! @angular/core */
1077 | "./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js");
1078 | /* harmony import */
1079 |
1080 |
1081 | var _environments_environment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
1082 | /*! ./environments/environment */
1083 | "./src/environments/environment.ts");
1084 | /* harmony import */
1085 |
1086 |
1087 | var _app_app_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(
1088 | /*! ./app/app.module */
1089 | "./src/app/app.module.ts");
1090 | /* harmony import */
1091 |
1092 |
1093 | var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(
1094 | /*! @angular/platform-browser */
1095 | "./node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/platform-browser.js");
1096 |
1097 | if (_environments_environment__WEBPACK_IMPORTED_MODULE_1__["environment"].production) {
1098 | Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["enableProdMode"])();
1099 | }
1100 |
1101 | _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__["platformBrowser"]().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_2__["AppModule"]).catch(function (err) {
1102 | return console.error(err);
1103 | });
1104 | /***/
1105 |
1106 | },
1107 |
1108 | /***/
1109 | 0:
1110 | /*!***************************!*\
1111 | !*** multi ./src/main.ts ***!
1112 | \***************************/
1113 |
1114 | /*! no static exports found */
1115 |
1116 | /***/
1117 | function _(module, exports, __webpack_require__) {
1118 | module.exports = __webpack_require__(
1119 | /*! /Users/bhargavbachina/Projects/angular-nodejs-example/my-app/src/main.ts */
1120 | "./src/main.ts");
1121 | /***/
1122 | }
1123 | }, [[0, "runtime", "vendor"]]]);
1124 | //# sourceMappingURL=main-es5.js.map
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/main-es5.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///$_lazy_route_resource lazy namespace object","webpack:///src/app/app-routing.module.ts","webpack:///src/app/app.component.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.module.ts","webpack:///src/app/app.service.ts","webpack:///src/app/display-board.component.ts","webpack:///src/app/display-board.component.html","webpack:///src/app/header/header.component.ts","webpack:///src/app/header/header.component.html","webpack:///src/app/users.component.ts","webpack:///src/app/users.component.html","webpack:///src/environments/environment.ts","webpack:///src/main.ts"],"names":["webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","exports","id","routes","AppRoutingModule","forRoot","imports","AppComponent","appService","title","userForm","firstName","nullValidator","required","lastName","email","users","userCount","destroy$","addUser","value","pipe","subscribe","data","console","log","reset","getUsers","next","unsubscribe","onSubmit","getAllUsers","selector","templateUrl","styleUrls","AppModule","declarations","providers","bootstrap","AppService","http","rootURL","get","user","post","providedIn","DisplayBoardComponent","getUsersEvent","emit","HeaderComponent","UsersComponent","environment","production","bootstrapModule","catch","err","error"],"mappings":";;;;;;;;;;;;;;;;;AAAA,aAASA,wBAAT,CAAkCC,GAAlC,EAAuC;AACtC;AACA;AACA,aAAOC,OAAO,CAACC,OAAR,GAAkBC,IAAlB,CAAuB,YAAW;AACxC,YAAIC,CAAC,GAAG,IAAIC,KAAJ,CAAU,yBAAyBL,GAAzB,GAA+B,GAAzC,CAAR;AACAI,SAAC,CAACE,IAAF,GAAS,kBAAT;AACA,cAAMF,CAAN;AACA,OAJM,CAAP;AAKA;;AACDL,4BAAwB,CAACQ,IAAzB,GAAgC,YAAW;AAAE,aAAO,EAAP;AAAY,KAAzD;;AACAR,4BAAwB,CAACG,OAAzB,GAAmCH,wBAAnC;AACAS,UAAM,CAACC,OAAP,GAAiBV,wBAAjB;AACAA,4BAAwB,CAACW,EAAzB,GAA8B,yCAA9B;;;;;;;;;;;;;;;;ACZA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;AAIA,QAAMC,MAAM,GAAW,EAAvB;;QAMaC,gB;;;;;YAAAA;;;;yBAAAA,gB;AAAgB,O;AAAA,gBAHlB,CAAC,6DAAaC,OAAb,CAAqBF,MAArB,CAAD,CAGkB,EAFjB,4DAEiB;;;;0HAAhBC,gB,EAAgB;AAAA;AAAA,kBAFjB,4DAEiB;AAAA,O;AAFL,K;;;;;sEAEXA,gB,EAAgB;cAJ5B,sDAI4B;eAJnB;AACRE,iBAAO,EAAE,CAAC,6DAAaD,OAAb,CAAqBF,MAArB,CAAD,CADD;AAERF,iBAAO,EAAE,CAAC,4DAAD;AAFD,S;AAImB,Q;;;;;;;;;;;;;;;;;;ACV7B;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;;;ACmCE;;;;;;AAAsC;;;;QDxB3BM,Y;;;AAEX,4BAAoBC,UAApB,EAA4C;AAAA;;AAAxB,aAAAA,UAAA,GAAAA,UAAA;AAEpB,aAAAC,KAAA,GAAQ,wBAAR;AAEA,aAAAC,QAAA,GAAW,IAAI,wDAAJ,CAAc;AACvBC,mBAAS,EAAE,IAAI,0DAAJ,CAAgB,EAAhB,EAAoB,0DAAWC,aAAX,IAA4B,0DAAWC,QAA3D,CADY;AAEvBC,kBAAQ,EAAE,IAAI,0DAAJ,CAAgB,EAAhB,EAAoB,0DAAWF,aAAX,IAA4B,0DAAWC,QAA3D,CAFa;AAGvBE,eAAK,EAAE,IAAI,0DAAJ,CAAgB,EAAhB,EAAoB,0DAAWH,aAAX,IAA4B,0DAAWC,QAA3D;AAHgB,SAAd,CAAX;AAMA,aAAAG,KAAA,GAAe,EAAf;AACA,aAAAC,SAAA,GAAY,CAAZ;AAEA,aAAAC,QAAA,GAA6B,IAAI,4CAAJ,EAA7B;AAb8C;;;;mCAenC;AAAA;;AAET,eAAKV,UAAL,CAAgBW,OAAhB,CAAwB,KAAKT,QAAL,CAAcU,KAAtC,EAA6CC,IAA7C,CAAkD,iEAAU,KAAKH,QAAf,CAAlD,EAA4EI,SAA5E,CAAsF,UAAAC,IAAI,EAAI;AAC5FC,mBAAO,CAACC,GAAR,CAAY,aAAZ,EAA2BF,IAA3B;AACA,iBAAI,CAACN,SAAL,GAAiB,KAAI,CAACA,SAAL,GAAiB,CAAlC;AACAO,mBAAO,CAACC,GAAR,CAAY,KAAI,CAACR,SAAjB;;AACA,iBAAI,CAACP,QAAL,CAAcgB,KAAd;AACD,WALD;AAMD;;;sCAEa;AAAA;;AACZ,eAAKlB,UAAL,CAAgBmB,QAAhB,GAA2BN,IAA3B,CAAgC,iEAAU,KAAKH,QAAf,CAAhC,EAA0DI,SAA1D,CAAoE,UAACN,KAAD,EAAkB;AAClF,kBAAI,CAACA,KAAL,GAAaA,KAAb;AACH,WAFD;AAGD;;;sCAEa;AACZ,eAAKE,QAAL,CAAcU,IAAd,CAAmB,IAAnB;AACA,eAAKV,QAAL,CAAcW,WAAd;AACD;;;;;;;uBApCUtB,Y,EAAY,wH;AAAA,K;;;YAAZA,Y;AAAY,+B;AAAA,e;AAAA,a;AAAA,20B;AAAA;AAAA;ACXzB;;AACA;;AACE;;AACE;;AACE;;AAAI;;AAAW;;AACf;;AAA6B;AAAA,mBAAY,IAAAuB,QAAA,EAAZ;AAAsB,WAAtB;;AAC3B;;AACE;;AACE;;AAAgC;;AAAU;;AAC1C;;AACF;;AACA;;AACE;;AAAmC;;AAAS;;AAC5C;;AACF;;AACF;;AACA;;AACE;;AACE;;AAAgC;;AAAK;;AACrC;;AACF;;AACF;;AACA;;AAA0E;;AAAM;;AAClF;;AACF;;AACA;;AACE;;AAEC;AAAA,mBAAiB,IAAAC,WAAA,EAAjB;AAA8B,WAA9B;;AAED;;AACF;;AACF;;AACF;;AACA;;AACE;;AACF;;;;AA/BY;;AAAA;;AAiBkB;;AAAA;;AAKvB;;AAAA;;AAQM;;AAAA;;;;;;;;;sEDxBAxB,Y,EAAY;cALxB,uDAKwB;eALd;AACTyB,kBAAQ,EAAE,UADD;AAETC,qBAAW,EAAE,sBAFJ;AAGTC,mBAAS,EAAE,CAAC,qBAAD;AAHF,S;AAKc,Q;;;;;;;;;;;;;;;;;;;;;;AEXzB;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA,oC,CAaA;AACA;AACA;AACA;AACA;AACA;;;QAoDaC,S;;;;;YAAAA,S;AAAS,kBAFR,2DAEQ;;;;yBAATA,S;AAAS,O;AAAA,iBAHT,E;AAAE,gBAxCJ,CACP,uEADO,EAEP,oEAFO,EAGP,4FAHO,EAIP,kEAJO,EAKP,qEALO,CAwCI;;;;0HAGFA,S,EAAS;AAAA,uBAhDlB,2DAgDkB,EA/ClB,wEA+CkB,EA9ClB,8EA8CkB,EA7ClB,+DA6CkB;AA7CJ,kBAGd,uEAHc,EAId,oEAJc,EAKd,4FALc,EAMd,kEANc,EAOd,qEAPc;AA6CI,O;AAtCF,K;;;;;sEAsCPA,S,EAAS;cAlDrB,sDAkDqB;eAlDZ;AACRC,sBAAY,EAAE,CACZ,2DADY,EAEZ,wEAFY,EAGZ,8EAHY,EAIZ,+DAJY,CADN;AAOR9B,iBAAO,EAAE,CACP,uEADO,EAEP,oEAFO,EAGP,4FAHO,EAIP,kEAJO,EAKP,qEALO,CAPD;AA+CR+B,mBAAS,EAAE,EA/CH;AAgDRC,mBAAS,EAAE,CAAC,2DAAD;AAhDH,S;AAkDY,Q;;;;;;;;;;;;;;;;;;ACtEtB;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;QAMaC,U;;;AAEX,0BAAoBC,IAApB,EAAsC;AAAA;;AAAlB,aAAAA,IAAA,GAAAA,IAAA;AAEpB,aAAAC,OAAA,GAAU,MAAV;AAFyC;;;;mCAI9B;AACT,iBAAO,KAAKD,IAAL,CAAUE,GAAV,CAAc,KAAKD,OAAL,GAAe,QAA7B,CAAP;AACD;;;gCAEOE,I,EAAW;AACjB,iBAAO,KAAKH,IAAL,CAAUI,IAAV,CAAe,KAAKH,OAAL,GAAe,OAA9B,EAAuC;AAACE,gBAAI,EAAJA;AAAD,WAAvC,CAAP;AACD;;;;;;;uBAZUJ,U,EAAU,uH;AAAA,K;;;aAAVA,U;AAAU,eAAVA,UAAU,K;AAAA,kBAFT;;;;;sEAEDA,U,EAAU;cAHtB,wDAGsB;eAHX;AACVM,oBAAU,EAAE;AADF,S;AAGW,Q;;;;;;;;;;;;;;;;;;;;;;ACNvB;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;QAOaC,qB;;;AAEX,uCAAc;AAAA;;AAEL,aAAA7B,SAAA,GAAY,CAAZ;AACC,aAAA8B,aAAA,GAAgB,IAAI,0DAAJ,EAAhB;AAHO;;;;mCAKT,CACP;;;sCAEa;AACZ,eAAKA,aAAL,CAAmBC,IAAnB,CAAwB,eAAxB;AACD;;;;;;;uBAZUF,qB;AAAqB,K;;;YAArBA,qB;AAAqB,wC;AAAA;AAAA;AAAA,O;AAAA;AAAA;AAAA,O;AAAA,c;AAAA,a;AAAA,sG;AAAA;AAAA;ACPlC;;AACE;;AAAI;;AAAa;;AACjB;;AACE;;AACF;;AACA;;AACE;;AAAgC;AAAA,mBAAS,IAAAf,WAAA,EAAT;AAAsB,WAAtB;;AAAwB;;AAAa;;AACvE;;AACF;;;;AALI;;AAAA;;;;;;;;sEDISe,qB,EAAqB;cALjC,uDAKiC;eALvB;AACTd,kBAAQ,EAAE,mBADD;AAETC,qBAAW,EAAE,gCAFJ;AAGTC,mBAAS,EAAE,CAAC,+BAAD;AAHF,S;AAKuB,Q;;;;gBAI/B;;;gBACA;;;;;;;;;;;;;;;;;;;;AEZH;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;QAOae,e;;;AAEX,iCAAc;AAAA;AAAG;;;;mCAET,CACP;;;;;;;uBALUA,e;AAAe,K;;;YAAfA,e;AAAe,iC;AAAA,c;AAAA,a;AAAA,6B;AAAA;AAAA;ACP5B;;AACE;;AAAI;;AAAmB;;AACzB;;;;;;;;sEDKaA,e,EAAe;cAL3B,uDAK2B;eALjB;AACTjB,kBAAQ,EAAE,YADD;AAETC,qBAAW,EAAE,yBAFJ;AAGTC,mBAAS,EAAE,CAAC,wBAAD;AAHF,S;AAKiB,Q;;;;;;;;;;;;;;;;;;;;AEP5B;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;;;ACYM;;AACE;;AAAI;;AAAS;;AACb;;AAAI;;AAAkB;;AACtB;;AAAI;;AAAiB;;AACrB;;AAAI;;AAAc;;AACpB;;;;;;;AAJM;;AAAA;;AACA;;AAAA;;AACA;;AAAA;;AACA;;AAAA;;;;QDTCgB,c;;;AAEX,gCAAc;AAAA;AAAG;;;;mCAIT,CACP;;;;;;;uBAPUA,c;AAAc,K;;;YAAdA,c;AAAc,gC;AAAA;AAAA;AAAA,O;AAAA,e;AAAA,a;AAAA,yF;AAAA;AAAA;ACP3B;;AACE;;AAAI;;AAAK;;AACT;;AACE;;AACE;;AACE;;AAAI;;AAAO;;AACX;;AAAI;;AAAS;;AACb;;AAAI;;AAAQ;;AACZ;;AAAI;;AAAK;;AACX;;AACF;;AACA;;AACE;;AAMF;;AACF;;AACF;;;;AARU;;AAAA;;;;;;;;;sEDLGA,c,EAAc;cAL1B,uDAK0B;eALhB;AACTlB,kBAAQ,EAAE,WADD;AAETC,qBAAW,EAAE,wBAFJ;AAGTC,mBAAS,EAAE,CAAC,uBAAD;AAHF,S;AAKgB,Q;;;;gBAIxB;;;;;;;;;;;;;;;;;;;;AEXH;AAAA;;;AAAA;AAAA;AAAA,O,CAAA;AACA;AACA;;;AAEO,QAAMiB,WAAW,GAAG;AACzBC,gBAAU,EAAE;AADa,KAApB;AAIP;;;;;;;AAOA;;;;;;;;;;;;;;;;;ACfA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;AAMA,QAAI,sEAAYA,UAAhB,EAA4B;AAC1B;AACD;;AAED,gFAAyBC,eAAzB,CAAyC,yDAAzC,EACGC,KADH,CACS,UAAAC,GAAG;AAAA,aAAI/B,OAAO,CAACgC,KAAR,CAAcD,GAAd,CAAJ;AAAA,KADZ","file":"main-es5.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component, OnDestroy } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { AppService } from './app.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnDestroy {\n\n constructor(private appService: AppService) {}\n\n title = 'angular-nodejs-example';\n\n userForm = new FormGroup({\n firstName: new FormControl('', Validators.nullValidator && Validators.required),\n lastName: new FormControl('', Validators.nullValidator && Validators.required),\n email: new FormControl('', Validators.nullValidator && Validators.required)\n });\n\n users: any[] = [];\n userCount = 0;\n\n destroy$: Subject = new Subject();\n\n onSubmit() {\n\n this.appService.addUser(this.userForm.value).pipe(takeUntil(this.destroy$)).subscribe(data => {\n console.log('message::::', data);\n this.userCount = this.userCount + 1;\n console.log(this.userCount);\n this.userForm.reset();\n });\n }\n\n getAllUsers() {\n this.appService.getUsers().pipe(takeUntil(this.destroy$)).subscribe((users: any[]) => {\n this.users = users;\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n}\n"," \n\n\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { HttpClientModule } from '@angular/common/http';\nimport { AppComponent } from './app.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { HeaderComponent } from './header/header.component';\nimport { DisplayBoardComponent } from './display-board.component';\nimport { UsersComponent } from './users.component';\nimport { environment } from '../environments/environment';\n\n// state related imports\n// import { StoreModule } from '@ngrx/store';\n// import { StoreDevtoolsModule } from '@ngrx/store-devtools';\n// import { reducers, metaReducers } from './app-state/reducers';\n// import { CustomRouterStateSerializer } from './app-state/shared/utils';\n// import { StoreRouterConnectingModule, RouterStateSerializer } from '@ngrx/router-store';\n\n@NgModule({\n declarations: [\n AppComponent,\n HeaderComponent,\n DisplayBoardComponent,\n UsersComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n ReactiveFormsModule,\n HttpClientModule,\n /**\n * StoreModule.forRoot is imported once in the root module, accepting a reducer\n * function or object map of reducer functions. If passed an object of\n * reducers, combineReducers will be run creating your application\n * meta-reducer. This returns all providers for an @ngrx/store\n * based application.\n\n StoreModule.forRoot(reducers, { metaReducers }),\n\n /**\n * @ngrx/router-store keeps router state up-to-date in the store.\n\n StoreRouterConnectingModule,\n\n /**\n * Store devtools instrument the store retaining past versions of state\n * and recalculating new states. This enables powerful time-travel\n * debugging.\n *\n * To use the debugger, install the Redux Devtools extension for either\n * Chrome or Firefox\n *\n * See: https://github.com/zalmoxisus/redux-devtools-extension\n\n !environment.production ? StoreDevtoolsModule.instrument() : [],\n\n /**\n * EffectsModule.forRoot() is imported once in the root module and\n * sets up the effects class to be initialized immediately when the\n * application starts.\n *\n * See: https://github.com/ngrx/platform/blob/master/docs/effects/api.md#forroot\n */\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n\n constructor(private http: HttpClient) { }\n\n rootURL = '/api';\n\n getUsers() {\n return this.http.get(this.rootURL + '/users');\n }\n\n addUser(user: any) {\n return this.http.post(this.rootURL + '/user', {user});\n }\n\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'app-display-board',\n templateUrl: './display-board.component.html',\n styleUrls: ['./display-board.component.css']\n})\nexport class DisplayBoardComponent implements OnInit {\n\n constructor() { }\n\n @Input() userCount = 0;\n @Output() getUsersEvent = new EventEmitter();\n\n ngOnInit(): void {\n }\n\n getAllUsers() {\n this.getUsersEvent.emit('get all users');\n }\n\n}\n","\n
Users Created \n
\n {{userCount}}\n
\n
\n Get All Users \n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.css']\n})\nexport class HeaderComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-users',\n templateUrl: './users.component.html',\n styleUrls: ['./users.component.css']\n})\nexport class UsersComponent implements OnInit {\n\n constructor() { }\n\n @Input() users: any[];\n\n ngOnInit(): void {\n }\n\n}\n","\n
Users \n
\n \n \n User Id \n Firstname \n Lastname \n Email \n \n \n \n \n {{i + 1}} \n {{user.firstName}} \n {{user.lastName}} \n {{user.email}} \n \n \n
\n
\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","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.error(err));\n"]}
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/runtime-es2015.js:
--------------------------------------------------------------------------------
1 | /******/ (function(modules) { // webpackBootstrap
2 | /******/ // install a JSONP callback for chunk loading
3 | /******/ function webpackJsonpCallback(data) {
4 | /******/ var chunkIds = data[0];
5 | /******/ var moreModules = data[1];
6 | /******/ var executeModules = data[2];
7 | /******/
8 | /******/ // add "moreModules" to the modules object,
9 | /******/ // then flag all "chunkIds" as loaded and fire callback
10 | /******/ var moduleId, chunkId, i = 0, resolves = [];
11 | /******/ for(;i < chunkIds.length; i++) {
12 | /******/ chunkId = chunkIds[i];
13 | /******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
14 | /******/ resolves.push(installedChunks[chunkId][0]);
15 | /******/ }
16 | /******/ installedChunks[chunkId] = 0;
17 | /******/ }
18 | /******/ for(moduleId in moreModules) {
19 | /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
20 | /******/ modules[moduleId] = moreModules[moduleId];
21 | /******/ }
22 | /******/ }
23 | /******/ if(parentJsonpFunction) parentJsonpFunction(data);
24 | /******/
25 | /******/ while(resolves.length) {
26 | /******/ resolves.shift()();
27 | /******/ }
28 | /******/
29 | /******/ // add entry modules from loaded chunk to deferred list
30 | /******/ deferredModules.push.apply(deferredModules, executeModules || []);
31 | /******/
32 | /******/ // run deferred modules when all chunks ready
33 | /******/ return checkDeferredModules();
34 | /******/ };
35 | /******/ function checkDeferredModules() {
36 | /******/ var result;
37 | /******/ for(var i = 0; i < deferredModules.length; i++) {
38 | /******/ var deferredModule = deferredModules[i];
39 | /******/ var fulfilled = true;
40 | /******/ for(var j = 1; j < deferredModule.length; j++) {
41 | /******/ var depId = deferredModule[j];
42 | /******/ if(installedChunks[depId] !== 0) fulfilled = false;
43 | /******/ }
44 | /******/ if(fulfilled) {
45 | /******/ deferredModules.splice(i--, 1);
46 | /******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
47 | /******/ }
48 | /******/ }
49 | /******/
50 | /******/ return result;
51 | /******/ }
52 | /******/
53 | /******/ // The module cache
54 | /******/ var installedModules = {};
55 | /******/
56 | /******/ // object to store loaded and loading chunks
57 | /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
58 | /******/ // Promise = chunk loading, 0 = chunk loaded
59 | /******/ var installedChunks = {
60 | /******/ "runtime": 0
61 | /******/ };
62 | /******/
63 | /******/ var deferredModules = [];
64 | /******/
65 | /******/ // The require function
66 | /******/ function __webpack_require__(moduleId) {
67 | /******/
68 | /******/ // Check if module is in cache
69 | /******/ if(installedModules[moduleId]) {
70 | /******/ return installedModules[moduleId].exports;
71 | /******/ }
72 | /******/ // Create a new module (and put it into the cache)
73 | /******/ var module = installedModules[moduleId] = {
74 | /******/ i: moduleId,
75 | /******/ l: false,
76 | /******/ exports: {}
77 | /******/ };
78 | /******/
79 | /******/ // Execute the module function
80 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
81 | /******/
82 | /******/ // Flag the module as loaded
83 | /******/ module.l = true;
84 | /******/
85 | /******/ // Return the exports of the module
86 | /******/ return module.exports;
87 | /******/ }
88 | /******/
89 | /******/
90 | /******/ // expose the modules object (__webpack_modules__)
91 | /******/ __webpack_require__.m = modules;
92 | /******/
93 | /******/ // expose the module cache
94 | /******/ __webpack_require__.c = installedModules;
95 | /******/
96 | /******/ // define getter function for harmony exports
97 | /******/ __webpack_require__.d = function(exports, name, getter) {
98 | /******/ if(!__webpack_require__.o(exports, name)) {
99 | /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
100 | /******/ }
101 | /******/ };
102 | /******/
103 | /******/ // define __esModule on exports
104 | /******/ __webpack_require__.r = function(exports) {
105 | /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
106 | /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
107 | /******/ }
108 | /******/ Object.defineProperty(exports, '__esModule', { value: true });
109 | /******/ };
110 | /******/
111 | /******/ // create a fake namespace object
112 | /******/ // mode & 1: value is a module id, require it
113 | /******/ // mode & 2: merge all properties of value into the ns
114 | /******/ // mode & 4: return value when already ns object
115 | /******/ // mode & 8|1: behave like require
116 | /******/ __webpack_require__.t = function(value, mode) {
117 | /******/ if(mode & 1) value = __webpack_require__(value);
118 | /******/ if(mode & 8) return value;
119 | /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
120 | /******/ var ns = Object.create(null);
121 | /******/ __webpack_require__.r(ns);
122 | /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
123 | /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
124 | /******/ return ns;
125 | /******/ };
126 | /******/
127 | /******/ // getDefaultExport function for compatibility with non-harmony modules
128 | /******/ __webpack_require__.n = function(module) {
129 | /******/ var getter = module && module.__esModule ?
130 | /******/ function getDefault() { return module['default']; } :
131 | /******/ function getModuleExports() { return module; };
132 | /******/ __webpack_require__.d(getter, 'a', getter);
133 | /******/ return getter;
134 | /******/ };
135 | /******/
136 | /******/ // Object.prototype.hasOwnProperty.call
137 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
138 | /******/
139 | /******/ // __webpack_public_path__
140 | /******/ __webpack_require__.p = "";
141 | /******/
142 | /******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
143 | /******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
144 | /******/ jsonpArray.push = webpackJsonpCallback;
145 | /******/ jsonpArray = jsonpArray.slice();
146 | /******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
147 | /******/ var parentJsonpFunction = oldJsonpFunction;
148 | /******/
149 | /******/
150 | /******/ // run deferred modules from other chunks
151 | /******/ checkDeferredModules();
152 | /******/ })
153 | /************************************************************************/
154 | /******/ ([]);
155 | //# sourceMappingURL=runtime-es2015.js.map
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/runtime-es2015.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack/bootstrap"],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA","file":"runtime-es2015.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\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 = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && 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(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime\": 0\n \t};\n\n \tvar deferredModules = [];\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\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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":"webpack:///"}
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/runtime-es5.js:
--------------------------------------------------------------------------------
1 | /******/ (function(modules) { // webpackBootstrap
2 | /******/ // install a JSONP callback for chunk loading
3 | /******/ function webpackJsonpCallback(data) {
4 | /******/ var chunkIds = data[0];
5 | /******/ var moreModules = data[1];
6 | /******/ var executeModules = data[2];
7 | /******/
8 | /******/ // add "moreModules" to the modules object,
9 | /******/ // then flag all "chunkIds" as loaded and fire callback
10 | /******/ var moduleId, chunkId, i = 0, resolves = [];
11 | /******/ for(;i < chunkIds.length; i++) {
12 | /******/ chunkId = chunkIds[i];
13 | /******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
14 | /******/ resolves.push(installedChunks[chunkId][0]);
15 | /******/ }
16 | /******/ installedChunks[chunkId] = 0;
17 | /******/ }
18 | /******/ for(moduleId in moreModules) {
19 | /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
20 | /******/ modules[moduleId] = moreModules[moduleId];
21 | /******/ }
22 | /******/ }
23 | /******/ if(parentJsonpFunction) parentJsonpFunction(data);
24 | /******/
25 | /******/ while(resolves.length) {
26 | /******/ resolves.shift()();
27 | /******/ }
28 | /******/
29 | /******/ // add entry modules from loaded chunk to deferred list
30 | /******/ deferredModules.push.apply(deferredModules, executeModules || []);
31 | /******/
32 | /******/ // run deferred modules when all chunks ready
33 | /******/ return checkDeferredModules();
34 | /******/ };
35 | /******/ function checkDeferredModules() {
36 | /******/ var result;
37 | /******/ for(var i = 0; i < deferredModules.length; i++) {
38 | /******/ var deferredModule = deferredModules[i];
39 | /******/ var fulfilled = true;
40 | /******/ for(var j = 1; j < deferredModule.length; j++) {
41 | /******/ var depId = deferredModule[j];
42 | /******/ if(installedChunks[depId] !== 0) fulfilled = false;
43 | /******/ }
44 | /******/ if(fulfilled) {
45 | /******/ deferredModules.splice(i--, 1);
46 | /******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
47 | /******/ }
48 | /******/ }
49 | /******/
50 | /******/ return result;
51 | /******/ }
52 | /******/
53 | /******/ // The module cache
54 | /******/ var installedModules = {};
55 | /******/
56 | /******/ // object to store loaded and loading chunks
57 | /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
58 | /******/ // Promise = chunk loading, 0 = chunk loaded
59 | /******/ var installedChunks = {
60 | /******/ "runtime": 0
61 | /******/ };
62 | /******/
63 | /******/ var deferredModules = [];
64 | /******/
65 | /******/ // The require function
66 | /******/ function __webpack_require__(moduleId) {
67 | /******/
68 | /******/ // Check if module is in cache
69 | /******/ if(installedModules[moduleId]) {
70 | /******/ return installedModules[moduleId].exports;
71 | /******/ }
72 | /******/ // Create a new module (and put it into the cache)
73 | /******/ var module = installedModules[moduleId] = {
74 | /******/ i: moduleId,
75 | /******/ l: false,
76 | /******/ exports: {}
77 | /******/ };
78 | /******/
79 | /******/ // Execute the module function
80 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
81 | /******/
82 | /******/ // Flag the module as loaded
83 | /******/ module.l = true;
84 | /******/
85 | /******/ // Return the exports of the module
86 | /******/ return module.exports;
87 | /******/ }
88 | /******/
89 | /******/
90 | /******/ // expose the modules object (__webpack_modules__)
91 | /******/ __webpack_require__.m = modules;
92 | /******/
93 | /******/ // expose the module cache
94 | /******/ __webpack_require__.c = installedModules;
95 | /******/
96 | /******/ // define getter function for harmony exports
97 | /******/ __webpack_require__.d = function(exports, name, getter) {
98 | /******/ if(!__webpack_require__.o(exports, name)) {
99 | /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
100 | /******/ }
101 | /******/ };
102 | /******/
103 | /******/ // define __esModule on exports
104 | /******/ __webpack_require__.r = function(exports) {
105 | /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
106 | /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
107 | /******/ }
108 | /******/ Object.defineProperty(exports, '__esModule', { value: true });
109 | /******/ };
110 | /******/
111 | /******/ // create a fake namespace object
112 | /******/ // mode & 1: value is a module id, require it
113 | /******/ // mode & 2: merge all properties of value into the ns
114 | /******/ // mode & 4: return value when already ns object
115 | /******/ // mode & 8|1: behave like require
116 | /******/ __webpack_require__.t = function(value, mode) {
117 | /******/ if(mode & 1) value = __webpack_require__(value);
118 | /******/ if(mode & 8) return value;
119 | /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
120 | /******/ var ns = Object.create(null);
121 | /******/ __webpack_require__.r(ns);
122 | /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
123 | /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
124 | /******/ return ns;
125 | /******/ };
126 | /******/
127 | /******/ // getDefaultExport function for compatibility with non-harmony modules
128 | /******/ __webpack_require__.n = function(module) {
129 | /******/ var getter = module && module.__esModule ?
130 | /******/ function getDefault() { return module['default']; } :
131 | /******/ function getModuleExports() { return module; };
132 | /******/ __webpack_require__.d(getter, 'a', getter);
133 | /******/ return getter;
134 | /******/ };
135 | /******/
136 | /******/ // Object.prototype.hasOwnProperty.call
137 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
138 | /******/
139 | /******/ // __webpack_public_path__
140 | /******/ __webpack_require__.p = "";
141 | /******/
142 | /******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
143 | /******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
144 | /******/ jsonpArray.push = webpackJsonpCallback;
145 | /******/ jsonpArray = jsonpArray.slice();
146 | /******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
147 | /******/ var parentJsonpFunction = oldJsonpFunction;
148 | /******/
149 | /******/
150 | /******/ // run deferred modules from other chunks
151 | /******/ checkDeferredModules();
152 | /******/ })
153 | /************************************************************************/
154 | /******/ ([]);
155 | //# sourceMappingURL=runtime-es5.js.map
--------------------------------------------------------------------------------
/app-ui/dist/angular-nodejs-example/runtime-es5.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack/bootstrap"],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA","file":"runtime-es5.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\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 = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && 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(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime\": 0\n \t};\n\n \tvar deferredModules = [];\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\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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":"webpack:///"}
--------------------------------------------------------------------------------
/app-ui/e2e/protractor.conf.js:
--------------------------------------------------------------------------------
1 | // @ts-check
2 | // Protractor configuration file, see link for more information
3 | // https://github.com/angular/protractor/blob/master/lib/config.ts
4 |
5 | const { SpecReporter } = require('jasmine-spec-reporter');
6 |
7 | /**
8 | * @type { import("protractor").Config }
9 | */
10 | exports.config = {
11 | allScriptsTimeout: 11000,
12 | specs: [
13 | './src/**/*.e2e-spec.ts'
14 | ],
15 | capabilities: {
16 | browserName: 'chrome'
17 | },
18 | directConnect: true,
19 | baseUrl: 'http://localhost:4200/',
20 | framework: 'jasmine',
21 | jasmineNodeOpts: {
22 | showColors: true,
23 | defaultTimeoutInterval: 30000,
24 | print: function() {}
25 | },
26 | onPrepare() {
27 | require('ts-node').register({
28 | project: require('path').join(__dirname, './tsconfig.json')
29 | });
30 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
31 | }
32 | };
--------------------------------------------------------------------------------
/app-ui/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 | import { browser, logging } from 'protractor';
3 |
4 | describe('workspace-project App', () => {
5 | let page: AppPage;
6 |
7 | beforeEach(() => {
8 | page = new AppPage();
9 | });
10 |
11 | it('should display welcome message', () => {
12 | page.navigateTo();
13 | expect(page.getTitleText()).toEqual('angular-nodejs-example app is running!');
14 | });
15 |
16 | afterEach(async () => {
17 | // Assert that there are no errors emitted from the browser
18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER);
19 | expect(logs).not.toContain(jasmine.objectContaining({
20 | level: logging.Level.SEVERE,
21 | } as logging.Entry));
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/app-ui/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo(): Promise {
5 | return browser.get(browser.baseUrl) as Promise;
6 | }
7 |
8 | getTitleText(): Promise {
9 | return element(by.css('app-root .content span')).getText() as Promise;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app-ui/e2e/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/e2e",
5 | "module": "commonjs",
6 | "target": "es5",
7 | "types": [
8 | "jasmine",
9 | "jasminewd2",
10 | "node"
11 | ]
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app-ui/karma.conf.js:
--------------------------------------------------------------------------------
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/angular-nodejs-example'),
20 | reports: ['html', 'lcovonly', 'text-summary'],
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 | restartOnFileChange: true
31 | });
32 | };
33 |
--------------------------------------------------------------------------------
/app-ui/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-nodejs-example",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "ng": "ng",
6 | "start": "ng serve --host=0.0.0.0 --port 4201",
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": "~9.0.3",
15 | "@angular/common": "~9.0.3",
16 | "@angular/compiler": "~9.0.3",
17 | "@angular/core": "~9.0.3",
18 | "@angular/forms": "~9.0.3",
19 | "@angular/platform-browser": "~9.0.3",
20 | "@angular/platform-browser-dynamic": "~9.0.3",
21 | "@angular/router": "~9.0.3",
22 | "@ngrx/effects": "^9.0.0",
23 | "@ngrx/entity": "^9.0.0",
24 | "@ngrx/router-store": "^9.0.0",
25 | "@ngrx/store": "^9.0.0",
26 | "@ngrx/store-devtools": "^9.0.0",
27 | "bootstrap": "4.1.1",
28 | "ngrx": "0.0.1-security",
29 | "ngrx-store-freeze": "^0.2.4",
30 | "ngrx-store-localstorage": "^9.0.0",
31 | "ngx-bootstrap": "^5.5.0",
32 | "rxjs": "~6.5.4",
33 | "tslib": "^1.10.0",
34 | "zone.js": "~0.10.2"
35 | },
36 | "devDependencies": {
37 | "@angular-devkit/build-angular": "~0.900.4",
38 | "@angular/cli": "~9.0.4",
39 | "@angular/compiler-cli": "~9.0.3",
40 | "@angular/language-service": "~9.0.3",
41 | "@types/node": "^12.11.1",
42 | "@types/jasmine": "~3.5.0",
43 | "@types/jasminewd2": "~2.0.3",
44 | "codelyzer": "^5.1.2",
45 | "jasmine-core": "~3.5.0",
46 | "jasmine-spec-reporter": "~4.2.1",
47 | "karma": "~4.3.0",
48 | "karma-chrome-launcher": "~3.1.0",
49 | "karma-coverage-istanbul-reporter": "~2.1.0",
50 | "karma-jasmine": "~2.0.1",
51 | "karma-jasmine-html-reporter": "^1.4.2",
52 | "protractor": "~5.4.3",
53 | "ts-node": "~8.3.0",
54 | "tslint": "~5.18.0",
55 | "typescript": "~3.7.5"
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/app-ui/proxy.conf.json:
--------------------------------------------------------------------------------
1 | {
2 | "/api": {
3 | "target": "http://node-api:3080",
4 | "secure": false
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/app-ui/src/app/app-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 |
4 |
5 | const routes: Routes = [];
6 |
7 | @NgModule({
8 | imports: [RouterModule.forRoot(routes)],
9 | exports: [RouterModule]
10 | })
11 | export class AppRoutingModule { }
12 |
--------------------------------------------------------------------------------
/app-ui/src/app/app-state/actions/createUser.ts:
--------------------------------------------------------------------------------
1 | import { createAction, props } from '@ngrx/store';
2 | import { User } from '../models';
3 |
4 | export const CREATE_USER = '[CREATE USER] Create User API ';
5 | export const CREATE_USER_SUCCESS = '[CREATE USER] Create User API Success';
6 | export const CREATE_USER_FAILURE = '[CREATE USER] Create User API Failure';
7 |
8 | export const createUser = createAction(
9 | CREATE_USER,
10 | props()
11 | );
12 |
13 | export const createUserSuccess = createAction(
14 | CREATE_USER,
15 | props()
16 | );
17 |
18 | export const createUserFailure = createAction(
19 | CREATE_USER,
20 | props()
21 | );
22 |
--------------------------------------------------------------------------------
/app-ui/src/app/app-state/effects/index.ts:
--------------------------------------------------------------------------------
1 | // export { UserEffects } from './user.effects';
2 |
--------------------------------------------------------------------------------
/app-ui/src/app/app-state/models/index.ts:
--------------------------------------------------------------------------------
1 | export { User } from './user.model';
2 |
--------------------------------------------------------------------------------
/app-ui/src/app/app-state/models/user.model.ts:
--------------------------------------------------------------------------------
1 | export class User {
2 | firstName: string;
3 | lastName: string;
4 | email: string;
5 | }
6 |
--------------------------------------------------------------------------------
/app-ui/src/app/app-state/reducers/createuser.ts:
--------------------------------------------------------------------------------
1 | import * as createUserActions from '../actions/createUser';
2 | import { Action, createReducer, on } from '@ngrx/store';
3 |
4 | export interface State {
5 | isLoading: boolean;
6 | isLoadingSuccess: boolean;
7 | users: any;
8 | }
9 |
10 | const initialState: State = {
11 | isLoading: false,
12 | isLoadingSuccess: false,
13 | users: []
14 | };
15 |
16 | export const createUserReducer = createReducer(
17 | initialState,
18 | on(createUserActions.createUser, state => ({...state, isLoading: true, isLoadingSuccess: false, login: undefined})),
19 | on(createUserActions.createUserSuccess, (state, user) => ({...state, isLoading: false, isLoadingSuccess: true, user})),
20 | on(createUserActions.createUserFailure, (state, user) => ({...state, isLoading: false, isLoadingSuccess: true, user}))
21 | );
22 |
23 | export function reducer(state: State | undefined, action: Action) {
24 | return createUserReducer(state, action);
25 | }
26 |
27 | export const getUsers = (state: State) => {
28 | return {
29 | isLoading: state.isLoading,
30 | isLoadingSuccess: state.isLoadingSuccess,
31 | login: state.users };
32 | };
33 |
--------------------------------------------------------------------------------
/app-ui/src/app/app-state/reducers/index.ts:
--------------------------------------------------------------------------------
1 | import {
2 | ActionReducerMap,
3 | createSelector,
4 | createFeatureSelector,
5 | ActionReducer,
6 | MetaReducer,
7 | } from '@ngrx/store';
8 | import { localStorageSync } from 'ngrx-store-localstorage';
9 | import * as fromRouter from '@ngrx/router-store';
10 | import { RouterStateUrl } from '../shared/utils';
11 |
12 | import { environment } from '../../../environments/environment';
13 |
14 | /**
15 | * storeFreeze prevents state from being mutated. When mutation occurs, an
16 | * exception will be thrown. This is useful during development mode to
17 | * ensure that none of the reducers accidentally mutates the state.
18 | */
19 | import { storeFreeze } from 'ngrx-store-freeze';
20 |
21 | /**
22 | * Every reducer module's default export is the reducer function itself. In
23 | * addition, each module should export a type or interface that describes
24 | * the state of the reducer plus any selector functions. The `* as`
25 | * notation packages up all of the exports into a single object.
26 | */
27 |
28 | import * as fromCreateUser from './createuser';
29 |
30 | /**
31 | * As mentioned, we treat each reducer like a table in a database. This means
32 | * our top level state interface is just a map of keys to inner state types.
33 | */
34 | export interface State {
35 | createUser: fromCreateUser.State;
36 | routerReducer: fromRouter.RouterReducerState;
37 | }
38 |
39 | /**
40 | * Our state is composed of a map of action reducer functions.
41 | * These reducer functions are called with each dispatched action
42 | * and the current or initial state and return a new immutable state.
43 | */
44 | export const reducers: ActionReducerMap = {
45 | createUser: fromCreateUser.reducer,
46 | routerReducer: fromRouter.routerReducer,
47 | };
48 |
49 | /*localstorage setup for the store
50 | Provide state (reducer) keys to sync with local storage. Returns a meta-reducer.
51 | */
52 |
53 | const reducerKeys = ['loggedinuser'];
54 | export function localStorageSyncReducer(reducer: ActionReducer): ActionReducer {
55 | return localStorageSync({keys: reducerKeys})(reducer);
56 | }
57 |
58 | // //console.log all actions
59 | export function logger(reducer: ActionReducer): ActionReducer {
60 | // tslint:disable-next-line: only-arrow-functions
61 | return function(state: State, action: any): State {
62 | console.log('state', state);
63 | console.log('action', action);
64 | return reducer(state, action);
65 | };
66 | }
67 |
68 | /**
69 | * By default, @ngrx/store uses combineReducers with the reducer map to compose
70 | * the root meta-reducer. To add more meta-reducers, provide an array of meta-reducers
71 | * that will be composed to form the root meta-reducer.
72 | */
73 |
74 | export const metaReducers: MetaReducer[] =
75 | environment.production ? [localStorageSyncReducer]
76 | : [logger, storeFreeze, localStorageSyncReducer];
77 |
78 | /* Transactions State start */
79 | export const getCreateUserState = createFeatureSelector('createUser');
80 |
81 | export const getUsers = createSelector(
82 | getCreateUserState,
83 | fromCreateUser.getUsers
84 | );
85 |
--------------------------------------------------------------------------------
/app-ui/src/app/app-state/shared/utils.ts:
--------------------------------------------------------------------------------
1 | import { RouterStateSerializer } from '@ngrx/router-store';
2 | import { RouterStateSnapshot, Params } from '@angular/router';
3 |
4 | /**
5 | * The RouterStateSerializer takes the current RouterStateSnapshot
6 | * and returns any pertinent information needed. The snapshot contains
7 | * all information about the state of the router at the given point in time.
8 | * The entire snapshot is complex and not always needed. In this case, you only
9 | * need the URL and query parameters from the snapshot in the store. Other items could be
10 | * returned such as route parameters and static route data.
11 | */
12 |
13 | export interface RouterStateUrl {
14 | url: string;
15 | queryParams: Params;
16 | }
17 |
18 | export class CustomRouterStateSerializer
19 | implements RouterStateSerializer {
20 | serialize(routerState: RouterStateSnapshot): RouterStateUrl {
21 | const { url } = routerState;
22 | const queryParams = routerState.root.queryParams;
23 |
24 | return { url, queryParams };
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app-ui/src/app/app.component.css:
--------------------------------------------------------------------------------
1 | .mrgnbtm {
2 | margin-top: 20px;
3 | }
4 |
--------------------------------------------------------------------------------
/app-ui/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
35 |
38 |
--------------------------------------------------------------------------------
/app-ui/src/app/app.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed, async } from '@angular/core/testing';
2 | import { RouterTestingModule } from '@angular/router/testing';
3 | import { AppComponent } from './app.component';
4 |
5 | describe('AppComponent', () => {
6 | beforeEach(async(() => {
7 | TestBed.configureTestingModule({
8 | imports: [
9 | RouterTestingModule
10 | ],
11 | declarations: [
12 | AppComponent
13 | ],
14 | }).compileComponents();
15 | }));
16 |
17 | it('should create the app', () => {
18 | const fixture = TestBed.createComponent(AppComponent);
19 | const app = fixture.componentInstance;
20 | expect(app).toBeTruthy();
21 | });
22 |
23 | it(`should have as title 'angular-nodejs-example'`, () => {
24 | const fixture = TestBed.createComponent(AppComponent);
25 | const app = fixture.componentInstance;
26 | expect(app.title).toEqual('angular-nodejs-example');
27 | });
28 |
29 | it('should render title', () => {
30 | const fixture = TestBed.createComponent(AppComponent);
31 | fixture.detectChanges();
32 | const compiled = fixture.nativeElement;
33 | expect(compiled.querySelector('.content span').textContent).toContain('angular-nodejs-example app is running!');
34 | });
35 | });
36 |
--------------------------------------------------------------------------------
/app-ui/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnDestroy } from '@angular/core';
2 | import { FormGroup, FormControl, Validators } from '@angular/forms';
3 | import { AppService } from './app.service';
4 | import { takeUntil } from 'rxjs/operators';
5 | import { Subject } from 'rxjs';
6 |
7 | @Component({
8 | selector: 'app-root',
9 | templateUrl: './app.component.html',
10 | styleUrls: ['./app.component.css']
11 | })
12 | export class AppComponent implements OnDestroy {
13 |
14 | constructor(private appService: AppService) {}
15 |
16 | title = 'angular-nodejs-example';
17 |
18 | userForm = new FormGroup({
19 | firstName: new FormControl('', Validators.nullValidator && Validators.required),
20 | lastName: new FormControl('', Validators.nullValidator && Validators.required),
21 | email: new FormControl('', Validators.nullValidator && Validators.required)
22 | });
23 |
24 | users: any[] = [];
25 | userCount = 0;
26 |
27 | destroy$: Subject = new Subject();
28 |
29 | onSubmit() {
30 |
31 | this.appService.addUser(this.userForm.value).pipe(takeUntil(this.destroy$)).subscribe(data => {
32 | console.log('message::::', data);
33 | this.userCount = this.userCount + 1;
34 | console.log(this.userCount);
35 | this.userForm.reset();
36 | });
37 | }
38 |
39 | getAllUsers() {
40 | this.appService.getUsers().pipe(takeUntil(this.destroy$)).subscribe((users: any[]) => {
41 | this.users = users;
42 | });
43 | }
44 |
45 | ngOnDestroy() {
46 | this.destroy$.next(true);
47 | this.destroy$.unsubscribe();
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app-ui/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { NgModule } from '@angular/core';
3 | import { ReactiveFormsModule } from '@angular/forms';
4 |
5 | import { AppRoutingModule } from './app-routing.module';
6 | import { HttpClientModule } from '@angular/common/http';
7 | import { AppComponent } from './app.component';
8 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
9 | import { HeaderComponent } from './header/header.component';
10 | import { DisplayBoardComponent } from './display-board.component';
11 | import { UsersComponent } from './users.component';
12 | import { environment } from '../environments/environment';
13 |
14 | // state related imports
15 | // import { StoreModule } from '@ngrx/store';
16 | // import { StoreDevtoolsModule } from '@ngrx/store-devtools';
17 | // import { reducers, metaReducers } from './app-state/reducers';
18 | // import { CustomRouterStateSerializer } from './app-state/shared/utils';
19 | // import { StoreRouterConnectingModule, RouterStateSerializer } from '@ngrx/router-store';
20 |
21 | @NgModule({
22 | declarations: [
23 | AppComponent,
24 | HeaderComponent,
25 | DisplayBoardComponent,
26 | UsersComponent
27 | ],
28 | imports: [
29 | BrowserModule,
30 | AppRoutingModule,
31 | BrowserAnimationsModule,
32 | ReactiveFormsModule,
33 | HttpClientModule,
34 | /**
35 | * StoreModule.forRoot is imported once in the root module, accepting a reducer
36 | * function or object map of reducer functions. If passed an object of
37 | * reducers, combineReducers will be run creating your application
38 | * meta-reducer. This returns all providers for an @ngrx/store
39 | * based application.
40 |
41 | StoreModule.forRoot(reducers, { metaReducers }),
42 |
43 | /**
44 | * @ngrx/router-store keeps router state up-to-date in the store.
45 |
46 | StoreRouterConnectingModule,
47 |
48 | /**
49 | * Store devtools instrument the store retaining past versions of state
50 | * and recalculating new states. This enables powerful time-travel
51 | * debugging.
52 | *
53 | * To use the debugger, install the Redux Devtools extension for either
54 | * Chrome or Firefox
55 | *
56 | * See: https://github.com/zalmoxisus/redux-devtools-extension
57 |
58 | !environment.production ? StoreDevtoolsModule.instrument() : [],
59 |
60 | /**
61 | * EffectsModule.forRoot() is imported once in the root module and
62 | * sets up the effects class to be initialized immediately when the
63 | * application starts.
64 | *
65 | * See: https://github.com/ngrx/platform/blob/master/docs/effects/api.md#forroot
66 | */
67 | ],
68 | providers: [],
69 | bootstrap: [AppComponent]
70 | })
71 | export class AppModule { }
72 |
--------------------------------------------------------------------------------
/app-ui/src/app/app.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { AppService } from './app.service';
4 |
5 | describe('AppService', () => {
6 | let service: AppService;
7 |
8 | beforeEach(() => {
9 | TestBed.configureTestingModule({});
10 | service = TestBed.inject(AppService);
11 | });
12 |
13 | it('should be created', () => {
14 | expect(service).toBeTruthy();
15 | });
16 | });
17 |
--------------------------------------------------------------------------------
/app-ui/src/app/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { HttpClient } from '@angular/common/http';
3 |
4 | @Injectable({
5 | providedIn: 'root'
6 | })
7 | export class AppService {
8 |
9 | constructor(private http: HttpClient) { }
10 |
11 | rootURL = '/api';
12 |
13 | getUsers() {
14 | return this.http.get(this.rootURL + '/users');
15 | }
16 |
17 | addUser(user: any) {
18 | return this.http.post(this.rootURL + '/user', {user});
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/app-ui/src/app/display-board.component.css:
--------------------------------------------------------------------------------
1 | .display-board {
2 | width: 100%;
3 | background-color: rgb(112, 120, 236);
4 | padding: 5%;
5 | }
6 |
7 | .number {
8 | color: red;
9 | font-size: 75px;
10 | text-align: center;
11 | }
12 |
--------------------------------------------------------------------------------
/app-ui/src/app/display-board.component.html:
--------------------------------------------------------------------------------
1 |
2 |
Users Created
3 |
4 | {{userCount}}
5 |
6 |
7 | Get All Users
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app-ui/src/app/display-board.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { DisplayBoardComponent } from './display-board.component';
4 |
5 | describe('DisplayBoardComponent', () => {
6 | let component: DisplayBoardComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ DisplayBoardComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(DisplayBoardComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/app-ui/src/app/display-board.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-display-board',
5 | templateUrl: './display-board.component.html',
6 | styleUrls: ['./display-board.component.css']
7 | })
8 | export class DisplayBoardComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | @Input() userCount = 0;
13 | @Output() getUsersEvent = new EventEmitter();
14 |
15 | ngOnInit(): void {
16 | }
17 |
18 | getAllUsers() {
19 | this.getUsersEvent.emit('get all users');
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/app-ui/src/app/header/header.component.css:
--------------------------------------------------------------------------------
1 | .header {
2 | width: 100%;
3 | padding: 2%;
4 | background-color: blueviolet;
5 | color: white;
6 | text-align: center;
7 | }
8 |
--------------------------------------------------------------------------------
/app-ui/src/app/header/header.component.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app-ui/src/app/header/header.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { HeaderComponent } from './header.component';
4 |
5 | describe('HeaderComponent', () => {
6 | let component: HeaderComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ HeaderComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(HeaderComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/app-ui/src/app/header/header.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-header',
5 | templateUrl: './header.component.html',
6 | styleUrls: ['./header.component.css']
7 | })
8 | export class HeaderComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit(): void {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/app-ui/src/app/users.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbachi/angular-nodejs-docker-compose/bc6dafa1810c41fdb4dd8d1e1f36e451c84638ac/app-ui/src/app/users.component.css
--------------------------------------------------------------------------------
/app-ui/src/app/users.component.html:
--------------------------------------------------------------------------------
1 |
2 |
Users
3 |
4 |
5 |
6 | User Id
7 | Firstname
8 | Lastname
9 | Email
10 |
11 |
12 |
13 |
14 | {{i + 1}}
15 | {{user.firstName}}
16 | {{user.lastName}}
17 | {{user.email}}
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app-ui/src/app/users.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { UsersComponent } from './users.component';
4 |
5 | describe('UsersComponent', () => {
6 | let component: UsersComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async(() => {
10 | TestBed.configureTestingModule({
11 | declarations: [ UsersComponent ]
12 | })
13 | .compileComponents();
14 | }));
15 |
16 | beforeEach(() => {
17 | fixture = TestBed.createComponent(UsersComponent);
18 | component = fixture.componentInstance;
19 | fixture.detectChanges();
20 | });
21 |
22 | it('should create', () => {
23 | expect(component).toBeTruthy();
24 | });
25 | });
26 |
--------------------------------------------------------------------------------
/app-ui/src/app/users.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit, Input } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-users',
5 | templateUrl: './users.component.html',
6 | styleUrls: ['./users.component.css']
7 | })
8 | export class UsersComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | @Input() users: any[];
13 |
14 | ngOnInit(): void {
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/app-ui/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbachi/angular-nodejs-docker-compose/bc6dafa1810c41fdb4dd8d1e1f36e451c84638ac/app-ui/src/assets/.gitkeep
--------------------------------------------------------------------------------
/app-ui/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/app-ui/src/environments/environment.ts:
--------------------------------------------------------------------------------
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 | * For easier debugging in development mode, you can import the following file
11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
12 | *
13 | * This import should be commented out in production mode because it will have a negative impact
14 | * on performance if an error is thrown.
15 | */
16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
17 |
--------------------------------------------------------------------------------
/app-ui/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bbachi/angular-nodejs-docker-compose/bc6dafa1810c41fdb4dd8d1e1f36e451c84638ac/app-ui/src/favicon.ico
--------------------------------------------------------------------------------
/app-ui/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AngularNodejsExample
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app-ui/src/main.ts:
--------------------------------------------------------------------------------
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.error(err));
13 |
--------------------------------------------------------------------------------
/app-ui/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/guide/browser-support
15 | */
16 |
17 | /***************************************************************************************************
18 | * BROWSER POLYFILLS
19 | */
20 |
21 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */
22 | // import 'classlist.js'; // Run `npm install --save classlist.js`.
23 |
24 | /**
25 | * Web Animations `@angular/platform-browser/animations`
26 | * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
27 | * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
28 | */
29 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
30 |
31 | /**
32 | * By default, zone.js will patch all possible macroTask and DomEvents
33 | * user can disable parts of macroTask/DomEvents patch by setting following flags
34 | * because those flags need to be set before `zone.js` being loaded, and webpack
35 | * will put import in the top of bundle, so user need to create a separate file
36 | * in this directory (for example: zone-flags.ts), and put the following flags
37 | * into that file, and then add the following code before importing zone.js.
38 | * import './zone-flags';
39 | *
40 | * The flags allowed in zone-flags.ts are listed here.
41 | *
42 | * The following flags will work for all browsers.
43 | *
44 | * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
45 | * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
46 | * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
47 | *
48 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
49 | * with the following flag, it will bypass `zone.js` patch for IE/Edge
50 | *
51 | * (window as any).__Zone_enable_cross_context_check = true;
52 | *
53 | */
54 |
55 | /***************************************************************************************************
56 | * Zone JS is required by default for Angular itself.
57 | */
58 | import 'zone.js/dist/zone'; // Included with Angular CLI.
59 |
60 |
61 | /***************************************************************************************************
62 | * APPLICATION IMPORTS
63 | */
64 |
--------------------------------------------------------------------------------
/app-ui/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/app-ui/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/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: {
11 | context(path: string, deep?: boolean, filter?: RegExp): {
12 | keys(): string[];
13 | (id: string): T;
14 | };
15 | };
16 |
17 | // First, initialize the Angular testing environment.
18 | getTestBed().initTestEnvironment(
19 | BrowserDynamicTestingModule,
20 | platformBrowserDynamicTesting()
21 | );
22 | // Then we find all the tests.
23 | const context = require.context('./', true, /\.spec\.ts$/);
24 | // And load the modules.
25 | context.keys().map(context);
26 |
--------------------------------------------------------------------------------
/app-ui/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "./out-tsc/app",
5 | "types": []
6 | },
7 | "files": [
8 | "src/main.ts",
9 | "src/polyfills.ts"
10 | ],
11 | "include": [
12 | "src/**/*.d.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/app-ui/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "downlevelIteration": true,
9 | "experimentalDecorators": true,
10 | "module": "esnext",
11 | "moduleResolution": "node",
12 | "importHelpers": true,
13 | "target": "es2015",
14 | "typeRoots": [
15 | "node_modules/@types"
16 | ],
17 | "lib": [
18 | "es2018",
19 | "dom"
20 | ]
21 | },
22 | "angularCompilerOptions": {
23 | "fullTemplateTypeCheck": true,
24 | "strictInjectionParameters": true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app-ui/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "./out-tsc/spec",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "src/test.ts",
12 | "src/polyfills.ts"
13 | ],
14 | "include": [
15 | "src/**/*.spec.ts",
16 | "src/**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/app-ui/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "tslint:recommended",
3 | "rules": {
4 | "array-type": false,
5 | "arrow-parens": false,
6 | "deprecation": {
7 | "severity": "warning"
8 | },
9 | "component-class-suffix": true,
10 | "contextual-lifecycle": true,
11 | "directive-class-suffix": true,
12 | "directive-selector": [
13 | true,
14 | "attribute",
15 | "app",
16 | "camelCase"
17 | ],
18 | "component-selector": [
19 | true,
20 | "element",
21 | "app",
22 | "kebab-case"
23 | ],
24 | "import-blacklist": [
25 | true,
26 | "rxjs/Rx"
27 | ],
28 | "interface-name": false,
29 | "max-classes-per-file": false,
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-consecutive-blank-lines": false,
47 | "no-console": [
48 | true,
49 | "debug",
50 | "info",
51 | "time",
52 | "timeEnd",
53 | "trace"
54 | ],
55 | "no-empty": false,
56 | "no-inferrable-types": [
57 | true,
58 | "ignore-params"
59 | ],
60 | "no-non-null-assertion": true,
61 | "no-redundant-jsdoc": true,
62 | "no-switch-case-fall-through": true,
63 | "no-var-requires": false,
64 | "object-literal-key-quotes": [
65 | true,
66 | "as-needed"
67 | ],
68 | "object-literal-sort-keys": false,
69 | "ordered-imports": false,
70 | "quotemark": [
71 | true,
72 | "single"
73 | ],
74 | "trailing-comma": false,
75 | "no-conflicting-lifecycle": true,
76 | "no-host-metadata-property": true,
77 | "no-input-rename": true,
78 | "no-inputs-metadata-property": true,
79 | "no-output-native": true,
80 | "no-output-on-prefix": true,
81 | "no-output-rename": true,
82 | "no-outputs-metadata-property": true,
83 | "template-banana-in-box": true,
84 | "template-no-negated-async": true,
85 | "use-lifecycle-interface": true,
86 | "use-pipe-transform-interface": true
87 | },
88 | "rulesDirectory": [
89 | "codelyzer"
90 | ]
91 | }
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | nodejs-server:
4 | build:
5 | context: ./api
6 | dockerfile: Dockerfile-dev
7 | ports:
8 | - "3080:3080"
9 | container_name: node-api
10 | volumes:
11 | - ./api:/usr/src/app/api
12 | - /usr/src/app/api/node_modules
13 | angular-ui:
14 | build:
15 | context: ./app-ui
16 | dockerfile: Dockerfile-dev
17 | ports:
18 | - "4201:4201"
19 | container_name: angular-ui
20 | volumes:
21 | - ./app-ui:/usr/src/app/app-ui
22 | - /usr/src/app/app-ui/node_modules
--------------------------------------------------------------------------------