Initial Commit
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# Tasks — Add @suaveplan/currency-provider-cryptocompare
|
||||
|
||||
## Spec-completeness preflight (AGENTS.md §12a)
|
||||
|
||||
- [x] Numbered checklist of every `### Requirement` and `#### Scenario`
|
||||
drafted in `specs/currency-provider-cryptocompare/spec.md`
|
||||
(4 requirements, 11 scenarios).
|
||||
|
||||
## Package scaffolding
|
||||
|
||||
- [x] Create `packages/finance/currency-provider-cryptocompare/` with
|
||||
`package.json` (`0.1.0`, sibling deps on slim core / currency /
|
||||
types / error / tslib), `tsconfig.json`, `tsconfig.lib.json`,
|
||||
`vite.config.ts`, `vitest.config.ts`.
|
||||
- [x] Create `tests/setup/polyfills.ts` no-op shim mirroring sibling
|
||||
packages.
|
||||
|
||||
## Implementation
|
||||
|
||||
- [x] `src/cryptocompare/cryptocompare.ts` — `CryptoCompareConfig`
|
||||
(extends `NoKeyConfig` with optional `apiKey`), `CryptoCompareProvider`
|
||||
class implementing `CurrencyProvider`. Defaults: `name =
|
||||
"cryptocompare"`, `supportsCrypto = true`, `supportsFiat = false`,
|
||||
base `"USD"`, 15-symbol default `targets`.
|
||||
- [x] Optional `apiKey` attached via `authorization: Apikey <key>` header
|
||||
on every request when present and non-whitespace.
|
||||
- [x] Error mapping: `HTTP_ERROR` (shared `httpRequest`), `PARSE_ERROR`
|
||||
(invalid JSON / non-object payload), `UPSTREAM_ERROR`
|
||||
(`Response === "Error"`), `UNKNOWN_CURRENCY` (no positive quotes).
|
||||
- [x] `src/cryptocompare/index.ts` explicit-named barrel.
|
||||
- [x] `src/index.ts` explicit-named root barrel.
|
||||
|
||||
## Tests
|
||||
|
||||
- [x] `src/cryptocompare/cryptocompare.test.ts` — runner imports from
|
||||
`@suaveplan/testing/runner`, recording `FetchLike`, 14 cases
|
||||
covering: metadata, default invert + zero-skip + USD default,
|
||||
keyless vs keyed header, whitespace-only key treated as absent,
|
||||
custom `baseUrl` + explicit targets, empty `targets` falls back to
|
||||
defaults, `HTTP_ERROR`, `PARSE_ERROR` (invalid JSON), `PARSE_ERROR`
|
||||
(non-object payload), `UPSTREAM_ERROR` (with `Message`),
|
||||
`UPSTREAM_ERROR` (no `Message` → default message),
|
||||
`UNKNOWN_CURRENCY` (empty map), `UNKNOWN_CURRENCY` (every quote
|
||||
non-finite or non-positive), `AbortSignal` forwarding. Every test
|
||||
carries `{ timeout: 5000 }`.
|
||||
|
||||
## Documentation
|
||||
|
||||
- [x] `src/cryptocompare/cryptocompare.md` sibling doc (≥200 words,
|
||||
Purpose / Features / Usage Basic / Usage Advanced / API Reference /
|
||||
Implementation Notes).
|
||||
- [x] Root `README.md` (install, quick start, modules link, error table).
|
||||
|
||||
## Pre-archive gates (AGENTS.md §13)
|
||||
|
||||
- [x] Step 0 — spec reconciliation: every `### Requirement` and
|
||||
`**Verified by:**` resolves to a real file + verbatim test name.
|
||||
- [x] Step 1 — `bunx turbo lint typecheck test --filter=@suaveplan/currency-provider-cryptocompare`
|
||||
green.
|
||||
- [x] Step 2 — `bunx turbo test:coverage --filter=@suaveplan/currency-provider-cryptocompare`
|
||||
reports 100/100/100/100 via istanbul.
|
||||
- [x] Step 3 — `bunx turbo build --filter=@suaveplan/currency-provider-cryptocompare`
|
||||
green.
|
||||
- [x] Step 4 — banned-pattern grep returns zero.
|
||||
- [x] Step 4a — barrel-shape grep returns zero (`src/index.ts` exempt).
|
||||
- [x] Step 4b — test-runner-import grep returns zero.
|
||||
- [x] Step 5 — missing-`.md` grep returns zero.
|
||||
- [x] Step 6 — README present.
|
||||
- [x] Step 7 — bare-version grep returns zero.
|
||||
- [x] Step 8 — subpath-export count = 1 (`./cryptocompare/cryptocompare`).
|
||||
- [x] Step 9 — security-scan grep returns zero.
|
||||
- [x] Step 10 — no dependents (new package).
|
||||
|
||||
## Root-doc refresh (AGENTS.md §13b)
|
||||
|
||||
- [x] Re-run `bun scripts/folder-reorg/generate-manifest.ts` to refresh
|
||||
`MANIFEST.md`.
|
||||
- [x] Re-run `bun scripts/generate-missing.ts` to refresh `MISSING.yml`.
|
||||
- [x] Update `STATUS.md` row for `@suaveplan/currency-provider-cryptocompare`.
|
||||
- [x] Update `SUMMARY.md` row likewise.
|
||||
- [x] `bunx markdownlint-cli2 --fix` across touched root + change files.
|
||||
|
||||
## Archive (AGENTS.md §14)
|
||||
|
||||
- [x] Fold `specs/currency-provider-cryptocompare/spec.md` into
|
||||
`openspec/specs/currency-provider-cryptocompare/spec.md`.
|
||||
- [x] Move change folder to
|
||||
`openspec/archive/2026-05-17-add-currency-provider-cryptocompare/`.
|
||||
Reference in New Issue
Block a user