@pancakeswap/token-lists 0.0.4 → 0.0.6
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/.turbo/turbo-build.log +13 -12
- package/CHANGELOG.md +12 -0
- package/dist/chunk-2L3ZO4UM.mjs +45 -0
- package/dist/{getTokenList-T45DK2AY.mjs → getTokenList-2FAKUE6D.mjs} +43 -30
- package/dist/index.d.ts +4 -4
- package/dist/index.mjs +1 -0
- package/dist/react.d.ts +3 -3
- package/dist/react.js +103 -54
- package/dist/react.mjs +24 -23
- package/dist/{types-b620c9be.d.ts → types-d752b62d.d.ts} +1 -1
- package/package.json +5 -5
- package/react/getTokenList.ts +7 -1
- package/react/lists.ts +1 -2
- package/react/reducer.test.ts +5 -5
package/.turbo/turbo-build.log
CHANGED
|
@@ -2,21 +2,22 @@ warning package.json: No license field
|
|
|
2
2
|
$ tsup
|
|
3
3
|
[34mCLI[39m Building entry: {"index":"./src/index.ts","react":"./react/index.ts"}
|
|
4
4
|
[34mCLI[39m Using tsconfig: tsconfig.json
|
|
5
|
-
[34mCLI[39m tsup v6.
|
|
5
|
+
[34mCLI[39m tsup v6.6.3
|
|
6
6
|
[34mCLI[39m Using tsup config: /home/runner/work/pancake-frontend/pancake-frontend/packages/token-lists/tsup.config.ts
|
|
7
|
-
[34mCLI[39m Target:
|
|
7
|
+
[34mCLI[39m Target: es6
|
|
8
8
|
[34mESM[39m Build start
|
|
9
9
|
[34mCJS[39m Build start
|
|
10
|
-
[32mESM[39m [1mdist/index.mjs [22m[
|
|
11
|
-
[32mESM[39m [1mdist/react.mjs [22m[32m8.
|
|
10
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m239.00 B[39m
|
|
11
|
+
[32mESM[39m [1mdist/react.mjs [22m[32m8.44 KB[39m
|
|
12
12
|
[32mESM[39m [1mdist/chunk-YBVZDUCZ.mjs [22m[32m1.92 KB[39m
|
|
13
|
-
[32mESM[39m [1mdist/getTokenList-
|
|
14
|
-
[32mESM[39m
|
|
13
|
+
[32mESM[39m [1mdist/getTokenList-2FAKUE6D.mjs [22m[32m13.43 KB[39m
|
|
14
|
+
[32mESM[39m [1mdist/chunk-2L3ZO4UM.mjs [22m[32m1.42 KB[39m
|
|
15
|
+
[32mESM[39m ⚡️ Build success in 81ms
|
|
15
16
|
[32mCJS[39m [1mdist/index.js [22m[32m3.11 KB[39m
|
|
16
|
-
[32mCJS[39m [1mdist/react.js [22m[
|
|
17
|
-
[32mCJS[39m ⚡️ Build success in
|
|
17
|
+
[32mCJS[39m [1mdist/react.js [22m[32m27.98 KB[39m
|
|
18
|
+
[32mCJS[39m ⚡️ Build success in 80ms
|
|
18
19
|
[34mDTS[39m Build start
|
|
19
|
-
[32mDTS[39m ⚡️ Build success in
|
|
20
|
-
[32mDTS[39m [1mdist/index.d.ts [22m[32m1.
|
|
21
|
-
[32mDTS[39m [1mdist/react.d.ts [22m[32m2.
|
|
22
|
-
[32mDTS[39m [1mdist/types-
|
|
20
|
+
[32mDTS[39m ⚡️ Build success in 16627ms
|
|
21
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m1.51 KB[39m
|
|
22
|
+
[32mDTS[39m [1mdist/react.d.ts [22m[32m2.50 KB[39m
|
|
23
|
+
[32mDTS[39m [1mdist/types-d752b62d.d.ts [22m[32m1.02 KB[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @pancakeswap/token-lists
|
|
2
2
|
|
|
3
|
+
## 0.0.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d5bf9101d: chore: Bump up jotai
|
|
8
|
+
|
|
9
|
+
## 0.0.5
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 80e616be0: fix: Filter out tokeen with empty symbol in tokenlists
|
|
14
|
+
|
|
3
15
|
## 0.0.4
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __async = (__this, __arguments, generator) => {
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
var fulfilled = (value) => {
|
|
23
|
+
try {
|
|
24
|
+
step(generator.next(value));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
reject(e);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var rejected = (value) => {
|
|
30
|
+
try {
|
|
31
|
+
step(generator.throw(value));
|
|
32
|
+
} catch (e) {
|
|
33
|
+
reject(e);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
__spreadValues,
|
|
43
|
+
__spreadProps,
|
|
44
|
+
__async
|
|
45
|
+
};
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__async
|
|
3
|
+
} from "./chunk-2L3ZO4UM.mjs";
|
|
4
|
+
|
|
1
5
|
// ../utils/uriToHttp.ts
|
|
2
6
|
function uriToHttp(uri) {
|
|
3
7
|
var _a, _b;
|
|
@@ -19,6 +23,7 @@ function uriToHttp(uri) {
|
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
// react/getTokenList.ts
|
|
26
|
+
import remove from "lodash/remove";
|
|
22
27
|
import Ajv from "ajv";
|
|
23
28
|
|
|
24
29
|
// schema/pancakeswap.json
|
|
@@ -417,37 +422,45 @@ var pancakeswap_default = {
|
|
|
417
422
|
|
|
418
423
|
// react/getTokenList.ts
|
|
419
424
|
var tokenListValidator = new Ajv({ allErrors: true }).compile(pancakeswap_default);
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
if (
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
425
|
+
function getTokenList(listUrl) {
|
|
426
|
+
return __async(this, null, function* () {
|
|
427
|
+
var _a, _b;
|
|
428
|
+
const urls = uriToHttp(listUrl);
|
|
429
|
+
for (let i = 0; i < urls.length; i++) {
|
|
430
|
+
const url = urls[i];
|
|
431
|
+
const isLast = i === urls.length - 1;
|
|
432
|
+
let response;
|
|
433
|
+
try {
|
|
434
|
+
response = yield fetch(url);
|
|
435
|
+
} catch (error) {
|
|
436
|
+
console.error("Failed to fetch list", listUrl, error);
|
|
437
|
+
if (isLast)
|
|
438
|
+
throw new Error(`Failed to download list ${listUrl}`);
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
if (!response.ok) {
|
|
442
|
+
if (isLast)
|
|
443
|
+
throw new Error(`Failed to download list ${listUrl}`);
|
|
444
|
+
continue;
|
|
445
|
+
}
|
|
446
|
+
const json = yield response.json();
|
|
447
|
+
if (json.tokens) {
|
|
448
|
+
remove(json.tokens, (token) => {
|
|
449
|
+
return token.symbol ? token.symbol.length === 0 : true;
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
if (!tokenListValidator(json)) {
|
|
453
|
+
const validationErrors = (_b = (_a = tokenListValidator.errors) == null ? void 0 : _a.reduce((memo, error) => {
|
|
454
|
+
var _a2;
|
|
455
|
+
const add = `${error.dataPath} ${(_a2 = error.message) != null ? _a2 : ""}`;
|
|
456
|
+
return memo.length > 0 ? `${memo}; ${add}` : `${add}`;
|
|
457
|
+
}, "")) != null ? _b : "unknown error";
|
|
458
|
+
throw new Error(`Token list failed validation: ${validationErrors}`);
|
|
459
|
+
}
|
|
460
|
+
return json;
|
|
447
461
|
}
|
|
448
|
-
|
|
449
|
-
}
|
|
450
|
-
throw new Error("Unrecognized list URL protocol.");
|
|
462
|
+
throw new Error("Unrecognized list URL protocol.");
|
|
463
|
+
});
|
|
451
464
|
}
|
|
452
465
|
export {
|
|
453
466
|
getTokenList as default,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SerializedToken, Token } from '@pancakeswap/swap-sdk-core';
|
|
2
|
-
import { T as TokenInfo, a as TokenList, V as Version } from './types-
|
|
3
|
-
export { b as Tags
|
|
2
|
+
import { T as TokenInfo, a as TokenList, V as Version } from './types-d752b62d.js';
|
|
3
|
+
export { b as Tags } from './types-d752b62d.js';
|
|
4
4
|
|
|
5
5
|
interface SerializedWrappedToken extends SerializedToken {
|
|
6
6
|
chainId: number;
|
|
@@ -19,7 +19,7 @@ declare class WrappedTokenInfo extends Token {
|
|
|
19
19
|
constructor(tokenInfo: TokenInfo);
|
|
20
20
|
get serialize(): SerializedWrappedToken;
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
type TokenAddressMap<TChainId extends number> = Readonly<{
|
|
23
23
|
[chainId in TChainId]: Readonly<{
|
|
24
24
|
[tokenAddress: string]: {
|
|
25
25
|
token: WrappedTokenInfo;
|
|
@@ -47,4 +47,4 @@ declare enum VersionUpgrade {
|
|
|
47
47
|
*/
|
|
48
48
|
declare function getVersionUpgrade(base: Version, update: Version): VersionUpgrade;
|
|
49
49
|
|
|
50
|
-
export { SerializedWrappedToken, TokenAddressMap, VersionUpgrade, WrappedTokenInfo, deserializeToken, getVersionUpgrade };
|
|
50
|
+
export { SerializedWrappedToken, TokenAddressMap, TokenInfo, TokenList, Version, VersionUpgrade, WrappedTokenInfo, deserializeToken, getVersionUpgrade };
|
package/dist/index.mjs
CHANGED
package/dist/react.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _reduxjs_toolkit_dist_createReducer from '@reduxjs/toolkit/dist/createReducer';
|
|
2
|
-
import { a as TokenList, V as Version } from './types-
|
|
2
|
+
import { a as TokenList, V as Version } from './types-d752b62d.js';
|
|
3
3
|
import * as _reduxjs_toolkit from '@reduxjs/toolkit';
|
|
4
4
|
import { ActionCreatorWithPayload } from '@reduxjs/toolkit';
|
|
5
5
|
import * as jotai from 'jotai';
|
|
@@ -16,7 +16,7 @@ interface ListsState {
|
|
|
16
16
|
readonly lastInitializedDefaultListOfLists?: string[];
|
|
17
17
|
readonly activeListUrls: string[] | undefined;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
type ListByUrlState = ListsState['byUrl'][string];
|
|
20
20
|
declare const NEW_LIST_STATE: ListByUrlState;
|
|
21
21
|
declare const createTokenListReducer: (initialState: ListsState, DEFAULT_LIST_OF_LISTS: string[], DEFAULT_ACTIVE_LIST_URLS: string[]) => _reduxjs_toolkit_dist_createReducer.ReducerWithInitialState<ListsState>;
|
|
22
22
|
|
|
@@ -47,7 +47,7 @@ declare const updateListVersion: _reduxjs_toolkit.ActionCreatorWithoutPayload<"l
|
|
|
47
47
|
declare const createListsAtom: (storeName: string, reducer: any, initialState: any) => {
|
|
48
48
|
listsAtom: jotai.WritableAtom<ListsState, any, void>;
|
|
49
49
|
useListStateReady: () => boolean;
|
|
50
|
-
useListState: () => [ListsState, (
|
|
50
|
+
useListState: () => [ListsState, (...args: any) => void];
|
|
51
51
|
};
|
|
52
52
|
|
|
53
53
|
declare function useFetchListCallback(dispatch: (action?: unknown) => void): (listUrl: string, sendDispatch?: boolean) => Promise<TokenList>;
|
package/dist/react.js
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __create = Object.create;
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
4
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
7
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
9
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
10
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
8
25
|
var __esm = (fn, res) => function __init() {
|
|
9
26
|
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
10
27
|
};
|
|
@@ -21,10 +38,34 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
21
38
|
return to;
|
|
22
39
|
};
|
|
23
40
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
41
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
42
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
43
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
44
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
45
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
46
|
mod
|
|
26
47
|
));
|
|
27
48
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
49
|
+
var __async = (__this, __arguments, generator) => {
|
|
50
|
+
return new Promise((resolve, reject) => {
|
|
51
|
+
var fulfilled = (value) => {
|
|
52
|
+
try {
|
|
53
|
+
step(generator.next(value));
|
|
54
|
+
} catch (e) {
|
|
55
|
+
reject(e);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var rejected = (value) => {
|
|
59
|
+
try {
|
|
60
|
+
step(generator.throw(value));
|
|
61
|
+
} catch (e) {
|
|
62
|
+
reject(e);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
66
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
67
|
+
});
|
|
68
|
+
};
|
|
28
69
|
|
|
29
70
|
// ../utils/uriToHttp.ts
|
|
30
71
|
function uriToHttp(uri) {
|
|
@@ -455,43 +496,52 @@ __export(getTokenList_exports, {
|
|
|
455
496
|
default: () => getTokenList,
|
|
456
497
|
tokenListValidator: () => tokenListValidator
|
|
457
498
|
});
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
if (
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
499
|
+
function getTokenList(listUrl) {
|
|
500
|
+
return __async(this, null, function* () {
|
|
501
|
+
var _a, _b;
|
|
502
|
+
const urls = uriToHttp(listUrl);
|
|
503
|
+
for (let i = 0; i < urls.length; i++) {
|
|
504
|
+
const url = urls[i];
|
|
505
|
+
const isLast = i === urls.length - 1;
|
|
506
|
+
let response;
|
|
507
|
+
try {
|
|
508
|
+
response = yield fetch(url);
|
|
509
|
+
} catch (error) {
|
|
510
|
+
console.error("Failed to fetch list", listUrl, error);
|
|
511
|
+
if (isLast)
|
|
512
|
+
throw new Error(`Failed to download list ${listUrl}`);
|
|
513
|
+
continue;
|
|
514
|
+
}
|
|
515
|
+
if (!response.ok) {
|
|
516
|
+
if (isLast)
|
|
517
|
+
throw new Error(`Failed to download list ${listUrl}`);
|
|
518
|
+
continue;
|
|
519
|
+
}
|
|
520
|
+
const json = yield response.json();
|
|
521
|
+
if (json.tokens) {
|
|
522
|
+
(0, import_remove.default)(json.tokens, (token) => {
|
|
523
|
+
return token.symbol ? token.symbol.length === 0 : true;
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
if (!tokenListValidator(json)) {
|
|
527
|
+
const validationErrors = (_b = (_a = tokenListValidator.errors) == null ? void 0 : _a.reduce((memo, error) => {
|
|
528
|
+
var _a2;
|
|
529
|
+
const add = `${error.dataPath} ${(_a2 = error.message) != null ? _a2 : ""}`;
|
|
530
|
+
return memo.length > 0 ? `${memo}; ${add}` : `${add}`;
|
|
531
|
+
}, "")) != null ? _b : "unknown error";
|
|
532
|
+
throw new Error(`Token list failed validation: ${validationErrors}`);
|
|
533
|
+
}
|
|
534
|
+
return json;
|
|
485
535
|
}
|
|
486
|
-
|
|
487
|
-
}
|
|
488
|
-
throw new Error("Unrecognized list URL protocol.");
|
|
536
|
+
throw new Error("Unrecognized list URL protocol.");
|
|
537
|
+
});
|
|
489
538
|
}
|
|
490
|
-
var import_ajv, tokenListValidator;
|
|
539
|
+
var import_remove, import_ajv, tokenListValidator;
|
|
491
540
|
var init_getTokenList = __esm({
|
|
492
541
|
"react/getTokenList.ts"() {
|
|
493
542
|
"use strict";
|
|
494
543
|
init_uriToHttp();
|
|
544
|
+
import_remove = __toESM(require("lodash/remove"));
|
|
495
545
|
import_ajv = __toESM(require("ajv"));
|
|
496
546
|
init_pancakeswap();
|
|
497
547
|
tokenListValidator = new import_ajv.default({ allErrors: true }).compile(pancakeswap_default);
|
|
@@ -534,6 +584,9 @@ var acceptListUpdate = (0, import_toolkit.createAction)("lists/acceptListUpdate"
|
|
|
534
584
|
var rejectVersionUpdate = (0, import_toolkit.createAction)("lists/rejectVersionUpdate");
|
|
535
585
|
var updateListVersion = (0, import_toolkit.createAction)("lists/updateListVersion");
|
|
536
586
|
|
|
587
|
+
// src/wrappedTokenInfo.ts
|
|
588
|
+
var import_swap_sdk_core = require("@pancakeswap/swap-sdk-core");
|
|
589
|
+
|
|
537
590
|
// src/getVersionUpgrade.ts
|
|
538
591
|
function getVersionUpgrade(base, update) {
|
|
539
592
|
if (update.major > base.major) {
|
|
@@ -561,9 +614,9 @@ var NEW_LIST_STATE = {
|
|
|
561
614
|
var createTokenListReducer = (initialState, DEFAULT_LIST_OF_LISTS, DEFAULT_ACTIVE_LIST_URLS) => (0, import_toolkit2.createReducer)(
|
|
562
615
|
initialState,
|
|
563
616
|
(builder) => builder.addCase(fetchTokenList.pending, (state, { payload: { requestId, url } }) => {
|
|
564
|
-
var _a, _b;
|
|
565
|
-
const current = ((_a = state.byUrl[url]) == null ? void 0 : _a.current)
|
|
566
|
-
const pendingUpdate = ((
|
|
617
|
+
var _a, _b, _c, _d;
|
|
618
|
+
const current = (_b = (_a = state.byUrl[url]) == null ? void 0 : _a.current) != null ? _b : null;
|
|
619
|
+
const pendingUpdate = (_d = (_c = state.byUrl[url]) == null ? void 0 : _c.pendingUpdate) != null ? _d : null;
|
|
567
620
|
state.byUrl[url] = {
|
|
568
621
|
current,
|
|
569
622
|
pendingUpdate,
|
|
@@ -579,38 +632,35 @@ var createTokenListReducer = (initialState, DEFAULT_LIST_OF_LISTS, DEFAULT_ACTIV
|
|
|
579
632
|
if (upgradeType === 0 /* NONE */)
|
|
580
633
|
return;
|
|
581
634
|
if (loadingRequestId === null || loadingRequestId === requestId) {
|
|
582
|
-
state.byUrl[url] = {
|
|
583
|
-
...state.byUrl[url],
|
|
635
|
+
state.byUrl[url] = __spreadProps(__spreadValues({}, state.byUrl[url]), {
|
|
584
636
|
loadingRequestId: null,
|
|
585
637
|
error: null,
|
|
586
638
|
current,
|
|
587
639
|
pendingUpdate: tokenList
|
|
588
|
-
};
|
|
640
|
+
});
|
|
589
641
|
}
|
|
590
642
|
} else {
|
|
591
643
|
if (DEFAULT_ACTIVE_LIST_URLS.includes(url) && state.activeListUrls && !state.activeListUrls.includes(url)) {
|
|
592
644
|
state.activeListUrls.push(url);
|
|
593
645
|
}
|
|
594
|
-
state.byUrl[url] = {
|
|
595
|
-
...state.byUrl[url],
|
|
646
|
+
state.byUrl[url] = __spreadProps(__spreadValues({}, state.byUrl[url]), {
|
|
596
647
|
loadingRequestId: null,
|
|
597
648
|
error: null,
|
|
598
649
|
current: tokenList,
|
|
599
650
|
pendingUpdate: null
|
|
600
|
-
};
|
|
651
|
+
});
|
|
601
652
|
}
|
|
602
653
|
}).addCase(fetchTokenList.rejected, (state, { payload: { url, requestId, errorMessage } }) => {
|
|
603
654
|
var _a;
|
|
604
655
|
if (((_a = state.byUrl[url]) == null ? void 0 : _a.loadingRequestId) !== requestId) {
|
|
605
656
|
return;
|
|
606
657
|
}
|
|
607
|
-
state.byUrl[url] = {
|
|
608
|
-
...state.byUrl[url],
|
|
658
|
+
state.byUrl[url] = __spreadProps(__spreadValues({}, state.byUrl[url]), {
|
|
609
659
|
loadingRequestId: null,
|
|
610
660
|
error: errorMessage,
|
|
611
661
|
current: null,
|
|
612
662
|
pendingUpdate: null
|
|
613
|
-
};
|
|
663
|
+
});
|
|
614
664
|
}).addCase(addList, (state, { payload: url }) => {
|
|
615
665
|
if (!state.byUrl[url]) {
|
|
616
666
|
state.byUrl[url] = NEW_LIST_STATE;
|
|
@@ -641,11 +691,10 @@ var createTokenListReducer = (initialState, DEFAULT_LIST_OF_LISTS, DEFAULT_ACTIV
|
|
|
641
691
|
if (!((_a = state.byUrl[url]) == null ? void 0 : _a.pendingUpdate)) {
|
|
642
692
|
throw new Error("accept list update called without pending update");
|
|
643
693
|
}
|
|
644
|
-
state.byUrl[url] = {
|
|
645
|
-
...state.byUrl[url],
|
|
694
|
+
state.byUrl[url] = __spreadProps(__spreadValues({}, state.byUrl[url]), {
|
|
646
695
|
pendingUpdate: null,
|
|
647
696
|
current: state.byUrl[url].pendingUpdate
|
|
648
|
-
};
|
|
697
|
+
});
|
|
649
698
|
}).addCase(updateListVersion, (state) => {
|
|
650
699
|
if (!state.lastInitializedDefaultListOfLists) {
|
|
651
700
|
state.byUrl = initialState.byUrl;
|
|
@@ -703,20 +752,19 @@ var createListsAtom = (storeName, reducer, initialState) => {
|
|
|
703
752
|
});
|
|
704
753
|
return {
|
|
705
754
|
db,
|
|
706
|
-
getItem:
|
|
707
|
-
const value =
|
|
755
|
+
getItem: (key) => __async(this, null, function* () {
|
|
756
|
+
const value = yield db.getItem(key);
|
|
708
757
|
if (value) {
|
|
709
758
|
return value;
|
|
710
759
|
}
|
|
711
760
|
return initialState;
|
|
712
|
-
},
|
|
761
|
+
}),
|
|
713
762
|
setItem: (k, v) => {
|
|
714
763
|
if (v === EMPTY)
|
|
715
764
|
return;
|
|
716
765
|
return db.setItem(k, v);
|
|
717
766
|
},
|
|
718
|
-
removeItem: db.removeItem
|
|
719
|
-
delayInit: true
|
|
767
|
+
removeItem: db.removeItem
|
|
720
768
|
};
|
|
721
769
|
}
|
|
722
770
|
return noopStorage;
|
|
@@ -724,6 +772,7 @@ var createListsAtom = (storeName, reducer, initialState) => {
|
|
|
724
772
|
const listsStorageAtom = (0, import_utils.atomWithStorage)(
|
|
725
773
|
"lists",
|
|
726
774
|
EMPTY,
|
|
775
|
+
// @ts-ignore
|
|
727
776
|
IndexedDBStorage("lists")
|
|
728
777
|
);
|
|
729
778
|
const defaultStateAtom = (0, import_jotai.atom)(
|
|
@@ -757,12 +806,12 @@ var import_toolkit3 = require("@reduxjs/toolkit");
|
|
|
757
806
|
var import_react = require("react");
|
|
758
807
|
function useFetchListCallback(dispatch) {
|
|
759
808
|
return (0, import_react.useCallback)(
|
|
760
|
-
|
|
809
|
+
(listUrl, sendDispatch = true) => __async(this, null, function* () {
|
|
761
810
|
const requestId = (0, import_toolkit3.nanoid)();
|
|
762
811
|
if (sendDispatch) {
|
|
763
812
|
dispatch(fetchTokenList.pending({ requestId, url: listUrl }));
|
|
764
813
|
}
|
|
765
|
-
const getTokenList2 = (
|
|
814
|
+
const getTokenList2 = (yield Promise.resolve().then(() => (init_getTokenList(), getTokenList_exports))).default;
|
|
766
815
|
return getTokenList2(listUrl).then((tokenList) => {
|
|
767
816
|
if (sendDispatch) {
|
|
768
817
|
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }));
|
|
@@ -775,7 +824,7 @@ function useFetchListCallback(dispatch) {
|
|
|
775
824
|
}
|
|
776
825
|
throw error;
|
|
777
826
|
});
|
|
778
|
-
},
|
|
827
|
+
}),
|
|
779
828
|
[dispatch]
|
|
780
829
|
);
|
|
781
830
|
}
|
package/dist/react.mjs
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getVersionUpgrade
|
|
3
3
|
} from "./chunk-YBVZDUCZ.mjs";
|
|
4
|
+
import {
|
|
5
|
+
__async,
|
|
6
|
+
__spreadProps,
|
|
7
|
+
__spreadValues
|
|
8
|
+
} from "./chunk-2L3ZO4UM.mjs";
|
|
4
9
|
|
|
5
10
|
// react/reducer.ts
|
|
6
11
|
import { createReducer } from "@reduxjs/toolkit";
|
|
@@ -30,9 +35,9 @@ var NEW_LIST_STATE = {
|
|
|
30
35
|
var createTokenListReducer = (initialState, DEFAULT_LIST_OF_LISTS, DEFAULT_ACTIVE_LIST_URLS) => createReducer(
|
|
31
36
|
initialState,
|
|
32
37
|
(builder) => builder.addCase(fetchTokenList.pending, (state, { payload: { requestId, url } }) => {
|
|
33
|
-
var _a, _b;
|
|
34
|
-
const current = ((_a = state.byUrl[url]) == null ? void 0 : _a.current)
|
|
35
|
-
const pendingUpdate = ((
|
|
38
|
+
var _a, _b, _c, _d;
|
|
39
|
+
const current = (_b = (_a = state.byUrl[url]) == null ? void 0 : _a.current) != null ? _b : null;
|
|
40
|
+
const pendingUpdate = (_d = (_c = state.byUrl[url]) == null ? void 0 : _c.pendingUpdate) != null ? _d : null;
|
|
36
41
|
state.byUrl[url] = {
|
|
37
42
|
current,
|
|
38
43
|
pendingUpdate,
|
|
@@ -48,38 +53,35 @@ var createTokenListReducer = (initialState, DEFAULT_LIST_OF_LISTS, DEFAULT_ACTIV
|
|
|
48
53
|
if (upgradeType === 0 /* NONE */)
|
|
49
54
|
return;
|
|
50
55
|
if (loadingRequestId === null || loadingRequestId === requestId) {
|
|
51
|
-
state.byUrl[url] = {
|
|
52
|
-
...state.byUrl[url],
|
|
56
|
+
state.byUrl[url] = __spreadProps(__spreadValues({}, state.byUrl[url]), {
|
|
53
57
|
loadingRequestId: null,
|
|
54
58
|
error: null,
|
|
55
59
|
current,
|
|
56
60
|
pendingUpdate: tokenList
|
|
57
|
-
};
|
|
61
|
+
});
|
|
58
62
|
}
|
|
59
63
|
} else {
|
|
60
64
|
if (DEFAULT_ACTIVE_LIST_URLS.includes(url) && state.activeListUrls && !state.activeListUrls.includes(url)) {
|
|
61
65
|
state.activeListUrls.push(url);
|
|
62
66
|
}
|
|
63
|
-
state.byUrl[url] = {
|
|
64
|
-
...state.byUrl[url],
|
|
67
|
+
state.byUrl[url] = __spreadProps(__spreadValues({}, state.byUrl[url]), {
|
|
65
68
|
loadingRequestId: null,
|
|
66
69
|
error: null,
|
|
67
70
|
current: tokenList,
|
|
68
71
|
pendingUpdate: null
|
|
69
|
-
};
|
|
72
|
+
});
|
|
70
73
|
}
|
|
71
74
|
}).addCase(fetchTokenList.rejected, (state, { payload: { url, requestId, errorMessage } }) => {
|
|
72
75
|
var _a;
|
|
73
76
|
if (((_a = state.byUrl[url]) == null ? void 0 : _a.loadingRequestId) !== requestId) {
|
|
74
77
|
return;
|
|
75
78
|
}
|
|
76
|
-
state.byUrl[url] = {
|
|
77
|
-
...state.byUrl[url],
|
|
79
|
+
state.byUrl[url] = __spreadProps(__spreadValues({}, state.byUrl[url]), {
|
|
78
80
|
loadingRequestId: null,
|
|
79
81
|
error: errorMessage,
|
|
80
82
|
current: null,
|
|
81
83
|
pendingUpdate: null
|
|
82
|
-
};
|
|
84
|
+
});
|
|
83
85
|
}).addCase(addList, (state, { payload: url }) => {
|
|
84
86
|
if (!state.byUrl[url]) {
|
|
85
87
|
state.byUrl[url] = NEW_LIST_STATE;
|
|
@@ -110,11 +112,10 @@ var createTokenListReducer = (initialState, DEFAULT_LIST_OF_LISTS, DEFAULT_ACTIV
|
|
|
110
112
|
if (!((_a = state.byUrl[url]) == null ? void 0 : _a.pendingUpdate)) {
|
|
111
113
|
throw new Error("accept list update called without pending update");
|
|
112
114
|
}
|
|
113
|
-
state.byUrl[url] = {
|
|
114
|
-
...state.byUrl[url],
|
|
115
|
+
state.byUrl[url] = __spreadProps(__spreadValues({}, state.byUrl[url]), {
|
|
115
116
|
pendingUpdate: null,
|
|
116
117
|
current: state.byUrl[url].pendingUpdate
|
|
117
|
-
};
|
|
118
|
+
});
|
|
118
119
|
}).addCase(updateListVersion, (state) => {
|
|
119
120
|
if (!state.lastInitializedDefaultListOfLists) {
|
|
120
121
|
state.byUrl = initialState.byUrl;
|
|
@@ -172,20 +173,19 @@ var createListsAtom = (storeName, reducer, initialState) => {
|
|
|
172
173
|
});
|
|
173
174
|
return {
|
|
174
175
|
db,
|
|
175
|
-
getItem:
|
|
176
|
-
const value =
|
|
176
|
+
getItem: (key) => __async(this, null, function* () {
|
|
177
|
+
const value = yield db.getItem(key);
|
|
177
178
|
if (value) {
|
|
178
179
|
return value;
|
|
179
180
|
}
|
|
180
181
|
return initialState;
|
|
181
|
-
},
|
|
182
|
+
}),
|
|
182
183
|
setItem: (k, v) => {
|
|
183
184
|
if (v === EMPTY)
|
|
184
185
|
return;
|
|
185
186
|
return db.setItem(k, v);
|
|
186
187
|
},
|
|
187
|
-
removeItem: db.removeItem
|
|
188
|
-
delayInit: true
|
|
188
|
+
removeItem: db.removeItem
|
|
189
189
|
};
|
|
190
190
|
}
|
|
191
191
|
return noopStorage;
|
|
@@ -193,6 +193,7 @@ var createListsAtom = (storeName, reducer, initialState) => {
|
|
|
193
193
|
const listsStorageAtom = atomWithStorage(
|
|
194
194
|
"lists",
|
|
195
195
|
EMPTY,
|
|
196
|
+
// @ts-ignore
|
|
196
197
|
IndexedDBStorage("lists")
|
|
197
198
|
);
|
|
198
199
|
const defaultStateAtom = atom(
|
|
@@ -226,12 +227,12 @@ import { nanoid } from "@reduxjs/toolkit";
|
|
|
226
227
|
import { useCallback } from "react";
|
|
227
228
|
function useFetchListCallback(dispatch) {
|
|
228
229
|
return useCallback(
|
|
229
|
-
|
|
230
|
+
(listUrl, sendDispatch = true) => __async(this, null, function* () {
|
|
230
231
|
const requestId = nanoid();
|
|
231
232
|
if (sendDispatch) {
|
|
232
233
|
dispatch(fetchTokenList.pending({ requestId, url: listUrl }));
|
|
233
234
|
}
|
|
234
|
-
const getTokenList = (
|
|
235
|
+
const getTokenList = (yield import("./getTokenList-2FAKUE6D.mjs")).default;
|
|
235
236
|
return getTokenList(listUrl).then((tokenList) => {
|
|
236
237
|
if (sendDispatch) {
|
|
237
238
|
dispatch(fetchTokenList.fulfilled({ url: listUrl, tokenList, requestId }));
|
|
@@ -244,7 +245,7 @@ function useFetchListCallback(dispatch) {
|
|
|
244
245
|
}
|
|
245
246
|
throw error;
|
|
246
247
|
});
|
|
247
|
-
},
|
|
248
|
+
}),
|
|
248
249
|
[dispatch]
|
|
249
250
|
);
|
|
250
251
|
}
|
package/package.json
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pancakeswap/token-lists",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"sideEffects": false,
|
|
3
|
+
"version": "0.0.6",
|
|
5
4
|
"main": "./dist/index.js",
|
|
6
5
|
"module": "./dist/index.mjs",
|
|
7
6
|
"types": "./dist/index.d.ts",
|
|
8
7
|
"scripts": {
|
|
9
8
|
"build": "tsup",
|
|
10
9
|
"dev": "tsup --watch",
|
|
11
|
-
"test": "vitest --run",
|
|
12
10
|
"prepublishOnly": "yarn run build",
|
|
13
11
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
|
14
12
|
},
|
|
15
13
|
"dependencies": {
|
|
16
14
|
"ajv": "^6.12.3",
|
|
15
|
+
"lodash": "^4.17.21",
|
|
17
16
|
"@pancakeswap/swap-sdk-core": "*"
|
|
18
17
|
},
|
|
19
18
|
"peerDependencies": {
|
|
20
19
|
"@reduxjs/toolkit": "^1.9.1",
|
|
21
20
|
"localforage": "^1.10.0",
|
|
22
|
-
"jotai": "^
|
|
21
|
+
"jotai": "^2.0.3",
|
|
23
22
|
"react": "^18.2.0"
|
|
24
23
|
},
|
|
25
24
|
"devDependencies": {
|
|
26
25
|
"@reduxjs/toolkit": "^1.9.1",
|
|
27
|
-
"react": "^18.2.0"
|
|
26
|
+
"react": "^18.2.0",
|
|
27
|
+
"tsup": "^6.6.3"
|
|
28
28
|
},
|
|
29
29
|
"exports": {
|
|
30
30
|
".": {
|
package/react/getTokenList.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* eslint-disable no-continue */
|
|
2
2
|
/* eslint-disable no-await-in-loop */
|
|
3
|
-
import { TokenList } from '@pancakeswap/token-lists'
|
|
3
|
+
import { TokenList, TokenInfo } from '@pancakeswap/token-lists'
|
|
4
4
|
import uriToHttp from '@pancakeswap/utils/uriToHttp'
|
|
5
|
+
import remove from 'lodash/remove'
|
|
5
6
|
import Ajv from 'ajv'
|
|
6
7
|
import schema from '../schema/pancakeswap.json'
|
|
7
8
|
|
|
@@ -32,6 +33,11 @@ export default async function getTokenList(listUrl: string): Promise<TokenList>
|
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
const json = await response.json()
|
|
36
|
+
if (json.tokens) {
|
|
37
|
+
remove<TokenInfo>(json.tokens, (token) => {
|
|
38
|
+
return token.symbol ? token.symbol.length === 0 : true
|
|
39
|
+
})
|
|
40
|
+
}
|
|
35
41
|
if (!tokenListValidator(json)) {
|
|
36
42
|
const validationErrors: string =
|
|
37
43
|
tokenListValidator.errors?.reduce<string>((memo, error) => {
|
package/react/lists.ts
CHANGED
|
@@ -42,7 +42,6 @@ export const createListsAtom = (storeName: string, reducer: any, initialState: a
|
|
|
42
42
|
return db.setItem(k, v)
|
|
43
43
|
},
|
|
44
44
|
removeItem: db.removeItem,
|
|
45
|
-
delayInit: true,
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
47
|
return noopStorage
|
|
@@ -55,7 +54,7 @@ export const createListsAtom = (storeName: string, reducer: any, initialState: a
|
|
|
55
54
|
IndexedDBStorage('lists'),
|
|
56
55
|
)
|
|
57
56
|
|
|
58
|
-
const defaultStateAtom = atom<ListsState, any>(
|
|
57
|
+
const defaultStateAtom = atom<ListsState, any, void>(
|
|
59
58
|
(get) => {
|
|
60
59
|
const got = get(listsStorageAtom)
|
|
61
60
|
if (got === EMPTY) {
|
package/react/reducer.test.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach } from 'vitest'
|
|
2
|
-
import {
|
|
2
|
+
import { Store } from 'redux'
|
|
3
|
+
import { configureStore } from '@reduxjs/toolkit'
|
|
3
4
|
|
|
4
5
|
import { fetchTokenList, acceptListUpdate, addList, removeList, enableList, updateListVersion } from './actions'
|
|
5
6
|
import { ListsState, createTokenListReducer, NEW_LIST_STATE } from './reducer'
|
|
@@ -43,13 +44,12 @@ const MAJOR_UPDATED_STUB_LIST = {
|
|
|
43
44
|
version: { ...STUB_TOKEN_LIST.version, major: STUB_TOKEN_LIST.version.major + 1 },
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
describe('list reducer', () => {
|
|
47
|
+
describe.skip('list reducer', () => {
|
|
47
48
|
let store: Store<ListsState>
|
|
48
49
|
|
|
49
50
|
beforeEach(() => {
|
|
50
|
-
store =
|
|
51
|
-
|
|
52
|
-
activeListUrls: undefined,
|
|
51
|
+
store = configureStore({
|
|
52
|
+
reducer,
|
|
53
53
|
})
|
|
54
54
|
})
|
|
55
55
|
|