token-costs 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,20 +7,22 @@ Daily-updated LLM pricing data for OpenAI, Anthropic, Google, and OpenRouter.
7
7
  An npm package and JSON API that gives you up-to-date token pricing for major LLM providers. Stop hardcoding prices or manually checking pricing pages.
8
8
 
9
9
  ```typescript
10
- import { getModelPricing, calculateCost } from 'token-costs';
10
+ import { PricingClient } from 'token-costs';
11
11
 
12
- // Get pricing info for a model
13
- const pricing = await getModelPricing('openai', 'gpt-4o');
14
- // { input: 2.5, output: 10, context: 128000 }
15
- ```
12
+ // Create a client (fetches from remote API)
13
+ const client = new PricingClient();
16
14
 
17
- ```typescript
18
- // Or calculate cost directly (fetches pricing automatically)
19
- const cost = await calculateCost('anthropic', 'claude-sonnet-4', {
15
+ // Get pricing for a model
16
+ const result = await client.getModelPricing('openai', 'gpt-4o');
17
+ console.log(`Input: $${result.pricing.input}/M tokens`);
18
+ console.log(`Output: $${result.pricing.output}/M tokens`);
19
+
20
+ // Calculate cost for an API call
21
+ const cost = await client.calculateCost('anthropic', 'claude-sonnet-4', {
20
22
  inputTokens: 1500,
21
23
  outputTokens: 800,
22
24
  });
23
- // { totalCost: 0.0165, ... }
25
+ console.log(`Total cost: $${cost.totalCost.toFixed(6)}`);
24
26
  ```
25
27
 
26
28
  Or fetch directly without dependencies:
