@requestnetwork/request-client.js 0.30.1-next.1351 → 0.30.1-next.710
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/README.md +9 -13
- package/dist/api/content-data-extension.js +3 -3
- package/dist/api/content-data-extension.js.map +1 -1
- package/dist/api/request-network.d.ts +50 -15
- package/dist/api/request-network.d.ts.map +1 -1
- package/dist/api/request-network.js +187 -87
- package/dist/api/request-network.js.map +1 -1
- package/dist/api/request.d.ts +55 -6
- package/dist/api/request.d.ts.map +1 -1
- package/dist/api/request.js +171 -149
- package/dist/api/request.js.map +1 -1
- package/dist/api/utils.d.ts +5 -6
- package/dist/api/utils.d.ts.map +1 -1
- package/dist/api/utils.js +1 -3
- package/dist/api/utils.js.map +1 -1
- package/dist/http-config-defaults.d.ts +4 -0
- package/dist/http-config-defaults.d.ts.map +1 -0
- package/dist/http-config-defaults.js +16 -0
- package/dist/http-config-defaults.js.map +1 -0
- package/dist/http-data-access.d.ts +40 -9
- package/dist/http-data-access.d.ts.map +1 -1
- package/dist/http-data-access.js +113 -95
- package/dist/http-data-access.js.map +1 -1
- package/dist/http-metamask-data-access.d.ts +7 -7
- package/dist/http-metamask-data-access.d.ts.map +1 -1
- package/dist/http-metamask-data-access.js +57 -61
- package/dist/http-metamask-data-access.js.map +1 -1
- package/dist/http-request-network.d.ts +15 -15
- package/dist/http-request-network.d.ts.map +1 -1
- package/dist/http-request-network.js +23 -25
- package/dist/http-request-network.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/mock-storage.d.ts +2 -5
- package/dist/mock-storage.d.ts.map +1 -1
- package/dist/mock-storage.js +24 -77
- package/dist/mock-storage.js.map +1 -1
- package/dist/no-persist-http-data-access.d.ts +10 -0
- package/dist/no-persist-http-data-access.d.ts.map +1 -0
- package/dist/no-persist-http-data-access.js +36 -0
- package/dist/no-persist-http-data-access.js.map +1 -0
- package/dist/report.html +9 -24
- package/dist/requestnetwork.min.js +441 -1
- package/dist/requestnetwork.min.js.LICENSE.txt +11 -24
- package/dist/requestnetwork.min.js.map +1 -1
- package/dist/types.js +2 -11
- package/dist/types.js.map +1 -1
- package/package.json +32 -43
- package/CHANGELOG.md +0 -2077
- package/dist/api/currency/erc20/celo.d.ts +0 -14
- package/dist/api/currency/erc20/celo.d.ts.map +0 -1
- package/dist/api/currency/erc20/celo.js +0 -26
- package/dist/api/currency/erc20/celo.js.map +0 -1
- package/dist/api/currency/erc20/networks.d.ts +0 -25
- package/dist/api/currency/erc20/networks.d.ts.map +0 -1
- package/dist/api/currency/erc20/networks.js +0 -14
- package/dist/api/currency/erc20/networks.js.map +0 -1
- package/dist/api/currency/erc20/rinkeby.d.ts +0 -19
- package/dist/api/currency/erc20/rinkeby.d.ts.map +0 -1
- package/dist/api/currency/erc20/rinkeby.js +0 -43
- package/dist/api/currency/erc20/rinkeby.js.map +0 -1
- package/dist/api/currency/erc20.d.ts +0 -62
- package/dist/api/currency/erc20.d.ts.map +0 -1
- package/dist/api/currency/erc20.js +0 -136
- package/dist/api/currency/erc20.js.map +0 -1
- package/dist/api/currency.d.ts +0 -45
- package/dist/api/currency.d.ts.map +0 -1
- package/dist/api/currency.js +0 -162
- package/dist/api/currency.js.map +0 -1
- package/dist/mock-data-access.d.ts +0 -11
- package/dist/mock-data-access.d.ts.map +0 -1
- package/dist/mock-data-access.js +0 -16
- package/dist/mock-data-access.js.map +0 -1
package/dist/mock-storage.js
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
|
|
3
|
+
exports.MockStorage = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const MultiFormat = require("@requestnetwork/multi-format");
|
|
13
6
|
const types_1 = require("@requestnetwork/types");
|
|
14
|
-
const utils_1 = require("@requestnetwork/utils");
|
|
15
7
|
const events_1 = require("events");
|
|
8
|
+
const utils_1 = require("@requestnetwork/utils");
|
|
16
9
|
/**
|
|
17
10
|
* Storage layer implemented with in-memory hashmap, to be used for testing.
|
|
18
11
|
*/
|
|
@@ -23,41 +16,17 @@ class MockStorage {
|
|
|
23
16
|
this.forceEmitError = false;
|
|
24
17
|
}
|
|
25
18
|
initialize() {
|
|
26
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
27
20
|
return;
|
|
28
21
|
});
|
|
29
22
|
}
|
|
30
|
-
_ipfsAdd(content) {
|
|
31
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
if (!content) {
|
|
33
|
-
throw Error('Error: no content provided');
|
|
34
|
-
}
|
|
35
|
-
const hash = multi_format_1.default.serialize(utils_1.default.crypto.normalizeKeccak256Hash(content));
|
|
36
|
-
const nowTimestampInSec = utils_1.default.getCurrentTimestampInSecond();
|
|
37
|
-
this.data.set(hash, {
|
|
38
|
-
content,
|
|
39
|
-
state: types_1.StorageTypes.ContentState.PENDING,
|
|
40
|
-
timestamp: nowTimestampInSec,
|
|
41
|
-
});
|
|
42
|
-
return {
|
|
43
|
-
ipfsHash: hash,
|
|
44
|
-
ipfsSize: content.length,
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
23
|
append(content) {
|
|
49
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
50
25
|
if (!content) {
|
|
51
26
|
throw Error('Error: no content provided');
|
|
52
27
|
}
|
|
53
|
-
const hash =
|
|
54
|
-
const nowTimestampInSec = utils_1.
|
|
55
|
-
const dataToStore = {
|
|
56
|
-
content,
|
|
57
|
-
state: types_1.StorageTypes.ContentState.PENDING,
|
|
58
|
-
timestamp: nowTimestampInSec,
|
|
59
|
-
};
|
|
60
|
-
this.data.set(hash, dataToStore);
|
|
28
|
+
const hash = MultiFormat.serialize((0, utils_1.normalizeKeccak256Hash)(content));
|
|
29
|
+
const nowTimestampInSec = (0, utils_1.getCurrentTimestampInSecond)();
|
|
61
30
|
const resultData = {
|
|
62
31
|
content,
|
|
63
32
|
id: hash,
|
|
@@ -67,6 +36,7 @@ class MockStorage {
|
|
|
67
36
|
timestamp: nowTimestampInSec,
|
|
68
37
|
},
|
|
69
38
|
};
|
|
39
|
+
this.data.set(hash, resultData);
|
|
70
40
|
const result = Object.assign(new events_1.EventEmitter(), resultData);
|
|
71
41
|
setTimeout(() => {
|
|
72
42
|
if (this.forceEmitError) {
|
|
@@ -75,18 +45,17 @@ class MockStorage {
|
|
|
75
45
|
result.emit('error', 'forced error asked by _makeNextAppendFailInsteadOfConfirmed()');
|
|
76
46
|
}
|
|
77
47
|
else {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
this.data.set(hash, dataToStore);
|
|
48
|
+
resultData.meta.state = types_1.StorageTypes.ContentState.CONFIRMED;
|
|
49
|
+
this.data.set(hash, resultData);
|
|
81
50
|
result.emit('confirmed', resultData);
|
|
82
51
|
}
|
|
83
|
-
//
|
|
52
|
+
// eslint-disable-next-line no-magic-numbers
|
|
84
53
|
}, 100);
|
|
85
54
|
return result;
|
|
86
55
|
});
|
|
87
56
|
}
|
|
88
57
|
read(id) {
|
|
89
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
90
59
|
if (!id) {
|
|
91
60
|
throw Error('No id provided');
|
|
92
61
|
}
|
|
@@ -94,60 +63,38 @@ class MockStorage {
|
|
|
94
63
|
if (!data) {
|
|
95
64
|
throw Error('No content found from this id');
|
|
96
65
|
}
|
|
97
|
-
return
|
|
98
|
-
content: data.content,
|
|
99
|
-
id,
|
|
100
|
-
meta: {
|
|
101
|
-
state: data.state,
|
|
102
|
-
storageType: types_1.StorageTypes.StorageSystemType.IN_MEMORY_MOCK,
|
|
103
|
-
timestamp: data.timestamp,
|
|
104
|
-
},
|
|
105
|
-
};
|
|
66
|
+
return data;
|
|
106
67
|
});
|
|
107
68
|
}
|
|
108
69
|
readMany(ids) {
|
|
109
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
110
|
-
return Promise.all(ids.map(id => this.read(id)));
|
|
70
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
return Promise.all(ids.map((id) => this.read(id)));
|
|
111
72
|
});
|
|
112
73
|
}
|
|
113
74
|
getData() {
|
|
114
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
115
|
-
const entries = Array.from(this.data.
|
|
116
|
-
|
|
117
|
-
id,
|
|
118
|
-
meta: {
|
|
119
|
-
state,
|
|
120
|
-
storageType: types_1.StorageTypes.StorageSystemType.IN_MEMORY_MOCK,
|
|
121
|
-
timestamp,
|
|
122
|
-
},
|
|
123
|
-
}));
|
|
124
|
-
const nowTimestampInSec = utils_1.default.getCurrentTimestampInSecond();
|
|
75
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const entries = Array.from(this.data.values());
|
|
77
|
+
const nowTimestampInSec = (0, utils_1.getCurrentTimestampInSecond)();
|
|
125
78
|
return {
|
|
126
79
|
entries,
|
|
127
80
|
lastTimestamp: nowTimestampInSec,
|
|
128
81
|
};
|
|
129
82
|
});
|
|
130
83
|
}
|
|
131
|
-
getIgnoredData() {
|
|
132
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
-
return [];
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
84
|
/**
|
|
137
85
|
* Gets information
|
|
138
86
|
*
|
|
139
|
-
* @param detailed if true get the list of files hash
|
|
140
87
|
*/
|
|
141
|
-
_getStatus(
|
|
142
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
_getStatus() {
|
|
89
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
143
90
|
return {
|
|
144
91
|
dataIds: {
|
|
145
92
|
count: Object.entries(this.data).length,
|
|
146
|
-
values:
|
|
93
|
+
values: [],
|
|
147
94
|
},
|
|
148
95
|
ignoredDataIds: {
|
|
149
96
|
count: 0,
|
|
150
|
-
values:
|
|
97
|
+
values: [],
|
|
151
98
|
},
|
|
152
99
|
};
|
|
153
100
|
});
|
|
@@ -156,5 +103,5 @@ class MockStorage {
|
|
|
156
103
|
this.forceEmitError = true;
|
|
157
104
|
}
|
|
158
105
|
}
|
|
159
|
-
exports.
|
|
106
|
+
exports.MockStorage = MockStorage;
|
|
160
107
|
//# sourceMappingURL=mock-storage.js.map
|
package/dist/mock-storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-storage.js","sourceRoot":"","sources":["../src/mock-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mock-storage.js","sourceRoot":"","sources":["../src/mock-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import HttpDataAccess, { NodeConnectionConfig } from './http-data-access';
|
|
2
|
+
import { ClientTypes, DataAccessTypes } from '@requestnetwork/types';
|
|
3
|
+
export declare class NoPersistHttpDataAccess extends HttpDataAccess {
|
|
4
|
+
constructor({ httpConfig, nodeConnectionConfig, }?: {
|
|
5
|
+
httpConfig?: Partial<ClientTypes.IHttpDataAccessConfig>;
|
|
6
|
+
nodeConnectionConfig?: Partial<NodeConnectionConfig>;
|
|
7
|
+
});
|
|
8
|
+
persistTransaction(transactionData: DataAccessTypes.ITransaction, channelId: string, topics?: string[]): Promise<DataAccessTypes.IReturnPersistTransaction>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=no-persist-http-data-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-persist-http-data-access.d.ts","sourceRoot":"","sources":["../src/no-persist-http-data-access.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,EAAE,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,eAAe,EAAgB,MAAM,uBAAuB,CAAC;AAGnF,qBAAa,uBAAwB,SAAQ,cAAc;gBAEvD,EACE,UAAU,EACV,oBAAoB,GACrB,GAAE;QACD,UAAU,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QACxD,oBAAoB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;KAItD;IAKG,kBAAkB,CACtB,eAAe,EAAE,eAAe,CAAC,YAAY,EAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,eAAe,CAAC,yBAAyB,CAAC;CAuBtD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoPersistHttpDataAccess = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const http_data_access_1 = require("./http-data-access");
|
|
6
|
+
const types_1 = require("@requestnetwork/types");
|
|
7
|
+
const events_1 = require("events");
|
|
8
|
+
class NoPersistHttpDataAccess extends http_data_access_1.default {
|
|
9
|
+
constructor({ httpConfig, nodeConnectionConfig, } = {
|
|
10
|
+
httpConfig: {},
|
|
11
|
+
nodeConnectionConfig: {},
|
|
12
|
+
}) {
|
|
13
|
+
super({ httpConfig, nodeConnectionConfig });
|
|
14
|
+
}
|
|
15
|
+
persistTransaction(transactionData, channelId, topics) {
|
|
16
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
17
|
+
const data = {
|
|
18
|
+
meta: {
|
|
19
|
+
topics: topics || [],
|
|
20
|
+
transactionStorageLocation: '',
|
|
21
|
+
storageMeta: {
|
|
22
|
+
state: types_1.StorageTypes.ContentState.PENDING,
|
|
23
|
+
timestamp: Date.now() / 1000,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
result: {},
|
|
27
|
+
};
|
|
28
|
+
const result = Object.assign(new events_1.EventEmitter(), data);
|
|
29
|
+
// Emit confirmation instantly since data is not going to be persisted
|
|
30
|
+
result.emit('confirmed', result);
|
|
31
|
+
return result;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.NoPersistHttpDataAccess = NoPersistHttpDataAccess;
|
|
36
|
+
//# sourceMappingURL=no-persist-http-data-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-persist-http-data-access.js","sourceRoot":"","sources":["../src/no-persist-http-data-access.ts"],"names":[],"mappings":";;;;AAAA,yDAA0E;AAC1E,iDAAmF;AACnF,mCAAsC;AAEtC,MAAa,uBAAwB,SAAQ,0BAAc;IACzD,YACE,EACE,UAAU,EACV,oBAAoB,MAIlB;QACF,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,EAAE;KACzB;QAED,KAAK,CAAC,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEK,kBAAkB,CACtB,eAA6C,EAC7C,SAAiB,EACjB,MAAiB;;YAEjB,MAAM,IAAI,GAAiD;gBACzD,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAM,IAAI,EAAE;oBACpB,0BAA0B,EAAE,EAAE;oBAC9B,WAAW,EAAE;wBACX,KAAK,EAAE,oBAAY,CAAC,YAAY,CAAC,OAAO;wBACxC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;qBAC7B;iBACF;gBACD,MAAM,EAAE,EAAE;aACX,CAAC;YAEF,MAAM,MAAM,GAA8C,MAAM,CAAC,MAAM,CACrE,IAAI,qBAAY,EAA+C,EAC/D,IAAI,CACL,CAAC;YAEF,sEAAsE;YACtE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAEjC,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF;AA3CD,0DA2CC"}
|