algosdk 1.12.0 → 1.13.1
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 +4 -4
- package/dist/browser/algosdk.min.js +1 -1
- package/dist/browser/algosdk.min.js.map +1 -1
- package/dist/cjs/src/abi/abi_type.js +693 -0
- package/dist/cjs/src/abi/abi_type.js.map +1 -0
- package/dist/cjs/src/abi/contract.js +27 -0
- package/dist/cjs/src/abi/contract.js.map +1 -0
- package/dist/cjs/src/abi/index.js +19 -0
- package/dist/cjs/src/abi/index.js.map +1 -0
- package/dist/cjs/src/abi/interface.js +23 -0
- package/dist/cjs/src/abi/interface.js.map +1 -0
- package/dist/cjs/src/abi/method.js +114 -0
- package/dist/cjs/src/abi/method.js.map +1 -0
- package/dist/cjs/src/abi/reference.js +25 -0
- package/dist/cjs/src/abi/reference.js.map +1 -0
- package/dist/cjs/src/abi/transaction.js +52 -0
- package/dist/cjs/src/abi/transaction.js.map +1 -0
- package/dist/cjs/src/client/baseHTTPClient.js +3 -0
- package/dist/cjs/src/client/baseHTTPClient.js.map +1 -0
- package/dist/cjs/src/client/client.js +164 -104
- package/dist/cjs/src/client/client.js.map +1 -1
- package/dist/cjs/src/client/urlTokenBaseHTTPClient.js +138 -0
- package/dist/cjs/src/client/urlTokenBaseHTTPClient.js.map +1 -0
- package/dist/cjs/src/client/v2/algod/algod.js +262 -9
- package/dist/cjs/src/client/v2/algod/algod.js.map +1 -1
- package/dist/cjs/src/client/v2/algod/models/types.js +2 -2
- package/dist/cjs/src/client/v2/indexer/indexer.js +160 -3
- package/dist/cjs/src/client/v2/indexer/indexer.js.map +1 -1
- package/dist/cjs/src/client/v2/indexer/lookupAssetBalances.js +98 -6
- package/dist/cjs/src/client/v2/indexer/lookupAssetBalances.js.map +1 -1
- package/dist/cjs/src/client/v2/serviceClient.js +17 -8
- package/dist/cjs/src/client/v2/serviceClient.js.map +1 -1
- package/dist/cjs/src/composer.js +439 -0
- package/dist/cjs/src/composer.js.map +1 -0
- package/dist/cjs/src/dryrun.js +105 -0
- package/dist/cjs/src/dryrun.js.map +1 -0
- package/dist/cjs/src/encoding/bigint.js +38 -0
- package/dist/cjs/src/encoding/bigint.js.map +1 -0
- package/dist/cjs/src/logicsig.js +2 -2
- package/dist/cjs/src/logicsig.js.map +1 -1
- package/dist/cjs/src/main.js +12 -87
- package/dist/cjs/src/main.js.map +1 -1
- package/dist/cjs/src/makeTxn.js +29 -1
- package/dist/cjs/src/makeTxn.js.map +1 -1
- package/dist/cjs/src/multisig.js +77 -2
- package/dist/cjs/src/multisig.js.map +1 -1
- package/dist/cjs/src/signer.js +66 -0
- package/dist/cjs/src/signer.js.map +1 -0
- package/dist/cjs/src/transaction.js +8 -4
- package/dist/cjs/src/transaction.js.map +1 -1
- package/dist/cjs/src/types/intDecoding.js +0 -2
- package/dist/cjs/src/types/intDecoding.js.map +1 -1
- package/dist/cjs/src/types/transactions/base.js +0 -1
- package/dist/cjs/src/types/transactions/base.js.map +1 -1
- package/dist/cjs/src/wait.js +53 -0
- package/dist/cjs/src/wait.js.map +1 -0
- package/dist/esm/src/abi/abi_type.js +680 -0
- package/dist/esm/src/abi/abi_type.js.map +1 -0
- package/dist/esm/src/abi/contract.js +23 -0
- package/dist/esm/src/abi/contract.js.map +1 -0
- package/dist/esm/src/abi/index.js +7 -0
- package/dist/esm/src/abi/index.js.map +1 -0
- package/dist/esm/src/abi/interface.js +19 -0
- package/dist/esm/src/abi/interface.js.map +1 -0
- package/dist/esm/src/abi/method.js +110 -0
- package/dist/esm/src/abi/method.js.map +1 -0
- package/dist/esm/src/abi/reference.js +21 -0
- package/dist/esm/src/abi/reference.js.map +1 -0
- package/dist/esm/src/abi/transaction.js +47 -0
- package/dist/esm/src/abi/transaction.js.map +1 -0
- package/dist/esm/src/client/baseHTTPClient.js +2 -0
- package/dist/esm/src/client/baseHTTPClient.js.map +1 -0
- package/dist/esm/src/client/client.js +164 -101
- package/dist/esm/src/client/client.js.map +1 -1
- package/dist/esm/src/client/urlTokenBaseHTTPClient.js +112 -0
- package/dist/esm/src/client/urlTokenBaseHTTPClient.js.map +1 -0
- package/dist/esm/src/client/v2/algod/algod.js +262 -9
- package/dist/esm/src/client/v2/algod/algod.js.map +1 -1
- package/dist/esm/src/client/v2/algod/models/types.js +2 -2
- package/dist/esm/src/client/v2/indexer/indexer.js +160 -3
- package/dist/esm/src/client/v2/indexer/indexer.js.map +1 -1
- package/dist/esm/src/client/v2/indexer/lookupAssetBalances.js +98 -6
- package/dist/esm/src/client/v2/indexer/lookupAssetBalances.js.map +1 -1
- package/dist/esm/src/client/v2/serviceClient.js +17 -8
- package/dist/esm/src/client/v2/serviceClient.js.map +1 -1
- package/dist/esm/src/composer.js +435 -0
- package/dist/esm/src/composer.js.map +1 -0
- package/dist/esm/src/dryrun.js +101 -0
- package/dist/esm/src/dryrun.js.map +1 -0
- package/dist/esm/src/encoding/bigint.js +33 -0
- package/dist/esm/src/encoding/bigint.js.map +1 -0
- package/dist/esm/src/logicsig.js +2 -2
- package/dist/esm/src/logicsig.js.map +1 -1
- package/dist/esm/src/main.js +6 -82
- package/dist/esm/src/main.js.map +1 -1
- package/dist/esm/src/makeTxn.js +27 -0
- package/dist/esm/src/makeTxn.js.map +1 -1
- package/dist/esm/src/multisig.js +73 -1
- package/dist/esm/src/multisig.js.map +1 -1
- package/dist/esm/src/signer.js +59 -0
- package/dist/esm/src/signer.js.map +1 -0
- package/dist/esm/src/transaction.js +8 -4
- package/dist/esm/src/transaction.js.map +1 -1
- package/dist/esm/src/types/intDecoding.js +0 -2
- package/dist/esm/src/types/intDecoding.js.map +1 -1
- package/dist/esm/src/types/transactions/base.js +0 -1
- package/dist/esm/src/types/transactions/base.js.map +1 -1
- package/dist/esm/src/wait.js +49 -0
- package/dist/esm/src/wait.js.map +1 -0
- package/dist/types/src/abi/abi_type.d.ts +102 -0
- package/dist/types/src/abi/contract.d.ts +21 -0
- package/dist/types/src/abi/index.d.ts +6 -0
- package/dist/types/src/abi/interface.d.ts +13 -0
- package/dist/types/src/abi/method.d.ts +39 -0
- package/dist/types/src/abi/reference.d.ts +15 -0
- package/dist/types/src/abi/transaction.d.ts +33 -0
- package/dist/types/src/client/baseHTTPClient.d.ts +41 -0
- package/dist/types/src/client/client.d.ts +66 -31
- package/dist/types/src/client/kmd.d.ts +1 -1
- package/dist/types/src/client/urlTokenBaseHTTPClient.d.ts +44 -0
- package/dist/types/src/client/v2/algod/algod.d.ts +263 -9
- package/dist/types/src/client/v2/algod/models/types.d.ts +4 -4
- package/dist/types/src/client/v2/indexer/indexer.d.ts +161 -3
- package/dist/types/src/client/v2/indexer/lookupAssetBalances.d.ts +98 -0
- package/dist/types/src/client/v2/serviceClient.d.ts +6 -2
- package/dist/types/src/composer.d.ts +160 -0
- package/dist/types/src/dryrun.d.ts +20 -0
- package/dist/types/src/encoding/bigint.d.ts +14 -0
- package/dist/types/src/main.d.ts +7 -45
- package/dist/types/src/makeTxn.d.ts +18 -1
- package/dist/types/src/multisig.d.ts +39 -1
- package/dist/types/src/signer.d.ts +40 -0
- package/dist/types/src/wait.d.ts +11 -0
- package/package.json +6 -4
|
@@ -18,54 +18,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
18
18
|
__setModuleDefault(result, mod);
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
-
};
|
|
24
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
const path_1 = __importDefault(require("path"));
|
|
26
|
-
const request = __importStar(require("superagent"));
|
|
27
|
-
const url_parse_1 = __importDefault(require("url-parse"));
|
|
28
22
|
const utils = __importStar(require("../utils/utils"));
|
|
29
|
-
const
|
|
30
|
-
function createJSONParser(options) {
|
|
31
|
-
return (res,
|
|
32
|
-
// eslint-disable-next-line no-unused-vars
|
|
33
|
-
fnOrStr
|
|
34
|
-
// eslint-disable-next-line consistent-return
|
|
35
|
-
) => {
|
|
36
|
-
if (typeof fnOrStr === 'string') {
|
|
37
|
-
// in browser
|
|
38
|
-
return fnOrStr && utils.parseJSON(fnOrStr, options);
|
|
39
|
-
}
|
|
40
|
-
// in node
|
|
41
|
-
// based off https://github.com/visionmedia/superagent/blob/1277a880c32191e300b229e352e0633e421046c8/src/node/parsers/json.js
|
|
42
|
-
res.text = '';
|
|
43
|
-
res.setEncoding('utf8');
|
|
44
|
-
res.on('data', (chunk) => {
|
|
45
|
-
res.text += chunk;
|
|
46
|
-
});
|
|
47
|
-
res.on('end', () => {
|
|
48
|
-
let body;
|
|
49
|
-
let err;
|
|
50
|
-
try {
|
|
51
|
-
body = res.text && utils.parseJSON(res.text, options);
|
|
52
|
-
}
|
|
53
|
-
catch (err_) {
|
|
54
|
-
err = err_;
|
|
55
|
-
// issue #675: return the raw response if the response parsing fails
|
|
56
|
-
err.rawResponse = res.text || null;
|
|
57
|
-
// issue #876: return the http status code if the response parsing fails
|
|
58
|
-
err.statusCode = res.status;
|
|
59
|
-
}
|
|
60
|
-
finally {
|
|
61
|
-
fnOrStr(err, body);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
}
|
|
23
|
+
const urlTokenBaseHTTPClient_1 = require("./urlTokenBaseHTTPClient");
|
|
66
24
|
/**
|
|
67
25
|
* Remove falsy values or values with a length of 0 from an object.
|
|
68
|
-
* @param obj
|
|
69
26
|
*/
|
|
70
27
|
function removeFalsyOrEmpty(obj) {
|
|
71
28
|
for (const key in obj) {
|
|
@@ -77,10 +34,19 @@ function removeFalsyOrEmpty(obj) {
|
|
|
77
34
|
}
|
|
78
35
|
return obj;
|
|
79
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Create a new object with lower-case keys
|
|
39
|
+
* See https://codereview.stackexchange.com/a/162418
|
|
40
|
+
* Used to ensure all headers are lower-case and to work more easily with them
|
|
41
|
+
*/
|
|
42
|
+
function tolowerCaseKeys(o) {
|
|
43
|
+
/* eslint-disable no-param-reassign,no-return-assign,no-sequences */
|
|
44
|
+
return Object.keys(o).reduce((c, k) => ((c[k.toLowerCase()] = o[k]), c), {});
|
|
45
|
+
/* eslint-enable no-param-reassign,no-return-assign,no-sequences */
|
|
46
|
+
}
|
|
80
47
|
/**
|
|
81
48
|
* getAcceptFormat returns the correct Accept header depending on the
|
|
82
49
|
* requested format.
|
|
83
|
-
* @param query
|
|
84
50
|
*/
|
|
85
51
|
function getAcceptFormat(query) {
|
|
86
52
|
if (query !== undefined &&
|
|
@@ -96,29 +62,128 @@ function getAcceptFormat(query) {
|
|
|
96
62
|
else
|
|
97
63
|
return 'application/json';
|
|
98
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Check is a response is JSON or not
|
|
67
|
+
* Inspired from superagent code
|
|
68
|
+
*/
|
|
69
|
+
function isResponseJSON(res) {
|
|
70
|
+
let contentType = tolowerCaseKeys(res.headers)['content-type'];
|
|
71
|
+
if (contentType) {
|
|
72
|
+
/* eslint-disable prefer-destructuring */
|
|
73
|
+
contentType = contentType.split(';')[0];
|
|
74
|
+
/* eslint-enable prefer-destructuring */
|
|
75
|
+
}
|
|
76
|
+
// regex should match /json or +json
|
|
77
|
+
// but not /json-seq
|
|
78
|
+
// from https://github.com/visionmedia/superagent/blob/048cf185d954028b1dccde0717d2488b2284c297/src/client.js#L276
|
|
79
|
+
return /[/+]json($|[^-\w])/i.test(contentType);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Check is a response is text
|
|
83
|
+
* Inspired from superagent code
|
|
84
|
+
*/
|
|
85
|
+
function isResponseText(res) {
|
|
86
|
+
const contentType = tolowerCaseKeys(res.headers)['content-type'] || 'text/plain';
|
|
87
|
+
return /^\w*text\//i.test(contentType);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* HTTPClient is a wrapper around a BaseHTTPClient
|
|
91
|
+
* It takes care of setting the proper "Accept" header and of
|
|
92
|
+
* decoding the JSON outputs.
|
|
93
|
+
*/
|
|
99
94
|
class HTTPClient {
|
|
100
|
-
constructor(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
95
|
+
constructor(bcOrTokenHeader, baseServer, port, defaultHeaders = {}) {
|
|
96
|
+
if (baseServer !== undefined) {
|
|
97
|
+
this.bc = new urlTokenBaseHTTPClient_1.URLTokenBaseHTTPClient(bcOrTokenHeader, baseServer, port, defaultHeaders);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.bc = bcOrTokenHeader;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Parse JSON using either the built-in JSON.parse or utils.parseJSON
|
|
105
|
+
* depending on whether jsonOptions are provided or not
|
|
106
|
+
*
|
|
107
|
+
* @param text JSON data
|
|
108
|
+
* @param status Status of the response (used in case parseJSON fails)
|
|
109
|
+
* @param jsonOptions Options object to use to decode JSON responses. See
|
|
110
|
+
* utils.parseJSON for the options available.
|
|
111
|
+
*/
|
|
112
|
+
static parseJSON(text, status, jsonOptions = {}) {
|
|
113
|
+
try {
|
|
114
|
+
if (Object.keys(jsonOptions).length === 0) {
|
|
115
|
+
return text && JSON.parse(text);
|
|
116
|
+
}
|
|
117
|
+
return text && utils.parseJSON(text, jsonOptions);
|
|
118
|
+
}
|
|
119
|
+
catch (err_) {
|
|
120
|
+
const err = err_;
|
|
121
|
+
// return the raw response if the response parsing fails
|
|
122
|
+
err.rawResponse = text || null;
|
|
123
|
+
// return the http status code if the response parsing fails
|
|
124
|
+
err.statusCode = status;
|
|
125
|
+
throw err;
|
|
126
|
+
}
|
|
113
127
|
}
|
|
114
128
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
129
|
+
* Serialize the data according to the requestHeaders
|
|
130
|
+
* Assumes that requestHeaders contain a key "content-type"
|
|
131
|
+
* If the content-type is "application/json", data is JSON serialized
|
|
132
|
+
* Otherwise, data needs to be either an UTF-8 string that is converted to an Uint8Array
|
|
133
|
+
* or an Uint8Array
|
|
134
|
+
* @private
|
|
118
135
|
*/
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
136
|
+
static serializeData(data, requestHeaders) {
|
|
137
|
+
if (!data) {
|
|
138
|
+
return new Uint8Array(0); // empty Uint8Array
|
|
139
|
+
}
|
|
140
|
+
if (requestHeaders['content-type'] === 'application/json') {
|
|
141
|
+
return new Uint8Array(Buffer.from(JSON.stringify(data)));
|
|
142
|
+
}
|
|
143
|
+
if (typeof data === 'string') {
|
|
144
|
+
return new Uint8Array(Buffer.from(data));
|
|
145
|
+
}
|
|
146
|
+
if (data instanceof Uint8Array) {
|
|
147
|
+
return data;
|
|
148
|
+
}
|
|
149
|
+
throw new Error('provided data is neither a string nor a Uint8Array and content-type is not application/json');
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Convert a BaseHTTPClientResponse into a full HTTPClientResponse
|
|
153
|
+
* Parse the body in
|
|
154
|
+
* Modifies in place res and return the result
|
|
155
|
+
*/
|
|
156
|
+
static prepareResponse(res, jsonOptions = {}) {
|
|
157
|
+
let { body } = res;
|
|
158
|
+
let text;
|
|
159
|
+
if (isResponseJSON(res)) {
|
|
160
|
+
text = (body && new TextDecoder().decode(body)) || '';
|
|
161
|
+
body = HTTPClient.parseJSON(text, res.status, jsonOptions);
|
|
162
|
+
}
|
|
163
|
+
else if (isResponseText(res)) {
|
|
164
|
+
text = (body && new TextDecoder().decode(body)) || '';
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
...res,
|
|
168
|
+
body,
|
|
169
|
+
text,
|
|
170
|
+
ok: Math.trunc(res.status / 100) === 2,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Prepare an error with a response
|
|
175
|
+
* (the type of errors BaseHTTPClient are supposed to throw)
|
|
176
|
+
* by adding the status and preparing the internal response
|
|
177
|
+
* @private
|
|
178
|
+
*/
|
|
179
|
+
static prepareResponseError(err) {
|
|
180
|
+
if (err.response) {
|
|
181
|
+
// eslint-disable-next-line no-param-reassign
|
|
182
|
+
err.response = HTTPClient.prepareResponse(err.response);
|
|
183
|
+
// eslint-disable-next-line no-param-reassign
|
|
184
|
+
err.status = err.response.status;
|
|
185
|
+
}
|
|
186
|
+
return err;
|
|
122
187
|
}
|
|
123
188
|
/**
|
|
124
189
|
* Send a GET request.
|
|
@@ -131,50 +196,45 @@ class HTTPClient {
|
|
|
131
196
|
*/
|
|
132
197
|
async get(relativePath, query, requestHeaders = {}, jsonOptions = {}) {
|
|
133
198
|
const format = getAcceptFormat(query);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
.
|
|
137
|
-
.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
.
|
|
141
|
-
|
|
142
|
-
r = r.responseType('arraybuffer');
|
|
143
|
-
}
|
|
144
|
-
else if (format === 'application/json' &&
|
|
145
|
-
Object.keys(jsonOptions).length !== 0) {
|
|
146
|
-
if (utils.isNode()) {
|
|
147
|
-
// in node, need to set buffer
|
|
148
|
-
r = r.buffer(true);
|
|
149
|
-
}
|
|
150
|
-
r = r.parse(createJSONParser(jsonOptions));
|
|
151
|
-
}
|
|
152
|
-
const res = await r;
|
|
153
|
-
if (Buffer.isBuffer(res.body)) {
|
|
154
|
-
// In node res.body will be a Buffer, but in the browser it will be an ArrayBuffer
|
|
155
|
-
// (thanks superagent...), so convert it to an ArrayBuffer for consistency.
|
|
156
|
-
const underlyingArrayBuffer = res.body.buffer;
|
|
157
|
-
const start = res.body.byteOffset;
|
|
158
|
-
const end = start + res.body.byteLength;
|
|
159
|
-
res.body = underlyingArrayBuffer.slice(start, end);
|
|
160
|
-
}
|
|
161
|
-
return res;
|
|
199
|
+
const fullHeaders = { ...requestHeaders, accept: format };
|
|
200
|
+
try {
|
|
201
|
+
const res = await this.bc.get(relativePath, removeFalsyOrEmpty(query), fullHeaders);
|
|
202
|
+
return HTTPClient.prepareResponse(res, jsonOptions);
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
throw HTTPClient.prepareResponseError(err);
|
|
206
|
+
}
|
|
162
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Send a POST request.
|
|
210
|
+
* If no content-type present, adds the header "content-type: application/json"
|
|
211
|
+
* and data is serialized in JSON (if not empty)
|
|
212
|
+
*/
|
|
163
213
|
async post(relativePath, data, requestHeaders = {}) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
.
|
|
214
|
+
const fullHeaders = {
|
|
215
|
+
'content-type': 'application/json',
|
|
216
|
+
...tolowerCaseKeys(requestHeaders),
|
|
217
|
+
};
|
|
218
|
+
try {
|
|
219
|
+
const res = await this.bc.post(relativePath, HTTPClient.serializeData(data, fullHeaders), undefined, fullHeaders);
|
|
220
|
+
return HTTPClient.prepareResponse(res);
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
throw HTTPClient.prepareResponseError(err);
|
|
224
|
+
}
|
|
170
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Send a DELETE request.
|
|
228
|
+
* If no content-type present, adds the header "content-type: application/json"
|
|
229
|
+
* and data is serialized in JSON (if not empty)
|
|
230
|
+
*/
|
|
171
231
|
async delete(relativePath, data, requestHeaders = {}) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
232
|
+
const fullHeaders = {
|
|
233
|
+
'content-type': 'application/json',
|
|
234
|
+
...tolowerCaseKeys(requestHeaders),
|
|
235
|
+
};
|
|
236
|
+
const res = await this.bc.delete(relativePath, HTTPClient.serializeData(data, fullHeaders), undefined, fullHeaders);
|
|
237
|
+
return HTTPClient.prepareResponse(res);
|
|
178
238
|
}
|
|
179
239
|
}
|
|
180
240
|
exports.default = HTTPClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.URLTokenBaseHTTPClient = void 0;
|
|
26
|
+
const url_parse_1 = __importDefault(require("url-parse"));
|
|
27
|
+
const path_1 = __importDefault(require("path"));
|
|
28
|
+
const request = __importStar(require("superagent"));
|
|
29
|
+
/**
|
|
30
|
+
* Implementation of BaseHTTPClient that uses a URL and a token
|
|
31
|
+
* and make the REST queries using superagent.
|
|
32
|
+
* This is the default implementation of BaseHTTPClient.
|
|
33
|
+
*/
|
|
34
|
+
class URLTokenBaseHTTPClient {
|
|
35
|
+
constructor(tokenHeader, baseServer, port, defaultHeaders = {}) {
|
|
36
|
+
this.defaultHeaders = defaultHeaders;
|
|
37
|
+
const baseServerURL = new url_parse_1.default(baseServer, {});
|
|
38
|
+
if (typeof port !== 'undefined') {
|
|
39
|
+
baseServerURL.set('port', port.toString());
|
|
40
|
+
}
|
|
41
|
+
if (baseServerURL.protocol.length === 0) {
|
|
42
|
+
throw new Error('Invalid base server URL, protocol must be defined.');
|
|
43
|
+
}
|
|
44
|
+
this.baseURL = baseServerURL;
|
|
45
|
+
this.tokenHeader = tokenHeader;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Compute the URL for a path relative to the instance's address
|
|
49
|
+
* @param relativePath - A path string
|
|
50
|
+
* @returns A URL string
|
|
51
|
+
*/
|
|
52
|
+
addressWithPath(relativePath) {
|
|
53
|
+
const address = new url_parse_1.default(path_1.default.posix.join(this.baseURL.pathname, relativePath), this.baseURL);
|
|
54
|
+
return address.toString();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Convert a superagent response to a valid BaseHTTPClientResponse
|
|
58
|
+
* Modify the superagent response
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
static superagentToHTTPClientResponse(res) {
|
|
62
|
+
if (res.body instanceof ArrayBuffer) {
|
|
63
|
+
// Handle the case where the body is an arraybuffer which happens in the browser
|
|
64
|
+
res.body = new Uint8Array(res.body);
|
|
65
|
+
}
|
|
66
|
+
return res;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Make a superagent error more readable. For more info, see https://github.com/visionmedia/superagent/issues/1074
|
|
70
|
+
*/
|
|
71
|
+
static formatSuperagentError(err) {
|
|
72
|
+
if (err.response) {
|
|
73
|
+
try {
|
|
74
|
+
const decoded = JSON.parse(Buffer.from(err.response.body).toString());
|
|
75
|
+
// eslint-disable-next-line no-param-reassign
|
|
76
|
+
err.message = `Network request error. Received status ${err.response.status}: ${decoded.message}`;
|
|
77
|
+
}
|
|
78
|
+
catch (err2) {
|
|
79
|
+
// ignore any error that happened while we are formatting the original error
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return err;
|
|
83
|
+
}
|
|
84
|
+
async get(relativePath, query, requestHeaders = {}) {
|
|
85
|
+
const r = request
|
|
86
|
+
.get(this.addressWithPath(relativePath))
|
|
87
|
+
.set(this.tokenHeader)
|
|
88
|
+
.set(this.defaultHeaders)
|
|
89
|
+
.set(requestHeaders)
|
|
90
|
+
.responseType('arraybuffer')
|
|
91
|
+
.query(query);
|
|
92
|
+
try {
|
|
93
|
+
const res = await r;
|
|
94
|
+
return URLTokenBaseHTTPClient.superagentToHTTPClientResponse(res);
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
throw URLTokenBaseHTTPClient.formatSuperagentError(err);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async post(relativePath, data, query, requestHeaders = {}) {
|
|
101
|
+
const r = request
|
|
102
|
+
.post(this.addressWithPath(relativePath))
|
|
103
|
+
.set(this.tokenHeader)
|
|
104
|
+
.set(this.defaultHeaders)
|
|
105
|
+
.set(requestHeaders)
|
|
106
|
+
.query(query)
|
|
107
|
+
.serialize((o) => o) // disable serialization from superagent
|
|
108
|
+
.responseType('arraybuffer')
|
|
109
|
+
.send(Buffer.from(data)); // Buffer.from necessary for superagent
|
|
110
|
+
try {
|
|
111
|
+
const res = await r;
|
|
112
|
+
return URLTokenBaseHTTPClient.superagentToHTTPClientResponse(res);
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
throw URLTokenBaseHTTPClient.formatSuperagentError(err);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async delete(relativePath, data, query, requestHeaders = {}) {
|
|
119
|
+
const r = request
|
|
120
|
+
.delete(this.addressWithPath(relativePath))
|
|
121
|
+
.set(this.tokenHeader)
|
|
122
|
+
.set(this.defaultHeaders)
|
|
123
|
+
.set(requestHeaders)
|
|
124
|
+
.query(query)
|
|
125
|
+
.serialize((o) => o) // disable serialization from superagent
|
|
126
|
+
.responseType('arraybuffer')
|
|
127
|
+
.send(Buffer.from(data)); // Buffer.from necessary for superagent
|
|
128
|
+
try {
|
|
129
|
+
const res = await r;
|
|
130
|
+
return URLTokenBaseHTTPClient.superagentToHTTPClientResponse(res);
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
throw URLTokenBaseHTTPClient.formatSuperagentError(err);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.URLTokenBaseHTTPClient = URLTokenBaseHTTPClient;
|
|
138
|
+
//# sourceMappingURL=urlTokenBaseHTTPClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlTokenBaseHTTPClient.js","sourceRoot":"","sources":["../../../../src/client/urlTokenBaseHTTPClient.ts"],"names":[],"mappings":"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"}
|