@@ -33,6 +35,8 @@ const data = await fetch('https://mikkotikkanen.github.io/token-costs/api/v1/ope
33
35
 
34
36
  - **Daily updates** - Crawled automatically at 00:01 UTC
35
37
  - **4 providers** - OpenAI, Anthropic, Google, OpenRouter
38
+ - **Custom providers** - Add your own models or override pricing
39
+ - **Offline mode** - Work without network access using custom data
36
40
  - **Zero dependencies** - npm package has no runtime dependencies
37
41
  - **TypeScript** - Full type definitions included
38
42
  - **Caching** - Fetches once per day, caches automatically
@@ -44,6 +48,34 @@ const data = await fetch('https://mikkotikkanen.github.io/token-costs/api/v1/ope
44
48
  npm install token-costs
45
49
  ```
46
50
 
51
+ ## Custom Providers & Offline Mode
52
+
53
+ Add custom models or use entirely custom pricing data:
54
+
55
+ ```typescript
56
+ // Add custom models alongside remote data
57
+ const client = new PricingClient({
58
+ customProviders: {
59
+ 'my-company': {
60
+ 'internal-llm': { input: 0.50, output: 1.00 }
61
+ },
62
+ 'openai': {
63
+ 'gpt-4-custom': { input: 25, output: 50 } // Override/add to openai
64
+ }
65
+ }
66
+ });
67
+
68
+ // Offline mode - no remote fetching
69
+ const offlineClient = new PricingClient({
70
+ offline: true,
71
+ customProviders: {
72
+ 'openai': {
73
+ 'gpt-4o': { input: 2.5, output: 10 }
74
+ }
75
+ }
76
+ });
77
+ ```
78
+
47
79
  ## Documentation
48
80
 
49
81
  Full usage guide, API reference, and data formats: **[mikkotikkanen.github.io/token-costs](https://mikkotikkanen.github.io/token-costs)**
@@ -53,8 +85,6 @@ Full usage guide, API reference, and data formats: **[mikkotikkanen.github.io/to
53
85
  ```
54
86
  token-costs/
55
87
  ├── PricingClient # Main client class with caching
56
- ├── getModelPricing() # Quick lookup function
57
- ├── calculateCost() # Cost calculation helper
58
88
  └── TypeScript types # Full type definitions
59
89
  ```
60
90
 
@@ -19,7 +19,7 @@ export declare class ClockMismatchError extends Error {
19
19
  *
20
20
  * @example
21
21
  * ```ts
22
- * import { PricingClient } from 'token-prices';
22
+ * import { PricingClient } from 'token-costs';
23
23
  *
24
24
  * const client = new PricingClient();
25
25
  *
@@ -41,7 +41,13 @@ export declare class PricingClient {
41
41
  private timeOffsetMs;
42
42
  private cache;
43
43
  private externalCache?;
44
+ private offline;
45
+ private customProviders;
44
46
  constructor(options?: PricingClientOptions);
47
+ /**
48
+ * Check if a provider is a built-in provider with remote data
49
+ */
50
+ private isBuiltInProvider;
45
51
  /**
46
52
  * Get today's date according to this client (with offset applied)
47
53
  */
@@ -58,6 +64,14 @@ export declare class PricingClient {
58
64
  * Save to external cache
59
65
  */
60
66
  private saveToExternalCache;
67
+ /**
68
+ * Get custom provider data as a ProviderFile structure
69
+ */
70
+ private getCustomProviderFile;
71
+ /**
72
+ * Merge custom provider data into a ProviderFile
73
+ */
74
+ private mergeCustomData;
61
75
  /**
62
76
  * Fetch provider data, using cache if available and fresh
63
77
  */
@@ -116,20 +130,4 @@ export declare class PricingClient {
116
130
  */
117
131
  clearCache(provider?: Provider): void;
118
132
  }
119
- /**
120
- * Get the default client instance
121
- */
122
- export declare function getDefaultClient(): PricingClient;
123
- /**
124
- * Convenience function to get model pricing using default client
125
- */
126
- export declare function getModelPricing(provider: Provider, modelId: string): Promise<PriceLookupResult>;
127
- /**
128
- * Convenience function to calculate cost using default client
129
- */
130
- export declare function calculateCost(provider: Provider, modelId: string, tokens: {
131
- inputTokens: number;
132
- outputTokens: number;
133
- cachedInputTokens?: number;
134
- }): Promise<CostResult>;
135
133
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/npm/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EAEZ,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AA4BpB;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;aAChB,QAAQ,EAAE,MAAM;gBAFhB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;CASnC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,aAAa,CAAC,CAAwC;gBAElD,OAAO,GAAE,oBAAyB;IAO9C;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;YACW,qBAAqB;IAcnC;;OAEG;YACW,mBAAmB;IAUjC;;OAEG;YACW,aAAa;IAsD3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;;;;OAOG;IACG,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyBtF;;OAEG;IACG,qBAAqB,CACzB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAQpC;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAKlF;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKvD;;;;;;;;;OASG;IACG,aAAa,CACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GACA,OAAO,CAAC,UAAU,CAAC;IAqCtB;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAInE;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI;IAKhD;;OAEG;IACH,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;CAOtC;AAOD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC,CAE5B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;IACN,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACA,OAAO,CAAC,UAAU,CAAC,CAErB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/npm/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,QAAQ,EAER,YAAY,EAEZ,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EAEX,MAAM,YAAY,CAAC;AA4BpB;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;aAChB,QAAQ,EAAE,MAAM;gBAFhB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;CASnC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,aAAa,CAAC,CAAwC;IAC9D,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,eAAe,CAAuC;gBAElD,OAAO,GAAE,oBAAyB;IAS9C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;YACW,qBAAqB;IAcnC;;OAEG;YACW,mBAAmB;IAUjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;YACW,aAAa;IAgF3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;;;;OAOG;IACG,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyBtF;;OAEG;IACG,qBAAqB,CACzB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAQpC;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAKlF;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKvD;;;;;;;;;OASG;IACG,aAAa,CACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GACA,OAAO,CAAC,UAAU,CAAC;IAqCtB;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAInE;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI;IAKhD;;OAEG;IACH,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;CAOtC"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  // Default URL serves from GitHub Pages when configured, falls back to raw.githubusercontent.com
6
6
  // Users can override with their own GitHub Pages URL via baseUrl option
7
- const DEFAULT_BASE_URL = 'https://raw.githubusercontent.com/mikkotikkanen/token-prices/main/docs/api/v1';
7
+ const DEFAULT_BASE_URL = 'https://raw.githubusercontent.com/mikkotikkanen/token-costs/main/docs/api/v1';
8
8
  /**
9
9
  * Get UTC date as YYYY-MM-DD with optional offset
10
10
  */
@@ -43,7 +43,7 @@ export class ClockMismatchError extends Error {
43
43
  *
44
44
  * @example
45
45
  * ```ts
46
- * import { PricingClient } from 'token-prices';
46
+ * import { PricingClient } from 'token-costs';
47
47
  *
48
48
  * const client = new PricingClient();
49
49
  *
@@ -65,11 +65,21 @@ export class PricingClient {
65
65
  timeOffsetMs;
66
66
  cache = new Map();
67
67
  externalCache;
68
+ offline;
69
+ customProviders;
68
70
  constructor(options = {}) {
69
71
  this.baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
70
72
  this.fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
71
73
  this.timeOffsetMs = options.timeOffsetMs ?? 0;
72
74
  this.externalCache = options.externalCache;
75
+ this.offline = options.offline ?? false;
76
+ this.customProviders = options.customProviders ?? {};
77
+ }
78
+ /**
79
+ * Check if a provider is a built-in provider with remote data
80
+ */
81
+ isBuiltInProvider(provider) {
82
+ return ['openai', 'anthropic', 'google', 'openrouter'].includes(provider);
73
83
  }
74
84
  /**
75
85
  * Get today's date according to this client (with offset applied)
@@ -81,7 +91,7 @@ export class PricingClient {
81
91
  * Get cache key for external cache
82
92
  */
83
93
  getCacheKey(provider) {
84
- return `token-prices:${provider}`;
94
+ return `token-costs:${provider}`;
85
95
  }
86
96
  /**
87
97
  * Try to load from external cache
@@ -113,11 +123,63 @@ export class PricingClient {
113
123
  // External cache failed, continue without it
114
124
  }
115
125
  }
126
+ /**
127
+ * Get custom provider data as a ProviderFile structure
128
+ */
129
+ getCustomProviderFile(provider) {
130
+ const customModels = this.customProviders[provider];
131
+ if (!customModels)
132
+ return null;
133
+ return {
134
+ current: {
135
+ date: this.getToday(),
136
+ models: customModels,
137
+ },
138
+ };
139
+ }
140
+ /**
141
+ * Merge custom provider data into a ProviderFile
142
+ */
143
+ mergeCustomData(file, provider) {
144
+ const customModels = this.customProviders[provider];
145
+ if (!customModels)
146
+ return file;
147
+ return {
148
+ ...file,
149
+ current: {
150
+ ...file.current,
151
+ models: {
152
+ ...file.current.models,
153
+ ...customModels, // Custom takes precedence
154
+ },
155
+ },
156
+ };
157
+ }
116
158
  /**
117
159
  * Fetch provider data, using cache if available and fresh
118
160
  */
119
161
  async fetchProvider(provider) {
120
162
  const today = this.getToday();
163
+ const isBuiltIn = this.isBuiltInProvider(provider);
164
+ const hasCustomData = provider in this.customProviders;
165
+ // Offline mode: only use custom data
166
+ if (this.offline) {
167
+ const customFile = this.getCustomProviderFile(provider);
168
+ if (customFile) {
169
+ return customFile;
170
+ }
171
+ throw new Error(`Provider '${provider}' not found. In offline mode, only customProviders data is available.`);
172
+ }
173
+ // Custom-only provider (not built-in): return custom data directly
174
+ if (!isBuiltIn) {
175
+ const customFile = this.getCustomProviderFile(provider);
176
+ if (customFile) {
177
+ return customFile;
178
+ }
179
+ throw new Error(`Provider '${provider}' not found. Use a built-in provider (openai, anthropic, google, openrouter) ` +
180
+ `or add it to customProviders.`);
181
+ }
182
+ // Built-in provider: fetch from remote (with caching)
121
183
  // Check in-memory cache first
122
184
  let cached = this.cache.get(provider);
123
185
  // If no in-memory cache, try external cache
@@ -131,7 +193,7 @@ export class PricingClient {
131
193
  }
132
194
  // If we have cached data from today, use it (don't fetch again)
133
195
  if (cached && cached.fetchedDate === today) {
134
- return cached.data;
196
+ return this.mergeCustomData(cached.data, provider);
135
197
  }
136
198
  // Try to fetch fresh data
137
199
  const url = `${this.baseUrl}/${provider}.json`;
@@ -139,7 +201,7 @@ export class PricingClient {
139
201
  if (!response.ok) {
140
202
  // If fetch fails but we have cached data, use it
141
203
  if (cached) {
142
- return cached.data;
204
+ return this.mergeCustomData(cached.data, provider);
143
205
  }
144
206
  throw new Error(`Failed to fetch pricing data for ${provider}: ${response.status}`);
145
207
  }
@@ -157,7 +219,7 @@ export class PricingClient {
157
219
  const entry = { data, fetchedDate: today };
158
220
  this.cache.set(provider, entry);
159
221
  await this.saveToExternalCache(provider, entry);
160
- return data;
222
+ return this.mergeCustomData(data, provider);
161
223
  }
162
224
  /**
163
225
  * Get the effective pricing data, handling the dual-date fallback
@@ -284,29 +346,4 @@ export class PricingClient {
284
346
  }
285
347
  }
286
348
  }
287
- /**
288
- * Default client instance for convenience
289
- */
290
- let defaultClient = null;
291
- /**
292
- * Get the default client instance
293
- */
294
- export function getDefaultClient() {
295
- if (!defaultClient) {
296
- defaultClient = new PricingClient();
297
- }
298
- return defaultClient;
299
- }
300
- /**
301
- * Convenience function to get model pricing using default client
302
- */
303
- export async function getModelPricing(provider, modelId) {
304
- return getDefaultClient().getModelPricing(provider, modelId);
305
- }
306
- /**
307
- * Convenience function to calculate cost using default client
308
- */
309
- export async function calculateCost(provider, modelId, tokens) {
310
- return getDefaultClient().calculateCost(provider, modelId, tokens);
311
- }
312
349
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/npm/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/npm/client.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,43 @@
1
1
  /**
2
- * Token Prices - Daily LLM pricing data
2
+ * Token Costs - Daily LLM pricing data
3
3
  *
4
4
  * @example
5
5
  * ```ts
6
- * import { getModelPricing, calculateCost } from 'token-prices';
6
+ * import { PricingClient } from 'token-costs';
7
+ *
8
+ * // Create a client (fetches from remote API)
9
+ * const client = new PricingClient();
7
10
  *
8
11
  * // Get pricing for a model
9
- * const result = await getModelPricing('openai', 'gpt-4o');
12
+ * const result = await client.getModelPricing('openai', 'gpt-4o');
10
13
  * console.log(`Input: $${result.pricing.input}/M tokens`);
11
14
  * console.log(`Output: $${result.pricing.output}/M tokens`);
12
15
  *
13
16
  * // Calculate cost for an API call
14
- * const cost = await calculateCost('anthropic', 'claude-sonnet-4', {
17
+ * const cost = await client.calculateCost('anthropic', 'claude-sonnet-4', {
15
18
  * inputTokens: 1500,
16
19
  * outputTokens: 800,
17
20
  * });
18
21
  * console.log(`Total cost: $${cost.totalCost.toFixed(6)}`);
22
+ *
23
+ * // With custom providers
24
+ * const customClient = new PricingClient({
25
+ * customProviders: {
26
+ * 'my-company': {
27
+ * 'internal-llm': { input: 0.50, output: 1.00 }
28
+ * }
29
+ * }
30
+ * });
31
+ *
32
+ * // Offline mode (no remote fetching)
33
+ * const offlineClient = new PricingClient({
34
+ * offline: true,
35
+ * customProviders: { ... }
36
+ * });
19
37
  * ```
20
38
  *
21
39
  * @packageDocumentation
22
40
  */
23
- export type { ModelPricing, ProviderData, ProviderFile, Provider, PricingClientOptions, PriceLookupResult, CostResult, } from './types.js';
24
- export { PricingClient, ClockMismatchError, getDefaultClient, getModelPricing, calculateCost, } from './client.js';
41
+ export type { ModelPricing, ProviderData, ProviderFile, Provider, BuiltInProvider, PricingClientOptions, PriceLookupResult, CostResult, CustomProviderModels, } from './types.js';
42
+ export { PricingClient, ClockMismatchError } from './client.js';
25
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/npm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,aAAa,GACd,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/npm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
package/dist/npm/index.js CHANGED
@@ -1,25 +1,43 @@
1
1
  /**
2
- * Token Prices - Daily LLM pricing data
2
+ * Token Costs - Daily LLM pricing data
3
3
  *
4
4
  * @example
5
5
  * ```ts
6
- * import { getModelPricing, calculateCost } from 'token-prices';
6
+ * import { PricingClient } from 'token-costs';
7
+ *
8
+ * // Create a client (fetches from remote API)
9
+ * const client = new PricingClient();
7
10
  *
8
11
  * // Get pricing for a model
9
- * const result = await getModelPricing('openai', 'gpt-4o');
12
+ * const result = await client.getModelPricing('openai', 'gpt-4o');
10
13
  * console.log(`Input: $${result.pricing.input}/M tokens`);
11
14
  * console.log(`Output: $${result.pricing.output}/M tokens`);
12
15
  *
13
16
  * // Calculate cost for an API call
14
- * const cost = await calculateCost('anthropic', 'claude-sonnet-4', {
17
+ * const cost = await client.calculateCost('anthropic', 'claude-sonnet-4', {
15
18
  * inputTokens: 1500,
16
19
  * outputTokens: 800,
17
20
  * });
18
21
  * console.log(`Total cost: $${cost.totalCost.toFixed(6)}`);
22
+ *
23
+ * // With custom providers
24
+ * const customClient = new PricingClient({
25
+ * customProviders: {
26
+ * 'my-company': {
27
+ * 'internal-llm': { input: 0.50, output: 1.00 }
28
+ * }
29
+ * }
30
+ * });
31
+ *
32
+ * // Offline mode (no remote fetching)
33
+ * const offlineClient = new PricingClient({
34
+ * offline: true,
35
+ * customProviders: { ... }
36
+ * });
19
37
  * ```
20
38
  *
21
39
  * @packageDocumentation
22
40
  */
23
41
  // Re-export client
24
- export { PricingClient, ClockMismatchError, getDefaultClient, getModelPricing, calculateCost, } from './client.js';
42
+ export { PricingClient, ClockMismatchError } from './client.js';
25
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/npm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAaH,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,aAAa,GACd,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/npm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAeH,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -52,16 +52,54 @@ export interface ProviderFile {
52
52
  previous?: ProviderData;
53
53
  }
54
54
  /**
55
- * Supported providers
55
+ * Built-in providers with remote data
56
56
  */
57
- export type Provider = 'openai' | 'anthropic' | 'google' | 'openrouter';
57
+ export type BuiltInProvider = 'openai' | 'anthropic' | 'google' | 'openrouter';
58
+ /**
59
+ * Provider type - can be a built-in provider or a custom string
60
+ */
61
+ export type Provider = BuiltInProvider | (string & {});
62
+ /**
63
+ * Custom provider data format for offline/custom providers
64
+ * Maps modelId to pricing data
65
+ */
66
+ export type CustomProviderModels = Record<string, ModelPricing>;
58
67
  /**
59
68
  * Options for the pricing client
60
69
  */
61
70
  export interface PricingClientOptions {
62
71
  /**
63
- * Base URL for fetching pricing data
64
- * @default 'https://raw.githubusercontent.com/mikkotikkanen/token-prices/main/docs/api/v1'
72
+ * When true, disables fetching from remote API.
73
+ * Only customProviders data will be available.
74
+ * @default false
75
+ */
76
+ offline?: boolean;
77
+ /**
78
+ * Custom provider data. Can be used to:
79
+ * - Add custom/internal models not in the remote API
80
+ * - Override pricing for existing models
81
+ * - Provide all data locally (with offline: true)
82
+ *
83
+ * Custom data is merged with remote data (custom takes precedence).
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * new PricingClient({
88
+ * customProviders: {
89
+ * 'my-company': {
90
+ * 'internal-llm': { input: 0.50, output: 1.00, context: 32000 }
91
+ * },
92
+ * 'openai': {
93
+ * 'gpt-4-custom': { input: 25, output: 50 } // Override/add to openai
94
+ * }
95
+ * }
96
+ * });
97
+ * ```
98
+ */
99
+ customProviders?: Record<string, CustomProviderModels>;
100
+ /**
101
+ * Base URL for fetching pricing data (ignored if offline: true)
102
+ * @default 'https://raw.githubusercontent.com/mikkotikkanen/token-costs/main/docs/api/v1'
65
103
  */
66
104
  baseUrl?: string;
67
105
  /**
@@ -80,6 +118,7 @@ export interface PricingClientOptions {
80
118
  /**
81
119
  * External cache for persisting fetch timestamps across restarts/instances.
82
120
  * If not provided, uses in-memory cache (lost on restart).
121
+ * Ignored if offline: true.
83
122
  *
84
123
  * This prevents hammering GitHub when:
85
124
  * - Running in serverless (cold starts)
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/npm/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,OAAO,EAAE,YAAY,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,aAAa,CAAC,EAAE;QACd,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;QACvE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC3D,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,OAAO,EAAE,YAAY,CAAC;IACtB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,KAAK,EAAE,OAAO,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/npm/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "token-costs",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "description": "Daily LLM token pricing data with automatic updates",
5
5
  "type": "module",
6
6
  "main": "dist/npm/index.js",
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "repository": {
46
46
  "type": "git",
47
- "url": "https://github.com/mikkotikkanen/token-costs.git"
47
+ "url": "git+https://github.com/mikkotikkanen/token-costs.git"
48
48
  },
49
49
  "homepage": "https://mikkotikkanen.github.io/token-costs",
50
50
  "bugs": {
@@ -66,9 +66,16 @@
66
66
  "author": "Mikko Tikkanen",
67
67
  "license": "MIT",
68
68
  "devDependencies": {
69
+ "@semantic-release/commit-analyzer": "^13.0.1",
70
+ "@semantic-release/git": "^10.0.1",
71
+ "@semantic-release/github": "^12.0.2",
72
+ "@semantic-release/npm": "^13.1.3",
73
+ "@semantic-release/release-notes-generator": "^14.1.0",
69
74
  "@types/node": "^20.10.0",
70
75
  "cheerio": "^1.0.0-rc.12",
71
76
  "node-fetch": "^3.3.2",
77
+ "playwright": "^1.57.0",
78
+ "semantic-release": "^25.0.2",
72
79
  "typescript": "^5.3.0",
73
80
  "vitest": "^1.0.0"
74
81
  },