@trigger.dev/sdk 0.0.0-prerelease-20250212002625 → 0.0.0-python-preview-20250226140121
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/commonjs/apiClient.d.ts +138 -138
- package/dist/commonjs/imports/uncrypto-cjs.cjs.map +1 -0
- package/dist/commonjs/imports/uncrypto.d.ts +1 -0
- package/dist/commonjs/imports/uncrypto.js +7 -0
- package/dist/commonjs/io.d.ts +12 -12
- package/dist/commonjs/status.d.ts +4 -4
- package/dist/commonjs/triggerClient.d.ts +43 -41
- package/dist/commonjs/triggers/notifications.d.ts +8 -8
- package/dist/commonjs/triggers/scheduled.d.ts +2 -2
- package/dist/commonjs/v3/index.d.ts +1 -1
- package/dist/commonjs/v3/index.js +1 -1
- package/dist/commonjs/v3/index.js.map +1 -1
- package/dist/commonjs/v3/runs.d.ts +24 -24
- package/dist/commonjs/v3/webhooks.d.ts +47 -0
- package/dist/commonjs/v3/webhooks.js +110 -0
- package/dist/commonjs/v3/webhooks.js.map +1 -0
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/apiClient.d.ts +142 -142
- package/dist/esm/imports/uncrypto.d.ts +2 -0
- package/dist/esm/imports/uncrypto.js +5 -0
- package/dist/esm/imports/uncrypto.js.map +1 -0
- package/dist/esm/io.d.ts +15 -15
- package/dist/esm/status.d.ts +1 -1
- package/dist/esm/triggerClient.d.ts +30 -30
- package/dist/esm/triggers/notifications.d.ts +12 -12
- package/dist/esm/triggers/scheduled.d.ts +4 -4
- package/dist/esm/types.d.ts +2 -2
- package/dist/esm/v3/index.d.ts +1 -1
- package/dist/esm/v3/index.js +1 -1
- package/dist/esm/v3/index.js.map +1 -1
- package/dist/esm/v3/runs.d.ts +44 -44
- package/dist/esm/v3/webhooks.d.ts +47 -0
- package/dist/esm/v3/webhooks.js +106 -0
- package/dist/esm/v3/webhooks.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.webhooks = exports.WebhookError = void 0;
|
|
4
|
+
const v3_1 = require("@trigger.dev/core/v3");
|
|
5
|
+
const uncrypto_js_1 = require("../imports/uncrypto.js");
|
|
6
|
+
/**
|
|
7
|
+
* The type of error thrown when a webhook fails to parse or verify
|
|
8
|
+
*/
|
|
9
|
+
class WebhookError extends Error {
|
|
10
|
+
constructor(message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "WebhookError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.WebhookError = WebhookError;
|
|
16
|
+
/** Header name used for webhook signatures */
|
|
17
|
+
const SIGNATURE_HEADER_NAME = "x-trigger-signature-hmacsha256";
|
|
18
|
+
/**
|
|
19
|
+
* Webhook utilities for handling incoming webhook requests
|
|
20
|
+
*/
|
|
21
|
+
exports.webhooks = {
|
|
22
|
+
constructEvent,
|
|
23
|
+
SIGNATURE_HEADER_NAME,
|
|
24
|
+
};
|
|
25
|
+
async function constructEvent(request, secret) {
|
|
26
|
+
let payload;
|
|
27
|
+
let signature;
|
|
28
|
+
if (request instanceof Request) {
|
|
29
|
+
if (!secret) {
|
|
30
|
+
throw new WebhookError("Secret is required when passing a Request object");
|
|
31
|
+
}
|
|
32
|
+
const signatureHeader = request.headers.get(SIGNATURE_HEADER_NAME);
|
|
33
|
+
if (!signatureHeader) {
|
|
34
|
+
throw new WebhookError("No signature header found");
|
|
35
|
+
}
|
|
36
|
+
signature = signatureHeader;
|
|
37
|
+
payload = await request.text();
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
payload = request.payload.toString();
|
|
41
|
+
if (Array.isArray(request.header)) {
|
|
42
|
+
throw new WebhookError("Signature header cannot be an array");
|
|
43
|
+
}
|
|
44
|
+
signature = request.header.toString();
|
|
45
|
+
}
|
|
46
|
+
// Verify the signature
|
|
47
|
+
const isValid = await verifySignature(payload, signature, secret);
|
|
48
|
+
if (!isValid) {
|
|
49
|
+
throw new WebhookError("Invalid signature");
|
|
50
|
+
}
|
|
51
|
+
// Parse and validate the payload
|
|
52
|
+
try {
|
|
53
|
+
const jsonPayload = JSON.parse(payload);
|
|
54
|
+
const parsedPayload = v3_1.Webhook.parse(jsonPayload);
|
|
55
|
+
return parsedPayload;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error instanceof Error) {
|
|
59
|
+
throw new WebhookError(`Webhook parsing failed: ${error.message}`);
|
|
60
|
+
}
|
|
61
|
+
throw new WebhookError("Webhook parsing failed");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Verifies the signature of a webhook payload
|
|
66
|
+
* @param payload - Raw payload string to verify
|
|
67
|
+
* @param signature - Expected signature to check against
|
|
68
|
+
* @param secret - Secret key used to generate the signature
|
|
69
|
+
* @returns Promise resolving to boolean indicating if signature is valid
|
|
70
|
+
* @throws {WebhookError} If signature verification process fails
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* const isValid = await verifySignature(
|
|
74
|
+
* '{"event": "test"}',
|
|
75
|
+
* "abc123signature",
|
|
76
|
+
* "webhook_secret"
|
|
77
|
+
* );
|
|
78
|
+
*/
|
|
79
|
+
async function verifySignature(payload, signature, secret) {
|
|
80
|
+
try {
|
|
81
|
+
if (!secret) {
|
|
82
|
+
throw new WebhookError("Secret is required for signature verification");
|
|
83
|
+
}
|
|
84
|
+
// Convert the payload and secret to buffers
|
|
85
|
+
const hashPayload = Buffer.from(payload, "utf-8");
|
|
86
|
+
const hmacSecret = Buffer.from(secret, "utf-8");
|
|
87
|
+
// Import the secret key
|
|
88
|
+
const key = await uncrypto_js_1.subtle.importKey("raw", hmacSecret, { name: "HMAC", hash: "SHA-256" }, false, ["sign", "verify"]);
|
|
89
|
+
// Calculate the expected signature
|
|
90
|
+
const actualSignature = await uncrypto_js_1.subtle.sign("HMAC", key, hashPayload);
|
|
91
|
+
const actualSignatureHex = Buffer.from(actualSignature).toString("hex");
|
|
92
|
+
// Compare signatures using timing-safe comparison
|
|
93
|
+
return timingSafeEqual(signature, actualSignatureHex);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
throw new WebhookError("Signature verification failed");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Timing-safe comparison to prevent timing attacks
|
|
100
|
+
function timingSafeEqual(a, b) {
|
|
101
|
+
if (a.length !== b.length) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
let result = 0;
|
|
105
|
+
for (let i = 0; i < a.length; i++) {
|
|
106
|
+
result |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
107
|
+
}
|
|
108
|
+
return result === 0;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../../src/v3/webhooks.ts"],"names":[],"mappings":"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"}
|
package/dist/commonjs/version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VERSION = void 0;
|
|
4
|
-
exports.VERSION = "3.3.
|
|
4
|
+
exports.VERSION = "3.3.11-langsmith-ai-20250111213529-langsmith-ai-20250111212321-prerelease-20250110154019-v3-prerelease-20250108142426";
|
|
5
5
|
//# sourceMappingURL=version.js.map
|