2.2 KiB
2.2 KiB
Tasks — add-currency-provider-coinmarketcap
- Scaffold
packages/finance/currency-provider-coinmarketcap/(package.json0.1.0, tsconfig, vite, vitest, README, polyfills setup). - Implement
src/coinmarketcap/coinmarketcap.ts—CoinMarketCapProviderclass implementingCurrencyProvider, constructor acceptsApiKeyConfig, validatesapiKeynon-empty (MISSING_CONFIG), exposesname = "coinmarketcap",supportsCrypto = true,supportsFiat = false. - Wire
fetchRates(options?)through the sharedhttpRequest()helper withX-CMC_PRO_API_KEY+Accept: application/jsonheaders; forward callersignal. - Parse upstream JSON, invert prices (1/price) into the rate map, raise
PARSE_ERRORon malformed shape, raiseUPSTREAM_ERRORonstatus.error_code, raiseUNKNOWN_CURRENCYwhen no requested symbol resolved. - Sibling
.mdfiles for every implementation.ts(Purpose / Features / Basic / Advanced / API Reference / Implementation Notes — ≥200 words excluding code). - Tests in
src/coinmarketcap/coinmarketcap.test.tscovering: happy path, default target list, custom base + targets, missing apiKey, HTTP error mapping, parse-error (invalid JSON, non-object data), upstream-error (status.error_code populated), unknown-currency (no symbol resolved), abort-signal forwarding, defaultbaseUrl, defaultglobalThis.fetchfallback. Allit()blocks carry{ timeout: 5000 }. - Runner imports from
@suaveplan/testing/runneronly (zerofrom "vitest"/from "bun:test"). - Subpath exports for
.and./coinmarketcap/coinmarketcap. - Pre-publish gate green:
bunx turbo lint typecheck test --filter=@suaveplan/currency-provider-coinmarketcapANDbunx turbo test:coverage --filter=@suaveplan/currency-provider-coinmarketcapat 100/100/100/100. - Banned-pattern scan zero; barrel-shape scan zero; runner-import scan zero; missing-
.mdscan zero. - Refresh
MANIFEST.md(bun scripts/folder-reorg/generate-manifest.ts),MISSING.yml(bun scripts/generate-missing.ts),STATUS.md,SUMMARY.md. - Run
bunx markdownlint-cli2 --fix; verify clean. - Fold
specs/currency-provider-coinmarketcap/spec.mdintoopenspec/specs/currency-provider-coinmarketcap/spec.mdand archive change folder.