[EPIC]: MVP Javascript-SDK
## Warum?
Ziel des MVP ist es, mit minimalem Aufwand eine erste veröffentlichungsfähige Version des SDKs zu entwickeln.
Out-of-Scope: Erstellung des Grundgerüst für Methodensignaturen -\> #415
## Relevante Links und Bemerkungen
- [SDK-Konzept im Wiki](https://wiki.fit-connect.fitko.dev/de/Konzeption/Konzeption_SDK)
- [inoffizielles Python-SDK](https://github.com/codedust/fitconnect-sdk-python)
- Demo zur Verschlüsselung von JSON und Dateien im Browser: \[https://github.com/codedust/simplejose\] (basiert auf \[https://github.com/panva/jose\])
- Vergleich zwischen \[https://github.com/square/js-jose\] und \[https://github.com/panva/jose\]: \[https://github.com/codedust/jwe-file-encryption-demo\]
- tl;dr: square/js-jose hat Schwierigkeiten mit dem Verschlüsseln von Binärdaten und ist langsamer
- Im MVP des JavaScript-SDK ist keine Unterstützung beim Aufruf der Submission API enthalten.
- Das MVP des JavaScript-SDK hat Onlinedienste (Sender) als primäre Zielgruppe und ist noch nicht für die Nutzung im Subscriber geeignet -\> Follow-Up-Issue
## Akzeptanzkriterien
### Aus planning#415
1. [x] Die Codebasis ist in Typescript geschieben.
2. [x] Im GitLab findet sich unter https://git.fitko.de/fit-connect/sdk-javascript ein Grundgerüst des SDKs mit Methodensignaturen.
3. [x] Jede Methode ist ausführlich mittels Methodenkommentaren dokumentiert.
4. [x] ~~Alle Methoden werfen eine `NotImplementedException` (o.ä.)~~ - genau das wurde in dem Issue implementiert.
5. [x] Die folgenden Funktionalitäten sind abgebildet (nicht jede Funktionalität muss zwangsläufig über eine eigene Methode abgebildet werden, ggf. reicht auch ein `// TODO: implement xyz`):
- [x] Sender: Verschlüsselung von Fachdaten (JSON, XML) mittels JWE
- [x] Sender: Verschlüsselung von Anhängen (Binärdaten) mittels JWE
- [x] Sender: Korrekte Erzeugung eines Metadatensatzes inkl. [Hashwerte](https://docs.fitko.de/fit-connect/docs/sending/metadata/#integrity)
- [x] ~~Sender + Subscriber: SET Parsen inkl. Signaturprüfung~~
- erfolgt im Backend und wird im Frontend angezeigt
- Im Frontend würden wir auf die CORS Problematki stoßen (siehe unten)
- [x] Logging
- PO Review: ist für die Entwickler der Onlinedienste soweit vorbereitet
- Doku: Fehlermeldung des JS-SDKs sollten angemessen dem User angezeigt werden
### ursprüngliche Kriterien
1. [x] Die auf Basis des SDK-Grundgerüst vorgegebenen Funktionalitäten sind vollständig implementiert.
2. [x] Alle Vorgaben aus den [Vorgaben für kryptographische Verfahren](https://docs.fitko.de/fit-connect/docs/details/crypto) werden eingehalten.
- PO Review: Prüfungen erfolgen im Backend im .NET oder JAVA SDK
- PO Review: technisch ggf. möglich es im Frontend zu machen (jedoch problematisch auf Grund benötigter CORS Aufrufe (Im Browser könnte der User die Validierung umgehen)
- PO Review: falls .NET oder JAVA nicht genutzt wird, soll im Doku vorgeschrieben werden die Prüfung (am besten mit unserem JWK Validator) zu machen
3. [x] Schlankes Backend implementieren und deployen auf einer temporären DEV-Umgebung (mit Team Infrastruktur)
1. [x] Musteronlinedienst kann das bereits mit 0.1.0
2. [ ] Nachtest notwendig, sobald die 1.0.0 veröffentlich ist
4. [ ] Testautomatisierung mit SSP Team - ?Cypress?
1. [x] Die Implementierung ist in gängigen Browsern (tbd) lauffähig.
- PO Review: da dies bis auf den Bürger durchschlagen kann, sollten wir bis zur Abdeckung höchstens als RC publishen
2. [x] Für die implementierten Funktionalitäten des SDK liegen Unit Tests vor.
3. [x] Die Funktionalität des SDK wurde durch einen E2E-Test überprüft.
4. [x] mindestens monatliche Tests (nicht nur neue Versionen von uns, sondern auch von Browsern)
5. [ ] 1\. \[ \] ~~Die Codebeispiele in der Dokumentation nutzen des SDK~~ -\> neues Issue
## Durchführungsplan (vom Entwickler bei Storyplanung auszufüllen)
- [ ] Lesen der [Wiki-Seite](https://wiki.fit-connect.fitko.dev/de/Konzeption/Konzeption_SDK), Klärung von offenen Fragen
- [ ] Zusammentragen, was es aktuell für diese Programmiersprache schon an Code gibt (Tests, Tools, Beispiele, etc.)
- [ ] ...
- [ ] ...
- [ ] [Definition of Done](https://wiki.fit-connect.fitko.dev/de/PM_PUBLIC/DefinitionOf#done-f%C3%BCr-api-spezifikationen) wurde geprüft
issue