@openaisdk/billing-sdk-node 1.11.2 → 1.11.4

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
@@ -39,6 +39,7 @@ const billing = new MegaBilling({
39
39
  ### 2. Каталог
40
40
 
41
41
  Тарифы — `products`, цены — `prices`. Код фичи для `access.check` — `Feature.code`.
42
+ `Product.code` приходит из API и обязателен: не вычисляйте его из `metadata`, `name` или `id`.
42
43
  `billing.products.list()` уже возвращает продукты в порядке `sortOrder`.
43
44
 
44
45
  ```ts
@@ -47,7 +48,7 @@ const product = products.data[0]!;
47
48
  const prices = await billing.prices.list({ product: product.id, active: true });
48
49
  const features = await billing.features.list();
49
50
 
50
- console.log(product.name, prices.data[0]?.unitAmountMinor, features.data[0]?.code);
51
+ console.log(product.code, product.name, prices.data[0]?.unitAmountMinor, features.data[0]?.code);
51
52
  ```
52
53
 
53
54
  ### 3. Создать клиента
@@ -134,15 +135,24 @@ async function handleBillingWebhook(request: {
134
135
 
135
136
  ### 6. Спросить доступ перед фичей
136
137
 
137
- Перед платной функцией спрашивайте MegaBilling через `access.retrieve` / `access.check`. Не решайте по статусу оплаты сами.
138
+ Перед платной функцией спрашивайте MegaBilling через `access.retrieve` / `access.check` (alias: `customerAccess`). Не решайте по статусу оплаты сами.
139
+
140
+ Текущий тариф — это `access.product` (id продукта, который действует прямо сейчас). Единственный способ сопоставить его с каталогом — сравнение id. Не ищите тариф по `name` и не собирайте его из metadata.
138
141
 
139
142
  ```ts
140
143
  const access = await billing.access.retrieve(customer.id);
144
+ const products = await billing.products.list({ active: true, limit: 20 });
145
+ const currentProduct = products.data.find((p) => p.id === access.product);
146
+
141
147
  const check = await billing.access.check(customer.id, 'ai_assistant');
142
148
 
143
- console.log(access.status, access.features, check.allowed, check.remaining);
149
+ console.log(access.status, currentProduct?.code, access.features, check.allowed, check.remaining);
144
150
  ```
145
151
 
152
+ - Платный тариф: `product`, `price` и `subscription` заполнены.
153
+ - Бесплатный / default без подписки: `product` — id реального Free-продукта, `price` и `subscription` — `null`.
154
+ - Отложенная смена тарифа не подменяет эти поля, пока не наступит дата применения.
155
+
146
156
  Кэш снимка доступа у себя — нормально (обновляйте по webhook). Источник правды — MegaBilling. При сомнении — свежий `access.retrieve`. Не открывайте доступ только по `successUrl`.
147
157
 
148
158
  ### 7. Отмена и смена тарифа
@@ -184,6 +194,8 @@ const change = await billing.subscriptions.change(
184
194
  console.log(change.confirmationUrl);
185
195
  ```
186
196
 
197
+ Если новая цена совпадает с текущей, preview и change возвращают `BillingError` с `code: 'subscription_price_unchanged'` и HTTP 422 — это ожидаемый отказ, не сбой сервера.
198
+
187
199
  ### По желанию: usage и счета
188
200
 
189
201
  Usage: `meterEvents.create` (повтор защищает `identifier`) и `meterEvents.summary`. Счета: только чтение через `invoices.list` / `invoices.retrieve`.
@@ -199,6 +211,31 @@ await billing.meterEvents.create({
199
211
  const invoices = await billing.invoices.list({ customer: customer.id, limit: 20 });
200
212
  ```
201
213
 
214
+ ## Diagnostics
215
+
216
+ Диагностика работает только на сервере и ничего не печатает:
217
+
218
+ ```ts
219
+ import { diagnostics } from '@openaisdk/billing-sdk-node';
220
+
221
+ const report = await billing.diagnostics.run({ expectedMode: 'test' });
222
+ const safeView = diagnostics.toUiProjection(report);
223
+ ```
224
+
225
+ В браузер передавайте только `safeView`, не API key.
226
+ CLI: `BILLING_API_KEY=bsk_test_... billing-sdk-doctor --json`.
227
+ Опционально: `BILLING_API_URL`, `BILLING_WEBHOOK_SECRET`.
228
+ Флаги: `--customer`, `--feature`, `--webhook-secret`, `--expected-mode`, `--timeout`, `--json`.
229
+
230
+ `pass` — ключ и каталог отвечают. Без customer / feature / webhook secret проверка `skipped`, не `fail`. HTTP 200 при `allowed: false` или пустом снимке доступа — `warn`.
231
+
232
+ | Exit | Значение |
233
+ | ---- | ------------------------------------------- |
234
+ | 0 | `pass`, `warn` или только `skipped` |
235
+ | 1 | `fail` |
236
+ | 2 | ошибка аргументов или нет `BILLING_API_KEY` |
237
+ | 3 | ошибка запуска |
238
+
202
239
  ---
203
240
 
204
241
  ## Ошибки
@@ -213,7 +250,7 @@ try {
213
250
  }
214
251
  ```
215
252
 
216
- `requestId` передайте в поддержку MegaBilling. Неверная подпись webhook — `BillingWebhookVerificationError`.
253
+ `requestId` передайте в поддержку MegaBilling. Неверная подпись webhook — `BillingWebhookVerificationError`. Смена на ту же цену — `subscription_price_unchanged` (422).
217
254
 
218
255
  ---
219
256
 
@@ -233,3 +270,13 @@ try {
233
270
  | `BILLING_API_KEY` | Да | Ключ API из кабинета |
234
271
  | `BILLING_API_URL` | Нет | Адрес API, если он нестандартный |
235
272
  | `MEGABILLING_WEBHOOK_SECRET` | Для событий | Секрет для проверки подписи из кабинета |
273
+
274
+ ---
275
+
276
+ ## Changelog
277
+
278
+ ### 1.12.0
279
+
280
+ - `AccessState` отдаёт идентификаторы текущего тарифа: `product`, `price`, `subscription`. Текущий тариф — сравнение `access.product` с `Product.id`.
281
+ - `Product.code` приходит из API и обязателен; SDK не вычисляет его из metadata, name или id.
282
+ - Preview/change на ту же цену: `BillingError.code === 'subscription_price_unchanged'` (HTTP 422).
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env node
2
+ /* global process */
3
+
4
+ import { MegaBilling } from '../dist/index.js';
5
+
6
+ const USAGE = `Usage: billing-sdk-doctor [options]
7
+
8
+ Options:
9
+ --customer <id>
10
+ --feature <code>
11
+ --webhook-secret <secret> Defaults to BILLING_WEBHOOK_SECRET
12
+ --expected-mode <test|live>
13
+ --timeout <ms>
14
+ --json
15
+ --help
16
+ `;
17
+
18
+ class UsageError extends Error {}
19
+
20
+ function parse(argv) {
21
+ const options = {};
22
+ let json = false;
23
+ for (let index = 0; index < argv.length; index += 1) {
24
+ const flag = argv[index];
25
+ if (flag === '--json') {
26
+ json = true;
27
+ continue;
28
+ }
29
+ if (flag === '--help') return { help: true, json, options };
30
+ if (
31
+ !['--customer', '--feature', '--webhook-secret', '--expected-mode', '--timeout'].includes(flag)
32
+ ) {
33
+ throw new UsageError(`Unknown flag: ${flag}`);
34
+ }
35
+ const value = argv[++index];
36
+ if (!value || value.startsWith('--')) throw new UsageError(`Missing value for ${flag}`);
37
+ if (flag === '--customer') options.customer = value;
38
+ if (flag === '--feature') options.feature = value;
39
+ if (flag === '--webhook-secret') options.webhookSecret = value;
40
+ if (flag === '--expected-mode') {
41
+ if (value !== 'test' && value !== 'live') throw new UsageError('Invalid --expected-mode');
42
+ options.expectedMode = value;
43
+ }
44
+ if (flag === '--timeout') {
45
+ const timeoutMs = Number(value);
46
+ if (!Number.isInteger(timeoutMs) || timeoutMs <= 0) throw new UsageError('Invalid --timeout');
47
+ options.timeoutMs = timeoutMs;
48
+ }
49
+ }
50
+ return { help: false, json, options };
51
+ }
52
+
53
+ function human(report) {
54
+ const lines = [
55
+ `MegaBilling diagnostics: ${report.status.toUpperCase()}`,
56
+ `Mode: ${report.context.mode}`,
57
+ `Key: ${report.context.key.handle}`,
58
+ ];
59
+ if (report.context.project?.name) lines.push(`Project: ${report.context.project.name}`);
60
+ for (const check of report.checks) {
61
+ lines.push(
62
+ `[${check.status.toUpperCase()}] ${check.id}${check.reason ? ` (${check.reason})` : ''}`
63
+ );
64
+ }
65
+ return `${lines.join('\n')}\n`;
66
+ }
67
+
68
+ async function main() {
69
+ const parsed = parse(process.argv.slice(2));
70
+ if (parsed.help) {
71
+ process.stdout.write(USAGE);
72
+ return 0;
73
+ }
74
+
75
+ const apiKey = process.env.BILLING_API_KEY;
76
+ if (!apiKey?.trim()) throw new UsageError('BILLING_API_KEY is required');
77
+ parsed.options.webhookSecret ??= process.env.BILLING_WEBHOOK_SECRET;
78
+
79
+ const billing = new MegaBilling({
80
+ apiKey,
81
+ baseUrl: process.env.BILLING_API_URL,
82
+ timeoutMs: parsed.options.timeoutMs,
83
+ });
84
+ const report = await billing.diagnostics.run(parsed.options);
85
+ process.stdout.write(parsed.json ? `${JSON.stringify(report)}\n` : human(report));
86
+ return report.status === 'fail' ? 1 : 0;
87
+ }
88
+
89
+ main()
90
+ .then((code) => {
91
+ process.exitCode = code;
92
+ })
93
+ .catch((error) => {
94
+ const usage = error instanceof UsageError;
95
+ process.stderr.write(`${error instanceof Error ? error.message : 'Startup failed'}\n`);
96
+ if (usage) process.stderr.write(USAGE);
97
+ process.exitCode = usage ? 2 : 3;
98
+ });
@@ -0,0 +1,46 @@
1
+ import type { DiagnosticsOptions, DiagnosticsReport } from './types.js';
2
+ interface ResponseMeta {
3
+ requestId: string | null;
4
+ }
5
+ interface IntegrationContextResponse extends ResponseMeta {
6
+ livemode: boolean;
7
+ mode: 'test' | 'live';
8
+ apiVersion: string;
9
+ project: {
10
+ name: string;
11
+ };
12
+ }
13
+ interface ListResponse<T> extends ResponseMeta {
14
+ data: T[];
15
+ }
16
+ interface ProductShape {
17
+ id: string;
18
+ active: boolean;
19
+ sortOrder: number;
20
+ }
21
+ interface PriceShape {
22
+ product: string;
23
+ active: boolean;
24
+ }
25
+ interface DiagnosticsDependencies {
26
+ apiKey: () => string;
27
+ baseUrl: () => string;
28
+ sdkPackage: '@openaisdk/billing-sdk-node';
29
+ sdkVersion: string;
30
+ context: (timeoutMs?: number) => Promise<IntegrationContextResponse>;
31
+ products: (timeoutMs?: number) => Promise<ListResponse<ProductShape>>;
32
+ prices: (timeoutMs?: number) => Promise<ListResponse<PriceShape>>;
33
+ features: (timeoutMs?: number) => Promise<ListResponse<unknown>>;
34
+ accessRetrieve: (customer: string, timeoutMs?: number) => Promise<ResponseMeta & {
35
+ features: string[];
36
+ }>;
37
+ accessCheck: (customer: string, feature: string, timeoutMs?: number) => Promise<ResponseMeta & {
38
+ allowed: boolean;
39
+ }>;
40
+ webhookLocal: (secret: string) => void;
41
+ }
42
+ export declare function createDiagnostics(deps: DiagnosticsDependencies): {
43
+ run(options?: DiagnosticsOptions): Promise<DiagnosticsReport>;
44
+ };
45
+ export {};
46
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/diagnostics/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AASlG,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,UAAU,0BAA2B,SAAQ,YAAY;IACvD,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,UAAU,YAAY,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC5C,IAAI,EAAE,CAAC,EAAE,CAAC;CACX;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,UAAU,EAAE,6BAA6B,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACrE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IAClE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,cAAc,EAAE,CACd,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC,YAAY,GAAG;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACpD,WAAW,EAAE,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,KACf,OAAO,CAAC,YAAY,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAClD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAiDD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,uBAAuB,GAAG;IAChE,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/D,CAEA"}
@@ -0,0 +1,273 @@
1
+ const DOCS_URL = '#diagnostics';
2
+ const AUTH_CODES = new Set([
3
+ 'integration_key_missing',
4
+ 'integration_key_invalid',
5
+ 'integration_key_revoked',
6
+ ]);
7
+ const DEFINITIONS = {
8
+ 'api.reachable': {
9
+ title: 'API reachable',
10
+ remediation: 'Check BILLING_API_URL and network connectivity.',
11
+ },
12
+ 'api.auth': {
13
+ title: 'API authentication',
14
+ remediation: 'Create or rotate the integration key and update BILLING_API_KEY.',
15
+ },
16
+ 'integration.context': {
17
+ title: 'Integration context',
18
+ remediation: 'Verify the integration key project and contact MegaBilling support.',
19
+ },
20
+ 'mode.consistency': {
21
+ title: 'Mode consistency',
22
+ remediation: 'Use a key and resources from the expected test or live mode.',
23
+ },
24
+ 'catalog.products.readable': {
25
+ title: 'Products readable',
26
+ remediation: 'Create at least one active product in MegaBilling.',
27
+ },
28
+ 'catalog.prices.readable': {
29
+ title: 'Prices readable',
30
+ remediation: 'Create at least one active price in MegaBilling.',
31
+ },
32
+ 'catalog.features.readable': {
33
+ title: 'Features readable',
34
+ remediation: 'Create at least one feature in MegaBilling.',
35
+ },
36
+ 'catalog.pricing_page_shape': {
37
+ title: 'Pricing page shape',
38
+ remediation: 'Set sortOrder and an active price for every active product.',
39
+ },
40
+ 'access.retrieve': {
41
+ title: 'Access readable',
42
+ remediation: 'Verify the customer identifier and its project.',
43
+ },
44
+ 'access.check': {
45
+ title: 'Feature access check',
46
+ remediation: 'Verify the customer and feature code.',
47
+ },
48
+ 'webhook.signature.local': {
49
+ title: 'Webhook signature local',
50
+ remediation: 'Copy the current webhook secret from MegaBilling.',
51
+ },
52
+ };
53
+ export function createDiagnostics(deps) {
54
+ return { run: (options = {}) => runDiagnostics(deps, options) };
55
+ }
56
+ async function runDiagnostics(deps, options) {
57
+ const started = Date.now();
58
+ const startedAt = new Date(started).toISOString();
59
+ const checks = [];
60
+ let context;
61
+ const probeStarted = Date.now();
62
+ try {
63
+ context = await deps.context(options.timeoutMs);
64
+ checks.push(result('api.reachable', 'pass', probeStarted));
65
+ checks.push(result('api.auth', 'pass', probeStarted, { requestId: context.requestId }));
66
+ checks.push(result('integration.context', 'pass', probeStarted));
67
+ }
68
+ catch (error) {
69
+ const failure = safeError(error);
70
+ const authFailure = AUTH_CODES.has(failure.code);
71
+ const reachableStatus = authFailure
72
+ ? 'pass'
73
+ : failure.status >= 400 && failure.status < 500
74
+ ? 'warn'
75
+ : 'fail';
76
+ checks.push(result('api.reachable', reachableStatus, probeStarted, {
77
+ message: authFailure ? undefined : failure.code,
78
+ }));
79
+ checks.push(authFailure
80
+ ? result('api.auth', 'fail', probeStarted, {
81
+ message: failure.code,
82
+ requestId: failure.requestId,
83
+ })
84
+ : skipped('api.auth', 'depends_on:api.reachable'));
85
+ checks.push(skipped('integration.context', 'depends_on:api.auth'));
86
+ }
87
+ if (context) {
88
+ const prefixMode = keyMode(deps.apiKey());
89
+ const consistent = context.mode === (context.livemode ? 'live' : 'test') &&
90
+ (prefixMode === 'unknown' || prefixMode === context.mode) &&
91
+ (!options.expectedMode || options.expectedMode === context.mode);
92
+ checks.push(result('mode.consistency', consistent ? 'pass' : 'warn', Date.now(), {
93
+ message: consistent ? undefined : 'Configured and returned modes differ.',
94
+ }));
95
+ }
96
+ else {
97
+ checks.push(skipped('mode.consistency', 'depends_on:api.auth'));
98
+ }
99
+ let products;
100
+ let prices;
101
+ if (context) {
102
+ products = await readable('catalog.products.readable', () => deps.products(options.timeoutMs), checks);
103
+ prices = await readable('catalog.prices.readable', () => deps.prices(options.timeoutMs), checks);
104
+ await readable('catalog.features.readable', () => deps.features(options.timeoutMs), checks);
105
+ }
106
+ else {
107
+ checks.push(skipped('catalog.products.readable', 'depends_on:api.auth'));
108
+ checks.push(skipped('catalog.prices.readable', 'depends_on:api.auth'));
109
+ checks.push(skipped('catalog.features.readable', 'depends_on:api.auth'));
110
+ }
111
+ if (products && prices) {
112
+ const startedAtMs = Date.now();
113
+ const activeProducts = products.data.filter((product) => product.active);
114
+ const activePrices = prices.data.filter((price) => price.active);
115
+ const valid = activeProducts.length > 0 &&
116
+ activeProducts.every((product) => Number.isFinite(product.sortOrder) &&
117
+ activePrices.some((price) => price.product === product.id));
118
+ checks.push(result('catalog.pricing_page_shape', valid ? 'pass' : 'warn', startedAtMs, {
119
+ data: { activeProducts: activeProducts.length, activePrices: activePrices.length },
120
+ }));
121
+ }
122
+ else {
123
+ checks.push(skipped('catalog.pricing_page_shape', 'depends_on:catalog.readable'));
124
+ }
125
+ await runAccessChecks(deps, options, checks, Boolean(context));
126
+ runWebhookCheck(deps, options.webhookSecret, checks);
127
+ const finished = Date.now();
128
+ return {
129
+ object: 'diagnostics_report',
130
+ version: 1,
131
+ livemode: context?.livemode ?? null,
132
+ status: aggregate(checks),
133
+ context: {
134
+ sdkVersion: deps.sdkVersion,
135
+ sdkPackage: deps.sdkPackage,
136
+ apiVersion: context?.apiVersion ?? null,
137
+ baseUrl: safeBaseUrl(deps.baseUrl()),
138
+ mode: context?.mode ?? 'unknown',
139
+ key: { handle: maskKey(deps.apiKey()) },
140
+ ...(context ? { project: { name: context.project.name } } : {}),
141
+ startedAt,
142
+ finishedAt: new Date(finished).toISOString(),
143
+ totalDurationMs: finished - started,
144
+ },
145
+ checks,
146
+ };
147
+ }
148
+ async function readable(id, call, checks) {
149
+ const started = Date.now();
150
+ try {
151
+ const response = await call();
152
+ checks.push(result(id, response.data.length > 0 ? 'pass' : 'warn', started, {
153
+ requestId: response.requestId,
154
+ data: { count: response.data.length },
155
+ }));
156
+ return response;
157
+ }
158
+ catch (error) {
159
+ const failure = safeError(error);
160
+ checks.push(result(id, 'fail', started, { message: failure.code, requestId: failure.requestId }));
161
+ return undefined;
162
+ }
163
+ }
164
+ async function runAccessChecks(deps, options, checks, authenticated) {
165
+ if (!authenticated) {
166
+ checks.push(skipped('access.retrieve', 'depends_on:api.auth'));
167
+ checks.push(skipped('access.check', 'depends_on:api.auth'));
168
+ return;
169
+ }
170
+ if (!options.customer) {
171
+ checks.push(skipped('access.retrieve', 'missing:customer'));
172
+ checks.push(skipped('access.check', 'missing:customer_or_feature'));
173
+ return;
174
+ }
175
+ const retrieveStarted = Date.now();
176
+ try {
177
+ const response = await deps.accessRetrieve(options.customer, options.timeoutMs);
178
+ checks.push(result('access.retrieve', response.features.length > 0 ? 'pass' : 'warn', retrieveStarted, {
179
+ requestId: response.requestId,
180
+ data: { featureCount: response.features.length },
181
+ }));
182
+ }
183
+ catch (error) {
184
+ const failure = safeError(error);
185
+ checks.push(result('access.retrieve', 'fail', retrieveStarted, {
186
+ message: failure.code,
187
+ requestId: failure.requestId,
188
+ }));
189
+ checks.push(skipped('access.check', 'depends_on:access.retrieve'));
190
+ return;
191
+ }
192
+ if (!options.feature) {
193
+ checks.push(skipped('access.check', 'missing:customer_or_feature'));
194
+ return;
195
+ }
196
+ const checkStarted = Date.now();
197
+ try {
198
+ const response = await deps.accessCheck(options.customer, options.feature, options.timeoutMs);
199
+ checks.push(result('access.check', response.allowed ? 'pass' : 'warn', checkStarted, {
200
+ requestId: response.requestId,
201
+ data: { allowed: response.allowed },
202
+ }));
203
+ }
204
+ catch (error) {
205
+ const failure = safeError(error);
206
+ checks.push(result('access.check', 'fail', checkStarted, {
207
+ message: failure.code,
208
+ requestId: failure.requestId,
209
+ }));
210
+ }
211
+ }
212
+ function runWebhookCheck(deps, secret, checks) {
213
+ if (!secret) {
214
+ checks.push(skipped('webhook.signature.local', 'missing:webhook_secret'));
215
+ return;
216
+ }
217
+ const started = Date.now();
218
+ try {
219
+ deps.webhookLocal(secret);
220
+ checks.push(result('webhook.signature.local', 'pass', started));
221
+ }
222
+ catch {
223
+ checks.push(result('webhook.signature.local', 'fail', started));
224
+ }
225
+ }
226
+ function result(id, status, started, extra = {}) {
227
+ const definition = DEFINITIONS[id];
228
+ return {
229
+ id,
230
+ title: definition.title,
231
+ status,
232
+ durationMs: Math.max(0, Date.now() - started),
233
+ remediation: { text: definition.remediation, docsUrl: DOCS_URL },
234
+ ...extra,
235
+ };
236
+ }
237
+ function skipped(id, reason) {
238
+ return result(id, 'skipped', Date.now(), { reason });
239
+ }
240
+ function aggregate(checks) {
241
+ const rank = { pass: 0, warn: 1, fail: 2 };
242
+ return checks.reduce((overall, check) => check.status === 'skipped' || rank[check.status] <= rank[overall] ? overall : check.status, 'pass');
243
+ }
244
+ function keyMode(apiKey) {
245
+ if (apiKey.startsWith('bsk_test_'))
246
+ return 'test';
247
+ if (apiKey.startsWith('bsk_live_'))
248
+ return 'live';
249
+ return 'unknown';
250
+ }
251
+ function maskKey(apiKey) {
252
+ const mode = keyMode(apiKey);
253
+ return `bsk_${mode}_…${apiKey.slice(-4)}`;
254
+ }
255
+ function safeBaseUrl(value) {
256
+ try {
257
+ return new URL(value).origin;
258
+ }
259
+ catch {
260
+ return 'invalid_url';
261
+ }
262
+ }
263
+ function safeError(error) {
264
+ if (!error || typeof error !== 'object') {
265
+ return { code: 'unknown_error', requestId: null, status: 0 };
266
+ }
267
+ const value = error;
268
+ return {
269
+ code: typeof value.code === 'string' ? value.code : 'unknown_error',
270
+ requestId: typeof value.requestId === 'string' ? value.requestId : null,
271
+ status: typeof value.status === 'number' ? value.status : 0,
272
+ };
273
+ }
@@ -0,0 +1,4 @@
1
+ export { createDiagnostics } from './engine.js';
2
+ export { toUiProjection } from './ui-projection.js';
3
+ export type { CheckResult, CheckStatus, DiagnosticsContext, DiagnosticsOptions, DiagnosticsReport, DiagnosticsUiProjection, } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diagnostics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EACV,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createDiagnostics } from './engine.js';
2
+ export { toUiProjection } from './ui-projection.js';
@@ -0,0 +1,66 @@
1
+ export type CheckStatus = 'pass' | 'warn' | 'fail' | 'skipped';
2
+ export interface CheckResult {
3
+ id: string;
4
+ title: string;
5
+ status: CheckStatus;
6
+ durationMs: number;
7
+ message?: string;
8
+ remediation: {
9
+ text: string;
10
+ docsUrl?: string;
11
+ };
12
+ requestId?: string | null;
13
+ data?: Record<string, unknown>;
14
+ reason?: string;
15
+ }
16
+ export interface DiagnosticsContext {
17
+ sdkVersion: string;
18
+ sdkPackage: '@openaisdk/billing-sdk-node';
19
+ apiVersion: string | null;
20
+ baseUrl: string;
21
+ mode: 'test' | 'live' | 'unknown';
22
+ key: {
23
+ handle: string;
24
+ };
25
+ project?: {
26
+ name?: string;
27
+ };
28
+ startedAt: string;
29
+ finishedAt: string;
30
+ totalDurationMs: number;
31
+ }
32
+ export interface DiagnosticsReport {
33
+ object: 'diagnostics_report';
34
+ version: 1;
35
+ livemode: boolean | null;
36
+ status: Exclude<CheckStatus, 'skipped'>;
37
+ context: DiagnosticsContext;
38
+ checks: CheckResult[];
39
+ }
40
+ export interface DiagnosticsOptions {
41
+ customer?: string;
42
+ feature?: string;
43
+ webhookSecret?: string;
44
+ timeoutMs?: number;
45
+ expectedMode?: 'test' | 'live';
46
+ }
47
+ export interface DiagnosticsUiProjection {
48
+ object: 'diagnostics_ui_projection';
49
+ version: 1;
50
+ status: DiagnosticsReport['status'];
51
+ checkedAt: string;
52
+ totalDurationMs: number;
53
+ context: {
54
+ mode: DiagnosticsContext['mode'];
55
+ project?: {
56
+ name?: string;
57
+ };
58
+ key: {
59
+ handle: string;
60
+ };
61
+ sdkVersion: string;
62
+ apiVersion: string | null;
63
+ };
64
+ checks: Array<Pick<CheckResult, 'id' | 'title' | 'status' | 'durationMs' | 'message' | 'remediation' | 'reason'>>;
65
+ }
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/diagnostics/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,6BAA6B,CAAC;IAC1C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAClC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,2BAA2B,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE;QACP,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,GAAG,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;IACF,MAAM,EAAE,KAAK,CACX,IAAI,CACF,WAAW,EACX,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,aAAa,GAAG,QAAQ,CAChF,CACF,CAAC;CACH"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { DiagnosticsReport, DiagnosticsUiProjection } from './types.js';
2
+ export declare function toUiProjection(report: DiagnosticsReport): DiagnosticsUiProjection;
3
+ //# sourceMappingURL=ui-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-projection.d.ts","sourceRoot":"","sources":["../../src/diagnostics/ui-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE7E,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,uBAAuB,CA2BjF"}
@@ -0,0 +1,28 @@
1
+ export function toUiProjection(report) {
2
+ return {
3
+ object: 'diagnostics_ui_projection',
4
+ version: 1,
5
+ status: report.status,
6
+ checkedAt: report.context.finishedAt,
7
+ totalDurationMs: report.context.totalDurationMs,
8
+ context: {
9
+ mode: report.context.mode,
10
+ ...(report.context.project ? { project: { name: report.context.project.name } } : {}),
11
+ key: { handle: report.context.key.handle },
12
+ sdkVersion: report.context.sdkVersion,
13
+ apiVersion: report.context.apiVersion,
14
+ },
15
+ checks: report.checks.map((check) => ({
16
+ id: check.id,
17
+ title: check.title,
18
+ status: check.status,
19
+ durationMs: check.durationMs,
20
+ ...(check.message === undefined ? {} : { message: check.message }),
21
+ remediation: {
22
+ text: check.remediation.text,
23
+ ...(check.remediation.docsUrl === undefined ? {} : { docsUrl: check.remediation.docsUrl }),
24
+ },
25
+ ...(check.reason === undefined ? {} : { reason: check.reason }),
26
+ })),
27
+ };
28
+ }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- declare const SDK_VERSION = "1.11.0";
1
+ import { toUiProjection } from './diagnostics/index.js';
2
+ import type { CheckResult, CheckStatus, DiagnosticsContext, DiagnosticsOptions, DiagnosticsReport, DiagnosticsUiProjection } from './diagnostics/index.js';
3
+ declare const SDK_VERSION = "1.12.0";
2
4
  declare const SDK_PACKAGE_NAME = "@openaisdk/billing-sdk-node";
3
5
  declare const DEFAULT_BASE_URL = "https://billing.example.com";
4
6
  declare const DEFAULT_TIMEOUT_MS = 30000;
@@ -16,6 +18,7 @@ export interface Product {
16
18
  id: string;
17
19
  object: 'product';
18
20
  livemode: boolean;
21
+ code: string;
19
22
  name: string;
20
23
  description: string | null;
21
24
  active: boolean;
@@ -66,6 +69,7 @@ export interface MegaBillingOptions {
66
69
  }
67
70
  export interface RequestOptions {
68
71
  signal?: AbortSignal;
72
+ timeoutMs?: number;
69
73
  }
70
74
  export interface CreateOptions extends RequestOptions {
71
75
  idempotencyKey?: string;
@@ -297,6 +301,9 @@ export interface AccessState {
297
301
  object: 'access';
298
302
  livemode: boolean;
299
303
  customer: string;
304
+ product: string | null;
305
+ price: string | null;
306
+ subscription: string | null;
300
307
  status: string;
301
308
  features: string[];
302
309
  limits: Record<string, string | number>;
@@ -569,9 +576,16 @@ export declare class MegaBilling {
569
576
  data?: Partial<BillingTestWebhookData>;
570
577
  }) => BillingWebhookEvent<"billing.test">;
571
578
  };
579
+ readonly diagnostics: {
580
+ run(options?: DiagnosticsOptions): Promise<DiagnosticsReport>;
581
+ };
572
582
  constructor(options: MegaBillingOptions);
573
583
  private request;
574
584
  private buildHeaders;
575
585
  }
576
586
  export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, REQUEST_ID_HEADER, SDK_PACKAGE_NAME, SDK_VERSION, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_DEFAULT_TOLERANCE_SECONDS, };
587
+ export declare const diagnostics: {
588
+ toUiProjection: typeof toUiProjection;
589
+ };
590
+ export type { CheckResult, CheckStatus, DiagnosticsContext, DiagnosticsOptions, DiagnosticsReport, DiagnosticsUiProjection, };
577
591
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { createHmac, timingSafeEqual } from 'crypto';
2
- const SDK_VERSION = '1.11.0';
2
+ import { createDiagnostics, toUiProjection } from './diagnostics/index.js';
3
+ const SDK_VERSION = '1.12.0';
3
4
  const SDK_PACKAGE_NAME = '@openaisdk/billing-sdk-node';
4
5
  const DEFAULT_BASE_URL = 'https://billing.example.com';
5
6
  const DEFAULT_TIMEOUT_MS = 30_000;
@@ -176,6 +177,23 @@ export class MegaBilling {
176
177
  },
177
178
  }),
178
179
  };
180
+ diagnostics = createDiagnostics({
181
+ apiKey: () => this.apiKey,
182
+ baseUrl: () => this.baseUrl,
183
+ sdkPackage: SDK_PACKAGE_NAME,
184
+ sdkVersion: SDK_VERSION,
185
+ context: (timeoutMs) => this.request('GET', '/v1/integration/context', undefined, { timeoutMs }),
186
+ products: (timeoutMs) => this.products.list({ active: true, limit: 20 }, { timeoutMs }),
187
+ prices: (timeoutMs) => this.prices.list({ active: true, limit: 20 }, { timeoutMs }),
188
+ features: (timeoutMs) => this.features.list({ limit: 20 }, { timeoutMs }),
189
+ accessRetrieve: (customer, timeoutMs) => this.access.retrieve(customer, { timeoutMs }),
190
+ accessCheck: (customer, feature, timeoutMs) => this.access.check(customer, feature, { timeoutMs }),
191
+ webhookLocal: (secret) => {
192
+ const payload = JSON.stringify(this.testHelpers.createTestEvent());
193
+ const signature = this.testHelpers.generateWebhookHeaderString(payload, secret);
194
+ this.webhooks.constructEvent(payload, signature, secret);
195
+ },
196
+ });
179
197
  constructor(options) {
180
198
  if (!options.apiKey?.trim()) {
181
199
  throw new Error('MegaBilling requires a non-empty apiKey');
@@ -186,12 +204,13 @@ export class MegaBilling {
186
204
  this.fetchImpl = options.fetch ?? fetch;
187
205
  }
188
206
  async request(method, path, body, options) {
207
+ const timeoutMs = options?.timeoutMs ?? this.timeoutMs;
189
208
  const timeoutController = new AbortController();
190
209
  let didTimeout = false;
191
210
  const timeoutId = setTimeout(() => {
192
211
  didTimeout = true;
193
212
  timeoutController.abort();
194
- }, this.timeoutMs);
213
+ }, timeoutMs);
195
214
  const signal = options?.signal
196
215
  ? AbortSignal.any([options.signal, timeoutController.signal])
197
216
  : timeoutController.signal;
@@ -216,7 +235,7 @@ export class MegaBilling {
216
235
  if (didTimeout) {
217
236
  throw new BillingError({
218
237
  code: 'request_timeout',
219
- message: `Request timed out after ${this.timeoutMs}ms`,
238
+ message: `Request timed out after ${timeoutMs}ms`,
220
239
  status: 408,
221
240
  requestId: null,
222
241
  });
@@ -384,3 +403,4 @@ function hexToBytes(value) {
384
403
  return bytes;
385
404
  }
386
405
  export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, REQUEST_ID_HEADER, SDK_PACKAGE_NAME, SDK_VERSION, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_DEFAULT_TOLERANCE_SECONDS, };
406
+ export const diagnostics = { toUiProjection };
@@ -60,6 +60,7 @@ const checkout = await billing.checkout.sessions.create(
60
60
  );
61
61
 
62
62
  const access = await billing.access.retrieve(customer.id);
63
+ const currentProduct = products.data.find((p) => p.id === access.product) ?? null;
63
64
 
64
65
  let changePreview = null;
65
66
  let change = null;
@@ -84,6 +85,7 @@ console.log(
84
85
  JSON.stringify(
85
86
  {
86
87
  productId: firstProduct.id,
88
+ productCode: firstProduct.code,
87
89
  priceId: resolvedPriceId,
88
90
  featureCount: features.data.length,
89
91
  productFeatureCount: productFeatures.data.length,
@@ -92,6 +94,10 @@ console.log(
92
94
  confirmationUrl: checkout.confirmationUrl,
93
95
  subscriptionId: checkout.subscription,
94
96
  accessStatus: access.status,
97
+ accessProduct: access.product,
98
+ accessPrice: access.price,
99
+ accessSubscription: access.subscription,
100
+ currentProductCode: currentProduct?.code ?? null,
95
101
  accessLivemode: access.livemode,
96
102
  changePreviewId: changePreview?.id ?? null,
97
103
  changeId: change?.id ?? null,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openaisdk/billing-sdk-node",
3
- "version": "1.11.2",
3
+ "version": "1.11.4",
4
4
  "description": "Handwritten public Node SDK for Mega-Billing Wave 1 API",
5
5
  "license": "MIT",
6
6
  "author": "Anatoliy Tukov <openaisdk@gmail.com>",
@@ -26,7 +26,8 @@
26
26
  "main": "dist/index.js",
27
27
  "types": "dist/index.d.ts",
28
28
  "bin": {
29
- "billing-sdk-webhook-forward": "./bin/billing-sdk-webhook-forward.mjs"
29
+ "billing-sdk-webhook-forward": "./bin/billing-sdk-webhook-forward.mjs",
30
+ "billing-sdk-doctor": "./bin/billing-sdk-doctor.mjs"
30
31
  },
31
32
  "exports": {
32
33
  ".": {