diff --git a/apps/servicebus-browser-app/src/app/constants.ts b/apps/servicebus-browser-app/src/app/constants.ts index 1410b6a..5c8b822 100644 --- a/apps/servicebus-browser-app/src/app/constants.ts +++ b/apps/servicebus-browser-app/src/app/constants.ts @@ -1,4 +1,4 @@ export const rendererAppPort = 4200; -export const rendererAppName = 'servicebus-browser-frontend'; // options.name.split('-')[0] + '-web' -export const electronAppName = 'servicebus-browser-app'; +export const rendererAppName = 'servicebus-browser'; // options.name.split('-')[0] + '-web' +export const electronAppName = 'servicebus-browser'; export const updateServerUrl = 'https://deployment-server-url.com'; // TODO: insert your update server url here diff --git a/apps/servicebus-browser-frontend/src/app/app.component.html b/apps/servicebus-browser-frontend/src/app/app.component.html index cac306e..dd2f2de 100644 --- a/apps/servicebus-browser-frontend/src/app/app.component.html +++ b/apps/servicebus-browser-frontend/src/app/app.component.html @@ -5,9 +5,37 @@ + + + + tab 1 + + + tab2 + + + + + + Logs + @if (logsOpened()) { + + } @else { + + } + + + @if (logsOpened()) { + + + tempt text this will be replaced by actual logs in a logs component + + + } + diff --git a/apps/servicebus-browser-frontend/src/app/app.component.scss b/apps/servicebus-browser-frontend/src/app/app.component.scss index 3424747..6b64db8 100644 --- a/apps/servicebus-browser-frontend/src/app/app.component.scss +++ b/apps/servicebus-browser-frontend/src/app/app.component.scss @@ -26,6 +26,7 @@ width: 100%; height: 100%; display: flex; + flex-direction: column; align-items: stretch; justify-items: stretch; @@ -35,3 +36,30 @@ } } } + +.open-data-tabs { + --p-tabs-tab-padding: 0.4rem 0.8rem; +} + +.logs { + width: 100%; +} + +.logs-header { + width: 100%; + border: none; + border-radius: 0; + cursor: pointer; + background-color: var(--p-primary-600); + color: white; + font-size: 1rem; + text-align: left; + padding: 6px; + display: block flex; + justify-content: space-between; + align-items: center; + + &:hover { + background-color: var(--p-primary-700); + } +} diff --git a/apps/servicebus-browser-frontend/src/app/app.component.ts b/apps/servicebus-browser-frontend/src/app/app.component.ts index 1ef272a..12c7fb6 100644 --- a/apps/servicebus-browser-frontend/src/app/app.component.ts +++ b/apps/servicebus-browser-frontend/src/app/app.component.ts @@ -1,10 +1,11 @@ -import { Component } from '@angular/core'; +import { Component, signal } from '@angular/core'; import { RouterModule } from '@angular/router'; import { Button } from 'primeng/button'; import { Splitter } from 'primeng/splitter'; import { PrimeTemplate } from 'primeng/api'; import { Menubar } from 'primeng/menubar'; import { ScrollPanel } from 'primeng/scrollpanel'; +import { Tab, TabList, Tabs } from 'primeng/tabs'; @Component({ imports: [ @@ -14,6 +15,9 @@ import { ScrollPanel } from 'primeng/scrollpanel'; PrimeTemplate, Menubar, ScrollPanel, + Tabs, + TabList, + Tab, ], selector: 'app-root', templateUrl: './app.component.html', @@ -51,4 +55,10 @@ export class AppComponent { ], }, ]; + + logsOpened = signal(false); + + toggleLogs() { + this.logsOpened.update((value) => !value); + } } diff --git a/apps/servicebus-browser-frontend/src/app/app.config.ts b/apps/servicebus-browser-frontend/src/app/app.config.ts index bbae809..18b6e0f 100644 --- a/apps/servicebus-browser-frontend/src/app/app.config.ts +++ b/apps/servicebus-browser-frontend/src/app/app.config.ts @@ -3,7 +3,7 @@ import { provideRouter, withHashLocation } from '@angular/router'; import { appRoutes } from './app.routes'; import { providePrimeNG } from 'primeng/config'; import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; -import Aura from '@primeng/themes/aura'; +import { theme } from './theme'; export const appConfig: ApplicationConfig = { providers: [ @@ -11,7 +11,10 @@ export const appConfig: ApplicationConfig = { provideAnimationsAsync(), providePrimeNG({ theme: { - preset: Aura + preset: theme, + options: { + darkModeSelector: false, + } } }), diff --git a/apps/servicebus-browser-frontend/src/app/theme.ts b/apps/servicebus-browser-frontend/src/app/theme.ts new file mode 100644 index 0000000..b7deb15 --- /dev/null +++ b/apps/servicebus-browser-frontend/src/app/theme.ts @@ -0,0 +1,20 @@ +import { definePreset } from '@primeng/themes'; +import Aura from '@primeng/themes/aura'; + +export const theme = definePreset(Aura, { + semantic: { + primary: { + 50: '{sky.50}', + 100: '{sky.100}', + 200: '{sky.200}', + 300: '{sky.300}', + 400: '{sky.400}', + 500: '{sky.500}', + 600: '{sky.600}', + 700: '{sky.700}', + 800: '{sky.800}', + 900: '{sky.900}', + 950: '{sky.950}' + } + } +}); diff --git a/apps/servicebus-browser-frontend/src/styles.scss b/apps/servicebus-browser-frontend/src/styles.scss index 0fb3219..1a1863f 100644 --- a/apps/servicebus-browser-frontend/src/styles.scss +++ b/apps/servicebus-browser-frontend/src/styles.scss @@ -1,3 +1,5 @@ +@use "primeicons/primeicons.css" as *; + head, body { font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; margin: 0; diff --git a/libs/logs/contract/README.md b/libs/logs/contract/README.md new file mode 100644 index 0000000..479061b --- /dev/null +++ b/libs/logs/contract/README.md @@ -0,0 +1,7 @@ +# contract + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test contract` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/logs/contract/eslint.config.js b/libs/logs/contract/eslint.config.js new file mode 100644 index 0000000..07e518f --- /dev/null +++ b/libs/logs/contract/eslint.config.js @@ -0,0 +1,3 @@ +const baseConfig = require('../../../eslint.config.js'); + +module.exports = [...baseConfig]; diff --git a/libs/logs/contract/jest.config.ts b/libs/logs/contract/jest.config.ts new file mode 100644 index 0000000..c1804f1 --- /dev/null +++ b/libs/logs/contract/jest.config.ts @@ -0,0 +1,10 @@ +export default { + displayName: 'contract', + preset: '../../../jest.preset.js', + testEnvironment: 'node', + transform: { + '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '/tsconfig.spec.json' }], + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../../coverage/libs/logs/contract', +}; diff --git a/libs/logs/contract/package.json b/libs/logs/contract/package.json new file mode 100644 index 0000000..fb0aad2 --- /dev/null +++ b/libs/logs/contract/package.json @@ -0,0 +1,6 @@ +{ + "name": "@service-bus-browser/logs-contracts", + "version": "0.0.1", + "dependencies": {}, + "private": true +} diff --git a/libs/logs/contract/project.json b/libs/logs/contract/project.json new file mode 100644 index 0000000..eb94dd5 --- /dev/null +++ b/libs/logs/contract/project.json @@ -0,0 +1,16 @@ +{ + "name": "contract", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/logs/contract/src", + "projectType": "library", + "tags": [], + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/logs/contract/jest.config.ts" + } + } + } +} diff --git a/libs/logs/contract/src/index.ts b/libs/logs/contract/src/index.ts new file mode 100644 index 0000000..67abd69 --- /dev/null +++ b/libs/logs/contract/src/index.ts @@ -0,0 +1 @@ +export * from './lib/log-line'; diff --git a/libs/logs/contract/src/lib/log-line.ts b/libs/logs/contract/src/lib/log-line.ts new file mode 100644 index 0000000..8c4f479 --- /dev/null +++ b/libs/logs/contract/src/lib/log-line.ts @@ -0,0 +1,6 @@ +export interface LogLine { + severity: 'verbose' | 'info' | 'warn' | 'error' | 'critical'; + message: string; + loggedAt: Date; + context?: any; +} diff --git a/libs/logs/contract/tsconfig.json b/libs/logs/contract/tsconfig.json new file mode 100644 index 0000000..0dc79ca --- /dev/null +++ b/libs/logs/contract/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "noPropertyAccessFromIndexSignature": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/logs/contract/tsconfig.lib.json b/libs/logs/contract/tsconfig.lib.json new file mode 100644 index 0000000..4befa7f --- /dev/null +++ b/libs/logs/contract/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/libs/logs/contract/tsconfig.spec.json b/libs/logs/contract/tsconfig.spec.json new file mode 100644 index 0000000..ab55b7c --- /dev/null +++ b/libs/logs/contract/tsconfig.spec.json @@ -0,0 +1,15 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "moduleResolution": "node10", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/libs/logs/store/README.md b/libs/logs/store/README.md new file mode 100644 index 0000000..9eba185 --- /dev/null +++ b/libs/logs/store/README.md @@ -0,0 +1,7 @@ +# @service-bus-browser/logs-store + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test @service-bus-browser/logs-store` to execute the unit tests. diff --git a/libs/logs/store/eslint.config.js b/libs/logs/store/eslint.config.js new file mode 100644 index 0000000..d36ea77 --- /dev/null +++ b/libs/logs/store/eslint.config.js @@ -0,0 +1,34 @@ +const nx = require('@nx/eslint-plugin'); +const baseConfig = require('../../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + ...nx.configs['flat/angular'], + ...nx.configs['flat/angular-template'], + { + files: ['**/*.ts'], + rules: { + '@angular-eslint/directive-selector': [ + 'error', + { + type: 'attribute', + prefix: 'lib', + style: 'camelCase', + }, + ], + '@angular-eslint/component-selector': [ + 'error', + { + type: 'element', + prefix: 'lib', + style: 'kebab-case', + }, + ], + }, + }, + { + files: ['**/*.html'], + // Override or add rules here + rules: {}, + }, +]; diff --git a/libs/logs/store/jest.config.ts b/libs/logs/store/jest.config.ts new file mode 100644 index 0000000..5398988 --- /dev/null +++ b/libs/logs/store/jest.config.ts @@ -0,0 +1,21 @@ +export default { + displayName: '@service-bus-browser/logs-store', + preset: '../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../coverage/libs/logs/store', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/libs/logs/store/project.json b/libs/logs/store/project.json new file mode 100644 index 0000000..40fa427 --- /dev/null +++ b/libs/logs/store/project.json @@ -0,0 +1,20 @@ +{ + "name": "@service-bus-browser/logs-store", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/logs/store/src", + "prefix": "lib", + "projectType": "library", + "tags": [], + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/logs/store/jest.config.ts" + } + }, + "lint": { + "executor": "@nx/eslint:lint" + } + } +} diff --git a/libs/logs/store/src/index.ts b/libs/logs/store/src/index.ts new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/libs/logs/store/src/index.ts @@ -0,0 +1 @@ + diff --git a/libs/logs/store/src/lib/logs.actions.ts b/libs/logs/store/src/lib/logs.actions.ts new file mode 100644 index 0000000..89735ec --- /dev/null +++ b/libs/logs/store/src/lib/logs.actions.ts @@ -0,0 +1,7 @@ +import { createAction, props } from '@ngrx/store'; +import { LogLine } from '@service-bus-browser/logs-contracts'; + +export const writeLog = createAction( + '[Logs] Write a log line', + props<{ log: LogLine }>() +); diff --git a/libs/logs/store/src/lib/logs.selectors.ts b/libs/logs/store/src/lib/logs.selectors.ts new file mode 100644 index 0000000..716dd27 --- /dev/null +++ b/libs/logs/store/src/lib/logs.selectors.ts @@ -0,0 +1,6 @@ +import { createFeatureSelector } from '@ngrx/store'; +import { featureKey, LogsState } from './logs.store'; + +const featureSelector = createFeatureSelector(featureKey); + +export const selectLogs = featureSelector; diff --git a/libs/logs/store/src/lib/logs.store.ts b/libs/logs/store/src/lib/logs.store.ts new file mode 100644 index 0000000..3a37063 --- /dev/null +++ b/libs/logs/store/src/lib/logs.store.ts @@ -0,0 +1,27 @@ +import { LogLine } from '@service-bus-browser/logs-contracts'; +import { createFeature, createReducer, on } from '@ngrx/store'; +import { writeLog } from './logs.actions'; + +export const featureKey = 'logs'; + +export type LogsState = { + logs: LogLine[]; +} + +export const initialState: LogsState = { + logs: [] +}; + +export const logsReducer = createReducer( + initialState, + on(writeLog, (state, { log }) => { + return { + logs: [...state.logs, log] + }; + }) +); + +export const logsFeature = createFeature({ + name: featureKey, + reducer: logsReducer +}); diff --git a/libs/logs/store/src/test-setup.ts b/libs/logs/store/src/test-setup.ts new file mode 100644 index 0000000..ea41401 --- /dev/null +++ b/libs/logs/store/src/test-setup.ts @@ -0,0 +1,6 @@ +import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; + +setupZoneTestEnv({ + errorOnUnknownElements: true, + errorOnUnknownProperties: true, +}); diff --git a/libs/logs/store/tsconfig.json b/libs/logs/store/tsconfig.json new file mode 100644 index 0000000..fde35ea --- /dev/null +++ b/libs/logs/store/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es2022", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/libs/logs/store/tsconfig.lib.json b/libs/logs/store/tsconfig.lib.json new file mode 100644 index 0000000..9b49be7 --- /dev/null +++ b/libs/logs/store/tsconfig.lib.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/test-setup.ts", + "jest.config.ts", + "src/**/*.test.ts" + ], + "include": ["src/**/*.ts"] +} diff --git a/libs/logs/store/tsconfig.spec.json b/libs/logs/store/tsconfig.spec.json new file mode 100644 index 0000000..f858ef7 --- /dev/null +++ b/libs/logs/store/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/nx.json b/nx.json index 708c8fa..269599f 100644 --- a/nx.json +++ b/nx.json @@ -50,7 +50,22 @@ "linter": "eslint", "style": "scss", "unitTestRunner": "jest" + }, + "@nx/angular:library": { + "linter": "eslint", + "unitTestRunner": "jest" + }, + "@nx/angular:component": { + "style": "css" } }, - "defaultProject": "servicebus-browser-app" + "defaultProject": "servicebus-browser-app", + "plugins": [ + { + "plugin": "@nx/eslint/plugin", + "options": { + "targetName": "eslint:lint" + } + } + ] } diff --git a/package-lock.json b/package-lock.json index 683329e..c1d0065 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,11 @@ "@angular/platform-browser": "~19.0.0", "@angular/platform-browser-dynamic": "~19.0.0", "@angular/router": "~19.0.0", + "@ngrx/effects": "^19.0.0", + "@ngrx/router-store": "^19.0.0", + "@ngrx/store": "^19.0.0", "@primeng/themes": "^19.0.1", + "primeicons": "^7.0.0", "primeng": "^19.0.1", "rxjs": "~7.8.0", "zone.js": "~0.15.0" @@ -31,6 +35,7 @@ "@angular/compiler-cli": "~19.0.0", "@angular/language-service": "~19.0.0", "@eslint/js": "^9.8.0", + "@ngrx/schematics": "^19.0.0", "@nx/angular": "20.2.2", "@nx/eslint": "20.2.2", "@nx/eslint-plugin": "20.2.2", @@ -49,6 +54,7 @@ "electron": "^33.3.0", "eslint": "^9.8.0", "eslint-config-prettier": "^9.0.0", + "jasmine-marbles": "~0.9.1", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-environment-node": "^29.7.0", @@ -6957,6 +6963,56 @@ "@tybys/wasm-util": "^0.9.0" } }, + "node_modules/@ngrx/effects": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-19.0.0.tgz", + "integrity": "sha512-McNrbaPoDUlukrVPAckpRYLFSOoHwMQgMaiiNUvIGJuH/S1Wja+0xAT/e7+h+SO6xaFqDiEqj7GiR8lPkIAnVw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "^19.0.0", + "@ngrx/store": "19.0.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngrx/router-store": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-19.0.0.tgz", + "integrity": "sha512-kkgxXPK2xYEh5HRk323dFbsF0LSAsNiEWUg0oH5WLwy2cgnlmyoJ1QRToTgH+B76Bbd1NRMTITZJtNIOakj1Pg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^19.0.0", + "@angular/core": "^19.0.0", + "@angular/router": "^19.0.0", + "@ngrx/store": "19.0.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngrx/schematics": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@ngrx/schematics/-/schematics-19.0.0.tgz", + "integrity": "sha512-lPgTv7wIS5uuhxkzi418pnMwMKAPs4ILSxJHNRClAv4N8dVyd/2C4aVX8vpZjtaWEVR/qisiHqbGl2pPGfIYJw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ngrx/store": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-19.0.0.tgz", + "integrity": "sha512-AaryTJF1DsXUVWFhCl833LhvjyPjDOAMX9tqGBDfYGhaNOWWX3q/3z5HQ0XCrJ8kDJN3EHiNQa3XHxFaFQUo9A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "^19.0.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, "node_modules/@ngtools/webpack": { "version": "19.0.6", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.0.6.tgz", @@ -17174,6 +17230,19 @@ "node": "*" } }, + "node_modules/jasmine-marbles": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/jasmine-marbles/-/jasmine-marbles-0.9.2.tgz", + "integrity": "sha512-T7RjG4fRsdiGGzbQZ6Kj39qYt6O1/KIcR4FkUNsD3DUGkd/AzpwzN+xtk0DXlLWEz5BaVdK1SzMgQDVw879c4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20" + }, + "peerDependencies": { + "rxjs": "^7.0.0" + } + }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -22442,6 +22511,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/primeicons": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-7.0.0.tgz", + "integrity": "sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==", + "license": "MIT" + }, "node_modules/primeng": { "version": "19.0.1", "resolved": "https://registry.npmjs.org/primeng/-/primeng-19.0.1.tgz", diff --git a/package.json b/package.json index 87a97c6..7ff57fb 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,11 @@ "@angular/platform-browser": "~19.0.0", "@angular/platform-browser-dynamic": "~19.0.0", "@angular/router": "~19.0.0", + "@ngrx/effects": "^19.0.0", + "@ngrx/router-store": "^19.0.0", + "@ngrx/store": "^19.0.0", "@primeng/themes": "^19.0.1", + "primeicons": "^7.0.0", "primeng": "^19.0.1", "rxjs": "~7.8.0", "zone.js": "~0.15.0" @@ -28,6 +32,7 @@ "@angular/compiler-cli": "~19.0.0", "@angular/language-service": "~19.0.0", "@eslint/js": "^9.8.0", + "@ngrx/schematics": "^19.0.0", "@nx/angular": "20.2.2", "@nx/eslint": "20.2.2", "@nx/eslint-plugin": "20.2.2", @@ -46,6 +51,7 @@ "electron": "^33.3.0", "eslint": "^9.8.0", "eslint-config-prettier": "^9.0.0", + "jasmine-marbles": "~0.9.1", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-environment-node": "^29.7.0", diff --git a/tsconfig.base.json b/tsconfig.base.json index b73cce6..7e9df53 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -14,7 +14,12 @@ "skipLibCheck": true, "skipDefaultLibCheck": true, "baseUrl": ".", - "paths": {} + "paths": { + "@service-bus-browser/logs-contracts": [ + "libs/logs/contract/src/index.ts" + ], + "@service-bus-browser/logs-store": ["libs/logs/store/src/index.ts"] + } }, "exclude": ["node_modules", "tmp"] }
tempt text this will be replaced by actual logs in a logs component