mainnet-js 2.0.1 → 2.1.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/dist/index.html +1 -1
- package/dist/{mainnet-2.0.1.js → mainnet-2.1.0.js} +18 -58
- package/dist/module/db/StorageProvider.d.ts +9 -9
- package/dist/module/db/StorageProvider.d.ts.map +1 -1
- package/dist/module/db/StorageProvider.js +2 -1
- package/dist/module/db/StorageProvider.js.map +1 -1
- package/dist/module/db/index.d.ts +1 -2
- package/dist/module/db/index.d.ts.map +1 -1
- package/dist/module/db/index.js +2 -2
- package/dist/module/db/index.js.map +1 -1
- package/dist/module/db/interface.d.ts +0 -12
- package/dist/module/db/interface.d.ts.map +1 -1
- package/dist/module/db/util.d.ts +0 -2
- package/dist/module/db/util.d.ts.map +1 -1
- package/dist/module/db/util.js +0 -23
- package/dist/module/db/util.js.map +1 -1
- package/dist/module/index.d.ts +0 -1
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +0 -4
- package/dist/module/index.js.map +1 -1
- package/dist/module/network/index.d.ts +1 -0
- package/dist/module/network/index.d.ts.map +1 -1
- package/dist/module/wallet/Base.d.ts +1 -1
- package/dist/module/wallet/Base.d.ts.map +1 -1
- package/dist/module/wallet/Base.js +6 -1
- package/dist/module/wallet/Base.js.map +1 -1
- package/dist/module/wallet/Bcmr.d.ts.map +1 -1
- package/dist/module/wallet/Bcmr.js +3 -1
- package/dist/module/wallet/Bcmr.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -12
- package/src/db/StorageProvider.ts +9 -9
- package/src/db/index.ts +1 -2
- package/src/db/interface.ts +0 -14
- package/src/db/util.ts +0 -26
- package/src/index.ts +0 -5
- package/src/network/index.ts +1 -0
- package/src/wallet/Base.ts +9 -2
- package/src/wallet/Bcmr.ts +5 -1
- package/src/wallet/Wif.test.ts +0 -42
- package/dist/module/db/IndexedDBProvider.d.ts +0 -16
- package/dist/module/db/IndexedDBProvider.d.ts.map +0 -1
- package/dist/module/db/IndexedDBProvider.js +0 -80
- package/dist/module/db/IndexedDBProvider.js.map +0 -1
- package/dist/module/db/SqlProvider.d.ts +0 -40
- package/dist/module/db/SqlProvider.d.ts.map +0 -1
- package/dist/module/db/SqlProvider.js +0 -198
- package/dist/module/db/SqlProvider.js.map +0 -1
- package/dist/module/db/getStorageProvider.d.ts +0 -3
- package/dist/module/db/getStorageProvider.d.ts.map +0 -1
- package/dist/module/db/getStorageProvider.js +0 -19
- package/dist/module/db/getStorageProvider.js.map +0 -1
- package/dist/module/webhook/Webhook.d.ts +0 -36
- package/dist/module/webhook/Webhook.d.ts.map +0 -1
- package/dist/module/webhook/Webhook.js +0 -77
- package/dist/module/webhook/Webhook.js.map +0 -1
- package/dist/module/webhook/WebhookBch.d.ts +0 -14
- package/dist/module/webhook/WebhookBch.d.ts.map +0 -1
- package/dist/module/webhook/WebhookBch.js +0 -141
- package/dist/module/webhook/WebhookBch.js.map +0 -1
- package/dist/module/webhook/WebhookWorker.d.ts +0 -23
- package/dist/module/webhook/WebhookWorker.d.ts.map +0 -1
- package/dist/module/webhook/WebhookWorker.js +0 -94
- package/dist/module/webhook/WebhookWorker.js.map +0 -1
- package/dist/module/webhook/index.d.ts +0 -5
- package/dist/module/webhook/index.d.ts.map +0 -1
- package/dist/module/webhook/index.js +0 -5
- package/dist/module/webhook/index.js.map +0 -1
- package/dist/module/webhook/interface.d.ts +0 -8
- package/dist/module/webhook/interface.d.ts.map +0 -1
- package/dist/module/webhook/interface.js +0 -2
- package/dist/module/webhook/interface.js.map +0 -1
- package/src/Wallet.test.headless.js +0 -369
- package/src/Wallet.test.ts +0 -519
- package/src/db/IndexedDBProvider.test.ts +0 -69
- package/src/db/IndexedDBProvider.ts +0 -93
- package/src/db/SqlProvider.test.ts +0 -282
- package/src/db/SqlProvider.ts +0 -297
- package/src/db/getStorageProvider.ts +0 -20
- package/src/db/index.test.headless.js +0 -62
- package/src/db/index.test.ts +0 -64
- package/src/wallet/createWallet.test.ts +0 -155
- package/src/webhook/Webhook.test.ts +0 -9
- package/src/webhook/Webhook.ts +0 -99
- package/src/webhook/WebhookBch.test.ts +0 -323
- package/src/webhook/WebhookBch.ts +0 -198
- package/src/webhook/WebhookWorker.test.ts +0 -96
- package/src/webhook/WebhookWorker.ts +0 -119
- package/src/webhook/index.ts +0 -4
- package/src/webhook/interface.ts +0 -7
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { balanceResponseFromSatoshi } from "../util/balanceObjectFromSatoshi.js";
|
|
2
|
-
import { Wallet } from "../wallet/Wif.js";
|
|
3
|
-
import { Webhook, WebhookRecurrence, WebhookType } from "./Webhook.js";
|
|
4
|
-
import WebhookWorker from "./WebhookWorker.js";
|
|
5
|
-
export class WebhookBch extends Webhook {
|
|
6
|
-
constructor(hook) {
|
|
7
|
-
super(hook);
|
|
8
|
-
this.seenStatuses = [];
|
|
9
|
-
Object.assign(this, hook);
|
|
10
|
-
}
|
|
11
|
-
async stop() {
|
|
12
|
-
await this.wallet.provider.unsubscribeFromAddress(this.cashaddr, this.callback);
|
|
13
|
-
}
|
|
14
|
-
async start() {
|
|
15
|
-
const webhookCallback = async (data) => {
|
|
16
|
-
let status = "";
|
|
17
|
-
if (typeof data === "string") {
|
|
18
|
-
// subscription acknowledgement notification with current status
|
|
19
|
-
status = data;
|
|
20
|
-
// we should skip fetching transactions for freshly registered hooks upon acknowledements
|
|
21
|
-
if (this.status === "") {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
else if (data instanceof Array) {
|
|
26
|
-
status = data[1];
|
|
27
|
-
if (data[0] !== this.cashaddr) {
|
|
28
|
-
// console.warn("Address missmatch, skipping", data[0], this.cashaddr);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
if (status != this.status && this.seenStatuses.indexOf(status) === -1) {
|
|
36
|
-
this.seenStatuses.push(status);
|
|
37
|
-
await this.handler(status);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
this.callback = webhookCallback;
|
|
41
|
-
this.wallet = await Wallet.fromCashaddr(this.cashaddr);
|
|
42
|
-
await this.wallet.provider.subscribeToAddress(this.cashaddr, this.callback);
|
|
43
|
-
}
|
|
44
|
-
async handler(status) {
|
|
45
|
-
// console.debug("Dispatching action for a webhook", this);
|
|
46
|
-
// get transactions
|
|
47
|
-
const history = await this.wallet.provider.getHistory(this.cashaddr);
|
|
48
|
-
// figure out which transactions to send to the hook
|
|
49
|
-
let txs = [];
|
|
50
|
-
if (status === "") {
|
|
51
|
-
// send the last transaction only if no tracking was done
|
|
52
|
-
txs = history.slice(-1);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
// reverse history for faster search
|
|
56
|
-
const revHistory = history.reverse();
|
|
57
|
-
// update height of transactions, which are now confirmed
|
|
58
|
-
this.tx_seen = this.tx_seen.map((seenTx) => {
|
|
59
|
-
if (seenTx.height <= 0) {
|
|
60
|
-
const histTx = revHistory.find((val) => val.tx_hash === seenTx.tx_hash);
|
|
61
|
-
if (histTx) {
|
|
62
|
-
seenTx.height = histTx.height;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return seenTx;
|
|
66
|
-
});
|
|
67
|
-
const seenHashes = this.tx_seen.map((val) => val.tx_hash);
|
|
68
|
-
txs = history.filter((val) => (val.height >= this.last_height || val.height <= 0) &&
|
|
69
|
-
!seenHashes.includes(val.tx_hash));
|
|
70
|
-
}
|
|
71
|
-
let shouldUpdateStatus = true;
|
|
72
|
-
for (const tx of txs) {
|
|
73
|
-
// watching transactions
|
|
74
|
-
let result = false;
|
|
75
|
-
if (this.type.indexOf("transaction:") >= 0) {
|
|
76
|
-
// console.debug("Getting raw tx", tx.tx_hash);
|
|
77
|
-
const rawTx = await this.wallet.provider.getRawTransactionObject(tx.tx_hash);
|
|
78
|
-
const parentTxs = await Promise.all(rawTx.vin.map((t) => this.wallet.provider.getRawTransactionObject(t.txid)));
|
|
79
|
-
// console.debug("Got raw tx", JSON.stringify(rawTx, null, 2));
|
|
80
|
-
const haveAddressInOutputs = rawTx.vout.some((val) => val.scriptPubKey.addresses.includes(this.cashaddr));
|
|
81
|
-
const haveAddressInParentOutputs = parentTxs.some((parent) => parent.vout.some((val) => val.scriptPubKey.addresses.includes(this.cashaddr)));
|
|
82
|
-
const wantsIn = this.type.indexOf("in") >= 0;
|
|
83
|
-
const wantsOut = this.type.indexOf("out") >= 0;
|
|
84
|
-
const txDirection = haveAddressInParentOutputs && haveAddressInOutputs
|
|
85
|
-
? WebhookType.transactionInOut
|
|
86
|
-
: haveAddressInParentOutputs
|
|
87
|
-
? WebhookType.transactionOut
|
|
88
|
-
: WebhookType.transactionIn;
|
|
89
|
-
if (wantsIn && haveAddressInOutputs) {
|
|
90
|
-
result = await this.post({
|
|
91
|
-
direction: txDirection,
|
|
92
|
-
data: rawTx,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
else if (wantsOut && haveAddressInParentOutputs) {
|
|
96
|
-
result = await this.post({
|
|
97
|
-
direction: txDirection,
|
|
98
|
-
data: rawTx,
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
// not interested in this transaction
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
else if (this.type === WebhookType.balance) {
|
|
107
|
-
// watching address balance
|
|
108
|
-
const balanceSat = await this.wallet.provider.getBalance(this.cashaddr);
|
|
109
|
-
const balanceObject = await balanceResponseFromSatoshi(balanceSat);
|
|
110
|
-
result = await this.post(balanceObject);
|
|
111
|
-
}
|
|
112
|
-
if (result) {
|
|
113
|
-
this.tx_seen.push(tx);
|
|
114
|
-
await this.db.setWebhookSeenTxLastHeight(this.id, this.tx_seen, this.last_height);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
// console.debug("Failed to execute webhook", hook);
|
|
118
|
-
shouldUpdateStatus = false;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// successful run
|
|
122
|
-
if (shouldUpdateStatus) {
|
|
123
|
-
if (this.recurrence === WebhookRecurrence.once) {
|
|
124
|
-
// we have to notify the worker about end of life
|
|
125
|
-
await (await WebhookWorker.instance()).stopHook(this);
|
|
126
|
-
await this.destroy();
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
this.status = status;
|
|
130
|
-
await this.db.setWebhookStatus(this.id, status);
|
|
131
|
-
// update last_height and truncate tx_seen
|
|
132
|
-
const maxHeight = Math.max(...this.tx_seen.map((val) => val.height));
|
|
133
|
-
if (maxHeight >= this.last_height) {
|
|
134
|
-
this.last_height = maxHeight;
|
|
135
|
-
this.tx_seen = this.tx_seen.filter((val) => val.height === maxHeight || val.height <= 0);
|
|
136
|
-
await this.db.setWebhookSeenTxLastHeight(this.id, this.tx_seen, this.last_height);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=WebhookBch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookBch.js","sourceRoot":"","sources":["../../../src/webhook/WebhookBch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import SqlProvider from "../db/SqlProvider.js";
|
|
2
|
-
import { RegisterWebhookParams } from "./interface.js";
|
|
3
|
-
import { Webhook } from "./Webhook";
|
|
4
|
-
export default class WebhookWorker {
|
|
5
|
-
activeHooks: Map<number, Webhook>;
|
|
6
|
-
callbacks: Map<number, (data: any | string | Array<string>) => void>;
|
|
7
|
-
db: SqlProvider;
|
|
8
|
-
checkInterval: any;
|
|
9
|
-
private static _instance;
|
|
10
|
-
static instance(): Promise<WebhookWorker>;
|
|
11
|
-
constructor();
|
|
12
|
-
init(): Promise<void>;
|
|
13
|
-
destroy(): Promise<void>;
|
|
14
|
-
pickupHooks(start?: boolean): Promise<void>;
|
|
15
|
-
evictOldHooks(): Promise<void>;
|
|
16
|
-
registerWebhook(params: RegisterWebhookParams, start?: boolean): Promise<number>;
|
|
17
|
-
getWebhook(id: number): Promise<Webhook | undefined>;
|
|
18
|
-
deleteWebhook(id: number): Promise<void>;
|
|
19
|
-
deleteAllWebhooks(): Promise<void>;
|
|
20
|
-
stopAll(): Promise<void>;
|
|
21
|
-
stopHook(hook: Webhook): Promise<void>;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=WebhookWorker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookWorker.d.ts","sourceRoot":"","sources":["../../../src/webhook/WebhookWorker.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAC9C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CACxD;IACZ,EAAE,EAAE,WAAW,CAAC;IAChB,aAAa,EAAE,GAAG,CAAa;IAE/B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAgB;WAE3B,QAAQ;;IAaf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAarB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,WAAW,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B,eAAe,CACnB,MAAM,EAAE,qBAAqB,EAC7B,KAAK,GAAE,OAAc,GACpB,OAAO,CAAC,MAAM,CAAC;IASZ,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAQpD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAM7C"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import SqlProvider from "../db/SqlProvider.js";
|
|
2
|
-
export default class WebhookWorker {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.activeHooks = new Map();
|
|
5
|
-
this.callbacks = new Map();
|
|
6
|
-
this.checkInterval = undefined;
|
|
7
|
-
this.db = new SqlProvider();
|
|
8
|
-
}
|
|
9
|
-
static async instance() {
|
|
10
|
-
if (!WebhookWorker._instance) {
|
|
11
|
-
WebhookWorker._instance = new WebhookWorker();
|
|
12
|
-
await WebhookWorker._instance.init();
|
|
13
|
-
}
|
|
14
|
-
return WebhookWorker._instance;
|
|
15
|
-
}
|
|
16
|
-
async init() {
|
|
17
|
-
await this.db.init();
|
|
18
|
-
await this.evictOldHooks();
|
|
19
|
-
await this.pickupHooks(true);
|
|
20
|
-
if (!this.checkInterval) {
|
|
21
|
-
this.checkInterval = setInterval(async () => {
|
|
22
|
-
await this.evictOldHooks();
|
|
23
|
-
await this.pickupHooks(true);
|
|
24
|
-
}, 5 * 60 * 1000);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
async destroy() {
|
|
28
|
-
await this.stopAll();
|
|
29
|
-
if (this.checkInterval) {
|
|
30
|
-
clearInterval(this.checkInterval);
|
|
31
|
-
this.checkInterval = undefined;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
async pickupHooks(start = false) {
|
|
35
|
-
const hooks = await this.db.getWebhooks();
|
|
36
|
-
for (const hook of hooks) {
|
|
37
|
-
if (!this.activeHooks.has(hook.id)) {
|
|
38
|
-
this.activeHooks.set(hook.id, hook);
|
|
39
|
-
if (start) {
|
|
40
|
-
await hook.start();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async evictOldHooks() {
|
|
46
|
-
const now = new Date();
|
|
47
|
-
const dbHooks = await this.db.getWebhooks();
|
|
48
|
-
for (const hook of dbHooks) {
|
|
49
|
-
if (now >= hook.expires_at) {
|
|
50
|
-
// console.debug("Evicting expired hook with id", hook.id, new Date(), hook.expires_at);
|
|
51
|
-
if (this.activeHooks.has(hook.id)) {
|
|
52
|
-
await this.stopHook(hook);
|
|
53
|
-
}
|
|
54
|
-
await this.db.deleteWebhook(hook.id);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
async registerWebhook(params, start = true) {
|
|
59
|
-
const webhook = await this.db.addWebhook(params);
|
|
60
|
-
if (start) {
|
|
61
|
-
this.activeHooks.set(webhook.id, webhook);
|
|
62
|
-
await webhook.start();
|
|
63
|
-
}
|
|
64
|
-
return webhook.id;
|
|
65
|
-
}
|
|
66
|
-
async getWebhook(id) {
|
|
67
|
-
if (this.activeHooks.has(id)) {
|
|
68
|
-
return this.activeHooks.get(id);
|
|
69
|
-
}
|
|
70
|
-
return await this.db.getWebhook(id);
|
|
71
|
-
}
|
|
72
|
-
async deleteWebhook(id) {
|
|
73
|
-
if (this.activeHooks.has(id)) {
|
|
74
|
-
await this.stopHook(this.activeHooks.get(id));
|
|
75
|
-
}
|
|
76
|
-
await this.db.deleteWebhook(id);
|
|
77
|
-
}
|
|
78
|
-
async deleteAllWebhooks() {
|
|
79
|
-
await this.stopAll();
|
|
80
|
-
await this.db.clearWebhooks();
|
|
81
|
-
}
|
|
82
|
-
async stopAll() {
|
|
83
|
-
for (const [, hook] of this.activeHooks) {
|
|
84
|
-
await this.stopHook(hook);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
async stopHook(hook) {
|
|
88
|
-
if (this.activeHooks.has(hook.id)) {
|
|
89
|
-
await hook.stop();
|
|
90
|
-
this.activeHooks.delete(hook.id);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=WebhookWorker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WebhookWorker.js","sourceRoot":"","sources":["../../../src/webhook/WebhookWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/webhook/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webhook/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/webhook/interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/webhook/interface.ts"],"names":[],"mappings":""}
|