├── 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 |
4 | 5 |
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 |
4 | 5 |
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 |
4 | 5 |
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 |
4 | 5 |
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 |
4 | 5 |
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 |
4 | 5 |
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 |
4 | 5 |
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 |
4 | 5 |
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 |
4 | 5 |
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 | --------------------------------------------------------------------------------