@cronwatch/sdk 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -7
- package/dist/anthropic.d.cts +1 -1
- package/dist/anthropic.d.ts +1 -1
- package/dist/bugsnag.cjs +108 -0
- package/dist/bugsnag.cjs.map +1 -0
- package/dist/bugsnag.d.cts +26 -0
- package/dist/bugsnag.d.ts +26 -0
- package/dist/bugsnag.js +106 -0
- package/dist/bugsnag.js.map +1 -0
- package/dist/client-B7bqnkI5.d.cts +450 -0
- package/dist/client-pmqH3apS.d.ts +450 -0
- package/dist/d1.cjs +214 -0
- package/dist/d1.cjs.map +1 -0
- package/dist/d1.d.cts +42 -0
- package/dist/d1.d.ts +42 -0
- package/dist/d1.js +212 -0
- package/dist/d1.js.map +1 -0
- package/dist/datadog.cjs +95 -0
- package/dist/datadog.cjs.map +1 -0
- package/dist/datadog.d.cts +24 -0
- package/dist/datadog.d.ts +24 -0
- package/dist/datadog.js +93 -0
- package/dist/datadog.js.map +1 -0
- package/dist/discord.cjs +2 -0
- package/dist/discord.cjs.map +1 -1
- package/dist/discord.d.cts +1 -1
- package/dist/discord.d.ts +1 -1
- package/dist/discord.js +2 -0
- package/dist/discord.js.map +1 -1
- package/dist/email-BJ-z_epD.d.cts +21 -0
- package/dist/email-_H0faCh3.d.ts +21 -0
- package/dist/honeybadger.cjs +101 -0
- package/dist/honeybadger.cjs.map +1 -0
- package/dist/honeybadger.d.cts +23 -0
- package/dist/honeybadger.d.ts +23 -0
- package/dist/honeybadger.js +99 -0
- package/dist/honeybadger.js.map +1 -0
- package/dist/index.cjs +692 -124
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -228
- package/dist/index.d.ts +5 -228
- package/dist/index.js +692 -124
- package/dist/index.js.map +1 -1
- package/dist/mailgun.cjs +115 -0
- package/dist/mailgun.cjs.map +1 -0
- package/dist/mailgun.d.cts +21 -0
- package/dist/mailgun.d.ts +21 -0
- package/dist/mailgun.js +113 -0
- package/dist/mailgun.js.map +1 -0
- package/dist/newrelic.cjs +88 -0
- package/dist/newrelic.cjs.map +1 -0
- package/dist/newrelic.d.cts +25 -0
- package/dist/newrelic.d.ts +25 -0
- package/dist/newrelic.js +86 -0
- package/dist/newrelic.js.map +1 -0
- package/dist/node.cjs +191 -0
- package/dist/node.cjs.map +1 -0
- package/dist/node.d.cts +97 -0
- package/dist/node.d.ts +97 -0
- package/dist/node.js +186 -0
- package/dist/node.js.map +1 -0
- package/dist/pg-cron.cjs +286 -0
- package/dist/pg-cron.cjs.map +1 -0
- package/dist/pg-cron.d.cts +93 -0
- package/dist/pg-cron.d.ts +93 -0
- package/dist/pg-cron.js +280 -0
- package/dist/pg-cron.js.map +1 -0
- package/dist/postgres.cjs +33 -1
- package/dist/postgres.cjs.map +1 -1
- package/dist/postgres.d.cts +1 -1
- package/dist/postgres.d.ts +1 -1
- package/dist/postgres.js +33 -1
- package/dist/postgres.js.map +1 -1
- package/dist/postmark.cjs +106 -0
- package/dist/postmark.cjs.map +1 -0
- package/dist/postmark.d.cts +18 -0
- package/dist/postmark.d.ts +18 -0
- package/dist/postmark.js +104 -0
- package/dist/postmark.js.map +1 -0
- package/dist/resend.cjs +114 -0
- package/dist/resend.cjs.map +1 -0
- package/dist/resend.d.cts +16 -0
- package/dist/resend.d.ts +16 -0
- package/dist/resend.js +112 -0
- package/dist/resend.js.map +1 -0
- package/dist/rollbar.cjs +108 -0
- package/dist/rollbar.cjs.map +1 -0
- package/dist/rollbar.d.cts +20 -0
- package/dist/rollbar.d.ts +20 -0
- package/dist/rollbar.js +106 -0
- package/dist/rollbar.js.map +1 -0
- package/dist/sendgrid.cjs +114 -0
- package/dist/sendgrid.cjs.map +1 -0
- package/dist/sendgrid.d.cts +19 -0
- package/dist/sendgrid.d.ts +19 -0
- package/dist/sendgrid.js +112 -0
- package/dist/sendgrid.js.map +1 -0
- package/dist/sentry.cjs +130 -0
- package/dist/sentry.cjs.map +1 -0
- package/dist/sentry.d.cts +28 -0
- package/dist/sentry.d.ts +28 -0
- package/dist/sentry.js +127 -0
- package/dist/sentry.js.map +1 -0
- package/dist/ses.cjs +170 -0
- package/dist/ses.cjs.map +1 -0
- package/dist/ses.d.cts +25 -0
- package/dist/ses.d.ts +25 -0
- package/dist/ses.js +168 -0
- package/dist/ses.js.map +1 -0
- package/dist/slack.cjs +2 -0
- package/dist/slack.cjs.map +1 -1
- package/dist/slack.d.cts +1 -1
- package/dist/slack.d.ts +1 -1
- package/dist/slack.js +2 -0
- package/dist/slack.js.map +1 -1
- package/dist/sqlite.cjs +62 -5
- package/dist/sqlite.cjs.map +1 -1
- package/dist/sqlite.d.cts +1 -1
- package/dist/sqlite.d.ts +1 -1
- package/dist/sqlite.js +62 -5
- package/dist/sqlite.js.map +1 -1
- package/dist/twilio.cjs +168 -0
- package/dist/twilio.cjs.map +1 -0
- package/dist/twilio.d.cts +52 -0
- package/dist/twilio.d.ts +52 -0
- package/dist/twilio.js +162 -0
- package/dist/twilio.js.map +1 -0
- package/dist/{types-C1PyRjI5.d.cts → types-Ddq1MUPL.d.cts} +50 -4
- package/dist/{types-C1PyRjI5.d.ts → types-Ddq1MUPL.d.ts} +50 -4
- package/dist/webhook.cjs +11 -5
- package/dist/webhook.cjs.map +1 -1
- package/dist/webhook.d.cts +6 -3
- package/dist/webhook.d.ts +6 -3
- package/dist/webhook.js +11 -6
- package/dist/webhook.js.map +1 -1
- package/package.json +211 -5
package/dist/webhook.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as AlertChannel } from './types-
|
|
1
|
+
import { a as AlertChannel } from './types-Ddq1MUPL.cjs';
|
|
2
2
|
|
|
3
3
|
interface WebhookOptions {
|
|
4
4
|
url: string;
|
|
5
|
-
/** Extra request headers, for an Authorization header say. */
|
|
5
|
+
/** Extra request headers, for an Authorization header say. Values are trimmed. */
|
|
6
6
|
headers?: Record<string, string>;
|
|
7
7
|
/**
|
|
8
8
|
* When set, each request carries `X-CronWatch-Signature: sha256=<hex>`,
|
|
@@ -14,7 +14,10 @@ interface WebhookOptions {
|
|
|
14
14
|
/**
|
|
15
15
|
* POSTs the alert as JSON to any URL. The body is the Alert object:
|
|
16
16
|
* { type, job, title, message, run, details, triage, at, definition }.
|
|
17
|
+
* A redirect is an error: point the url at where the receiver really is.
|
|
17
18
|
*/
|
|
18
19
|
declare function webhook(options: WebhookOptions): AlertChannel;
|
|
20
|
+
/** HMAC-SHA256 as lowercase hex, with Web Crypto so it runs on Workers and Deno too. */
|
|
21
|
+
declare function hmacSha256Hex(secret: string, body: string): Promise<string>;
|
|
19
22
|
|
|
20
|
-
export { type WebhookOptions, webhook };
|
|
23
|
+
export { type WebhookOptions, hmacSha256Hex, webhook };
|
package/dist/webhook.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as AlertChannel } from './types-
|
|
1
|
+
import { a as AlertChannel } from './types-Ddq1MUPL.js';
|
|
2
2
|
|
|
3
3
|
interface WebhookOptions {
|
|
4
4
|
url: string;
|
|
5
|
-
/** Extra request headers, for an Authorization header say. */
|
|
5
|
+
/** Extra request headers, for an Authorization header say. Values are trimmed. */
|
|
6
6
|
headers?: Record<string, string>;
|
|
7
7
|
/**
|
|
8
8
|
* When set, each request carries `X-CronWatch-Signature: sha256=<hex>`,
|
|
@@ -14,7 +14,10 @@ interface WebhookOptions {
|
|
|
14
14
|
/**
|
|
15
15
|
* POSTs the alert as JSON to any URL. The body is the Alert object:
|
|
16
16
|
* { type, job, title, message, run, details, triage, at, definition }.
|
|
17
|
+
* A redirect is an error: point the url at where the receiver really is.
|
|
17
18
|
*/
|
|
18
19
|
declare function webhook(options: WebhookOptions): AlertChannel;
|
|
20
|
+
/** HMAC-SHA256 as lowercase hex, with Web Crypto so it runs on Workers and Deno too. */
|
|
21
|
+
declare function hmacSha256Hex(secret: string, body: string): Promise<string>;
|
|
19
22
|
|
|
20
|
-
export { type WebhookOptions, webhook };
|
|
23
|
+
export { type WebhookOptions, hmacSha256Hex, webhook };
|
package/dist/webhook.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { createHmac } from 'crypto';
|
|
2
|
-
|
|
3
1
|
// src/alerts/webhook.ts
|
|
4
2
|
var TIMEOUT_MS = 1e4;
|
|
5
3
|
function origin(url) {
|
|
@@ -15,16 +13,23 @@ function webhook(options) {
|
|
|
15
13
|
name: "webhook",
|
|
16
14
|
async send(alert) {
|
|
17
15
|
const body = JSON.stringify(alert);
|
|
18
|
-
const headers = { "content-type": "application/json", "user-agent": "cronwatch"
|
|
16
|
+
const headers = { "content-type": "application/json", "user-agent": "cronwatch" };
|
|
17
|
+
for (const [name, value] of Object.entries(options.headers ?? {})) headers[name] = typeof value === "string" ? value.trim() : value;
|
|
19
18
|
if (options.secret) {
|
|
20
|
-
headers["x-cronwatch-signature"] = `sha256=${
|
|
19
|
+
headers["x-cronwatch-signature"] = `sha256=${await hmacSha256Hex(options.secret, body)}`;
|
|
21
20
|
}
|
|
22
|
-
const response = await fetch(options.url, { method: "POST", headers, body, signal: AbortSignal.timeout(TIMEOUT_MS) });
|
|
21
|
+
const response = await fetch(options.url, { method: "POST", headers, body, redirect: "error", signal: AbortSignal.timeout(TIMEOUT_MS) });
|
|
23
22
|
if (!response.ok) throw new Error(`Webhook ${origin(options.url)} answered ${response.status}`);
|
|
24
23
|
}
|
|
25
24
|
};
|
|
26
25
|
}
|
|
26
|
+
async function hmacSha256Hex(secret, body) {
|
|
27
|
+
const encoder = new TextEncoder();
|
|
28
|
+
const key = await crypto.subtle.importKey("raw", encoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
29
|
+
const signature = new Uint8Array(await crypto.subtle.sign("HMAC", key, encoder.encode(body)));
|
|
30
|
+
return Array.from(signature, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
31
|
+
}
|
|
27
32
|
|
|
28
|
-
export { webhook };
|
|
33
|
+
export { hmacSha256Hex, webhook };
|
|
29
34
|
//# sourceMappingURL=webhook.js.map
|
|
30
35
|
//# sourceMappingURL=webhook.js.map
|
package/dist/webhook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/alerts/webhook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/alerts/webhook.ts"],"names":[],"mappings":";AAcA,IAAM,UAAA,GAAa,GAAA;AAEnB,SAAS,OAAO,GAAA,EAAqB;AACnC,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,GAAA,CAAI,GAAG,CAAA,CAAE,MAAA;AAAA,EACtB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,eAAA;AAAA,EACT;AACF;AAOO,SAAS,QAAQ,OAAA,EAAuC;AAC7D,EAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,EAAK,MAAM,IAAI,MAAM,uBAAuB,CAAA;AACzD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,MAAM,KAAK,KAAA,EAAO;AAChB,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AACjC,MAAA,MAAM,OAAA,GAAkC,EAAE,cAAA,EAAgB,kBAAA,EAAoB,cAAc,WAAA,EAAY;AAExG,MAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,OAAA,IAAW,EAAE,CAAA,EAAG,OAAA,CAAQ,IAAI,CAAA,GAAI,OAAO,UAAU,QAAA,GAAW,KAAA,CAAM,MAAK,GAAI,KAAA;AAC9H,MAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,QAAA,OAAA,CAAQ,uBAAuB,IAAI,CAAA,OAAA,EAAU,MAAM,cAAc,OAAA,CAAQ,MAAA,EAAQ,IAAI,CAAC,CAAA,CAAA;AAAA,MACxF;AAEA,MAAA,MAAM,WAAW,MAAM,KAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,EAAE,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAM,UAAU,OAAA,EAAS,MAAA,EAAQ,YAAY,OAAA,CAAQ,UAAU,GAAG,CAAA;AAEvI,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,MAAM,IAAI,KAAA,CAAM,CAAA,QAAA,EAAW,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAC,CAAA,UAAA,EAAa,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,IAChG;AAAA,GACF;AACF;AAGA,eAAsB,aAAA,CAAc,QAAgB,IAAA,EAA+B;AACjF,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,EAAA,MAAM,MAAM,MAAM,MAAA,CAAO,OAAO,SAAA,CAAU,KAAA,EAAO,QAAQ,MAAA,CAAO,MAAM,GAAG,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,SAAA,IAAa,KAAA,EAAO,CAAC,MAAM,CAAC,CAAA;AAC3H,EAAA,MAAM,SAAA,GAAY,IAAI,UAAA,CAAW,MAAM,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,GAAA,EAAK,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAC,CAAC,CAAA;AAC5F,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,SAAA,EAAW,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,SAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA;AAC9E","file":"webhook.js","sourcesContent":["import type { AlertChannel } from \"../types.js\";\n\nexport interface WebhookOptions {\n url: string;\n /** Extra request headers, for an Authorization header say. Values are trimmed. */\n headers?: Record<string, string>;\n /**\n * When set, each request carries `X-CronWatch-Signature: sha256=<hex>`,\n * the HMAC-SHA256 of the raw body with this secret, so the receiver can\n * verify it.\n */\n secret?: string;\n}\n\nconst TIMEOUT_MS = 10_000;\n\nfunction origin(url: string): string {\n try {\n return new URL(url).origin;\n } catch {\n return \"(invalid URL)\";\n }\n}\n\n/**\n * POSTs the alert as JSON to any URL. The body is the Alert object:\n * { type, job, title, message, run, details, triage, at, definition }.\n * A redirect is an error: point the url at where the receiver really is.\n */\nexport function webhook(options: WebhookOptions): AlertChannel {\n if (!options.url) throw new Error(\"webhook() needs a url\");\n return {\n name: \"webhook\",\n async send(alert) {\n const body = JSON.stringify(alert);\n const headers: Record<string, string> = { \"content-type\": \"application/json\", \"user-agent\": \"cronwatch\" };\n // A pasted Authorization value often carries a stray space or newline, which fetch would refuse.\n for (const [name, value] of Object.entries(options.headers ?? {})) headers[name] = typeof value === \"string\" ? value.trim() : value;\n if (options.secret) {\n headers[\"x-cronwatch-signature\"] = `sha256=${await hmacSha256Hex(options.secret, body)}`;\n }\n // A redirect is refused, not followed: the headers (and the signature) would go with it.\n const response = await fetch(options.url, { method: \"POST\", headers, body, redirect: \"error\", signal: AbortSignal.timeout(TIMEOUT_MS) });\n // Only the origin: a webhook URL's path or query often is the credential.\n if (!response.ok) throw new Error(`Webhook ${origin(options.url)} answered ${response.status}`);\n },\n };\n}\n\n/** HMAC-SHA256 as lowercase hex, with Web Crypto so it runs on Workers and Deno too. */\nexport async function hmacSha256Hex(secret: string, body: string): Promise<string> {\n const encoder = new TextEncoder();\n const key = await crypto.subtle.importKey(\"raw\", encoder.encode(secret), { name: \"HMAC\", hash: \"SHA-256\" }, false, [\"sign\"]);\n const signature = new Uint8Array(await crypto.subtle.sign(\"HMAC\", key, encoder.encode(body)));\n return Array.from(signature, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cronwatch/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Cron and scheduled-job monitoring that lives inside your app. Wrap a job, mount a route, get told when it is missed, failed, slow or over budget. No server to run.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -17,7 +17,14 @@
|
|
|
17
17
|
"vercel cron",
|
|
18
18
|
"nextjs",
|
|
19
19
|
"agents",
|
|
20
|
-
"mcp"
|
|
20
|
+
"mcp",
|
|
21
|
+
"cloudflare",
|
|
22
|
+
"workers",
|
|
23
|
+
"d1",
|
|
24
|
+
"supabase",
|
|
25
|
+
"pg_cron",
|
|
26
|
+
"sentry",
|
|
27
|
+
"email"
|
|
21
28
|
],
|
|
22
29
|
"type": "module",
|
|
23
30
|
"sideEffects": false,
|
|
@@ -40,6 +47,9 @@
|
|
|
40
47
|
"postgres": [
|
|
41
48
|
"./dist/postgres.d.cts"
|
|
42
49
|
],
|
|
50
|
+
"d1": [
|
|
51
|
+
"./dist/d1.d.cts"
|
|
52
|
+
],
|
|
43
53
|
"slack": [
|
|
44
54
|
"./dist/slack.d.cts"
|
|
45
55
|
],
|
|
@@ -49,8 +59,50 @@
|
|
|
49
59
|
"webhook": [
|
|
50
60
|
"./dist/webhook.d.cts"
|
|
51
61
|
],
|
|
62
|
+
"resend": [
|
|
63
|
+
"./dist/resend.d.cts"
|
|
64
|
+
],
|
|
65
|
+
"postmark": [
|
|
66
|
+
"./dist/postmark.d.cts"
|
|
67
|
+
],
|
|
68
|
+
"sendgrid": [
|
|
69
|
+
"./dist/sendgrid.d.cts"
|
|
70
|
+
],
|
|
71
|
+
"mailgun": [
|
|
72
|
+
"./dist/mailgun.d.cts"
|
|
73
|
+
],
|
|
74
|
+
"ses": [
|
|
75
|
+
"./dist/ses.d.cts"
|
|
76
|
+
],
|
|
77
|
+
"twilio": [
|
|
78
|
+
"./dist/twilio.d.cts"
|
|
79
|
+
],
|
|
80
|
+
"sentry": [
|
|
81
|
+
"./dist/sentry.d.cts"
|
|
82
|
+
],
|
|
83
|
+
"honeybadger": [
|
|
84
|
+
"./dist/honeybadger.d.cts"
|
|
85
|
+
],
|
|
86
|
+
"datadog": [
|
|
87
|
+
"./dist/datadog.d.cts"
|
|
88
|
+
],
|
|
89
|
+
"rollbar": [
|
|
90
|
+
"./dist/rollbar.d.cts"
|
|
91
|
+
],
|
|
92
|
+
"bugsnag": [
|
|
93
|
+
"./dist/bugsnag.d.cts"
|
|
94
|
+
],
|
|
95
|
+
"newrelic": [
|
|
96
|
+
"./dist/newrelic.d.cts"
|
|
97
|
+
],
|
|
52
98
|
"anthropic": [
|
|
53
99
|
"./dist/anthropic.d.cts"
|
|
100
|
+
],
|
|
101
|
+
"pg-cron": [
|
|
102
|
+
"./dist/pg-cron.d.cts"
|
|
103
|
+
],
|
|
104
|
+
"node": [
|
|
105
|
+
"./dist/node.d.cts"
|
|
54
106
|
]
|
|
55
107
|
}
|
|
56
108
|
},
|
|
@@ -85,6 +137,16 @@
|
|
|
85
137
|
"default": "./dist/postgres.cjs"
|
|
86
138
|
}
|
|
87
139
|
},
|
|
140
|
+
"./d1": {
|
|
141
|
+
"import": {
|
|
142
|
+
"types": "./dist/d1.d.ts",
|
|
143
|
+
"default": "./dist/d1.js"
|
|
144
|
+
},
|
|
145
|
+
"require": {
|
|
146
|
+
"types": "./dist/d1.d.cts",
|
|
147
|
+
"default": "./dist/d1.cjs"
|
|
148
|
+
}
|
|
149
|
+
},
|
|
88
150
|
"./slack": {
|
|
89
151
|
"import": {
|
|
90
152
|
"types": "./dist/slack.d.ts",
|
|
@@ -115,6 +177,126 @@
|
|
|
115
177
|
"default": "./dist/webhook.cjs"
|
|
116
178
|
}
|
|
117
179
|
},
|
|
180
|
+
"./resend": {
|
|
181
|
+
"import": {
|
|
182
|
+
"types": "./dist/resend.d.ts",
|
|
183
|
+
"default": "./dist/resend.js"
|
|
184
|
+
},
|
|
185
|
+
"require": {
|
|
186
|
+
"types": "./dist/resend.d.cts",
|
|
187
|
+
"default": "./dist/resend.cjs"
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
"./postmark": {
|
|
191
|
+
"import": {
|
|
192
|
+
"types": "./dist/postmark.d.ts",
|
|
193
|
+
"default": "./dist/postmark.js"
|
|
194
|
+
},
|
|
195
|
+
"require": {
|
|
196
|
+
"types": "./dist/postmark.d.cts",
|
|
197
|
+
"default": "./dist/postmark.cjs"
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"./sendgrid": {
|
|
201
|
+
"import": {
|
|
202
|
+
"types": "./dist/sendgrid.d.ts",
|
|
203
|
+
"default": "./dist/sendgrid.js"
|
|
204
|
+
},
|
|
205
|
+
"require": {
|
|
206
|
+
"types": "./dist/sendgrid.d.cts",
|
|
207
|
+
"default": "./dist/sendgrid.cjs"
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
"./mailgun": {
|
|
211
|
+
"import": {
|
|
212
|
+
"types": "./dist/mailgun.d.ts",
|
|
213
|
+
"default": "./dist/mailgun.js"
|
|
214
|
+
},
|
|
215
|
+
"require": {
|
|
216
|
+
"types": "./dist/mailgun.d.cts",
|
|
217
|
+
"default": "./dist/mailgun.cjs"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"./ses": {
|
|
221
|
+
"import": {
|
|
222
|
+
"types": "./dist/ses.d.ts",
|
|
223
|
+
"default": "./dist/ses.js"
|
|
224
|
+
},
|
|
225
|
+
"require": {
|
|
226
|
+
"types": "./dist/ses.d.cts",
|
|
227
|
+
"default": "./dist/ses.cjs"
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
"./twilio": {
|
|
231
|
+
"import": {
|
|
232
|
+
"types": "./dist/twilio.d.ts",
|
|
233
|
+
"default": "./dist/twilio.js"
|
|
234
|
+
},
|
|
235
|
+
"require": {
|
|
236
|
+
"types": "./dist/twilio.d.cts",
|
|
237
|
+
"default": "./dist/twilio.cjs"
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
"./sentry": {
|
|
241
|
+
"import": {
|
|
242
|
+
"types": "./dist/sentry.d.ts",
|
|
243
|
+
"default": "./dist/sentry.js"
|
|
244
|
+
},
|
|
245
|
+
"require": {
|
|
246
|
+
"types": "./dist/sentry.d.cts",
|
|
247
|
+
"default": "./dist/sentry.cjs"
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"./honeybadger": {
|
|
251
|
+
"import": {
|
|
252
|
+
"types": "./dist/honeybadger.d.ts",
|
|
253
|
+
"default": "./dist/honeybadger.js"
|
|
254
|
+
},
|
|
255
|
+
"require": {
|
|
256
|
+
"types": "./dist/honeybadger.d.cts",
|
|
257
|
+
"default": "./dist/honeybadger.cjs"
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
"./datadog": {
|
|
261
|
+
"import": {
|
|
262
|
+
"types": "./dist/datadog.d.ts",
|
|
263
|
+
"default": "./dist/datadog.js"
|
|
264
|
+
},
|
|
265
|
+
"require": {
|
|
266
|
+
"types": "./dist/datadog.d.cts",
|
|
267
|
+
"default": "./dist/datadog.cjs"
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
"./rollbar": {
|
|
271
|
+
"import": {
|
|
272
|
+
"types": "./dist/rollbar.d.ts",
|
|
273
|
+
"default": "./dist/rollbar.js"
|
|
274
|
+
},
|
|
275
|
+
"require": {
|
|
276
|
+
"types": "./dist/rollbar.d.cts",
|
|
277
|
+
"default": "./dist/rollbar.cjs"
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"./bugsnag": {
|
|
281
|
+
"import": {
|
|
282
|
+
"types": "./dist/bugsnag.d.ts",
|
|
283
|
+
"default": "./dist/bugsnag.js"
|
|
284
|
+
},
|
|
285
|
+
"require": {
|
|
286
|
+
"types": "./dist/bugsnag.d.cts",
|
|
287
|
+
"default": "./dist/bugsnag.cjs"
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
"./newrelic": {
|
|
291
|
+
"import": {
|
|
292
|
+
"types": "./dist/newrelic.d.ts",
|
|
293
|
+
"default": "./dist/newrelic.js"
|
|
294
|
+
},
|
|
295
|
+
"require": {
|
|
296
|
+
"types": "./dist/newrelic.d.cts",
|
|
297
|
+
"default": "./dist/newrelic.cjs"
|
|
298
|
+
}
|
|
299
|
+
},
|
|
118
300
|
"./anthropic": {
|
|
119
301
|
"import": {
|
|
120
302
|
"types": "./dist/anthropic.d.ts",
|
|
@@ -125,6 +307,26 @@
|
|
|
125
307
|
"default": "./dist/anthropic.cjs"
|
|
126
308
|
}
|
|
127
309
|
},
|
|
310
|
+
"./pg-cron": {
|
|
311
|
+
"import": {
|
|
312
|
+
"types": "./dist/pg-cron.d.ts",
|
|
313
|
+
"default": "./dist/pg-cron.js"
|
|
314
|
+
},
|
|
315
|
+
"require": {
|
|
316
|
+
"types": "./dist/pg-cron.d.cts",
|
|
317
|
+
"default": "./dist/pg-cron.cjs"
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
"./node": {
|
|
321
|
+
"import": {
|
|
322
|
+
"types": "./dist/node.d.ts",
|
|
323
|
+
"default": "./dist/node.js"
|
|
324
|
+
},
|
|
325
|
+
"require": {
|
|
326
|
+
"types": "./dist/node.d.cts",
|
|
327
|
+
"default": "./dist/node.cjs"
|
|
328
|
+
}
|
|
329
|
+
},
|
|
128
330
|
"./package.json": "./package.json"
|
|
129
331
|
},
|
|
130
332
|
"scripts": {
|
|
@@ -137,7 +339,7 @@
|
|
|
137
339
|
"croner": "^10.0.1"
|
|
138
340
|
},
|
|
139
341
|
"peerDependencies": {
|
|
140
|
-
"@anthropic-ai/sdk": ">=0.115.0",
|
|
342
|
+
"@anthropic-ai/sdk": ">=0.115.0 <0.129.0",
|
|
141
343
|
"@types/better-sqlite3": ">=7.6",
|
|
142
344
|
"@types/pg": ">=8.11",
|
|
143
345
|
"better-sqlite3": ">=9",
|
|
@@ -161,11 +363,15 @@
|
|
|
161
363
|
}
|
|
162
364
|
},
|
|
163
365
|
"devDependencies": {
|
|
164
|
-
"@anthropic-ai/sdk": "^0.
|
|
366
|
+
"@anthropic-ai/sdk": "^0.128.0",
|
|
165
367
|
"@types/better-sqlite3": "^7.6.13",
|
|
166
|
-
"@types/
|
|
368
|
+
"@types/express": "^5.0.6",
|
|
369
|
+
"@types/koa": "^3.0.3",
|
|
370
|
+
"@types/node": "^22.20.4",
|
|
167
371
|
"@types/pg": "^8.15.0",
|
|
168
372
|
"better-sqlite3": "^13.0.3",
|
|
373
|
+
"express": "^5.2.1",
|
|
374
|
+
"koa": "^3.2.1",
|
|
169
375
|
"pg": "^8.23.0",
|
|
170
376
|
"tsup": "^8.5.1",
|
|
171
377
|
"tsx": "^4.23.0",
|