notiformer 1.1.2 → 1.1.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/dist/index.d.ts CHANGED
@@ -1,33 +1,23 @@
1
1
  /**
2
- * Notiformer — Real-time alerts and feature gates for your code.
2
+ * Notiformer — Real-time alerts, approval gates, and feature flags.
3
3
  *
4
- * Works in Node.js (backend) and the browser (frontend).
4
+ * Pricing model (v2):
5
+ * Each plan includes a free credit allowance per billing cycle.
6
+ * Once the allowance is consumed, usage continues at fixed per-unit prices
7
+ * (pay-as-you-go), capped at a hard system limit per cycle.
8
+ * See https://notiformer.com/pricing for current rates.
5
9
  *
6
- * @example
7
- * import { Notiformer } from 'notiformer';
10
+ * Billing errors (HTTP 402):
11
+ * - "card_required" → add a payment method at app.notiformer.com
12
+ * - "card_locked" → card declined; update payment method
13
+ * - "cap_reached" → hard cycle cap reached; usage resets at cycleResetsAt
8
14
  *
9
- * const n = new Notiformer({ apiKey: 'ntf_live_...' });
10
- *
11
- * // Fire-and-forget alert
12
- * await n.event({ channel: 'payments', event: 'new_sale', notify: true });
13
- *
14
- * // Block and wait for approval
15
- * const { approved } = await n.ask({ message: 'Deploy to prod?' });
16
- *
17
- * // Block and wait for a choice from multiple options
18
- * const { selected } = await n.select({
19
- * message: 'How to handle the failed payment?',
20
- * options: [
21
- * { value: 'retry', label: '🔄 Retry in 1 hour' },
22
- * { value: 'notify', label: '📧 Notify customer' },
23
- * { value: 'cancel', label: '✕ Cancel order', isDestructive: true },
24
- * ],
25
- * fallback: 'notify',
26
- * });
15
+ * The SDK never throws by default. To opt in:
16
+ * new Notiformer({ apiKey, throwOnError: true })
27
17
  */
28
18
  import type { NotiformerConfig, EventPayload, EventResponse, GateOptions, GateResult, AskPayload, AskResult, SelectPayload, SelectResult } from "./types";
