mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
Map EDR invoices onto the MoR EIMS /v1/register document and add the cryptographic transport needed to talk to core.mor.gov.et. Mapper: DTOs mirror the supplied Postman collection section by section. Tax is resolved per line via a caller-supplied resolver and throws when unresolved -- the app models no tax at all (invoice.taxAmount is always 0, invoice_lines and the rate catalogue carry no fiscal columns), so a zero-rated default would assert a tax position the codebase cannot support. Seller identity, document number, counters and previous IRN are passed in explicitly; the mapper stays pure. Transport: config, credential loading, RSA-SHA512 signing and /auth/login with an in-memory token cache. Signing reproduces the process that produced a working live token -- compact JSON of the inner request only, exact UTF-8 bytes, base64 signature, and base64 of the certificate file's exact bytes with no parsing or re-encoding. Concurrent callers share one login via an in-flight promise. Refresh is deliberately unimplemented: the collection shows an unsigned refresh body but also ships unsigned examples of calls that do require signing, so an expired token re-logs in instead. Errors normalise to EimsApiException carrying only the gateway's own error fields; secrets, signature, certificate and tokens never reach logs. Key and certificate file patterns are gitignored. Nothing calls EIMS automatically and no invoice entity, migration or UI is touched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
65 lines
971 B
Plaintext
65 lines
971 B
Plaintext
# dependencies
|
|
node_modules/
|
|
|
|
# build output
|
|
**/dist/
|
|
.next/
|
|
coverage/
|
|
*.tsbuildinfo
|
|
**/*.tsbuildinfo
|
|
**/vite.config.ts.timestamp-*.mjs
|
|
|
|
# env
|
|
.env
|
|
.env.*
|
|
|
|
# turbo
|
|
.turbo/
|
|
|
|
# logs
|
|
*.log
|
|
|
|
# OS/editor
|
|
.DS_Store
|
|
.idea/
|
|
.vscode/
|
|
.npmrc
|
|
# emacs cache files
|
|
*~
|
|
\#*\#
|
|
.\#*
|
|
docker-compose.override.yml
|
|
|
|
# cypress e2e artifacts
|
|
e2e/**/cypress/videos/
|
|
e2e/**/cypress/screenshots/
|
|
e2e/**/cypress/reports/
|
|
e2e/**/cypress/downloads/
|
|
|
|
# e2e launcher state (ports of the running stack)
|
|
e2e/freight/.e2e-ports.json
|
|
|
|
# local run scripts (contain personal DB credentials — never commit)
|
|
run-passenger-local.sh
|
|
run-passenger-web.sh
|
|
|
|
# generated test output
|
|
e2e-ui-report/
|
|
test-results/
|
|
playwright-report/
|
|
blob-report/
|
|
RUNNING_LOCALLY.md
|
|
|
|
# Generated per-shard compose file for the integration suite (it.mjs).
|
|
integration/.it-shards.yaml
|
|
|
|
# private keys / certificates (EIMS INSA credentials and anything like them) — never commit
|
|
*.key
|
|
*.pem
|
|
*.pem.txt
|
|
*.p12
|
|
*.pfx
|
|
*.crt
|
|
secrets/
|
|
certs/
|