starknet 3.12.1 → 3.12.2

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/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [3.12.2](https://github.com/0xs34n/starknet.js/compare/v3.12.1...v3.12.2) (2022-05-30)
2
+
3
+ ### Bug Fixes
4
+
5
+ - allow starknet.js in service workers ([7a500d1](https://github.com/0xs34n/starknet.js/commit/7a500d198cffed43f98a669edac2dbb215884a3b))
6
+ - updated powered by starknet list ([aa36463](https://github.com/0xs34n/starknet.js/commit/aa36463e1adb281f79bf8462b2f0063801457782))
7
+
1
8
  ## [3.12.1](https://github.com/0xs34n/starknet.js/compare/v3.12.0...v3.12.1) (2022-05-24)
2
9
 
3
10
  ### Bug Fixes
package/README.md CHANGED
@@ -57,8 +57,10 @@ Guides can be found [here](https://www.starknetjs.com/guides/intro)
57
57
  ## 🚀 Powered by Starknet.js
58
58
 
59
59
  - [Argent X - the first StarkNet wallet](https://github.com/argentlabs/argent-x)
60
+ - [Braavos - your new wallet on top of StarkNet](https://chrome.google.com/webstore/detail/braavos-wallet/jnlgamecbpmbajjfhmmmlhejkemejdma)
60
61
  - [React + Starknet.js boilerplate](https://github.com/fracek/starknet-react-example)
61
62
  - [AMM Demo](https://www.starknetswap.com/)
63
+ - [mySwap - the first DeFi app to launch on StarkNet](myswap.xyz)
62
64
 
63
65
  ## ✏️ Contributing
64
66
 
@@ -1,9 +1,28 @@
1
- import axios from 'axios';
2
- import * as AxiosLogger from 'axios-logger';
1
+ /* eslint-disable no-console */
2
+ import { register } from 'fetch-intercept';
3
3
 
4
4
  jest.setTimeout(50 * 60 * 1000);
5
5
 
6
6
  if (process.env.DEBUG === 'true') {
7
- axios.interceptors.request.use(AxiosLogger.requestLogger, AxiosLogger.errorLogger);
8
- axios.interceptors.response.use(AxiosLogger.responseLogger, AxiosLogger.errorLogger);
7
+ register({
8
+ request(url, config) {
9
+ console.log('[fetch.request]', [url, config]);
10
+ return [url, config];
11
+ },
12
+
13
+ requestError(error) {
14
+ console.log('[fetch.requestError]', error);
15
+ return Promise.reject(error);
16
+ },
17
+
18
+ response(response) {
19
+ console.log('[fetch.response]', response);
20
+ return response;
21
+ },
22
+
23
+ responseError(error) {
24
+ console.log('[fetch.responseError]', error);
25
+ return Promise.reject(error);
26
+ },
27
+ });
9
28
  }
@@ -67,7 +67,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
67
67
  };
68
68
  Object.defineProperty(exports, "__esModule", { value: true });
69
69
  exports.Provider = void 0;
70
- var axios_1 = __importDefault(require("axios"));
70
+ var cross_fetch_1 = __importDefault(require("cross-fetch"));
71
71
  var url_join_1 = __importDefault(require("url-join"));
72
72
  var constants_1 = require("../constants");
73
73
  var hash_1 = require("../utils/hash");
@@ -164,9 +164,8 @@ var Provider = /** @class */ (function () {
164
164
  };
165
165
  // typesafe fetch
166
166
  Provider.prototype.fetchEndpoint = function (endpoint) {
167
- var _a;
168
167
  // typescript type magiuc to create a nice fitting function interface
169
- var _b = []; // when both query and request are needed, we cant omit anything
168
+ var _a = []; // when both query and request are needed, we cant omit anything
170
169
  for (
171
170
  // typescript type magiuc to create a nice fitting function interface
172
171
  var _i = 1 // when both query and request are needed, we cant omit anything
@@ -178,50 +177,35 @@ var Provider = /** @class */ (function () {
178
177
  _i++ // when both query and request are needed, we cant omit anything
179
178
  ) {
180
179
  // typescript type magiuc to create a nice fitting function interface
181
- _b[_i - 1] = arguments[_i]; // when both query and request are needed, we cant omit anything
180
+ _a[_i - 1] = arguments[_i]; // when both query and request are needed, we cant omit anything
182
181
  }
183
182
  // typescript type magiuc to create a nice fitting function interface
184
- var _c = __read(_b, 2), query = _c[0], request = _c[1]; // when both query and request are needed, we cant omit anything
183
+ var _b = __read(_a, 2), query = _b[0], request = _b[1]; // when both query and request are needed, we cant omit anything
185
184
  return __awaiter(this, void 0, void 0, function () {
186
- var baseUrl, method, queryString, headers, data, error_1, data;
187
- return __generator(this, function (_d) {
188
- switch (_d.label) {
189
- case 0:
190
- baseUrl = this.getFetchUrl(endpoint);
191
- method = this.getFetchMethod(endpoint);
192
- queryString = this.getQueryString(query);
193
- headers = this.getHeaders(method);
194
- _d.label = 1;
195
- case 1:
196
- _d.trys.push([1, 3, , 4]);
197
- return [4 /*yield*/, axios_1.default.request({
198
- method: method,
199
- transformResponse: endpoint === 'estimate_fee'
200
- ? function (res) {
201
- return (0, json_1.parse)(res, function (_, v) {
202
- if (v && typeof v === 'bigint') {
203
- return (0, number_1.toBN)(v.toString());
204
- }
205
- return v;
206
- });
207
- }
208
- : axios_1.default.defaults.transformResponse,
209
- url: (0, url_join_1.default)(baseUrl, endpoint, queryString),
210
- data: (0, json_1.stringify)(request),
211
- headers: headers,
212
- })];
213
- case 2:
214
- data = (_d.sent()).data;
215
- return [2 /*return*/, data];
216
- case 3:
217
- error_1 = _d.sent();
218
- data = (_a = error_1 === null || error_1 === void 0 ? void 0 : error_1.response) === null || _a === void 0 ? void 0 : _a.data;
219
- if (data === null || data === void 0 ? void 0 : data.message) {
220
- throw new Error(data.code + ": " + data.message);
185
+ var baseUrl, method, queryString, headers, url;
186
+ return __generator(this, function (_c) {
187
+ baseUrl = this.getFetchUrl(endpoint);
188
+ method = this.getFetchMethod(endpoint);
189
+ queryString = this.getQueryString(query);
190
+ headers = this.getHeaders(method);
191
+ url = (0, url_join_1.default)(baseUrl, endpoint, queryString);
192
+ return [2 /*return*/, (0, cross_fetch_1.default)(url, {
193
+ method: method,
194
+ body: (0, json_1.stringify)(request),
195
+ headers: headers,
196
+ })
197
+ .then(function (res) { return res.text(); })
198
+ .then(function (res) {
199
+ if (endpoint === 'estimate_fee') {
200
+ return (0, json_1.parse)(res, function (_, v) {
201
+ if (v && typeof v === 'bigint') {
202
+ return (0, number_1.toBN)(v.toString());
203
+ }
204
+ return v;
205
+ });
221
206
  }
222
- throw error_1;
223
- case 4: return [2 /*return*/];
224
- }
207
+ return (0, json_1.parse)(res);
208
+ })];
225
209
  });
226
210
  });
227
211
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "starknet",
3
- "version": "3.12.1",
3
+ "version": "3.12.2",
4
4
  "description": "JavaScript library for StarkNet",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -44,7 +44,6 @@
44
44
  "@types/url-join": "^4.0.1",
45
45
  "@typescript-eslint/eslint-plugin": "^5.0.0",
46
46
  "@typescript-eslint/parser": "^5.0.0",
47
- "axios-logger": "^2.6.0",
48
47
  "eslint": "^7.32.0",
49
48
  "eslint-config-airbnb-base": "^14.2.1",
50
49
  "eslint-config-airbnb-typescript": "^14.0.1",
@@ -58,14 +57,16 @@
58
57
  "prettier": "^2.4.1",
59
58
  "prettier-plugin-import-sort": "^0.0.7",
60
59
  "typedoc": "^0.22.6",
61
- "typescript": "^4.4.4"
60
+ "typescript": "^4.4.4",
61
+ "whatwg-fetch": "^3.6.2"
62
62
  },
63
63
  "dependencies": {
64
64
  "@ethersproject/bytes": "^5.6.1",
65
- "axios": "^0.23.0",
66
65
  "bn.js": "^5.2.0",
66
+ "cross-fetch": "^3.1.5",
67
67
  "elliptic": "^6.5.4",
68
68
  "ethereum-cryptography": "^0.2.0",
69
+ "fetch-intercept": "^2.4.0",
69
70
  "hash.js": "^1.1.7",
70
71
  "json-bigint": "^1.0.0",
71
72
  "minimalistic-assert": "^1.0.1",
@@ -173,7 +173,7 @@ var __importDefault =
173
173
  };
174
174
  Object.defineProperty(exports, '__esModule', { value: true });
175
175
  exports.Provider = void 0;
176
- var axios_1 = __importDefault(require('axios'));
176
+ var cross_fetch_1 = __importDefault(require('cross-fetch'));
177
177
  var url_join_1 = __importDefault(require('url-join'));
178
178
  var constants_1 = require('../constants');
179
179
  var hash_1 = require('../utils/hash');
@@ -281,9 +281,8 @@ var Provider = /** @class */ (function () {
281
281
  };
282
282
  // typesafe fetch
283
283
  Provider.prototype.fetchEndpoint = function (endpoint) {
284
- var _a;
285
284
  // typescript type magiuc to create a nice fitting function interface
286
- var _b = []; // when both query and request are needed, we cant omit anything
285
+ var _a = []; // when both query and request are needed, we cant omit anything
287
286
  for (
288
287
  // typescript type magiuc to create a nice fitting function interface
289
288
  var _i = 1; // when both query and request are needed, we cant omit anything
@@ -293,61 +292,42 @@ var Provider = /** @class */ (function () {
293
292
  _i++ // when both query and request are needed, we cant omit anything
294
293
  ) {
295
294
  // typescript type magiuc to create a nice fitting function interface
296
- _b[_i - 1] = arguments[_i]; // when both query and request are needed, we cant omit anything
295
+ _a[_i - 1] = arguments[_i]; // when both query and request are needed, we cant omit anything
297
296
  }
298
297
  // typescript type magiuc to create a nice fitting function interface
299
- var _c = __read(_b, 2),
300
- query = _c[0],
301
- request = _c[1]; // when both query and request are needed, we cant omit anything
298
+ var _b = __read(_a, 2),
299
+ query = _b[0],
300
+ request = _b[1]; // when both query and request are needed, we cant omit anything
302
301
  return __awaiter(this, void 0, void 0, function () {
303
- var baseUrl, method, queryString, headers, data, error_1, data;
304
- return __generator(this, function (_d) {
305
- switch (_d.label) {
306
- case 0:
307
- baseUrl = this.getFetchUrl(endpoint);
308
- method = this.getFetchMethod(endpoint);
309
- queryString = this.getQueryString(query);
310
- headers = this.getHeaders(method);
311
- _d.label = 1;
312
- case 1:
313
- _d.trys.push([1, 3, , 4]);
314
- return [
315
- 4 /*yield*/,
316
- axios_1.default.request({
317
- method: method,
318
- transformResponse:
319
- endpoint === 'estimate_fee'
320
- ? function (res) {
321
- return (0, json_1.parse)(res, function (_, v) {
322
- if (v && typeof v === 'bigint') {
323
- return (0, number_1.toBN)(v.toString());
324
- }
325
- return v;
326
- });
327
- }
328
- : axios_1.default.defaults.transformResponse,
329
- url: (0, url_join_1.default)(baseUrl, endpoint, queryString),
330
- data: (0, json_1.stringify)(request),
331
- headers: headers,
332
- }),
333
- ];
334
- case 2:
335
- data = _d.sent().data;
336
- return [2 /*return*/, data];
337
- case 3:
338
- error_1 = _d.sent();
339
- data =
340
- (_a = error_1 === null || error_1 === void 0 ? void 0 : error_1.response) === null ||
341
- _a === void 0
342
- ? void 0
343
- : _a.data;
344
- if (data === null || data === void 0 ? void 0 : data.message) {
345
- throw new Error(data.code + ': ' + data.message);
346
- }
347
- throw error_1;
348
- case 4:
349
- return [2 /*return*/];
350
- }
302
+ var baseUrl, method, queryString, headers, url;
303
+ return __generator(this, function (_c) {
304
+ baseUrl = this.getFetchUrl(endpoint);
305
+ method = this.getFetchMethod(endpoint);
306
+ queryString = this.getQueryString(query);
307
+ headers = this.getHeaders(method);
308
+ url = (0, url_join_1.default)(baseUrl, endpoint, queryString);
309
+ return [
310
+ 2 /*return*/,
311
+ (0, cross_fetch_1.default)(url, {
312
+ method: method,
313
+ body: (0, json_1.stringify)(request),
314
+ headers: headers,
315
+ })
316
+ .then(function (res) {
317
+ return res.text();
318
+ })
319
+ .then(function (res) {
320
+ if (endpoint === 'estimate_fee') {
321
+ return (0, json_1.parse)(res, function (_, v) {
322
+ if (v && typeof v === 'bigint') {
323
+ return (0, number_1.toBN)(v.toString());
324
+ }
325
+ return v;
326
+ });
327
+ }
328
+ return (0, json_1.parse)(res);
329
+ }),
330
+ ];
351
331
  });
352
332
  });
353
333
  };
@@ -1,4 +1,4 @@
1
- import axios, { AxiosRequestHeaders } from 'axios';
1
+ import fetch from 'cross-fetch';
2
2
  import urljoin from 'url-join';
3
3
 
4
4
  import { StarknetChainId } from '../constants';
@@ -10,7 +10,6 @@ import {
10
10
  CompiledContract,
11
11
  DeployContractPayload,
12
12
  Endpoints,
13
- EstimateFeeResponse,
14
13
  GetBlockResponse,
15
14
  GetCodeResponse,
16
15
  GetContractAddressesResponse,
@@ -125,7 +124,7 @@ export class Provider implements ProviderInterface {
125
124
  return `?${queryString}`;
126
125
  }
127
126
 
128
- private getHeaders(method: 'POST' | 'GET'): AxiosRequestHeaders | undefined {
127
+ private getHeaders(method: 'POST' | 'GET'): Record<string, string> | undefined {
129
128
  if (method === 'POST') {
130
129
  return {
131
130
  'Content-Type': 'application/json',
@@ -150,33 +149,25 @@ export class Provider implements ProviderInterface {
150
149
  const method = this.getFetchMethod(endpoint);
151
150
  const queryString = this.getQueryString(query);
152
151
  const headers = this.getHeaders(method);
153
-
154
- try {
155
- const { data } = await axios.request<Endpoints[T]['RESPONSE']>({
156
- method,
157
- transformResponse:
158
- endpoint === 'estimate_fee'
159
- ? (res): EstimateFeeResponse => {
160
- return parse(res, (_, v) => {
161
- if (v && typeof v === 'bigint') {
162
- return toBN(v.toString());
163
- }
164
- return v;
165
- });
166
- }
167
- : axios.defaults.transformResponse,
168
- url: urljoin(baseUrl, endpoint, queryString),
169
- data: stringify(request),
170
- headers,
152
+ const url = urljoin(baseUrl, endpoint, queryString);
153
+
154
+ return fetch(url, {
155
+ method,
156
+ body: stringify(request),
157
+ headers,
158
+ })
159
+ .then((res) => res.text())
160
+ .then((res) => {
161
+ if (endpoint === 'estimate_fee') {
162
+ return parse(res, (_, v) => {
163
+ if (v && typeof v === 'bigint') {
164
+ return toBN(v.toString());
165
+ }
166
+ return v;
167
+ });
168
+ }
169
+ return parse(res) as Endpoints[T]['RESPONSE'];
171
170
  });
172
- return data;
173
- } catch (error: any) {
174
- const data = error?.response?.data;
175
- if (data?.message) {
176
- throw new Error(`${data.code}: ${data.message}`);
177
- }
178
- throw error;
179
- }
180
171
  }
181
172
 
182
173
  /**