@bsv/sdk 1.4.17 → 1.4.19
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/cjs/package.json +1 -1
- package/dist/cjs/src/kvstore/LocalKVStore.js +152 -141
- package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/cjs/src/storage/StorageUploader.js +122 -14
- package/dist/cjs/src/storage/StorageUploader.js.map +1 -1
- package/dist/cjs/src/storage/__test/StorageUploader.test.js +85 -14
- package/dist/cjs/src/storage/__test/StorageUploader.test.js.map +1 -1
- package/dist/cjs/src/wallet/WERR_REVIEW_ACTIONS.js +29 -0
- package/dist/cjs/src/wallet/WERR_REVIEW_ACTIONS.js.map +1 -0
- package/dist/cjs/src/wallet/WalletError.js +4 -3
- package/dist/cjs/src/wallet/WalletError.js.map +1 -1
- package/dist/cjs/src/wallet/index.js +4 -1
- package/dist/cjs/src/wallet/index.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +13 -6
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/kvstore/LocalKVStore.js +151 -141
- package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/esm/src/storage/StorageUploader.js +119 -14
- package/dist/esm/src/storage/StorageUploader.js.map +1 -1
- package/dist/esm/src/storage/__test/StorageUploader.test.js +85 -14
- package/dist/esm/src/storage/__test/StorageUploader.test.js.map +1 -1
- package/dist/esm/src/wallet/WERR_REVIEW_ACTIONS.js +31 -0
- package/dist/esm/src/wallet/WERR_REVIEW_ACTIONS.js.map +1 -0
- package/dist/esm/src/wallet/WalletError.js +3 -2
- package/dist/esm/src/wallet/WalletError.js.map +1 -1
- package/dist/esm/src/wallet/index.js +2 -0
- package/dist/esm/src/wallet/index.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +13 -6
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/kvstore/LocalKVStore.d.ts +10 -4
- package/dist/types/src/kvstore/LocalKVStore.d.ts.map +1 -1
- package/dist/types/src/storage/StorageUploader.d.ts +77 -14
- package/dist/types/src/storage/StorageUploader.d.ts.map +1 -1
- package/dist/types/src/wallet/WERR_REVIEW_ACTIONS.d.ts +23 -0
- package/dist/types/src/wallet/WERR_REVIEW_ACTIONS.d.ts.map +1 -0
- package/dist/types/src/wallet/Wallet.interfaces.d.ts +22 -0
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
- package/dist/types/src/wallet/WalletError.d.ts +4 -3
- package/dist/types/src/wallet/WalletError.d.ts.map +1 -1
- package/dist/types/src/wallet/index.d.ts +1 -0
- package/dist/types/src/wallet/index.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/kvstore.md +9 -8
- package/docs/storage.md +117 -7
- package/docs/wallet.md +146 -38
- package/package.json +1 -1
- package/src/kvstore/LocalKVStore.ts +156 -151
- package/src/kvstore/__tests/LocalKVStore.test.ts +104 -193
- package/src/storage/StorageUploader.ts +156 -14
- package/src/storage/__test/StorageUploader.test.ts +134 -15
- package/src/wallet/WERR_REVIEW_ACTIONS.ts +30 -0
- package/src/wallet/Wallet.interfaces.ts +24 -0
- package/src/wallet/WalletError.ts +4 -2
- package/src/wallet/index.ts +2 -0
- package/src/wallet/substrates/HTTPWalletJSON.ts +12 -6
|
@@ -29,13 +29,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
const StorageUploader_js_1 = require("../StorageUploader.js");
|
|
30
30
|
const StorageUtils = __importStar(require("../StorageUtils.js"));
|
|
31
31
|
const WalletClient_js_1 = __importDefault(require("../../wallet/WalletClient.js"));
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* A helper for converting a string to a number[] of UTF-8 bytes
|
|
34
|
+
*/
|
|
33
35
|
function stringToUtf8Array(str) {
|
|
34
36
|
return Array.from(new TextEncoder().encode(str));
|
|
35
37
|
}
|
|
36
38
|
describe('StorageUploader Tests', () => {
|
|
37
39
|
let uploader;
|
|
38
40
|
let walletClient;
|
|
41
|
+
// We'll have TWO spies:
|
|
42
|
+
let authFetchSpy;
|
|
39
43
|
let globalFetchSpy;
|
|
40
44
|
beforeEach(() => {
|
|
41
45
|
walletClient = new WalletClient_js_1.default('json-api', 'non-admin.com');
|
|
@@ -43,6 +47,11 @@ describe('StorageUploader Tests', () => {
|
|
|
43
47
|
storageURL: 'https://example.test.system',
|
|
44
48
|
wallet: walletClient
|
|
45
49
|
});
|
|
50
|
+
// 1) Spy on the "authFetch.fetch" calls for /find, /list, /renew
|
|
51
|
+
authFetchSpy = jest
|
|
52
|
+
.spyOn(uploader['authFetch'], 'fetch')
|
|
53
|
+
.mockResolvedValue(new Response(null, { status: 200 }));
|
|
54
|
+
// 2) Spy on the global "fetch" calls for file upload (uploadFile)
|
|
46
55
|
globalFetchSpy = jest
|
|
47
56
|
.spyOn(global, 'fetch')
|
|
48
57
|
.mockResolvedValue(new Response(null, { status: 200 }));
|
|
@@ -54,39 +63,101 @@ describe('StorageUploader Tests', () => {
|
|
|
54
63
|
const data = stringToUtf8Array('Hello, world!');
|
|
55
64
|
// Mock out getUploadInfo so we can control the returned upload/public URLs
|
|
56
65
|
jest.spyOn(uploader, 'getUploadInfo').mockResolvedValue({
|
|
57
|
-
uploadURL: 'https://example-upload.com/put'
|
|
66
|
+
uploadURL: 'https://example-upload.com/put'
|
|
58
67
|
});
|
|
59
68
|
const result = await uploader.publishFile({
|
|
60
|
-
file: {
|
|
61
|
-
data,
|
|
62
|
-
type: 'text/plain'
|
|
63
|
-
},
|
|
69
|
+
file: { data, type: 'text/plain' },
|
|
64
70
|
retentionPeriod: 7
|
|
65
71
|
});
|
|
66
|
-
//
|
|
72
|
+
// This direct upload uses global.fetch, not authFetch
|
|
67
73
|
expect(globalFetchSpy).toHaveBeenCalledTimes(1);
|
|
68
74
|
// Check the result
|
|
69
75
|
expect(StorageUtils.isValidURL(result.uhrpURL)).toBe(true);
|
|
70
76
|
expect(result.published).toBe(true);
|
|
71
77
|
const url = StorageUtils.getHashFromURL(result.uhrpURL);
|
|
72
|
-
const firstFour = url.slice(0, 4)
|
|
78
|
+
const firstFour = url.slice(0, 4)
|
|
79
|
+
.map(b => b.toString(16).padStart(2, '0'))
|
|
80
|
+
.join('');
|
|
73
81
|
expect(firstFour).toHaveLength(8);
|
|
74
82
|
});
|
|
75
83
|
it('should throw if the upload fails with HTTP 500', async () => {
|
|
76
|
-
// Force the fetch to fail
|
|
84
|
+
// Force the direct upload (global fetch) to fail
|
|
77
85
|
globalFetchSpy.mockResolvedValueOnce(new Response(null, { status: 500 }));
|
|
78
86
|
// Also mock getUploadInfo
|
|
79
87
|
jest.spyOn(uploader, 'getUploadInfo').mockResolvedValue({
|
|
80
|
-
uploadURL: 'https://example-upload.com/put'
|
|
88
|
+
uploadURL: 'https://example-upload.com/put'
|
|
81
89
|
});
|
|
82
90
|
const failingData = stringToUtf8Array('failing data');
|
|
83
91
|
await expect(uploader.publishFile({
|
|
84
|
-
file: {
|
|
85
|
-
data: failingData,
|
|
86
|
-
type: 'text/plain'
|
|
87
|
-
},
|
|
92
|
+
file: { data: failingData, type: 'text/plain' },
|
|
88
93
|
retentionPeriod: 30
|
|
89
94
|
})).rejects.toThrow('File upload failed: HTTP 500');
|
|
90
95
|
});
|
|
96
|
+
it('should find a file and return metadata', async () => {
|
|
97
|
+
// This route goes through authFetch, not global fetch
|
|
98
|
+
authFetchSpy.mockResolvedValueOnce(new Response(JSON.stringify({
|
|
99
|
+
status: 'success',
|
|
100
|
+
data: {
|
|
101
|
+
name: 'cdn/abc123',
|
|
102
|
+
size: '1024',
|
|
103
|
+
mimeType: 'text/plain',
|
|
104
|
+
expiryTime: 123456
|
|
105
|
+
}
|
|
106
|
+
}), { status: 200 }));
|
|
107
|
+
const fileData = await uploader.findFile('uhrp://some-hash');
|
|
108
|
+
expect(authFetchSpy).toHaveBeenCalledTimes(1);
|
|
109
|
+
expect(fileData.name).toBe('cdn/abc123');
|
|
110
|
+
expect(fileData.size).toBe('1024');
|
|
111
|
+
expect(fileData.mimeType).toBe('text/plain');
|
|
112
|
+
expect(fileData.expiryTime).toBe(123456);
|
|
113
|
+
});
|
|
114
|
+
it('should throw an error if findFile returns an error status', async () => {
|
|
115
|
+
authFetchSpy.mockResolvedValueOnce(new Response(JSON.stringify({ status: 'error', code: 'ERR_NOT_FOUND', description: 'File not found' }), { status: 200 }));
|
|
116
|
+
await expect(uploader.findFile('uhrp://unknown-hash'))
|
|
117
|
+
.rejects
|
|
118
|
+
.toThrow('findFile returned an error: ERR_NOT_FOUND - File not found');
|
|
119
|
+
});
|
|
120
|
+
it('should list user uploads successfully', async () => {
|
|
121
|
+
// /list uses authFetch
|
|
122
|
+
const mockUploads = [
|
|
123
|
+
{ uhrpUrl: 'uhrp://hash1', expiryTime: 111111 },
|
|
124
|
+
{ uhrpUrl: 'uhrp://hash2', expiryTime: 222222 }
|
|
125
|
+
];
|
|
126
|
+
authFetchSpy.mockResolvedValueOnce(new Response(JSON.stringify({ status: 'success', uploads: mockUploads }), { status: 200 }));
|
|
127
|
+
const result = await uploader.listUploads();
|
|
128
|
+
expect(authFetchSpy).toHaveBeenCalledTimes(1);
|
|
129
|
+
expect(result).toEqual(mockUploads);
|
|
130
|
+
});
|
|
131
|
+
it('should throw an error if listUploads returns an error', async () => {
|
|
132
|
+
authFetchSpy.mockResolvedValueOnce(new Response(JSON.stringify({ status: 'error', code: 'ERR_INTERNAL', description: 'Something broke' }), { status: 200 }));
|
|
133
|
+
await expect(uploader.listUploads()).rejects.toThrow('listUploads returned an error: ERR_INTERNAL - Something broke');
|
|
134
|
+
});
|
|
135
|
+
it('should renew a file and return the new expiry info', async () => {
|
|
136
|
+
// /renew uses authFetch
|
|
137
|
+
authFetchSpy.mockResolvedValueOnce(new Response(JSON.stringify({
|
|
138
|
+
status: 'success',
|
|
139
|
+
prevExpiryTime: 123,
|
|
140
|
+
newExpiryTime: 456,
|
|
141
|
+
amount: 99
|
|
142
|
+
}), { status: 200 }));
|
|
143
|
+
const renewal = await uploader.renewFile('uhrp://some-hash', 30);
|
|
144
|
+
expect(authFetchSpy).toHaveBeenCalledTimes(1);
|
|
145
|
+
expect(renewal.status).toBe('success');
|
|
146
|
+
expect(renewal.prevExpiryTime).toBe(123);
|
|
147
|
+
expect(renewal.newExpiryTime).toBe(456);
|
|
148
|
+
expect(renewal.amount).toBe(99);
|
|
149
|
+
});
|
|
150
|
+
it('should throw an error if renewFile returns error status JSON', async () => {
|
|
151
|
+
authFetchSpy.mockResolvedValueOnce(new Response(JSON.stringify({ status: 'error', code: 'ERR_CANT_RENEW', description: 'Failed to renew' }), { status: 200 }));
|
|
152
|
+
await expect(uploader.renewFile('uhrp://some-other-hash', 15))
|
|
153
|
+
.rejects
|
|
154
|
+
.toThrow('renewFile returned an error: ERR_CANT_RENEW - Failed to renew');
|
|
155
|
+
});
|
|
156
|
+
it('should throw if renewFile request fails with non-200 status', async () => {
|
|
157
|
+
authFetchSpy.mockResolvedValueOnce(new Response(null, { status: 404 }));
|
|
158
|
+
await expect(uploader.renewFile('uhrp://ghost', 10))
|
|
159
|
+
.rejects
|
|
160
|
+
.toThrow('renewFile request failed: HTTP 404');
|
|
161
|
+
});
|
|
91
162
|
});
|
|
92
163
|
//# sourceMappingURL=StorageUploader.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageUploader.test.js","sourceRoot":"","sources":["../../../../../src/storage/__test/StorageUploader.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAuD;AACvD,iEAAkD;AAClD,mFAAuD;AAEvD
|
|
1
|
+
{"version":3,"file":"StorageUploader.test.js","sourceRoot":"","sources":["../../../../../src/storage/__test/StorageUploader.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WERR_REVIEW_ACTIONS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* When a `createAction` or `signAction` is completed in undelayed mode (`acceptDelayedBroadcast`: false),
|
|
6
|
+
* any unsucccessful result will return the results by way of this exception to ensure attention is
|
|
7
|
+
* paid to processing errors.
|
|
8
|
+
*/
|
|
9
|
+
class WERR_REVIEW_ACTIONS extends Error {
|
|
10
|
+
/**
|
|
11
|
+
* All parameters correspond to their comparable `createAction` or `signSction` results
|
|
12
|
+
* with the exception of `reviewActionResults`;
|
|
13
|
+
* which contains more details, particularly for double spend results.
|
|
14
|
+
*/
|
|
15
|
+
constructor(reviewActionResults, sendWithResults, txid, tx, noSendChange) {
|
|
16
|
+
super('Undelayed createAction or signAction results require review.');
|
|
17
|
+
this.reviewActionResults = reviewActionResults;
|
|
18
|
+
this.sendWithResults = sendWithResults;
|
|
19
|
+
this.txid = txid;
|
|
20
|
+
this.tx = tx;
|
|
21
|
+
this.noSendChange = noSendChange;
|
|
22
|
+
this.isError = true;
|
|
23
|
+
this.code = 5;
|
|
24
|
+
this.name = this.constructor.name;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.WERR_REVIEW_ACTIONS = WERR_REVIEW_ACTIONS;
|
|
28
|
+
exports.default = WERR_REVIEW_ACTIONS;
|
|
29
|
+
//# sourceMappingURL=WERR_REVIEW_ACTIONS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WERR_REVIEW_ACTIONS.js","sourceRoot":"","sources":["../../../../src/wallet/WERR_REVIEW_ACTIONS.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,MAAa,mBAAoB,SAAQ,KAAK;IAI5C;;;;OAIG;IACH,YACS,mBAAyC,EACzC,eAAiC,EACjC,IAAoB,EACpB,EAAe,EACf,YAA+B;QAEtC,KAAK,CAAC,8DAA8D,CAAC,CAAA;QAN9D,wBAAmB,GAAnB,mBAAmB,CAAsB;QACzC,oBAAe,GAAf,eAAe,CAAkB;QACjC,SAAI,GAAJ,IAAI,CAAgB;QACpB,OAAE,GAAF,EAAE,CAAa;QACf,iBAAY,GAAZ,YAAY,CAAmB;QAZxC,YAAO,GAAY,IAAI,CAAA;QAerB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IACnC,CAAC;CACF;AApBD,kDAoBC;AAED,kBAAe,mBAAmB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WalletError = void 0;
|
|
3
|
+
exports.walletErrors = exports.WalletError = void 0;
|
|
4
4
|
class WalletError extends Error {
|
|
5
5
|
constructor(message, code = 1, stack) {
|
|
6
6
|
super(message);
|
|
@@ -23,6 +23,7 @@ var walletErrors;
|
|
|
23
23
|
walletErrors[walletErrors["unsupportedAction"] = 2] = "unsupportedAction";
|
|
24
24
|
walletErrors[walletErrors["invalidHmac"] = 3] = "invalidHmac";
|
|
25
25
|
walletErrors[walletErrors["invalidSignature"] = 4] = "invalidSignature";
|
|
26
|
-
|
|
27
|
-
exports.
|
|
26
|
+
walletErrors[walletErrors["reviewActions"] = 5] = "reviewActions";
|
|
27
|
+
})(walletErrors || (exports.walletErrors = walletErrors = {}));
|
|
28
|
+
exports.default = WalletError;
|
|
28
29
|
//# sourceMappingURL=WalletError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletError.js","sourceRoot":"","sources":["../../../../src/wallet/WalletError.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IAIpC,YAAa,OAAe,EAAE,IAAI,GAAG,CAAC,EAAE,KAAc;QACpD,KAAK,CAAC,OAAO,CAAC,CAAA;QAHhB,YAAO,GAAY,IAAI,CAAA;QAIrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QAEjC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;YACzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;SACnB;aAAM;YACL,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;SAChD;IACH,CAAC;CACF;AAfD,kCAeC;AAED,4DAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"WalletError.js","sourceRoot":"","sources":["../../../../src/wallet/WalletError.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IAIpC,YAAa,OAAe,EAAE,IAAI,GAAG,CAAC,EAAE,KAAc;QACpD,KAAK,CAAC,OAAO,CAAC,CAAA;QAHhB,YAAO,GAAY,IAAI,CAAA;QAIrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QAEjC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;YACzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;SACnB;aAAM;YACL,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;SAChD;IACH,CAAC;CACF;AAfD,kCAeC;AAED,4DAA4D;AAC5D,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,+DAAgB,CAAA;IAChB,yEAAqB,CAAA;IACrB,6DAAe,CAAA;IACf,uEAAoB,CAAA;IACpB,iEAAiB,CAAA;AACnB,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB;AAID,kBAAe,WAAW,CAAA"}
|
|
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.WalletErrors = exports.WalletClient = exports.ProtoWallet = exports.CachedKeyDeriver = void 0;
|
|
20
|
+
exports.WERR_REVIEW_ACTIONS = exports.WalletErrors = exports.WalletClient = exports.ProtoWallet = exports.CachedKeyDeriver = void 0;
|
|
21
21
|
__exportStar(require("./Wallet.interfaces.js"), exports);
|
|
22
22
|
__exportStar(require("./KeyDeriver.js"), exports);
|
|
23
23
|
var CachedKeyDeriver_js_1 = require("./CachedKeyDeriver.js");
|
|
@@ -26,8 +26,11 @@ var ProtoWallet_js_1 = require("./ProtoWallet.js");
|
|
|
26
26
|
Object.defineProperty(exports, "ProtoWallet", { enumerable: true, get: function () { return __importDefault(ProtoWallet_js_1).default; } });
|
|
27
27
|
var WalletClient_js_1 = require("./WalletClient.js");
|
|
28
28
|
Object.defineProperty(exports, "WalletClient", { enumerable: true, get: function () { return __importDefault(WalletClient_js_1).default; } });
|
|
29
|
+
// Is this an error? should it be 'walletErrors', the enum not the class?
|
|
29
30
|
var WalletError_js_1 = require("./WalletError.js");
|
|
30
31
|
Object.defineProperty(exports, "WalletErrors", { enumerable: true, get: function () { return __importDefault(WalletError_js_1).default; } });
|
|
32
|
+
var WERR_REVIEW_ACTIONS_js_1 = require("./WERR_REVIEW_ACTIONS.js");
|
|
33
|
+
Object.defineProperty(exports, "WERR_REVIEW_ACTIONS", { enumerable: true, get: function () { return __importDefault(WERR_REVIEW_ACTIONS_js_1).default; } });
|
|
31
34
|
__exportStar(require("./WalletError.js"), exports);
|
|
32
35
|
__exportStar(require("./substrates/index.js"), exports);
|
|
33
36
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/wallet/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,yDAAsC;AACtC,kDAA+B;AAC/B,6DAAmE;AAA1D,wIAAA,OAAO,OAAoB;AACpC,mDAAyD;AAAhD,8HAAA,OAAO,OAAe;AAC/B,qDAA2D;AAAlD,gIAAA,OAAO,OAAgB;AAChC,mDAA0D;AAAjD,+HAAA,OAAO,OAAgB;AAChC,mDAAgC;AAChC,wDAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/wallet/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,yDAAsC;AACtC,kDAA+B;AAC/B,6DAAmE;AAA1D,wIAAA,OAAO,OAAoB;AACpC,mDAAyD;AAAhD,8HAAA,OAAO,OAAe;AAC/B,qDAA2D;AAAlD,gIAAA,OAAO,OAAgB;AAChC,yEAAyE;AACzE,mDAA0D;AAAjD,+HAAA,OAAO,OAAgB;AAChC,mEAAyE;AAAhE,8IAAA,OAAO,OAAuB;AACvC,mDAAgC;AAChC,wDAAqC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const WERR_REVIEW_ACTIONS_js_1 = require("../WERR_REVIEW_ACTIONS.js");
|
|
3
4
|
class HTTPWalletJSON {
|
|
4
5
|
constructor(originator, baseUrl = 'http://localhost:3321', httpClient = fetch) {
|
|
5
6
|
this.baseUrl = baseUrl;
|
|
@@ -19,12 +20,18 @@ class HTTPWalletJSON {
|
|
|
19
20
|
const data = await res.json();
|
|
20
21
|
// Check the HTTP status on the original response
|
|
21
22
|
if (!res.ok) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
if (res.status === 400 && data.isError && data.code === 5) {
|
|
24
|
+
const err = new WERR_REVIEW_ACTIONS_js_1.WERR_REVIEW_ACTIONS(data.reviewActionResults, data.sendWithResults, data.txid, data.tx, data.noSendChange);
|
|
25
|
+
throw err;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const err = {
|
|
29
|
+
call,
|
|
30
|
+
args,
|
|
31
|
+
message: (_b = data.message) !== null && _b !== void 0 ? _b : `HTTP Client error ${res.status}`
|
|
32
|
+
};
|
|
33
|
+
throw new Error(JSON.stringify(err));
|
|
34
|
+
}
|
|
28
35
|
}
|
|
29
36
|
return data;
|
|
30
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HTTPWalletJSON.js","sourceRoot":"","sources":["../../../../../src/wallet/substrates/HTTPWalletJSON.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"HTTPWalletJSON.js","sourceRoot":"","sources":["../../../../../src/wallet/substrates/HTTPWalletJSON.ts"],"names":[],"mappings":"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"}
|