ADR-GDS-002 — Proiectul Angular exportat este self-contained
- Status: Acceptat (implementat)
- Data: 2026-07-09
- Context bloc: C (dezvoltare), aplicație GDS, export
Context
Section titled “Context”Brieful cere ca exportul „Proiect Angular” (gds-mockup-project.zip) să conțină un
package.json „cu @gstack/gds-core + gds-angular” și app.component.html cu
componentele gds-*, ȘI (criteriu de acceptare AC-6) să compileze din prima
(ng build verde, fără modificări).
Aceste două cerințe sunt în tensiune: pachetele @gstack/gds-* NU sunt publicate într-un
registru npm, deci un npm install care le referă ar eșua → ng build ar pica.
Decizie
Section titled “Decizie”Prioritizăm criteriul de acceptare AC-6 „compilează din prima”. Proiectul exportat este self-contained:
src/styles.css= token-urile GDS + accentul ales, inline (dingdsThemedCss), fără dependențe private.src/app/app.component.tsrandează mockup-ul via[innerHTML]+DomSanitizer.bypassSecurityTrustHtml(BODY), undeBODY=renderDocumentBody(doc)(exact HTML-ul din canvas). Se păstrează atributele de stil (înălțimi bare) pe care sanitizer-ul Angular altfel le-ar elimina.package.jsonconține DOAR dependențe@angular/*publice →npm install+ng buildgarantat verzi.- README documentează cum se înlocuiește
BODYcu componentele vii<gds-*>din@gstack/gds-angulardupă publicarea pachetelor.
bypassSecurityTrustHtml e sigur pentru fișierul generat pentru că întreg conținutul e
escape-uit la sursă în render.ts (esc() pe fiecare interpolare de date de utilizator);
BODY e serializat cu JSON.stringify în fișierul TS.
Consecințe
Section titled “Consecințe”- (+) AC-6 îndeplinit și verificat real: unzip →
npm install→ng build= verde. - (+) Fișierul e portabil, fără acces la registrul privat.
- (−) Abatere conștientă de la litera briefului (componente
gds-*în export). Ridicarea la componente vii = follow-up, condiționat de publicarea@gstack/gds-*(ADR-GDS-001). - Verificat că
package.jsonNU conține@gstack/(testexport-builders.spec).