54 lines
2.7 KiB
Markdown
54 lines
2.7 KiB
Markdown
# Tasks — add @suaveplan/currency-provider-ecb
|
|
|
|
## 1. Spec authoring
|
|
|
|
- [x] 1.1 Read `../suaveplan/enterprise/currency-providers.md` end-to-end (ECB row)
|
|
- [x] 1.2 Read slim-core archive `openspec/archive/2026-05-17-slim-currency-providers/`
|
|
- [x] 1.3 Read `openspec/AGENTS.md` §0c, §13, §14
|
|
- [x] 1.4 Draft `proposal.md` with `## Source mapping` and `## Parity Checklist`
|
|
- [x] 1.5 Draft `design.md` with file layout, algorithm, error matrix
|
|
- [x] 1.6 Draft `specs/currency-provider-ecb/spec.md` — every requirement carries `**Verified by:**`
|
|
|
|
## 2. Implementation
|
|
|
|
- [x] 2.1 Create `packages/finance/currency-provider-ecb/` skeleton (package.json, tsconfig, vite.config, vitest.config, tests/setup/polyfills.ts)
|
|
- [x] 2.2 Implement `src/ecb/ecb.ts` — `EcbProvider` class consuming `httpRequest` from slim core
|
|
- [x] 2.3 Wire `FetchLike` from `@suaveplan/types` (NOT re-imported from slim core)
|
|
- [x] 2.4 Raise typed `CurrencyProviderError` with `HTTP_ERROR` / `PARSE_ERROR` / `UNSUPPORTED_BASE` / `UNKNOWN_CURRENCY`
|
|
- [x] 2.5 Forward `RateFetchOptions.signal` through `httpRequest`
|
|
- [x] 2.6 Author `src/ecb/index.ts` + `src/index.ts` explicit named barrels
|
|
- [x] 2.7 Add subpath exports to `package.json` (`.`, `./ecb/ecb`, `./package.json`)
|
|
|
|
## 3. Tests
|
|
|
|
- [x] 3.1 `src/ecb/ecb.test.ts` — every scenario in the spec delta
|
|
- [x] 3.2 Tests import runner primitives from `@suaveplan/testing/runner`
|
|
- [x] 3.3 No `vi.mock` / `vi.stubGlobal` — use injected `FetchLike` closure
|
|
- [x] 3.4 Every `it(...)` carries `{ timeout: 5000 }`
|
|
|
|
## 4. Documentation
|
|
|
|
- [x] 4.1 Sibling `src/ecb/ecb.md` (≥200 words, basic + advanced examples, full API)
|
|
- [x] 4.2 `README.md` with Install + Quick start + Modules section linking `src/ecb/ecb.md`
|
|
|
|
## 5. Pre-archive verification (5-gate triple)
|
|
|
|
- [x] 5.1 `bunx turbo lint typecheck test --filter=@suaveplan/currency-provider-ecb` — green
|
|
- [x] 5.2 `bunx turbo test:coverage --filter=@suaveplan/currency-provider-ecb` — 100/100/100/100
|
|
- [x] 5.3 `bunx turbo build --filter=@suaveplan/currency-provider-ecb` — green
|
|
- [x] 5.4 Banned-pattern scan zero output
|
|
- [x] 5.5 Barrel-shape scan zero output (no `export *` in feature barrels)
|
|
- [x] 5.6 Test-runner import scan zero output
|
|
|
|
## 6. Root-doc refresh (§13b)
|
|
|
|
- [x] 6.1 Add row to `STATUS.md` under Completed
|
|
- [x] 6.2 Add paragraph to `SUMMARY.md`
|
|
- [x] 6.3 Regenerate `MANIFEST.md` (`bun scripts/folder-reorg/generate-manifest.ts`)
|
|
- [x] 6.4 Regenerate `MISSING.yml` (`bun scripts/generate-missing.ts`) — skip if generator fails
|
|
|
|
## 7. Archive
|
|
|
|
- [ ] 7.1 Fold `specs/currency-provider-ecb/spec.md` into `openspec/specs/currency-provider-ecb/spec.md`
|
|
- [ ] 7.2 Move `openspec/changes/add-currency-provider-ecb/` → `openspec/archive/2026-05-17-add-currency-provider-ecb/`
|