Nicolas Cantu cfa1f435cb refactor: centralize HTTP proxy helpers and align IA_DEV_ROOT resolution (0.0.6)
Initial state:
- HTTP proxy utilities (Bearer parsing, hop-by-hop headers, body limits, safe path validation) were duplicated between smart-ide-sso-gateway and smart-ide-global-api.
- IA_DEV_ROOT auto-resolution order differed between bash (ensure-ia-dev-project-link.sh) and TypeScript (ia-dev-gateway getIaDevRoot), and could fall back to non-existing paths.

Motivation:
- Reduce duplication and drift across proxy layers.
- Enforce consistent, explicit IA_DEV_ROOT behavior across scripts and services.

Resolution:
- Add package @4nk/smart-ide-http-utils and reuse it from smart-ide-sso-gateway and smart-ide-global-api.
- Align IA_DEV_ROOT resolution to prefer ./services/ia_dev then ./ia_dev; fail fast when missing/misconfigured.

Root cause:
- Cross-service utilities were implemented ad-hoc in each service.
- Historical layout transitions (ia_dev gitlink vs vendored services/ia_dev) left multiple resolvers with different priorities.

Impacted features:
- HTTP proxy chain (SSO gateway -> global API -> upstream services).
- ia-dev-gateway startup/operation when IA_DEV_ROOT is missing or invalid.

Code modified:
- packages/smart-ide-http-utils/**
- services/smart-ide-global-api/src/server.ts
- services/smart-ide-sso-gateway/src/server.ts
- services/ia-dev-gateway/src/paths.ts
- scripts/ensure-ia-dev-project-link.sh

Documentation modified:
- docs/system-architecture.md
- docs/ia_dev-module.md
- docs/repo/README.md

Configurations modified:
- services/smart-ide-global-api/package.json
- services/smart-ide-sso-gateway/package.json

Files in deploy modified:
- None

Files in logs impacted:
- None (runtime logs only)

Databases and other sources modified:
- None

Off-project modifications:
- None

Files in .smartIde modified:
- None

Files in .secrets modified:
- None

New patch version in VERSION:
- 0.0.6

CHANGELOG.md updated:
- yes
2026-04-04 20:34:49 +02:00

29 lines
977 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# @4nk/smart-ide-http-utils
Utilitaires HTTP partagés pour les services Node/TypeScript du monorepo **smart_ide**.
Objectifs :
- Réduire la duplication (Bearer, limites de body, headers hop-by-hop, etc.).
- Centraliser les garde-fous de proxy (ex. rejet des segments `..` dans les chemins relayés).
Fonctions exposées :
- `readBearer(req)` : lit `Authorization: Bearer …`.
- `readBodyBuffer(req, maxBytes)` : lit un corps en mémoire avec plafond explicite.
- `copyHeadersForProxy(req)` : copie les headers dentrée en excluant hop-by-hop + `Authorization`.
- `isSafeProxyPath(path)` : valide un chemin relayé (refuse `.` / `..` même encodés).
- `REQUEST_HOP_BY_HOP_HEADERS`, `RESPONSE_HOP_BY_HOP_HEADERS`.
## Build
Le répertoire **`dist/`** est versionné pour que les services puissent installer ce paquet via `file:` sans étape de build préalable.
Après modification de `src/` :
```bash
cd packages/smart-ide-http-utils
npm ci && npm run build
```