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.
Files changed (90) hide show
  1. package/dist/index.html +1 -1
  2. package/dist/{mainnet-2.0.1.js → mainnet-2.1.0.js} +18 -58
  3. package/dist/module/db/StorageProvider.d.ts +9 -9
  4. package/dist/module/db/StorageProvider.d.ts.map +1 -1
  5. package/dist/module/db/StorageProvider.js +2 -1
  6. package/dist/module/db/StorageProvider.js.map +1 -1
  7. package/dist/module/db/index.d.ts +1 -2
  8. package/dist/module/db/index.d.ts.map +1 -1
  9. package/dist/module/db/index.js +2 -2
  10. package/dist/module/db/index.js.map +1 -1
  11. package/dist/module/db/interface.d.ts +0 -12
  12. package/dist/module/db/interface.d.ts.map +1 -1
  13. package/dist/module/db/util.d.ts +0 -2
  14. package/dist/module/db/util.d.ts.map +1 -1
  15. package/dist/module/db/util.js +0 -23
  16. package/dist/module/db/util.js.map +1 -1
  17. package/dist/module/index.d.ts +0 -1
  18. package/dist/module/index.d.ts.map +1 -1
  19. package/dist/module/index.js +0 -4
  20. package/dist/module/index.js.map +1 -1
  21. package/dist/module/network/index.d.ts +1 -0
  22. package/dist/module/network/index.d.ts.map +1 -1
  23. package/dist/module/wallet/Base.d.ts +1 -1
  24. package/dist/module/wallet/Base.d.ts.map +1 -1
  25. package/dist/module/wallet/Base.js +6 -1
  26. package/dist/module/wallet/Base.js.map +1 -1
  27. package/dist/module/wallet/Bcmr.d.ts.map +1 -1
  28. package/dist/module/wallet/Bcmr.js +3 -1
  29. package/dist/module/wallet/Bcmr.js.map +1 -1
  30. package/dist/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +2 -12
  32. package/src/db/StorageProvider.ts +9 -9
  33. package/src/db/index.ts +1 -2
  34. package/src/db/interface.ts +0 -14
  35. package/src/db/util.ts +0 -26
  36. package/src/index.ts +0 -5
  37. package/src/network/index.ts +1 -0
  38. package/src/wallet/Base.ts +9 -2
  39. package/src/wallet/Bcmr.ts +5 -1
  40. package/src/wallet/Wif.test.ts +0 -42
  41. package/dist/module/db/IndexedDBProvider.d.ts +0 -16
  42. package/dist/module/db/IndexedDBProvider.d.ts.map +0 -1
  43. package/dist/module/db/IndexedDBProvider.js +0 -80
  44. package/dist/module/db/IndexedDBProvider.js.map +0 -1
  45. package/dist/module/db/SqlProvider.d.ts +0 -40
  46. package/dist/module/db/SqlProvider.d.ts.map +0 -1
  47. package/dist/module/db/SqlProvider.js +0 -198
  48. package/dist/module/db/SqlProvider.js.map +0 -1
  49. package/dist/module/db/getStorageProvider.d.ts +0 -3
  50. package/dist/module/db/getStorageProvider.d.ts.map +0 -1
  51. package/dist/module/db/getStorageProvider.js +0 -19
  52. package/dist/module/db/getStorageProvider.js.map +0 -1
  53. package/dist/module/webhook/Webhook.d.ts +0 -36
  54. package/dist/module/webhook/Webhook.d.ts.map +0 -1
  55. package/dist/module/webhook/Webhook.js +0 -77
  56. package/dist/module/webhook/Webhook.js.map +0 -1
  57. package/dist/module/webhook/WebhookBch.d.ts +0 -14
  58. package/dist/module/webhook/WebhookBch.d.ts.map +0 -1
  59. package/dist/module/webhook/WebhookBch.js +0 -141
  60. package/dist/module/webhook/WebhookBch.js.map +0 -1
  61. package/dist/module/webhook/WebhookWorker.d.ts +0 -23
  62. package/dist/module/webhook/WebhookWorker.d.ts.map +0 -1
  63. package/dist/module/webhook/WebhookWorker.js +0 -94
  64. package/dist/module/webhook/WebhookWorker.js.map +0 -1
  65. package/dist/module/webhook/index.d.ts +0 -5
  66. package/dist/module/webhook/index.d.ts.map +0 -1
  67. package/dist/module/webhook/index.js +0 -5
  68. package/dist/module/webhook/index.js.map +0 -1
  69. package/dist/module/webhook/interface.d.ts +0 -8
  70. package/dist/module/webhook/interface.d.ts.map +0 -1
  71. package/dist/module/webhook/interface.js +0 -2
  72. package/dist/module/webhook/interface.js.map +0 -1
  73. package/src/Wallet.test.headless.js +0 -369
  74. package/src/Wallet.test.ts +0 -519
  75. package/src/db/IndexedDBProvider.test.ts +0 -69
  76. package/src/db/IndexedDBProvider.ts +0 -93
  77. package/src/db/SqlProvider.test.ts +0 -282
  78. package/src/db/SqlProvider.ts +0 -297
  79. package/src/db/getStorageProvider.ts +0 -20
  80. package/src/db/index.test.headless.js +0 -62
  81. package/src/db/index.test.ts +0 -64
  82. package/src/wallet/createWallet.test.ts +0 -155
  83. package/src/webhook/Webhook.test.ts +0 -9
  84. package/src/webhook/Webhook.ts +0 -99
  85. package/src/webhook/WebhookBch.test.ts +0 -323
  86. package/src/webhook/WebhookBch.ts +0 -198
  87. package/src/webhook/WebhookWorker.test.ts +0 -96
  88. package/src/webhook/WebhookWorker.ts +0 -119
  89. package/src/webhook/index.ts +0 -4
  90. 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,5 +0,0 @@
1
- export { default as WebhookWorker } from "./WebhookWorker.js";
2
- export * from "./Webhook.js";
3
- export * from "./WebhookBch.js";
4
- export * from "./interface.js";
5
- //# sourceMappingURL=index.d.ts.map
@@ -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,5 +0,0 @@
1
- export { default as WebhookWorker } from "./WebhookWorker.js";
2
- export * from "./Webhook.js";
3
- export * from "./WebhookBch.js";
4
- export * from "./interface.js";
5
- //# sourceMappingURL=index.js.map
@@ -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,8 +0,0 @@
1
- export interface RegisterWebhookParams {
2
- cashaddr: string;
3
- url: string;
4
- type: string;
5
- recurrence: string;
6
- duration_sec?: number;
7
- }
8
- //# sourceMappingURL=interface.d.ts.map
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/webhook/interface.ts"],"names":[],"mappings":""}