22 lines
829 B
JavaScript
22 lines
829 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.WebhookSecret = void 0;
|
|
const ValueObject_1 = require("../../../../shared/domain/ValueObject");
|
|
const crypto_1 = require("crypto");
|
|
class WebhookSecret extends ValueObject_1.ValueObject {
|
|
get value() { return this.props.value; }
|
|
static generate() {
|
|
const secret = (0, crypto_1.randomBytes)(32).toString('hex');
|
|
return new WebhookSecret({ value: secret });
|
|
}
|
|
static fromString(s) {
|
|
if (!s || s.length < 16)
|
|
throw new Error('Webhook secret must be at least 16 characters');
|
|
return new WebhookSecret({ value: s });
|
|
}
|
|
sign(payload) {
|
|
return (0, crypto_1.createHmac)('sha256', this.props.value).update(payload).digest('hex');
|
|
}
|
|
}
|
|
exports.WebhookSecret = WebhookSecret;
|