├── Chapter01
├── network-errors
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── operators
│ │ │ │ └── tapError.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── network-polling
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── operators
│ │ │ │ └── tapError.ts
│ │ │ ├── services
│ │ │ │ ├── http-polling.service.spec.ts
│ │ │ │ ├── http-polling.service.ts
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_fajitas.png
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ ├── mushroom_risotto.png
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── network-requests
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-details
│ │ │ │ │ ├── recipe-details.component.html
│ │ │ │ │ ├── recipe-details.component.scss
│ │ │ │ │ ├── recipe-details.component.spec.ts
│ │ │ │ │ └── recipe-details.component.ts
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── operators
│ │ │ │ └── tapError.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ ├── image-placeholder.png
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-dom-updates
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── eslint.config.js
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-network-log
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── interceptors
│ │ │ │ ├── network-logger.interceptor.spec.ts
│ │ │ │ └── network-logger.interceptor.ts
│ │ │ ├── operators
│ │ │ │ └── tapError.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
└── rxjs-websockets
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ ├── extensions.json
│ ├── launch.json
│ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ ├── app
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.config.ts
│ │ ├── app.routes.ts
│ │ ├── components
│ │ │ ├── recipe-item
│ │ │ │ ├── recipe-item.component.html
│ │ │ │ ├── recipe-item.component.scss
│ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ └── recipe-item.component.ts
│ │ │ └── recipes-list
│ │ │ │ ├── recipes-list.component.html
│ │ │ │ ├── recipes-list.component.scss
│ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ └── recipes-list.component.ts
│ │ ├── services
│ │ │ ├── recipes.service.spec.ts
│ │ │ └── recipes.service.ts
│ │ └── types
│ │ │ └── recipes.type.ts
│ ├── assets
│ │ ├── .gitkeep
│ │ └── images
│ │ │ ├── beef_stir_fry.jpg
│ │ │ ├── caprese_salad.jpg
│ │ │ ├── chicken_fajitas.png
│ │ │ ├── chicken_tikka_masala.jpg
│ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ ├── mushroom_risotto.png
│ │ │ └── spaghetti.jpg
│ ├── environments
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── mockServiceWorker.js
│ ├── mocks
│ │ ├── browser.ts
│ │ ├── handlers.ts
│ │ └── mock.json
│ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── Chapter02
├── rxjs-audio
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── audio-player
│ │ │ │ ├── audio-player.component.html
│ │ │ │ ├── audio-player.component.scss
│ │ │ │ ├── audio-player.component.spec.ts
│ │ │ │ └── audio-player.component.ts
│ │ │ ├── audio-service
│ │ │ │ ├── audio-service.service.spec.ts
│ │ │ │ └── audio-service.service.ts
│ │ │ └── pipes
│ │ │ │ ├── time.pipe.spec.ts
│ │ │ │ └── time.pipe.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ ├── background.jpg
│ │ │ ├── track-cover.jpg
│ │ │ └── track.jpg
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-drag-n-drop
│ ├── client
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── angular.json
│ │ ├── package.json
│ │ ├── pnpm-lock.yaml
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.scss
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ ├── app.routes.ts
│ │ │ │ ├── components
│ │ │ │ │ └── dnd-file-upload
│ │ │ │ │ │ ├── dnd-file-upload.component.html
│ │ │ │ │ │ ├── dnd-file-upload.component.scss
│ │ │ │ │ │ ├── dnd-file-upload.component.spec.ts
│ │ │ │ │ │ └── dnd-file-upload.component.ts
│ │ │ │ ├── services
│ │ │ │ │ ├── file-upload.service.spec.ts
│ │ │ │ │ └── file-upload.service.ts
│ │ │ │ └── types
│ │ │ │ │ └── file-upload.type.ts
│ │ │ ├── assets
│ │ │ │ └── .gitkeep
│ │ │ ├── environments
│ │ │ │ └── environment.ts
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── mocks
│ │ │ │ ├── browser.ts
│ │ │ │ ├── handlers.ts
│ │ │ │ └── mock.json
│ │ │ └── styles.scss
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── tsconfig.spec.json
│ └── server
│ │ ├── .gitignore
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ └── package.json
├── rxjs-infinite-scroll
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── new-recipes
│ │ │ │ │ ├── new-recipes.component.html
│ │ │ │ │ ├── new-recipes.component.scss
│ │ │ │ │ ├── new-recipes.component.spec.ts
│ │ │ │ │ └── new-recipes.component.ts
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── cacio_e_pepe.png
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_fajitas.png
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ ├── greek_salad.png
│ │ │ │ ├── mushroom_risotto.png
│ │ │ │ ├── spaghetti.jpg
│ │ │ │ └── tuna_salad_sandwich.png
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-loading-tabs
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ └── components
│ │ │ │ ├── tab-content
│ │ │ │ ├── tab-content.component.html
│ │ │ │ ├── tab-content.component.scss
│ │ │ │ ├── tab-content.component.spec.ts
│ │ │ │ └── tab-content.component.ts
│ │ │ │ ├── tab-content2
│ │ │ │ ├── tab-content2.component.html
│ │ │ │ ├── tab-content2.component.scss
│ │ │ │ ├── tab-content2.component.spec.ts
│ │ │ │ └── tab-content2.component.ts
│ │ │ │ └── tabs
│ │ │ │ ├── tabs.component.html
│ │ │ │ ├── tabs.component.scss
│ │ │ │ ├── tabs.component.spec.ts
│ │ │ │ └── tabs.component.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-network-status
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ └── network-status-indicator
│ │ │ │ │ ├── network-status-indicator.component.html
│ │ │ │ │ ├── network-status-indicator.component.scss
│ │ │ │ │ ├── network-status-indicator.component.spec.ts
│ │ │ │ │ └── network-status-indicator.component.ts
│ │ │ └── services
│ │ │ │ ├── network-status.service.spec.ts
│ │ │ │ └── network-status.service.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-notification
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ └── notification
│ │ │ │ │ ├── notification.component.html
│ │ │ │ │ ├── notification.component.scss
│ │ │ │ │ ├── notification.component.spec.ts
│ │ │ │ │ └── notification.component.ts
│ │ │ ├── services
│ │ │ │ ├── notification.service.spec.ts
│ │ │ │ ├── notification.service.ts
│ │ │ │ ├── recipe.service.spec.ts
│ │ │ │ └── recipe.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-pro-img
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ └── components
│ │ │ │ └── pro-img
│ │ │ │ ├── pro-img.component.html
│ │ │ │ ├── pro-img.component.scss
│ │ │ │ ├── pro-img.component.spec.ts
│ │ │ │ └── pro-img.component.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── blurry-image.jpeg
│ │ │ │ └── image.jpg
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-progress-bar
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── server
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ └── package.json
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ └── progress-bar
│ │ │ │ │ ├── progress-bar.component.html
│ │ │ │ │ ├── progress-bar.component.scss
│ │ │ │ │ ├── progress-bar.component.spec.ts
│ │ │ │ │ └── progress-bar.component.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
└── rxjs-swipe
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ ├── extensions.json
│ ├── launch.json
│ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ ├── app
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.config.ts
│ │ ├── app.routes.ts
│ │ ├── components
│ │ │ └── swipe-unlock
│ │ │ │ ├── swipe-unlock.component.html
│ │ │ │ ├── swipe-unlock.component.scss
│ │ │ │ ├── swipe-unlock.component.spec.ts
│ │ │ │ └── swipe-unlock.component.ts
│ │ ├── types
│ │ │ └── pixel-coordinates.type.ts
│ │ └── utils
│ │ │ └── array.util.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── Chapter03
├── bouncing-ball
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ └── components
│ │ │ │ └── bouncing-ball
│ │ │ │ ├── bouncing-ball.component.html
│ │ │ │ ├── bouncing-ball.component.scss
│ │ │ │ ├── bouncing-ball.component.spec.ts
│ │ │ │ └── bouncing-ball.component.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-animated-upload-progress-btn
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ └── progress-btn
│ │ │ │ └── progress-btn
│ │ │ │ ├── progress-btn.component.html
│ │ │ │ ├── progress-btn.component.scss
│ │ │ │ ├── progress-btn.component.spec.ts
│ │ │ │ └── progress-btn.component.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
└── rxjs-particles
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ ├── extensions.json
│ ├── launch.json
│ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ ├── app
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.config.ts
│ │ ├── app.routes.ts
│ │ └── particles
│ │ │ ├── particles.component.html
│ │ │ ├── particles.component.scss
│ │ │ ├── particles.component.spec.ts
│ │ │ └── particles.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── Chapter04
├── http-testing-msw
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── jest.config.js
│ ├── jest.setup.js
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── public
│ │ └── favicon.ico
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-details
│ │ │ │ │ ├── recipe-details.component.html
│ │ │ │ │ ├── recipe-details.component.scss
│ │ │ │ │ └── recipe-details.component.ts
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── operators
│ │ │ │ └── tapError.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ ├── image-placeholder.png
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ ├── mock.json
│ │ │ └── node.ts
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── http-testing
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-details
│ │ │ │ │ ├── recipe-details.component.html
│ │ │ │ │ ├── recipe-details.component.scss
│ │ │ │ │ └── recipe-details.component.ts
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── operators
│ │ │ │ └── tapError.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ ├── image-placeholder.png
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ ├── mock.json
│ │ │ └── server.ts
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── marble-testing
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ └── notification
│ │ │ │ │ ├── notification.component.html
│ │ │ │ │ ├── notification.component.scss
│ │ │ │ │ ├── notification.component.spec.ts
│ │ │ │ │ └── notification.component.ts
│ │ │ ├── services
│ │ │ │ ├── notification.service.spec.ts
│ │ │ │ ├── notification.service.ts
│ │ │ │ ├── recipe.service.spec.ts
│ │ │ │ └── recipe.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
└── ngrx-testing
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ ├── extensions.json
│ ├── launch.json
│ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ ├── app
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.ts
│ │ ├── app.config.ts
│ │ ├── app.routes.ts
│ │ ├── components
│ │ │ ├── recipe-item
│ │ │ │ ├── recipe-item.component.html
│ │ │ │ ├── recipe-item.component.scss
│ │ │ │ └── recipe-item.component.ts
│ │ │ └── recipes-list
│ │ │ │ ├── recipes-list.component.html
│ │ │ │ ├── recipes-list.component.scss
│ │ │ │ └── recipes-list.component.ts
│ │ ├── reducers
│ │ │ ├── index.ts
│ │ │ ├── recipes.actions.ts
│ │ │ ├── recipes.effects.spec.ts
│ │ │ ├── recipes.effects.ts
│ │ │ ├── recipes.meta-reducer.ts
│ │ │ ├── recipes.reducer.ts
│ │ │ ├── recipes.selector.spec.ts
│ │ │ ├── recipes.selector.ts
│ │ │ └── recipes.types.ts
│ │ ├── services
│ │ │ ├── recipes.service.spec.ts
│ │ │ └── recipes.service.ts
│ │ └── shared
│ │ │ └── components
│ │ │ └── sidebar
│ │ │ ├── sidebar.component.html
│ │ │ ├── sidebar.component.scss
│ │ │ ├── sidebar.component.spec.ts
│ │ │ └── sidebar.component.ts
│ ├── assets
│ │ ├── .gitkeep
│ │ └── images
│ │ │ ├── beef_stir_fry.jpg
│ │ │ ├── caprese_salad.jpg
│ │ │ ├── chicken_tikka_masala.jpg
│ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ └── spaghetti.jpg
│ ├── environments
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── mockServiceWorker.js
│ ├── mocks
│ │ ├── browser.ts
│ │ ├── handlers.ts
│ │ └── mock.json
│ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── Chapter05
├── rxjs-performance-optimizations
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── operators
│ │ │ │ └── perf-measure.ts
│ │ │ └── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-web-vitals
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ └── services
│ │ │ │ └── web-vitals-observer
│ │ │ │ ├── web-vitals-observer.service.spec.ts
│ │ │ │ └── web-vitals-observer.service.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
└── rxjs-web-workers
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ ├── extensions.json
│ ├── launch.json
│ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ ├── app
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.config.ts
│ │ ├── app.routes.ts
│ │ └── app.worker.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ ├── tsconfig.spec.json
│ └── tsconfig.worker.json
├── Chapter06
├── custom-state-management
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ ├── shared
│ │ │ │ └── components
│ │ │ │ │ └── sidebar
│ │ │ │ │ ├── sidebar.component.html
│ │ │ │ │ ├── sidebar.component.scss
│ │ │ │ │ ├── sidebar.component.spec.ts
│ │ │ │ │ └── sidebar.component.ts
│ │ │ └── store
│ │ │ │ ├── recipes.actions.ts
│ │ │ │ ├── recipes.reducer.ts
│ │ │ │ ├── recipes.types.ts
│ │ │ │ ├── recipes.utils.ts
│ │ │ │ └── state
│ │ │ │ ├── recipes-state.service.spec.ts
│ │ │ │ └── recipes-store.service.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── ngrx-state-management
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── reducers
│ │ │ │ ├── index.ts
│ │ │ │ ├── recipes.actions.ts
│ │ │ │ ├── recipes.effects.ts
│ │ │ │ ├── recipes.meta-reducer.ts
│ │ │ │ ├── recipes.reducer.ts
│ │ │ │ ├── recipes.selector.ts
│ │ │ │ └── recipes.types.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── shared
│ │ │ │ └── components
│ │ │ │ └── sidebar
│ │ │ │ ├── sidebar.component.html
│ │ │ │ ├── sidebar.component.scss
│ │ │ │ ├── sidebar.component.spec.ts
│ │ │ │ └── sidebar.component.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
└── rxjs-query
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── environments
│ └── environment.ts
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ ├── app
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.config.ts
│ │ ├── app.routes.ts
│ │ ├── components
│ │ │ ├── recipe-item
│ │ │ │ ├── recipe-item.component.html
│ │ │ │ ├── recipe-item.component.scss
│ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ └── recipe-item.component.ts
│ │ │ └── recipes-list
│ │ │ │ ├── recipes-list.component.html
│ │ │ │ ├── recipes-list.component.scss
│ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ └── recipes-list.component.ts
│ │ ├── operators
│ │ │ └── tapError.ts
│ │ ├── rxjs-query
│ │ │ ├── query-client.service.spec.ts
│ │ │ └── query-client.service.ts
│ │ ├── services
│ │ │ ├── recipes.service.spec.ts
│ │ │ └── recipes.service.ts
│ │ └── types
│ │ │ └── recipes.types.ts
│ ├── assets
│ │ ├── .gitkeep
│ │ └── images
│ │ │ ├── beef_stir_fry.jpg
│ │ │ ├── caprese_salad.jpg
│ │ │ ├── chicken_tikka_masala.jpg
│ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ └── spaghetti.jpg
│ ├── environments
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── mockServiceWorker.js
│ ├── mocks
│ │ ├── browser.ts
│ │ ├── handlers.ts
│ │ └── mock.json
│ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── Chapter07
├── rxdb-recipes
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── ngsw-config.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── schemas
│ │ │ │ └── recipes.schema.ts
│ │ │ └── services
│ │ │ │ ├── rxdb.service.spec.ts
│ │ │ │ └── rxdb.service.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── icons
│ │ │ │ ├── icon-128x128.png
│ │ │ │ ├── icon-144x144.png
│ │ │ │ ├── icon-152x152.png
│ │ │ │ ├── icon-192x192.png
│ │ │ │ ├── icon-384x384.png
│ │ │ │ ├── icon-512x512.png
│ │ │ │ ├── icon-72x72.png
│ │ │ │ └── icon-96x96.png
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── manifest.webmanifest
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-notifications
│ ├── client
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── angular.json
│ │ ├── ngsw-config.json
│ │ ├── package.json
│ │ ├── pnpm-lock.yaml
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.scss
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ ├── app.routes.ts
│ │ │ │ ├── components
│ │ │ │ │ ├── feedback
│ │ │ │ │ │ ├── feedback.component.html
│ │ │ │ │ │ ├── feedback.component.scss
│ │ │ │ │ │ ├── feedback.component.spec.ts
│ │ │ │ │ │ └── feedback.component.ts
│ │ │ │ │ ├── food-order
│ │ │ │ │ │ ├── food-order.component.html
│ │ │ │ │ │ ├── food-order.component.scss
│ │ │ │ │ │ ├── food-order.component.spec.ts
│ │ │ │ │ │ └── food-order.component.ts
│ │ │ │ │ └── geolocation
│ │ │ │ │ │ ├── geolocation.component.html
│ │ │ │ │ │ ├── geolocation.component.scss
│ │ │ │ │ │ ├── geolocation.component.spec.ts
│ │ │ │ │ │ └── geolocation.component.ts
│ │ │ │ └── services
│ │ │ │ │ ├── push-notification.service.spec.ts
│ │ │ │ │ └── push-notification.service.ts
│ │ │ ├── assets
│ │ │ │ ├── .gitkeep
│ │ │ │ └── icons
│ │ │ │ │ ├── icon-128x128.png
│ │ │ │ │ ├── icon-144x144.png
│ │ │ │ │ ├── icon-152x152.png
│ │ │ │ │ ├── icon-192x192.png
│ │ │ │ │ ├── icon-384x384.png
│ │ │ │ │ ├── icon-512x512.png
│ │ │ │ │ ├── icon-72x72.png
│ │ │ │ │ └── icon-96x96.png
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── manifest.webmanifest
│ │ │ └── styles.scss
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── tsconfig.spec.json
│ └── server
│ │ └── push-notifications-api
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .prettierrc
│ │ ├── README.md
│ │ ├── nest-cli.json
│ │ ├── package.json
│ │ ├── pnpm-lock.yaml
│ │ ├── public
│ │ └── assets
│ │ │ └── burger.jpg
│ │ ├── src
│ │ ├── app.controller.spec.ts
│ │ ├── app.controller.ts
│ │ ├── app.module.ts
│ │ ├── app.service.ts
│ │ ├── food-order
│ │ │ ├── food-order.service.spec.ts
│ │ │ └── food-order.service.ts
│ │ ├── main.ts
│ │ └── notification.ts
│ │ ├── test
│ │ ├── app.e2e-spec.ts
│ │ └── jest-e2e.json
│ │ ├── tsconfig.build.json
│ │ └── tsconfig.json
└── rxjs-pwa-background-sync
│ ├── client
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── ngsw-config.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── db
│ │ │ │ └── dexie.db.ts
│ │ │ ├── interceptors
│ │ │ │ ├── background-sync.interceptor.spec.ts
│ │ │ │ └── background-sync.interceptor.ts
│ │ │ └── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── icons
│ │ │ │ ├── icon-128x128.png
│ │ │ │ ├── icon-144x144.png
│ │ │ │ ├── icon-152x152.png
│ │ │ │ ├── icon-192x192.png
│ │ │ │ ├── icon-384x384.png
│ │ │ │ ├── icon-512x512.png
│ │ │ │ ├── icon-72x72.png
│ │ │ │ └── icon-96x96.png
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── manifest.webmanifest
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
│ └── server
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .prettierrc
│ ├── README.md
│ ├── nest-cli.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── main.ts
│ ├── test
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
│ ├── tsconfig.build.json
│ └── tsconfig.json
├── Chapter08
├── rxjs-offline-cache-first
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── ngsw-config.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── interceptors
│ │ │ │ ├── offline.interceptor.spec.ts
│ │ │ │ └── offline.interceptor.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ ├── icons
│ │ │ │ ├── icon-128x128.png
│ │ │ │ ├── icon-144x144.png
│ │ │ │ ├── icon-152x152.png
│ │ │ │ ├── icon-192x192.png
│ │ │ │ ├── icon-384x384.png
│ │ │ │ ├── icon-512x512.png
│ │ │ │ ├── icon-72x72.png
│ │ │ │ └── icon-96x96.png
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── manifest.webmanifest
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-offline-network-first
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── ngsw-config.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── interceptors
│ │ │ │ ├── offline.interceptor.spec.ts
│ │ │ │ └── offline.interceptor.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ ├── icons
│ │ │ │ ├── icon-128x128.png
│ │ │ │ ├── icon-144x144.png
│ │ │ │ ├── icon-152x152.png
│ │ │ │ ├── icon-192x192.png
│ │ │ │ ├── icon-384x384.png
│ │ │ │ ├── icon-512x512.png
│ │ │ │ ├── icon-72x72.png
│ │ │ │ └── icon-96x96.png
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── manifest.webmanifest
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-offline-race-network-cache
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── ngsw-config.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── interceptors
│ │ │ │ ├── offline.interceptor.spec.ts
│ │ │ │ └── offline.interceptor.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ ├── icons
│ │ │ │ ├── icon-128x128.png
│ │ │ │ ├── icon-144x144.png
│ │ │ │ ├── icon-152x152.png
│ │ │ │ ├── icon-192x192.png
│ │ │ │ ├── icon-384x384.png
│ │ │ │ ├── icon-512x512.png
│ │ │ │ ├── icon-72x72.png
│ │ │ │ └── icon-96x96.png
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── manifest.webmanifest
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-offline-stale-while-revalidate
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── ngsw-config.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── interceptors
│ │ │ │ ├── offline.interceptor.spec.ts
│ │ │ │ └── offline.interceptor.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ ├── icons
│ │ │ │ ├── icon-128x128.png
│ │ │ │ ├── icon-144x144.png
│ │ │ │ ├── icon-152x152.png
│ │ │ │ ├── icon-192x192.png
│ │ │ │ ├── icon-384x384.png
│ │ │ │ ├── icon-512x512.png
│ │ │ │ ├── icon-72x72.png
│ │ │ │ └── icon-96x96.png
│ │ │ └── images
│ │ │ │ ├── beef_stir_fry.jpg
│ │ │ │ ├── caprese_salad.jpg
│ │ │ │ ├── chicken-alfredo.png
│ │ │ │ ├── chicken_tikka_masala.jpg
│ │ │ │ ├── chocolate_chip_cookies.jpg
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── manifest.webmanifest
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
└── rxjs-optimistic-update
│ ├── .gitignore
│ ├── client
│ ├── .editorconfig
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── dist
│ │ └── rxjs-optimistic-update
│ │ │ ├── 3rdpartylicenses.txt
│ │ │ └── browser
│ │ │ ├── assets
│ │ │ ├── icons
│ │ │ │ ├── icon-128x128.png
│ │ │ │ ├── icon-144x144.png
│ │ │ │ ├── icon-152x152.png
│ │ │ │ ├── icon-192x192.png
│ │ │ │ ├── icon-384x384.png
│ │ │ │ ├── icon-512x512.png
│ │ │ │ ├── icon-72x72.png
│ │ │ │ └── icon-96x96.png
│ │ │ └── images
│ │ │ │ └── spaghetti.jpg
│ │ │ ├── chunk-DMQWRXPI.js
│ │ │ ├── chunk-OZCBKCNX.js
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── main-ZREYZPHV.js
│ │ │ ├── manifest.webmanifest
│ │ │ ├── ngsw-worker.js
│ │ │ ├── ngsw.json
│ │ │ ├── polyfills-SCHOHYNV.js
│ │ │ ├── safety-worker.js
│ │ │ ├── styles-Y6IBCAZU.css
│ │ │ └── worker-basic.min.js
│ ├── ngsw-config.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ ├── recipe-item
│ │ │ │ │ ├── recipe-item.component.html
│ │ │ │ │ ├── recipe-item.component.scss
│ │ │ │ │ ├── recipe-item.component.spec.ts
│ │ │ │ │ └── recipe-item.component.ts
│ │ │ │ └── recipes-list
│ │ │ │ │ ├── recipes-list.component.html
│ │ │ │ │ ├── recipes-list.component.scss
│ │ │ │ │ ├── recipes-list.component.spec.ts
│ │ │ │ │ └── recipes-list.component.ts
│ │ │ ├── operators
│ │ │ │ └── optimistic-update.operator.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ ├── icons
│ │ │ │ ├── icon-128x128.png
│ │ │ │ ├── icon-144x144.png
│ │ │ │ ├── icon-152x152.png
│ │ │ │ ├── icon-192x192.png
│ │ │ │ ├── icon-384x384.png
│ │ │ │ ├── icon-512x512.png
│ │ │ │ ├── icon-72x72.png
│ │ │ │ └── icon-96x96.png
│ │ │ └── images
│ │ │ │ └── spaghetti.jpg
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── manifest.webmanifest
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
│ └── server
│ ├── index.js
│ ├── package-lock.json
│ └── package.json
├── Chapter09
├── rxjs-charts
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ └── recipes-chart
│ │ │ │ │ ├── recipes-chart.component.html
│ │ │ │ │ ├── recipes-chart.component.scss
│ │ │ │ │ ├── recipes-chart.component.spec.ts
│ │ │ │ │ └── recipes-chart.component.ts
│ │ │ ├── operators
│ │ │ │ └── retry-connection.operator.ts
│ │ │ ├── services
│ │ │ │ ├── recipes.service.spec.ts
│ │ │ │ └── recipes.service.ts
│ │ │ └── types
│ │ │ │ ├── chart.type.ts
│ │ │ │ └── recipes.type.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── rxjs-recipes-chat
│ ├── client
│ │ ├── .editorconfig
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── tasks.json
│ │ ├── README.md
│ │ ├── angular.json
│ │ ├── package.json
│ │ ├── pnpm-lock.yaml
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.scss
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.config.ts
│ │ │ │ ├── app.routes.ts
│ │ │ │ ├── components
│ │ │ │ │ └── chat
│ │ │ │ │ │ ├── chat.component.html
│ │ │ │ │ │ ├── chat.component.scss
│ │ │ │ │ │ ├── chat.component.spec.ts
│ │ │ │ │ │ └── chat.component.ts
│ │ │ │ └── services
│ │ │ │ │ ├── chat.service.spec.ts
│ │ │ │ │ └── chat.service.ts
│ │ │ ├── assets
│ │ │ │ ├── .gitkeep
│ │ │ │ └── images
│ │ │ │ │ ├── racoon.png
│ │ │ │ │ └── red-panda.png
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ └── styles.scss
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── tsconfig.spec.json
│ └── server
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .prettierrc
│ │ ├── README.md
│ │ ├── nest-cli.json
│ │ ├── package.json
│ │ ├── pnpm-lock.yaml
│ │ ├── src
│ │ ├── app.controller.spec.ts
│ │ ├── app.controller.ts
│ │ ├── app.module.ts
│ │ ├── app.service.ts
│ │ ├── chat
│ │ │ ├── chat-connection
│ │ │ │ ├── chat-connection.service.spec.ts
│ │ │ │ └── chat-connection.service.ts
│ │ │ ├── chat.gateway.ts
│ │ │ ├── chat.module.ts
│ │ │ ├── chat.service.spec.ts
│ │ │ ├── chat.service.ts
│ │ │ └── chat.type.ts
│ │ └── main.ts
│ │ ├── test
│ │ ├── app.e2e-spec.ts
│ │ └── jest-e2e.json
│ │ ├── tsconfig.build.json
│ │ └── tsconfig.json
└── rxjs-tic-tac-toe
│ ├── .gitignore
│ ├── client
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── components
│ │ │ │ └── game-board
│ │ │ │ │ ├── game-board.component.html
│ │ │ │ │ ├── game-board.component.scss
│ │ │ │ │ ├── game-board.component.spec.ts
│ │ │ │ │ └── game-board.component.ts
│ │ │ ├── services
│ │ │ │ ├── game.service.spec.ts
│ │ │ │ └── game.service.ts
│ │ │ └── types
│ │ │ │ └── game.type.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── environments
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── mockServiceWorker.js
│ │ ├── mocks
│ │ │ ├── browser.ts
│ │ │ ├── handlers.ts
│ │ │ └── mock.json
│ │ └── styles.scss
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
│ └── server
│ ├── .eslintrc.js
│ ├── .prettierrc
│ ├── README.md
│ ├── nest-cli.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ ├── game
│ │ ├── game.gateway.spec.ts
│ │ ├── game.gateway.ts
│ │ ├── game.module.ts
│ │ ├── game.service.spec.ts
│ │ └── game.service.ts
│ └── main.ts
│ ├── test
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
│ ├── tsconfig.build.json
│ └── tsconfig.json
├── Chapter10
├── rxjs-grpc-food-order-tracking
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .prettierrc
│ ├── README.md
│ ├── nest-cli.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app.controller.spec.ts
│ │ ├── app.controller.ts
│ │ ├── app.module.ts
│ │ ├── app.service.ts
│ │ ├── controllers
│ │ │ └── order
│ │ │ │ ├── order.controller.spec.ts
│ │ │ │ └── order.controller.ts
│ │ ├── interfaces
│ │ │ └── order.interface.ts
│ │ ├── main.ts
│ │ ├── proto
│ │ │ └── order.proto
│ │ └── services
│ │ │ └── order
│ │ │ ├── order.service.spec.ts
│ │ │ └── order.service.ts
│ ├── test
│ │ ├── app.e2e-spec.ts
│ │ └── jest-e2e.json
│ ├── tsconfig.build.json
│ └── tsconfig.json
├── rxjs-kafka
│ ├── orders-api
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .prettierrc
│ │ ├── README.md
│ │ ├── nest-cli.json
│ │ ├── package.json
│ │ ├── pnpm-lock.yaml
│ │ ├── src
│ │ │ ├── app.controller.spec.ts
│ │ │ ├── app.controller.ts
│ │ │ ├── app.module.ts
│ │ │ ├── app.service.ts
│ │ │ └── main.ts
│ │ ├── test
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── jest-e2e.json
│ │ ├── tsconfig.build.json
│ │ └── tsconfig.json
│ ├── reactive-kafka-broker
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .prettierrc
│ │ ├── README.md
│ │ ├── nest-cli.json
│ │ ├── package.json
│ │ ├── pnpm-lock.yaml
│ │ ├── src
│ │ │ ├── app.controller.spec.ts
│ │ │ ├── app.controller.ts
│ │ │ ├── app.module.ts
│ │ │ ├── app.service.ts
│ │ │ ├── main.ts
│ │ │ ├── message-broker
│ │ │ │ ├── message-broker.module.ts
│ │ │ │ ├── message-broker.service.spec.ts
│ │ │ │ └── message-broker.service.ts
│ │ │ ├── orders
│ │ │ │ ├── orders.controller.spec.ts
│ │ │ │ ├── orders.controller.ts
│ │ │ │ ├── orders.module.ts
│ │ │ │ ├── orders.service.spec.ts
│ │ │ │ └── orders.service.ts
│ │ │ ├── recipes
│ │ │ │ └── recipes.module.ts
│ │ │ └── rxjs-kafka-consumer
│ │ │ │ ├── rxjs-kafka-consumer.service.spec.ts
│ │ │ │ └── rxjs-kafka-consumer.service.ts
│ │ ├── test
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── jest-e2e.json
│ │ ├── tsconfig.build.json
│ │ └── tsconfig.json
│ └── recipes-api
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .prettierrc
│ │ ├── README.md
│ │ ├── nest-cli.json
│ │ ├── package.json
│ │ ├── pnpm-lock.yaml
│ │ ├── src
│ │ ├── app.controller.spec.ts
│ │ ├── app.controller.ts
│ │ ├── app.module.ts
│ │ ├── app.service.ts
│ │ └── main.ts
│ │ ├── test
│ │ ├── app.e2e-spec.ts
│ │ └── jest-e2e.json
│ │ ├── tsconfig.build.json
│ │ └── tsconfig.json
└── rxjs-microservices
│ ├── orders-api
│ ├── .eslintrc.js
│ ├── .prettierrc
│ ├── README.md
│ ├── nest-cli.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ ├── app.controller.spec.ts
│ │ ├── app.controller.ts
│ │ ├── app.module.ts
│ │ ├── app.service.ts
│ │ └── main.ts
│ ├── test
│ │ ├── app.e2e-spec.ts
│ │ └── jest-e2e.json
│ ├── tsconfig.build.json
│ └── tsconfig.json
│ └── recipes-api
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .prettierrc
│ ├── README.md
│ ├── nest-cli.json
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ ├── interceptors
│ │ └── bulkhead
│ │ │ ├── bulkhead.interceptor.spec.ts
│ │ │ └── bulkhead.interceptor.ts
│ ├── main.ts
│ └── services
│ │ └── order
│ │ └── order.service.spec.ts
│ ├── test
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
│ ├── tsconfig.build.json
│ └── tsconfig.json
├── LICENSE
└── README.md
/Chapter01/network-errors/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter01/network-errors/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-errors/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-errors/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-errors/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-errors/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-errors/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-errors/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-errors/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | wsEndpoint: 'wss://recipes.example.com'
6 | };
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-errors/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter01/network-errors/src/mocks/handlers.ts:
--------------------------------------------------------------------------------
1 | import { http, HttpResponse } from 'msw'
2 | import { recipes } from './mock.json'
3 |
4 | export const handlers = [
5 | http.get('https://super-recipes.com/api/recipes', async () => {
6 | return HttpResponse.json(recipes);
7 | }),
8 | ]
9 |
--------------------------------------------------------------------------------
/Chapter01/network-polling/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter01/network-polling/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/assets/images/chicken_fajitas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/assets/images/chicken_fajitas.png
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/assets/images/mushroom_risotto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/assets/images/mushroom_risotto.png
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-polling/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter01/network-polling/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter01/network-requests/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter01/network-requests/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-requests/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-requests/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-requests/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-requests/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-requests/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-requests/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/assets/images/image-placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-requests/src/assets/images/image-placeholder.png
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-requests/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/network-requests/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter01/network-requests/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 | .example-form-field {
2 | margin: 0 30px;
3 | min-width: 300px;
4 | }
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-dom-updates/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-dom-updates/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-dom-updates/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-dom-updates/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-dom-updates/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-dom-updates/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | wsEndpoint: 'wss://recipes.example.com'
6 | };
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-dom-updates/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter01/rxjs-dom-updates/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-network-log/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 | @for (item of recipes; track item.id) {
3 |
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-network-log/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-network-log/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-network-log/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-network-log/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-network-log/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-network-log/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-network-log/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter01/rxjs-network-log/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 | @for (item of recipes; track item.id) {
3 |
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/assets/images/chicken_fajitas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/assets/images/chicken_fajitas.png
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/assets/images/mushroom_risotto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/assets/images/mushroom_risotto.png
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | wsEndpoint: 'wss://recipes.example.com'
6 | };
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter01/rxjs-websockets/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter01/rxjs-websockets/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-audio/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/app/pipes/time.pipe.spec.ts:
--------------------------------------------------------------------------------
1 | import { TimePipe } from './time.pipe';
2 |
3 | describe('TimePipe', () => {
4 | it('create an instance', () => {
5 | const pipe = new TimePipe();
6 | expect(pipe).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-audio/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/assets/background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-audio/src/assets/background.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/assets/track-cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-audio/src/assets/track-cover.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/assets/track.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-audio/src/assets/track.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-audio/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-audio/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-drag-n-drop/client/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/app/types/file-upload.type.ts:
--------------------------------------------------------------------------------
1 | export interface FileWithProgress extends File {
2 | progress?: number;
3 | error?: string;
4 | valid?: boolean;
5 | }
6 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-drag-n-drop/client/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | wsEndpoint: 'wss://recipes.example.com'
6 | };
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-drag-n-drop/client/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter02/rxjs-drag-n-drop/client/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | @if (loading$ | async) {
5 |
6 | }
7 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 | .app-container {
2 | display: flex;
3 | flex-direction: column;
4 | align-items: center;
5 | justify-content: center;
6 | min-height: 100vh;
7 | }
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/app/components/new-recipes/new-recipes.component.html:
--------------------------------------------------------------------------------
1 | @if (number > 0) {
2 |
3 | }
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/app/components/new-recipes/new-recipes.component.scss:
--------------------------------------------------------------------------------
1 | .new-recipes {
2 | position: fixed;
3 | z-index: 1;
4 | top: 80px;
5 | background-color: #667de7 !important;
6 | color: white !important;
7 | }
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/cacio_e_pepe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/cacio_e_pepe.png
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/chicken_fajitas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/chicken_fajitas.png
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/greek_salad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/greek_salad.png
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/mushroom_risotto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/mushroom_risotto.png
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/assets/images/tuna_salad_sandwich.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/assets/images/tuna_salad_sandwich.png
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-infinite-scroll/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter02/rxjs-infinite-scroll/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-loading-tabs/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/app/components/tab-content/tab-content.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/app/components/tab-content/tab-content.component.scss:
--------------------------------------------------------------------------------
1 | img {
2 | display: flex;
3 | margin: auto;
4 | width: 500px;
5 | }
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/app/components/tab-content2/tab-content2.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/app/components/tab-content2/tab-content2.component.scss:
--------------------------------------------------------------------------------
1 | img {
2 | display: flex;
3 | margin: auto;
4 | width: 500px;
5 | }
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/app/components/tabs/tabs.component.scss:
--------------------------------------------------------------------------------
1 | .tab-content {
2 | display: flex;
3 | justify-content: center;
4 | align-items: center;
5 | margin-top: 50px;
6 | }
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-loading-tabs/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-loading-tabs/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-loading-tabs/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-loading-tabs/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-loading-tabs/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-network-status/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-network-status/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-network-status/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-network-status/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter02/rxjs-network-status/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-network-status/src/app/components/network-status-indicator/network-status-indicator.component.html:
--------------------------------------------------------------------------------
1 |
2 |
{{ isOnline ? 'wifi' : 'wifi_off' }}
3 |
Network Status: {{ isOnline ? 'online' : 'offline' }}
4 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-network-status/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-network-status/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter02/rxjs-network-status/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-network-status/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter02/rxjs-network-status/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-network-status/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-notification/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-notification/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-notification/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 | button {
2 | margin: 10px;
3 | padding: 15px 20px;
4 | font-size: 20px;
5 | background-color: #667de7;
6 | border-radius: 10px;
7 | color: white;
8 | border: none;
9 | cursor: pointer;
10 | }
--------------------------------------------------------------------------------
/Chapter02/rxjs-notification/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-notification/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-notification/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter02/rxjs-notification/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | wsEndpoint: 'wss://recipes.example.com'
6 | };
--------------------------------------------------------------------------------
/Chapter02/rxjs-notification/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-notification/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter02/rxjs-notification/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter02/rxjs-notification/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-pro-img/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-pro-img/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/assets/images/blurry-image.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-pro-img/src/assets/images/blurry-image.jpeg
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/assets/images/image.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-pro-img/src/assets/images/image.jpg
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-pro-img/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-pro-img/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-progress-bar/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-progress-bar/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-progress-bar/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-progress-bar/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter02/rxjs-progress-bar/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-progress-bar/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-progress-bar/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter02/rxjs-progress-bar/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter02/rxjs-progress-bar/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-progress-bar/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter02/rxjs-progress-bar/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter02/rxjs-swipe/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-swipe/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-swipe/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-swipe/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter02/rxjs-swipe/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-swipe/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter02/rxjs-swipe/src/app/types/pixel-coordinates.type.ts:
--------------------------------------------------------------------------------
1 | export interface PixelCoordinates {
2 | x: number;
3 | y: number;
4 | }
--------------------------------------------------------------------------------
/Chapter02/rxjs-swipe/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-swipe/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter02/rxjs-swipe/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter02/rxjs-swipe/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter02/rxjs-swipe/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter03/bouncing-ball/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter03/bouncing-ball/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter03/bouncing-ball/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter03/bouncing-ball/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | body {
3 | margin: 20px 30px;
4 | }
--------------------------------------------------------------------------------
/Chapter03/rxjs-animated-upload-progress-btn/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-animated-upload-progress-btn/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-animated-upload-progress-btn/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-animated-upload-progress-btn/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-animated-upload-progress-btn/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter03/rxjs-animated-upload-progress-btn/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter03/rxjs-animated-upload-progress-btn/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter03/rxjs-animated-upload-progress-btn/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter03/rxjs-animated-upload-progress-btn/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-animated-upload-progress-btn/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter03/rxjs-particles/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/app/particles/particles.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/app/particles/particles.component.scss:
--------------------------------------------------------------------------------
1 | .canvas {
2 | background-color: #6f00ed;
3 | width: 100vw;
4 | height: 100vh;
5 | }
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter03/rxjs-particles/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter03/rxjs-particles/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter03/rxjs-particles/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | body {
3 | margin: 0;
4 | }
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing-msw/public/favicon.ico
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing-msw/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing-msw/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing-msw/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing-msw/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing-msw/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing-msw/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/assets/images/image-placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing-msw/src/assets/images/image-placeholder.png
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing-msw/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/mocks/node.ts:
--------------------------------------------------------------------------------
1 | import { setupServer } from 'msw/node'
2 | import { handlers } from './handlers'
3 |
4 | export const server = setupServer(...handlers)
--------------------------------------------------------------------------------
/Chapter04/http-testing-msw/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter04/http-testing/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/assets/images/image-placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing/src/assets/images/image-placeholder.png
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/http-testing/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter04/http-testing/src/mocks/server.ts:
--------------------------------------------------------------------------------
1 | import { setupServer } from 'msw/node'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupServer(...handlers)
--------------------------------------------------------------------------------
/Chapter04/marble-testing/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter04/marble-testing/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Chapter04/marble-testing/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 | button {
2 | margin: 10px;
3 | padding: 15px 20px;
4 | font-size: 20px;
5 | background-color: #667de7;
6 | border-radius: 10px;
7 | color: white;
8 | border: none;
9 | cursor: pointer;
10 | }
--------------------------------------------------------------------------------
/Chapter04/marble-testing/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter04/marble-testing/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/marble-testing/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter04/marble-testing/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | wsEndpoint: 'wss://recipes.example.com'
6 | };
--------------------------------------------------------------------------------
/Chapter04/marble-testing/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/marble-testing/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter04/marble-testing/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter04/marble-testing/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/ngrx-testing/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 | @for (item of recipes; track item.id) {
3 |
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/app/reducers/recipes.types.ts:
--------------------------------------------------------------------------------
1 | export interface Recipe {
2 | id: number;
3 | name: string;
4 | description: string;
5 | ingredients: string[];
6 | image: string;
7 | }
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/app/shared/components/sidebar/sidebar.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/ngrx-testing/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/ngrx-testing/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/ngrx-testing/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/ngrx-testing/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/ngrx-testing/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/ngrx-testing/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter04/ngrx-testing/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter04/ngrx-testing/src/mocks/handlers.ts:
--------------------------------------------------------------------------------
1 | import { http, HttpResponse } from 'msw'
2 | import { recipes } from './mock.json'
3 |
4 | export const handlers = [
5 | http.get('https://super-recipes.com/api/recipes', () => {
6 | return HttpResponse.json(recipes);
7 | }),
8 | ]
--------------------------------------------------------------------------------
/Chapter05/rxjs-performance-optimizations/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-performance-optimizations/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-performance-optimizations/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter05/rxjs-performance-optimizations/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter05/rxjs-performance-optimizations/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-performance-optimizations/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter05/rxjs-performance-optimizations/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter05/rxjs-performance-optimizations/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter05/rxjs-performance-optimizations/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter05/rxjs-performance-optimizations/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter05/rxjs-performance-optimizations/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter05/rxjs-performance-optimizations/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-vitals/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-vitals/src/app/app.component.html:
--------------------------------------------------------------------------------
1 | @if (loading) {
2 | Loading...
3 | }
4 | Web Performance
5 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-vitals/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter05/rxjs-web-vitals/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-vitals/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-vitals/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-vitals/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter05/rxjs-web-vitals/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-vitals/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter05/rxjs-web-vitals/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-vitals/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-vitals/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-workers/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-workers/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter05/rxjs-web-workers/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-workers/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-workers/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-workers/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter05/rxjs-web-workers/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-workers/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter05/rxjs-web-workers/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-workers/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter05/rxjs-web-workers/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 | .app-content {
2 | padding: 40px;
3 | }
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 | @for (item of recipes; track item.id) {
3 |
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/app/shared/components/sidebar/sidebar.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/custom-state-management/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/custom-state-management/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/custom-state-management/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/custom-state-management/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/custom-state-management/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/custom-state-management/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/custom-state-management/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter06/custom-state-management/src/mocks/handlers.ts:
--------------------------------------------------------------------------------
1 | import { http, HttpResponse } from 'msw'
2 | import { recipes } from './mock.json'
3 |
4 | export const handlers = [
5 | http.get('https://super-recipes.com/api/recipes', () => {
6 | return HttpResponse.json(recipes);
7 | }),
8 | ]
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/ngrx-state-management/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 | @for (item of recipes; track item.id) {
3 |
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/app/reducers/recipes.types.ts:
--------------------------------------------------------------------------------
1 | export interface Recipe {
2 | id: number;
3 | name: string;
4 | description: string;
5 | ingredients: string[];
6 | image: string;
7 | }
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/app/shared/components/sidebar/sidebar.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/ngrx-state-management/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/ngrx-state-management/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/ngrx-state-management/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/ngrx-state-management/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/ngrx-state-management/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/ngrx-state-management/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/ngrx-state-management/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter06/ngrx-state-management/src/mocks/handlers.ts:
--------------------------------------------------------------------------------
1 | import { http, HttpResponse } from 'msw'
2 | import { recipes } from './mock.json'
3 |
4 | export const handlers = [
5 | http.get('https://super-recipes.com/api/recipes', () => {
6 | return HttpResponse.json(recipes);
7 | }),
8 | ]
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/rxjs-query/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/app/types/recipes.types.ts:
--------------------------------------------------------------------------------
1 | export interface Recipe {
2 | id: number;
3 | name: string;
4 | description: string;
5 | ingredients: string[];
6 | image: string;
7 | }
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/rxjs-query/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/rxjs-query/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/rxjs-query/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/rxjs-query/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/rxjs-query/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/rxjs-query/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter06/rxjs-query/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/mocks/handlers.ts:
--------------------------------------------------------------------------------
1 | import { delay, http, HttpResponse } from 'msw'
2 | import { recipes } from './mock.json'
3 |
4 | export const handlers = [
5 | http.get('https://super-recipes.com/api/recipes', async () => {
6 | await delay(2000);
7 |
8 | return HttpResponse.json(recipes);
9 | }),
10 | ]
--------------------------------------------------------------------------------
/Chapter06/rxjs-query/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | @use '@angular/material' as mat;
4 |
5 | @include mat.elevation-classes();
6 | @include mat.app-background();
7 |
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/app/components/recipes-list/recipes-list.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/app/components/recipes-list/recipes-list.component.scss
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxdb-recipes/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter07/rxdb-recipes/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/app/components/feedback/feedback.component.html:
--------------------------------------------------------------------------------
1 | feedback works!
2 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/app/components/feedback/feedback.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/app/components/feedback/feedback.component.scss
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/app/components/food-order/food-order.component.html:
--------------------------------------------------------------------------------
1 | food-order works!
2 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/app/components/food-order/food-order.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/app/components/food-order/food-order.component.scss
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/app/components/geolocation/geolocation.component.html:
--------------------------------------------------------------------------------
1 | {{ geolocation | json }}
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/app/components/geolocation/geolocation.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/app/components/geolocation/geolocation.component.scss
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/client/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/client/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/server/push-notifications-api/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/server/push-notifications-api/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/server/push-notifications-api/public/assets/burger.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-notifications/server/push-notifications-api/public/assets/burger.jpg
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/server/push-notifications-api/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 |
3 | @Injectable()
4 | export class AppService {
5 | getHello(): string {
6 | return 'Hello World!';
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/server/push-notifications-api/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-notifications/server/push-notifications-api/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/app/app.component.html:
--------------------------------------------------------------------------------
1 | {{ recipes$ | async | json }}
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter07/rxjs-pwa-background-sync/client/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/client/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/server/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/server/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/server/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter07/rxjs-pwa-background-sync/server/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 | adsasd
3 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 | @for (item of recipes; track item.id) {
3 |
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/app/types/recipes.type.ts:
--------------------------------------------------------------------------------
1 | export interface Recipe {
2 | id: number;
3 | name: string;
4 | description: string;
5 | ingredients: string[];
6 | image: string;
7 | }
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development'
5 | };
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-cache-first/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/mocks/handlers.ts:
--------------------------------------------------------------------------------
1 | import { http, HttpResponse } from 'msw'
2 | import { recipes } from './mock.json'
3 |
4 | export const handlers = [
5 | http.get('https://super-recipes.com/api/recipes', async () => {
6 | return HttpResponse.json(recipes);
7 | }),
8 | ]
9 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-cache-first/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 | adsasd
3 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 | @for (item of recipes; track item.id) {
3 |
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/app/types/recipes.type.ts:
--------------------------------------------------------------------------------
1 | export interface Recipe {
2 | id: number;
3 | name: string;
4 | description: string;
5 | ingredients: string[];
6 | image: string;
7 | }
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development'
5 | };
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-network-first/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/mocks/handlers.ts:
--------------------------------------------------------------------------------
1 | import { http, HttpResponse } from 'msw'
2 | import { recipes } from './mock.json'
3 |
4 | export const handlers = [
5 | http.get('/api/recipes', async () => {
6 | return HttpResponse.json(recipes);
7 | }),
8 | ]
9 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-network-first/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 | adsasd
3 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 | @for (item of recipes; track item.id) {
3 |
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/app/types/recipes.type.ts:
--------------------------------------------------------------------------------
1 | export interface Recipe {
2 | id: number;
3 | name: string;
4 | description: string;
5 | ingredients: string[];
6 | image: string;
7 | }
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development'
5 | };
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-race-network-cache/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/mocks/handlers.ts:
--------------------------------------------------------------------------------
1 | import { delay, http, HttpResponse } from 'msw'
2 | import { recipes } from './mock.json'
3 |
4 | export const handlers = [
5 | http.get('/api/recipes', async () => {
6 | await delay(2000);
7 | return HttpResponse.json(recipes);
8 | }),
9 | ]
10 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-race-network-cache/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 | adsasd
3 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/app/components/recipes-list/recipes-list.component.html:
--------------------------------------------------------------------------------
1 |
2 | @for (item of recipes; track item.id) {
3 |
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/app/types/recipes.type.ts:
--------------------------------------------------------------------------------
1 | export interface Recipe {
2 | id: number;
3 | name: string;
4 | description: string;
5 | ingredients: string[];
6 | image: string;
7 | }
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/beef_stir_fry.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/beef_stir_fry.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/caprese_salad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/caprese_salad.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/chicken-alfredo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/chicken-alfredo.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/chicken_tikka_masala.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/chicken_tikka_masala.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/chocolate_chip_cookies.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/chocolate_chip_cookies.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development'
5 | };
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-offline-stale-while-revalidate/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter08/rxjs-offline-stale-while-revalidate/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/dist/rxjs-optimistic-update/browser/favicon.ico
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/app/types/recipes.type.ts:
--------------------------------------------------------------------------------
1 | export interface Recipe {
2 | id: number;
3 | name: string;
4 | description: string;
5 | ingredients: string[];
6 | image: string;
7 | }
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/assets/images/spaghetti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/assets/images/spaghetti.jpg
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | };
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter08/rxjs-optimistic-update/client/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter08/rxjs-optimistic-update/client/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-charts/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 |
6 | export const appConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/app/components/recipes-chart/recipes-chart.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-charts/src/app/components/recipes-chart/recipes-chart.component.scss
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-charts/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | wsEndpoint: 'wss://recipes.example.com'
6 | };
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-charts/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/mocks/mock.json:
--------------------------------------------------------------------------------
1 | {
2 | "orders": [
3 | [12, 87, 45],
4 | [55, 20, 93],
5 | [26, 3, 73],
6 | [57, 32, 14]
7 | ]
8 | }
--------------------------------------------------------------------------------
/Chapter09/rxjs-charts/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-recipes-chat/client/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-recipes-chat/client/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/src/assets/images/racoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-recipes-chat/client/src/assets/images/racoon.png
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/src/assets/images/red-panda.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-recipes-chat/client/src/assets/images/red-panda.png
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-recipes-chat/client/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/client/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | body {
3 | margin: 0;
4 | }
5 | html, body { height: 100%; }
6 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
7 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/server/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/server/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/server/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 |
3 | @Injectable()
4 | export class AppService {
5 | getHello(): string {
6 | return 'Hello World!';
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/server/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-recipes-chat/server/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { join } = require("path");
2 | module.exports = {
3 | parser: "@typescript-eslint/parser",
4 | parserOptions: {
5 | ecmaVersion: 2019,
6 | project: join(__dirname, "./tsconfig.json"),
7 | sourceType: "module"
8 | },
9 | extends: ["plugin:rxjs/recommended"],
10 | };
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/src/app/app.component.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-tic-tac-toe/client/src/app/app.component.scss
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/src/app/app.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | export const routes: Routes = [];
4 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-tic-tac-toe/client/src/assets/.gitkeep
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: false,
3 | // Add your variable here
4 | configuration: 'development',
5 | wsEndpoint: 'wss://recipes.example.com'
6 | };
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/RxJS-Cookbook-for-Reactive-Programming/5c43283af6af060632e3fd925ef8d29d5a2fea13/Chapter09/rxjs-tic-tac-toe/client/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { AppComponent } from './app/app.component';
4 |
5 | bootstrapApplication(AppComponent, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/src/mocks/browser.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser'
2 | import { handlers } from './handlers'
3 |
4 | export const worker = setupWorker(...handlers)
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/client/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | body {
3 | font-family: 'Shantell Sans', sans-serif;
4 | }
5 | html, body { height: 100%; }
6 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
7 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/server/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/server/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/server/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 |
3 | @Injectable()
4 | export class AppService {
5 | getHello(): string {
6 | return 'Hello World!';
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/server/src/game/game.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import { GameGateway } from './game.gateway';
3 | import { GameService } from './game.service';
4 |
5 | @Module({
6 | providers: [GameGateway, GameService],
7 | })
8 | export class GameModule {}
9 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/server/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter09/rxjs-tic-tac-toe/server/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-grpc-food-order-tracking/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all",
4 | "printWidth": 100
5 | }
--------------------------------------------------------------------------------
/Chapter10/rxjs-grpc-food-order-tracking/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true,
7 | "assets": ["**/*.proto"],
8 | "watchAssets": true
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-grpc-food-order-tracking/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 |
3 | @Injectable()
4 | export class AppService {
5 | getHello(): string {
6 | return 'Hello World!';
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-grpc-food-order-tracking/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-grpc-food-order-tracking/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/orders-api/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/orders-api/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/orders-api/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 | import { Observable, of } from 'rxjs';
3 |
4 | @Injectable()
5 | export class AppService {
6 | getHello(): Observable {
7 | return of('Hello World asdasd xxxx!');
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/orders-api/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/orders-api/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/reactive-kafka-broker/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all",
4 | "printWidth": 100
5 | }
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/reactive-kafka-broker/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/reactive-kafka-broker/src/main.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from '@nestjs/core';
2 | import { AppModule } from './app.module';
3 |
4 | async function bootstrap() {
5 | const app = await NestFactory.create(AppModule);
6 | await app.startAllMicroservices();
7 | await app.listen(3000);
8 | }
9 | bootstrap();
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/reactive-kafka-broker/src/orders/orders.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 | import { of } from 'rxjs';
3 |
4 | @Injectable()
5 | export class OrdersService {
6 | getRandomRecipe$() {
7 | return of('random recipe');
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/reactive-kafka-broker/src/recipes/recipes.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 |
3 | @Module({})
4 | export class RecipesModule {}
5 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/reactive-kafka-broker/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/reactive-kafka-broker/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/recipes-api/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/recipes-api/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/recipes-api/src/main.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from '@nestjs/core';
2 | import { AppModule } from './app.module';
3 |
4 | async function bootstrap() {
5 | const app = await NestFactory.create(AppModule);
6 | await app.listen(4000);
7 | }
8 | bootstrap();
9 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/recipes-api/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-kafka/recipes-api/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/orders-api/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/orders-api/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/orders-api/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 | import { Observable, of } from 'rxjs';
3 |
4 | @Injectable()
5 | export class AppService {
6 | getHello(): Observable {
7 | return of('Hello World!');
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/orders-api/src/main.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from '@nestjs/core';
2 | import { AppModule } from './app.module';
3 |
4 | async function bootstrap() {
5 | const app = await NestFactory.create(AppModule);
6 | await app.listen(3000);
7 | }
8 | bootstrap();
9 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/orders-api/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/orders-api/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/recipes-api/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/recipes-api/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/nest-cli",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src",
5 | "compilerOptions": {
6 | "deleteOutDir": true
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/recipes-api/src/interceptors/bulkhead/bulkhead.interceptor.spec.ts:
--------------------------------------------------------------------------------
1 | import { BulkheadInterceptor } from './bulkhead.interceptor';
2 |
3 | describe('BulkheadInterceptor', () => {
4 | it('should be defined', () => {
5 | expect(new BulkheadInterceptor()).toBeDefined();
6 | });
7 | });
8 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/recipes-api/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/rxjs-microservices/recipes-api/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------