29
- export type { NotiformerConfig, EventPayload, EventResponse, GateOptions, GateResult, AskPayload, AskResult, SelectPayload, SelectResult, };
30
- export type { SelectOption } from "./types";
19
+ export type { NotiformerConfig, EventPayload, EventResponse, GateOptions, GateResult, AskPayload, AskResult, SelectPayload, SelectResult, NotiformerErrorCode, SelectOption, } from "./types";
20
+ export { NotiformerError } from "./types";
31
21
  export declare class Notiformer {
32
22
  private readonly apiKey;
33
23
  private readonly baseUrl;
@@ -39,78 +29,31 @@ export declare class Notiformer {
39
29
  private readonly gateCache;
40
30
  private readonly isPlaceholder;
41
31
  constructor(config: NotiformerConfig);
42
- /**
43
- * Send an event and optionally notify recipients.
44
- * Never throws by default — returns null if the call fails.
45
- */
46
32
  event(payload: EventPayload): Promise<EventResponse | null>;
47
- /**
48
- * Check whether a feature gate is enabled.
49
- * Results are cached locally for 30 seconds by default.
50
- * Returns false if the call fails or the plan doesn't support gates.
51
- */
52
33
  gate(key: string, options?: GateOptions): Promise<boolean>;
53
34
  gateDetails(key: string, options?: GateOptions): Promise<GateResult>;
54
35
  clearGateCache(key?: string): void;
55
- /**
56
- * Pause execution and wait for a human to approve or deny.
57
- *
58
- * A push notification is sent to the Notiformer app with Approve
59
- * and Deny buttons. The Promise resolves when you respond or when
60
- * the timeout expires.
61
- *
62
- * Never throws by default.
63
- *
64
- * @example
65
- * const { approved } = await n.ask({
66
- * message: `Send campaign to ${count} users?`,
67
- * context: `Campaign: Black Friday · ${count} recipients`,
68
- * timeout: 300,
69
- * });
70
- * if (approved) await sendEmails();
71
- */
72
36
  ask(payload: AskPayload): Promise<AskResult>;
73
- /**
74
- * Pause execution and wait for a human to choose from multiple options.
75
- *
76
- * Unlike ask() which returns a boolean, select() returns the `value`
77
- * string of the chosen option. Use it when you need more than two actions.
78
- *
79
- * Uses the same monthly quota as ask().
80
- * Never throws by default.
81
- *
82
- * @example
83
- * const { selected } = await n.select({
84
- * message: 'How should I handle the failed payment?',
85
- * options: [
86
- * { value: 'retry', label: '🔄 Retry in 1 hour' },
87
- * { value: 'notify', label: '📧 Notify the customer' },
88
- * { value: 'cancel', label: '✕ Cancel the order', isDestructive: true },
89
- * ],
90
- * fallback: 'notify', // returned automatically on timeout
91
- * timeout: 300,
92
- * });
93
- *
94
- * if (selected === 'retry') await scheduleRetry();
95
- * if (selected === 'notify') await sendEmail();
96
- * if (selected === 'cancel') await cancelOrder();
97
- */
98
37
  select(payload: SelectPayload): Promise<SelectResult>;
99
38
  private pollAsk;
100
39
  private pollSelect;
101
- private sleep;
102
40
  /**
103
- * If the API response includes an upgradeUrl (quota exceeded),
104
- * print a visible warning in the developer's console.
41
+ * Parse an HTTP error response into a typed NotiformerError.
105
42
  */
106
- private warnUpgrade;
43
+ private parseError;
44
+ private codeFromStatus;
45
+ /**
46
+ * Print a formatted, actionable billing error in the developer console.
47
+ */
48
+ private logBilling;
49
+ private toError;
107
50
  private failAsk;
108
51
  private failSelect;
109
52
  private fail;
53
+ private sleep;
110
54
  private post;
111
55
  private get;
112
56
  private request;
113
- private friendlyNetworkError;
114
57
  }
115
58
  export default Notiformer;
116
59
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAIjB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,GACb,CAAC;AACF,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAO5C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAE5B,MAAM,EAAE,gBAAgB;IAwCpC;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAsDjE;;;;OAIG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAkC9D,WAAW,CACf,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC;IAKtB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQlC;;;;;;;;;;;;;;;;OAgBG;IACG,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAoDlD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YA0E7C,OAAO;YAiDP,UAAU;IAmDxB,OAAO,CAAC,KAAK;IAIb;;;OAGG;IACH,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,IAAI;YAOE,IAAI;YAIJ,GAAG;YAIH,OAAO;IAmBrB,OAAO,CAAC,oBAAoB;CAmB7B;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EAEb,MAAM,SAAS,CAAC;AAKjB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAgB1C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAE5B,MAAM,EAAE,gBAAgB;IAsC9B,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA6C3D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B9D,WAAW,CACf,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC;IAKtB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ5B,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA0C5C,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YA8D7C,OAAO;YAmCP,UAAU;IA0CxB;;OAEG;YACW,UAAU;IAcxB,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,UAAU;IAuElB,OAAO,CAAC,OAAO;IA6Bf,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,GAAG;YAIG,OAAO;CAkBtB;AAED,eAAe,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,39 +1,33 @@
1
1
  "use strict";
2
2
  /**
3
- * Notiformer — Real-time alerts and feature gates for your code.
3
+ * Notiformer — Real-time alerts, approval gates, and feature flags.
4
4
  *
5
- * Works in Node.js (backend) and the browser (frontend).
5
+ * Pricing model (v2):
6
+ * Each plan includes a free credit allowance per billing cycle.
7
+ * Once the allowance is consumed, usage continues at fixed per-unit prices
8
+ * (pay-as-you-go), capped at a hard system limit per cycle.
9
+ * See https://notiformer.com/pricing for current rates.
6
10
  *
7
- * @example
8
- * import { Notiformer } from 'notiformer';
11
+ * Billing errors (HTTP 402):
12
+ * - "card_required" → add a payment method at app.notiformer.com
13
+ * - "card_locked" → card declined; update payment method
14
+ * - "cap_reached" → hard cycle cap reached; usage resets at cycleResetsAt
9
15
  *
10
- * const n = new Notiformer({ apiKey: 'ntf_live_...' });
11
- *
12
- * // Fire-and-forget alert
13
- * await n.event({ channel: 'payments', event: 'new_sale', notify: true });
14
- *
15
- * // Block and wait for approval
16
- * const { approved } = await n.ask({ message: 'Deploy to prod?' });
17
- *
18
- * // Block and wait for a choice from multiple options
19
- * const { selected } = await n.select({
20
- * message: 'How to handle the failed payment?',
21
- * options: [
22
- * { value: 'retry', label: '🔄 Retry in 1 hour' },
23
- * { value: 'notify', label: '📧 Notify customer' },
24
- * { value: 'cancel', label: '✕ Cancel order', isDestructive: true },
25
- * ],
26
- * fallback: 'notify',
27
- * });
16
+ * The SDK never throws by default. To opt in:
17
+ * new Notiformer({ apiKey, throwOnError: true })
28
18
  */
29
19
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.Notiformer = void 0;
20
+ exports.Notiformer = exports.NotiformerError = void 0;
21
+ const types_1 = require("./types");
31
22
  const logger_1 = require("./logger");
32
23
  const cache_1 = require("./cache");
24
+ var types_2 = require("./types");
25
+ Object.defineProperty(exports, "NotiformerError", { enumerable: true, get: function () { return types_2.NotiformerError; } });
33
26
  const PLACEHOLDER_KEY = "ntf_live_test";
34
27
  const API_URL = "https://api.notiformer.com";
35
28
  const DEFAULT_TIMEOUT = 8000;
36
29
  const DEFAULT_GATE_TTL = 30;
30
+ const SDK_VERSION = "2.2.0";
37
31
  class Notiformer {
38
32
  constructor(config) {
39
33
  var _a, _b, _c;
@@ -56,31 +50,25 @@ class Notiformer {
56
50
  "│ notiformer — setup required │\n" +
57
51
  "├─────────────────────────────────────────────────────┤\n" +
58
52
  '│ You are using the example key "ntf_live_test". │\n' +
59
- "│ Events will not be sent until you use a real key. │\n" +
53
+ "│ Calls will not be sent until you use a real key. │\n" +
60
54
  "│ │\n" +
61
55
  "│ 1. Go to https://app.notiformer.com/projects │\n" +
62
56
  "│ 2. Create or open a project │\n" +
63
57
  "│ 3. Copy your API key │\n" +
64
- '│ 4. Replace "ntf_live_test" with your real key │\n' +
65
58
  "└─────────────────────────────────────────────────────┘\n");
66
59
  }
67
60
  }
68
61
  // ─────────────────────────────────────────────────────────────
69
62
  // event()
70
63
  // ─────────────────────────────────────────────────────────────
71
- /**
72
- * Send an event and optionally notify recipients.
73
- * Never throws by default — returns null if the call fails.
74
- */
75
64
  async event(payload) {
76
- var _a, _b;
65
+ var _a;
77
66
  if (!payload.channel)
78
67
  throw new Error("[notiformer] event.channel is required.");
79
68
  if (!payload.event)
80
69
  throw new Error("[notiformer] event.event is required.");
81
70
  if (this.isPlaceholder) {
82
- console.warn('[notiformer] Event not sent — using example key "ntf_live_test".\n' +
83
- "→ Replace it with your real key from https://app.notiformer.com/projects");
71
+ console.warn('[notiformer] Event not sent — using example key "ntf_live_test".');
84
72
  return null;
85
73
  }
86
74
  if (this.silent)
@@ -104,26 +92,19 @@ class Notiformer {
104
92
  }
105
93
  const res = await this.post("/v1/events", body);
106
94
  if (!res.ok) {
107
- const data = await res
108
- .json()
109
- .catch(() => ({ error: `HTTP ${res.status}` }));
110
- this.warnUpgrade(data);
111
- return this.fail(new Error(`[notiformer] ${(_b = data.error) !== null && _b !== void 0 ? _b : res.statusText}`));
95
+ const err = await this.parseError(res);
96
+ this.logBilling(err);
97
+ return this.fail(err);
112
98
  }
113
99
  return (await res.json());
114
100
  }
115
101
  catch (err) {
116
- return this.fail(this.friendlyNetworkError(err));
102
+ return this.fail(this.toError(err));
117
103
  }
118
104
  }
