diff --git a/apps/server/clara-api/src/routes/core/health.ts b/apps/server/clara-api/src/routes/core/health.ts index 060a9ff3e..ddd4a7cad 100644 --- a/apps/server/clara-api/src/routes/core/health.ts +++ b/apps/server/clara-api/src/routes/core/health.ts @@ -2,8 +2,6 @@ import { FastifyPluginAsync } from 'fastify'; import { pool } from '../../infra/db'; const route: FastifyPluginAsync = async (app) => { - // app.get('/health', async () => ({ ok: true, openai: app.hasOpenAI })); - app.get('/health', async (_req, reply) => { const meta = await pool.query(` select @@ -13,14 +11,12 @@ const route: FastifyPluginAsync = async (app) => { inet_server_port() as port, version() `); - const counts = await pool.query(` - select - (select count(*) from companies) as companies, - (select count(*) from contacts) as contacts, - (select count(*) from tasks) as tasks, - (select count(*) from activities)as activities - `); - return reply.send({ conn: meta.rows[0], counts: counts.rows[0] }); + + return reply.send({ + ok: true, + openai: app.hasOpenAI, + conn: meta.rows[0], + }); }); }; diff --git a/docker/admin-api/Dockerfile.prod b/docker/admin-api/Dockerfile.prod index 67ebb1cee..bc1ae1e80 100644 --- a/docker/admin-api/Dockerfile.prod +++ b/docker/admin-api/Dockerfile.prod @@ -21,3 +21,4 @@ EXPOSE 9102 # Entry point waits for DB then runs the app ENTRYPOINT ["./wait-for-postgres.sh", "postgres-service-prod", "dotnet", "/app/EDb.AdminApi.dll"] + diff --git a/docker/clara-api/Dockerfile.prod b/docker/clara-api/Dockerfile.prod index cc8aac701..a6e70d8e2 100644 --- a/docker/clara-api/Dockerfile.prod +++ b/docker/clara-api/Dockerfile.prod @@ -4,7 +4,6 @@ WORKDIR /srv/app # Use Nx-pruned artifacts COPY dist/apps/server/clara-api/pnpm-lock.yaml ./pnpm-lock.yaml -COPY dist/apps/server/clara-api/workspace_modules ./workspace_modules # IMPORTANT: use the generated dist package.json (has deps) COPY dist/apps/server/clara-api/package.json ./package.json @@ -17,7 +16,6 @@ WORKDIR /srv/app COPY --from=deps /srv/app/node_modules ./node_modules COPY dist/apps/server/clara-api/main.cjs ./main.cjs -COPY dist/apps/server/clara-api/package.json ./package.json ENV PORT=9101 CMD ["main.cjs"] diff --git a/docker/clara-api/Dockerfile.staging b/docker/clara-api/Dockerfile.staging index cc8aac701..a6e70d8e2 100644 --- a/docker/clara-api/Dockerfile.staging +++ b/docker/clara-api/Dockerfile.staging @@ -4,7 +4,6 @@ WORKDIR /srv/app # Use Nx-pruned artifacts COPY dist/apps/server/clara-api/pnpm-lock.yaml ./pnpm-lock.yaml -COPY dist/apps/server/clara-api/workspace_modules ./workspace_modules # IMPORTANT: use the generated dist package.json (has deps) COPY dist/apps/server/clara-api/package.json ./package.json @@ -17,7 +16,6 @@ WORKDIR /srv/app COPY --from=deps /srv/app/node_modules ./node_modules COPY dist/apps/server/clara-api/main.cjs ./main.cjs -COPY dist/apps/server/clara-api/package.json ./package.json ENV PORT=9101 CMD ["main.cjs"] diff --git a/docker/edb/Dockerfile.dev b/docker/edb/Dockerfile.dev index b14720c3a..85b1e3caf 100644 --- a/docker/edb/Dockerfile.dev +++ b/docker/edb/Dockerfile.dev @@ -20,4 +20,4 @@ COPY . . EXPOSE 4200 # Start the Nx server in development mode -CMD ["pnpm", "start:web"] +CMD ["pnpm", "start:web"] \ No newline at end of file diff --git a/k8s/product/clara-client/overlays/prod/kustomization.yaml b/k8s/product/clara-client/overlays/prod/kustomization.yaml index 57f3bbbc0..907f7f500 100644 --- a/k8s/product/clara-client/overlays/prod/kustomization.yaml +++ b/k8s/product/clara-client/overlays/prod/kustomization.yaml @@ -7,4 +7,4 @@ resources: images: - name: eliasdb/clara-client newName: eliasdb/clara-client - newTag: v2.1 + newTag: v2.2 diff --git a/libs/client/edb-clara/features/feature-clara-admin/src/lib/components/capabilities/modules/registry.ts b/libs/client/edb-clara/features/feature-clara-admin/src/lib/components/capabilities/modules/registry.ts index f4e7a2489..691d601c7 100644 --- a/libs/client/edb-clara/features/feature-clara-admin/src/lib/components/capabilities/modules/registry.ts +++ b/libs/client/edb-clara/features/feature-clara-admin/src/lib/components/capabilities/modules/registry.ts @@ -55,9 +55,14 @@ function summarizeParams(schema?: JSONSchema): CapabilityItem['summary'] { if (!schema || typeof schema !== 'object') return; const out: CapabilityItem['summary'] = {}; - const props = schema?.properties as Record | undefined; - - const kindEnum = props?.kind && 'enum' in props.kind ? (props.kind.enum as string[] | readonly string[] | undefined) : undefined; + const props = schema?.properties as + | Record + | undefined; + + const kindEnum = + props?.kind && 'enum' in props.kind + ? (props.kind.enum as string[] | readonly string[] | undefined) + : undefined; if (Array.isArray(kindEnum) && kindEnum.length) out.kinds = kindEnum; const req = schema?.required as string[] | undefined; @@ -79,9 +84,12 @@ function summarizeParams(schema?: JSONSchema): CapabilityItem['summary'] { }); } - const rootOne = Array.isArray((schema as JSONSchema & { oneOf?: unknown })?.oneOf) + const rootOne = Array.isArray( + (schema as JSONSchema & { oneOf?: unknown })?.oneOf, + ) ? (schema as JSONSchema & { oneOf?: JSONSchema[] }).oneOf : []; + if (rootOne.length) { const rootVariants = rootOne.map((v: JSONSchema, i: number) => { const vReq = Array.isArray(v?.required) ? v.required : []; diff --git a/libs/shared/client/ui/src/lib/components/navigation/overflow-menu/overflow-menu.component.ts b/libs/shared/client/ui/src/lib/components/navigation/overflow-menu/overflow-menu.component.ts index 9b3cabf2d..c87a40afa 100644 --- a/libs/shared/client/ui/src/lib/components/navigation/overflow-menu/overflow-menu.component.ts +++ b/libs/shared/client/ui/src/lib/components/navigation/overflow-menu/overflow-menu.component.ts @@ -8,9 +8,9 @@ import { ViewChild, } from '@angular/core'; import { NavigationStart, Router } from '@angular/router'; +import { UiIconComponent } from '@edb/shared-ui'; import { DialogModule } from 'carbon-components-angular'; import { filter } from 'rxjs'; -import { UiIconComponent } from '../../../components/icon/icon.component'; @Component({ selector: 'ui-platform-overflow-menu', @@ -35,7 +35,6 @@ import { UiIconComponent } from '../../../components/icon/icon.component'; -
([]); readonly placement = input<'bottom' | 'top'>('bottom'); readonly flip = input(true); @@ -56,44 +54,46 @@ export class UiPlatformOverflowMenuComponent implements AfterViewInit { readonly icon = input(''); readonly iconSize = input('1rem'); readonly iconColor = input('white'); + @Output() menuOptionSelected = new EventEmitter(); - /* ------------------------------------------------------------- */ isMenuOpen = false; @ViewChild('menu', { static: true }) - private menuEl!: HTMLElement & { open: boolean }; + private menuEl?: HTMLElement & { open: boolean }; + private readonly router = inject(Router); - /* close the popover on every navigation ----------------------- */ ngAfterViewInit(): void { this.router.events - .pipe(filter((e) => e instanceof NavigationStart)) + .pipe(filter((event) => event instanceof NavigationStart)) .subscribe(() => this.hardClose()); } - /* ------------------------------------------------------------- */ protected hardClose(): void { this.isMenuOpen = false; - if (this.menuEl) this.menuEl.open = false; + + if (this.menuEl) { + this.menuEl.open = false; + } } - /* unchanged click helpers ------------------------------------- */ - handleOptionSelect(opt: { id: string }) { + handleOptionSelect(option: { id: string }): void { this.hardClose(); - this.onOptionClick(opt.id); + this.onOptionClick(option.id); } onMenuSelect(): void { this.hardClose(); } - onOptionClick(id: string) { + onOptionClick(id: string): void { if (id === 'logout') { console.log('Logging out…'); } else { this.router.navigate([id]); } + this.menuOptionSelected.emit(id); } } diff --git a/libs/shared/client/ui/tsconfig.lib.json b/libs/shared/client/ui/tsconfig.lib.json index 3af1d91fb..bdf9ba13d 100644 --- a/libs/shared/client/ui/tsconfig.lib.json +++ b/libs/shared/client/ui/tsconfig.lib.json @@ -6,8 +6,8 @@ "declarationMap": true, "inlineSources": true, "types": [], - "module": "Node16", - "moduleResolution": "node16" + "module": "ES2022", + "moduleResolution": "bundler" }, "exclude": [ "src/**/*.spec.ts", @@ -23,8 +23,7 @@ "src/**/*.test.js", "src/**/*.spec.js", "src/**/*.test.jsx", - "src/**/*.spec.jsx", - "src/test-setup.ts" + "src/**/*.spec.jsx" ], "include": ["src/**/*.ts"] }