notiformer 1.1.1 → 1.1.3
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 +27 -80
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +194 -183
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +40 -84
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +29 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,33 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Notiformer — Real-time alerts
|
|
2
|
+
* Notiformer — Real-time alerts, approval gates, and feature flags.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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
|
-
*
|
|
7
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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,35 @@ 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
|
-
*
|
|
104
|
-
|
|
41
|
+
* Parse an HTTP error response into a typed NotiformerError.
|
|
42
|
+
*/
|
|
43
|
+
private parseError;
|
|
44
|
+
private codeFromStatus;
|
|
45
|
+
/**
|
|
46
|
+
* Print a user-friendly message for billing errors (402).
|
|
47
|
+
* This is what developers see in their console — should be actionable.
|
|
48
|
+
*/
|
|
49
|
+
/**
|
|
50
|
+
* Print a formatted, actionable billing error in the developer console.
|
|
105
51
|
*/
|
|
106
|
-
private
|
|
52
|
+
private logBilling;
|
|
53
|
+
private toError;
|
|
107
54
|
private failAsk;
|
|
108
55
|
private failSelect;
|
|
109
56
|
private fail;
|
|
57
|
+
private sleep;
|
|
110
58
|
private post;
|
|
111
59
|
private get;
|
|
112
60
|
private request;
|
|
113
|
-
private friendlyNetworkError;
|
|
114
61
|
}
|
|
115
62
|
export default Notiformer;
|
|
116
63
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
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;;;OAGG;IACH;;OAEG;IACH,OAAO,CAAC,UAAU;IA8DlB,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
|
|
3
|
+
* Notiformer — Real-time alerts, approval gates, and feature flags.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
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
|
-
*
|
|
8
|
-
*
|
|
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
|
-
*
|
|
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
|
-
"│
|
|
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
|
|
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"
|
|
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
|
|
108
|
-
|
|
109
|
-
|
|
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.
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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
|
|
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
|
|
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(
|
|
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.
|
|
169
|
+
return this.failAsk(this.toError(err));
|
|
210
170
|
}
|
|
211
171
|
if (!createRes.ok) {
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
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
|
|
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(
|
|
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
|
|
269
|
-
if (!
|
|
270
|
-
throw new Error(`[notiformer] select.fallback "${payload.fallback}" must match one of
|
|
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,103 +217,191 @@ class Notiformer {
|
|
|
287
217
|
createRes = await this.post("/v1/select", body);
|
|
288
218
|
}
|
|
289
219
|
catch (err) {
|
|
290
|
-
return this.failSelect(this.
|
|
220
|
+
return this.failSelect(this.toError(err));
|
|
291
221
|
}
|
|
292
222
|
if (!createRes.ok) {
|
|
293
|
-
const
|
|
294
|
-
|
|
295
|
-
|
|
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
|
-
//
|
|
231
|
+
// Polling
|
|
304
232
|
// ─────────────────────────────────────────────────────────────
|
|
305
233
|
async pollAsk(askId, expiresAtMs) {
|
|
306
|
-
var _a
|
|
234
|
+
var _a;
|
|
307
235
|
const POLL_MS = 2000;
|
|
236
|
+
const GRACE_MS = 5000;
|
|
308
237
|
while (true) {
|
|
309
238
|
await this.sleep(POLL_MS);
|
|
310
|
-
if (Date.now() >= expiresAtMs) {
|
|
311
|
-
return { approved: false, timedOut: true, respondedAt: null };
|
|
312
|
-
}
|
|
313
239
|
try {
|
|
314
240
|
const res = await this.get(`/v1/ask/${encodeURIComponent(askId)}`);
|
|
315
|
-
if (
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
241
|
+
if (res.ok) {
|
|
242
|
+
const data = (await res.json());
|
|
243
|
+
if (data.status !== "pending") {
|
|
244
|
+
return {
|
|
245
|
+
approved: data.status === "approved",
|
|
246
|
+
timedOut: data.status === "timed_out",
|
|
247
|
+
respondedAt: (_a = data.respondedAt) !== null && _a !== void 0 ? _a : null,
|
|
248
|
+
};
|
|
321
249
|
}
|
|
322
|
-
continue; // 5xx — retry
|
|
323
250
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
approved: data.status === "approved",
|
|
329
|
-
timedOut: data.status === "timed_out",
|
|
330
|
-
respondedAt: (_b = data.respondedAt) !== null && _b !== void 0 ? _b : null,
|
|
331
|
-
};
|
|
251
|
+
else if (res.status >= 400 && res.status < 500) {
|
|
252
|
+
const err = await this.parseError(res);
|
|
253
|
+
return this.failAsk(err);
|
|
254
|
+
}
|
|
332
255
|
}
|
|
333
|
-
catch (
|
|
334
|
-
|
|
256
|
+
catch (_b) {
|
|
257
|
+
// network blip — try again next loop
|
|
258
|
+
}
|
|
259
|
+
if (Date.now() >= expiresAtMs + GRACE_MS) {
|
|
260
|
+
return { approved: false, timedOut: true, respondedAt: null };
|
|
335
261
|
}
|
|
336
262
|
}
|
|
337
263
|
}
|
|
338
264
|
async pollSelect(selectId, expiresAtMs) {
|
|
339
|
-
var _a, _b
|
|
265
|
+
var _a, _b;
|
|
340
266
|
const POLL_MS = 2000;
|
|
267
|
+
const GRACE_MS = 5000;
|
|
341
268
|
while (true) {
|
|
342
269
|
await this.sleep(POLL_MS);
|
|
343
|
-
if (Date.now() >= expiresAtMs) {
|
|
344
|
-
return { selected: null, timedOut: true, respondedAt: null };
|
|
345
|
-
}
|
|
346
270
|
try {
|
|
347
271
|
const res = await this.get(`/v1/select/${encodeURIComponent(selectId)}`);
|
|
348
|
-
if (
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
.
|
|
353
|
-
|
|
272
|
+
if (res.ok) {
|
|
273
|
+
const data = (await res.json());
|
|
274
|
+
if (data.status !== "pending") {
|
|
275
|
+
return {
|
|
276
|
+
selected: (_a = data.selectedValue) !== null && _a !== void 0 ? _a : null,
|
|
277
|
+
timedOut: data.status === "timed_out",
|
|
278
|
+
respondedAt: (_b = data.respondedAt) !== null && _b !== void 0 ? _b : null,
|
|
279
|
+
};
|
|
354
280
|
}
|
|
355
|
-
continue; // 5xx — retry
|
|
356
281
|
}
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
selected: (_b = data.selectedValue) !== null && _b !== void 0 ? _b : null,
|
|
362
|
-
timedOut: data.status === "timed_out",
|
|
363
|
-
respondedAt: (_c = data.respondedAt) !== null && _c !== void 0 ? _c : null,
|
|
364
|
-
};
|
|
282
|
+
else if (res.status >= 400 && res.status < 500) {
|
|
283
|
+
const err = await this.parseError(res);
|
|
284
|
+
return this.failSelect(err);
|
|
285
|
+
}
|
|
365
286
|
}
|
|
366
|
-
catch (
|
|
367
|
-
|
|
287
|
+
catch (_c) {
|
|
288
|
+
// network blip — try again
|
|
289
|
+
}
|
|
290
|
+
if (Date.now() >= expiresAtMs + GRACE_MS) {
|
|
291
|
+
return { selected: null, timedOut: true, respondedAt: null };
|
|
368
292
|
}
|
|
369
293
|
}
|
|
370
294
|
}
|
|
371
295
|
// ─────────────────────────────────────────────────────────────
|
|
372
|
-
//
|
|
296
|
+
// Error helpers
|
|
373
297
|
// ─────────────────────────────────────────────────────────────
|
|
374
|
-
|
|
375
|
-
|
|
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";
|
|
376
325
|
}
|
|
377
326
|
/**
|
|
378
|
-
*
|
|
379
|
-
*
|
|
327
|
+
* Print a user-friendly message for billing errors (402).
|
|
328
|
+
* This is what developers see in their console — should be actionable.
|
|
380
329
|
*/
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
330
|
+
/**
|
|
331
|
+
* Print a formatted, actionable billing error in the developer console.
|
|
332
|
+
*/
|
|
333
|
+
logBilling(err) {
|
|
334
|
+
var _a;
|
|
335
|
+
const hr = "─".repeat(52);
|
|
336
|
+
if (err.code === "cap_reached") {
|
|
337
|
+
const resetStr = err.cycleResetsAt
|
|
338
|
+
? new Date(err.cycleResetsAt).toDateString()
|
|
339
|
+
: "next billing cycle";
|
|
340
|
+
const isProCap = err.message.toLowerCase().includes("pro plan");
|
|
341
|
+
const lines = [
|
|
342
|
+
``,
|
|
343
|
+
`┌${"─".repeat(52)}┐`,
|
|
344
|
+
`│ notiformer — spending cap reached${" ".repeat(17)}│`,
|
|
345
|
+
`└${"─".repeat(52)}┘`,
|
|
346
|
+
``,
|
|
347
|
+
` ${err.message.split(".")[0]}.`,
|
|
348
|
+
``,
|
|
349
|
+
];
|
|
350
|
+
if (isProCap) {
|
|
351
|
+
lines.push(` Need a higher limit?`);
|
|
352
|
+
lines.push(` → Email: support@notiformer.com`);
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
lines.push(` Upgrade to Pro (€4.99/mo) to keep using Notiformer:`);
|
|
356
|
+
if (err.upgradeUrl) {
|
|
357
|
+
lines.push(` → ${err.upgradeUrl}`);
|
|
358
|
+
}
|
|
359
|
+
else if (err.manageUrl) {
|
|
360
|
+
lines.push(` → ${err.manageUrl}`);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
lines.push(``);
|
|
364
|
+
lines.push(` Usage resets on: ${resetStr}`);
|
|
365
|
+
lines.push(``);
|
|
366
|
+
console.warn(lines.join("\n"));
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
if (err.code === "card_required" || err.code === "card_locked") {
|
|
370
|
+
const action = err.code === "card_required"
|
|
371
|
+
? "Add a payment method"
|
|
372
|
+
: "Update your payment method";
|
|
373
|
+
const lines = [
|
|
374
|
+
``,
|
|
375
|
+
`[notiformer] ⚠ ${action}`,
|
|
376
|
+
err.manageUrl ? ` → ${err.manageUrl}` : "",
|
|
377
|
+
].filter(Boolean);
|
|
378
|
+
console.warn(lines.join("\n"));
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
if (err.code === "feature_not_available") {
|
|
382
|
+
const cleanMsg = err.message.replace(/^\[notiformer\]\s*/, "");
|
|
383
|
+
const manage = (_a = err.upgradeUrl) !== null && _a !== void 0 ? _a : err.manageUrl;
|
|
384
|
+
console.warn(`[notiformer] ⚠ ${cleanMsg}` +
|
|
385
|
+
(manage ? `\n → Upgrade: ${manage}` : ""));
|
|
385
386
|
}
|
|
386
387
|
}
|
|
388
|
+
toError(err) {
|
|
389
|
+
if (err instanceof types_1.NotiformerError)
|
|
390
|
+
return err;
|
|
391
|
+
const msg = err instanceof Error ? err.message.toLowerCase() : "";
|
|
392
|
+
if (msg.includes("aborted") || msg.includes("timeout")) {
|
|
393
|
+
return new types_1.NotiformerError(`[notiformer] Request timed out after ${this.timeout / 1000}s.`, "network");
|
|
394
|
+
}
|
|
395
|
+
if (msg.includes("failed to fetch") ||
|
|
396
|
+
msg.includes("enotfound") ||
|
|
397
|
+
msg.includes("network")) {
|
|
398
|
+
return new types_1.NotiformerError("[notiformer] Cannot reach the Notiformer API. Check your connection.", "network");
|
|
399
|
+
}
|
|
400
|
+
return new types_1.NotiformerError(err instanceof Error ? err.message : String(err), "internal");
|
|
401
|
+
}
|
|
402
|
+
// ─────────────────────────────────────────────────────────────
|
|
403
|
+
// Failure handlers (default: don't throw, return safe value)
|
|
404
|
+
// ─────────────────────────────────────────────────────────────
|
|
387
405
|
failAsk(error) {
|
|
388
406
|
var _a;
|
|
389
407
|
this.logger.error(error.message);
|
|
@@ -408,10 +426,16 @@ class Notiformer {
|
|
|
408
426
|
throw error;
|
|
409
427
|
return null;
|
|
410
428
|
}
|
|
411
|
-
|
|
429
|
+
// ─────────────────────────────────────────────────────────────
|
|
430
|
+
// HTTP plumbing
|
|
431
|
+
// ─────────────────────────────────────────────────────────────
|
|
432
|
+
sleep(ms) {
|
|
433
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
434
|
+
}
|
|
435
|
+
post(path, body) {
|
|
412
436
|
return this.request(path, { method: "POST", body: JSON.stringify(body) });
|
|
413
437
|
}
|
|
414
|
-
|
|
438
|
+
get(path) {
|
|
415
439
|
return this.request(path, { method: "GET" });
|
|
416
440
|
}
|
|
417
441
|
async request(path, init) {
|
|
@@ -425,7 +449,7 @@ class Notiformer {
|
|
|
425
449
|
headers: {
|
|
426
450
|
"Content-Type": "application/json",
|
|
427
451
|
Authorization: `Bearer ${this.apiKey}`,
|
|
428
|
-
"X-SDK-Version":
|
|
452
|
+
"X-SDK-Version": SDK_VERSION,
|
|
429
453
|
...((_a = init.headers) !== null && _a !== void 0 ? _a : {}),
|
|
430
454
|
},
|
|
431
455
|
});
|
|
@@ -434,19 +458,6 @@ class Notiformer {
|
|
|
434
458
|
clearTimeout(timer);
|
|
435
459
|
}
|
|
436
460
|
}
|
|
437
|
-
friendlyNetworkError(err) {
|
|
438
|
-
const msg = err instanceof Error ? err.message.toLowerCase() : "";
|
|
439
|
-
if (msg.includes("aborted") || msg.includes("timeout")) {
|
|
440
|
-
return new Error(`[notiformer] Request timed out after ${this.timeout / 1000}s.`);
|
|
441
|
-
}
|
|
442
|
-
if (msg.includes("failed to fetch") ||
|
|
443
|
-
msg.includes("enotfound") ||
|
|
444
|
-
msg.includes("network")) {
|
|
445
|
-
return new Error("[notiformer] Cannot reach the Notiformer API.\n" +
|
|
446
|
-
"Check your connection. If the issue persists: https://status.notiformer.com");
|
|
447
|
-
}
|
|
448
|
-
return err instanceof Error ? err : new Error(String(err));
|
|
449
|
-
}
|
|
450
461
|
}
|
|
451
462
|
exports.Notiformer = Notiformer;
|
|
452
463
|
exports.default = Notiformer;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
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,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK types — public surface for consumers of the npm package.
|
|
3
|
+
*
|
|
4
|
+
* The new error codes for the v2 billing model:
|
|
5
|
+
* - "card_required" → user has no valid card on file (402)
|
|
6
|
+
* - "card_locked" → card declined; grace period expired (402)
|
|
7
|
+
* - "cap_reached" → hard system cap hit for this billing cycle (402)
|
|
8
|
+
* - "feature_not_available"→ feature requires Pro plan (403)
|
|
9
|
+
*
|
|
10
|
+
* The old "quota_exceeded" code is gone — there is no monthly event limit
|
|
11
|
+
* anymore, only a credit allowance + cap.
|
|
12
|
+
*/
|
|
1
13
|
export interface NotiformerConfig {
|
|
2
14
|
apiKey: string;
|
|
3
15
|
silent?: boolean;
|
|
4
16
|
throwOnError?: boolean;
|
|
5
|
-
onError?: (err:
|
|
17
|
+
onError?: (err: NotiformerError) => void;
|
|
6
18
|
_baseUrl?: string;
|
|
7
19
|
}
|
|
8
20
|
export interface EventPayload {
|
|
9
|
-
/** Channel name (lowercase, letters, numbers, hyphens, underscores). */
|
|
10
21
|
channel: string;
|
|
11
|
-
/** Short event name. */
|
|
12
22
|
event: string;
|
|
13
23
|
description?: string;
|
|
14
24
|
icon?: string;
|
|
15
25
|
tags?: Record<string, string | number | boolean>;
|
|
16
26
|
value?: string | number;
|
|
17
|
-
/**
|
|
18
|
-
* Whether to send push/email notifications.
|
|
19
|
-
* Defaults to true.
|
|
20
|
-
*/
|
|
21
27
|
notify?: boolean;
|
|
22
28
|
/**
|
|
23
29
|
* 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']
|
|
30
|
+
* Plan limits: Dev=1, Pro=10.
|
|
32
31
|
*/
|
|
33
32
|
recipients?: string[];
|
|
34
33
|
}
|
|
@@ -36,6 +35,8 @@ export interface EventResponse {
|
|
|
36
35
|
id: string;
|
|
37
36
|
createdAt: string;
|
|
38
37
|
rateLimited?: boolean;
|
|
38
|
+
/** Cumulative cost of this billing cycle so far, in micro-USD. */
|
|
39
|
+
usageMicroUsd?: number;
|
|
39
40
|
}
|
|
40
41
|
export interface GateOptions {
|
|
41
42
|
fallback?: boolean;
|
|
@@ -45,105 +46,60 @@ export interface GateResult {
|
|
|
45
46
|
key: string;
|
|
46
47
|
enabled: boolean;
|
|
47
48
|
cached: boolean;
|
|
48
|
-
fetchedAt: string;
|
|
49
49
|
}
|
|
50
50
|
export interface AskPayload {
|
|
51
|
-
/** The question shown in the push notification title. */
|
|
52
51
|
message: string;
|
|
53
|
-
/** Optional extra detail shown in the notification body (max 500 chars). */
|
|
54
52
|
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
53
|
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
|
-
*/
|
|
54
|
+
/** Seconds. Max depends on plan: Dev=300, Pro=900. */
|
|
69
55
|
timeout?: number;
|
|
70
|
-
/**
|
|
71
|
-
* What to return if nobody responds before the timeout.
|
|
72
|
-
* Default: 'deny' (safe — approved will be false).
|
|
73
|
-
*/
|
|
74
56
|
fallback?: "deny" | "approve";
|
|
75
57
|
}
|
|
76
58
|
export interface AskResult {
|
|
77
|
-
/** true if the user tapped Approve, false if they tapped Deny or it timed out. */
|
|
78
59
|
approved: boolean;
|
|
79
|
-
/** true if nobody responded before the timeout expired. */
|
|
80
60
|
timedOut: boolean;
|
|
81
|
-
/** ISO timestamp of when the user responded. null if timed out. */
|
|
82
61
|
respondedAt: string | null;
|
|
83
62
|
}
|
|
84
63
|
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
64
|
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
65
|
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
66
|
isDestructive?: boolean;
|
|
104
67
|
}
|
|
105
68
|
export interface SelectPayload {
|
|
106
|
-
/**
|
|
107
|
-
* The question shown as the push notification title. Required.
|
|
108
|
-
*/
|
|
109
69
|
message: string;
|
|
110
|
-
/**
|
|
111
|
-
* The options shown as buttons in the Notiformer app.
|
|
112
|
-
* Minimum 2, maximum 6 options.
|
|
113
|
-
*/
|
|
114
70
|
options: SelectOption[];
|
|
115
|
-
/** Optional detail shown in the notification body (max 500 chars). */
|
|
116
71
|
context?: string;
|
|
117
|
-
/**
|
|
118
|
-
* Optional long-form text shown in the approval detail screen.
|
|
119
|
-
* Supports newlines. Max 10,000 chars.
|
|
120
|
-
*/
|
|
121
72
|
details?: string;
|
|
122
|
-
/**
|
|
123
|
-
* Seconds to wait before applying the fallback.
|
|
124
|
-
* Default: 300. Maximum depends on your plan.
|
|
125
|
-
*/
|
|
126
73
|
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
|
-
*/
|
|
74
|
+
/** A value matching one of the option values, used if timed out. */
|
|
134
75
|
fallback?: string;
|
|
135
76
|
}
|
|
136
77
|
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
78
|
selected: string | null;
|
|
143
|
-
/** True if nobody responded before the timeout expired. */
|
|
144
79
|
timedOut: boolean;
|
|
145
|
-
/** ISO timestamp of when the user responded. null if timed out. */
|
|
146
80
|
respondedAt: string | null;
|
|
147
81
|
}
|
|
82
|
+
export type NotiformerErrorCode = "invalid_api_key" | "card_required" | "card_locked" | "cap_reached" | "feature_not_available" | "validation" | "rate_limited" | "network" | "internal";
|
|
83
|
+
export declare class NotiformerError extends Error {
|
|
84
|
+
code: NotiformerErrorCode;
|
|
85
|
+
/** HTTP status returned by the API, when applicable. */
|
|
86
|
+
status?: number;
|
|
87
|
+
/** When code = "cap_reached", this is the ISO date when the cycle resets. */
|
|
88
|
+
cycleResetsAt?: string;
|
|
89
|
+
/** URL to manage billing in the Notiformer dashboard. */
|
|
90
|
+
manageUrl?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Direct URL to start the Pro upgrade flow (Stripe Checkout, pre-configured
|
|
93
|
+
* for the authenticated user). Present when code = "cap_reached" on Dev plan.
|
|
94
|
+
* Open this in a browser — the user must be logged into app.notiformer.com.
|
|
95
|
+
*/
|
|
96
|
+
upgradeUrl?: string;
|
|
97
|
+
constructor(message: string, code: NotiformerErrorCode, extras?: {
|
|
98
|
+
status?: number;
|
|
99
|
+
cycleResetsAt?: string;
|
|
100
|
+
manageUrl?: string;
|
|
101
|
+
upgradeUrl?: string;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
148
104
|
export type LogLevel = "debug" | "info" | "warn" | "error" | "none" | "silent";
|
|
149
105
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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,
|
|
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,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SDK types — public surface for consumers of the npm package.
|
|
4
|
+
*
|
|
5
|
+
* The new error codes for the v2 billing model:
|
|
6
|
+
* - "card_required" → user has no valid card on file (402)
|
|
7
|
+
* - "card_locked" → card declined; grace period expired (402)
|
|
8
|
+
* - "cap_reached" → hard system cap hit for this billing cycle (402)
|
|
9
|
+
* - "feature_not_available"→ feature requires Pro plan (403)
|
|
10
|
+
*
|
|
11
|
+
* The old "quota_exceeded" code is gone — there is no monthly event limit
|
|
12
|
+
* anymore, only a credit allowance + cap.
|
|
13
|
+
*/
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.NotiformerError = void 0;
|
|
16
|
+
class NotiformerError extends Error {
|
|
17
|
+
constructor(message, code, extras) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = "NotiformerError";
|
|
20
|
+
this.code = code;
|
|
21
|
+
if (extras === null || extras === void 0 ? void 0 : extras.status)
|
|
22
|
+
this.status = extras.status;
|
|
23
|
+
if (extras === null || extras === void 0 ? void 0 : extras.cycleResetsAt)
|
|
24
|
+
this.cycleResetsAt = extras.cycleResetsAt;
|
|
25
|
+
if (extras === null || extras === void 0 ? void 0 : extras.manageUrl)
|
|
26
|
+
this.manageUrl = extras.manageUrl;
|
|
27
|
+
if (extras === null || extras === void 0 ? void 0 : extras.upgradeUrl)
|
|
28
|
+
this.upgradeUrl = extras.upgradeUrl;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.NotiformerError = NotiformerError;
|
|
3
32
|
//# 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;;;;;;;;;;;GAWG;;;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"}
|