119
105
  // ─────────────────────────────────────────────────────────────
120
106
  // gate()
121
107
  // ─────────────────────────────────────────────────────────────
122
- /**
123
- * Check whether a feature gate is enabled.
124
- * Results are cached locally for 30 seconds by default.
125
- * Returns false if the call fails or the plan doesn't support gates.
126
- */
127
108
  async gate(key, options = {}) {
128
109
  var _a, _b;
129
110
  if (!key)
@@ -138,12 +119,9 @@ class Notiformer {
138
119
  try {
139
120
  const res = await this.get(`/v1/gates/${encodeURIComponent(key)}`);
140
121
  if (!res.ok) {
141
- // 403 = Feature Gates not available on this plan
142
- if (res.status === 403) {
143
- const data = await res.json().catch(() => ({}));
144
- console.warn(`[notiformer] gate("${key}") — Feature Gates require Pro or Business plan.` +
145
- (data.upgradeUrl ? `\n→ Upgrade: ${data.upgradeUrl}` : ""));
146
- }
122
+ const err = await this.parseError(res);
123
+ this.logBilling(err);
124
+ // gate() never throws it always falls back
147
125
  return fallback;
148
126
  }
149
127
  const data = (await res.json());
@@ -156,7 +134,7 @@ class Notiformer {
156
134
  }
157
135
  async gateDetails(key, options = {}) {
158
136
  const enabled = await this.gate(key, options);
159
- return { key, enabled, cached: false, fetchedAt: new Date().toISOString() };
137
+ return { key, enabled, cached: false };
160
138
  }
161
139
  clearGateCache(key) {
162
140
  key ? this.gateCache.delete(key) : this.gateCache.clear();
@@ -164,30 +142,12 @@ class Notiformer {
164
142
  // ─────────────────────────────────────────────────────────────
165
143
  // ask()
166
144
  // ─────────────────────────────────────────────────────────────
167
- /**
168
- * Pause execution and wait for a human to approve or deny.
169
- *
170
- * A push notification is sent to the Notiformer app with Approve
171
- * and Deny buttons. The Promise resolves when you respond or when
172
- * the timeout expires.
173
- *
174
- * Never throws by default.
175
- *
176
- * @example
177
- * const { approved } = await n.ask({
178
- * message: `Send campaign to ${count} users?`,
179
- * context: `Campaign: Black Friday · ${count} recipients`,
180
- * timeout: 300,
181
- * });
182
- * if (approved) await sendEmails();
183
- */
184
145
  async ask(payload) {
185
- var _a, _b, _c;
146
+ var _a, _b;
186
147
  if (!payload.message)
187
148
  throw new Error("[notiformer] ask.message is required.");
188
149
  if (this.isPlaceholder) {
189
- console.warn('[notiformer] ask() not sent — using example key "ntf_live_test".\n' +
190
- "→ Replace it with your real key from https://app.notiformer.com/projects");
150
+ console.warn("[notiformer] ask() not sent — using example key.");
191
151
  return { approved: false, timedOut: false, respondedAt: null };
192
152
  }
193
153
  if (this.silent)
@@ -206,14 +166,12 @@ class Notiformer {
206
166
  createRes = await this.post("/v1/ask", body);
207
167
  }
208
168
  catch (err) {
209
- return this.failAsk(this.friendlyNetworkError(err));
169
+ return this.failAsk(this.toError(err));
210
170
  }
211
171
  if (!createRes.ok) {
212
- const data = await createRes
213
- .json()
214
- .catch(() => ({ error: `HTTP ${createRes.status}` }));
215
- this.warnUpgrade(data);
216
- return this.failAsk(new Error(`[notiformer] ${(_c = data.error) !== null && _c !== void 0 ? _c : createRes.statusText}`));
172
+ const err = await this.parseError(createRes);
173
+ this.logBilling(err);
174
+ return this.failAsk(err);
217
175
  }
218
176
  const created = (await createRes.json());
219
177
  return this.pollAsk(created.id, new Date(created.expiresAt).getTime());
@@ -221,33 +179,8 @@ class Notiformer {
221
179
  // ─────────────────────────────────────────────────────────────
222
180
  // select()
223
181
  // ─────────────────────────────────────────────────────────────
224
- /**
225
- * Pause execution and wait for a human to choose from multiple options.
226
- *
227
- * Unlike ask() which returns a boolean, select() returns the `value`
228
- * string of the chosen option. Use it when you need more than two actions.
229
- *
230
- * Uses the same monthly quota as ask().
231
- * Never throws by default.
232
- *
233
- * @example
234
- * const { selected } = await n.select({
235
- * message: 'How should I handle the failed payment?',
236
- * options: [
237
- * { value: 'retry', label: '🔄 Retry in 1 hour' },
238
- * { value: 'notify', label: '📧 Notify the customer' },
239
- * { value: 'cancel', label: '✕ Cancel the order', isDestructive: true },
240
- * ],
241
- * fallback: 'notify', // returned automatically on timeout
242
- * timeout: 300,
243
- * });
244
- *
245
- * if (selected === 'retry') await scheduleRetry();
246
- * if (selected === 'notify') await sendEmail();
247
- * if (selected === 'cancel') await cancelOrder();
248
- */
249
182
  async select(payload) {
250
- var _a, _b;
183
+ var _a;
251
184
  if (!payload.message)
252
185
  throw new Error("[notiformer] select.message is required.");
253
186
  if (!payload.options || payload.options.length < 2) {
@@ -257,18 +190,15 @@ class Notiformer {
257
190
  throw new Error("[notiformer] select.options supports a maximum of 6 options.");
258
191
  }
259
192
  if (this.isPlaceholder) {
260
- console.warn('[notiformer] select() not sent — using example key "ntf_live_test".\n' +
261
- "→ Replace it with your real key from https://app.notiformer.com/projects");
193
+ console.warn("[notiformer] select() not sent — using example key.");
262
194
  return { selected: null, timedOut: false, respondedAt: null };
263
195
  }
264
196
  if (this.silent)
265
197
  return { selected: null, timedOut: false, respondedAt: null };
266
- // Local validation: fallback must be a valid option value
267
198
  if (payload.fallback !== undefined) {
268
- const validValues = payload.options.map((o) => o.value);
269
- if (!validValues.includes(payload.fallback)) {
270
- throw new Error(`[notiformer] select.fallback "${payload.fallback}" must match one of the option values: ` +
271
- validValues.join(", "));
199
+ const valid = payload.options.map((o) => o.value);
200
+ if (!valid.includes(payload.fallback)) {
201
+ throw new Error(`[notiformer] select.fallback "${payload.fallback}" must match one of: ${valid.join(", ")}`);
272
202
  }
273
203
  }
274
204
  const body = {
@@ -287,30 +217,25 @@ class Notiformer {
287
217
  createRes = await this.post("/v1/select", body);
288
218
  }
289
219
  catch (err) {
290
- return this.failSelect(this.friendlyNetworkError(err));
220
+ return this.failSelect(this.toError(err));
291
221
  }
292
222
  if (!createRes.ok) {
293
- const data = await createRes
294
- .json()
295
- .catch(() => ({ error: `HTTP ${createRes.status}` }));
296
- this.warnUpgrade(data);
297
- return this.failSelect(new Error(`[notiformer] ${(_b = data.error) !== null && _b !== void 0 ? _b : createRes.statusText}`));
223
+ const err = await this.parseError(createRes);
224
+ this.logBilling(err);
225
+ return this.failSelect(err);
298
226
  }
299
227
  const created = (await createRes.json());
300
228
  return this.pollSelect(created.id, new Date(created.expiresAt).getTime());
301
229
  }
302
230
  // ─────────────────────────────────────────────────────────────
303
- // Private: polling
231
+ // Polling
304
232
  // ─────────────────────────────────────────────────────────────
305
233
  async pollAsk(askId, expiresAtMs) {
306
- var _a, _b;
234
+ var _a;
307
235
  const POLL_MS = 2000;
308
- const GRACE_MS = 5000; // matches server grace period
236
+ const GRACE_MS = 5000;
309
237
  while (true) {
310
238
  await this.sleep(POLL_MS);
311
- // ── Poll FIRST, check expiry after ─────────────────────
312
- // This ensures a response made at the last instant is not
313
- // incorrectly returned as timedOut.
314
239
  try {
315
240
  const res = await this.get(`/v1/ask/${encodeURIComponent(askId)}`);
316
241
  if (res.ok) {
@@ -324,24 +249,20 @@ class Notiformer {
324
249
  }
325
250
  }
326
251
  else if (res.status >= 400 && res.status < 500) {
327
- const data = await res
328
- .json()
329
- .catch(() => ({ error: `HTTP ${res.status}` }));
330
- return this.failAsk(new Error(`[notiformer] ${(_b = data.error) !== null && _b !== void 0 ? _b : res.statusText}`));
252
+ const err = await this.parseError(res);
253
+ return this.failAsk(err);
331
254
  }
332
- // 5xx — fall through to expiry check, retry next loop
333
255
  }
334
- catch (_c) {
335
- // network errorfall through
256
+ catch (_b) {
257
+ // network bliptry again next loop
336
258
  }
337
- // ── Only declare client-side timeout after grace period ─
338
259
  if (Date.now() >= expiresAtMs + GRACE_MS) {
339
260
  return { approved: false, timedOut: true, respondedAt: null };
340
261
  }
341
262
  }
342
263
  }
343
264
  async pollSelect(selectId, expiresAtMs) {
344
- var _a, _b, _c;
265
+ var _a, _b;
345
266
  const POLL_MS = 2000;
346
267
  const GRACE_MS = 5000;
347
268
  while (true) {
@@ -359,14 +280,12 @@ class Notiformer {
359
280
  }
360
281
  }
361
282
  else if (res.status >= 400 && res.status < 500) {
362
- const data = await res
363
- .json()
364
- .catch(() => ({ error: `HTTP ${res.status}` }));
365
- return this.failSelect(new Error(`[notiformer] ${(_c = data.error) !== null && _c !== void 0 ? _c : res.statusText}`));
283
+ const err = await this.parseError(res);
284
+ return this.failSelect(err);
366
285
  }
367
286
  }
368
- catch (_d) {
369
- // network errorfall through
287
+ catch (_c) {
288
+ // network bliptry again
370
289
  }
371
290
  if (Date.now() >= expiresAtMs + GRACE_MS) {
372
291
  return { selected: null, timedOut: true, respondedAt: null };
@@ -374,21 +293,121 @@ class Notiformer {
374
293
  }
375
294
  }
376
295
  // ─────────────────────────────────────────────────────────────
377
- // Private: helpers
296
+ // Error helpers
378
297
  // ─────────────────────────────────────────────────────────────
379
- sleep(ms) {
380
- return new Promise((resolve) => setTimeout(resolve, ms));
298
+ /**
299
+ * Parse an HTTP error response into a typed NotiformerError.
300
+ */
301
+ async parseError(res) {
302
+ var _a, _b;
303
+ const body = await res.json().catch(() => ({}));
304
+ const code = (_a = body.code) !== null && _a !== void 0 ? _a : this.codeFromStatus(res.status);
305
+ const msg = (_b = body.error) !== null && _b !== void 0 ? _b : `HTTP ${res.status} ${res.statusText}`;
306
+ return new types_1.NotiformerError(`[notiformer] ${msg}`, code, {
307
+ status: res.status,
308
+ cycleResetsAt: body.cycleResetsAt,
309
+ manageUrl: body.manageUrl,
310
+ upgradeUrl: body.upgradeUrl,
311
+ });
312
+ }
313
+ codeFromStatus(status) {
314
+ if (status === 401)
315
+ return "invalid_api_key";
316
+ if (status === 402)
317
+ return "card_required";
318
+ if (status === 403)
319
+ return "feature_not_available";
320
+ if (status === 429)
321
+ return "rate_limited";
322
+ if (status >= 500)
323
+ return "internal";
324
+ return "validation";
381
325
  }
382
326
  /**
383
- * If the API response includes an upgradeUrl (quota exceeded),
384
- * print a visible warning in the developer's console.
327
+ * Print a formatted, actionable billing error in the developer console.
385
328
  */
386
- warnUpgrade(data) {
387
- if (data === null || data === void 0 ? void 0 : data.upgradeUrl) {
388
- console.warn(`[notiformer] Plan limit reached. Upgrade your plan to continue:\n` +
389
- `→ ${data.upgradeUrl}`);
329
+ logBilling(err) {
330
+ var _a;
331
+ if (err.code === "cap_reached") {
332
+ const resetStr = err.cycleResetsAt
333
+ ? new Date(err.cycleResetsAt).toDateString()
334
+ : "next billing cycle";
335
+ // The message from the server already contains the plan name.
336
+ // We detect whether this is a Dev quota-exhaustion or a paid-plan
337
+ // overage cap to decide what upgrade copy to show.
338
+ const isDevCap = err.message.toLowerCase().includes("dev plan") ||
339
+ err.message.toLowerCase().includes("trial credit");
340
+ const isTeamCap = err.message.toLowerCase().includes("team plan");
341
+ const lines = [
342
+ ``,
343
+ `┌${"─".repeat(52)}┐`,
344
+ `│ notiformer — usage limit reached${" ".repeat(18)}│`,
345
+ `└${"─".repeat(52)}┘`,
346
+ ``,
347
+ ` ${err.message.replace(/^\[notiformer\]\s*/, "").split(".")[0]}.`,
348
+ ``,
349
+ ];
350
+ if (isDevCap) {
351
+ lines.push(` Upgrade to Pro ($4.99/mo) to keep using Notiformer:`);
352
+ if (err.upgradeUrl)
353
+ lines.push(` → ${err.upgradeUrl}`);
354
+ else if (err.manageUrl)
355
+ lines.push(` → ${err.manageUrl}`);
356
+ }
357
+ else if (isTeamCap) {
358
+ lines.push(` Need a higher cap? Contact us:`);
359
+ lines.push(` → support@notiformer.com`);
360
+ }
361
+ else {
362
+ // Pro overage cap
363
+ lines.push(` Upgrade to Team ($29/mo) or contact us for a higher cap:`);
364
+ if (err.upgradeUrl)
365
+ lines.push(` → ${err.upgradeUrl}`);
366
+ else
367
+ lines.push(` → support@notiformer.com`);
368
+ }
369
+ lines.push(``);
370
+ lines.push(` Usage resets on: ${resetStr}`);
371
+ lines.push(``);
372
+ console.warn(lines.join("\n"));
373
+ return;
374
+ }
375
+ if (err.code === "card_required" || err.code === "card_locked") {
376
+ const action = err.code === "card_required"
377
+ ? "Add a payment method"
378
+ : "Update your payment method";
379
+ const lines = [
380
+ ``,
381
+ `[notiformer] ⚠ ${action}`,
382
+ err.manageUrl ? ` → ${err.manageUrl}` : "",
383
+ ].filter(Boolean);
384
+ console.warn(lines.join("\n"));
385
+ return;
386
+ }
387
+ if (err.code === "feature_not_available") {
388
+ const cleanMsg = err.message.replace(/^\[notiformer\]\s*/, "");
389
+ const manage = (_a = err.upgradeUrl) !== null && _a !== void 0 ? _a : err.manageUrl;
390
+ console.warn(`[notiformer] ⚠ ${cleanMsg}` +
391
+ (manage ? `\n → Upgrade: ${manage}` : ""));
392
+ }
393
+ }
394
+ toError(err) {
395
+ if (err instanceof types_1.NotiformerError)
396
+ return err;
397
+ const msg = err instanceof Error ? err.message.toLowerCase() : "";
398
+ if (msg.includes("aborted") || msg.includes("timeout")) {
399
+ return new types_1.NotiformerError(`[notiformer] Request timed out after ${this.timeout / 1000}s.`, "network");
400
+ }
401
+ if (msg.includes("failed to fetch") ||
402
+ msg.includes("enotfound") ||
403
+ msg.includes("network")) {
404
+ return new types_1.NotiformerError("[notiformer] Cannot reach the Notiformer API. Check your connection.", "network");
390
405
  }
406
+ return new types_1.NotiformerError(err instanceof Error ? err.message : String(err), "internal");
391
407
  }
408
+ // ─────────────────────────────────────────────────────────────
409
+ // Failure handlers (default: don't throw, return safe value)
410
+ // ─────────────────────────────────────────────────────────────
392
411
  failAsk(error) {
393
412
  var _a;
394
413
  this.logger.error(error.message);
@@ -413,10 +432,16 @@ class Notiformer {
413
432
  throw error;
414
433
  return null;
415
434
  }
416
- async post(path, body) {
435
+ // ─────────────────────────────────────────────────────────────
436
+ // HTTP plumbing
437
+ // ─────────────────────────────────────────────────────────────
438
+ sleep(ms) {
439
+ return new Promise((r) => setTimeout(r, ms));
440
+ }
441
+ post(path, body) {
417
442
  return this.request(path, { method: "POST", body: JSON.stringify(body) });
418
443
  }
419
- async get(path) {
444
+ get(path) {
420
445
  return this.request(path, { method: "GET" });
421
446
  }
422
447
  async request(path, init) {
@@ -430,7 +455,7 @@ class Notiformer {
430
455
  headers: {
431
456
  "Content-Type": "application/json",
432
457
  Authorization: `Bearer ${this.apiKey}`,
433
- "X-SDK-Version": "1.1.2",
458
+ "X-SDK-Version": SDK_VERSION,
434
459
  ...((_a = init.headers) !== null && _a !== void 0 ? _a : {}),
435
460
  },
436
461
  });
@@ -439,19 +464,6 @@ class Notiformer {
439
464
  clearTimeout(timer);
440
465
  }
441
466
  }
442
- friendlyNetworkError(err) {
443
- const msg = err instanceof Error ? err.message.toLowerCase() : "";
444
- if (msg.includes("aborted") || msg.includes("timeout")) {
445
- return new Error(`[notiformer] Request timed out after ${this.timeout / 1000}s.`);
446
- }
447
- if (msg.includes("failed to fetch") ||
448
- msg.includes("enotfound") ||
449
- msg.includes("network")) {
450
- return new Error("[notiformer] Cannot reach the Notiformer API.\n" +
451
- "Check your connection. If the issue persists: https://status.notiformer.com");
452
- }
453
- return err instanceof Error ? err : new Error(String(err));
454
- }
455
467
  }
456
468
  exports.Notiformer = Notiformer;
457
469
  exports.default = Notiformer;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;AAaH,qCAAkC;AAClC,mCAAoC;AAepC,MAAM,eAAe,GAAG,eAAe,CAAC;AACxC,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAC7C,MAAM,eAAe,GAAG,IAAK,CAAC;AAC9B,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,MAAa,UAAU;IAWrB,YAAY,MAAwB;;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,oCAAoC;gBAClC,oDAAoD,CACvD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,KAAK,eAAe,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,MAAA,MAAM,CAAC,QAAQ,mCAAI,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,KAAK,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,MAAA,MAAM,CAAC,YAAY,mCAAI,KAAK,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAS,EAAE,CAAC;QAEjC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,IAAI;gBACF,2DAA2D;gBAC3D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,2DAA2D,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,UAAU;IACV,gEAAgE;IAEhE;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,OAAqB;;QAC/B,IAAI,CAAC,OAAO,CAAC,OAAO;YAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,KAAK;YAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,oEAAoE;gBAClE,0EAA0E,CAC7E,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B;gBACpC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,IAAI;aAC/B,CAAC;YAEF,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;gBACnC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACzD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACzD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC5D,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACvC,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAEhD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG;qBACnB,IAAI,EAAE;qBACN,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvB,OAAO,IAAI,CAAC,IAAI,CACd,IAAI,KAAK,CAAC,gBAAgB,MAAA,IAAI,CAAC,KAAK,mCAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAC1D,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkB,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,SAAS;IACT,gEAAgE;IAEhE;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,UAAuB,EAAE;;QAC/C,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,KAAK,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,gBAAgB,CAAC;QAEjD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC;QAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEnE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,iDAAiD;gBACjD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChD,OAAO,CAAC,IAAI,CACV,sBAAsB,GAAG,kDAAkD;wBACzE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC7D,CAAC;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsC,CAAC;YACrE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,GAAW,EACX,UAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAC9E,CAAC;IAED,cAAc,CAAC,GAAY;QACzB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC5D,CAAC;IAED,gEAAgE;IAChE,QAAQ;IACR,gEAAgE;IAEhE;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,GAAG,CAAC,OAAmB;;QAC3B,IAAI,CAAC,OAAO,CAAC,OAAO;YAClB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,oEAAoE;gBAClE,0EAA0E,CAC7E,CAAC;YACF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAEjE,MAAM,IAAI,GAA4B;YACpC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,MAAA,OAAO,CAAC,OAAO,mCAAI,GAAG;YAC/B,QAAQ,EAAE,MAAA,OAAO,CAAC,QAAQ,mCAAI,MAAM;SACrC,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAClE,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAElE,IAAI,SAAmB,CAAC;QACxB,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,MAAM,SAAS;iBACzB,IAAI,EAAE;iBACN,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC,OAAO,CACjB,IAAI,KAAK,CAAC,gBAAgB,MAAA,IAAI,CAAC,KAAK,mCAAI,SAAS,CAAC,UAAU,EAAE,CAAC,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAItC,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,gEAAgE;IAChE,WAAW;IACX,gEAAgE;IAEhE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,MAAM,CAAC,OAAsB;;QACjC,IAAI,CAAC,OAAO,CAAC,OAAO;YAClB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,uEAAuE;gBACrE,0EAA0E,CAC7E,CAAC;YACF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAEhE,0DAA0D;QAC1D,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,CAAC,QAAQ,yCAAyC;oBACxF,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CACzB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAA4B;YACpC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,MAAA,OAAO,CAAC,OAAO,mCAAI,GAAG;SAChC,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAClE,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAClE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAErE,IAAI,SAAmB,CAAC;QACxB,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,MAAM,SAAS;iBACzB,IAAI,EAAE;iBACN,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC,UAAU,CACpB,IAAI,KAAK,CAAC,gBAAgB,MAAA,IAAI,CAAC,KAAK,mCAAI,SAAS,CAAC,UAAU,EAAE,CAAC,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAItC,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,gEAAgE;IAChE,mBAAmB;IACnB,gEAAgE;IAExD,KAAK,CAAC,OAAO,CACnB,KAAa,EACb,WAAmB;;QAEnB,MAAM,OAAO,GAAG,IAAK,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAK,CAAC,CAAC,8BAA8B;QAEtD,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE1B,0DAA0D;YAC1D,0DAA0D;YAC1D,oCAAoC;YACpC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAEnE,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAG7B,CAAC;oBAEF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC9B,OAAO;4BACL,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,UAAU;4BACpC,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,WAAW;4BACrC,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,IAAI;yBACtC,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACjD,MAAM,IAAI,GAAG,MAAM,GAAG;yBACnB,IAAI,EAAE;yBACN,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;oBAClD,OAAO,IAAI,CAAC,OAAO,CACjB,IAAI,KAAK,CAAC,gBAAgB,MAAA,IAAI,CAAC,KAAK,mCAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAC1D,CAAC;gBACJ,CAAC;gBACD,sDAAsD;YACxD,CAAC;YAAC,WAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;YAED,2DAA2D;YAC3D,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,GAAG,QAAQ,EAAE,CAAC;gBACzC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,QAAgB,EAChB,WAAmB;;QAEnB,MAAM,OAAO,GAAG,IAAK,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAK,CAAC;QAEvB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE1B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CACxB,cAAc,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAC7C,CAAC;gBAEF,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAI7B,CAAC;oBAEF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC9B,OAAO;4BACL,QAAQ,EAAE,MAAA,IAAI,CAAC,aAAa,mCAAI,IAAI;4BACpC,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,WAAW;4BACrC,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,IAAI;yBACtC,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACjD,MAAM,IAAI,GAAG,MAAM,GAAG;yBACnB,IAAI,EAAE;yBACN,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;oBAClD,OAAO,IAAI,CAAC,UAAU,CACpB,IAAI,KAAK,CAAC,gBAAgB,MAAA,IAAI,CAAC,KAAK,mCAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAC1D,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,WAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,GAAG,QAAQ,EAAE,CAAC;gBACzC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,mBAAmB;IACnB,gEAAgE;IAExD,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,IAAS;QAC3B,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CACV,mEAAmE;gBACjE,KAAK,IAAI,CAAC,UAAU,EAAE,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,KAAY;;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,MAAA,IAAI,CAAC,OAAO,qDAAG,KAAK,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,KAAK,CAAC;QACnC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACjE,CAAC;IAEO,UAAU,CAAC,KAAY;;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,MAAA,IAAI,CAAC,OAAO,qDAAG,KAAK,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,KAAK,CAAC;QACnC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAEO,IAAI,CAAC,KAAY;;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,MAAA,IAAI,CAAC,OAAO,qDAAG,KAAK,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,KAAK,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAa;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAEO,KAAK,CAAC,GAAG,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,IAAiB;;QACnD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;gBAC3C,GAAG,IAAI;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACtC,eAAe,EAAE,OAAO;oBACxB,GAAG,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,EAAE,CAAC;iBACxB;aACF,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,GAAY;QACvC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,KAAK,CACd,wCAAwC,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAChE,CAAC;QACJ,CAAC;QACD,IACE,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC/B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EACvB,CAAC;YACD,OAAO,IAAI,KAAK,CACd,iDAAiD;gBAC/C,6EAA6E,CAChF,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF;AApgBD,gCAogBC;AAED,kBAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,34 +1,36 @@
1
+ /**
2
+ * SDK types — public surface for consumers of the npm package.
3
+ *
4
+ * Billing error codes returned as HTTP 402/403:
5
+ * - "card_required" → user has no valid card on file
6
+ * - "card_locked" → card declined; grace period expired
7
+ * - "cap_reached" → quota exhausted (Dev) or overage safety cap
8
+ * reached (Pro/Team) for this billing cycle
9
+ * - "feature_not_available" → feature requires Pro or Team plan
10
+ *
11
+ * On "cap_reached", the error object includes:
12
+ * - cycleResetsAt → ISO date when the cycle resets
13
+ * - upgradeUrl → Stripe Checkout URL to upgrade (Dev → Pro or Pro → Team)
14
+ * - manageUrl → Notiformer billing settings URL
15
+ */
1
16
  export interface NotiformerConfig {
2
17
  apiKey: string;
3
18
  silent?: boolean;
4
19
  throwOnError?: boolean;
5
- onError?: (err: Error) => void;
20
+ onError?: (err: NotiformerError) => void;
6
21
  _baseUrl?: string;
7
22
  }
8
23
  export interface EventPayload {
9
- /** Channel name (lowercase, letters, numbers, hyphens, underscores). */
10
24
  channel: string;
11
- /** Short event name. */
12
25
  event: string;
13
26
  description?: string;
14
27
  icon?: string;
15
28
  tags?: Record<string, string | number | boolean>;
16
29
  value?: string | number;
17
- /**
18
- * Whether to send push/email notifications.
19
- * Defaults to true.
20
- */
21
30
  notify?: boolean;
22
31
  /**
23
32
  * Specific email addresses to notify.
24
- *
25
- * If set, **only** these emails receive notifications — the default
26
- * (owner + channel subscribers) is ignored.
27
- *
28
- * Plan limits: Free=1, Starter=3, Pro=10, Business=30.
29
- *
30
- * @example
31
- * recipients: ['alice@company.com', 'bob@company.com']
33
+ * Plan limits: Dev=1, Pro=1, Team=3.
32
34
  */
33
35
  recipients?: string[];
34
36
  }
@@ -36,6 +38,8 @@ export interface EventResponse {
36
38
  id: string;
37
39
  createdAt: string;
38
40
  rateLimited?: boolean;
41
+ /** Cumulative cost of this billing cycle so far, in micro-USD. */
42
+ usageMicroUsd?: number;
39
43
  }
40
44
  export interface GateOptions {
41
45
  fallback?: boolean;
@@ -45,105 +49,60 @@ export interface GateResult {
45
49
  key: string;
46
50
  enabled: boolean;
47
51
  cached: boolean;
48
- fetchedAt: string;
49
52
  }
50
53
  export interface AskPayload {
51
- /** The question shown in the push notification title. */
52
54
  message: string;
53
- /** Optional extra detail shown in the notification body (max 500 chars). */
54
55
  context?: string;
55
- /**
56
- * Optional long-form text shown in the approval detail screen of the
57
- * Notiformer app. Supports newlines — use \n to structure content.
58
- * Max 10,000 characters.
59
- *
60
- * @example
61
- * details: `CHANGES\n• Fix auth bug\n\nROLLBACK\n./rollback.sh v1.0.9`
62
- */
63
56
  details?: string;
64
- /**
65
- * Seconds to wait for a response before applying the fallback.
66
- * Default: 300 (5 min). Maximum depends on your plan:
67
- * Starter=300s, Pro=900s, Business=3600s.
68
- */
57
+ /** Seconds. Max depends on plan: Dev=300s (5 min), Pro/Team=900s (15 min). */
69
58
  timeout?: number;
70
- /**
71
- * What to return if nobody responds before the timeout.
72
- * Default: 'deny' (safe — approved will be false).
73
- */
74
59
  fallback?: "deny" | "approve";
75
60
  }
76
61
  export interface AskResult {
77
- /** true if the user tapped Approve, false if they tapped Deny or it timed out. */
78
62
  approved: boolean;
79
- /** true if nobody responded before the timeout expired. */
80
63
  timedOut: boolean;
81
- /** ISO timestamp of when the user responded. null if timed out. */
82
64
  respondedAt: string | null;
83
65
  }
84
66
  export interface SelectOption {
85
- /**
86
- * The value returned in `result.selected` when this option is chosen.
87
- * Max 50 chars. Use a short descriptive string.
88
- *
89
- * @example 'deploy' | 'rollback' | 'cancel'
90
- */
91
67
  value: string;
92
- /**
93
- * The button label shown in the Notiformer app.
94
- * Max 80 chars. Supports emoji.
95
- *
96
- * @example '🚀 Deploy to production'
97
- */
98
68
  label: string;
99
- /**
100
- * If true, the button is styled destructively (red) in the mobile app.
101
- * Use for dangerous or irreversible actions.
102
- */
103
69
  isDestructive?: boolean;
104
70
  }
105
71
  export interface SelectPayload {
106
- /**
107
- * The question shown as the push notification title. Required.
108
- */
109
72
  message: string;
110
- /**
111
- * The options shown as buttons in the Notiformer app.
112
- * Minimum 2, maximum 6 options.
113
- */
114
73
  options: SelectOption[];
115
- /** Optional detail shown in the notification body (max 500 chars). */
116
74
  context?: string;
117
- /**
118
- * Optional long-form text shown in the approval detail screen.
119
- * Supports newlines. Max 10,000 chars.
120
- */
121
75
  details?: string;
122
- /**
123
- * Seconds to wait before applying the fallback.
124
- * Default: 300. Maximum depends on your plan.
125
- */
126
76
  timeout?: number;
127
- /**
128
- * The option value to return automatically if nobody responds.
129
- * Must match one of the option values exactly.
130
- * If omitted, `selected` is null on timeout.
131
- *
132
- * @example 'cancel' // safe default
133
- */
77
+ /** A value matching one of the option values, used if timed out. */
134
78
  fallback?: string;
135
79
  }
136
80
  export interface SelectResult {
137
- /**
138
- * The value string of the option the user selected,
139
- * or the fallback value on timeout.
140
- * Null if timed out with no fallback set.
141
- */
142
81
  selected: string | null;
143
- /** True if nobody responded before the timeout expired. */
144
82
  timedOut: boolean;
145
- /** ISO timestamp of when the user responded. null if timed out. */
146
83
  respondedAt: string | null;
147
84
  }
85
+ export type NotiformerErrorCode = "invalid_api_key" | "card_required" | "card_locked" | "cap_reached" | "feature_not_available" | "validation" | "rate_limited" | "network" | "internal";
86
+ export declare class NotiformerError extends Error {
87
+ code: NotiformerErrorCode;
88
+ /** HTTP status returned by the API, when applicable. */
89
+ status?: number;
90
+ /** When code = "cap_reached", this is the ISO date when the cycle resets. */
91
+ cycleResetsAt?: string;
92
+ /** URL to manage billing in the Notiformer dashboard. */
93
+ manageUrl?: string;
94
+ /**
95
+ * Direct URL to start the Pro upgrade flow (Stripe Checkout, pre-configured
96
+ * for the authenticated user). Present when code = "cap_reached" on Dev plan.
97
+ * Open this in a browser — the user must be logged into app.notiformer.com.
98
+ */
99
+ upgradeUrl?: string;
100
+ constructor(message: string, code: NotiformerErrorCode, extras?: {
101
+ status?: number;
102
+ cycleResetsAt?: string;
103
+ manageUrl?: string;
104
+ upgradeUrl?: string;
105
+ });
106
+ }
148
107
  export type LogLevel = "debug" | "info" | "warn" | "error" | "none" | "silent";
149
108
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,QAAQ,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAMD,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,3 +1,35 @@
1
1
  "use strict";
2
+ /**
3
+ * SDK types — public surface for consumers of the npm package.
4
+ *
5
+ * Billing error codes returned as HTTP 402/403:
6
+ * - "card_required" → user has no valid card on file
7
+ * - "card_locked" → card declined; grace period expired
8
+ * - "cap_reached" → quota exhausted (Dev) or overage safety cap
9
+ * reached (Pro/Team) for this billing cycle
10
+ * - "feature_not_available" → feature requires Pro or Team plan
11
+ *
12
+ * On "cap_reached", the error object includes:
13
+ * - cycleResetsAt → ISO date when the cycle resets
14
+ * - upgradeUrl → Stripe Checkout URL to upgrade (Dev → Pro or Pro → Team)
15
+ * - manageUrl → Notiformer billing settings URL
16
+ */
2
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.NotiformerError = void 0;
19
+ class NotiformerError extends Error {
20
+ constructor(message, code, extras) {
21
+ super(message);
22
+ this.name = "NotiformerError";
23
+ this.code = code;
24
+ if (extras === null || extras === void 0 ? void 0 : extras.status)
25
+ this.status = extras.status;
26
+ if (extras === null || extras === void 0 ? void 0 : extras.cycleResetsAt)
27
+ this.cycleResetsAt = extras.cycleResetsAt;
28
+ if (extras === null || extras === void 0 ? void 0 : extras.manageUrl)
29
+ this.manageUrl = extras.manageUrl;
30
+ if (extras === null || extras === void 0 ? void 0 : extras.upgradeUrl)
31
+ this.upgradeUrl = extras.upgradeUrl;
32
+ }
33
+ }
34
+ exports.NotiformerError = NotiformerError;
3
35
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAgHH,MAAa,eAAgB,SAAQ,KAAK;IAexC,YACE,OAAe,EACf,IAAyB,EACzB,MAKC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAChD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa;YAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QACrE,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACzD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC9D,CAAC;CACF;AAjCD,0CAiCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "notiformer",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "Human-in-the-loop approval gates and real-time push notifications for AI agents",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",