@@ -5,9 +5,40 @@ All notable changes to this project will be documented in this file.
55The format is based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.0.0/ ) ,
66and this project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
77
8+ ## [ 0.7.0] - 2026-02-11
9+
10+ ### Added
11+
12+ - ** Commodities Resource** : ` client.commodities.list() ` , ` get() ` , ` categories() ` for commodity catalog discovery
13+ - ** Futures Resource** : ` client.futures.latest() ` , ` historical() ` , ` ohlc() ` , ` intraday() ` , ` spreads() ` , ` curve() ` , ` continuous() ` for futures contract data
14+ - ** Storage Resource** : ` client.storage.all() ` , ` cushing() ` , ` spr() ` , ` regional() ` for oil inventory levels
15+ - ** Rig Counts Resource** : ` client.rigCounts.current() ` , ` historical() ` , ` latest() ` , ` summary() ` for Baker Hughes rig count data
16+ - ** Bunker Fuels Resource** : ` client.bunkerFuels.all() ` , ` port() ` , ` compare() ` , ` spreads() ` , ` historical() ` , ` export() ` for marine fuel prices
17+ - ** Analytics Resource** : ` client.analytics.performance() ` , ` statistics() ` , ` correlation() ` , ` trend() ` , ` spread() ` , ` forecast() ` for price analytics
18+ - ** Forecasts Resource** : ` client.forecasts.monthly() ` , ` accuracy() ` , ` archive() ` , ` get() ` for EIA monthly price forecasts
19+ - ** Data Quality Resource** : ` client.dataQuality.summary() ` , ` reports() ` , ` report() ` for data quality monitoring
20+ - ** Drilling Intelligence Resource** : ` client.drilling.latest() ` , ` summary() ` , ` trends() ` , ` fracSpreads() ` , ` wellPermits() ` , ` ducWells() ` , ` completions() ` , ` wellsDrilled() ` , ` basin() ` for drilling activity data
21+ - ** Energy Intelligence Resource** : ` client.ei ` with 7 sub-resources: ` rigCounts ` , ` oilInventories ` , ` opecProduction ` , ` drillingProductivity ` , ` forecasts ` , ` wellPermits ` , ` fracFocus ` for comprehensive EIA data
22+ - ** Webhooks Resource** : ` client.webhooks.create() ` , ` list() ` , ` get() ` , ` update() ` , ` delete() ` , ` test() ` , ` events() ` for webhook management
23+ - ** Data Sources Resource** : ` client.dataSources.list() ` , ` get() ` , ` create() ` , ` update() ` , ` delete() ` , ` test() ` , ` logs() ` , ` health() ` for data connector management
24+ - ** Enhanced Alerts** : Added ` test() ` , ` triggers() ` , ` analyticsHistory() ` methods to existing alerts resource
25+ - ** Data Connector Support** : ` client.getDataConnectorPrices() ` for BYOS (Bring Your Own Subscription) prices
26+ - ** Telemetry Headers** : ` appUrl ` and ` appName ` options for API usage attribution
27+
28+ ### Testing
29+
30+ - 70 new unit tests added (185 total, 0 failures)
31+ - 13 new test files covering all resource modules
32+ - All tests pass with TypeScript strict mode
33+
34+ ### Breaking Changes
35+
36+ None - All new resources are additive. Existing code continues to work unchanged.
37+
838## [ 0.6.0] - 2025-12-24
939
1040### Added
41+
1142- ** PERFORMANCE** : Added ` interval ` parameter to ` getHistoricalPrices() ` for aggregated queries
1243 - ` 'raw' ` - Individual price points (default, can be slow for year-long queries)
1344 - ` 'hourly' ` - Hourly averages
@@ -19,52 +50,62 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1950- New TypeScript type: ` AggregationInterval `
2051
2152### Performance Improvements
53+
2254- Year-long queries improved from 74+ seconds to <1 second when using ` interval: 'daily' `
2355- Example: ` getHistoricalPrices({ period: 'past_year', commodity: 'BRENT_CRUDE_USD', interval: 'daily' }) `
2456
2557### Testing
58+
2659- Added 7 new tests for interval and pagination parameters
2760- All 118 tests passing
2861
2962### Breaking Changes
63+
3064None - This is a backwards-compatible feature addition. Existing code continues to work.
3165
3266## [ 0.5.3] - 2025-12-17
3367
3468### Fixed
69+
3570- ** CRITICAL** : Fixed historical date range queries returning incorrect dates
3671 - Changed ` getHistoricalPrices() ` to use ` /v1/prices/past_year ` endpoint instead of ` /v1/prices `
3772 - The ` /v1/prices ` endpoint was not correctly handling ` start_date ` /` end_date ` parameters
3873 - This was the same bug that affected the Python SDK (fixed in v1.4.4)
3974 - Users requesting data for specific date ranges now receive correct results
4075
4176### Testing
77+
4278- Added comprehensive test suite for historical price queries (22 new tests)
4379- Added error handling test suite (31 new tests)
4480- Test coverage now at 95%+ for all source files
4581
4682### Breaking Changes
83+
4784None - This is a bug fix that corrects behavior to match documentation.
4885
4986## [ 0.5.2] - 2025-12-17
5087
5188### Added
89+
5290- Centralized version management in ` src/version.ts `
5391- Export ` SDK_VERSION ` and ` SDK_NAME ` constants for tracking
5492- User-Agent header: ` oilpriceapi-node/{version} node/{node_version} `
5593- ` X-Api-Client ` and ` X-Client-Version ` headers for SDK tracking
5694
5795### Testing
96+
5897- Added integration tests for User-Agent header verification (11 tests)
5998
6099## [ 0.5.1] - 2025-12-16
61100
62101### Added
102+
63103- Minor improvements to diesel and alerts resources
64104
65105## [ 0.5.0] - 2025-12-15
66106
67107### Added
108+
68109- ** Price Alerts** : New ` client.alerts ` resource for automated price monitoring with webhook notifications
69110- ** Alert Management** : Full CRUD operations for price alerts
70111 - ` alerts.list() ` - Get all configured alerts
@@ -86,6 +127,7 @@ None - This is a bug fix that corrects behavior to match documentation.
86127- Detailed error handling with clear validation messages
87128
88129### Documentation
130+
89131- Added complete Price Alerts section to README with examples
90132- Added CRUD operation examples for alerts
91133- Added webhook payload documentation
@@ -94,14 +136,17 @@ None - This is a bug fix that corrects behavior to match documentation.
94136- Added API reference for alert limits and constraints
95137
96138### Testing
139+
97140- Added comprehensive test suite for alerts resource (24 test cases)
98141- Tests cover all CRUD operations and validation scenarios
99142- 100% coverage of alerts functionality
100143- Tests for all 5 alert operators
101144- Validation tests for name, commodity code, operator, value, webhook URL, and cooldown
102145
103146### Supported Endpoints
147+
104148Now supports ** 12 endpoints** (up from 7):
149+
105150- ` GET /v1/prices/latest ` - Get latest commodity prices
106151- ` GET /v1/prices ` - Get historical commodity prices
107152- ` GET /v1/commodities ` - Get all commodities metadata
@@ -116,11 +161,13 @@ Now supports **12 endpoints** (up from 7):
116161- ` DELETE /v1/alerts/{id} ` - Delete alert (NEW)
117162
118163### Breaking Changes
164+
119165None - This is a backwards-compatible feature addition.
120166
121167## [ 0.4.0] - 2025-12-15
122168
123169### Added
170+
124171- ** Diesel Prices Support** : New ` client.diesel ` resource for diesel price data
125172- ** State Average Diesel Prices** : ` diesel.getPrice(state) ` - Get EIA state-level diesel averages (free tier)
126173- ** Station-Level Diesel Pricing** : ` diesel.getStations(options) ` - Get nearby diesel stations with current prices from Google Maps (paid tiers)
@@ -129,19 +176,23 @@ None - This is a backwards-compatible feature addition.
129176- Detailed error handling for tier restrictions (403) and rate limits (429)
130177
131178### Documentation
179+
132180- Added diesel prices usage examples to README
133181- Added API reference section for ` client.diesel ` resource
134182- Added complete type definitions for all diesel-related interfaces
135183- Updated Quick Examples section with diesel examples
136184- Updated feature list to highlight diesel prices support
137185
138186### Testing
187+
139188- Added comprehensive test suite for diesel resource (15 test cases)
140189- Tests cover input validation, error handling, and API responses
141190- 100% coverage of diesel functionality
142191
143192### Supported Endpoints
193+
144194Now supports ** 7 endpoints** (up from 5):
195+
145196- ` GET /v1/prices/latest ` - Get latest commodity prices
146197- ` GET /v1/prices ` - Get historical commodity prices
147198- ` GET /v1/commodities ` - Get all commodities metadata
@@ -151,35 +202,42 @@ Now supports **7 endpoints** (up from 5):
151202- ` POST /v1/diesel-prices/stations ` - Get nearby diesel stations (NEW)
152203
153204### Breaking Changes
205+
154206None - This is a backwards-compatible feature addition.
155207
156208## [ 0.3.1] - 2025-11-26
157209
158210### Fixed
211+
159212- ** Fixed QA test** to use correct API response fields (` price ` instead of ` value ` , ` formatted ` instead of ` code + name ` )
160213- ** Updated README examples** to match actual API response structure
161214- ** Corrected blog post examples** for accuracy
162215- Verified 100% test pass rate (7/7 tests passing)
163216
164217### Documentation
218+
165219- All code examples now use correct fields: ` price ` , ` formatted ` , ` code ` , ` created_at `
166220- Removed references to non-existent ` name ` , ` value ` , and ` unit ` fields in latest prices response
167221- Added clarification on timeout configuration for historical data queries (120s recommended)
168222
169223### Testing
224+
170225- Historical prices endpoint working correctly with 120s timeout
171226- All 5 endpoints tested and verified against live API
172227
173228## [ 0.3.0] - 2024-11-25
174229
175230### Added
231+
176232- ** Commodities Endpoint** : ` getCommodities() ` - Get metadata for all supported commodities
177233- ** Commodity Categories** : ` getCommodityCategories() ` - Get all commodity categories with their commodities
178234- ** Commodity Details** : ` getCommodity(code) ` - Get metadata for a specific commodity by code
179235- New TypeScript interfaces: ` Commodity ` , ` CommoditiesResponse ` , ` CommodityCategory ` , ` CategoriesResponse `
180236
181237### Supported Endpoints
238+
182239Now supports ** 5 endpoints** (up from 2):
240+
183241- ` GET /v1/prices/latest ` - Get latest commodity prices
184242- ` GET /v1/prices ` - Get historical commodity prices
185243- ` GET /v1/commodities ` - Get all commodities metadata
@@ -189,6 +247,7 @@ Now supports **5 endpoints** (up from 2):
189247## [ 0.2.0] - 2024-11-24
190248
191249### Added
250+
192251- ** Retry Logic** : Automatic retries with configurable strategies (exponential, linear, fixed)
193252- ** Timeout Handling** : Request timeouts with AbortController
194253- ** Debug Logging** : Optional debug mode for detailed request/response logging
@@ -197,12 +256,15 @@ Now supports **5 endpoints** (up from 2):
197256- ** Rate Limit Handling** : Automatic retry with ` Retry-After ` header support
198257
199258### Changed
259+
200260- User-Agent updated to ` oilpriceapi-node/0.2.0 `
201261- Improved error messages with more context
202262- Better TypeScript type definitions for configuration options
203263
204264### Configuration Options
265+
205266New configuration options available:
267+
206268- ` retries ` : Maximum number of retry attempts (default: 3)
207269- ` retryDelay ` : Initial delay between retries in ms (default: 1000)
208270- ` retryStrategy ` : Retry backoff strategy - 'exponential', 'linear', or 'fixed' (default: 'exponential')
@@ -212,6 +274,7 @@ New configuration options available:
212274## [ 0.1.0] - 2024-11-24
213275
214276### Added
277+
215278- Initial release
216279- Basic API client with TypeScript support
217280- Latest prices endpoint support
@@ -222,6 +285,7 @@ New configuration options available:
222285- Comprehensive README documentation
223286
224287### Supported Endpoints
288+
225289- ` GET /v1/prices/latest ` - Get latest commodity prices
226290- ` GET /v1/prices ` - Get historical commodity prices
227291
0 commit comments