@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.
@@ -2,21 +2,22 @@ warning package.json: No license field
2
2
  $ tsup
3
3
  CLI Building entry: {"index":"./src/index.ts","react":"./react/index.ts"}
4
4
  CLI Using tsconfig: tsconfig.json
5
- CLI tsup v6.2.3
5
+ CLI tsup v6.6.3
6
6
  CLI Using tsup config: /home/runner/work/pancake-frontend/pancake-frontend/packages/token-lists/tsup.config.ts
7
- CLI Target: node14
7
+ CLI Target: es6
8
8
  ESM Build start
9
9
  CJS Build start
10
- ESM dist/index.mjs 208.00 B
11
- ESM dist/react.mjs 8.17 KB
10
+ ESM dist/index.mjs 239.00 B
11
+ ESM dist/react.mjs 8.44 KB
12
12
  ESM dist/chunk-YBVZDUCZ.mjs 1.92 KB
13
- ESM dist/getTokenList-T45DK2AY.mjs 13.04 KB
14
- ESM ⚡️ Build success in 118ms
13
+ ESM dist/getTokenList-2FAKUE6D.mjs 13.43 KB
14
+ ESM dist/chunk-2L3ZO4UM.mjs 1.42 KB
15
+ ESM ⚡️ Build success in 81ms
15
16
  CJS dist/index.js 3.11 KB
16
- CJS dist/react.js 25.75 KB
17
- CJS ⚡️ Build success in 116ms
17
+ CJS dist/react.js 27.98 KB
18
+ CJS ⚡️ Build success in 80ms
18
19
  DTS Build start
19
- DTS ⚡️ Build success in 9485ms
20
- DTS dist/index.d.ts 1.54 KB
21
- DTS dist/react.d.ts 2.51 KB
22
- DTS dist/types-b620c9be.d.ts 1.03 KB
20
+ DTS ⚡️ Build success in 16627ms
21
+ DTS dist/index.d.ts 1.51 KB
22
+ DTS dist/react.d.ts 2.50 KB
23
+ DTS dist/types-d752b62d.d.ts 1.02 KB
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
- async function getTokenList(listUrl) {
421
- var _a;
422
- const urls = uriToHttp(listUrl);
423
- for (let i = 0; i < urls.length; i++) {
424
- const url = urls[i];
425
- const isLast = i === urls.length - 1;
426
- let response;
427
- try {
428
- response = await fetch(url);
429
- } catch (error) {
430
- console.error("Failed to fetch list", listUrl, error);
431
- if (isLast)
432
- throw new Error(`Failed to download list ${listUrl}`);
433
- continue;
434
- }
435
- if (!response.ok) {
436
- if (isLast)
437
- throw new Error(`Failed to download list ${listUrl}`);
438
- continue;
439
- }
440
- const json = await response.json();
441
- if (!tokenListValidator(json)) {
442
- const validationErrors = ((_a = tokenListValidator.errors) == null ? void 0 : _a.reduce((memo, error) => {
443
- const add = `${error.dataPath} ${error.message ?? ""}`;
444
- return memo.length > 0 ? `${memo}; ${add}` : `${add}`;
445
- }, "")) ?? "unknown error";
446
- throw new Error(`Token list failed validation: ${validationErrors}`);
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
- return json;
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-b620c9be.js';
3
- export { b as Tags, T as TokenInfo, a as TokenList, V as Version } from './types-b620c9be.js';
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
- declare type TokenAddressMap<TChainId extends number> = Readonly<{
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
@@ -4,6 +4,7 @@ import {
4
4
  deserializeToken,
5
5
  getVersionUpgrade
6
6
  } from "./chunk-YBVZDUCZ.mjs";
7
+ import "./chunk-2L3ZO4UM.mjs";
7
8
  export {
8
9
  VersionUpgrade,
9
10
  WrappedTokenInfo,
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-b620c9be.js';
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
- declare type ListByUrlState = ListsState['byUrl'][string];
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, (update?: any) => void];
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
- async function getTokenList(listUrl) {
459
- var _a;
460
- const urls = uriToHttp(listUrl);
461
- for (let i = 0; i < urls.length; i++) {
462
- const url = urls[i];
463
- const isLast = i === urls.length - 1;
464
- let response;
465
- try {
466
- response = await fetch(url);
467
- } catch (error) {
468
- console.error("Failed to fetch list", listUrl, error);
469
- if (isLast)
470
- throw new Error(`Failed to download list ${listUrl}`);
471
- continue;
472
- }
473
- if (!response.ok) {
474
- if (isLast)
475
- throw new Error(`Failed to download list ${listUrl}`);
476
- continue;
477
- }
478
- const json = await response.json();
479
- if (!tokenListValidator(json)) {
480
- const validationErrors = ((_a = tokenListValidator.errors) == null ? void 0 : _a.reduce((memo, error) => {
481
- const add = `${error.dataPath} ${error.message ?? ""}`;
482
- return memo.length > 0 ? `${memo}; ${add}` : `${add}`;
483
- }, "")) ?? "unknown error";
484
- throw new Error(`Token list failed validation: ${validationErrors}`);
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
- return json;
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) ?? null;
566
- const pendingUpdate = ((_b = state.byUrl[url]) == null ? void 0 : _b.pendingUpdate) ?? null;
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: async (key) => {
707
- const value = await db.getItem(key);
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
- async (listUrl, sendDispatch = true) => {
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 = (await Promise.resolve().then(() => (init_getTokenList(), getTokenList_exports))).default;
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) ?? null;
35
- const pendingUpdate = ((_b = state.byUrl[url]) == null ? void 0 : _b.pendingUpdate) ?? null;
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: async (key) => {
176
- const value = await db.getItem(key);
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
- async (listUrl, sendDispatch = true) => {
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 = (await import("./getTokenList-T45DK2AY.mjs")).default;
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
  }
@@ -1,4 +1,4 @@
1
- declare type ExtensionValue = string | number | boolean | null | undefined;
1
+ type ExtensionValue = string | number | boolean | null | undefined;
2
2
  interface TokenInfo {
3
3
  readonly chainId: number;
4
4
  readonly address: string;
package/package.json CHANGED
@@ -1,30 +1,30 @@
1
1
  {
2
2
  "name": "@pancakeswap/token-lists",
3
- "version": "0.0.4",
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": "^1.11.1",
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
  ".": {
@@ -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) {
@@ -1,5 +1,6 @@
1
1
  import { describe, it, expect, beforeEach } from 'vitest'
2
- import { createStore, Store } from 'redux'
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 = createStore(reducer, {
51
- byUrl: {},
52
- activeListUrls: undefined,
51
+ store = configureStore({
52
+ reducer,
53
53
  })
54
54
  })
55
55